You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.5 KiB
85 lines
2.5 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
function arrayRemove(arr, item) {
|
|
const idx = arr.indexOf(item);
|
|
if (~idx) {
|
|
arr.splice(idx, 1);
|
|
}
|
|
}
|
|
class FileAppender {
|
|
constructor(strategy, request) {
|
|
this.strategy = strategy;
|
|
this.request = request;
|
|
switch (strategy) {
|
|
case 'NONE':
|
|
break;
|
|
case 'VALUE':
|
|
break;
|
|
case 'ARRAY':
|
|
request.files = [];
|
|
break;
|
|
case 'OBJECT':
|
|
request.files = Object.create(null);
|
|
break;
|
|
default:
|
|
throw new Error('Unknown file strategy: ' + strategy);
|
|
}
|
|
}
|
|
insertPlaceholder(file) {
|
|
const placeholder = {
|
|
fieldname: file.fieldname,
|
|
};
|
|
switch (this.strategy) {
|
|
case 'NONE':
|
|
break;
|
|
case 'VALUE':
|
|
break;
|
|
case 'ARRAY':
|
|
;
|
|
this.request.files.push(placeholder);
|
|
break;
|
|
case 'OBJECT':
|
|
if (this.request.files[file.fieldname]) {
|
|
;
|
|
this.request.files[file.fieldname].push(placeholder);
|
|
}
|
|
else {
|
|
;
|
|
this.request.files[file.fieldname] = [placeholder];
|
|
}
|
|
break;
|
|
}
|
|
return placeholder;
|
|
}
|
|
removePlaceholder(placeholder) {
|
|
switch (this.strategy) {
|
|
case 'NONE':
|
|
break;
|
|
case 'VALUE':
|
|
break;
|
|
case 'ARRAY':
|
|
arrayRemove(this.request.files, placeholder);
|
|
break;
|
|
case 'OBJECT':
|
|
if (placeholder.fieldname) {
|
|
if (this.request.files[placeholder.fieldname].length === 1) {
|
|
delete this.request.files[placeholder.fieldname];
|
|
}
|
|
else {
|
|
arrayRemove(this.request.files[placeholder.fieldname], placeholder);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
replacePlaceholder(placeholder, file) {
|
|
if (this.strategy === 'VALUE') {
|
|
this.request.file = file;
|
|
return;
|
|
}
|
|
delete placeholder.fieldname;
|
|
Object.assign(placeholder, file);
|
|
}
|
|
}
|
|
exports.default = FileAppender;
|
|
//# sourceMappingURL=file-appender.js.map
|