@webiny/api-file-manager 0.0.0-mt-3 → 0.0.0-unstable.5e7233243f

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.
Files changed (90) hide show
  1. package/handlers/download/index.d.ts +3 -3
  2. package/handlers/download/index.js +66 -59
  3. package/handlers/download/index.js.map +1 -0
  4. package/handlers/manage/index.d.ts +5 -3
  5. package/handlers/manage/index.js +47 -46
  6. package/handlers/manage/index.js.map +1 -0
  7. package/handlers/transform/index.d.ts +2 -3
  8. package/handlers/transform/index.js +67 -68
  9. package/handlers/transform/index.js.map +1 -0
  10. package/handlers/transform/loaders/imageLoader.d.ts +26 -9
  11. package/handlers/transform/loaders/imageLoader.js +2 -3
  12. package/handlers/transform/loaders/imageLoader.js.map +1 -0
  13. package/handlers/transform/loaders/index.d.ts +4 -9
  14. package/handlers/transform/loaders/index.js.map +1 -0
  15. package/handlers/transform/loaders/sanitizeImageTransformations.d.ts +7 -3
  16. package/handlers/transform/loaders/sanitizeImageTransformations.js +27 -20
  17. package/handlers/transform/loaders/sanitizeImageTransformations.js.map +1 -0
  18. package/handlers/transform/managers/imageManager.d.ts +12 -6
  19. package/handlers/transform/managers/imageManager.js +25 -17
  20. package/handlers/transform/managers/imageManager.js.map +1 -0
  21. package/handlers/transform/managers/index.d.ts +2 -6
  22. package/handlers/transform/managers/index.js.map +1 -0
  23. package/handlers/transform/optimizeImage.d.ts +2 -1
  24. package/handlers/transform/optimizeImage.js +3 -0
  25. package/handlers/transform/optimizeImage.js.map +1 -0
  26. package/handlers/transform/transformImage.d.ts +5 -4
  27. package/handlers/transform/transformImage.js +3 -3
  28. package/handlers/transform/transformImage.js.map +1 -0
  29. package/handlers/transform/utils.d.ts +2 -2
  30. package/handlers/transform/utils.js.map +1 -0
  31. package/handlers/types.d.ts +8 -0
  32. package/handlers/types.js +5 -0
  33. package/handlers/types.js.map +1 -0
  34. package/handlers/utils/getEnvironment.js.map +1 -0
  35. package/handlers/utils/getObjectParams.d.ts +3 -4
  36. package/handlers/utils/getObjectParams.js +0 -2
  37. package/handlers/utils/getObjectParams.js.map +1 -0
  38. package/handlers/utils/index.d.ts +0 -1
  39. package/handlers/utils/index.js +0 -8
  40. package/handlers/utils/index.js.map +1 -0
  41. package/package.json +28 -27
  42. package/plugins/crud/files/validation.js.map +1 -0
  43. package/plugins/crud/files.crud.d.ts +1 -1
  44. package/plugins/crud/files.crud.js +34 -24
  45. package/plugins/crud/files.crud.js.map +1 -0
  46. package/plugins/crud/settings.crud.d.ts +1 -1
  47. package/plugins/crud/settings.crud.js +5 -4
  48. package/plugins/crud/settings.crud.js.map +1 -0
  49. package/plugins/crud/system.crud.d.ts +1 -1
  50. package/plugins/crud/system.crud.js +17 -5
  51. package/plugins/crud/system.crud.js.map +1 -0
  52. package/plugins/crud/utils/checkBasePermissions.js +1 -1
  53. package/plugins/crud/utils/checkBasePermissions.js.map +1 -0
  54. package/plugins/crud/utils/createFileModel.d.ts +3 -0
  55. package/plugins/crud/utils/createFileModel.js +13 -0
  56. package/plugins/crud/utils/createFileModel.js.map +1 -0
  57. package/plugins/crud/utils/lifecycleEvents.d.ts +2 -2
  58. package/plugins/crud/utils/lifecycleEvents.js +5 -0
  59. package/plugins/crud/utils/lifecycleEvents.js.map +1 -0
  60. package/plugins/definitions/FilePhysicalStoragePlugin.d.ts +10 -11
  61. package/plugins/definitions/FilePhysicalStoragePlugin.js.map +1 -0
  62. package/plugins/definitions/FilePlugin.d.ts +6 -3
  63. package/plugins/definitions/FilePlugin.js +8 -2
  64. package/plugins/definitions/FilePlugin.js.map +1 -0
  65. package/plugins/definitions/FileStorageTransformPlugin.d.ts +9 -9
  66. package/plugins/definitions/FileStorageTransformPlugin.js.map +1 -0
  67. package/plugins/definitions/FilesStorageOperationsProviderPlugin.d.ts +4 -4
  68. package/plugins/definitions/FilesStorageOperationsProviderPlugin.js.map +1 -0
  69. package/plugins/definitions/InstallationPlugin.d.ts +9 -9
  70. package/plugins/definitions/InstallationPlugin.js +4 -2
  71. package/plugins/definitions/InstallationPlugin.js.map +1 -0
  72. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.d.ts +4 -4
  73. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js.map +1 -0
  74. package/plugins/definitions/SystemStorageOperationsProviderPlugin.d.ts +4 -4
  75. package/plugins/definitions/SystemStorageOperationsProviderPlugin.js.map +1 -0
  76. package/plugins/graphql.js +20 -4
  77. package/plugins/graphql.js.map +1 -0
  78. package/plugins/index.d.ts +1 -1
  79. package/plugins/index.js.map +1 -0
  80. package/plugins/storage/FileStorage.d.ts +23 -24
  81. package/plugins/storage/FileStorage.js +25 -15
  82. package/plugins/storage/FileStorage.js.map +1 -0
  83. package/plugins/storage/index.d.ts +1 -1
  84. package/plugins/storage/index.js +6 -2
  85. package/plugins/storage/index.js.map +1 -0
  86. package/types.d.ts +16 -12
  87. package/types.js.map +1 -0
  88. package/utils.js.map +1 -0
  89. package/handlers/utils/createHandler.d.ts +0 -24
  90. package/handlers/utils/createHandler.js +0 -68
@@ -8,6 +8,11 @@ exports.default = void 0;
8
8
  var _handlerGraphql = require("@webiny/handler-graphql");
