| Current Path : /home/deltalab/PMS/partner-manager-backend/node_modules/extract-files/public/ |
| Current File : //home/deltalab/PMS/partner-manager-backend/node_modules/extract-files/public/extractFiles.js |
'use strict';
var defaultIsExtractableFile = require('./isExtractableFile');
module.exports = function extractFiles(value, path, isExtractableFile) {
if (path === void 0) {
path = '';
}
if (isExtractableFile === void 0) {
isExtractableFile = defaultIsExtractableFile;
}
var clone;
var files = new Map();
function addFile(paths, file) {
var storedPaths = files.get(file);
if (storedPaths) storedPaths.push.apply(storedPaths, paths);
else files.set(file, paths);
}
if (isExtractableFile(value)) {
clone = null;
addFile([path], value);
} else {
var prefix = path ? path + '.' : '';
if (typeof FileList !== 'undefined' && value instanceof FileList)
clone = Array.prototype.map.call(value, function (file, i) {
addFile(['' + prefix + i], file);
return null;
});
else if (Array.isArray(value))
clone = value.map(function (child, i) {
var result = extractFiles(child, '' + prefix + i, isExtractableFile);
result.files.forEach(addFile);
return result.clone;
});
else if (value && value.constructor === Object) {
clone = {};
for (var i in value) {
var result = extractFiles(value[i], '' + prefix + i, isExtractableFile);
result.files.forEach(addFile);
clone[i] = result.clone;
}
} else clone = value;
}
return {
clone: clone,
files: files,
};
};