@webiny/api-file-manager 0.0.0-mt-2 → 0.0.0-unstable.06b2ede40f

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 (270) hide show
  1. package/FileManagerContextSetup.d.ts +13 -0
  2. package/FileManagerContextSetup.js +115 -0
  3. package/FileManagerContextSetup.js.map +1 -0
  4. package/README.md +1 -1
  5. package/cmsFileStorage/CmsFilesStorage.d.ts +27 -0
  6. package/cmsFileStorage/CmsFilesStorage.js +164 -0
  7. package/cmsFileStorage/CmsFilesStorage.js.map +1 -0
  8. package/cmsFileStorage/ListFilesWhereProcessor.d.ts +7 -0
  9. package/cmsFileStorage/ListFilesWhereProcessor.js +33 -0
  10. package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -0
  11. package/cmsFileStorage/ListTagsWhereProcessor.d.ts +7 -0
  12. package/cmsFileStorage/ListTagsWhereProcessor.js +33 -0
  13. package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -0
  14. package/cmsFileStorage/file.model.d.ts +6 -0
  15. package/cmsFileStorage/file.model.js +158 -0
  16. package/cmsFileStorage/file.model.js.map +1 -0
  17. package/contants.d.ts +1 -0
  18. package/contants.js +9 -0
  19. package/contants.js.map +1 -0
  20. package/createFileManager/files.crud.d.ts +3 -0
  21. package/createFileManager/files.crud.js +328 -0
  22. package/createFileManager/files.crud.js.map +1 -0
  23. package/createFileManager/index.d.ts +3 -0
  24. package/createFileManager/index.js +23 -0
  25. package/createFileManager/index.js.map +1 -0
  26. package/createFileManager/permissions/FilesPermissions.d.ts +4 -0
  27. package/createFileManager/permissions/FilesPermissions.js +11 -0
  28. package/createFileManager/permissions/FilesPermissions.js.map +1 -0
  29. package/createFileManager/permissions/SettingsPermissions.d.ts +4 -0
  30. package/createFileManager/permissions/SettingsPermissions.js +11 -0
  31. package/createFileManager/permissions/SettingsPermissions.js.map +1 -0
  32. package/createFileManager/settings.crud.d.ts +3 -0
  33. package/createFileManager/settings.crud.js +117 -0
  34. package/createFileManager/settings.crud.js.map +1 -0
  35. package/createFileManager/system.crud.d.ts +3 -0
  36. package/createFileManager/system.crud.js +88 -0
  37. package/createFileManager/system.crud.js.map +1 -0
  38. package/createFileManager/types.d.ts +16 -0
  39. package/createFileManager/types.js +7 -0
  40. package/createFileManager/types.js.map +1 -0
  41. package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +11 -0
  42. package/delivery/AssetDelivery/AliasAssetRequestResolver.js +74 -0
  43. package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +1 -0
  44. package/delivery/AssetDelivery/Asset.d.ts +32 -0
  45. package/delivery/AssetDelivery/Asset.js +69 -0
  46. package/delivery/AssetDelivery/Asset.js.map +1 -0
  47. package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +63 -0
  48. package/delivery/AssetDelivery/AssetDeliveryConfig.js +102 -0
  49. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -0
  50. package/delivery/AssetDelivery/AssetRequest.d.ts +25 -0
  51. package/delivery/AssetDelivery/AssetRequest.js +29 -0
  52. package/delivery/AssetDelivery/AssetRequest.js.map +1 -0
  53. package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +6 -0
  54. package/delivery/AssetDelivery/FilesAssetRequestResolver.js +37 -0
  55. package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -0
  56. package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +4 -0
  57. package/delivery/AssetDelivery/NullAssetOutputStrategy.js +15 -0
  58. package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -0
  59. package/delivery/AssetDelivery/NullAssetReply.d.ts +4 -0
  60. package/delivery/AssetDelivery/NullAssetReply.js +20 -0
  61. package/delivery/AssetDelivery/NullAssetReply.js.map +1 -0
  62. package/delivery/AssetDelivery/NullAssetResolver.d.ts +5 -0
  63. package/delivery/AssetDelivery/NullAssetResolver.js +14 -0
  64. package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -0
  65. package/delivery/AssetDelivery/NullRequestResolver.d.ts +4 -0
  66. package/delivery/AssetDelivery/NullRequestResolver.js +14 -0
  67. package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -0
  68. package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +8 -0
  69. package/delivery/AssetDelivery/SetCacheControlHeaders.js +25 -0
  70. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -0
  71. package/delivery/AssetDelivery/SetResponseHeaders.d.ts +18 -0
  72. package/delivery/AssetDelivery/SetResponseHeaders.js +25 -0
  73. package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -0
  74. package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +6 -0
  75. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +7 -0
  76. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +1 -0
  77. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +4 -0
  78. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +7 -0
  79. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +1 -0
  80. package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +4 -0
  81. package/delivery/AssetDelivery/abstractions/AssetProcessor.js +7 -0
  82. package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +1 -0
  83. package/delivery/AssetDelivery/abstractions/AssetReply.d.ts +25 -0
  84. package/delivery/AssetDelivery/abstractions/AssetReply.js +38 -0
  85. package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -0
  86. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +5 -0
  87. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +7 -0
  88. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +1 -0
  89. package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +4 -0
  90. package/delivery/AssetDelivery/abstractions/AssetResolver.js +7 -0
  91. package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +1 -0
  92. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +4 -0
  93. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +7 -0
  94. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +1 -0
  95. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.d.ts +2 -0
  96. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +15 -0
  97. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -0
  98. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +4 -0
  99. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +7 -0
  100. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +1 -0
  101. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +4 -0
  102. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +26 -0
  103. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -0
  104. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +4 -0
  105. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +15 -0
  106. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -0
  107. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +7 -0
  108. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +28 -0
  109. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -0
  110. package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +6 -0
  111. package/delivery/AssetDelivery/privateFiles/PrivateCache.js +28 -0
  112. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -0
  113. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +8 -0
  114. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +37 -0
  115. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -0
  116. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +13 -0
  117. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +63 -0
  118. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -0
  119. package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +6 -0
  120. package/delivery/AssetDelivery/privateFiles/PublicCache.js +28 -0
  121. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -0
  122. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +7 -0
  123. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +27 -0
  124. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -0
  125. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +7 -0
  126. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +27 -0
  127. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -0
  128. package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +7 -0
  129. package/delivery/AssetDelivery/privateFiles/internalIdentity.js +18 -0
  130. package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +1 -0
  131. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +4 -0
  132. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +14 -0
  133. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -0
  134. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +4 -0
  135. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +14 -0
  136. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -0
  137. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +6 -0
  138. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +26 -0
  139. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -0
  140. package/delivery/index.d.ts +17 -0
  141. package/delivery/index.js +194 -0
  142. package/delivery/index.js.map +1 -0
  143. package/delivery/setupAssetDelivery.d.ts +6 -0
  144. package/delivery/setupAssetDelivery.js +128 -0
  145. package/delivery/setupAssetDelivery.js.map +1 -0
  146. package/enterprise/applyThreatScanning.d.ts +2 -0
  147. package/enterprise/applyThreatScanning.js +20 -0
  148. package/enterprise/applyThreatScanning.js.map +1 -0
  149. package/graphql/baseSchema.d.ts +3 -0
  150. package/graphql/baseSchema.js +121 -0
  151. package/graphql/baseSchema.js.map +1 -0
  152. package/graphql/createFilesTypeDefs.d.ts +7 -0
  153. package/graphql/createFilesTypeDefs.js +184 -0
  154. package/graphql/createFilesTypeDefs.js.map +1 -0
  155. package/graphql/filesSchema.d.ts +4 -0
  156. package/graphql/filesSchema.js +89 -0
  157. package/graphql/filesSchema.js.map +1 -0
  158. package/graphql/getFileByUrl.d.ts +3 -0
  159. package/graphql/getFileByUrl.js +78 -0
  160. package/graphql/getFileByUrl.js.map +1 -0
  161. package/graphql/index.d.ts +4 -0
  162. package/graphql/index.js +55 -0
  163. package/graphql/index.js.map +1 -0
  164. package/graphql/utils.d.ts +11 -0
  165. package/graphql/utils.js +24 -0
  166. package/graphql/utils.js.map +1 -0
  167. package/handlers/manage/imageManager.d.ts +14 -0
  168. package/handlers/manage/imageManager.js +75 -0
  169. package/handlers/manage/imageManager.js.map +1 -0
  170. package/handlers/manage/index.d.ts +5 -3
  171. package/handlers/manage/index.js +48 -59
  172. package/handlers/manage/index.js.map +1 -0
  173. package/handlers/{transform/utils.d.ts → manage/legacyUtils.d.ts} +2 -2
  174. package/handlers/{transform/utils.js → manage/legacyUtils.js} +7 -19
  175. package/handlers/manage/legacyUtils.js.map +1 -0
  176. package/handlers/manage/utils.d.ts +12 -0
  177. package/handlers/manage/utils.js +34 -0
  178. package/handlers/manage/utils.js.map +1 -0
  179. package/handlers/types.d.ts +8 -0
  180. package/handlers/types.js +7 -0
  181. package/handlers/types.js.map +1 -0
  182. package/handlers/utils/getEnvironment.js +2 -2
  183. package/handlers/utils/getEnvironment.js.map +1 -0
  184. package/handlers/utils/getObjectParams.d.ts +3 -4
  185. package/handlers/utils/getObjectParams.js +3 -7
  186. package/handlers/utils/getObjectParams.js.map +1 -0
  187. package/handlers/utils/index.d.ts +0 -1
  188. package/handlers/utils/index.js +3 -12
  189. package/handlers/utils/index.js.map +1 -0
  190. package/index.d.ts +10 -0
  191. package/index.js +76 -0
  192. package/index.js.map +1 -0
  193. package/modelModifier/CmsModelModifier.d.ts +26 -0
  194. package/modelModifier/CmsModelModifier.js +62 -0
  195. package/modelModifier/CmsModelModifier.js.map +1 -0
  196. package/package.json +26 -36
  197. package/plugins/FilePhysicalStoragePlugin.d.ts +22 -0
  198. package/plugins/{definitions/FilePhysicalStoragePlugin.js → FilePhysicalStoragePlugin.js} +4 -15
  199. package/plugins/FilePhysicalStoragePlugin.js.map +1 -0
  200. package/plugins/{definitions/FileStorageTransformPlugin.d.ts → FileStorageTransformPlugin.d.ts} +10 -10
  201. package/plugins/{definitions/FileStorageTransformPlugin.js → FileStorageTransformPlugin.js} +4 -16
  202. package/plugins/FileStorageTransformPlugin.js.map +1 -0
  203. package/plugins/index.d.ts +2 -2
  204. package/plugins/index.js +23 -18
  205. package/plugins/index.js.map +1 -0
  206. package/storage/FileStorage.d.ts +34 -0
  207. package/storage/FileStorage.js +90 -0
  208. package/storage/FileStorage.js.map +1 -0
  209. package/types/file.d.ts +49 -0
  210. package/types/file.js +7 -0
  211. package/types/file.js.map +1 -0
  212. package/types/file.lifecycle.d.ts +44 -0
  213. package/types/file.lifecycle.js +7 -0
  214. package/types/file.lifecycle.js.map +1 -0
  215. package/types.d.ts +104 -89
  216. package/types.js +25 -1
  217. package/types.js.map +1 -0
  218. package/handlers/download/index.d.ts +0 -3
  219. package/handlers/download/index.js +0 -125
  220. package/handlers/transform/index.d.ts +0 -3
  221. package/handlers/transform/index.js +0 -96
  222. package/handlers/transform/loaders/imageLoader.d.ts +0 -13
  223. package/handlers/transform/loaders/imageLoader.js +0 -106
  224. package/handlers/transform/loaders/index.d.ts +0 -13
  225. package/handlers/transform/loaders/index.js +0 -13
  226. package/handlers/transform/loaders/sanitizeImageTransformations.d.ts +0 -7
  227. package/handlers/transform/loaders/sanitizeImageTransformations.js +0 -51
  228. package/handlers/transform/managers/imageManager.d.ts +0 -9
  229. package/handlers/transform/managers/imageManager.js +0 -55
  230. package/handlers/transform/managers/index.d.ts +0 -9
  231. package/handlers/transform/managers/index.js +0 -13
  232. package/handlers/transform/optimizeImage.d.ts +0 -2
  233. package/handlers/transform/optimizeImage.js +0 -45
  234. package/handlers/transform/transformImage.d.ts +0 -9
  235. package/handlers/transform/transformImage.js +0 -30
  236. package/handlers/utils/createHandler.d.ts +0 -24
  237. package/handlers/utils/createHandler.js +0 -68
  238. package/plugins/crud/files/validation.d.ts +0 -3
  239. package/plugins/crud/files/validation.js +0 -41
  240. package/plugins/crud/files.crud.d.ts +0 -4
  241. package/plugins/crud/files.crud.js +0 -427
  242. package/plugins/crud/settings.crud.d.ts +0 -5
  243. package/plugins/crud/settings.crud.js +0 -115
  244. package/plugins/crud/system.crud.d.ts +0 -4
  245. package/plugins/crud/system.crud.js +0 -145
  246. package/plugins/crud/utils/checkBasePermissions.d.ts +0 -5
  247. package/plugins/crud/utils/checkBasePermissions.js +0 -33
  248. package/plugins/crud/utils/createFileModel.d.ts +0 -2
  249. package/plugins/crud/utils/createFileModel.js +0 -64
  250. package/plugins/crud/utils/lifecycleEvents.d.ts +0 -6
  251. package/plugins/crud/utils/lifecycleEvents.js +0 -33
  252. package/plugins/definitions/FilePhysicalStoragePlugin.d.ts +0 -22
  253. package/plugins/definitions/FilePlugin.d.ts +0 -133
  254. package/plugins/definitions/FilePlugin.js +0 -64
  255. package/plugins/definitions/FilesStorageOperationsProviderPlugin.d.ts +0 -9
  256. package/plugins/definitions/FilesStorageOperationsProviderPlugin.js +0 -17
  257. package/plugins/definitions/InstallationPlugin.d.ts +0 -19
  258. package/plugins/definitions/InstallationPlugin.js +0 -40
  259. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.d.ts +0 -9
  260. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js +0 -17
  261. package/plugins/definitions/SystemStorageOperationsProviderPlugin.d.ts +0 -9
  262. package/plugins/definitions/SystemStorageOperationsProviderPlugin.js +0 -17
  263. package/plugins/graphql.d.ts +0 -4
  264. package/plugins/graphql.js +0 -274
  265. package/plugins/storage/FileStorage.d.ts +0 -31
  266. package/plugins/storage/FileStorage.js +0 -95
  267. package/plugins/storage/index.d.ts +0 -4
  268. package/plugins/storage/index.js +0 -22
  269. package/utils.d.ts +0 -4
  270. package/utils.js +0 -16
