{"version":3,"sources":["../src/lib/types/helper.ts","../src/lib/local.ts","../src/lib/remote.ts","../src/lib/merge.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { LocalFileSource, RemoteFileSource } from './args';\n\n/* Build Helper Function */\nexport const buildFile = (file: File | undefined): File => {\n  if (typeof file === 'undefined') {\n    throw new Error('File is not defined.');\n  }\n  return file;\n};\n\nexport const buildFileList = (files: File[]): FileList => {\n  const dataTransfer = new DataTransfer();\n  for (const file of files) {\n    dataTransfer.items.add(file);\n  }\n  return dataTransfer.files;\n};\n\n/* Local Class Helper Function */\nexport const localFileSourceConverter = (file: LocalFileSource): File => {\n  const buffer = readFileSync(file.filePath);\n  const blob = new Blob([buffer], { type: file.mimeType });\n  return new File([blob], file.name, {\n    type: file.mimeType,\n  });\n};\n\n/* Remote Class Helper Function */\nexport const remoteFileSourceConverter = async (source: RemoteFileSource): Promise<File> => {\n  const object = await fetch(source.url)\n    .then((response) => {\n      if (!response.ok) {\n        throw new Error(\n          `Failed to fetch url: ${source.url}, status: ${response.status}, statusText: ${response.statusText}.`\n        );\n      }\n      return response.blob();\n    })\n    .then((blob) => {\n      return new File([blob], source.name, { type: source.mimeType });\n    });\n  return object;\n};\n","import { BlobFileSource, LocalFileSource } from './types/args';\nimport { LocalFileBuilderType, LocalFileListBuilderType } from './types/builder';\nimport { buildFile, buildFileList, localFileSourceConverter } from './types/helper';\n\nexport class LocalFileListBuilder implements LocalFileListBuilderType {\n  private files: File[] = [];\n\n  addBlob(blob: BlobFileSource): this {\n    const object = new File([blob.blob], blob.name, {\n      type: blob.mimeType,\n    });\n    this.files.push(object);\n    return this;\n  }\n\n  addBlobs(blobs: BlobFileSource[]): this {\n    for (const blob of blobs) {\n      const object = new File([blob.blob], blob.name, {\n        type: blob.mimeType,\n      });\n      this.files.push(object);\n    }\n    return this;\n  }\n\n  addFile(file: LocalFileSource): this {\n    const object = localFileSourceConverter(file);\n    this.files.push(object);\n    return this;\n  }\n\n  addFiles(files: LocalFileSource[]): this {\n    for (const file of files) {\n      const object = localFileSourceConverter(file);\n      this.files.push(object);\n    }\n    return this;\n  }\n\n  addFileObject(file: File): this {\n    this.files.push(file);\n    return this;\n  }\n\n  addFileObjects(files: Iterable<File>): this {\n    for (const file of files) {\n      this.files.push(file);\n    }\n    return this;\n  }\n\n  build(): FileList {\n    return buildFileList(this.files);\n  }\n\n  buildFileArray(): File[] {\n    return this.files;\n  }\n}\n\nexport class LocalFileBuilder implements LocalFileBuilderType {\n  private file: File | undefined;\n  constructor() {\n    this.file = undefined;\n  }\n\n  addBlob(blob: BlobFileSource): this {\n    this.file = new File([blob.blob], blob.name, {\n      type: blob.mimeType,\n    });\n    return this;\n  }\n\n  addFile(file: LocalFileSource): this {\n    this.file = localFileSourceConverter(file);\n    return this;\n  }\n\n  addFileObject(file: File): this {\n    this.file = file;\n    return this;\n  }\n\n  build(): File {\n    return buildFile(this.file);\n  }\n}\n","import { BlobFileSource, RemoteFileSource } from './types/args';\nimport { RemoteFileBuilderType, RemoteFileListBuilderType } from './types/builder';\nimport { buildFile, buildFileList, remoteFileSourceConverter } from './types/helper';\n\n/* Remote Class */\nexport class RemoteFileListBuilder implements RemoteFileListBuilderType {\n  private files: File[] = [];\n\n  addBlob(blob: BlobFileSource): this {\n    const object = new File([blob.blob], blob.name, {\n      type: blob.mimeType,\n    });\n    this.files.push(object);\n    return this;\n  }\n\n  addBlobs(blobs: BlobFileSource[]): this {\n    for (const blob of blobs) {\n      const object = new File([blob.blob], blob.name, {\n        type: blob.mimeType,\n      });\n      this.files.push(object);\n    }\n    return this;\n  }\n\n  async addFile(file: RemoteFileSource): Promise<this> {\n    const object = await remoteFileSourceConverter(file);\n    this.files.push(object);\n    return this;\n  }\n\n  async addFiles(files: RemoteFileSource[]): Promise<this> {\n    for (const file of files) {\n      const object = await remoteFileSourceConverter(file);\n      this.files.push(object);\n    }\n    return this;\n  }\n\n  addFileObject(file: File): this {\n    this.files.push(file);\n    return this;\n  }\n\n  addFileObjects(files: Iterable<File>): this {\n    for (const file of files) {\n      this.files.push(file);\n    }\n    return this;\n  }\n\n  build(): FileList {\n    return buildFileList(this.files);\n  }\n\n  buildFileArray(): File[] {\n    return this.files;\n  }\n}\n\nexport class RemoteFileBuilder implements RemoteFileBuilderType {\n  private file: File | undefined;\n  constructor() {\n    this.file = undefined;\n  }\n\n  addBlob(blob: BlobFileSource): this {\n    this.file = new File([blob.blob], blob.name, {\n      type: blob.mimeType,\n    });\n    return this;\n  }\n\n  async addFile(file: RemoteFileSource): Promise<this> {\n    this.file = await remoteFileSourceConverter(file);\n    return this;\n  }\n\n  addFileObject(file: File): this {\n    this.file = file;\n    return this;\n  }\n\n  build(): File {\n    return buildFile(this.file);\n  }\n}\n","import { MergeFileListBuilderType } from './types/builder';\nimport { buildFileList } from './types/helper';\n\nexport class MergeFileListBuilder implements MergeFileListBuilderType {\n  private files: File[] = [];\n\n  addFileObjects(files: Iterable<File>): this {\n    for (const file of files) {\n      this.files.push(file);\n    }\n    return this;\n  }\n\n  build(): FileList {\n    return buildFileList(this.files);\n  }\n\n  buildFileArray(): File[] {\n    return this.files;\n  }\n}\n"],"mappings":"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","names":[]}