@webiny/api-file-manager 0.0.0-unstable.e622468070 → 0.0.0-unstable.e6f0dc8ca7

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 (159) hide show
  1. package/domain/file/file.model.js +2 -1
  2. package/domain/file/file.model.js.map +1 -1
  3. package/domain/file/types.d.ts +2 -0
  4. package/domain/file/types.js.map +1 -1
  5. package/domain/permissionsSchema.d.ts +16 -0
  6. package/domain/permissionsSchema.js +19 -0
  7. package/domain/permissionsSchema.js.map +1 -0
  8. package/domain/settings/validation.d.ts +4 -12
  9. package/exports/api/file-manager/file.d.ts +12 -0
  10. package/exports/api/file-manager/file.js +14 -0
  11. package/exports/api/file-manager/file.js.map +1 -0
  12. package/exports/api/file-manager/permissions.d.ts +1 -0
  13. package/exports/api/file-manager/permissions.js +3 -0
  14. package/exports/api/file-manager/permissions.js.map +1 -0
  15. package/exports/api/file-manager/settings.d.ts +3 -0
  16. package/exports/api/file-manager/settings.js +5 -0
  17. package/exports/api/file-manager/settings.js.map +1 -0
  18. package/features/FileManagerFeature.d.ts +4 -1
  19. package/features/FileManagerFeature.js +2 -0
  20. package/features/FileManagerFeature.js.map +1 -1
  21. package/features/file/CreateFile/CreateFileUseCase.d.ts +4 -4
  22. package/features/file/CreateFile/CreateFileUseCase.js +7 -8
  23. package/features/file/CreateFile/CreateFileUseCase.js.map +1 -1
  24. package/features/file/CreateFile/abstractions.d.ts +3 -0
  25. package/features/file/CreateFile/abstractions.js +2 -0
  26. package/features/file/CreateFile/abstractions.js.map +1 -1
  27. package/features/file/CreateFile/events.d.ts +8 -6
  28. package/features/file/CreateFile/events.js +9 -5
  29. package/features/file/CreateFile/events.js.map +1 -1
  30. package/features/file/CreateFile/feature.d.ts +4 -1
  31. package/features/file/CreateFile/index.d.ts +1 -1
  32. package/features/file/CreateFile/index.js +1 -1
  33. package/features/file/CreateFile/index.js.map +1 -1
  34. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.d.ts +4 -4
  35. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js +6 -9
  36. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js.map +1 -1
  37. package/features/file/CreateFilesInBatch/abstractions.d.ts +2 -0
  38. package/features/file/CreateFilesInBatch/abstractions.js +2 -0
  39. package/features/file/CreateFilesInBatch/abstractions.js.map +1 -1
  40. package/features/file/CreateFilesInBatch/events.d.ts +8 -6
  41. package/features/file/CreateFilesInBatch/events.js +9 -5
  42. package/features/file/CreateFilesInBatch/events.js.map +1 -1
  43. package/features/file/CreateFilesInBatch/feature.d.ts +4 -1
  44. package/features/file/DeleteFile/DeleteFileUseCase.d.ts +4 -4
  45. package/features/file/DeleteFile/DeleteFileUseCase.js +6 -9
  46. package/features/file/DeleteFile/DeleteFileUseCase.js.map +1 -1
  47. package/features/file/DeleteFile/abstractions.d.ts +2 -0
  48. package/features/file/DeleteFile/abstractions.js +2 -0
  49. package/features/file/DeleteFile/abstractions.js.map +1 -1
  50. package/features/file/DeleteFile/events.d.ts +8 -6
  51. package/features/file/DeleteFile/events.js +9 -5
  52. package/features/file/DeleteFile/events.js.map +1 -1
  53. package/features/file/DeleteFile/feature.d.ts +4 -1
  54. package/features/file/DeleteFile/index.d.ts +1 -1
  55. package/features/file/DeleteFile/index.js +1 -1
  56. package/features/file/DeleteFile/index.js.map +1 -1
  57. package/features/file/FileUrlGenerator/abstractions.d.ts +1 -0
  58. package/features/file/FileUrlGenerator/abstractions.js +1 -0
  59. package/features/file/FileUrlGenerator/abstractions.js.map +1 -1
  60. package/features/file/GetFile/GetFileUseCase.d.ts +3 -3
  61. package/features/file/GetFile/GetFileUseCase.js +6 -14
  62. package/features/file/GetFile/GetFileUseCase.js.map +1 -1
  63. package/features/file/GetFile/abstractions.d.ts +2 -0
  64. package/features/file/GetFile/abstractions.js +2 -0
  65. package/features/file/GetFile/abstractions.js.map +1 -1
  66. package/features/file/GetFile/feature.d.ts +4 -1
  67. package/features/file/GetFileContents/abstractions.d.ts +20 -0
  68. package/features/file/GetFileContents/abstractions.js +4 -0
  69. package/features/file/GetFileContents/abstractions.js.map +1 -0
  70. package/features/file/GetFileContents/index.d.ts +1 -0
  71. package/features/file/GetFileContents/index.js +3 -0
  72. package/features/file/GetFileContents/index.js.map +1 -0
  73. package/features/file/ListFiles/ListFilesUseCase.d.ts +4 -4
  74. package/features/file/ListFiles/ListFilesUseCase.js +9 -12
  75. package/features/file/ListFiles/ListFilesUseCase.js.map +1 -1
  76. package/features/file/ListFiles/abstractions.d.ts +2 -0
  77. package/features/file/ListFiles/abstractions.js +2 -0
  78. package/features/file/ListFiles/abstractions.js.map +1 -1
  79. package/features/file/ListFiles/feature.d.ts +4 -1
  80. package/features/file/ListImagesByTagTool/ListImagesByTagTool.d.ts +27 -0
  81. package/features/file/ListImagesByTagTool/ListImagesByTagTool.js +39 -0
  82. package/features/file/ListImagesByTagTool/ListImagesByTagTool.js.map +1 -0
  83. package/features/file/ListImagesByTagTool/feature.d.ts +4 -0
  84. package/features/file/ListImagesByTagTool/feature.js +10 -0
  85. package/features/file/ListImagesByTagTool/feature.js.map +1 -0
  86. package/features/file/ListTags/ListTagsUseCase.d.ts +3 -3
  87. package/features/file/ListTags/ListTagsUseCase.js +5 -6
  88. package/features/file/ListTags/ListTagsUseCase.js.map +1 -1
  89. package/features/file/ListTags/abstractions.d.ts +2 -0
  90. package/features/file/ListTags/abstractions.js +2 -0
  91. package/features/file/ListTags/abstractions.js.map +1 -1
  92. package/features/file/ListTags/feature.d.ts +4 -1
  93. package/features/file/UpdateFile/UpdateFileUseCase.d.ts +5 -5
  94. package/features/file/UpdateFile/UpdateFileUseCase.js +16 -18
  95. package/features/file/UpdateFile/UpdateFileUseCase.js.map +1 -1
  96. package/features/file/UpdateFile/abstractions.d.ts +3 -0
  97. package/features/file/UpdateFile/abstractions.js +2 -0
  98. package/features/file/UpdateFile/abstractions.js.map +1 -1
  99. package/features/file/UpdateFile/events.d.ts +8 -6
  100. package/features/file/UpdateFile/events.js +9 -5
  101. package/features/file/UpdateFile/events.js.map +1 -1
  102. package/features/file/UpdateFile/feature.d.ts +4 -1
  103. package/features/file/UpdateFile/index.d.ts +1 -1
  104. package/features/file/UpdateFile/index.js +1 -1
  105. package/features/file/UpdateFile/index.js.map +1 -1
  106. package/features/file/shared/EntryToFileMapper.js +1 -0
  107. package/features/file/shared/EntryToFileMapper.js.map +1 -1
  108. package/features/file/shared/FileInputToEntryInputMapper.js +1 -0
  109. package/features/file/shared/FileInputToEntryInputMapper.js.map +1 -1
  110. package/features/file/shared/FileToEntryMapper.js +1 -0
  111. package/features/file/shared/FileToEntryMapper.js.map +1 -1
  112. package/features/permissions/abstractions.d.ts +21 -0
  113. package/features/permissions/abstractions.js +5 -0
  114. package/features/permissions/abstractions.js.map +1 -0
  115. package/features/permissions/feature.d.ts +4 -0
  116. package/features/permissions/feature.js +6 -0
  117. package/features/permissions/feature.js.map +1 -0
  118. package/features/settings/GetSettings/abstractions.d.ts +1 -0
  119. package/features/settings/GetSettings/abstractions.js +1 -0
  120. package/features/settings/GetSettings/abstractions.js.map +1 -1
  121. package/features/settings/GetSettings/feature.d.ts +4 -1
  122. package/features/settings/SettingsInstaller/SettingsInstaller.d.ts +1 -1
  123. package/features/settings/SettingsInstaller/SettingsInstaller.js +1 -1
  124. package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
  125. package/features/settings/SettingsInstaller/feature.d.ts +4 -1
  126. package/features/settings/UpdateSettings/UpdateSettingsUseCase.d.ts +1 -1
  127. package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +1 -1
  128. package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
  129. package/features/settings/UpdateSettings/abstractions.d.ts +1 -0
  130. package/features/settings/UpdateSettings/abstractions.js +1 -0
  131. package/features/settings/UpdateSettings/abstractions.js.map +1 -1
  132. package/features/settings/UpdateSettings/events.d.ts +8 -6
  133. package/features/settings/UpdateSettings/events.js +9 -5
  134. package/features/settings/UpdateSettings/events.js.map +1 -1
  135. package/features/settings/UpdateSettings/feature.d.ts +4 -1
  136. package/features/settings/UpdateSettings/index.d.ts +1 -1
  137. package/features/settings/UpdateSettings/index.js +1 -1
  138. package/features/settings/UpdateSettings/index.js.map +1 -1
  139. package/features/shared/abstractions.d.ts +1 -13
  140. package/features/shared/abstractions.js +1 -3
  141. package/features/shared/abstractions.js.map +1 -1
  142. package/graphql/createFilesTypeDefs.d.ts +3 -2
  143. package/graphql/createFilesTypeDefs.js +5 -5
  144. package/graphql/createFilesTypeDefs.js.map +1 -1
  145. package/graphql/index.js +6 -5
  146. package/graphql/index.js.map +1 -1
  147. package/index.d.ts +1 -1
  148. package/index.js +2 -17
  149. package/index.js.map +1 -1
  150. package/package.json +23 -19
  151. package/types.d.ts +1 -3
  152. package/types.js +1 -1
  153. package/types.js.map +1 -1
  154. package/permissions/FilesPermissions.d.ts +0 -4
  155. package/permissions/FilesPermissions.js +0 -4
  156. package/permissions/FilesPermissions.js.map +0 -1
  157. package/permissions/SettingsPermissions.d.ts +0 -4
  158. package/permissions/SettingsPermissions.js +0 -4
  159. package/permissions/SettingsPermissions.js.map +0 -1
