@unchainedshop/core-files 4.0.0-rc.9 → 4.0.1
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.
- package/lib/db/MediaObjectsCollection.d.ts +2 -2
- package/lib/db/MediaObjectsCollection.d.ts.map +1 -1
- package/lib/db/MediaObjectsSchema.d.ts +3 -0
- package/lib/db/MediaObjectsSchema.d.ts.map +1 -0
- package/lib/db/MediaObjectsSchema.js +13 -0
- package/lib/db/MediaObjectsSchema.js.map +1 -0
- package/lib/files-settings.d.ts +4 -7
- package/lib/files-settings.d.ts.map +1 -1
- package/lib/files-settings.js +4 -4
- package/lib/files-settings.js.map +1 -1
- package/lib/module/configureFilesModule.d.ts +3 -2
- package/lib/module/configureFilesModule.d.ts.map +1 -1
- package/lib/module/configureFilesModule.js +10 -0
- package/lib/module/configureFilesModule.js.map +1 -1
- package/lib/service/createDownloadStreamService.d.ts +3 -0
- package/lib/service/createDownloadStreamService.d.ts.map +1 -0
- package/lib/service/createDownloadStreamService.js +9 -0
- package/lib/service/createDownloadStreamService.js.map +1 -0
- package/lib/service/createSignedURLService.d.ts +3 -0
- package/lib/service/createSignedURLService.d.ts.map +1 -0
- package/lib/service/createSignedURLService.js +15 -0
- package/lib/service/createSignedURLService.js.map +1 -0
- package/lib/service/fileServices.d.ts +3 -0
- package/lib/service/fileServices.d.ts.map +1 -0
- package/lib/service/fileServices.js +15 -0
- package/lib/service/fileServices.js.map +1 -0
- package/lib/service/linkFileService.d.ts +3 -0
- package/lib/service/linkFileService.d.ts.map +1 -0
- package/lib/service/linkFileService.js +15 -0
- package/lib/service/linkFileService.js.map +1 -0
- package/lib/service/removeFilesService.d.ts +3 -0
- package/lib/service/removeFilesService.d.ts.map +1 -0
- package/lib/service/removeFilesService.js +21 -0
- package/lib/service/removeFilesService.js.map +1 -0
- package/lib/service/uploadFileFromStreamService.d.ts +3 -0
- package/lib/service/uploadFileFromStreamService.d.ts.map +1 -0
- package/lib/service/uploadFileFromStreamService.js +11 -0
- package/lib/service/uploadFileFromStreamService.js.map +1 -0
- package/lib/service/uploadFileFromURLService.d.ts +3 -0
- package/lib/service/uploadFileFromURLService.d.ts.map +1 -0
- package/lib/service/uploadFileFromURLService.js +11 -0
- package/lib/service/uploadFileFromURLService.js.map +1 -0
- package/lib/utils/getFileFromFileData.d.ts +2 -2
- package/lib/utils/getFileFromFileData.js +1 -1
- package/lib/utils/getFileFromFileData.js.map +1 -1
- package/package.json +5 -5
- package/src/db/MediaObjectsCollection.ts +2 -2
- package/src/files-settings.ts +9 -13
- package/src/module/configureFilesModule.ts +16 -5
- package/src/utils/getFileFromFileData.ts +1 -1
- package/tsconfig.json +2 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
2
2
|
import { TimestampFields } from '@unchainedshop/mongodb';
|
|
3
3
|
export type File = {
|
|
4
|
-
_id
|
|
5
|
-
expires
|
|
4
|
+
_id: string;
|
|
5
|
+
expires: Date | null;
|
|
6
6
|
path: string;
|
|
7
7
|
meta?: Record<string, unknown>;
|
|
8
8
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaObjectsCollection.d.ts","sourceRoot":"","sources":["../../src/db/MediaObjectsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,MAAM,IAAI,GAAG;IACjB,GAAG,
|
|
1
|
+
{"version":3,"file":"MediaObjectsCollection.d.ts","sourceRoot":"","sources":["../../src/db/MediaObjectsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,MAAM,IAAI,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,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,GAAG,eAAe,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,eAAO,MAAM,sBAAsB,GAAU,IAAI,OAAO,CAAC,EAAE,sCAS1D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaObjectsSchema.d.ts","sourceRoot":"","sources":["../../src/db/MediaObjectsSchema.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,kBAAkB,cAY9B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Schemas } from '@unchainedshop/utils';
|
|
2
|
+
import SimpleSchema from 'simpl-schema';
|
|
3
|
+
export const MediaObjectsSchema = new SimpleSchema({
|
|
4
|
+
expires: { type: Date },
|
|
5
|
+
path: { type: String, required: true },
|
|
6
|
+
meta: { type: Object, blackbox: true },
|
|
7
|
+
name: { type: String, required: true },
|
|
8
|
+
size: { type: String },
|
|
9
|
+
type: { type: String },
|
|
10
|
+
url: { type: String },
|
|
11
|
+
...Schemas.timestampFields,
|
|
12
|
+
}, { requiredByDefault: false });
|
|
13
|
+
//# sourceMappingURL=MediaObjectsSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaObjectsSchema.js","sourceRoot":"","sources":["../../src/db/MediaObjectsSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,YAAY,CAChD;IACE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACvB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACtB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACtB,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACrB,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
package/lib/files-settings.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
export interface FilesSettingsOptions {
|
|
2
|
-
transformUrl?: (url: string, params: Record<string, any>) => string;
|
|
3
|
-
privateFileSharingMaxAge?: number;
|
|
4
|
-
}
|
|
5
1
|
export interface FilesSettings {
|
|
6
|
-
transformUrl
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
transformUrl: (url: string, params: Record<string, any>) => string;
|
|
3
|
+
privateFileSharingMaxAge: number;
|
|
4
|
+
configureSettings: (options: FilesSettingsOptions) => void;
|
|
9
5
|
}
|
|
6
|
+
export type FilesSettingsOptions = Omit<Partial<FilesSettings>, 'configureSettings'>;
|
|
10
7
|
export declare const defaultTransformUrl: (url: any) => any;
|
|
11
8
|
export declare const PRIVATE_FILE_SHARING_MAX_AGE = 86400000;
|
|
12
9
|
export declare const filesSettings: FilesSettings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files-settings.d.ts","sourceRoot":"","sources":["../src/files-settings.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"files-settings.d.ts","sourceRoot":"","sources":["../src/files-settings.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IACnE,wBAAwB,EAAE,MAAM,CAAC;IACjC,iBAAiB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC5D;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAErF,eAAO,MAAM,mBAAmB,GAAI,QAAG,QAAQ,CAAC;AAChD,eAAO,MAAM,4BAA4B,WAAW,CAAC;AAErD,eAAO,MAAM,aAAa,EAAE,aAO3B,CAAC"}
|
package/lib/files-settings.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export const defaultTransformUrl = (url) => url;
|
|
2
|
-
export const PRIVATE_FILE_SHARING_MAX_AGE = 86400000;
|
|
2
|
+
export const PRIVATE_FILE_SHARING_MAX_AGE = 86400000; // 24 hours in milliseconds
|
|
3
3
|
export const filesSettings = {
|
|
4
|
-
transformUrl:
|
|
5
|
-
privateFileSharingMaxAge:
|
|
6
|
-
configureSettings:
|
|
4
|
+
transformUrl: defaultTransformUrl,
|
|
5
|
+
privateFileSharingMaxAge: PRIVATE_FILE_SHARING_MAX_AGE,
|
|
6
|
+
configureSettings: ({ transformUrl, privateFileSharingMaxAge } = {}) => {
|
|
7
7
|
filesSettings.transformUrl = transformUrl || defaultTransformUrl;
|
|
8
8
|
filesSettings.privateFileSharingMaxAge = privateFileSharingMaxAge || PRIVATE_FILE_SHARING_MAX_AGE;
|
|
9
9
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files-settings.js","sourceRoot":"","sources":["../src/files-settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"files-settings.js","sourceRoot":"","sources":["../src/files-settings.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,4BAA4B,GAAG,QAAQ,CAAC,CAAC,2BAA2B;AAEjF,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,YAAY,EAAE,mBAAmB;IACjC,wBAAwB,EAAE,4BAA4B;IACtD,iBAAiB,EAAE,CAAC,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAE,EAAE,EAAE;QACrE,aAAa,CAAC,YAAY,GAAG,YAAY,IAAI,mBAAmB,CAAC;QACjE,aAAa,CAAC,wBAAwB,GAAG,wBAAwB,IAAI,4BAA4B,CAAC;IACpG,CAAC;CACF,CAAC"}
|
|
@@ -6,11 +6,12 @@ export declare const configureFilesModule: ({ db, options: filesOptions, }: Modu
|
|
|
6
6
|
normalizeUrl: (url: string, params: Record<string, any>) => string;
|
|
7
7
|
findFile: ({ fileId }: {
|
|
8
8
|
fileId?: string;
|
|
9
|
-
}, options?: mongodb.FindOptions<File>) => Promise<File>;
|
|
9
|
+
}, options?: mongodb.FindOptions<File>) => Promise<File | null>;
|
|
10
10
|
findFiles: (selector: mongodb.Filter<File>, options?: mongodb.FindOptions<File>) => Promise<File[]>;
|
|
11
11
|
deleteMany: (fileIds: string[]) => Promise<number>;
|
|
12
|
-
create: (doc: File) => Promise<string>;
|
|
12
|
+
create: (doc: Omit<File, "_id" | "created"> & Pick<Partial<File>, "_id" | "created">) => Promise<string>;
|
|
13
13
|
update: (fileId: string, doc: Partial<File>) => Promise<string>;
|
|
14
|
+
unexpire: (fileId: string) => Promise<string>;
|
|
14
15
|
delete: (fileId: string) => Promise<number>;
|
|
15
16
|
}>;
|
|
16
17
|
export type FilesModule = Awaited<ReturnType<typeof configureFilesModule>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureFilesModule.d.ts","sourceRoot":"","sources":["../../src/module/configureFilesModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAA4C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAA0B,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAiB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM3E,eAAO,MAAM,oBAAoB,GAAU,gCAGxC,WAAW,CAAC,oBAAoB,CAAC;wBASZ,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"configureFilesModule.d.ts","sourceRoot":"","sources":["../../src/module/configureFilesModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAA4C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAA0B,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAiB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM3E,eAAO,MAAM,oBAAoB,GAAU,gCAGxC,WAAW,CAAC,oBAAoB,CAAC;wBASZ,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM;2BAYnC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,YAAY,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;0BAKzE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YACpB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAClC,OAAO,CAAC,IAAI,EAAE,CAAC;0BAIU,MAAM,EAAE,KAAG,OAAO,CAAC,MAAM,CAAC;kBAKlC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;qBAUnE,MAAM,OAAO,OAAO,CAAC,IAAI,CAAC;uBAcxB,MAAM;qBAcR,MAAM;EAMhC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC"}
|
|
@@ -51,6 +51,16 @@ export const configureFilesModule = async ({ db, options: filesOptions = {}, })
|
|
|
51
51
|
await emit('FILE_UPDATE', { fileId });
|
|
52
52
|
return fileId;
|
|
53
53
|
},
|
|
54
|
+
unexpire: async (fileId) => {
|
|
55
|
+
await Files.updateOne({ _id: fileId }, {
|
|
56
|
+
$set: {
|
|
57
|
+
updated: new Date(),
|
|
58
|
+
},
|
|
59
|
+
$unset: { expires: 1 },
|
|
60
|
+
});
|
|
61
|
+
await emit('FILE_UPDATE', { fileId });
|
|
62
|
+
return fileId;
|
|
63
|
+
},
|
|
54
64
|
delete: async (fileId) => {
|
|
55
65
|
const { deletedCount } = await Files.deleteOne({ _id: fileId });
|
|
56
66
|
await emit('FILE_REMOVE', { fileId });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureFilesModule.js","sourceRoot":"","sources":["../../src/module/configureFilesModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAW,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAQ,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AAE3E,MAAM,WAAW,GAAa,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAE5E,MAAM,EAAE,QAAQ,GAAG,uBAAuB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,EAAE,EACF,OAAO,EAAE,YAAY,GAAG,EAAE,GACQ,EAAE,EAAE;IACtC,cAAc,CAAC,WAAW,CAAC,CAAC;IAE5B,WAAW;IACX,MAAM,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEpD,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAE/C,OAAO;QACL,YAAY,EAAE,CAAC,GAAW,EAAE,MAA2B,EAAU,EAAE;YACjE,MAAM,oBAAoB,GAAG,aAAa,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAC/C,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;gBACzD,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YACD,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,QAAQ,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"configureFilesModule.js","sourceRoot":"","sources":["../../src/module/configureFilesModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDownloadStreamService.d.ts","sourceRoot":"","sources":["../../src/service/createDownloadStreamService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,eAAO,MAAM,2BAA2B,EAAE,2BAYzC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getFileAdapter } from '../utils/getFileAdapter.js';
|
|
2
|
+
export const createDownloadStreamService = async ({ fileId }, unchainedContext) => {
|
|
3
|
+
const { modules: { files }, } = unchainedContext;
|
|
4
|
+
const fileAdapter = getFileAdapter();
|
|
5
|
+
const file = await files.findFile({ fileId });
|
|
6
|
+
const stream = fileAdapter.createDownloadStream(file, unchainedContext);
|
|
7
|
+
return stream;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=createDownloadStreamService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDownloadStreamService.js","sourceRoot":"","sources":["../../src/service/createDownloadStreamService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,CAAC,MAAM,2BAA2B,GAAgC,KAAK,EAC3E,EAAE,MAAM,EAAE,EACV,gBAAgB,EAChB,EAAE;IACF,MAAM,EACJ,OAAO,EAAE,EAAE,KAAK,EAAE,GACnB,GAAG,gBAAgB,CAAC;IACrB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACxE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSignedURLService.d.ts","sourceRoot":"","sources":["../../src/service/createSignedURLService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,eAAO,MAAM,sBAAsB,EAAE,sBAqBpC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getFileAdapter } from '../utils/getFileAdapter.js';
|
|
2
|
+
import { getFileFromFileData } from '../utils/getFileFromFileData.js';
|
|
3
|
+
export const createSignedURLService = async ({ directoryName, fileName, meta }, unchainedContext) => {
|
|
4
|
+
const { modules: { files }, } = unchainedContext;
|
|
5
|
+
const fileUploadAdapter = getFileAdapter();
|
|
6
|
+
const preparedFileData = await fileUploadAdapter.createSignedURL(directoryName, fileName, unchainedContext);
|
|
7
|
+
const fileData = getFileFromFileData(preparedFileData, meta);
|
|
8
|
+
const fileId = await files.create(fileData);
|
|
9
|
+
const file = await files.findFile({ fileId });
|
|
10
|
+
return {
|
|
11
|
+
...file,
|
|
12
|
+
putURL: preparedFileData.putURL,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=createSignedURLService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSignedURLService.js","sourceRoot":"","sources":["../../src/service/createSignedURLService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,CAAC,MAAM,sBAAsB,GAA2B,KAAK,EACjE,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,EACjC,gBAAgB,EAChB,EAAE;IACF,MAAM,EACJ,OAAO,EAAE,EAAE,KAAK,EAAE,GACnB,GAAG,gBAAgB,CAAC;IACrB,MAAM,iBAAiB,GAAG,cAAc,EAAE,CAAC;IAC3C,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,eAAe,CAC9D,aAAa,EACb,QAAQ,EACR,gBAAgB,CACjB,CAAC;IACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9C,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,gBAAgB,CAAC,MAAgB;KAC1C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileServices.d.ts","sourceRoot":"","sources":["../../src/service/fileServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAQ7D,eAAO,MAAM,YAAY,EAAE,YAO1B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { linkFileService } from './linkFileService.js';
|
|
2
|
+
import { createSignedURLService } from './createSignedURLService.js';
|
|
3
|
+
import { uploadFileFromURLService } from './uploadFileFromURLService.js';
|
|
4
|
+
import { uploadFileFromStreamService } from './uploadFileFromStreamService.js';
|
|
5
|
+
import { removeFilesService } from './removeFilesService.js';
|
|
6
|
+
import { createDownloadStreamService } from './createDownloadStreamService.js';
|
|
7
|
+
export const fileServices = {
|
|
8
|
+
linkFile: linkFileService,
|
|
9
|
+
createSignedURL: createSignedURLService,
|
|
10
|
+
uploadFileFromURL: uploadFileFromURLService,
|
|
11
|
+
uploadFileFromStream: uploadFileFromStreamService,
|
|
12
|
+
removeFiles: removeFilesService,
|
|
13
|
+
createDownloadStream: createDownloadStreamService,
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=fileServices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileServices.js","sourceRoot":"","sources":["../../src/service/fileServices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,QAAQ,EAAE,eAAe;IACzB,eAAe,EAAE,sBAAsB;IACvC,iBAAiB,EAAE,wBAAwB;IAC3C,oBAAoB,EAAE,2BAA2B;IACjD,WAAW,EAAE,kBAAkB;IAC/B,oBAAoB,EAAE,2BAA2B;CAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkFileService.d.ts","sourceRoot":"","sources":["../../src/service/linkFileService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,eAAO,MAAM,eAAe,EAAE,eAc7B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FileDirector } from '@unchainedshop/file-upload';
|
|
2
|
+
export const linkFileService = async ({ fileId, size, type }, unchainedAPI) => {
|
|
3
|
+
const { modules: { files }, } = unchainedAPI;
|
|
4
|
+
const file = await files.findFile({ fileId });
|
|
5
|
+
if (file?.expires) {
|
|
6
|
+
await files.update(file._id, { size: size || file.size, type: type || file.type, expires: null });
|
|
7
|
+
const callback = FileDirector.getFileUploadCallback(file.path);
|
|
8
|
+
if (callback) {
|
|
9
|
+
await callback(file, unchainedAPI);
|
|
10
|
+
}
|
|
11
|
+
return files.findFile({ fileId });
|
|
12
|
+
}
|
|
13
|
+
return file;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=linkFileService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkFileService.js","sourceRoot":"","sources":["../../src/service/linkFileService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,CAAC,MAAM,eAAe,GAAoB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE;IAC7F,MAAM,EACJ,OAAO,EAAE,EAAE,KAAK,EAAE,GACnB,GAAG,YAAY,CAAC;IACjB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;QAClB,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,MAAM,QAAQ,GAAG,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeFilesService.d.ts","sourceRoot":"","sources":["../../src/service/removeFilesService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAIzE,eAAO,MAAM,kBAAkB,EAAE,kBA2BhC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getFileAdapter } from '../utils/getFileAdapter.js';
|
|
2
|
+
export const removeFilesService = async ({ fileIds }, unchainedAPI) => {
|
|
3
|
+
const { modules: { files }, } = unchainedAPI;
|
|
4
|
+
if (fileIds && typeof fileIds !== 'string' && !Array.isArray(fileIds))
|
|
5
|
+
throw Error('Media id/s to be removed not provided as a string or array');
|
|
6
|
+
const selector = {
|
|
7
|
+
_id: { $in: fileIds },
|
|
8
|
+
};
|
|
9
|
+
const fileUploadAdapter = getFileAdapter();
|
|
10
|
+
const fileObjects = await files.findFiles(selector);
|
|
11
|
+
try {
|
|
12
|
+
await fileUploadAdapter.removeFiles(fileObjects, unchainedAPI);
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
console.warn(e); // eslint-disable-line
|
|
16
|
+
}
|
|
17
|
+
const fileIdsToDelete = fileObjects.map((f) => f._id).filter(Boolean);
|
|
18
|
+
await files.deleteMany(fileIdsToDelete);
|
|
19
|
+
return fileIdsToDelete.length;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=removeFilesService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeFilesService.js","sourceRoot":"","sources":["../../src/service/removeFilesService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,CAAC,MAAM,kBAAkB,GAAuB,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE;IACxF,MAAM,EACJ,OAAO,EAAE,EAAE,KAAK,EAAE,GACnB,GAAG,YAAY,CAAC;IAEjB,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACnE,MAAM,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAyB;QACrC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;KACtB,CAAC;IAEF,MAAM,iBAAiB,GAAG,cAAc,EAAE,CAAC;IAE3C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;IACzC,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEtE,MAAM,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAExC,OAAO,eAAe,CAAC,MAAM,CAAC;AAChC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadFileFromStreamService.d.ts","sourceRoot":"","sources":["../../src/service/uploadFileFromStreamService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAI5E,eAAO,MAAM,2BAA2B,EAAE,2BAgBzC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { getFileAdapter } from '../utils/getFileAdapter.js';
|
|
2
|
+
import { getFileFromFileData } from '../utils/getFileFromFileData.js';
|
|
3
|
+
export const uploadFileFromStreamService = async ({ directoryName, rawFile, meta }, unchainedContext) => {
|
|
4
|
+
const { modules: { files }, } = unchainedContext;
|
|
5
|
+
const fileUploadAdapter = getFileAdapter();
|
|
6
|
+
const uploadFileData = await fileUploadAdapter.uploadFileFromStream(directoryName, rawFile, unchainedContext);
|
|
7
|
+
const fileData = getFileFromFileData(uploadFileData, meta);
|
|
8
|
+
const fileId = await files.create(fileData);
|
|
9
|
+
return files.findFile({ fileId });
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=uploadFileFromStreamService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadFileFromStreamService.js","sourceRoot":"","sources":["../../src/service/uploadFileFromStreamService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,CAAC,MAAM,2BAA2B,GAAgC,KAAK,EAC3E,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAChC,gBAAgB,EAChB,EAAE;IACF,MAAM,EACJ,OAAO,EAAE,EAAE,KAAK,EAAE,GACnB,GAAG,gBAAgB,CAAC;IACrB,MAAM,iBAAiB,GAAG,cAAc,EAAE,CAAC;IAC3C,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,CACjE,aAAa,EACb,OAAO,EACP,gBAAgB,CACjB,CAAC;IACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadFileFromURLService.d.ts","sourceRoot":"","sources":["../../src/service/uploadFileFromURLService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAIzE,eAAO,MAAM,wBAAwB,EAAE,wBAiBtC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { getFileAdapter } from '../utils/getFileAdapter.js';
|
|
2
|
+
import { getFileFromFileData } from '../utils/getFileFromFileData.js';
|
|
3
|
+
export const uploadFileFromURLService = async ({ directoryName, fileInput, meta }, unchainedContext) => {
|
|
4
|
+
const { modules: { files }, } = unchainedContext;
|
|
5
|
+
const fileUploadAdapter = getFileAdapter();
|
|
6
|
+
const uploadFileData = await fileUploadAdapter.uploadFileFromURL(directoryName, fileInput, unchainedContext);
|
|
7
|
+
const fileData = getFileFromFileData(uploadFileData, meta);
|
|
8
|
+
const fileId = await files.create(fileData);
|
|
9
|
+
return files.findFile({ fileId });
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=uploadFileFromURLService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadFileFromURLService.js","sourceRoot":"","sources":["../../src/service/uploadFileFromURLService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,CAAC,MAAM,wBAAwB,GAA6B,KAAK,EACrE,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,EAClC,gBAAgB,EAChB,EAAE;IACF,MAAM,EACJ,OAAO,EAAE,EAAE,KAAK,EAAE,GACnB,GAAG,gBAAgB,CAAC;IACrB,MAAM,iBAAiB,GAAG,cAAc,EAAE,CAAC;IAE3C,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAC9D,aAAa,EACb,SAAS,EACT,gBAAgB,CACjB,CAAC;IACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -2,9 +2,9 @@ import { UploadFileData } from '@unchainedshop/file-upload';
|
|
|
2
2
|
export declare const getFileFromFileData: (fileData: UploadFileData, meta: any) => {
|
|
3
3
|
_id: string;
|
|
4
4
|
path: string;
|
|
5
|
-
expires: Date;
|
|
5
|
+
expires: Date | null;
|
|
6
6
|
name: string;
|
|
7
|
-
size: number;
|
|
7
|
+
size: number | undefined;
|
|
8
8
|
type: string;
|
|
9
9
|
url: string;
|
|
10
10
|
meta: any;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const getFileFromFileData = (fileData, meta) => ({
|
|
2
2
|
_id: fileData._id,
|
|
3
3
|
path: fileData.directoryName,
|
|
4
|
-
expires: fileData.expiryDate,
|
|
4
|
+
expires: fileData.expiryDate || null,
|
|
5
5
|
name: fileData.fileName,
|
|
6
6
|
size: fileData.size,
|
|
7
7
|
type: fileData.type || 'application/octet-stream',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileFromFileData.js","sourceRoot":"","sources":["../../src/utils/getFileFromFileData.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;
|
|
1
|
+
{"version":3,"file":"getFileFromFileData.js","sourceRoot":"","sources":["../../src/utils/getFileFromFileData.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,IAAI,IAAI;IACpC,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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-files",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"main": "lib/files-index.js",
|
|
5
5
|
"types": "lib/files-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^4.0.0
|
|
35
|
-
"@unchainedshop/file-upload": "^4.0.0
|
|
36
|
-
"@unchainedshop/logger": "^4.0.0
|
|
37
|
-
"@unchainedshop/utils": "^4.0.0
|
|
34
|
+
"@unchainedshop/events": "^4.0.0",
|
|
35
|
+
"@unchainedshop/file-upload": "^4.0.0",
|
|
36
|
+
"@unchainedshop/logger": "^4.0.0",
|
|
37
|
+
"@unchainedshop/utils": "^4.0.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^24.0.13",
|
|
@@ -2,8 +2,8 @@ import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
|
2
2
|
import { TimestampFields } from '@unchainedshop/mongodb';
|
|
3
3
|
|
|
4
4
|
export type File = {
|
|
5
|
-
_id
|
|
6
|
-
expires
|
|
5
|
+
_id: string;
|
|
6
|
+
expires: Date | null;
|
|
7
7
|
path: string;
|
|
8
8
|
meta?: Record<string, unknown>;
|
|
9
9
|
name: string;
|
package/src/files-settings.ts
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
export interface FilesSettingsOptions {
|
|
2
|
-
transformUrl?: (url: string, params: Record<string, any>) => string;
|
|
3
|
-
privateFileSharingMaxAge?: number;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
1
|
export interface FilesSettings {
|
|
7
|
-
transformUrl
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
transformUrl: (url: string, params: Record<string, any>) => string;
|
|
3
|
+
privateFileSharingMaxAge: number;
|
|
4
|
+
configureSettings: (options: FilesSettingsOptions) => void;
|
|
10
5
|
}
|
|
11
6
|
|
|
12
|
-
export
|
|
7
|
+
export type FilesSettingsOptions = Omit<Partial<FilesSettings>, 'configureSettings'>;
|
|
13
8
|
|
|
14
|
-
export const
|
|
9
|
+
export const defaultTransformUrl = (url) => url;
|
|
10
|
+
export const PRIVATE_FILE_SHARING_MAX_AGE = 86400000; // 24 hours in milliseconds
|
|
15
11
|
|
|
16
12
|
export const filesSettings: FilesSettings = {
|
|
17
|
-
transformUrl:
|
|
18
|
-
privateFileSharingMaxAge:
|
|
19
|
-
configureSettings:
|
|
13
|
+
transformUrl: defaultTransformUrl,
|
|
14
|
+
privateFileSharingMaxAge: PRIVATE_FILE_SHARING_MAX_AGE,
|
|
15
|
+
configureSettings: ({ transformUrl, privateFileSharingMaxAge } = {}) => {
|
|
20
16
|
filesSettings.transformUrl = transformUrl || defaultTransformUrl;
|
|
21
17
|
filesSettings.privateFileSharingMaxAge = privateFileSharingMaxAge || PRIVATE_FILE_SHARING_MAX_AGE;
|
|
22
18
|
},
|
|
@@ -32,10 +32,7 @@ export const configureFilesModule = async ({
|
|
|
32
32
|
return transformedURLString;
|
|
33
33
|
},
|
|
34
34
|
|
|
35
|
-
findFile: async (
|
|
36
|
-
{ fileId }: { fileId?: string },
|
|
37
|
-
options?: mongodb.FindOptions<File>,
|
|
38
|
-
): Promise<File> => {
|
|
35
|
+
findFile: async ({ fileId }: { fileId?: string }, options?: mongodb.FindOptions<File>) => {
|
|
39
36
|
return Files.findOne(generateDbFilterById(fileId), options);
|
|
40
37
|
},
|
|
41
38
|
|
|
@@ -51,7 +48,7 @@ export const configureFilesModule = async ({
|
|
|
51
48
|
return deletionResult.deletedCount;
|
|
52
49
|
},
|
|
53
50
|
|
|
54
|
-
create: async (doc: File) => {
|
|
51
|
+
create: async (doc: Omit<File, '_id' | 'created'> & Pick<Partial<File>, '_id' | 'created'>) => {
|
|
55
52
|
const { insertedId: fileId } = await Files.insertOne({
|
|
56
53
|
_id: generateDbObjectId(),
|
|
57
54
|
created: new Date(),
|
|
@@ -75,6 +72,20 @@ export const configureFilesModule = async ({
|
|
|
75
72
|
return fileId;
|
|
76
73
|
},
|
|
77
74
|
|
|
75
|
+
unexpire: async (fileId: string) => {
|
|
76
|
+
await Files.updateOne(
|
|
77
|
+
{ _id: fileId },
|
|
78
|
+
{
|
|
79
|
+
$set: {
|
|
80
|
+
updated: new Date(),
|
|
81
|
+
},
|
|
82
|
+
$unset: { expires: 1 },
|
|
83
|
+
},
|
|
84
|
+
);
|
|
85
|
+
await emit('FILE_UPDATE', { fileId });
|
|
86
|
+
return fileId;
|
|
87
|
+
},
|
|
88
|
+
|
|
78
89
|
delete: async (fileId: string) => {
|
|
79
90
|
const { deletedCount } = await Files.deleteOne({ _id: fileId });
|
|
80
91
|
await emit('FILE_REMOVE', { fileId });
|
|
@@ -3,7 +3,7 @@ import { UploadFileData } from '@unchainedshop/file-upload';
|
|
|
3
3
|
export const getFileFromFileData = (fileData: UploadFileData, meta: any) => ({
|
|
4
4
|
_id: fileData._id,
|
|
5
5
|
path: fileData.directoryName,
|
|
6
|
-
expires: fileData.expiryDate,
|
|
6
|
+
expires: fileData.expiryDate || null,
|
|
7
7
|
name: fileData.fileName,
|
|
8
8
|
size: fileData.size,
|
|
9
9
|
type: fileData.type || 'application/octet-stream',
|