@mock-filelist/filelist
Version:
This package is a mock generator of FileList and File type object.
234 lines (229 loc) • 5.59 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
LocalFileBuilder: () => LocalFileBuilder,
LocalFileListBuilder: () => LocalFileListBuilder,
MergeFileListBuilder: () => MergeFileListBuilder,
RemoteFileBuilder: () => RemoteFileBuilder,
RemoteFileListBuilder: () => RemoteFileListBuilder
});
module.exports = __toCommonJS(index_exports);
// src/lib/types/helper.ts
var import_fs = require("fs");
var buildFile = (file) => {
if (typeof file === "undefined") {
throw new Error("File is not defined.");
}
return file;
};
var buildFileList = (files) => {
const dataTransfer = new DataTransfer();
for (const file of files) {
dataTransfer.items.add(file);
}
return dataTransfer.files;
};
var localFileSourceConverter = (file) => {
const buffer = (0, import_fs.readFileSync)(file.filePath);
const blob = new Blob([buffer], { type: file.mimeType });
return new File([blob], file.name, {
type: file.mimeType
});
};
var remoteFileSourceConverter = async (source) => {
const object = await fetch(source.url).then((response) => {
if (!response.ok) {
throw new Error(
`Failed to fetch url: ${source.url}, status: ${response.status}, statusText: ${response.statusText}.`
);
}
return response.blob();
}).then((blob) => {
return new File([blob], source.name, { type: source.mimeType });
});
return object;
};
// src/lib/local.ts
var LocalFileListBuilder = class {
files = [];
addBlob(blob) {
const object = new File([blob.blob], blob.name, {
type: blob.mimeType
});
this.files.push(object);
return this;
}
addBlobs(blobs) {
for (const blob of blobs) {
const object = new File([blob.blob], blob.name, {
type: blob.mimeType
});
this.files.push(object);
}
return this;
}
addFile(file) {
const object = localFileSourceConverter(file);
this.files.push(object);
return this;
}
addFiles(files) {
for (const file of files) {
const object = localFileSourceConverter(file);
this.files.push(object);
}
return this;
}
addFileObject(file) {
this.files.push(file);
return this;
}
addFileObjects(files) {
for (const file of files) {
this.files.push(file);
}
return this;
}
build() {
return buildFileList(this.files);
}
buildFileArray() {
return this.files;
}
};
var LocalFileBuilder = class {
file;
constructor() {
this.file = void 0;
}
addBlob(blob) {
this.file = new File([blob.blob], blob.name, {
type: blob.mimeType
});
return this;
}
addFile(file) {
this.file = localFileSourceConverter(file);
return this;
}
addFileObject(file) {
this.file = file;
return this;
}
build() {
return buildFile(this.file);
}
};
// src/lib/remote.ts
var RemoteFileListBuilder = class {
files = [];
addBlob(blob) {
const object = new File([blob.blob], blob.name, {
type: blob.mimeType
});
this.files.push(object);
return this;
}
addBlobs(blobs) {
for (const blob of blobs) {
const object = new File([blob.blob], blob.name, {
type: blob.mimeType
});
this.files.push(object);
}
return this;
}
async addFile(file) {
const object = await remoteFileSourceConverter(file);
this.files.push(object);
return this;
}
async addFiles(files) {
for (const file of files) {
const object = await remoteFileSourceConverter(file);
this.files.push(object);
}
return this;
}
addFileObject(file) {
this.files.push(file);
return this;
}
addFileObjects(files) {
for (const file of files) {
this.files.push(file);
}
return this;
}
build() {
return buildFileList(this.files);
}
buildFileArray() {
return this.files;
}
};
var RemoteFileBuilder = class {
file;
constructor() {
this.file = void 0;
}
addBlob(blob) {
this.file = new File([blob.blob], blob.name, {
type: blob.mimeType
});
return this;
}
async addFile(file) {
this.file = await remoteFileSourceConverter(file);
return this;
}
addFileObject(file) {
this.file = file;
return this;
}
build() {
return buildFile(this.file);
}
};
// src/lib/merge.ts
var MergeFileListBuilder = class {
files = [];
addFileObjects(files) {
for (const file of files) {
this.files.push(file);
}
return this;
}
build() {
return buildFileList(this.files);
}
buildFileArray() {
return this.files;
}
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
LocalFileBuilder,
LocalFileListBuilder,
MergeFileListBuilder,
RemoteFileBuilder,
RemoteFileListBuilder
});
//# sourceMappingURL=index.js.map