@@ -28,7 +28,8 @@ class FilePrivateModelImpl {
28
28
  // Store complete raw IPTC as JSON
29
29
  iptc: fields.searchableJson().label("IPTC Data")
30
30
  })),
31
- tags: fields.text().label("Tags").tags(["$bulk-edit"]).list().required("Value is required.")
31
+ tags: fields.text().label("Tags").tags(["$bulk-edit"]).list().required("Value is required."),
32
+ description: fields.text().label("Description").defaultValue("")
32
33
  }));
33
34
  if (privateFiles) {
34
35
  model.fields(fields => ({
@@ -1 +1 @@
1
- {"version":3,"names":["ModelFactory","WcpContext","FILE_MODEL_ID","process","env","WEBINY_API_LEGACY_MODELS","FilePrivateModelImpl","constructor","wcp","execute","builder","model","private","modelId","name","privateFiles","canUsePrivateFiles","fields","text","label","required","key","type","size","number","metadata","object","renderer","image","width","height","format","orientation","exif","searchableJson","iptc","tags","list","accessControl","predefinedValues","value","selected","FileModel","createImplementation","implementation","dependencies"],"sources":["file.model.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\n\nexport const FILE_MODEL_ID = process.env.WEBINY_API_LEGACY_MODELS ? \"fmFile\" : \"wbyFmFile\";\n\nclass FilePrivateModelImpl implements ModelFactory.Interface {\n public constructor(private wcp: WcpContext.Interface) {}\n\n public async execute(builder: ModelFactory.Builder) {\n const model = builder.private({\n modelId: FILE_MODEL_ID,\n name: \"FmFile\"\n });\n const privateFiles = this.wcp.canUsePrivateFiles();\n\n model.fields(fields => ({\n name: fields.text().label(\"Name\").required(\"Value is required.\"),\n key: fields.text().label(\"Key\").required(\"Value is required.\"),\n type: fields.text().label(\"Type\").required(\"Value is required.\"),\n size: fields.number().label(\"Size\").required(\"Value is required.\"),\n metadata: fields\n .object()\n .label(\"Metadata\")\n .renderer(\"hidden\")\n .fields(fields => ({\n image: fields\n .object()\n .label(\"Image\")\n .fields(fields => ({\n width: fields.number().label(\"Width\"),\n height: fields.number().label(\"Height\"),\n format: fields.text().label(\"Format\"),\n orientation: fields.number().label(\"Orientation\")\n })),\n // Store complete raw EXIF as JSON\n exif: fields.searchableJson().label(\"EXIF Data\"),\n // Store complete raw IPTC as JSON\n iptc: fields.searchableJson().label(\"IPTC Data\")\n })),\n tags: fields\n .text()\n .label(\"Tags\")\n .tags([\"$bulk-edit\"])\n .list()\n .required(\"Value is required.\")\n }));\n\n if (privateFiles) {\n model.fields(fields => ({\n accessControl: fields\n .object()\n .label(\"Access Control\")\n .tags([\"$bulk-edit\"])\n .fields(fields => ({\n type: fields\n .text()\n .label(\"Type\")\n .predefinedValues([\n {\n label: \"Public\",\n value: \"public\",\n selected: true\n },\n {\n label: \"Private\",\n value: \"private-authenticated\",\n selected: false\n }\n ])\n }))\n }));\n }\n\n return [model];\n }\n}\n\nexport const FileModel = ModelFactory.createImplementation({\n implementation: FilePrivateModelImpl,\n dependencies: [WcpContext]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ModelFactory","WcpContext","FILE_MODEL_ID","process","env","WEBINY_API_LEGACY_MODELS","FilePrivateModelImpl","constructor","wcp","execute","builder","model","private","modelId","name","privateFiles","canUsePrivateFiles","fields","text","label","required","key","type","size","number","metadata","object","renderer","image","width","height","format","orientation","exif","searchableJson","iptc","tags","list","description","defaultValue","accessControl","predefinedValues","value","selected","FileModel","createImplementation","implementation","dependencies"],"sources":["file.model.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\n\nexport const FILE_MODEL_ID = process.env.WEBINY_API_LEGACY_MODELS ? \"fmFile\" : \"wbyFmFile\";\n\nclass FilePrivateModelImpl implements ModelFactory.Interface {\n public constructor(private wcp: WcpContext.Interface) {}\n\n public async execute(builder: ModelFactory.Builder) {\n const model = builder.private({\n modelId: FILE_MODEL_ID,\n name: \"FmFile\"\n });\n const privateFiles = this.wcp.canUsePrivateFiles();\n\n model.fields(fields => ({\n name: fields.text().label(\"Name\").required(\"Value is required.\"),\n key: fields.text().label(\"Key\").required(\"Value is required.\"),\n type: fields.text().label(\"Type\").required(\"Value is required.\"),\n size: fields.number().label(\"Size\").required(\"Value is required.\"),\n metadata: fields\n .object()\n .label(\"Metadata\")\n .renderer(\"hidden\")\n .fields(fields => ({\n image: fields\n .object()\n .label(\"Image\")\n .fields(fields => ({\n width: fields.number().label(\"Width\"),\n height: fields.number().label(\"Height\"),\n format: fields.text().label(\"Format\"),\n orientation: fields.number().label(\"Orientation\")\n })),\n // Store complete raw EXIF as JSON\n exif: fields.searchableJson().label(\"EXIF Data\"),\n // Store complete raw IPTC as JSON\n iptc: fields.searchableJson().label(\"IPTC Data\")\n })),\n tags: fields\n .text()\n .label(\"Tags\")\n .tags([\"$bulk-edit\"])\n .list()\n .required(\"Value is required.\"),\n description: fields.text().label(\"Description\").defaultValue(\"\")\n }));\n\n if (privateFiles) {\n model.fields(fields => ({\n accessControl: fields\n .object()\n .label(\"Access Control\")\n .tags([\"$bulk-edit\"])\n .fields(fields => ({\n type: fields\n .text()\n .label(\"Type\")\n .predefinedValues([\n {\n label: \"Public\",\n value: \"public\",\n selected: true\n },\n {\n label: \"Private\",\n value: \"private-authenticated\",\n selected: false\n }\n ])\n }))\n }));\n }\n\n return [model];\n }\n}\n\nexport const FileModel = ModelFactory.createImplementation({\n implementation: FilePrivateModelImpl,\n dependencies: [WcpContext]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -22,6 +22,7 @@ export interface File {
22
22
  folderId: string;
23
23
  };
24
24
  tags: string[];
25
+ description: string;
25
26
  createdOn: string;
26
27
  modifiedOn: string | undefined;
27
28
  savedOn: string;
@@ -47,5 +48,6 @@ export interface FileInput {
47
48
  folderId: string;
48
49
  };
49
50
  tags: string[];
51
+ description?: string;
50
52
  extensions?: Record<string, any>;
51
53
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type PublicAccess = {\n type: \"public\";\n};\n\nexport type PrivateAuthenticatedAccess = {\n type: \"private-authenticated\";\n};\n\nexport type FileAccess = PublicAccess | PrivateAuthenticatedAccess;\n\nexport interface CreatedBy {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface File {\n id: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata: Record<string, any>;\n accessControl?: FileAccess;\n location: {\n folderId: string;\n };\n tags: string[];\n createdOn: string;\n modifiedOn: string | undefined;\n savedOn: string;\n createdBy: CreatedBy;\n modifiedBy: CreatedBy | undefined;\n savedBy: CreatedBy;\n extensions?: Record<string, any>;\n}\n\nexport interface FileInput {\n id: string;\n\n // Entry-level fields (we don't use revisions for files)\n createdOn?: string;\n modifiedOn?: string;\n savedOn?: string;\n createdBy?: CreatedBy;\n modifiedBy?: CreatedBy;\n savedBy?: CreatedBy;\n\n key: string;\n name: string;\n size: number;\n type: string;\n metadata: Record<string, any>;\n location?: {\n folderId: string;\n };\n tags: string[];\n extensions?: Record<string, any>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type PublicAccess = {\n type: \"public\";\n};\n\nexport type PrivateAuthenticatedAccess = {\n type: \"private-authenticated\";\n};\n\nexport type FileAccess = PublicAccess | PrivateAuthenticatedAccess;\n\nexport interface CreatedBy {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface File {\n id: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata: Record<string, any>;\n accessControl?: FileAccess;\n location: {\n folderId: string;\n };\n tags: string[];\n description: string;\n createdOn: string;\n modifiedOn: string | undefined;\n savedOn: string;\n createdBy: CreatedBy;\n modifiedBy: CreatedBy | undefined;\n savedBy: CreatedBy;\n extensions?: Record<string, any>;\n}\n\nexport interface FileInput {\n id: string;\n\n // Entry-level fields (we don't use revisions for files)\n createdOn?: string;\n modifiedOn?: string;\n savedOn?: string;\n createdBy?: CreatedBy;\n modifiedBy?: CreatedBy;\n savedBy?: CreatedBy;\n\n key: string;\n name: string;\n size: number;\n type: string;\n metadata: Record<string, any>;\n location?: {\n folderId: string;\n };\n tags: string[];\n description?: string;\n extensions?: Record<string, any>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ export declare const FM_PERMISSIONS_SCHEMA: {
2
+ readonly prefix: "fm";
3
+ readonly fullAccess: true;
4
+ readonly entities: readonly [{
5
+ readonly id: "file";
6
+ readonly permission: "fm.file";
7
+ readonly scopes: readonly ["full", "own"];
8
+ readonly actions: readonly [{
9
+ readonly name: "rwd";
10
+ }];
11
+ }, {
12
+ readonly id: "settings";
13
+ readonly permission: "fm.settings";
14
+ readonly scopes: readonly ["full"];
15
+ }];
16
+ };
@@ -0,0 +1,19 @@
1
+ import { createPermissionSchema } from "@webiny/api-core/exports/api/security.js";
2
+ export const FM_PERMISSIONS_SCHEMA = createPermissionSchema({
3
+ prefix: "fm",
4
+ fullAccess: true,
5
+ entities: [{
6
+ id: "file",
7
+ permission: "fm.file",
8
+ scopes: ["full", "own"],
9
+ actions: [{
10
+ name: "rwd"
11
+ }]
12
+ }, {
13
+ id: "settings",
14
+ permission: "fm.settings",
15
+ scopes: ["full"]
16
+ }]
17
+ });
18
+
19
+ //# sourceMappingURL=permissionsSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPermissionSchema","FM_PERMISSIONS_SCHEMA","prefix","fullAccess","entities","id","permission","scopes","actions","name"],"sources":["permissionsSchema.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/api-core/exports/api/security.js\";\n\nexport const FM_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"fm\",\n fullAccess: true,\n entities: [\n {\n id: \"file\",\n permission: \"fm.file\",\n scopes: [\"full\", \"own\"],\n actions: [{ name: \"rwd\" }]\n },\n {\n id: \"settings\",\n permission: \"fm.settings\",\n scopes: [\"full\"]\n }\n ]\n});\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,0CAA0C;AAEjF,OAAO,MAAMC,qBAAqB,GAAGD,sBAAsB,CAAC;EACxDE,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,IAAI;EAChBC,QAAQ,EAAE,CACN;IACIC,EAAE,EAAE,MAAM;IACVC,UAAU,EAAE,SAAS;IACrBC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IACvBC,OAAO,EAAE,CAAC;MAAEC,IAAI,EAAE;IAAM,CAAC;EAC7B,CAAC,EACD;IACIJ,EAAE,EAAE,UAAU;IACdC,UAAU,EAAE,aAAa;IACzBC,MAAM,EAAE,CAAC,MAAM;EACnB,CAAC;AAET,CAAC,CAAC","ignoreList":[]}
@@ -1,14 +1,6 @@
1
1
  import zod from "zod";
2
2
  export declare const updateSettingsValidation: zod.ZodObject<{
3
- uploadMinFileSize: zod.ZodOptional<zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>, number, number | null | undefined>>;
4
- uploadMaxFileSize: zod.ZodOptional<zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>, number, number | null | undefined>>;
5
- srcPrefix: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string, string | undefined>;
6
- }, "strip", zod.ZodTypeAny, {
7
- srcPrefix: string;
8
- uploadMinFileSize?: number | undefined;
9
- uploadMaxFileSize?: number | undefined;
10
- }, {
11
- uploadMinFileSize?: number | null | undefined;
12
- uploadMaxFileSize?: number | null | undefined;
13
- srcPrefix?: string | undefined;
14
- }>;
3
+ uploadMinFileSize: zod.ZodOptional<zod.ZodPipe<zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>, zod.ZodTransform<number, number | null | undefined>>>;
4
+ uploadMaxFileSize: zod.ZodOptional<zod.ZodPipe<zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>, zod.ZodTransform<number, number | null | undefined>>>;
5
+ srcPrefix: zod.ZodPipe<zod.ZodOptional<zod.ZodString>, zod.ZodTransform<string, string | undefined>>;
6
+ }, zod.core.$strip>;
@@ -0,0 +1,12 @@
1
+ export { CreateFileRepository, CreateFileUseCase } from "../../../features/file/CreateFile/abstractions.js";
2
+ export { FileAfterCreateEventHandler, FileBeforeCreateEventHandler } from "../../../features/file/CreateFile/events.js";
3
+ export { CreateFilesInBatchRepository, CreateFilesInBatchUseCase } from "../../../features/file/CreateFilesInBatch/abstractions.js";
4
+ export { FileAfterBatchCreateEventHandler, FileBeforeBatchCreateEventHandler } from "../../../features/file/CreateFilesInBatch/events.js";
5
+ export { UpdateFileRepository, UpdateFileUseCase } from "../../../features/file/UpdateFile/abstractions.js";
6
+ export { FileAfterUpdateEventHandler, FileBeforeUpdateEventHandler } from "../../../features/file/UpdateFile/events.js";
7
+ export { DeleteFileRepository, DeleteFileUseCase } from "../../../features/file/DeleteFile/abstractions.js";
8
+ export { FileAfterDeleteEventHandler, FileBeforeDeleteEventHandler } from "../../../features/file/DeleteFile/events.js";
9
+ export { FileUrlGenerator } from "../../../features/file/FileUrlGenerator/abstractions.js";
10
+ export { GetFileRepository, GetFileUseCase } from "../../../features/file/GetFile/abstractions.js";
11
+ export { ListFilesRepository, ListFilesUseCase } from "../../../features/file/ListFiles/abstractions.js";
12
+ export { ListTagsRepository, ListTagsUseCase } from "../../../features/file/ListTags/abstractions.js";
@@ -0,0 +1,14 @@
1
+ export { CreateFileRepository, CreateFileUseCase } from "../../../features/file/CreateFile/abstractions.js";
2
+ export { FileAfterCreateEventHandler, FileBeforeCreateEventHandler } from "../../../features/file/CreateFile/events.js";
3
+ export { CreateFilesInBatchRepository, CreateFilesInBatchUseCase } from "../../../features/file/CreateFilesInBatch/abstractions.js";
4
+ export { FileAfterBatchCreateEventHandler, FileBeforeBatchCreateEventHandler } from "../../../features/file/CreateFilesInBatch/events.js";
5
+ export { UpdateFileRepository, UpdateFileUseCase } from "../../../features/file/UpdateFile/abstractions.js";
6
+ export { FileAfterUpdateEventHandler, FileBeforeUpdateEventHandler } from "../../../features/file/UpdateFile/events.js";
7
+ export { DeleteFileRepository, DeleteFileUseCase } from "../../../features/file/DeleteFile/abstractions.js";
8
+ export { FileAfterDeleteEventHandler, FileBeforeDeleteEventHandler } from "../../../features/file/DeleteFile/events.js";
9
+ export { FileUrlGenerator } from "../../../features/file/FileUrlGenerator/abstractions.js";
10
+ export { GetFileRepository, GetFileUseCase } from "../../../features/file/GetFile/abstractions.js";
11
+ export { ListFilesRepository, ListFilesUseCase } from "../../../features/file/ListFiles/abstractions.js";
12
+ export { ListTagsRepository, ListTagsUseCase } from "../../../features/file/ListTags/abstractions.js";
13
+
14
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CreateFileRepository","CreateFileUseCase","FileAfterCreateEventHandler","FileBeforeCreateEventHandler","CreateFilesInBatchRepository","CreateFilesInBatchUseCase","FileAfterBatchCreateEventHandler","FileBeforeBatchCreateEventHandler","UpdateFileRepository","UpdateFileUseCase","FileAfterUpdateEventHandler","FileBeforeUpdateEventHandler","DeleteFileRepository","DeleteFileUseCase","FileAfterDeleteEventHandler","FileBeforeDeleteEventHandler","FileUrlGenerator","GetFileRepository","GetFileUseCase","ListFilesRepository","ListFilesUseCase","ListTagsRepository","ListTagsUseCase"],"sources":["file.ts"],"sourcesContent":["export {\n CreateFileRepository,\n CreateFileUseCase\n} from \"~/features/file/CreateFile/abstractions.js\";\nexport {\n FileAfterCreateEventHandler,\n FileBeforeCreateEventHandler\n} from \"~/features/file/CreateFile/events.js\";\n\nexport {\n CreateFilesInBatchRepository,\n CreateFilesInBatchUseCase\n} from \"~/features/file/CreateFilesInBatch/abstractions.js\";\nexport {\n FileAfterBatchCreateEventHandler,\n FileBeforeBatchCreateEventHandler\n} from \"~/features/file/CreateFilesInBatch/events.js\";\n\nexport {\n UpdateFileRepository,\n UpdateFileUseCase\n} from \"~/features/file/UpdateFile/abstractions.js\";\nexport {\n FileAfterUpdateEventHandler,\n FileBeforeUpdateEventHandler\n} from \"~/features/file/UpdateFile/events.js\";\n\nexport {\n DeleteFileRepository,\n DeleteFileUseCase\n} from \"~/features/file/DeleteFile/abstractions.js\";\nexport {\n FileAfterDeleteEventHandler,\n FileBeforeDeleteEventHandler\n} from \"~/features/file/DeleteFile/events.js\";\n\nexport { FileUrlGenerator } from \"~/features/file/FileUrlGenerator/abstractions.js\";\n\nexport { GetFileRepository, GetFileUseCase } from \"~/features/file/GetFile/abstractions.js\";\n\nexport { ListFilesRepository, ListFilesUseCase } from \"~/features/file/ListFiles/abstractions.js\";\n\nexport { ListTagsRepository, ListTagsUseCase } from \"~/features/file/ListTags/abstractions.js\";\n"],"mappings":"AAAA,SACIA,oBAAoB,EACpBC,iBAAiB;AAErB,SACIC,2BAA2B,EAC3BC,4BAA4B;AAGhC,SACIC,4BAA4B,EAC5BC,yBAAyB;AAE7B,SACIC,gCAAgC,EAChCC,iCAAiC;AAGrC,SACIC,oBAAoB,EACpBC,iBAAiB;AAErB,SACIC,2BAA2B,EAC3BC,4BAA4B;AAGhC,SACIC,oBAAoB,EACpBC,iBAAiB;AAErB,SACIC,2BAA2B,EAC3BC,4BAA4B;AAGhC,SAASC,gBAAgB;AAEzB,SAASC,iBAAiB,EAAEC,cAAc;AAE1C,SAASC,mBAAmB,EAAEC,gBAAgB;AAE9C,SAASC,kBAAkB,EAAEC,eAAe","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export { FmPermissions } from "../../../features/shared/abstractions.js";
@@ -0,0 +1,3 @@
1
+ export { FmPermissions } from "../../../features/shared/abstractions.js";
2
+
3
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FmPermissions"],"sources":["permissions.ts"],"sourcesContent":["export { FmPermissions } from \"~/features/shared/abstractions.js\";\n"],"mappings":"AAAA,SAASA,aAAa","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export { GetSettingsUseCase } from "../../../features/settings/GetSettings/abstractions.js";
2
+ export { UpdateSettingsUseCase } from "../../../features/settings/UpdateSettings/abstractions.js";
3
+ export { SettingsAfterUpdateEventHandler, SettingsBeforeUpdateEventHandler } from "../../../features/settings/UpdateSettings/events.js";
@@ -0,0 +1,5 @@
1
+ export { GetSettingsUseCase } from "../../../features/settings/GetSettings/abstractions.js";
2
+ export { UpdateSettingsUseCase } from "../../../features/settings/UpdateSettings/abstractions.js";
3
+ export { SettingsAfterUpdateEventHandler, SettingsBeforeUpdateEventHandler } from "../../../features/settings/UpdateSettings/events.js";
4
+
5
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GetSettingsUseCase","UpdateSettingsUseCase","SettingsAfterUpdateEventHandler","SettingsBeforeUpdateEventHandler"],"sources":["settings.ts"],"sourcesContent":["export { GetSettingsUseCase } from \"~/features/settings/GetSettings/abstractions.js\";\nexport { UpdateSettingsUseCase } from \"~/features/settings/UpdateSettings/abstractions.js\";\nexport {\n SettingsAfterUpdateEventHandler,\n SettingsBeforeUpdateEventHandler\n} from \"~/features/settings/UpdateSettings/events.js\";\n"],"mappings":"AAAA,SAASA,kBAAkB;AAC3B,SAASC,qBAAqB;AAC9B,SACIC,+BAA+B,EAC/BC,gCAAgC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const FileManagerFeature: import("@webiny/feature/api/createFeature").FeatureDefinition<unknown>;
1
+ export declare const FileManagerFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -9,6 +9,7 @@ import { UpdateFileFeature } from "./file/UpdateFile/feature.js";
9
9
  import { SettingsInstallerFeature } from "./settings/SettingsInstaller/feature.js";
10
10
  import { GetSettingsFeature } from "./settings/GetSettings/feature.js";
11
11
  import { UpdateSettingsFeature } from "./settings/UpdateSettings/feature.js";
12
+ import { ListImagesByTagToolFeature } from "./file/ListImagesByTagTool/feature.js";
12
13
  export const FileManagerFeature = createFeature({
13
14
  name: "FileManager",
14
15
  register(container) {
@@ -22,6 +23,7 @@ export const FileManagerFeature = createFeature({
22
23
  SettingsInstallerFeature.register(container);
23
24
  GetSettingsFeature.register(container);
24
25
  UpdateSettingsFeature.register(container);
26
+ ListImagesByTagToolFeature.register(container);
25
27
  }
26
28
  });
27
29
 
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","CreateFileFeature","CreateFilesInBatchFeature","DeleteFileFeature","GetFileFeature","ListFilesFeature","ListTagsFeature","UpdateFileFeature","SettingsInstallerFeature","GetSettingsFeature","UpdateSettingsFeature","FileManagerFeature","name","register","container"],"sources":["FileManagerFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateFileFeature } from \"~/features/file/CreateFile/feature.js\";\nimport { CreateFilesInBatchFeature } from \"~/features/file/CreateFilesInBatch/feature.js\";\nimport { DeleteFileFeature } from \"~/features/file/DeleteFile/feature.js\";\nimport { GetFileFeature } from \"~/features/file/GetFile/feature.js\";\nimport { ListFilesFeature } from \"~/features/file/ListFiles/feature.js\";\nimport { ListTagsFeature } from \"~/features/file/ListTags/feature.js\";\nimport { UpdateFileFeature } from \"~/features/file/UpdateFile/feature.js\";\nimport { SettingsInstallerFeature } from \"~/features/settings/SettingsInstaller/feature.js\";\nimport { GetSettingsFeature } from \"~/features/settings/GetSettings/feature.js\";\nimport { UpdateSettingsFeature } from \"~/features/settings/UpdateSettings/feature.js\";\n\nexport const FileManagerFeature = createFeature({\n name: \"FileManager\",\n register(container) {\n CreateFileFeature.register(container);\n CreateFilesInBatchFeature.register(container);\n UpdateFileFeature.register(container);\n DeleteFileFeature.register(container);\n GetFileFeature.register(container);\n ListFilesFeature.register(container);\n ListTagsFeature.register(container);\n SettingsInstallerFeature.register(container);\n GetSettingsFeature.register(container);\n UpdateSettingsFeature.register(container);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAC1B,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,wBAAwB;AACjC,SAASC,kBAAkB;AAC3B,SAASC,qBAAqB;AAE9B,OAAO,MAAMC,kBAAkB,GAAGX,aAAa,CAAC;EAC5CY,IAAI,EAAE,aAAa;EACnBC,QAAQA,CAACC,SAAS,EAAE;IAChBb,iBAAiB,CAACY,QAAQ,CAACC,SAAS,CAAC;IACrCZ,yBAAyB,CAACW,QAAQ,CAACC,SAAS,CAAC;IAC7CP,iBAAiB,CAACM,QAAQ,CAACC,SAAS,CAAC;IACrCX,iBAAiB,CAACU,QAAQ,CAACC,SAAS,CAAC;IACrCV,cAAc,CAACS,QAAQ,CAACC,SAAS,CAAC;IAClCT,gBAAgB,CAACQ,QAAQ,CAACC,SAAS,CAAC;IACpCR,eAAe,CAACO,QAAQ,CAACC,SAAS,CAAC;IACnCN,wBAAwB,CAACK,QAAQ,CAACC,SAAS,CAAC;IAC5CL,kBAAkB,CAACI,QAAQ,CAACC,SAAS,CAAC;IACtCJ,qBAAqB,CAACG,QAAQ,CAACC,SAAS,CAAC;EAC7C;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createFeature","CreateFileFeature","CreateFilesInBatchFeature","DeleteFileFeature","GetFileFeature","ListFilesFeature","ListTagsFeature","UpdateFileFeature","SettingsInstallerFeature","GetSettingsFeature","UpdateSettingsFeature","ListImagesByTagToolFeature","FileManagerFeature","name","register","container"],"sources":["FileManagerFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateFileFeature } from \"~/features/file/CreateFile/feature.js\";\nimport { CreateFilesInBatchFeature } from \"~/features/file/CreateFilesInBatch/feature.js\";\nimport { DeleteFileFeature } from \"~/features/file/DeleteFile/feature.js\";\nimport { GetFileFeature } from \"~/features/file/GetFile/feature.js\";\nimport { ListFilesFeature } from \"~/features/file/ListFiles/feature.js\";\nimport { ListTagsFeature } from \"~/features/file/ListTags/feature.js\";\nimport { UpdateFileFeature } from \"~/features/file/UpdateFile/feature.js\";\nimport { SettingsInstallerFeature } from \"~/features/settings/SettingsInstaller/feature.js\";\nimport { GetSettingsFeature } from \"~/features/settings/GetSettings/feature.js\";\nimport { UpdateSettingsFeature } from \"~/features/settings/UpdateSettings/feature.js\";\nimport { ListImagesByTagToolFeature } from \"~/features/file/ListImagesByTagTool/feature.js\";\n\nexport const FileManagerFeature = createFeature({\n name: \"FileManager\",\n register(container) {\n CreateFileFeature.register(container);\n CreateFilesInBatchFeature.register(container);\n UpdateFileFeature.register(container);\n DeleteFileFeature.register(container);\n GetFileFeature.register(container);\n ListFilesFeature.register(container);\n ListTagsFeature.register(container);\n SettingsInstallerFeature.register(container);\n GetSettingsFeature.register(container);\n UpdateSettingsFeature.register(container);\n ListImagesByTagToolFeature.register(container);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAC1B,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,wBAAwB;AACjC,SAASC,kBAAkB;AAC3B,SAASC,qBAAqB;AAC9B,SAASC,0BAA0B;AAEnC,OAAO,MAAMC,kBAAkB,GAAGZ,aAAa,CAAC;EAC5Ca,IAAI,EAAE,aAAa;EACnBC,QAAQA,CAACC,SAAS,EAAE;IAChBd,iBAAiB,CAACa,QAAQ,CAACC,SAAS,CAAC;IACrCb,yBAAyB,CAACY,QAAQ,CAACC,SAAS,CAAC;IAC7CR,iBAAiB,CAACO,QAAQ,CAACC,SAAS,CAAC;IACrCZ,iBAAiB,CAACW,QAAQ,CAACC,SAAS,CAAC;IACrCX,cAAc,CAACU,QAAQ,CAACC,SAAS,CAAC;IAClCV,gBAAgB,CAACS,QAAQ,CAACC,SAAS,CAAC;IACpCT,eAAe,CAACQ,QAAQ,CAACC,SAAS,CAAC;IACnCP,wBAAwB,CAACM,QAAQ,CAACC,SAAS,CAAC;IAC5CN,kBAAkB,CAACK,QAAQ,CAACC,SAAS,CAAC;IACtCL,qBAAqB,CAACI,QAAQ,CAACC,SAAS,CAAC;IACzCJ,0BAA0B,CAACG,QAAQ,CAACC,SAAS,CAAC;EAClD;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,17 +1,17 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { CreateFileUseCase as UseCaseAbstraction, CreateFileInput, CreateFileRepository } from "./abstractions.js";
3
3
  import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
4
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
4
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
5
5
  import type { File } from "../../../domain/file/types.js";
6
- import { FilePermissions } from "../../../features/shared/abstractions.js";
6
+ import { FmPermissions } from "../../../features/shared/abstractions.js";
7
7
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
8
8
  declare class CreateFileUseCaseImpl implements UseCaseAbstraction.Interface {
9
9
  private identityContext;
10
- private filePermissions;
10
+ private permissions;
11
11
  private repository;
12
12
  private getSettings;
13
13
  private eventPublisher;
14
- constructor(identityContext: IdentityContext.Interface, filePermissions: FilePermissions.Interface, repository: CreateFileRepository.Interface, getSettings: GetSettingsUseCase.Interface, eventPublisher: EventPublisher.Interface);
14
+ constructor(identityContext: IdentityContext.Interface, permissions: FmPermissions.Interface, repository: CreateFileRepository.Interface, getSettings: GetSettingsUseCase.Interface, eventPublisher: EventPublisher.Interface);
15
15
  execute(input: CreateFileInput, meta?: Record<string, any>): Promise<Result<File, UseCaseAbstraction.Error>>;
16
16
  private validateInput;
17
17
  }
@@ -1,24 +1,22 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { CreateFileUseCase as UseCaseAbstraction, CreateFileRepository } from "./abstractions.js";
3
3
  import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
4
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
4
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
5
5
  import { FileNotAuthorizedError, InvalidFileSizeError } from "../../../domain/file/errors.js";
6
6
  import { FileBeforeCreateEvent, FileAfterCreateEvent } from "./events.js";
7
- import { FilePermissions } from "../../shared/abstractions.js";
7
+ import { FmPermissions } from "../../shared/abstractions.js";
8
8
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
9
9
  import { Identity } from "../../../domain/identity/Identity.js";
10
10
  class CreateFileUseCaseImpl {
11
- constructor(identityContext, filePermissions, repository, getSettings, eventPublisher) {
11
+ constructor(identityContext, permissions, repository, getSettings, eventPublisher) {
12
12
  this.identityContext = identityContext;
13
- this.filePermissions = filePermissions;
13
+ this.permissions = permissions;
14
14
  this.repository = repository;
15
15
  this.getSettings = getSettings;
16
16
  this.eventPublisher = eventPublisher;
17
17
  }
18
18
  async execute(input, meta) {
19
- const hasPermission = await this.filePermissions.ensure({
20
- rwd: "w"
21
- });
19
+ const hasPermission = await this.permissions.canCreate("file");
22
20
  if (!hasPermission) {
23
21
  return Result.fail(new FileNotAuthorizedError());
24
22
  }
@@ -41,6 +39,7 @@ class CreateFileUseCaseImpl {
41
39
  folderId: "root"
42
40
  },
43
41
  tags: input.tags || [],
42
+ description: input.description ?? "",
44
43
  extensions: meta || {},
45
44
  // system attributes
46
45
  createdOn: input.createdOn,
@@ -85,7 +84,7 @@ class CreateFileUseCaseImpl {
85
84
  }
86
85
  export const CreateFileUseCase = UseCaseAbstraction.createImplementation({
87
86
  implementation: CreateFileUseCaseImpl,
88
- dependencies: [IdentityContext, FilePermissions, CreateFileRepository, GetSettingsUseCase, EventPublisher]
87
+ dependencies: [IdentityContext, FmPermissions, CreateFileRepository, GetSettingsUseCase, EventPublisher]
89
88
  });
90
89
 
91
90
  //# sourceMappingURL=CreateFileUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","CreateFileUseCase","UseCaseAbstraction","CreateFileRepository","GetSettingsUseCase","EventPublisher","FileNotAuthorizedError","InvalidFileSizeError","FileBeforeCreateEvent","FileAfterCreateEvent","FilePermissions","IdentityContext","Identity","CreateFileUseCaseImpl","constructor","identityContext","filePermissions","repository","getSettings","eventPublisher","execute","input","meta","hasPermission","ensure","rwd","fail","validationResult","validateInput","isFail","error","id","key","split","currentIdentity","getIdentity","fileInput","name","size","type","metadata","location","folderId","tags","extensions","createdOn","modifiedOn","savedOn","createdBy","from","modifiedBy","undefined","savedBy","publish","file","result","value","ok","settingsResult","settings","uploadMinFileSize","uploadMaxFileSize","minSize","maxSize","createImplementation","implementation","dependencies"],"sources":["CreateFileUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n CreateFileUseCase as UseCaseAbstraction,\n CreateFileInput,\n CreateFileRepository\n} from \"./abstractions.js\";\nimport { GetSettingsUseCase } from \"../../settings/GetSettings/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/EventPublisher\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { FileNotAuthorizedError, InvalidFileSizeError } from \"~/domain/file/errors.js\";\nimport { FileBeforeCreateEvent, FileAfterCreateEvent } from \"./events.js\";\nimport { FilePermissions } from \"~/features/shared/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Identity } from \"~/domain/identity/Identity.js\";\n\nclass CreateFileUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private filePermissions: FilePermissions.Interface,\n private repository: CreateFileRepository.Interface,\n private getSettings: GetSettingsUseCase.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n async execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseAbstraction.Error>> {\n const hasPermission = await this.filePermissions.ensure({ rwd: \"w\" });\n if (!hasPermission) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n const validationResult = await this.validateInput(input);\n if (validationResult.isFail()) {\n return Result.fail(validationResult.error);\n }\n\n const [id] = input.key.split(\"/\");\n const currentIdentity = this.identityContext.getIdentity();\n\n // Prepare file input\n const fileInput: FileInput = {\n id: input.id || id,\n key: input.key,\n name: input.name,\n size: input.size,\n type: input.type,\n metadata: input.metadata || {},\n location: input.location || { folderId: \"root\" },\n tags: input.tags || [],\n extensions: meta || {},\n // system attributes\n createdOn: input.createdOn,\n modifiedOn: input.modifiedOn,\n savedOn: input.savedOn,\n createdBy: input.createdBy\n ? Identity.from(input.createdBy)\n : Identity.from(currentIdentity),\n modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,\n savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)\n };\n\n await this.eventPublisher.publish(new FileBeforeCreateEvent({ file: fileInput, meta }));\n\n const result = await this.repository.execute(fileInput);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(new FileAfterCreateEvent({ file: result.value, meta }));\n\n return Result.ok(result.value);\n }\n\n private async validateInput(\n input: CreateFileInput\n ): Promise<Result<void, InvalidFileSizeError>> {\n const settingsResult = await this.getSettings.execute();\n\n if (settingsResult.isFail()) {\n return Result.ok();\n }\n\n const settings = settingsResult.value;\n\n if (settings) {\n // Validate file size\n if (\n input.size < settings.uploadMinFileSize ||\n input.size > settings.uploadMaxFileSize\n ) {\n return Result.fail(\n new InvalidFileSizeError({\n size: input.size,\n minSize: settings.uploadMinFileSize,\n maxSize: settings.uploadMaxFileSize\n })\n );\n }\n }\n\n return Result.ok();\n }\n}\n\nexport const CreateFileUseCase = UseCaseAbstraction.createImplementation({\n implementation: CreateFileUseCaseImpl,\n dependencies: [\n IdentityContext,\n FilePermissions,\n CreateFileRepository,\n GetSettingsUseCase,\n EventPublisher\n ]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Result","CreateFileUseCase","UseCaseAbstraction","CreateFileRepository","GetSettingsUseCase","EventPublisher","FileNotAuthorizedError","InvalidFileSizeError","FileBeforeCreateEvent","FileAfterCreateEvent","FmPermissions","IdentityContext","Identity","CreateFileUseCaseImpl","constructor","identityContext","permissions","repository","getSettings","eventPublisher","execute","input","meta","hasPermission","canCreate","fail","validationResult","validateInput","isFail","error","id","key","split","currentIdentity","getIdentity","fileInput","name","size","type","metadata","location","folderId","tags","description","extensions","createdOn","modifiedOn","savedOn","createdBy","from","modifiedBy","undefined","savedBy","publish","file","result","value","ok","settingsResult","settings","uploadMinFileSize","uploadMaxFileSize","minSize","maxSize","createImplementation","implementation","dependencies"],"sources":["CreateFileUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n CreateFileUseCase as UseCaseAbstraction,\n CreateFileInput,\n CreateFileRepository\n} from \"./abstractions.js\";\nimport { GetSettingsUseCase } from \"../../settings/GetSettings/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { FileNotAuthorizedError, InvalidFileSizeError } from \"~/domain/file/errors.js\";\nimport { FileBeforeCreateEvent, FileAfterCreateEvent } from \"./events.js\";\nimport { FmPermissions } from \"~/features/shared/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Identity } from \"~/domain/identity/Identity.js\";\n\nclass CreateFileUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private permissions: FmPermissions.Interface,\n private repository: CreateFileRepository.Interface,\n private getSettings: GetSettingsUseCase.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n async execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseAbstraction.Error>> {\n const hasPermission = await this.permissions.canCreate(\"file\");\n if (!hasPermission) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n const validationResult = await this.validateInput(input);\n if (validationResult.isFail()) {\n return Result.fail(validationResult.error);\n }\n\n const [id] = input.key.split(\"/\");\n const currentIdentity = this.identityContext.getIdentity();\n\n // Prepare file input\n const fileInput: FileInput = {\n id: input.id || id,\n key: input.key,\n name: input.name,\n size: input.size,\n type: input.type,\n metadata: input.metadata || {},\n location: input.location || { folderId: \"root\" },\n tags: input.tags || [],\n description: input.description ?? \"\",\n extensions: meta || {},\n // system attributes\n createdOn: input.createdOn,\n modifiedOn: input.modifiedOn,\n savedOn: input.savedOn,\n createdBy: input.createdBy\n ? Identity.from(input.createdBy)\n : Identity.from(currentIdentity),\n modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,\n savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)\n };\n\n await this.eventPublisher.publish(new FileBeforeCreateEvent({ file: fileInput, meta }));\n\n const result = await this.repository.execute(fileInput);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(new FileAfterCreateEvent({ file: result.value, meta }));\n\n return Result.ok(result.value);\n }\n\n private async validateInput(\n input: CreateFileInput\n ): Promise<Result<void, InvalidFileSizeError>> {\n const settingsResult = await this.getSettings.execute();\n\n if (settingsResult.isFail()) {\n return Result.ok();\n }\n\n const settings = settingsResult.value;\n\n if (settings) {\n // Validate file size\n if (\n input.size < settings.uploadMinFileSize ||\n input.size > settings.uploadMaxFileSize\n ) {\n return Result.fail(\n new InvalidFileSizeError({\n size: input.size,\n minSize: settings.uploadMinFileSize,\n maxSize: settings.uploadMaxFileSize\n })\n );\n }\n }\n\n return Result.ok();\n }\n}\n\nexport const CreateFileUseCase = UseCaseAbstraction.createImplementation({\n implementation: CreateFileUseCaseImpl,\n dependencies: [\n IdentityContext,\n FmPermissions,\n CreateFileRepository,\n GetSettingsUseCase,\n EventPublisher\n ]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,7 @@ export interface CreateFileInput {
10
10
  metadata?: Record<string, any>;
11
11
  extensions?: Record<string, any>;
12
12
  tags?: string[];
13
+ description?: string;
13
14
  location?: {
14
15
  folderId: string;
15
16
  };
@@ -31,6 +32,7 @@ export interface ICreateFileRepositoryErrors {
31
32
  persistence: FilePersistenceError;
32
33
  }
33
34
  type RepositoryError = ICreateFileRepositoryErrors[keyof ICreateFileRepositoryErrors];
35
+ /** Persist a newly created file. */
34
36
  export declare const CreateFileRepository: import("@webiny/di").Abstraction<ICreateFileRepository>;
35
37
  export declare namespace CreateFileRepository {
36
38
  type Interface = ICreateFileRepository;
@@ -49,6 +51,7 @@ export interface ICreateFileUseCaseErrors {
49
51
  alreadyExists: FileAlreadyExistsError;
50
52
  }
51
53
  type UseCaseError = ICreateFileUseCaseErrors[keyof ICreateFileUseCaseErrors];
54
+ /** Upload and create a new file. */
52
55
  export declare const CreateFileUseCase: import("@webiny/di").Abstraction<ICreateFileUseCase>;
53
56
  export declare namespace CreateFileUseCase {
54
57
  type Interface = ICreateFileUseCase;
@@ -4,12 +4,14 @@ import { createAbstraction } from "@webiny/feature/api";
4
4
  * CreateFile repository interface
5
5
  */
6
6
 
7
+ /** Persist a newly created file. */
7
8
  export const CreateFileRepository = createAbstraction("CreateFileRepository");
8
9
 
9
10
  /**
10
11
  * CreateFile use case interface
11
12
  */
12
13
 
14
+ /** Upload and create a new file. */
13
15
  export const CreateFileUseCase = createAbstraction("CreateFileUseCase");
14
16
 
15
17
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateFileRepository","CreateFileUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { CreatedBy, File, FileInput } from \"~/domain/file/types.js\";\nimport {\n type FilePersistenceError,\n type InvalidFileSizeError,\n type FileAlreadyExistsError,\n FileNotAuthorizedError\n} from \"~/domain/file/errors.js\";\n\nexport interface CreateFileInput {\n id?: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata?: Record<string, any>;\n extensions?: Record<string, any>;\n tags?: string[];\n location?: { folderId: string };\n // System attributes\n createdOn?: string;\n createdBy?: CreatedBy;\n modifiedOn?: string;\n modifiedBy?: CreatedBy;\n savedOn?: string;\n savedBy?: CreatedBy;\n}\n\n/**\n * CreateFile repository interface\n */\nexport interface ICreateFileRepository {\n execute(data: FileInput): Promise<Result<File, RepositoryError>>;\n}\n\nexport interface ICreateFileRepositoryErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n}\n\ntype RepositoryError = ICreateFileRepositoryErrors[keyof ICreateFileRepositoryErrors];\n\nexport const CreateFileRepository =\n createAbstraction<ICreateFileRepository>(\"CreateFileRepository\");\n\nexport namespace CreateFileRepository {\n export type Interface = ICreateFileRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFile use case interface\n */\nexport interface ICreateFileUseCase {\n execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseError>>;\n}\n\nexport interface ICreateFileUseCaseErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n invalidSize: InvalidFileSizeError;\n alreadyExists: FileAlreadyExistsError;\n}\n\ntype UseCaseError = ICreateFileUseCaseErrors[keyof ICreateFileUseCaseErrors];\n\nexport const CreateFileUseCase = createAbstraction<ICreateFileUseCase>(\"CreateFileUseCase\");\n\nexport namespace CreateFileUseCase {\n export type Interface = ICreateFileUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AA6BvD;AACA;AACA;;AAYA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAOpE;AACA;AACA;;AAiBA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","CreateFileRepository","CreateFileUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { CreatedBy, File, FileInput } from \"~/domain/file/types.js\";\nimport {\n type FilePersistenceError,\n type InvalidFileSizeError,\n type FileAlreadyExistsError,\n FileNotAuthorizedError\n} from \"~/domain/file/errors.js\";\n\nexport interface CreateFileInput {\n id?: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata?: Record<string, any>;\n extensions?: Record<string, any>;\n tags?: string[];\n description?: string;\n location?: { folderId: string };\n // System attributes\n createdOn?: string;\n createdBy?: CreatedBy;\n modifiedOn?: string;\n modifiedBy?: CreatedBy;\n savedOn?: string;\n savedBy?: CreatedBy;\n}\n\n/**\n * CreateFile repository interface\n */\nexport interface ICreateFileRepository {\n execute(data: FileInput): Promise<Result<File, RepositoryError>>;\n}\n\nexport interface ICreateFileRepositoryErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n}\n\ntype RepositoryError = ICreateFileRepositoryErrors[keyof ICreateFileRepositoryErrors];\n\n/** Persist a newly created file. */\nexport const CreateFileRepository =\n createAbstraction<ICreateFileRepository>(\"CreateFileRepository\");\n\nexport namespace CreateFileRepository {\n export type Interface = ICreateFileRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFile use case interface\n */\nexport interface ICreateFileUseCase {\n execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseError>>;\n}\n\nexport interface ICreateFileUseCaseErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n invalidSize: InvalidFileSizeError;\n alreadyExists: FileAlreadyExistsError;\n}\n\ntype UseCaseError = ICreateFileUseCaseErrors[keyof ICreateFileUseCaseErrors];\n\n/** Upload and create a new file. */\nexport const CreateFileUseCase = createAbstraction<ICreateFileUseCase>(\"CreateFileUseCase\");\n\nexport namespace CreateFileUseCase {\n export type Interface = ICreateFileUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AA8BvD;AACA;AACA;;AAYA;AACA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAOpE;AACA;AACA;;AAiBA;AACA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
- import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
+ import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { File, FileInput } from "../../../domain/file/types.js";
4
4
  export interface FileBeforeCreatePayload {
5
5
  file: FileInput;
@@ -9,8 +9,9 @@ export declare class FileBeforeCreateEvent extends DomainEvent<FileBeforeCreateP
9
9
  eventType: "FileManager/File/BeforeCreate";
10
10
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<FileBeforeCreateEvent>>;
11
11
  }
12
- export declare const FileBeforeCreateHandler: import("@webiny/di").Abstraction<IEventHandler<FileBeforeCreateEvent>>;
13
- export declare namespace FileBeforeCreateHandler {
12
+ /** Hook into file lifecycle before a file is created. */
13
+ export declare const FileBeforeCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<FileBeforeCreateEvent>>;
14
+ export declare namespace FileBeforeCreateEventHandler {
14
15
  type Interface = IEventHandler<FileBeforeCreateEvent>;
15
16
  type Event = FileBeforeCreateEvent;
16
17
  }
@@ -22,8 +23,9 @@ export declare class FileAfterCreateEvent extends DomainEvent<FileAfterCreatePay
22
23
  eventType: "FileManager/File/AfterCreate";
23
24
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<FileAfterCreateEvent>>;
24
25
  }
25
- export declare const FileAfterCreateHandler: import("@webiny/di").Abstraction<IEventHandler<FileAfterCreateEvent>>;
26
- export declare namespace FileAfterCreateHandler {
26
+ /** Hook into file lifecycle after a file is created. */
27
+ export declare const FileAfterCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<FileAfterCreateEvent>>;
28
+ export declare namespace FileAfterCreateEventHandler {
27
29
  type Interface = IEventHandler<FileAfterCreateEvent>;
28
30
  type Event = FileAfterCreateEvent;
29
31
  }
@@ -1,5 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
 
4
4
  // ============================================================================
5
5
  // FileBeforeCreate Event
@@ -8,10 +8,12 @@ import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
8
8
  export class FileBeforeCreateEvent extends DomainEvent {
9
9
  eventType = "FileManager/File/BeforeCreate";
10
10
  getHandlerAbstraction() {
11
- return FileBeforeCreateHandler;
11
+ return FileBeforeCreateEventHandler;
12
12
  }
13
13
  }
14
- export const FileBeforeCreateHandler = createAbstraction("FileBeforeCreateHandler");
14
+
15
+ /** Hook into file lifecycle before a file is created. */
16
+ export const FileBeforeCreateEventHandler = createAbstraction("FileBeforeCreateEventHandler");
15
17
 
16
18
  // ============================================================================
17
19
  // FileAfterCreate Event
@@ -20,9 +22,11 @@ export const FileBeforeCreateHandler = createAbstraction("FileBeforeCreateHandle
20
22
  export class FileAfterCreateEvent extends DomainEvent {
21
23
  eventType = "FileManager/File/AfterCreate";
22
24
  getHandlerAbstraction() {
23
- return FileAfterCreateHandler;
25
+ return FileAfterCreateEventHandler;
24
26
  }
25
27
  }
26
- export const FileAfterCreateHandler = createAbstraction("FileAfterCreateHandler");
28
+
29
+ /** Hook into file lifecycle after a file is created. */
30
+ export const FileAfterCreateEventHandler = createAbstraction("FileAfterCreateEventHandler");
27
31
 
28
32
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","FileBeforeCreateEvent","eventType","getHandlerAbstraction","FileBeforeCreateHandler","FileAfterCreateEvent","FileAfterCreateHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\n\n// ============================================================================\n// FileBeforeCreate Event\n// ============================================================================\n\nexport interface FileBeforeCreatePayload {\n file: FileInput;\n meta?: Record<string, any>;\n}\n\nexport class FileBeforeCreateEvent extends DomainEvent<FileBeforeCreatePayload> {\n eventType = \"FileManager/File/BeforeCreate\" as const;\n\n getHandlerAbstraction() {\n return FileBeforeCreateHandler;\n }\n}\n\nexport const FileBeforeCreateHandler =\n createAbstraction<IEventHandler<FileBeforeCreateEvent>>(\"FileBeforeCreateHandler\");\n\nexport namespace FileBeforeCreateHandler {\n export type Interface = IEventHandler<FileBeforeCreateEvent>;\n export type Event = FileBeforeCreateEvent;\n}\n\n// ============================================================================\n// FileAfterCreate Event\n// ============================================================================\n\nexport interface FileAfterCreatePayload {\n file: File;\n meta?: Record<string, any>;\n}\n\nexport class FileAfterCreateEvent extends DomainEvent<FileAfterCreatePayload> {\n eventType = \"FileManager/File/AfterCreate\" as const;\n\n getHandlerAbstraction() {\n return FileAfterCreateHandler;\n }\n}\n\nexport const FileAfterCreateHandler =\n createAbstraction<IEventHandler<FileAfterCreateEvent>>(\"FileAfterCreateHandler\");\n\nexport namespace FileAfterCreateHandler {\n export type Interface = IEventHandler<FileAfterCreateEvent>;\n export type Event = FileAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,0CAA0C;;AAItE;AACA;AACA;;AAOA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,uBAAuB;EAClC;AACJ;AAEA,OAAO,MAAMA,uBAAuB,GAChCL,iBAAiB,CAAuC,yBAAyB,CAAC;;AAOtF;AACA;AACA;;AAOA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,8BAA8B;EAE1CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,sBAAsB;EACjC;AACJ;AAEA,OAAO,MAAMA,sBAAsB,GAC/BP,iBAAiB,CAAsC,wBAAwB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","FileBeforeCreateEvent","eventType","getHandlerAbstraction","FileBeforeCreateEventHandler","FileAfterCreateEvent","FileAfterCreateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\n\n// ============================================================================\n// FileBeforeCreate Event\n// ============================================================================\n\nexport interface FileBeforeCreatePayload {\n file: FileInput;\n meta?: Record<string, any>;\n}\n\nexport class FileBeforeCreateEvent extends DomainEvent<FileBeforeCreatePayload> {\n eventType = \"FileManager/File/BeforeCreate\" as const;\n\n getHandlerAbstraction() {\n return FileBeforeCreateEventHandler;\n }\n}\n\n/** Hook into file lifecycle before a file is created. */\nexport const FileBeforeCreateEventHandler = createAbstraction<IEventHandler<FileBeforeCreateEvent>>(\n \"FileBeforeCreateEventHandler\"\n);\n\nexport namespace FileBeforeCreateEventHandler {\n export type Interface = IEventHandler<FileBeforeCreateEvent>;\n export type Event = FileBeforeCreateEvent;\n}\n\n// ============================================================================\n// FileAfterCreate Event\n// ============================================================================\n\nexport interface FileAfterCreatePayload {\n file: File;\n meta?: Record<string, any>;\n}\n\nexport class FileAfterCreateEvent extends DomainEvent<FileAfterCreatePayload> {\n eventType = \"FileManager/File/AfterCreate\" as const;\n\n getHandlerAbstraction() {\n return FileAfterCreateEventHandler;\n }\n}\n\n/** Hook into file lifecycle after a file is created. */\nexport const FileAfterCreateEventHandler = createAbstraction<IEventHandler<FileAfterCreateEvent>>(\n \"FileAfterCreateEventHandler\"\n);\n\nexport namespace FileAfterCreateEventHandler {\n export type Interface = IEventHandler<FileAfterCreateEvent>;\n export type Event = FileAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,mDAAmD;;AAI/E;AACA;AACA;;AAOA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;;AAOD;AACA;AACA;;AAOA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,8BAA8B;EAE1CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const CreateFileFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const CreateFileFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1,2 +1,2 @@
1
1
  export { CreateFileUseCase } from "./abstractions.js";
2
- export { FileAfterCreateHandler, FileBeforeCreateHandler } from "./events.js";
2
+ export { FileAfterCreateEventHandler, FileBeforeCreateEventHandler } from "./events.js";
@@ -1,4 +1,4 @@
1
1
  export { CreateFileUseCase } from "./abstractions.js";
2
- export { FileAfterCreateHandler, FileBeforeCreateHandler } from "./events.js";
2
+ export { FileAfterCreateEventHandler, FileBeforeCreateEventHandler } from "./events.js";
3
3
 
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CreateFileUseCase","FileAfterCreateHandler","FileBeforeCreateHandler"],"sources":["index.ts"],"sourcesContent":["export { CreateFileUseCase } from \"./abstractions.js\";\nexport { FileAfterCreateHandler, FileBeforeCreateHandler } from \"./events.js\";\n"],"mappings":"AAAA,SAASA,iBAAiB;AAC1B,SAASC,sBAAsB,EAAEC,uBAAuB","ignoreList":[]}
1
+ {"version":3,"names":["CreateFileUseCase","FileAfterCreateEventHandler","FileBeforeCreateEventHandler"],"sources":["index.ts"],"sourcesContent":["export { CreateFileUseCase } from \"./abstractions.js\";\nexport { FileAfterCreateEventHandler, FileBeforeCreateEventHandler } from \"./events.js\";\n"],"mappings":"AAAA,SAASA,iBAAiB;AAC1B,SAASC,2BAA2B,EAAEC,4BAA4B","ignoreList":[]}
@@ -1,15 +1,15 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { CreateFilesInBatchUseCase as UseCaseAbstraction, CreateFilesInBatchInput, CreateFilesInBatchRepository } from "./abstractions.js";
3
3
  import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
4
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
4
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
5
5
  import type { File } from "../../../domain/file/types.js";
6
- import { FilePermissions } from "../../../features/shared/abstractions.js";
6
+ import { FmPermissions } from "../../../features/shared/abstractions.js";
7
7
  declare class CreateFilesInBatchUseCaseImpl implements UseCaseAbstraction.Interface {
8
- private filePermissions;
8
+ private permissions;
9
9
  private repository;
10
10
  private getSettings;
11
11
  private eventPublisher;
12
- constructor(filePermissions: FilePermissions.Interface, repository: CreateFilesInBatchRepository.Interface, getSettings: GetSettingsUseCase.Interface, eventPublisher: EventPublisher.Interface);
12
+ constructor(permissions: FmPermissions.Interface, repository: CreateFilesInBatchRepository.Interface, getSettings: GetSettingsUseCase.Interface, eventPublisher: EventPublisher.Interface);
13
13
  execute(input: CreateFilesInBatchInput): Promise<Result<File[], UseCaseAbstraction.Error>>;
14
14
  private validateInput;
15
15
  }