@@ -0,0 +1,13 @@
1
+ import { type FileManagerContext } from "./types";
2
+ import type { FileManagerConfig } from "./createFileManager/types";
3
+ export declare class FileManagerContextSetup {
4
+ private readonly context;
5
+ constructor(context: FileManagerContext);
6
+ setupContext(storageOperations: FileManagerConfig["storageOperations"]): Promise<import("./types").FileManagerContextObject>;
7
+ private getLocaleCode;
8
+ private getIdentity;
9
+ private getTenantId;
10
+ private getPermissions;
11
+ private setupCmsStorageOperations;
12
+ private getModel;
13
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.FileManagerContextSetup = void 0;
8
+ var _createFileManager = require("./createFileManager");
9
+ var _FileStorage = require("./storage/FileStorage");
10
+ var _error = _interopRequireDefault(require("@webiny/error"));
11
+ var _file = require("./cmsFileStorage/file.model");
12
+ var _CmsFilesStorage = require("./cmsFileStorage/CmsFilesStorage");
13
+ var _CmsModelModifier = require("./modelModifier/CmsModelModifier");
14
+ var _apiHeadlessCms = require("@webiny/api-headless-cms");
15
+ var _FilesPermissions = require("./createFileManager/permissions/FilesPermissions");
16
+ var _SettingsPermissions = require("./createFileManager/permissions/SettingsPermissions");
17
+ class FileManagerContextSetup {
18
+ constructor(context) {
19
+ this.context = context;
20
+ }
21
+ async setupContext(storageOperations) {
22
+ if (storageOperations.beforeInit) {
23
+ await storageOperations.beforeInit(this.context);
24
+ }
25
+ const fileStorageOps = await this.context.security.withoutAuthorization(() => {
26
+ return this.setupCmsStorageOperations(storageOperations.aliases);
27
+ });
28
+ if (fileStorageOps) {
29
+ storageOperations.files = fileStorageOps;
30
+ }
31
+ const filesPermissions = new _FilesPermissions.FilesPermissions({
32
+ getIdentity: this.context.security.getIdentity,
33
+ getPermissions: () => this.context.security.getPermissions("fm.file"),
34
+ fullAccessPermissionName: "fm.*"
35
+ });
36
+ const settingsPermissions = new _SettingsPermissions.SettingsPermissions({
37
+ getIdentity: this.context.security.getIdentity,
38
+ getPermissions: () => this.context.security.getPermissions("fm.settings"),
39
+ fullAccessPermissionName: "fm.*"
40
+ });
41
+ return (0, _createFileManager.createFileManager)({
42
+ storageOperations,
43
+ filesPermissions,
44
+ settingsPermissions,
45
+ getTenantId: this.getTenantId.bind(this),
46
+ getLocaleCode: this.getLocaleCode.bind(this),
47
+ getIdentity: this.getIdentity.bind(this),
48
+ getPermissions: this.getPermissions.bind(this),
49
+ storage: new _FileStorage.FileStorage({
50
+ context: this.context
51
+ }),
52
+ // TODO: maybe this is no longer necessary, as this wil be managed by CMS?
53
+ WEBINY_VERSION: this.context.WEBINY_VERSION
54
+ });
55
+ }
56
+ getLocaleCode() {
57
+ const locale = this.context.i18n.getContentLocale();
58
+ if (!locale) {
59
+ throw new _error.default("Missing locale on context.i18n locale in File Manager API.", "LOCALE_ERROR");
60
+ }
61
+ return locale.code;
62
+ }
63
+ getIdentity() {
64
+ return this.context.security.getIdentity();
65
+ }
66
+ getTenantId() {
67
+ return this.context.tenancy.getCurrentTenant().id;
68
+ }
69
+ async getPermissions(name) {
70
+ return this.context.security.getPermissions(name);
71
+ }
72
+ async setupCmsStorageOperations(aliases) {
73
+ if (!(await (0, _apiHeadlessCms.isHeadlessCmsReady)(this.context))) {
74
+ console.log("Installation pending!");
75
+ return;
76
+ }
77
+ const withPrivateFiles = this.context.wcp.canUsePrivateFiles();
78
+
79
+ // This registers code plugins (model group, models)
80
+ const fileModelDefinition = (0, _file.createFileModel)({
81
+ withPrivateFiles
82
+ });
83
+ const modelModifiers = this.context.plugins.byType(_CmsModelModifier.CmsModelModifierPlugin.type);
84
+ for (const modifier of modelModifiers) {
85
+ await modifier.modifyModel(fileModelDefinition);
86
+ }
87
+
88
+ // Finally, register all plugins
89
+ this.context.plugins.register([new _apiHeadlessCms.CmsModelPlugin(fileModelDefinition)]);
90
+
91
+ // Now load the file model registered in the previous step
92
+ const fileModel = await this.getModel(_file.FILE_MODEL_ID);
93
+
94
+ // Overwrite the original `files` storage ops
95
+ return await _CmsFilesStorage.CmsFilesStorage.create({
96
+ fileModel,
97
+ cms: this.context.cms,
98
+ security: this.context.security,
99
+ aliases
100
+ });
101
+ }
102
+ async getModel(modelId) {
103
+ const model = await this.context.cms.getModel(modelId);
104
+ if (!model) {
105
+ throw new _error.default({
106
+ code: "MODEL_NOT_FOUND",
107
+ message: `Content model "${modelId}" was not found!`
108
+ });
109
+ }
110
+ return model;
111
+ }
112
+ }
113
+ exports.FileManagerContextSetup = FileManagerContextSetup;
114
+
115
+ //# sourceMappingURL=FileManagerContextSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_createFileManager","require","_FileStorage","_error","_interopRequireDefault","_file","_CmsFilesStorage","_CmsModelModifier","_apiHeadlessCms","_FilesPermissions","_SettingsPermissions","FileManagerContextSetup","constructor","context","setupContext","storageOperations","beforeInit","fileStorageOps","security","withoutAuthorization","setupCmsStorageOperations","aliases","files","filesPermissions","FilesPermissions","getIdentity","getPermissions","fullAccessPermissionName","settingsPermissions","SettingsPermissions","createFileManager","getTenantId","bind","getLocaleCode","storage","FileStorage","WEBINY_VERSION","locale","i18n","getContentLocale","WebinyError","code","tenancy","getCurrentTenant","id","name","isHeadlessCmsReady","console","log","withPrivateFiles","wcp","canUsePrivateFiles","fileModelDefinition","createFileModel","modelModifiers","plugins","byType","CmsModelModifierPlugin","type","modifier","modifyModel","register","CmsModelPlugin","fileModel","getModel","FILE_MODEL_ID","CmsFilesStorage","create","cms","modelId","model","message","exports"],"sources":["FileManagerContextSetup.ts"],"sourcesContent":["import type { FileManagerAliasesStorageOperations, FilePermission } from \"~/types\";\nimport { type FileManagerContext, type SettingsPermission } from \"~/types\";\nimport type { FileManagerConfig } from \"~/createFileManager/types\";\nimport { createFileManager } from \"~/createFileManager\";\nimport { FileStorage } from \"~/storage/FileStorage\";\nimport WebinyError from \"@webiny/error\";\nimport type { SecurityPermission } from \"@webiny/api-security/types\";\nimport { createFileModel, FILE_MODEL_ID } from \"~/cmsFileStorage/file.model\";\nimport { CmsFilesStorage } from \"~/cmsFileStorage/CmsFilesStorage\";\nimport { CmsModelModifierPlugin } from \"~/modelModifier/CmsModelModifier\";\nimport { CmsModelPlugin, isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\nimport { FilesPermissions } from \"~/createFileManager/permissions/FilesPermissions\";\nimport { SettingsPermissions } from \"~/createFileManager/permissions/SettingsPermissions\";\n\nexport class FileManagerContextSetup {\n private readonly context: FileManagerContext;\n\n constructor(context: FileManagerContext) {\n this.context = context;\n }\n\n async setupContext(storageOperations: FileManagerConfig[\"storageOperations\"]) {\n if (storageOperations.beforeInit) {\n await storageOperations.beforeInit(this.context);\n }\n\n const fileStorageOps = await this.context.security.withoutAuthorization(() => {\n return this.setupCmsStorageOperations(storageOperations.aliases);\n });\n\n if (fileStorageOps) {\n storageOperations.files = fileStorageOps;\n }\n\n const filesPermissions = new FilesPermissions({\n getIdentity: this.context.security.getIdentity,\n getPermissions: () => this.context.security.getPermissions<FilePermission>(\"fm.file\"),\n fullAccessPermissionName: \"fm.*\"\n });\n\n const settingsPermissions = new SettingsPermissions({\n getIdentity: this.context.security.getIdentity,\n getPermissions: () =>\n this.context.security.getPermissions<SettingsPermission>(\"fm.settings\"),\n fullAccessPermissionName: \"fm.*\"\n });\n\n return createFileManager({\n storageOperations,\n filesPermissions,\n settingsPermissions,\n getTenantId: this.getTenantId.bind(this),\n getLocaleCode: this.getLocaleCode.bind(this),\n getIdentity: this.getIdentity.bind(this),\n getPermissions: this.getPermissions.bind(this),\n storage: new FileStorage({\n context: this.context\n }),\n // TODO: maybe this is no longer necessary, as this wil be managed by CMS?\n WEBINY_VERSION: this.context.WEBINY_VERSION\n });\n }\n\n private getLocaleCode() {\n const locale = this.context.i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing locale on context.i18n locale in File Manager API.\",\n \"LOCALE_ERROR\"\n );\n }\n return locale.code;\n }\n\n private getIdentity() {\n return this.context.security.getIdentity();\n }\n\n private getTenantId() {\n return this.context.tenancy.getCurrentTenant().id;\n }\n\n private async getPermissions<T extends SecurityPermission = SecurityPermission>(\n name: string\n ): Promise<T[]> {\n return this.context.security.getPermissions(name);\n }\n\n private async setupCmsStorageOperations(aliases: FileManagerAliasesStorageOperations) {\n if (!(await isHeadlessCmsReady(this.context))) {\n console.log(\"Installation pending!\");\n return;\n }\n\n const withPrivateFiles = this.context.wcp.canUsePrivateFiles();\n\n // This registers code plugins (model group, models)\n const fileModelDefinition = createFileModel({ withPrivateFiles });\n\n const modelModifiers = this.context.plugins.byType<CmsModelModifierPlugin>(\n CmsModelModifierPlugin.type\n );\n\n for (const modifier of modelModifiers) {\n await modifier.modifyModel(fileModelDefinition);\n }\n\n // Finally, register all plugins\n this.context.plugins.register([new CmsModelPlugin(fileModelDefinition)]);\n\n // Now load the file model registered in the previous step\n const fileModel = await this.getModel(FILE_MODEL_ID);\n\n // Overwrite the original `files` storage ops\n return await CmsFilesStorage.create({\n fileModel,\n cms: this.context.cms,\n security: this.context.security,\n aliases\n });\n }\n\n private async getModel(modelId: string) {\n const model = await this.context.cms.getModel(modelId);\n if (!model) {\n throw new WebinyError({\n code: \"MODEL_NOT_FOUND\",\n message: `Content model \"${modelId}\" was not found!`\n });\n }\n\n return model;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
5
5
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
6
6
 
7
- The API for Webiny Admin's ([@webiny/admin](../app-admin)) File Manager.
7
+ The API for Webiny Admin's ([@webiny/app-admin](../app-admin)) File Manager.
8
8
 
9
9
  ## Install
10
10
  ```
@@ -0,0 +1,27 @@
1
+ import type { CmsModel, HeadlessCms } from "@webiny/api-headless-cms/types";
2
+ import type { Security } from "@webiny/api-security/types";
3
+ import type { File, FileManagerAliasesStorageOperations, FileManagerFilesStorageOperations, FileManagerFilesStorageOperationsCreateBatchParams, FileManagerFilesStorageOperationsCreateParams, FileManagerFilesStorageOperationsDeleteParams, FileManagerFilesStorageOperationsGetParams, FileManagerFilesStorageOperationsListParams, FileManagerFilesStorageOperationsListResponse, FileManagerFilesStorageOperationsTagsParams, FileManagerFilesStorageOperationsTagsResponse, FileManagerFilesStorageOperationsUpdateParams } from "../types";
4
+ export declare class CmsFilesStorage implements FileManagerFilesStorageOperations {
5
+ private readonly cms;
6
+ private readonly security;
7
+ private readonly model;
8
+ private readonly aliases;
9
+ private readonly filesWhereProcessor;
10
+ private readonly tagsWhereProcessor;
11
+ static create(params: {
12
+ fileModel: CmsModel;
13
+ cms: HeadlessCms;
14
+ security: Security;
15
+ aliases: FileManagerAliasesStorageOperations;
16
+ }): Promise<CmsFilesStorage>;
17
+ private constructor();
18
+ private modelWithContext;
19
+ create({ file }: FileManagerFilesStorageOperationsCreateParams): Promise<File>;
20
+ createBatch({ files }: FileManagerFilesStorageOperationsCreateBatchParams): Promise<File[]>;
21
+ delete({ file }: FileManagerFilesStorageOperationsDeleteParams): Promise<void>;
22
+ get({ where }: FileManagerFilesStorageOperationsGetParams): Promise<File | null>;
23
+ list(params: FileManagerFilesStorageOperationsListParams): Promise<FileManagerFilesStorageOperationsListResponse>;
24
+ tags(params: FileManagerFilesStorageOperationsTagsParams): Promise<FileManagerFilesStorageOperationsTagsResponse[]>;
25
+ update({ file }: FileManagerFilesStorageOperationsUpdateParams): Promise<File>;
26
+ private getFileFieldValues;
27
+ }
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.CmsFilesStorage = void 0;
8
+ var _omit = _interopRequireDefault(require("lodash/omit"));
9
+ var _ListFilesWhereProcessor = require("./ListFilesWhereProcessor");
10
+ var _ListTagsWhereProcessor = require("./ListTagsWhereProcessor");
11
+ var _contants = require("../contants");
12
+ class CmsFilesStorage {
13
+ static async create(params) {
14
+ return new CmsFilesStorage(params.fileModel, params.cms, params.security, params.aliases);
15
+ }
16
+ constructor(fileModel, cms, security, aliases) {
17
+ this.model = fileModel;
18
+ this.aliases = aliases;
19
+ this.cms = cms;
20
+ this.security = security;
21
+ this.filesWhereProcessor = new _ListFilesWhereProcessor.ListFilesWhereProcessor();
22
+ this.tagsWhereProcessor = new _ListTagsWhereProcessor.ListTagsWhereProcessor();
23
+ }
24
+ modelWithContext({
25
+ tenant,
26
+ locale
27
+ }) {
28
+ return {
29
+ ...this.model,
30
+ tenant,
31
+ locale
32
+ };
33
+ }
34
+ async create({
35
+ file
36
+ }) {
37
+ const model = this.modelWithContext(file);
38
+ if (!file.location?.folderId) {
39
+ file.location = {
40
+ ...file.location,
41
+ folderId: _contants.ROOT_FOLDER
42
+ };
43
+ }
44
+ const entry = await this.cms.createEntry(model, {
45
+ ...file,
46
+ wbyAco_location: file.location
47
+ });
48
+ await this.aliases.storeAliases(file);
49
+ return this.getFileFieldValues(entry);
50
+ }
51
+ async createBatch({
52
+ files
53
+ }) {
54
+ return await Promise.all(files.map(file => {
55
+ return this.create({
56
+ file
57
+ });
58
+ }));
59
+ }
60
+ async delete({
61
+ file
62
+ }) {
63
+ const model = this.modelWithContext(file);
64
+ await this.cms.deleteEntry(model, file.id);
65
+ await this.aliases.deleteAliases(file);
66
+ }
67
+ async get({
68
+ where
69
+ }) {
70
+ const {
71
+ id,
72
+ tenant,
73
+ locale
74
+ } = where;
75
+ const model = this.modelWithContext({
76
+ tenant,
77
+ locale
78
+ });
79
+ const entry = await this.cms.getEntry(model, {
80
+ where: {
81
+ entryId: id,
82
+ latest: true
83
+ }
84
+ });
85
+ return entry ? this.getFileFieldValues(entry) : null;
86
+ }
87
+ async list(params) {
88
+ const tenant = params.where.tenant;
89
+ const locale = params.where.locale;
90
+ const model = this.modelWithContext({
91
+ tenant,
92
+ locale
93
+ });
94
+ const where = this.filesWhereProcessor.process(params.where);
95
+ const [entries, meta] = await this.cms.listLatestEntries(model, {
96
+ after: params.after,
97
+ limit: params.limit,
98
+ sort: params.sort,
99
+ where,
100
+ search: params.search
101
+ });
102
+ return [entries.map(entry => this.getFileFieldValues(entry)), meta];
103
+ }
104
+ async tags(params) {
105
+ const tenant = params.where.tenant;
106
+ const locale = params.where.locale;
107
+ const model = this.modelWithContext({
108
+ tenant,
109
+ locale
110
+ });
111
+ const uniqueValues = await this.cms.getUniqueFieldValues(model, {
112
+ fieldId: "tags",
113
+ where: {
114
+ ...this.tagsWhereProcessor.process(params.where),
115
+ latest: true
116
+ }
117
+ });
118
+ return uniqueValues.map(uv => ({
119
+ tag: uv.value,
120
+ count: uv.count
121
+ })).sort((a, b) => {
122
+ return a.tag < b.tag ? -1 : 1;
123
+ }).sort((a, b) => {
124
+ return a.count > b.count ? -1 : 1;
125
+ });
126
+ }
127
+ async update({
128
+ file
129
+ }) {
130
+ const model = this.modelWithContext(file);
131
+ const entry = await this.cms.getEntry(model, {
132
+ where: {
133
+ entryId: file.id,
134
+ latest: true
135
+ }
136
+ });
137
+ const values = (0, _omit.default)(file, ["id", "tenant", "locale", "webinyVersion"]);
138
+ const updatedEntry = await this.cms.updateEntry(model, entry.id, {
139
+ ...values,
140
+ wbyAco_location: values.location ?? entry.location
141
+ });
142
+ await this.aliases.storeAliases(file);
143
+ return this.getFileFieldValues(updatedEntry);
144
+ }
145
+ getFileFieldValues(entry) {
146
+ return {
147
+ id: entry.entryId,
148
+ // We're safe to use entry-level meta fields because we don't use revisions with files.
149
+ createdBy: entry.createdBy,
150
+ modifiedBy: entry.modifiedBy || null,
151
+ savedBy: entry.savedBy,
152
+ createdOn: entry.createdOn,
153
+ modifiedOn: entry.modifiedOn || null,
154
+ savedOn: entry.savedOn,
155
+ locale: entry.locale,
156
+ tenant: entry.tenant,
157
+ webinyVersion: entry.webinyVersion,
158
+ ...entry.values
159
+ };
160
+ }
161
+ }
162
+ exports.CmsFilesStorage = CmsFilesStorage;
163
+
164
+ //# sourceMappingURL=CmsFilesStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_omit","_interopRequireDefault","require","_ListFilesWhereProcessor","_ListTagsWhereProcessor","_contants","CmsFilesStorage","create","params","fileModel","cms","security","aliases","constructor","model","filesWhereProcessor","ListFilesWhereProcessor","tagsWhereProcessor","ListTagsWhereProcessor","modelWithContext","tenant","locale","file","location","folderId","ROOT_FOLDER","entry","createEntry","wbyAco_location","storeAliases","getFileFieldValues","createBatch","files","Promise","all","map","delete","deleteEntry","id","deleteAliases","get","where","getEntry","entryId","latest","list","process","entries","meta","listLatestEntries","after","limit","sort","search","tags","uniqueValues","getUniqueFieldValues","fieldId","uv","tag","value","count","a","b","update","values","omit","updatedEntry","updateEntry","createdBy","modifiedBy","savedBy","createdOn","modifiedOn","savedOn","webinyVersion","exports"],"sources":["CmsFilesStorage.ts"],"sourcesContent":["import omit from \"lodash/omit\";\nimport type { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport type { Security } from \"@webiny/api-security/types\";\nimport type {\n File,\n FileManagerAliasesStorageOperations,\n FileManagerFilesStorageOperations,\n FileManagerFilesStorageOperationsCreateBatchParams,\n FileManagerFilesStorageOperationsCreateParams,\n FileManagerFilesStorageOperationsDeleteParams,\n FileManagerFilesStorageOperationsGetParams,\n FileManagerFilesStorageOperationsListParams,\n FileManagerFilesStorageOperationsListResponse,\n FileManagerFilesStorageOperationsTagsParams,\n FileManagerFilesStorageOperationsTagsResponse,\n FileManagerFilesStorageOperationsUpdateParams\n} from \"~/types\";\nimport { ListFilesWhereProcessor } from \"~/cmsFileStorage/ListFilesWhereProcessor\";\nimport { ListTagsWhereProcessor } from \"~/cmsFileStorage/ListTagsWhereProcessor\";\nimport { ROOT_FOLDER } from \"~/contants\";\n\ninterface ModelContext {\n tenant: string;\n locale: string;\n}\n\nexport class CmsFilesStorage implements FileManagerFilesStorageOperations {\n private readonly cms: HeadlessCms;\n private readonly security: Security;\n private readonly model: CmsModel;\n private readonly aliases: FileManagerAliasesStorageOperations;\n private readonly filesWhereProcessor: ListFilesWhereProcessor;\n private readonly tagsWhereProcessor: ListTagsWhereProcessor;\n\n static async create(params: {\n fileModel: CmsModel;\n cms: HeadlessCms;\n security: Security;\n aliases: FileManagerAliasesStorageOperations;\n }) {\n return new CmsFilesStorage(params.fileModel, params.cms, params.security, params.aliases);\n }\n\n private constructor(\n fileModel: CmsModel,\n cms: HeadlessCms,\n security: Security,\n aliases: FileManagerAliasesStorageOperations\n ) {\n this.model = fileModel;\n this.aliases = aliases;\n this.cms = cms;\n this.security = security;\n this.filesWhereProcessor = new ListFilesWhereProcessor();\n this.tagsWhereProcessor = new ListTagsWhereProcessor();\n }\n\n private modelWithContext({ tenant, locale }: ModelContext): CmsModel {\n return { ...this.model, tenant, locale };\n }\n\n async create({ file }: FileManagerFilesStorageOperationsCreateParams): Promise<File> {\n const model = this.modelWithContext(file);\n\n if (!file.location?.folderId) {\n file.location = {\n ...file.location,\n folderId: ROOT_FOLDER\n };\n }\n\n const entry = await this.cms.createEntry(model, {\n ...file,\n wbyAco_location: file.location\n });\n\n await this.aliases.storeAliases(file);\n\n return this.getFileFieldValues(entry);\n }\n\n async createBatch({\n files\n }: FileManagerFilesStorageOperationsCreateBatchParams): Promise<File[]> {\n return await Promise.all(\n files.map(file => {\n return this.create({ file });\n })\n );\n }\n\n async delete({ file }: FileManagerFilesStorageOperationsDeleteParams): Promise<void> {\n const model = this.modelWithContext(file);\n await this.cms.deleteEntry(model, file.id);\n\n await this.aliases.deleteAliases(file);\n }\n\n async get({ where }: FileManagerFilesStorageOperationsGetParams): Promise<File | null> {\n const { id, tenant, locale } = where;\n const model = this.modelWithContext({ tenant, locale });\n const entry = await this.cms.getEntry(model, { where: { entryId: id, latest: true } });\n return entry ? this.getFileFieldValues(entry) : null;\n }\n\n async list(\n params: FileManagerFilesStorageOperationsListParams\n ): Promise<FileManagerFilesStorageOperationsListResponse> {\n const tenant = params.where.tenant;\n const locale = params.where.locale;\n\n const model = this.modelWithContext({ tenant, locale });\n\n const where = this.filesWhereProcessor.process(params.where);\n const [entries, meta] = await this.cms.listLatestEntries(model, {\n after: params.after,\n limit: params.limit,\n sort: params.sort,\n where,\n search: params.search\n });\n\n return [entries.map(entry => this.getFileFieldValues(entry)), meta];\n }\n\n async tags(\n params: FileManagerFilesStorageOperationsTagsParams\n ): Promise<FileManagerFilesStorageOperationsTagsResponse[]> {\n const tenant = params.where.tenant;\n const locale = params.where.locale;\n const model = this.modelWithContext({ tenant, locale });\n const uniqueValues = await this.cms.getUniqueFieldValues(model, {\n fieldId: \"tags\",\n where: {\n ...this.tagsWhereProcessor.process(params.where),\n latest: true\n }\n });\n\n return uniqueValues\n .map(uv => ({\n tag: uv.value,\n count: uv.count\n }))\n .sort((a, b) => {\n return a.tag < b.tag ? -1 : 1;\n })\n .sort((a, b) => {\n return a.count > b.count ? -1 : 1;\n });\n }\n\n async update({ file }: FileManagerFilesStorageOperationsUpdateParams): Promise<File> {\n const model = this.modelWithContext(file);\n\n const entry = await this.cms.getEntry(model, {\n where: { entryId: file.id, latest: true }\n });\n\n const values = omit(file, [\"id\", \"tenant\", \"locale\", \"webinyVersion\"]);\n\n const updatedEntry = await this.cms.updateEntry(model, entry.id, {\n ...values,\n wbyAco_location: values.location ?? entry.location\n });\n\n await this.aliases.storeAliases(file);\n\n return this.getFileFieldValues(updatedEntry);\n }\n\n private getFileFieldValues(entry: CmsEntry) {\n return {\n id: entry.entryId,\n\n // We're safe to use entry-level meta fields because we don't use revisions with files.\n createdBy: entry.createdBy,\n modifiedBy: entry.modifiedBy || null,\n savedBy: entry.savedBy,\n createdOn: entry.createdOn,\n modifiedOn: entry.modifiedOn || null,\n savedOn: entry.savedOn,\n\n locale: entry.locale,\n tenant: entry.tenant,\n webinyVersion: entry.webinyVersion,\n ...entry.values\n } as File;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { CmsEntryListWhere } from "@webiny/api-headless-cms/types";
2
+ import type { FileManagerFilesStorageOperationsListParamsWhere } from "../types";
3
+ export declare class ListFilesWhereProcessor {
4
+ private readonly skipKeys;
5
+ private readonly keyMap;
6
+ process(input: FileManagerFilesStorageOperationsListParamsWhere): CmsEntryListWhere;
7
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ListFilesWhereProcessor = void 0;
7
+ class ListFilesWhereProcessor {
8
+ skipKeys = ["tenant", "locale"];
9
+ keyMap = {
10
+ id: "entryId",
11
+ id_in: "entryId_in"
12
+ };
13
+ process(input) {
14
+ const where = {
15
+ meta: {
16
+ private_not: true
17
+ }
18
+ };
19
+ Object.keys(input).filter(key => !this.skipKeys.includes(key)).forEach(key => {
20
+ const remappedKey = this.keyMap[key];
21
+ const value = input[key];
22
+ if (remappedKey && value !== undefined) {
23
+ where[remappedKey] = value;
24
+ } else if (value !== undefined) {
25
+ where[key] = value;
26
+ }
27
+ });
28
+ return where;
29
+ }
30
+ }
31
+ exports.ListFilesWhereProcessor = ListFilesWhereProcessor;
32
+
33
+ //# sourceMappingURL=ListFilesWhereProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ListFilesWhereProcessor","skipKeys","keyMap","id","id_in","process","input","where","meta","private_not","Object","keys","filter","key","includes","forEach","remappedKey","value","undefined","exports"],"sources":["ListFilesWhereProcessor.ts"],"sourcesContent":["import type { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport type { FileManagerFilesStorageOperationsListParamsWhere } from \"~/types\";\n\ntype StandardFileKey = keyof FileManagerFilesStorageOperationsListParamsWhere;\ntype CmsEntryListWhereKey = keyof CmsEntryListWhere;\n\nexport class ListFilesWhereProcessor {\n private readonly skipKeys = [\"tenant\", \"locale\"];\n private readonly keyMap: Partial<Record<StandardFileKey, CmsEntryListWhereKey>> = {\n id: \"entryId\",\n id_in: \"entryId_in\"\n };\n\n process(input: FileManagerFilesStorageOperationsListParamsWhere): CmsEntryListWhere {\n const where: CmsEntryListWhere = { meta: { private_not: true } };\n\n Object.keys(input)\n .filter(key => !this.skipKeys.includes(key))\n .forEach(key => {\n const remappedKey = this.keyMap[key];\n const value = input[key];\n\n if (remappedKey && value !== undefined) {\n where[remappedKey] = value;\n } else if (value !== undefined) {\n where[key] = value;\n }\n });\n\n return where;\n }\n}\n"],"mappings":";;;;;;AAMO,MAAMA,uBAAuB,CAAC;EAChBC,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;EAC/BC,MAAM,GAA2D;IAC9EC,EAAE,EAAE,SAAS;IACbC,KAAK,EAAE;EACX,CAAC;EAEDC,OAAOA,CAACC,KAAuD,EAAqB;IAChF,MAAMC,KAAwB,GAAG;MAAEC,IAAI,EAAE;QAAEC,WAAW,EAAE;MAAK;IAAE,CAAC;IAEhEC,MAAM,CAACC,IAAI,CAACL,KAAK,CAAC,CACbM,MAAM,CAACC,GAAG,IAAI,CAAC,IAAI,CAACZ,QAAQ,CAACa,QAAQ,CAACD,GAAG,CAAC,CAAC,CAC3CE,OAAO,CAACF,GAAG,IAAI;MACZ,MAAMG,WAAW,GAAG,IAAI,CAACd,MAAM,CAACW,GAAG,CAAC;MACpC,MAAMI,KAAK,GAAGX,KAAK,CAACO,GAAG,CAAC;MAExB,IAAIG,WAAW,IAAIC,KAAK,KAAKC,SAAS,EAAE;QACpCX,KAAK,CAACS,WAAW,CAAC,GAAGC,KAAK;MAC9B,CAAC,MAAM,IAAIA,KAAK,KAAKC,SAAS,EAAE;QAC5BX,KAAK,CAACM,GAAG,CAAC,GAAGI,KAAK;MACtB;IACJ,CAAC,CAAC;IAEN,OAAOV,KAAK;EAChB;AACJ;AAACY,OAAA,CAAAnB,uBAAA,GAAAA,uBAAA","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { CmsEntryListWhere } from "@webiny/api-headless-cms/types";
2
+ import type { FileManagerFilesStorageOperationsListParamsWhere } from "../types";
3
+ export declare class ListTagsWhereProcessor {
4
+ private readonly skipKeys;
5
+ private readonly keyMap;
6
+ process(input: FileManagerFilesStorageOperationsListParamsWhere): CmsEntryListWhere;
7
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ListTagsWhereProcessor = void 0;
7
+ class ListTagsWhereProcessor {
8
+ skipKeys = ["tenant", "locale"];
9
+ keyMap = {
10
+ tag_startsWith: "tags_startsWith",
11
+ tag_not_startsWith: "tags_not_startsWith"
12
+ };
13
+ process(input) {
14
+ const where = {
15
+ meta: {
16
+ private_not: true
17
+ }
18
+ };
19
+ Object.keys(input).filter(key => !this.skipKeys.includes(key)).forEach(key => {
20
+ const remappedKey = this.keyMap[key];
21
+ const value = input[key];
22
+ if (remappedKey && value !== undefined) {
23
+ where[remappedKey] = value;
24
+ } else if (value !== undefined) {
25
+ where[key] = value;
26
+ }
27
+ });
28
+ return where;
29
+ }
30
+ }
31
+ exports.ListTagsWhereProcessor = ListTagsWhereProcessor;
32
+
33
+ //# sourceMappingURL=ListTagsWhereProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ListTagsWhereProcessor","skipKeys","keyMap","tag_startsWith","tag_not_startsWith","process","input","where","meta","private_not","Object","keys","filter","key","includes","forEach","remappedKey","value","undefined","exports"],"sources":["ListTagsWhereProcessor.ts"],"sourcesContent":["import type { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport type { FileManagerFilesStorageOperationsListParamsWhere } from \"~/types\";\n\ntype StandardFileKey = keyof FileManagerFilesStorageOperationsListParamsWhere;\ntype CmsEntryListWhereKey = keyof CmsEntryListWhere;\n\nexport class ListTagsWhereProcessor {\n private readonly skipKeys = [\"tenant\", \"locale\"];\n private readonly keyMap: Partial<Record<StandardFileKey, CmsEntryListWhereKey>> = {\n tag_startsWith: \"tags_startsWith\",\n tag_not_startsWith: \"tags_not_startsWith\"\n };\n\n process(input: FileManagerFilesStorageOperationsListParamsWhere): CmsEntryListWhere {\n const where: CmsEntryListWhere = { meta: { private_not: true } };\n\n Object.keys(input)\n .filter(key => !this.skipKeys.includes(key))\n .forEach(key => {\n const remappedKey = this.keyMap[key];\n const value = input[key];\n\n if (remappedKey && value !== undefined) {\n where[remappedKey] = value;\n } else if (value !== undefined) {\n where[key] = value;\n }\n });\n\n return where;\n }\n}\n"],"mappings":";;;;;;AAMO,MAAMA,sBAAsB,CAAC;EACfC,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;EAC/BC,MAAM,GAA2D;IAC9EC,cAAc,EAAE,iBAAiB;IACjCC,kBAAkB,EAAE;EACxB,CAAC;EAEDC,OAAOA,CAACC,KAAuD,EAAqB;IAChF,MAAMC,KAAwB,GAAG;MAAEC,IAAI,EAAE;QAAEC,WAAW,EAAE;MAAK;IAAE,CAAC;IAEhEC,MAAM,CAACC,IAAI,CAACL,KAAK,CAAC,CACbM,MAAM,CAACC,GAAG,IAAI,CAAC,IAAI,CAACZ,QAAQ,CAACa,QAAQ,CAACD,GAAG,CAAC,CAAC,CAC3CE,OAAO,CAACF,GAAG,IAAI;MACZ,MAAMG,WAAW,GAAG,IAAI,CAACd,MAAM,CAACW,GAAG,CAAC;MACpC,MAAMI,KAAK,GAAGX,KAAK,CAACO,GAAG,CAAC;MAExB,IAAIG,WAAW,IAAIC,KAAK,KAAKC,SAAS,EAAE;QACpCX,KAAK,CAACS,WAAW,CAAC,GAAGC,KAAK;MAC9B,CAAC,MAAM,IAAIA,KAAK,KAAKC,SAAS,EAAE;QAC5BX,KAAK,CAACM,GAAG,CAAC,GAAGI,KAAK;MACtB;IACJ,CAAC,CAAC;IAEN,OAAOV,KAAK;EAChB;AACJ;AAACY,OAAA,CAAAnB,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ export declare const FILE_MODEL_ID = "fmFile";
2
+ interface CreateFileModelDefinitionParams {
3
+ withPrivateFiles: boolean;
4
+ }
5
+ export declare const createFileModel: (params: CreateFileModelDefinitionParams) => import("@webiny/api-headless-cms").CmsPrivateModelFull;
6
+ export {};
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createFileModel = exports.FILE_MODEL_ID = void 0;
7
+ var _apiHeadlessCms = require("@webiny/api-headless-cms");
8
+ const required = () => {
9
+ return {
10
+ name: "required",
11
+ message: "Value is required."
12
+ };
13
+ };
14
+ const nameField = () => {
15
+ return (0, _apiHeadlessCms.createModelField)({
16
+ label: "Name",
17
+ type: "text",
18
+ validation: [required()]
19
+ });
20
+ };
21
+ const keyField = () => {
22
+ return (0, _apiHeadlessCms.createModelField)({
23
+ label: "Key",
24
+ type: "text",
25
+ validation: [required()]
26
+ });
27
+ };
28
+ const typeField = () => {
29
+ return (0, _apiHeadlessCms.createModelField)({
30
+ label: "Type",
31
+ type: "text",
32
+ validation: [required()]
33
+ });
34
+ };
35
+ const sizeField = () => {
36
+ return (0, _apiHeadlessCms.createModelField)({
37
+ label: "Size",
38
+ type: "number",
39
+ validation: [required()]
40
+ });
41
+ };
42
+ const metaWidthField = () => {
43
+ return (0, _apiHeadlessCms.createModelField)({
44
+ label: "Width",
45
+ type: "number"
46
+ });
47
+ };
48
+ const metaHeightField = () => {
49
+ return (0, _apiHeadlessCms.createModelField)({
50
+ label: "Height",
51
+ type: "number"
52
+ });
53
+ };
54
+ const metaPrivateField = () => {
55
+ return (0, _apiHeadlessCms.createModelField)({
56
+ label: "Private",
57
+ type: "boolean"
58
+ });
59
+ };
60
+ const metaOriginalKeyField = () => {
61
+ return (0, _apiHeadlessCms.createModelField)({
62
+ label: "Original Key",
63
+ type: "text"
64
+ });
65
+ };
66
+ const metaField = () => {
67
+ return (0, _apiHeadlessCms.createModelField)({
68
+ label: "Meta",
69
+ type: "object",
70
+ settings: {
71
+ fields: [metaPrivateField(), metaWidthField(), metaHeightField(), metaOriginalKeyField()]
72
+ }
73
+ });
74
+ };
75
+ const accessControlTypeField = () => {
76
+ return (0, _apiHeadlessCms.createModelField)({
77
+ label: "Type",
78
+ type: "text",
79
+ predefinedValues: {
80
+ enabled: true,
81
+ values: [{
82
+ label: "Public",
83
+ value: "public",
84
+ selected: true
85
+ }, {
86
+ label: "Private",
87
+ value: "private-authenticated"
88
+ }]
89
+ }
90
+ });
91
+ };
92
+ const accessControlField = () => {
93
+ return (0, _apiHeadlessCms.createModelField)({
94
+ label: "Access Control",
95
+ type: "object",
96
+ tags: ["$bulk-edit"],
97
+ settings: {
98
+ fields: [accessControlTypeField()]
99
+ }
100
+ });
101
+ };
102
+ const tagsField = () => {
103
+ return (0, _apiHeadlessCms.createModelField)({
104
+ label: "Tags",
105
+ type: "text",
106
+ tags: ["$bulk-edit"],
107
+ multipleValues: true,
108
+ validation: [required()]
109
+ });
110
+ };
111
+ const aliasesField = () => {
112
+ return (0, _apiHeadlessCms.createModelField)({
113
+ label: "Aliases",
114
+ type: "text",
115
+ multipleValues: true,
116
+ validation: [required()]
117
+ });
118
+ };
119
+ const locationField = () => {
120
+ return (0, _apiHeadlessCms.createModelField)({
121
+ type: "object",
122
+ label: "Location",
123
+ fieldId: "location",
124
+ settings: {
125
+ fields: [(0, _apiHeadlessCms.createModelField)({
126
+ type: "text",
127
+ fieldId: "folderId",
128
+ label: "Folder ID",
129
+ settings: {
130
+ path: "location.folderId"
131
+ }
132
+ })]
133
+ }
134
+ });
135
+ };
136
+ const FILE_MODEL_ID = exports.FILE_MODEL_ID = "fmFile";
137
+ const createFileModel = params => {
138
+ const fields = [locationField(), nameField(), keyField(), typeField(), sizeField(), metaField(), tagsField(), aliasesField()];
139
+ if (params.withPrivateFiles) {
140
+ fields.push(accessControlField());
141
+ }
142
+ return (0, _apiHeadlessCms.createPrivateModel)({
143
+ name: "FmFile",
144
+ modelId: FILE_MODEL_ID,
145
+ titleFieldId: "name",
146
+ authorization: {
147
+ // Disables base permission checks, but leaves FLP checks enabled.
148
+ permissions: false
149
+
150
+ // We're leaving FLP enabled (no need to set `flp: true`).
151
+ // flp: true
152
+ },
153
+ fields
154
+ });
155
+ };
156
+ exports.createFileModel = createFileModel;
157
+
158
+ //# sourceMappingURL=file.model.js.map