9
9
 
10
10
  const emptyResolver = () => ({});
11
+ /**
12
+ * Use any because it really can be any.
13
+ * TODO @ts-refactor maybe use generics at some point?
14
+ */
15
+
11
16
 
12
17
  const resolve = async fn => {
13
18
  try {
@@ -60,6 +65,7 @@ const plugin = {
60
65
  code: String
61
66
  message: String
62
67
  data: JSON
68
+ stack: String
63
69
  }
64
70
 
65
71
  type FileListResponse {
@@ -99,11 +105,13 @@ const plugin = {
99
105
  type FileManagerSettings {
100
106
  uploadMinFileSize: Number
101
107
  uploadMaxFileSize: Number
108
+ srcPrefix: String
102
109
  }
103
110
 
104
111
  input FileManagerSettingsInput {
105
112
  uploadMinFileSize: Number
106
113
  uploadMaxFileSize: Number
114
+ srcPrefix: String
107
115
  }
108
116
 
109
117
  type FileManagerSettingsResponse {
@@ -118,8 +126,16 @@ const plugin = {
118
126
  tag: String
119
127
  tag_in: [String!]
120
128
  tag_and_in: [String!]
129
+ tag_startsWith: String
130
+ tag_not_startsWith: String
121
131
  id_in: [ID!]
122
132
  id: ID
133
+ createdBy: ID
134
+ }
135
+
136
+ input TagWhereInput {
137
+ tag_startsWith: String
138
+ tag_not_startsWith: String
123
139
  }
124
140
 
125
141
  type FmQuery {
@@ -135,7 +151,7 @@ const plugin = {
135
151
  where: FileWhereInput
136
152
  ): FileListResponse
137
153
 
138
- listTags: [String]
154
+ listTags(where: TagWhereInput): [String]
139
155
 
140
156
  # Get installed version
141
157
  version: String
@@ -178,7 +194,7 @@ const plugin = {
178
194
  File: {
179
195
  async src(file, _, context) {
180
196
  const settings = await context.fileManager.settings.getSettings();
181
- return settings.srcPrefix + file.key;
197
+ return ((settings === null || settings === void 0 ? void 0 : settings.srcPrefix) || "") + file.key;
182
198
  }
183
199
 
184
200
  },
@@ -212,12 +228,12 @@ const plugin = {
212
228
 
213
229
  async version(_, __, context) {
214
230
  const {
215
- i18nContent,
231
+ i18n,
216
232
  tenancy,
217
233
  fileManager
218
234
  } = context;
219
235
 
220
- if (!tenancy.getCurrentTenant() || !i18nContent.getLocale()) {
236
+ if (!tenancy.getCurrentTenant() || !i18n.getContentLocale()) {
221
237
  return null;
222
238
  }
223
239
 
@@ -0,0 +1 @@
1
+ {"version":3,"names":["emptyResolver","resolve","fn","Response","e","ErrorResponse","plugin","type","schema","typeDefs","resolvers","File","src","file","_","context","settings","fileManager","getSettings","srcPrefix","key","Query","Mutation","FmQuery","getFile","args","files","id","listFiles","data","meta","ListResponse","listTags","error","version","__","i18n","tenancy","getCurrentTenant","getContentLocale","system","getVersion","FmMutation","createFile","updateFile","createFiles","createFilesInBatch","deleteFile","storage","delete","install","upgrade","updateSettings"],"sources":["graphql.ts"],"sourcesContent":["import { Response, ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { FileManagerContext, FilesListOpts } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/types\";\n\nconst emptyResolver = () => ({});\n\n/**\n * Use any because it really can be any.\n * TODO @ts-refactor maybe use generics at some point?\n */\ninterface ResolveCallable {\n (): Promise<any>;\n}\n\nconst resolve = async (fn: ResolveCallable) => {\n try {\n return new Response(await fn());\n } catch (e) {\n return new ErrorResponse(e);\n }\n};\n\nconst plugin: GraphQLSchemaPlugin<FileManagerContext> = {\n type: \"graphql-schema\",\n schema: {\n typeDefs: /* GraphQL */ `\n type FmCreatedBy {\n id: ID\n displayName: String\n }\n\n input FileInput {\n key: String\n name: String\n size: Int\n type: String\n tags: [String]\n meta: JSON\n }\n\n type UploadFileResponseDataFile {\n name: String\n type: String\n size: Int\n key: String\n }\n\n type UploadFileResponseData {\n # Contains data that is necessary for initiating a file upload.\n data: JSON\n file: UploadFileResponseDataFile\n }\n\n type FileListMeta {\n cursor: String\n totalCount: Int\n hasMoreItems: Boolean\n }\n\n type FileError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type FileListResponse {\n data: [File]\n meta: FileListMeta\n error: FileError\n }\n\n type FileResponse {\n data: File\n error: FileError\n }\n\n type CreateFilesResponse {\n data: [File]!\n error: FileError\n }\n\n type File {\n id: ID\n key: String\n name: String\n size: Int\n type: String\n src: String\n tags: [String]\n meta: JSON\n createdOn: DateTime\n createdBy: FmCreatedBy\n }\n\n type FileManagerBooleanResponse {\n data: Boolean\n error: FileError\n }\n\n type FileManagerSettings {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n input FileManagerSettingsInput {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n type FileManagerSettingsResponse {\n data: FileManagerSettings\n error: FileError\n }\n\n input FileWhereInput {\n search: String\n type: String\n type_in: [String!]\n tag: String\n tag_in: [String!]\n tag_and_in: [String!]\n tag_startsWith: String\n tag_not_startsWith: String\n id_in: [ID!]\n id: ID\n createdBy: ID\n }\n\n input TagWhereInput {\n tag_startsWith: String\n tag_not_startsWith: String\n }\n\n type FmQuery {\n getFile(id: ID, where: JSON, sort: String): FileResponse\n\n listFiles(\n limit: Int\n after: String\n types: [String]\n tags: [String]\n ids: [ID]\n search: String\n where: FileWhereInput\n ): FileListResponse\n\n listTags(where: TagWhereInput): [String]\n\n # Get installed version\n version: String\n\n getSettings: FileManagerSettingsResponse\n }\n\n type FilesDeleteResponse {\n data: Boolean\n error: FileError\n }\n\n type FmMutation {\n createFile(data: FileInput!): FileResponse\n createFiles(data: [FileInput]!): CreateFilesResponse\n updateFile(id: ID!, data: FileInput!): FileResponse\n deleteFile(id: ID!): FilesDeleteResponse\n\n # Install File manager\n install(srcPrefix: String): FileManagerBooleanResponse\n\n upgrade(version: String!): FileManagerBooleanResponse\n\n updateSettings(data: FileManagerSettingsInput): FileManagerSettingsResponse\n }\n\n input FilesInstallInput {\n srcPrefix: String!\n }\n\n extend type Query {\n fileManager: FmQuery\n }\n\n extend type Mutation {\n fileManager: FmMutation\n }\n `,\n resolvers: {\n File: {\n async src(file, _, context: FileManagerContext) {\n const settings = await context.fileManager.settings.getSettings();\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmQuery: {\n getFile(_, args: any, context) {\n return resolve(() => context.fileManager.files.getFile(args.id));\n },\n async listFiles(_, args: FilesListOpts, context) {\n try {\n const [data, meta] = await context.fileManager.files.listFiles(args);\n return new ListResponse(data, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n async listTags(_, args: any, context) {\n try {\n return await context.fileManager.files.listTags(args || {});\n } catch (error) {\n return new ErrorResponse(error);\n }\n },\n async version(_, __, context) {\n const { i18n, tenancy, fileManager } = context;\n if (!tenancy.getCurrentTenant() || !i18n.getContentLocale()) {\n return null;\n }\n\n return await fileManager.system.getVersion();\n },\n async getSettings(_, __, context) {\n return resolve(() => context.fileManager.settings.getSettings());\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n return resolve(() => context.fileManager.files.createFile(args.data));\n },\n async updateFile(_, args: any, context) {\n return resolve(() => context.fileManager.files.updateFile(args.id, args.data));\n },\n async createFiles(_, args: any, context) {\n return resolve(() => context.fileManager.files.createFilesInBatch(args.data));\n },\n async deleteFile(_, args: any, context) {\n return resolve(async () => {\n const file = await context.fileManager.files.getFile(args.id);\n return await context.fileManager.storage.delete({\n id: file.id,\n key: file.key\n });\n });\n },\n async install(_, args: any, context) {\n return resolve(() =>\n context.fileManager.system.install({ srcPrefix: args.srcPrefix })\n );\n },\n async upgrade(_, args: any, context) {\n return resolve(() => context.fileManager.system.upgrade(args.version));\n },\n async updateSettings(_, args: any, context) {\n return resolve(() => context.fileManager.settings.updateSettings(args.data));\n }\n }\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;;AAAA;;AAIA,MAAMA,aAAa,GAAG,OAAO,EAAP,CAAtB;AAEA;AACA;AACA;AACA;;;AAKA,MAAMC,OAAO,GAAG,MAAOC,EAAP,IAA+B;EAC3C,IAAI;IACA,OAAO,IAAIC,wBAAJ,CAAa,MAAMD,EAAE,EAArB,CAAP;EACH,CAFD,CAEE,OAAOE,CAAP,EAAU;IACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;EACH;AACJ,CAND;;AAQA,MAAME,MAA+C,GAAG;EACpDC,IAAI,EAAE,gBAD8C;EAEpDC,MAAM,EAAE;IACJC,QAAQ;IAAE;IAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAnKY;IAoKJC,SAAS,EAAE;MACPC,IAAI,EAAE;QACF,MAAM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"}
@@ -1,2 +1,2 @@
1
- declare const _default: () => (import("@webiny/handler-graphql/types").GraphQLSchemaPlugin<import("../types").FileManagerContext> | import("./definitions/FilePlugin").FilePlugin[] | import("@webiny/handler/plugins/ContextPlugin").ContextPlugin<import("../types").FileManagerContext>)[];
1
+ declare const _default: () => (import("@webiny/handler-graphql/types").GraphQLSchemaPlugin<import("../types").FileManagerContext> | import("./definitions/FilePlugin").FilePlugin[] | import("@webiny/api").ContextPlugin<import("../types").FileManagerContext>)[];
2
2
  export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["systemCRUD","settingsCRUD","filesCRUD","storage","graphql","fileValidationPlugin"],"sources":["index.ts"],"sourcesContent":["import graphql from \"./graphql\";\nimport filesCRUD from \"./crud/files.crud\";\nimport fileValidationPlugin from \"./crud/files/validation\";\nimport settingsCRUD from \"./crud/settings.crud\";\nimport systemCRUD from \"./crud/system.crud\";\nimport storage from \"./storage\";\n\nexport default () => [\n systemCRUD,\n settingsCRUD,\n filesCRUD,\n storage,\n graphql,\n fileValidationPlugin()\n];\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;eAEe,MAAM,CACjBA,eADiB,EAEjBC,iBAFiB,EAGjBC,cAHiB,EAIjBC,gBAJiB,EAKjBC,gBALiB,EAMjB,IAAAC,mBAAA,GANiB,C"}
@@ -1,31 +1,30 @@
1
1
  /// <reference types="node" />
2
2
  import { FileManagerContext } from "../../types";
3
- export declare type Args = {
4
- name: string;
5
- type: string;
6
- size: number;
3
+ export declare type Result = Record<string, any>;
4
+ export interface FileStorageUploadParams {
7
5
  buffer: Buffer;
8
- keyPrefix?: string;
9
- hideInFileManager?: boolean;
6
+ hideInFileManager: boolean | string;
10
7
  tags?: string[];
11
- };
12
- export declare type Result = Record<string, any>;
13
- export interface FileStoragePlugin {
14
- upload: (args: Args) => Promise<Result>;
15
- delete: (args: {
16
- key: string;
17
- }) => Promise<void>;
8
+ size: number;
9
+ name: string;
10
+ keyPrefix: string;
11
+ type: string;
18
12
  }
19
- export declare class FileStorage {
20
- storagePlugin: FileStoragePlugin;
13
+ export interface FileStorageDeleteParams {
14
+ id: string;
15
+ key: string;
16
+ }
17
+ export interface FileStorageUploadMultipleParams {
18
+ files: FileStorageUploadParams[];
19
+ }
20
+ export interface FileStorageParams {
21
21
  context: FileManagerContext;
22
- constructor({ context }: {
23
- context: any;
24
- });
25
- upload(args: any): Promise<Result>;
26
- uploadFiles(args: any): Promise<import("../../types").File[]>;
27
- delete(args: {
28
- id: string;
29
- key: string;
30
- }): Promise<boolean>;
22
+ }
23
+ export declare class FileStorage {
24
+ private readonly storagePlugin;
25
+ private readonly context;
26
+ constructor({ context }: FileStorageParams);
27
+ upload(params: FileStorageUploadParams): Promise<Result>;
28
+ uploadFiles(params: FileStorageUploadMultipleParams): Promise<import("../../types").File[]>;
29
+ delete(params: FileStorageDeleteParams): Promise<boolean>;
31
30
  }
@@ -11,9 +11,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
11
11
 
12
12
  var _error = _interopRequireDefault(require("@webiny/error"));
13
13
 
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
15
 
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
17
 
18
18
  const storagePluginType = "api-file-manager-storage";
19
19
 
@@ -23,21 +23,27 @@ class FileStorage {
23
23
  }) {
24
24
  (0, _defineProperty2.default)(this, "storagePlugin", void 0);
25
25
  (0, _defineProperty2.default)(this, "context", void 0);
26
- this.storagePlugin = context.plugins.byType(storagePluginType).pop();
26
+ const storagePlugin = context.plugins.byType(storagePluginType).pop();
27
27
 
28
- if (!this.storagePlugin) {
28
+ if (!storagePlugin) {
29
29
  throw new _error.default(`Missing plugin of type "${storagePluginType}".`, "STORAGE_PLUGIN_ERROR");
30
30
  }
31
31
 
32
+ this.storagePlugin = storagePlugin;
32
33
  this.context = context;
33
34
  }
34
35
 
35
- async upload(args) {
36
- const settings = await this.context.fileManager.settings.getSettings(); // Add file to cloud storage.
36
+ async upload(params) {
37
+ const settings = await this.context.fileManager.settings.getSettings();
38
+
39
+ if (!settings) {
40
+ throw new _error.default("Missing File Manager Settings.", "FILE_MANAGER_ERROR");
41
+ } // Add file to cloud storage.
42
+
37
43
 
38
44
  const {
39
45
  file: fileData
40
- } = await this.storagePlugin.upload(_objectSpread(_objectSpread({}, args), {}, {
46
+ } = await this.storagePlugin.upload(_objectSpread(_objectSpread({}, params), {}, {
41
47
  settings
42
48
  }));
43
49
  const {
@@ -46,19 +52,23 @@ class FileStorage {
46
52
 
47
53
  return await fileManager.files.createFile(_objectSpread(_objectSpread({}, fileData), {}, {
48
54
  meta: {
49
- private: Boolean(args.hideInFileManager)
55
+ private: Boolean(params.hideInFileManager)
50
56
  },
51
- tags: Array.isArray(args.tags) ? args.tags : []
57
+ tags: Array.isArray(params.tags) ? params.tags : []
52
58
  }));
53
59
  }
54
60
 
55
- async uploadFiles(args) {
56
- const settings = await this.context.fileManager.settings.getSettings(); // Upload files to cloud storage.
61
+ async uploadFiles(params) {
62
+ const settings = await this.context.fileManager.settings.getSettings();
63
+
64
+ if (!settings) {
65
+ throw new _error.default("Missing File Manager Settings.", "FILE_MANAGER_ERROR");
66
+ } // Upload files to cloud storage.
67
+
57
68
 
58
69
  const promises = [];
59
70
 
60
- for (let i = 0; i < args.files.length; i++) {
61
- const item = args.files[i];
71
+ for (const item of params.files) {
62
72
  promises.push(this.storagePlugin.upload(_objectSpread(_objectSpread({}, item), {}, {
63
73
  settings
64
74
  })));
@@ -74,11 +84,11 @@ class FileStorage {
74
84
  return fileManager.files.createFilesInBatch(filesData);
75
85
  }
76
86
 
77
- async delete(args) {
87
+ async delete(params) {
78
88
  const {
79
89
  id,
80
90
  key
81
- } = args;
91
+ } = params;
82
92
  const {
83
93
  fileManager
84
94
  } = this.context; // Delete file from cloud storage.
@@ -0,0 +1 @@
1
+ {"version":3,"names":["storagePluginType","FileStorage","constructor","context","storagePlugin","plugins","byType","pop","WebinyError","upload","params","settings","fileManager","getSettings","file","fileData","files","createFile","meta","private","Boolean","hideInFileManager","tags","Array","isArray","uploadFiles","promises","item","push","uploadFileResponses","Promise","all","filesData","map","response","createFilesInBatch","delete","id","key","deleteFile"],"sources":["FileStorage.ts"],"sourcesContent":["import { FileManagerContext } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { FilePhysicalStoragePlugin } from \"~/plugins/definitions/FilePhysicalStoragePlugin\";\n\nexport type Result = Record<string, any>;\n\nconst storagePluginType = \"api-file-manager-storage\";\n\nexport interface FileStorageUploadParams {\n buffer: Buffer;\n hideInFileManager: boolean | string;\n tags?: string[];\n size: number;\n name: string;\n keyPrefix: string;\n type: string;\n}\nexport interface FileStorageDeleteParams {\n id: string;\n key: string;\n}\n\nexport interface FileStorageUploadMultipleParams {\n files: FileStorageUploadParams[];\n}\n\nexport interface FileStorageParams {\n context: FileManagerContext;\n}\nexport class FileStorage {\n private readonly storagePlugin: FilePhysicalStoragePlugin;\n private readonly context: FileManagerContext;\n\n constructor({ context }: FileStorageParams) {\n const storagePlugin = context.plugins\n .byType<FilePhysicalStoragePlugin>(storagePluginType)\n .pop();\n if (!storagePlugin) {\n throw new WebinyError(\n `Missing plugin of type \"${storagePluginType}\".`,\n \"STORAGE_PLUGIN_ERROR\"\n );\n }\n this.storagePlugin = storagePlugin;\n this.context = context;\n }\n\n async upload(params: FileStorageUploadParams): Promise<Result> {\n const settings = await this.context.fileManager.settings.getSettings();\n if (!settings) {\n throw new WebinyError(\"Missing File Manager Settings.\", \"FILE_MANAGER_ERROR\");\n }\n // Add file to cloud storage.\n const { file: fileData } = await this.storagePlugin.upload({\n ...params,\n settings\n });\n\n const { fileManager } = this.context;\n\n // Save file in DB.\n return await fileManager.files.createFile({\n ...(fileData as any),\n meta: {\n private: Boolean(params.hideInFileManager)\n },\n tags: Array.isArray(params.tags) ? params.tags : []\n });\n }\n\n async uploadFiles(params: FileStorageUploadMultipleParams) {\n const settings = await this.context.fileManager.settings.getSettings();\n if (!settings) {\n throw new WebinyError(\"Missing File Manager Settings.\", \"FILE_MANAGER_ERROR\");\n }\n // Upload files to cloud storage.\n const promises = [];\n for (const item of params.files) {\n promises.push(\n this.storagePlugin.upload({\n ...item,\n settings\n })\n );\n }\n // Wait for all to resolve.\n const uploadFileResponses = await Promise.all(promises);\n\n const filesData = uploadFileResponses.map(response => response.file);\n\n const { fileManager } = this.context;\n // Save files in DB.\n return fileManager.files.createFilesInBatch(filesData);\n }\n\n async delete(params: FileStorageDeleteParams) {\n const { id, key } = params;\n const { fileManager } = this.context;\n // Delete file from cloud storage.\n await this.storagePlugin.delete({\n key\n });\n // Delete file from the DB.\n return await fileManager.files.deleteFile(id);\n }\n}\n"],"mappings":";;;;;;;;;;;AACA;;;;;;AAKA,MAAMA,iBAAiB,GAAG,0BAA1B;;AAuBO,MAAMC,WAAN,CAAkB;EAIrBC,WAAW,CAAC;IAAEC;EAAF,CAAD,EAAiC;IAAA;IAAA;IACxC,MAAMC,aAAa,GAAGD,OAAO,CAACE,OAAR,CACjBC,MADiB,CACiBN,iBADjB,EAEjBO,GAFiB,EAAtB;;IAGA,IAAI,CAACH,aAAL,EAAoB;MAChB,MAAM,IAAII,cAAJ,CACD,2BAA0BR,iBAAkB,IAD3C,EAEF,sBAFE,CAAN;IAIH;;IACD,KAAKI,aAAL,GAAqBA,aAArB;IACA,KAAKD,OAAL,GAAeA,OAAf;EACH;;EAEW,MAANM,MAAM,CAACC,MAAD,EAAmD;IAC3D,MAAMC,QAAQ,GAAG,MAAM,KAAKR,OAAL,CAAaS,WAAb,CAAyBD,QAAzB,CAAkCE,WAAlC,EAAvB;;IACA,IAAI,CAACF,QAAL,EAAe;MACX,MAAM,IAAIH,cAAJ,CAAgB,gCAAhB,EAAkD,oBAAlD,CAAN;IACH,CAJ0D,CAK3D;;;IACA,MAAM;MAAEM,IAAI,EAAEC;IAAR,IAAqB,MAAM,KAAKX,aAAL,CAAmBK,MAAnB,iCAC1BC,MAD0B;MAE7BC;IAF6B,GAAjC;IAKA,MAAM;MAAEC;IAAF,IAAkB,KAAKT,OAA7B,CAX2D,CAa3D;;IACA,OAAO,MAAMS,WAAW,CAACI,KAAZ,CAAkBC,UAAlB,iCACLF,QADK;MAETG,IAAI,EAAE;QACFC,OAAO,EAAEC,OAAO,CAACV,MAAM,CAACW,iBAAR;MADd,CAFG;MAKTC,IAAI,EAAEC,KAAK,CAACC,OAAN,CAAcd,MAAM,CAACY,IAArB,IAA6BZ,MAAM,CAACY,IAApC,GAA2C;IALxC,GAAb;EAOH;;EAEgB,MAAXG,WAAW,CAACf,MAAD,EAA0C;IACvD,MAAMC,QAAQ,GAAG,MAAM,KAAKR,OAAL,CAAaS,WAAb,CAAyBD,QAAzB,CAAkCE,WAAlC,EAAvB;;IACA,IAAI,CAACF,QAAL,EAAe;MACX,MAAM,IAAIH,cAAJ,CAAgB,gCAAhB,EAAkD,oBAAlD,CAAN;IACH,CAJsD,CAKvD;;;IACA,MAAMkB,QAAQ,GAAG,EAAjB;;IACA,KAAK,MAAMC,IAAX,IAAmBjB,MAAM,CAACM,KAA1B,EAAiC;MAC7BU,QAAQ,CAACE,IAAT,CACI,KAAKxB,aAAL,CAAmBK,MAAnB,iCACOkB,IADP;QAEIhB;MAFJ,GADJ;IAMH,CAdsD,CAevD;;;IACA,MAAMkB,mBAAmB,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYL,QAAZ,CAAlC;IAEA,MAAMM,SAAS,GAAGH,mBAAmB,CAACI,GAApB,CAAwBC,QAAQ,IAAIA,QAAQ,CAACpB,IAA7C,CAAlB;IAEA,MAAM;MAAEF;IAAF,IAAkB,KAAKT,OAA7B,CApBuD,CAqBvD;;IACA,OAAOS,WAAW,CAACI,KAAZ,CAAkBmB,kBAAlB,CAAqCH,SAArC,CAAP;EACH;;EAEW,MAANI,MAAM,CAAC1B,MAAD,EAAkC;IAC1C,MAAM;MAAE2B,EAAF;MAAMC;IAAN,IAAc5B,MAApB;IACA,MAAM;MAAEE;IAAF,IAAkB,KAAKT,OAA7B,CAF0C,CAG1C;;IACA,MAAM,KAAKC,aAAL,CAAmBgC,MAAnB,CAA0B;MAC5BE;IAD4B,CAA1B,CAAN,CAJ0C,CAO1C;;IACA,OAAO,MAAM1B,WAAW,CAACI,KAAZ,CAAkBuB,UAAlB,CAA6BF,EAA7B,CAAb;EACH;;AA3EoB"}
@@ -1,4 +1,4 @@
1
1
  import { FileManagerContext } from "../../types";
2
- import { ContextPlugin } from "@webiny/handler/plugins/ContextPlugin";
2
+ import { ContextPlugin } from "@webiny/api";
3
3
  declare const fileStorageContextPlugin: ContextPlugin<FileManagerContext>;
4
4
  export default fileStorageContextPlugin;
@@ -5,12 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _ContextPlugin = require("@webiny/handler/plugins/ContextPlugin");
8
+ var _api = require("@webiny/api");
9
9
 
10
10
  var _FileStorage = require("./FileStorage");
11
11
 
12
- const fileStorageContextPlugin = new _ContextPlugin.ContextPlugin(async context => {
12
+ const fileStorageContextPlugin = new _api.ContextPlugin(async context => {
13
13
  if (!context.fileManager) {
14
+ /**
15
+ * We need to define the fileManager initial property as empty object.
16
+ * When casting as FileManagerContext, typescript is complaining.
17
+ */
14
18
  context.fileManager = {};
15
19
  }
16
20
 
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fileStorageContextPlugin","ContextPlugin","context","fileManager","storage","FileStorage"],"sources":["index.ts"],"sourcesContent":["import { FileManagerContext } from \"~/types\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { FileStorage } from \"./FileStorage\";\n\nconst fileStorageContextPlugin = new ContextPlugin<FileManagerContext>(async context => {\n if (!context.fileManager) {\n /**\n * We need to define the fileManager initial property as empty object.\n * When casting as FileManagerContext, typescript is complaining.\n */\n context.fileManager = {} as any;\n }\n context.fileManager.storage = new FileStorage({\n context\n });\n});\n\nexport default fileStorageContextPlugin;\n"],"mappings":";;;;;;;AACA;;AACA;;AAEA,MAAMA,wBAAwB,GAAG,IAAIC,kBAAJ,CAAsC,MAAMC,OAAN,IAAiB;EACpF,IAAI,CAACA,OAAO,CAACC,WAAb,EAA0B;IACtB;AACR;AACA;AACA;IACQD,OAAO,CAACC,WAAR,GAAsB,EAAtB;EACH;;EACDD,OAAO,CAACC,WAAR,CAAoBC,OAApB,GAA8B,IAAIC,wBAAJ,CAAgB;IAC1CH;EAD0C,CAAhB,CAA9B;AAGH,CAXgC,CAAjC;eAaeF,wB"}
package/types.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { BaseI18NContentContext } from "@webiny/api-i18n-content/types";
1
+ import { I18NContext } from "@webiny/api-i18n/types";
2
2
  import { FileStorage } from "./plugins/storage/FileStorage";
3
3
  import { TenancyContext } from "@webiny/api-tenancy/types";
4
4
  import { SecurityContext, SecurityPermission } from "@webiny/api-security/types";
5
- import { ContextInterface } from "@webiny/handler/types";
6
- export interface FileManagerContext extends ContextInterface, SecurityContext, TenancyContext, BaseI18NContentContext {
5
+ import { Context } from "@webiny/api/types";
6
+ export interface FileManagerContext extends Context, SecurityContext, TenancyContext, I18NContext {
7
7
  fileManager: {
8
8
  files: FilesCRUD;
9
9
  settings: SettingsCRUD;
@@ -39,7 +39,7 @@ export interface File {
39
39
  }
40
40
  export interface CreatedBy {
41
41
  id: string;
42
- displayName: string;
42
+ displayName: string | null;
43
43
  type: string;
44
44
  }
45
45
  export interface FileInput {
@@ -48,7 +48,7 @@ export interface FileInput {
48
48
  size: number;
49
49
  type: string;
50
50
  meta: Record<string, any>;
51
- tags: [string];
51
+ tags: string[];
52
52
  }
53
53
  export interface FileListWhereParams {
54
54
  search?: string;
@@ -71,13 +71,16 @@ export interface FilesListOpts {
71
71
  sort?: string[];
72
72
  }
73
73
  export interface FileListMeta {
74
- cursor: string;
74
+ cursor: string | null;
75
75
  totalCount: number;
76
+ hasMoreItems: boolean;
76
77
  }
77
78
  interface FilesCrudListTagsWhere {
78
79
  tag?: string;
79
80
  tag_contains?: string;
80
81
  tag_in?: string[];
82
+ tag_not_startsWith?: string;
83
+ tag_startsWith?: string;
81
84
  }
82
85
  interface FilesCrudListTagsParams {
83
86
  where?: FilesCrudListTagsWhere;
@@ -94,7 +97,7 @@ export interface FilesCRUD {
94
97
  createFilesInBatch(data: FileInput[]): Promise<File[]>;
95
98
  }
96
99
  export interface SystemCRUD {
97
- getVersion(): Promise<string>;
100
+ getVersion(): Promise<string | null>;
98
101
  setVersion(version: string): Promise<void>;
99
102
  install(args: {
100
103
  srcPrefix: string;
@@ -109,9 +112,10 @@ export interface FileManagerSettings {
109
112
  }
110
113
  export interface FileManagerSystem {
111
114
  version: string;
115
+ tenant: string;
112
116
  }
113
117
  export declare type SettingsCRUD = {
114
- getSettings(): Promise<FileManagerSettings>;
118
+ getSettings(): Promise<FileManagerSettings | null>;
115
119
  createSettings(data?: Partial<FileManagerSettings>): Promise<FileManagerSettings>;
116
120
  updateSettings(data: Partial<FileManagerSettings>): Promise<FileManagerSettings>;
117
121
  deleteSettings(): Promise<boolean>;
@@ -293,10 +297,10 @@ export interface FileManagerFilesStorageOperationsListParams {
293
297
  * @category FilesStorageOperations
294
298
  * @category FilesStorageOperationsParams
295
299
  */
296
- interface FileManagerFilesStorageOperationsListResponseMeta {
300
+ export interface FileManagerFilesStorageOperationsListResponseMeta {
297
301
  hasMoreItems: boolean;
298
302
  totalCount: number;
299
- cursor: string;
303
+ cursor: string | null;
300
304
  }
301
305
  export declare type FileManagerFilesStorageOperationsListResponse = [
302
306
  File[],
@@ -332,11 +336,11 @@ export interface FileManagerFilesStorageOperations {
332
336
  /**
333
337
  * Insert the file data into the database.
334
338
  */
335
- create: (params: FileManagerFilesStorageOperationsCreateParams) => Promise<File | null>;
339
+ create: (params: FileManagerFilesStorageOperationsCreateParams) => Promise<File>;
336
340
  /**
337
341
  * Update the file data in the database.
338
342
  */
339
- update: (params: FileManagerFilesStorageOperationsUpdateParams) => Promise<File | null>;
343
+ update: (params: FileManagerFilesStorageOperationsUpdateParams) => Promise<File>;
340
344
  /**
341
345
  * Delete the file from the database.
342
346
  */
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { I18NContext } from \"@webiny/api-i18n/types\";\nimport { FileStorage } from \"./plugins/storage/FileStorage\";\nimport { TenancyContext } from \"@webiny/api-tenancy/types\";\nimport { SecurityContext, SecurityPermission } from \"@webiny/api-security/types\";\nimport { Context } from \"@webiny/api/types\";\n\nexport interface FileManagerContext extends Context, SecurityContext, TenancyContext, I18NContext {\n fileManager: {\n files: FilesCRUD;\n settings: SettingsCRUD;\n storage: FileStorage;\n system: SystemCRUD;\n };\n}\n\nexport interface FilePermission extends SecurityPermission {\n name: \"fm.file\";\n rwd?: string;\n own?: boolean;\n}\n\nexport interface File {\n id: string;\n key: string;\n size: number;\n type: string;\n name: string;\n meta: Record<string, any>;\n tags: string[];\n createdOn: string;\n createdBy: CreatedBy;\n /**\n * Added with new storage operations refactoring.\n */\n tenant: string;\n locale: string;\n webinyVersion: string;\n /**\n * User can add new fields to the File object so we must allow it in the types.\n */\n [key: string]: any;\n}\n\nexport interface CreatedBy {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface FileInput {\n key: string;\n name: string;\n size: number;\n type: string;\n meta: Record<string, any>;\n tags: string[];\n}\n\nexport interface FileListWhereParams {\n search?: string;\n type?: string;\n type_in?: string[];\n tag?: string;\n tag_in?: string[];\n tag_and_in?: string[];\n id_in?: string[];\n id?: string;\n}\nexport interface FilesListOpts {\n search?: string;\n types?: string[];\n tags?: string[];\n ids?: string[];\n limit?: number;\n after?: string;\n where?: FileListWhereParams;\n sort?: string[];\n}\n\nexport interface FileListMeta {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\ninterface FilesCrudListTagsWhere {\n tag?: string;\n tag_contains?: string;\n tag_in?: string[];\n tag_not_startsWith?: string;\n tag_startsWith?: string;\n}\ninterface FilesCrudListTagsParams {\n where?: FilesCrudListTagsWhere;\n limit?: number;\n after?: string;\n}\n\nexport interface FilesCRUD {\n getFile(id: string): Promise<File>;\n listFiles(opts?: FilesListOpts): Promise<[File[], FileListMeta]>;\n listTags(params: FilesCrudListTagsParams): Promise<string[]>;\n createFile(data: FileInput): Promise<File>;\n updateFile(id: string, data: Partial<FileInput>): Promise<File>;\n deleteFile(id: string): Promise<boolean>;\n createFilesInBatch(data: FileInput[]): Promise<File[]>;\n}\n\nexport interface SystemCRUD {\n getVersion(): Promise<string | null>;\n setVersion(version: string): Promise<void>;\n install(args: { srcPrefix: string }): Promise<boolean>;\n upgrade(version: string, data?: Record<string, any>): Promise<boolean>;\n}\n\nexport interface FileManagerSettings {\n key: string;\n uploadMinFileSize: number;\n uploadMaxFileSize: number;\n srcPrefix: string;\n}\n\nexport interface FileManagerSystem {\n version: string;\n tenant: string;\n}\n\nexport type SettingsCRUD = {\n getSettings(): Promise<FileManagerSettings | null>;\n createSettings(data?: Partial<FileManagerSettings>): Promise<FileManagerSettings>;\n updateSettings(data: Partial<FileManagerSettings>): Promise<FileManagerSettings>;\n deleteSettings(): Promise<boolean>;\n};\n/********\n * Storage operations\n *******/\n\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n * @category SystemStorageOperationsParams\n */\nexport interface FileManagerSystemStorageOperationsUpdateParams {\n /**\n * The system data to be updated.\n */\n original: FileManagerSystem;\n /**\n * The system data with the updated fields.\n */\n data: FileManagerSystem;\n}\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n * @category SystemStorageOperationsParams\n */\nexport interface FileManagerSystemStorageOperationsCreateParams {\n /**\n * The system fields.\n */\n data: FileManagerSystem;\n}\n\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n */\nexport interface FileManagerSystemStorageOperations {\n /**\n * Get the FileManager system data.\n */\n get: () => Promise<FileManagerSystem | null>;\n /**\n * Update the FileManager system data..\n */\n update: (params: FileManagerSystemStorageOperationsUpdateParams) => Promise<FileManagerSystem>;\n /**\n * Create the FileManagerSystemData\n */\n create: (params: FileManagerSystemStorageOperationsCreateParams) => Promise<FileManagerSystem>;\n}\n\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n * @category SettingsStorageOperationsParams\n */\nexport interface FileManagerSettingsStorageOperationsUpdateParams {\n /**\n * Original settings to be updated.\n */\n original: FileManagerSettings;\n /**\n * The settings with the updated fields.\n */\n data: FileManagerSettings;\n}\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n * @category SettingsStorageOperationsParams\n */\nexport interface FileManagerSettingsStorageOperationsCreateParams {\n /**\n * The settings fields.\n */\n data: FileManagerSettings;\n}\n\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n */\nexport interface FileManagerSettingsStorageOperations {\n /**\n * Get the FileManager system data.\n */\n get: () => Promise<FileManagerSettings | null>;\n /**\n * Create the FileManagerSettingsData\n */\n create: (\n params: FileManagerSettingsStorageOperationsCreateParams\n ) => Promise<FileManagerSettings>;\n /**\n * Update the FileManager system data..\n */\n update: (\n params: FileManagerSettingsStorageOperationsUpdateParams\n ) => Promise<FileManagerSettings>;\n /**\n * Delete the existing settings.\n */\n delete: () => Promise<void>;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsGetParams {\n where: {\n id: string;\n tenant: string;\n locale: string;\n };\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsCreateParams {\n file: File;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsUpdateParams {\n original: File;\n file: File;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsDeleteParams {\n file: File;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsCreateBatchParams {\n files: File[];\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListParamsWhere {\n id?: string;\n id_in?: string[];\n name?: string;\n name_contains?: string;\n tag?: string;\n tag_contains?: string;\n tag_in?: string[];\n createdBy?: string;\n locale: string;\n tenant: string;\n private?: boolean;\n type?: string;\n type_in?: string[];\n search?: string;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListParams {\n where: FileManagerFilesStorageOperationsListParamsWhere;\n sort: string[];\n limit: number;\n after: string | null;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListResponseMeta {\n hasMoreItems: boolean;\n totalCount: number;\n cursor: string | null;\n}\nexport type FileManagerFilesStorageOperationsListResponse = [\n File[],\n FileManagerFilesStorageOperationsListResponseMeta\n];\n\nexport type FileManagerFilesStorageOperationsTagsResponse = [\n string[],\n FileManagerFilesStorageOperationsListResponseMeta\n];\n\nexport interface FileManagerFilesStorageOperationsTagsParamsWhere extends FilesCrudListTagsWhere {\n locale: string;\n tenant: string;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsTagsParams {\n where: FileManagerFilesStorageOperationsTagsParamsWhere;\n limit: number;\n after?: string;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n */\nexport interface FileManagerFilesStorageOperations {\n /**\n * Get a single file with given ID from the storage.\n */\n get: (params: FileManagerFilesStorageOperationsGetParams) => Promise<File | null>;\n /**\n * Insert the file data into the database.\n */\n create: (params: FileManagerFilesStorageOperationsCreateParams) => Promise<File>;\n /**\n * Update the file data in the database.\n */\n update: (params: FileManagerFilesStorageOperationsUpdateParams) => Promise<File>;\n /**\n * Delete the file from the database.\n */\n delete: (params: FileManagerFilesStorageOperationsDeleteParams) => Promise<void>;\n /**\n * Store multiple files at once to the database.\n */\n createBatch: (params: FileManagerFilesStorageOperationsCreateBatchParams) => Promise<File[]>;\n /**\n * Get a list of files filtered by given parameters.\n */\n list: (\n params: FileManagerFilesStorageOperationsListParams\n ) => Promise<FileManagerFilesStorageOperationsListResponse>;\n /**\n * Get a list of all file tags filtered by given parameters.\n */\n tags: (\n params: FileManagerFilesStorageOperationsTagsParams\n ) => Promise<FileManagerFilesStorageOperationsTagsResponse>;\n}\n"],"mappings":""}
package/utils.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":["executeCallbacks","plugins","hook","args","plugin"],"sources":["utils.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins/types\";\n\ntype CallbackFallback = (args: any) => void | Promise<void>;\n\nexport const executeCallbacks = async <\n TCallbackFunction extends CallbackFallback = CallbackFallback\n>(\n plugins: Plugin[],\n hook: string,\n args: Parameters<TCallbackFunction>[0]\n) => {\n for (const plugin of plugins) {\n if (typeof plugin[hook] === \"function\") {\n await plugin[hook](args);\n }\n }\n};\n"],"mappings":";;;;;;;AAIO,MAAMA,gBAAgB,GAAG,OAG5BC,OAH4B,EAI5BC,IAJ4B,EAK5BC,IAL4B,KAM3B;EACD,KAAK,MAAMC,MAAX,IAAqBH,OAArB,EAA8B;IAC1B,IAAI,OAAOG,MAAM,CAACF,IAAD,CAAb,KAAwB,UAA5B,EAAwC;MACpC,MAAME,MAAM,CAACF,IAAD,CAAN,CAAaC,IAAb,CAAN;IACH;EACJ;AACJ,CAZM"}
@@ -1,24 +0,0 @@
1
- declare const _default: (handler: any) => (event: any) => Promise<{
2
- body: string;
3
- statusCode: number;
4
- headers: {
5
- "Cache-Control": string;
6
- "Access-Control-Allow-Origin": string;
7
- "Access-Control-Allow-Credentials": boolean;
8
- };
9
- isBase64Encoded?: undefined;
10
- } | {
11
- isBase64Encoded: boolean;
12
- statusCode: any;
13
- headers: any;
14
- body: any;
15
- } | {
16
- statusCode: number;
17
- headers: {
18
- "Access-Control-Allow-Origin": string;
19
- "Access-Control-Allow-Credentials": boolean;
20
- };
21
- body: string;
22
- isBase64Encoded?: undefined;
23
- }>;
24
- export default _default;
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
13
-
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
-
16
- /**
17
- * We need to respond with adequate CORS headers.
18
- * @type {{"Access-Control-Allow-Origin": string, "Access-Control-Allow-Credentials": boolean}}
19
- */
20
- const baseHeaders = {
21
- "Access-Control-Allow-Origin": "*",
22
- "Access-Control-Allow-Credentials": true
23
- };
24
- const DEFAULT_CACHE_MAX_AGE = 30758400; // 1 year
25
-
26
- var _default = handler => async event => {
27
- if (event.httpMethod === "OPTIONS") {
28
- return {
29
- body: "",
30
- statusCode: 204,
31
- headers: _objectSpread(_objectSpread({}, baseHeaders), {}, {
32
- "Cache-Control": "public, max-age=" + DEFAULT_CACHE_MAX_AGE
33
- })
34
- };
35
- }
36
-
37
- try {
38
- const {
39
- data,
40
- statusCode,
41
- headers = {}
42
- } = await handler(event);
43
- const isBuffer = Buffer.isBuffer(data);
44
- const body = isBuffer ? data.toString("base64") : JSON.stringify({
45
- error: false,
46
- data,
47
- message: null
48
- });
49
- return {
50
- isBase64Encoded: isBuffer,
51
- statusCode: statusCode || 200,
52
- headers: _objectSpread(_objectSpread({}, baseHeaders), headers),
53
- body
54
- };
55
- } catch (e) {
56
- return {
57
- statusCode: 500,
58
- headers: baseHeaders,
59
- body: JSON.stringify({
60
- error: true,
61
- data: null,
62
- message: e.message
63
- })
64
- };
65
- }
66
- };
67
-
68
- exports.default = _default;