@unchainedshop/file-upload 3.0.0-alpha3 → 3.0.0-alpha4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,20 +1,19 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
- import { File, UploadFileData } from '@unchainedshop/core-files';
3
1
  import { Readable } from 'stream';
4
2
  import { IBaseAdapter } from '@unchainedshop/utils';
5
- export interface IFileAdapter extends IBaseAdapter {
6
- createSignedURL: (directoryName: string, fileName: string, unchainedAPI: UnchainedCore) => Promise<(UploadFileData & {
3
+ import { UploadedFile, UploadFileData } from '../types.js';
4
+ export interface IFileAdapter<Context = unknown> extends IBaseAdapter {
5
+ createSignedURL: (directoryName: string, fileName: string, unchainedAPI: Context) => Promise<(UploadFileData & {
7
6
  putURL: string;
8
7
  }) | null>;
9
- removeFiles: (files: Array<File>, unchainedContext: UnchainedCore) => Promise<void>;
10
- uploadFileFromStream: (directoryName: string, rawFile: any, unchainedAPI: UnchainedCore) => Promise<UploadFileData | null>;
8
+ removeFiles: (files: Array<UploadedFile>, unchainedContext: Context) => Promise<void>;
9
+ uploadFileFromStream: (directoryName: string, rawFile: any, unchainedAPI: Context) => Promise<UploadFileData | null>;
11
10
  uploadFileFromURL: (directoryName: string, fileInput: {
12
11
  fileLink: string;
13
12
  fileName: string;
14
13
  fileId?: string;
15
14
  headers?: Record<string, unknown>;
16
- }, unchainedAPI: UnchainedCore) => Promise<UploadFileData | null>;
17
- createDownloadStream: (file: File, unchainedAPI: UnchainedCore) => Promise<Readable>;
15
+ }, unchainedAPI: Context) => Promise<UploadFileData | null>;
16
+ createDownloadStream: (file: UploadedFile, unchainedAPI: Context) => Promise<Readable>;
18
17
  }
19
18
  export declare const FileAdapter: Omit<IFileAdapter, 'key' | 'label' | 'version'>;
20
19
  //# sourceMappingURL=FileAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileAdapter.d.ts","sourceRoot":"","sources":["../../src/director/FileAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,eAAe,EAAE,CACf,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,aAAa,KACxB,OAAO,CAAC,CAAC,cAAc,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3D,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,oBAAoB,EAAE,CACpB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,GAAG,EACZ,YAAY,EAAE,aAAa,KACxB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpC,iBAAiB,EAAE,CACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,EACD,YAAY,EAAE,aAAa,KACxB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpC,oBAAoB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtF;AACD,eAAO,MAAM,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CA+BvE,CAAC"}
1
+ {"version":3,"file":"FileAdapter.d.ts","sourceRoot":"","sources":["../../src/director/FileAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,OAAO,CAAE,SAAQ,YAAY;IACnE,eAAe,EAAE,CACf,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,CAAC,cAAc,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3D,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,oBAAoB,EAAE,CACpB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,GAAG,EACZ,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpC,iBAAiB,EAAE,CACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,EACD,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpC,oBAAoB,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxF;AACD,eAAO,MAAM,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CA+BvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileAdapter.js","sourceRoot":"","sources":["../../src/director/FileAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA8BtD,MAAM,CAAC,MAAM,WAAW,GAAoD;IAC1E,eAAe;QACb,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,oBAAoB;QAClB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,oBAAoB;QAClB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,iBAAiB;QACf,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;QAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"FileAdapter.js","sourceRoot":"","sources":["../../src/director/FileAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA4BtD,MAAM,CAAC,MAAM,WAAW,GAAoD;IAC1E,eAAe;QACb,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,oBAAoB;QAClB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,oBAAoB;QAClB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,iBAAiB;QACf,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;QAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
@@ -1,15 +1,14 @@
1
- import { UnchainedCore } from '@unchainedshop/core';
2
- import { File } from '@unchainedshop/core-files';
3
1
  import { IFileAdapter } from './FileAdapter.js';
4
- export type UploadFileCallback = (file: File, unchainedAPI: UnchainedCore) => Promise<void>;
2
+ import { UploadedFile } from '../types.js';
3
+ export type UploadFileCallback<UnchainedAPI = unknown> = (file: UploadedFile, unchainedAPI: UnchainedAPI) => Promise<void>;
5
4
  export declare const FileDirector: {
6
- registerFileUploadCallback(directoryName: string, fn: UploadFileCallback): void;
5
+ registerFileUploadCallback<UnchainedAPI>(directoryName: string, fn: UploadFileCallback<UnchainedAPI>): void;
7
6
  getFileUploadCallback(directoryName: string): UploadFileCallback;
8
7
  getAdapters: (options?: {
9
- adapterFilter?: (adapter: IFileAdapter) => boolean;
10
- }) => IFileAdapter[];
11
- getAdapter: (key: string) => IFileAdapter;
12
- registerAdapter: (A: IFileAdapter) => void;
8
+ adapterFilter?: (adapter: IFileAdapter<unknown>) => boolean;
9
+ }) => IFileAdapter<unknown>[];
10
+ getAdapter: (key: string) => IFileAdapter<unknown>;
11
+ registerAdapter: (A: IFileAdapter<unknown>) => void;
13
12
  unregisterAdapter: (key: string) => boolean;
14
13
  };
15
14
  //# sourceMappingURL=FileDirector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileDirector.d.ts","sourceRoot":"","sources":["../../src/director/FileDirector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAM5F,eAAO,MAAM,YAAY;8CAGmB,MAAM,MAAM,kBAAkB;yCAMnC,MAAM,GAAG,kBAAkB;;;;;;;CAGjE,CAAC"}
1
+ {"version":3,"file":"FileDirector.d.ts","sourceRoot":"","sources":["../../src/director/FileDirector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,kBAAkB,CAAC,YAAY,GAAG,OAAO,IAAI,CACvD,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,IAAI,CAAC,CAAC;AAMnB,eAAO,MAAM,YAAY;+BAGI,YAAY,iBAAiB,MAAM,MAAM,kBAAkB,CAAC,YAAY,CAAC;yCAM/D,MAAM,GAAG,kBAAkB;;;;;;;CAGjE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileDirector.js","sourceRoot":"","sources":["../../src/director/FileDirector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOpD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAEjE,MAAM,YAAY,GAAG,YAAY,CAAe,cAAc,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,YAAY;IAEf,0BAA0B,CAAC,aAAqB,EAAE,EAAsB;QACtE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,aAAqB;QACzC,OAAO,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"FileDirector.js","sourceRoot":"","sources":["../../src/director/FileDirector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AASpD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAEjE,MAAM,YAAY,GAAG,YAAY,CAAe,cAAc,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,YAAY;IAEf,0BAA0B,CAAe,aAAqB,EAAE,EAAoC;QAClG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,aAAqB;QACzC,OAAO,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import buildHashedFilename from './build-hashed-filename.js';
2
2
  import resolveExpirationDate from './put-expiration.js';
3
+ import getFileFromFileData from './get-file-from-file-data.js';
3
4
  export { FileDirector } from './director/FileDirector.js';
4
5
  export { FileAdapter, IFileAdapter } from './director/FileAdapter.js';
5
- export { buildHashedFilename, resolveExpirationDate };
6
+ export { buildHashedFilename, resolveExpirationDate, getFileFromFileData };
7
+ export type * from './types.js';
6
8
  //# sourceMappingURL=file-upload-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload-index.d.ts","sourceRoot":"","sources":["../src/file-upload-index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,qBAAqB,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"file-upload-index.d.ts","sourceRoot":"","sources":["../src/file-upload-index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,qBAAqB,MAAM,qBAAqB,CAAC;AACxD,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;AAC3E,mBAAmB,YAAY,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import buildHashedFilename from './build-hashed-filename.js';
2
2
  import resolveExpirationDate from './put-expiration.js';
3
+ import getFileFromFileData from './get-file-from-file-data.js';
3
4
  export { FileDirector } from './director/FileDirector.js';
4
5
  export { FileAdapter } from './director/FileAdapter.js';
5
- export { buildHashedFilename, resolveExpirationDate };
6
+ export { buildHashedFilename, resolveExpirationDate, getFileFromFileData };
6
7
  //# sourceMappingURL=file-upload-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload-index.js","sourceRoot":"","sources":["../src/file-upload-index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,qBAAqB,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAgB,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"file-upload-index.js","sourceRoot":"","sources":["../src/file-upload-index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,qBAAqB,MAAM,qBAAqB,CAAC;AACxD,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAgB,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { UploadFileData } from './types.js';
2
+ export declare const getFileFromFileData: (fileData: UploadFileData, meta: any) => {
3
+ _id: string;
4
+ path: string;
5
+ expires: Date;
6
+ name: string;
7
+ size: number;
8
+ type: string;
9
+ url: string;
10
+ meta: any;
11
+ };
12
+ export default getFileFromFileData;
13
+ //# sourceMappingURL=get-file-from-file-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-file-from-file-data.d.ts","sourceRoot":"","sources":["../src/get-file-from-file-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,mBAAmB,aAAc,cAAc,QAAQ,GAAG;;;;;;;;;CASrE,CAAC;AAEH,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export const getFileFromFileData = (fileData, meta) => ({
2
+ _id: fileData._id,
3
+ path: fileData.directoryName,
4
+ expires: fileData.expiryDate,
5
+ name: fileData.fileName,
6
+ size: fileData.size,
7
+ type: fileData.type || 'application/octet-stream',
8
+ url: fileData.url,
9
+ meta,
10
+ });
11
+ export default getFileFromFileData;
12
+ //# sourceMappingURL=get-file-from-file-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-file-from-file-data.js","sourceRoot":"","sources":["../src/get-file-from-file-data.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAwB,EAAE,IAAS,EAAE,EAAE,CAAC,CAAC;IAC3E,GAAG,EAAE,QAAQ,CAAC,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC,aAAa;IAC5B,OAAO,EAAE,QAAQ,CAAC,UAAU;IAC5B,IAAI,EAAE,QAAQ,CAAC,QAAQ;IACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;IACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,0BAA0B;IACjD,GAAG,EAAE,QAAQ,CAAC,GAAG;IACjB,IAAI;CACL,CAAC,CAAC;AAEH,eAAe,mBAAmB,CAAC"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ export interface UploadFileData {
2
+ _id?: string;
3
+ directoryName: string;
4
+ expiryDate: Date;
5
+ fileName: string;
6
+ hash: string;
7
+ hashedName: string;
8
+ size?: number;
9
+ type: string;
10
+ url: string;
11
+ }
12
+ export interface UploadedFile {
13
+ _id?: string;
14
+ path: string;
15
+ meta?: Record<string, unknown>;
16
+ name: string;
17
+ size?: number;
18
+ type?: string;
19
+ url?: string;
20
+ }
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
package/lib/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/file-upload",
3
- "version": "3.0.0-alpha3",
3
+ "version": "3.0.0-alpha4",
4
4
  "main": "lib/file-upload-index.js",
5
5
  "exports": {
6
6
  ".": "./lib/file-upload-index.js",
@@ -24,22 +24,25 @@
24
24
  "ecommerce",
25
25
  "core"
26
26
  ],
27
- "author": "Joël Meiller",
27
+ "authors": [
28
+ "Joël Meiller",
29
+ "Pascal Kaufmann"
30
+ ],
28
31
  "license": "EUPL-1.2",
29
32
  "bugs": {
30
33
  "url": "https://github.com/unchainedshop/unchained/issues"
31
34
  },
32
35
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
36
  "dependencies": {
34
- "@unchainedshop/logger": "^3.0.0-alpha3",
35
- "@unchainedshop/utils": "^3.0.0-alpha3",
37
+ "@unchainedshop/logger": "^3.0.0-alpha4",
38
+ "@unchainedshop/utils": "^3.0.0-alpha4",
36
39
  "base-x": "^5.0.0",
37
40
  "mime-types": "^2.1.35"
38
41
  },
39
42
  "devDependencies": {
40
- "@types/node": "^22.5.5",
43
+ "@types/node": "^22.7.8",
41
44
  "jest": "^29.7.0",
42
45
  "ts-jest": "^29.2.5",
43
- "typescript": "^5.6.2"
46
+ "typescript": "^5.6.3"
44
47
  }
45
48
  }
@@ -1,20 +1,19 @@
1
- import { log, LogLevel } from '@unchainedshop/logger';
2
- import { UnchainedCore } from '@unchainedshop/core';
3
- import { File, UploadFileData } from '@unchainedshop/core-files';
4
1
  import { Readable } from 'stream';
2
+ import { log, LogLevel } from '@unchainedshop/logger';
5
3
  import { IBaseAdapter } from '@unchainedshop/utils';
4
+ import { UploadedFile, UploadFileData } from '../types.js';
6
5
 
7
- export interface IFileAdapter extends IBaseAdapter {
6
+ export interface IFileAdapter<Context = unknown> extends IBaseAdapter {
8
7
  createSignedURL: (
9
8
  directoryName: string,
10
9
  fileName: string,
11
- unchainedAPI: UnchainedCore,
10
+ unchainedAPI: Context,
12
11
  ) => Promise<(UploadFileData & { putURL: string }) | null>;
13
- removeFiles: (files: Array<File>, unchainedContext: UnchainedCore) => Promise<void>;
12
+ removeFiles: (files: Array<UploadedFile>, unchainedContext: Context) => Promise<void>;
14
13
  uploadFileFromStream: (
15
14
  directoryName: string,
16
15
  rawFile: any,
17
- unchainedAPI: UnchainedCore,
16
+ unchainedAPI: Context,
18
17
  ) => Promise<UploadFileData | null>;
19
18
  uploadFileFromURL: (
20
19
  directoryName: string,
@@ -24,9 +23,9 @@ export interface IFileAdapter extends IBaseAdapter {
24
23
  fileId?: string;
25
24
  headers?: Record<string, unknown>;
26
25
  },
27
- unchainedAPI: UnchainedCore,
26
+ unchainedAPI: Context,
28
27
  ) => Promise<UploadFileData | null>;
29
- createDownloadStream: (file: File, unchainedAPI: UnchainedCore) => Promise<Readable>;
28
+ createDownloadStream: (file: UploadedFile, unchainedAPI: Context) => Promise<Readable>;
30
29
  }
31
30
  export const FileAdapter: Omit<IFileAdapter, 'key' | 'label' | 'version'> = {
32
31
  createSignedURL() {
@@ -1,9 +1,11 @@
1
1
  import { BaseDirector } from '@unchainedshop/utils';
2
- import { UnchainedCore } from '@unchainedshop/core';
3
- import { File } from '@unchainedshop/core-files';
4
2
  import { IFileAdapter } from './FileAdapter.js';
3
+ import { UploadedFile } from '../types.js';
5
4
 
6
- export type UploadFileCallback = (file: File, unchainedAPI: UnchainedCore) => Promise<void>;
5
+ export type UploadFileCallback<UnchainedAPI = unknown> = (
6
+ file: UploadedFile,
7
+ unchainedAPI: UnchainedAPI,
8
+ ) => Promise<void>;
7
9
 
8
10
  const FileUploadRegistry = new Map<string, UploadFileCallback>();
9
11
 
@@ -12,7 +14,7 @@ const baseDirector = BaseDirector<IFileAdapter>('FileDirector');
12
14
  export const FileDirector = {
13
15
  ...baseDirector,
14
16
 
15
- registerFileUploadCallback(directoryName: string, fn: UploadFileCallback) {
17
+ registerFileUploadCallback<UnchainedAPI>(directoryName: string, fn: UploadFileCallback<UnchainedAPI>) {
16
18
  if (!FileUploadRegistry.has(directoryName)) {
17
19
  FileUploadRegistry.set(directoryName, fn);
18
20
  }
@@ -1,8 +1,9 @@
1
- import buildHashedFilename from "./build-hashed-filename.js";
2
-
1
+ import buildHashedFilename from './build-hashed-filename.js';
3
2
 
4
3
  describe('File Uploader', () => {
5
- it('Generate unique file name', async () => {
6
- expect(buildHashedFilename('root', 'file1.jpg', new Date(new Date("2022-12-04T17:13:09.285Z")))).toEqual("4hI2YuPDacR8ERoR7iM6cQ-file1.jpg")
4
+ it('Generate unique file name', () => {
5
+ expect(
6
+ buildHashedFilename('root', 'file1.jpg', new Date(new Date('2022-12-04T17:13:09.285Z'))),
7
+ ).toEqual('4hI2YuPDacR8ERoR7iM6cQ-file1.jpg');
7
8
  });
8
9
  });
@@ -1,6 +1,8 @@
1
1
  import buildHashedFilename from './build-hashed-filename.js';
2
2
  import resolveExpirationDate from './put-expiration.js';
3
+ import getFileFromFileData from './get-file-from-file-data.js';
3
4
 
4
5
  export { FileDirector } from './director/FileDirector.js';
5
6
  export { FileAdapter, IFileAdapter } from './director/FileAdapter.js';
6
- export { buildHashedFilename, resolveExpirationDate };
7
+ export { buildHashedFilename, resolveExpirationDate, getFileFromFileData };
8
+ export type * from './types.js';
@@ -0,0 +1,14 @@
1
+ import { UploadFileData } from './types.js';
2
+
3
+ export const getFileFromFileData = (fileData: UploadFileData, meta: any) => ({
4
+ _id: fileData._id,
5
+ path: fileData.directoryName,
6
+ expires: fileData.expiryDate,
7
+ name: fileData.fileName,
8
+ size: fileData.size,
9
+ type: fileData.type || 'application/octet-stream',
10
+ url: fileData.url,
11
+ meta,
12
+ });
13
+
14
+ export default getFileFromFileData;
package/src/types.ts ADDED
@@ -0,0 +1,21 @@
1
+ export interface UploadFileData {
2
+ _id?: string;
3
+ directoryName: string;
4
+ expiryDate: Date;
5
+ fileName: string;
6
+ hash: string;
7
+ hashedName: string;
8
+ size?: number;
9
+ type: string;
10
+ url: string;
11
+ }
12
+
13
+ export interface UploadedFile {
14
+ _id?: string;
15
+ path: string;
16
+ meta?: Record<string, unknown>;
17
+ name: string;
18
+ size?: number;
19
+ type?: string;
20
+ url?: string;
21
+ }