@webiny/api-file-manager 0.0.0-unstable.99666aeb00 → 0.0.0-unstable.a9593f74dd

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 (235) hide show
  1. package/FileManagerContextSetup.js +8 -6
  2. package/FileManagerContextSetup.js.map +1 -1
  3. package/cmsFileStorage/CmsFilesStorage.js +28 -25
  4. package/cmsFileStorage/CmsFilesStorage.js.map +1 -1
  5. package/cmsFileStorage/ListFilesWhereProcessor.js +8 -10
  6. package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -1
  7. package/cmsFileStorage/ListTagsWhereProcessor.js +8 -10
  8. package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -1
  9. package/cmsFileStorage/createFileManagerPlugins.d.ts +5 -3
  10. package/cmsFileStorage/createFileManagerPlugins.js +8 -25
  11. package/cmsFileStorage/createFileManagerPlugins.js.map +1 -1
  12. package/cmsFileStorage/createModelField.js +5 -1
  13. package/cmsFileStorage/createModelField.js.map +1 -1
  14. package/cmsFileStorage/file.model.d.ts +5 -3
  15. package/cmsFileStorage/file.model.js +64 -29
  16. package/cmsFileStorage/file.model.js.map +1 -1
  17. package/cmsFileStorage/isInstallationPending.js +3 -1
  18. package/cmsFileStorage/isInstallationPending.js.map +1 -1
  19. package/contants.js +3 -1
  20. package/contants.js.map +1 -1
  21. package/createFileManager/files.crud.js +83 -55
  22. package/createFileManager/files.crud.js.map +1 -1
  23. package/createFileManager/index.js +8 -5
  24. package/createFileManager/index.js.map +1 -1
  25. package/createFileManager/permissions/FilesPermissions.js +3 -1
  26. package/createFileManager/permissions/FilesPermissions.js.map +1 -1
  27. package/createFileManager/settings.crud.js +28 -12
  28. package/createFileManager/settings.crud.js.map +1 -1
  29. package/createFileManager/system.crud.js +6 -4
  30. package/createFileManager/system.crud.js.map +1 -1
  31. package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +10 -0
  32. package/delivery/AssetDelivery/AliasAssetRequestResolver.js +74 -0
  33. package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +1 -0
  34. package/delivery/AssetDelivery/Asset.d.ts +30 -0
  35. package/delivery/AssetDelivery/Asset.js +64 -0
  36. package/delivery/AssetDelivery/Asset.js.map +1 -0
  37. package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +63 -0
  38. package/delivery/AssetDelivery/AssetDeliveryConfig.js +102 -0
  39. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -0
  40. package/delivery/AssetDelivery/AssetRequest.d.ts +24 -0
  41. package/delivery/AssetDelivery/AssetRequest.js +29 -0
  42. package/delivery/AssetDelivery/AssetRequest.js.map +1 -0
  43. package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +6 -0
  44. package/delivery/AssetDelivery/FilesAssetRequestResolver.js +33 -0
  45. package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -0
  46. package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +4 -0
  47. package/delivery/AssetDelivery/NullAssetOutputStrategy.js +15 -0
  48. package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -0
  49. package/delivery/AssetDelivery/NullAssetReply.d.ts +4 -0
  50. package/delivery/AssetDelivery/NullAssetReply.js +20 -0
  51. package/delivery/AssetDelivery/NullAssetReply.js.map +1 -0
  52. package/delivery/AssetDelivery/NullAssetResolver.d.ts +5 -0
  53. package/delivery/AssetDelivery/NullAssetResolver.js +14 -0
  54. package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -0
  55. package/delivery/AssetDelivery/NullRequestResolver.d.ts +4 -0
  56. package/delivery/AssetDelivery/NullRequestResolver.js +14 -0
  57. package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -0
  58. package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +8 -0
  59. package/delivery/AssetDelivery/SetCacheControlHeaders.js +25 -0
  60. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -0
  61. package/delivery/AssetDelivery/SetResponseHeaders.d.ts +18 -0
  62. package/delivery/AssetDelivery/SetResponseHeaders.js +25 -0
  63. package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -0
  64. package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +5 -0
  65. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +7 -0
  66. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +1 -0
  67. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +4 -0
  68. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +7 -0
  69. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +1 -0
  70. package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +4 -0
  71. package/delivery/AssetDelivery/abstractions/AssetProcessor.js +7 -0
  72. package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +1 -0
  73. package/delivery/AssetDelivery/abstractions/AssetReply.d.ts +25 -0
  74. package/delivery/AssetDelivery/abstractions/AssetReply.js +38 -0
  75. package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -0
  76. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +5 -0
  77. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +7 -0
  78. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +1 -0
  79. package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +4 -0
  80. package/delivery/AssetDelivery/abstractions/AssetResolver.js +7 -0
  81. package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +1 -0
  82. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +4 -0
  83. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +7 -0
  84. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +1 -0
  85. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.d.ts +2 -0
  86. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +15 -0
  87. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -0
  88. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +4 -0
  89. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +7 -0
  90. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +1 -0
  91. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +4 -0
  92. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +26 -0
  93. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -0
  94. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +4 -0
  95. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +15 -0
  96. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -0
  97. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +7 -0
  98. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +28 -0
  99. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -0
  100. package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +4 -0
  101. package/delivery/AssetDelivery/privateFiles/PrivateCache.js +18 -0
  102. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -0
  103. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +7 -0
  104. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +37 -0
  105. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -0
  106. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +13 -0
  107. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +62 -0
  108. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -0
  109. package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +4 -0
  110. package/delivery/AssetDelivery/privateFiles/PublicCache.js +18 -0
  111. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -0
  112. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +6 -0
  113. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +27 -0
  114. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -0
  115. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +6 -0
  116. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +27 -0
  117. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -0
  118. package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +7 -0
  119. package/delivery/AssetDelivery/privateFiles/internalIdentity.js +19 -0
  120. package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +1 -0
  121. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +4 -0
  122. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +14 -0
  123. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -0
  124. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +4 -0
  125. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +14 -0
  126. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -0
  127. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +6 -0
  128. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +25 -0
  129. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -0
  130. package/delivery/index.d.ts +15 -0
  131. package/delivery/index.js +172 -0
  132. package/delivery/index.js.map +1 -0
  133. package/delivery/setupAssetDelivery.d.ts +6 -0
  134. package/delivery/setupAssetDelivery.js +124 -0
  135. package/delivery/setupAssetDelivery.js.map +1 -0
  136. package/graphql/baseSchema.js +4 -1
  137. package/graphql/baseSchema.js.map +1 -1
  138. package/graphql/createFilesTypeDefs.js +29 -6
  139. package/graphql/createFilesTypeDefs.js.map +1 -1
  140. package/graphql/filesSchema.js +13 -5
  141. package/graphql/filesSchema.js.map +1 -1
  142. package/graphql/getFileByUrl.d.ts +3 -0
  143. package/graphql/getFileByUrl.js +78 -0
  144. package/graphql/getFileByUrl.js.map +1 -0
  145. package/graphql/index.d.ts +2 -1
  146. package/graphql/index.js +24 -2
  147. package/graphql/index.js.map +1 -1
  148. package/graphql/utils.js +3 -1
  149. package/graphql/utils.js.map +1 -1
  150. package/handlers/{transform/managers → manage}/imageManager.d.ts +2 -3
  151. package/handlers/{transform/managers → manage}/imageManager.js +11 -9
  152. package/handlers/manage/imageManager.js.map +1 -0
  153. package/handlers/manage/index.d.ts +1 -1
  154. package/handlers/manage/index.js +9 -5
  155. package/handlers/manage/index.js.map +1 -1
  156. package/handlers/{transform → manage}/legacyUtils.d.ts +0 -5
  157. package/handlers/{transform → manage}/legacyUtils.js +3 -7
  158. package/handlers/manage/legacyUtils.js.map +1 -0
  159. package/handlers/{transform → manage}/utils.js +3 -1
  160. package/handlers/manage/utils.js.map +1 -0
  161. package/handlers/types.d.ts +1 -1
  162. package/handlers/types.js +3 -1
  163. package/handlers/types.js.map +1 -1
  164. package/handlers/utils/getEnvironment.js +3 -1
  165. package/handlers/utils/getEnvironment.js.map +1 -1
  166. package/handlers/utils/getObjectParams.js +3 -1
  167. package/handlers/utils/getObjectParams.js.map +1 -1
  168. package/handlers/utils/index.js +3 -1
  169. package/handlers/utils/index.js.map +1 -1
  170. package/index.d.ts +4 -1
  171. package/index.js +27 -7
  172. package/index.js.map +1 -1
  173. package/modelModifier/CmsModelModifier.d.ts +3 -1
  174. package/modelModifier/CmsModelModifier.js +13 -10
  175. package/modelModifier/CmsModelModifier.js.map +1 -1
  176. package/package.json +26 -26
  177. package/plugins/FilePhysicalStoragePlugin.js +3 -3
  178. package/plugins/FilePhysicalStoragePlugin.js.map +1 -1
  179. package/plugins/FileStorageTransformPlugin.js +3 -4
  180. package/plugins/FileStorageTransformPlugin.js.map +1 -1
  181. package/plugins/index.js +3 -1
  182. package/plugins/index.js.map +1 -1
  183. package/storage/FileStorage.d.ts +2 -1
  184. package/storage/FileStorage.js +20 -16
  185. package/storage/FileStorage.js.map +1 -1
  186. package/types/file.d.ts +11 -0
  187. package/types/file.js +3 -1
  188. package/types/file.js.map +1 -1
  189. package/types/file.lifecycle.js +3 -1
  190. package/types.d.ts +22 -2
  191. package/types.js +3 -1
  192. package/types.js.map +1 -1
  193. package/createFileManager/filevalidation.disabled.d.ts +0 -0
  194. package/createFileManager/filevalidation.disabled.js +0 -55
  195. package/createFileManager/filevalidation.disabled.js.map +0 -1
  196. package/handlers/download/byAlias.d.ts +0 -6
  197. package/handlers/download/byAlias.js +0 -89
  198. package/handlers/download/byAlias.js.map +0 -1
  199. package/handlers/download/byExactKey.d.ts +0 -2
  200. package/handlers/download/byExactKey.js +0 -57
  201. package/handlers/download/byExactKey.js.map +0 -1
  202. package/handlers/download/extractFileInformation.d.ts +0 -9
  203. package/handlers/download/extractFileInformation.js +0 -20
  204. package/handlers/download/extractFileInformation.js.map +0 -1
  205. package/handlers/download/getS3Object.d.ts +0 -12
  206. package/handlers/download/getS3Object.js +0 -72
  207. package/handlers/download/getS3Object.js.map +0 -1
  208. package/handlers/download/index.d.ts +0 -2
  209. package/handlers/download/index.js +0 -27
  210. package/handlers/download/index.js.map +0 -1
  211. package/handlers/transform/index.d.ts +0 -2
  212. package/handlers/transform/index.js +0 -92
  213. package/handlers/transform/index.js.map +0 -1
  214. package/handlers/transform/legacyUtils.js.map +0 -1
  215. package/handlers/transform/loaders/imageLoader.d.ts +0 -30
  216. package/handlers/transform/loaders/imageLoader.js +0 -94
  217. package/handlers/transform/loaders/imageLoader.js.map +0 -1
  218. package/handlers/transform/loaders/index.d.ts +0 -8
  219. package/handlers/transform/loaders/index.js +0 -10
  220. package/handlers/transform/loaders/index.js.map +0 -1
  221. package/handlers/transform/loaders/sanitizeImageTransformations.d.ts +0 -11
  222. package/handlers/transform/loaders/sanitizeImageTransformations.js +0 -45
  223. package/handlers/transform/loaders/sanitizeImageTransformations.js.map +0 -1
  224. package/handlers/transform/managers/imageManager.js.map +0 -1
  225. package/handlers/transform/managers/index.d.ts +0 -5
  226. package/handlers/transform/managers/index.js +0 -10
  227. package/handlers/transform/managers/index.js.map +0 -1
  228. package/handlers/transform/optimizeImage.d.ts +0 -3
  229. package/handlers/transform/optimizeImage.js +0 -42
  230. package/handlers/transform/optimizeImage.js.map +0 -1
  231. package/handlers/transform/transformImage.d.ts +0 -13
  232. package/handlers/transform/transformImage.js +0 -28
  233. package/handlers/transform/transformImage.js.map +0 -1
  234. package/handlers/transform/utils.js.map +0 -1
  235. /package/handlers/{transform → manage}/utils.d.ts +0 -0
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.FileManagerContextSetup = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
8
  var _createFileManager = require("./createFileManager");
10
9
  var _FileStorage = require("./storage/FileStorage");
11
10
  var _error = _interopRequireDefault(require("@webiny/error"));
@@ -18,7 +17,6 @@ var _apiHeadlessCms = require("@webiny/api-headless-cms");
18
17
  var _FilesPermissions = require("./createFileManager/permissions/FilesPermissions");
19
18
  class FileManagerContextSetup {
20
19
  constructor(context) {
21
- (0, _defineProperty2.default)(this, "context", void 0);
22
20
  this.context = context;
23
21
  }
24
22
  async setupContext(storageOperations) {
@@ -74,19 +72,21 @@ class FileManagerContextSetup {
74
72
  console.log("Installation pending!");
75
73
  return;
76
74
  }
75
+ const withPrivateFiles = this.context.wcp.canUsePrivateFiles();
77
76
 
78
77
  // This registers code plugins (model group, models)
79
78
  const {
80
- groupPlugin,
81
79
  fileModelDefinition
82
- } = (0, _createFileManagerPlugins.createFileManagerPlugins)();
80
+ } = (0, _createFileManagerPlugins.createFileModel)({
81
+ withPrivateFiles
82
+ });
83
83
  const modelModifiers = this.context.plugins.byType(_CmsModelModifier.CmsModelModifierPlugin.type);
84
84
  for (const modifier of modelModifiers) {
85
85
  await modifier.modifyModel(fileModelDefinition);
86
86
  }
87
87
 
88
88
  // Finally, register all plugins
89
- this.context.plugins.register([groupPlugin, new _apiHeadlessCms.CmsModelPlugin(fileModelDefinition)]);
89
+ this.context.plugins.register([new _apiHeadlessCms.CmsModelPlugin(fileModelDefinition)]);
90
90
 
91
91
  // Now load the file model registered in the previous step
92
92
  const fileModel = await this.getModel(_file.FILE_MODEL_ID);
@@ -110,4 +110,6 @@ class FileManagerContextSetup {
110
110
  return model;
111
111
  }
112
112
  }
113
- exports.FileManagerContextSetup = FileManagerContextSetup;
113
+ exports.FileManagerContextSetup = FileManagerContextSetup;
114
+
115
+ //# sourceMappingURL=FileManagerContextSetup.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FileManagerContextSetup","constructor","context","setupContext","storageOperations","beforeInit","fileStorageOps","security","withoutAuthorization","setupCmsStorageOperations","aliases","files","filesPermissions","FilesPermissions","getIdentity","getPermissions","fullAccessPermissionName","createFileManager","getTenantId","bind","getLocaleCode","storage","FileStorage","WEBINY_VERSION","locale","i18n","getContentLocale","WebinyError","code","tenancy","getCurrentTenant","id","name","isInstallationPending","console","log","groupPlugin","fileModelDefinition","createFileManagerPlugins","modelModifiers","plugins","byType","CmsModelModifierPlugin","type","modifier","modifyModel","register","CmsModelPlugin","fileModel","getModel","FILE_MODEL_ID","CmsFilesStorage","create","cms","modelId","model","message"],"sources":["FileManagerContextSetup.ts"],"sourcesContent":["import { FileManagerAliasesStorageOperations, FileManagerContext } from \"~/types\";\nimport { createFileManager, FileManagerConfig } from \"~/createFileManager\";\nimport { FileStorage } from \"~/storage/FileStorage\";\nimport WebinyError from \"@webiny/error\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\nimport { isInstallationPending } from \"~/cmsFileStorage/isInstallationPending\";\nimport { createFileManagerPlugins } from \"~/cmsFileStorage/createFileManagerPlugins\";\nimport { FILE_MODEL_ID } from \"~/cmsFileStorage/file.model\";\nimport { CmsFilesStorage } from \"~/cmsFileStorage/CmsFilesStorage\";\nimport { CmsModelModifierPlugin } from \"~/modelModifier/CmsModelModifier\";\nimport { CmsModelPlugin } from \"@webiny/api-headless-cms\";\nimport { FilesPermissions } from \"~/createFileManager/permissions/FilesPermissions\";\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(\"fm.file\"),\n fullAccessPermissionName: \"fm.*\"\n });\n\n return createFileManager({\n storageOperations,\n filesPermissions,\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 (isInstallationPending({ tenancy: this.context.tenancy, i18n: this.context.i18n })) {\n console.log(\"Installation pending!\");\n return;\n }\n\n // This registers code plugins (model group, models)\n const { groupPlugin, fileModelDefinition } = createFileManagerPlugins();\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([groupPlugin, 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":";;;;;;;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,MAAMA,uBAAuB,CAAC;EAGjCC,WAAW,CAACC,OAA2B,EAAE;IAAA;IACrC,IAAI,CAACA,OAAO,GAAGA,OAAO;EAC1B;EAEA,MAAMC,YAAY,CAACC,iBAAyD,EAAE;IAC1E,IAAIA,iBAAiB,CAACC,UAAU,EAAE;MAC9B,MAAMD,iBAAiB,CAACC,UAAU,CAAC,IAAI,CAACH,OAAO,CAAC;IACpD;IAEA,MAAMI,cAAc,GAAG,MAAM,IAAI,CAACJ,OAAO,CAACK,QAAQ,CAACC,oBAAoB,CAAC,MAAM;MAC1E,OAAO,IAAI,CAACC,yBAAyB,CAACL,iBAAiB,CAACM,OAAO,CAAC;IACpE,CAAC,CAAC;IAEF,IAAIJ,cAAc,EAAE;MAChBF,iBAAiB,CAACO,KAAK,GAAGL,cAAc;IAC5C;IAEA,MAAMM,gBAAgB,GAAG,IAAIC,kCAAgB,CAAC;MAC1CC,WAAW,EAAE,IAAI,CAACZ,OAAO,CAACK,QAAQ,CAACO,WAAW;MAC9CC,cAAc,EAAE,MAAM,IAAI,CAACb,OAAO,CAACK,QAAQ,CAACQ,cAAc,CAAC,SAAS,CAAC;MACrEC,wBAAwB,EAAE;IAC9B,CAAC,CAAC;IAEF,OAAO,IAAAC,oCAAiB,EAAC;MACrBb,iBAAiB;MACjBQ,gBAAgB;MAChBM,WAAW,EAAE,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC;MACxCC,aAAa,EAAE,IAAI,CAACA,aAAa,CAACD,IAAI,CAAC,IAAI,CAAC;MAC5CL,WAAW,EAAE,IAAI,CAACA,WAAW,CAACK,IAAI,CAAC,IAAI,CAAC;MACxCJ,cAAc,EAAE,IAAI,CAACA,cAAc,CAACI,IAAI,CAAC,IAAI,CAAC;MAC9CE,OAAO,EAAE,IAAIC,wBAAW,CAAC;QACrBpB,OAAO,EAAE,IAAI,CAACA;MAClB,CAAC,CAAC;MACF;MACAqB,cAAc,EAAE,IAAI,CAACrB,OAAO,CAACqB;IACjC,CAAC,CAAC;EACN;EAEQH,aAAa,GAAG;IACpB,MAAMI,MAAM,GAAG,IAAI,CAACtB,OAAO,CAACuB,IAAI,CAACC,gBAAgB,EAAE;IACnD,IAAI,CAACF,MAAM,EAAE;MACT,MAAM,IAAIG,cAAW,CACjB,4DAA4D,EAC5D,cAAc,CACjB;IACL;IACA,OAAOH,MAAM,CAACI,IAAI;EACtB;EAEQd,WAAW,GAAG;IAClB,OAAO,IAAI,CAACZ,OAAO,CAACK,QAAQ,CAACO,WAAW,EAAE;EAC9C;EAEQI,WAAW,GAAG;IAClB,OAAO,IAAI,CAAChB,OAAO,CAAC2B,OAAO,CAACC,gBAAgB,EAAE,CAACC,EAAE;EACrD;EAEA,MAAchB,cAAc,CACxBiB,IAAY,EACA;IACZ,OAAO,IAAI,CAAC9B,OAAO,CAACK,QAAQ,CAACQ,cAAc,CAACiB,IAAI,CAAC;EACrD;EAEA,MAAcvB,yBAAyB,CAACC,OAA4C,EAAE;IAClF,IAAI,IAAAuB,4CAAqB,EAAC;MAAEJ,OAAO,EAAE,IAAI,CAAC3B,OAAO,CAAC2B,OAAO;MAAEJ,IAAI,EAAE,IAAI,CAACvB,OAAO,CAACuB;IAAK,CAAC,CAAC,EAAE;MACnFS,OAAO,CAACC,GAAG,CAAC,uBAAuB,CAAC;MACpC;IACJ;;IAEA;IACA,MAAM;MAAEC,WAAW;MAAEC;IAAoB,CAAC,GAAG,IAAAC,kDAAwB,GAAE;IAEvE,MAAMC,cAAc,GAAG,IAAI,CAACrC,OAAO,CAACsC,OAAO,CAACC,MAAM,CAC9CC,wCAAsB,CAACC,IAAI,CAC9B;IAED,KAAK,MAAMC,QAAQ,IAAIL,cAAc,EAAE;MACnC,MAAMK,QAAQ,CAACC,WAAW,CAACR,mBAAmB,CAAC;IACnD;;IAEA;IACA,IAAI,CAACnC,OAAO,CAACsC,OAAO,CAACM,QAAQ,CAAC,CAACV,WAAW,EAAE,IAAIW,8BAAc,CAACV,mBAAmB,CAAC,CAAC,CAAC;;IAErF;IACA,MAAMW,SAAS,GAAG,MAAM,IAAI,CAACC,QAAQ,CAACC,mBAAa,CAAC;;IAEpD;IACA,OAAO,MAAMC,gCAAe,CAACC,MAAM,CAAC;MAChCJ,SAAS;MACTK,GAAG,EAAE,IAAI,CAACnD,OAAO,CAACmD,GAAG;MACrB9C,QAAQ,EAAE,IAAI,CAACL,OAAO,CAACK,QAAQ;MAC/BG;IACJ,CAAC,CAAC;EACN;EAEA,MAAcuC,QAAQ,CAACK,OAAe,EAAE;IACpC,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACrD,OAAO,CAACmD,GAAG,CAACJ,QAAQ,CAACK,OAAO,CAAC;IACtD,IAAI,CAACC,KAAK,EAAE;MACR,MAAM,IAAI5B,cAAW,CAAC;QAClBC,IAAI,EAAE,iBAAiB;QACvB4B,OAAO,EAAG,kBAAiBF,OAAQ;MACvC,CAAC,CAAC;IACN;IAEA,OAAOC,KAAK;EAChB;AACJ;AAAC"}
1
+ {"version":3,"names":["_createFileManager","require","_FileStorage","_error","_interopRequireDefault","_isInstallationPending","_createFileManagerPlugins","_file","_CmsFilesStorage","_CmsModelModifier","_apiHeadlessCms","_FilesPermissions","FileManagerContextSetup","constructor","context","setupContext","storageOperations","beforeInit","fileStorageOps","security","withoutAuthorization","setupCmsStorageOperations","aliases","files","filesPermissions","FilesPermissions","getIdentity","getPermissions","fullAccessPermissionName","createFileManager","getTenantId","bind","getLocaleCode","storage","FileStorage","WEBINY_VERSION","locale","i18n","getContentLocale","WebinyError","code","tenancy","getCurrentTenant","id","name","isInstallationPending","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 { FileManagerAliasesStorageOperations, FileManagerContext } from \"~/types\";\nimport { createFileManager, FileManagerConfig } from \"~/createFileManager\";\nimport { FileStorage } from \"~/storage/FileStorage\";\nimport WebinyError from \"@webiny/error\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\nimport { isInstallationPending } from \"~/cmsFileStorage/isInstallationPending\";\nimport { createFileModel } from \"~/cmsFileStorage/createFileManagerPlugins\";\nimport { FILE_MODEL_ID } from \"~/cmsFileStorage/file.model\";\nimport { CmsFilesStorage } from \"~/cmsFileStorage/CmsFilesStorage\";\nimport { CmsModelModifierPlugin } from \"~/modelModifier/CmsModelModifier\";\nimport { CmsModelPlugin } from \"@webiny/api-headless-cms\";\nimport { FilesPermissions } from \"~/createFileManager/permissions/FilesPermissions\";\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(\"fm.file\"),\n fullAccessPermissionName: \"fm.*\"\n });\n\n return createFileManager({\n storageOperations,\n filesPermissions,\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 (isInstallationPending({ tenancy: this.context.tenancy, i18n: this.context.i18n })) {\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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"}
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.CmsFilesStorage = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
8
  var _omit = _interopRequireDefault(require("lodash/omit"));
11
9
  var _ListFilesWhereProcessor = require("./ListFilesWhereProcessor");
12
10
  var _ListTagsWhereProcessor = require("./ListTagsWhereProcessor");
@@ -16,12 +14,6 @@ class CmsFilesStorage {
16
14
  return new CmsFilesStorage(params.fileModel, params.cms, params.security, params.aliases);
17
15
  }
18
16
  constructor(fileModel, cms, security, aliases) {
19
- (0, _defineProperty2.default)(this, "cms", void 0);
20
- (0, _defineProperty2.default)(this, "security", void 0);
21
- (0, _defineProperty2.default)(this, "model", void 0);
22
- (0, _defineProperty2.default)(this, "aliases", void 0);
23
- (0, _defineProperty2.default)(this, "filesWhereProcessor", void 0);
24
- (0, _defineProperty2.default)(this, "tagsWhereProcessor", void 0);
25
17
  this.model = fileModel;
26
18
  this.aliases = aliases;
27
19
  this.cms = cms;
@@ -33,25 +25,27 @@ class CmsFilesStorage {
33
25
  tenant,
34
26
  locale
35
27
  }) {
36
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.model), {}, {
28
+ return {
29
+ ...this.model,
37
30
  tenant,
38
31
  locale
39
- });
32
+ };
40
33
  }
41
34
  async create({
42
35
  file
43
36
  }) {
44
- var _file$location;
45
37
  const model = this.modelWithContext(file);
46
- if (!((_file$location = file.location) !== null && _file$location !== void 0 && _file$location.folderId)) {
47
- file.location = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, file.location), {}, {
38
+ if (!file.location?.folderId) {
39
+ file.location = {
40
+ ...file.location,
48
41
  folderId: _contants.ROOT_FOLDER
49
- });
42
+ };
50
43
  }
51
44
  const entry = await this.security.withoutAuthorization(() => {
52
- return this.cms.createEntry(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, file), {}, {
45
+ return this.cms.createEntry(model, {
46
+ ...file,
53
47
  wbyAco_location: file.location
54
- }));
48
+ });
55
49
  });
56
50
  await this.aliases.storeAliases(file);
57
51
  return this.getFileFieldValues(entry);
@@ -125,9 +119,10 @@ class CmsFilesStorage {
125
119
  const uniqueValues = await this.security.withoutAuthorization(() => {
126
120
  return this.cms.getUniqueFieldValues(model, {
127
121
  fieldId: "tags",
128
- where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.tagsWhereProcessor.process(params.where)), {}, {
122
+ where: {
123
+ ...this.tagsWhereProcessor.process(params.where),
129
124
  latest: true
130
- })
125
+ }
131
126
  });
132
127
  });
133
128
  return uniqueValues.map(uv => ({
@@ -150,24 +145,32 @@ class CmsFilesStorage {
150
145
  latest: true
151
146
  }
152
147
  });
153
- const values = (0, _omit.default)(file, ["id", "createdOn", "createdBy", "tenant", "locale", "webinyVersion"]);
154
- const updatedEntry = await this.cms.updateEntry(model, entry.id, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, values), {}, {
148
+ const values = (0, _omit.default)(file, ["id", "tenant", "locale", "webinyVersion"]);
149
+ const updatedEntry = await this.cms.updateEntry(model, entry.id, {
150
+ ...values,
155
151
  wbyAco_location: values.location ?? entry.location
156
- }));
152
+ });
157
153
  await this.aliases.storeAliases(file);
158
154
  return this.getFileFieldValues(updatedEntry);
159
155
  });
160
156
  }
161
157
  getFileFieldValues(entry) {
162
- return (0, _objectSpread2.default)({
158
+ return {
163
159
  id: entry.entryId,
160
+ // We're safe to use entry-level meta fields because we don't use revisions with files.
164
161
  createdBy: entry.createdBy,
162
+ modifiedBy: entry.modifiedBy || null,
163
+ savedBy: entry.savedBy,
165
164
  createdOn: entry.createdOn,
165
+ modifiedOn: entry.modifiedOn || null,
166
166
  savedOn: entry.savedOn,
167
167
  locale: entry.locale,
168
168
  tenant: entry.tenant,
169
- webinyVersion: entry.webinyVersion
170
- }, entry.values);
169
+ webinyVersion: entry.webinyVersion,
170
+ ...entry.values
171
+ };
171
172
  }
172
173
  }
173
- exports.CmsFilesStorage = CmsFilesStorage;
174
+ exports.CmsFilesStorage = CmsFilesStorage;
175
+
176
+ //# sourceMappingURL=CmsFilesStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CmsFilesStorage","create","params","fileModel","cms","security","aliases","constructor","model","filesWhereProcessor","ListFilesWhereProcessor","tagsWhereProcessor","ListTagsWhereProcessor","modelWithContext","tenant","locale","file","location","folderId","ROOT_FOLDER","entry","withoutAuthorization","createEntry","wbyAco_location","storeAliases","getFileFieldValues","createBatch","files","Promise","all","map","delete","deleteEntry","id","deleteAliases","get","where","getEntry","entryId","latest","list","entries","meta","process","listLatestEntries","after","limit","sort","search","tags","uniqueValues","getUniqueFieldValues","fieldId","uv","tag","value","count","a","b","update","values","omit","updatedEntry","updateEntry","createdBy","createdOn","savedOn","webinyVersion"],"sources":["CmsFilesStorage.ts"],"sourcesContent":["import omit from \"lodash/omit\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { Security } from \"@webiny/api-security/types\";\nimport {\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.security.withoutAuthorization(() => {\n return this.cms.createEntry(model, { ...file, 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.security.withoutAuthorization(() => {\n return this.cms.deleteEntry(model, file.id);\n });\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.security.withoutAuthorization(() => {\n return this.cms.getEntry(model, { where: { entryId: id, latest: true } });\n });\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 const [entries, meta] = await this.security.withoutAuthorization(() => {\n const where = this.filesWhereProcessor.process(params.where);\n return 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\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.security.withoutAuthorization(() => {\n return this.cms.getUniqueFieldValues(model, {\n fieldId: \"tags\",\n where: {\n ...this.tagsWhereProcessor.process(params.where),\n latest: true\n }\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 return await this.security.withoutAuthorization(async () => {\n const entry = await this.cms.getEntry(model, {\n where: { entryId: file.id, latest: true }\n });\n\n const values = omit(file, [\n \"id\",\n \"createdOn\",\n \"createdBy\",\n \"tenant\",\n \"locale\",\n \"webinyVersion\"\n ]);\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\n private getFileFieldValues(entry: CmsEntry) {\n return {\n id: entry.entryId,\n createdBy: entry.createdBy,\n createdOn: entry.createdOn,\n savedOn: entry.savedOn,\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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"}
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","withoutAuthorization","createEntry","wbyAco_location","storeAliases","getFileFieldValues","createBatch","files","Promise","all","map","delete","deleteEntry","id","deleteAliases","get","where","getEntry","entryId","latest","list","entries","meta","process","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 { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { Security } from \"@webiny/api-security/types\";\nimport {\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.security.withoutAuthorization(() => {\n return this.cms.createEntry(model, {\n ...file,\n wbyAco_location: file.location\n });\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.security.withoutAuthorization(() => {\n return this.cms.deleteEntry(model, file.id);\n });\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.security.withoutAuthorization(() => {\n return this.cms.getEntry(model, { where: { entryId: id, latest: true } });\n });\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 const [entries, meta] = await this.security.withoutAuthorization(() => {\n const where = this.filesWhereProcessor.process(params.where);\n return 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\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.security.withoutAuthorization(() => {\n return this.cms.getUniqueFieldValues(model, {\n fieldId: \"tags\",\n where: {\n ...this.tagsWhereProcessor.process(params.where),\n latest: true\n }\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 return await this.security.withoutAuthorization(async () => {\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\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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"}
@@ -1,19 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.ListFilesWhereProcessor = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
7
  class ListFilesWhereProcessor {
10
- constructor() {
11
- (0, _defineProperty2.default)(this, "skipKeys", ["tenant", "locale"]);
12
- (0, _defineProperty2.default)(this, "keyMap", {
13
- id: "entryId",
14
- id_in: "entryId_in"
15
- });
16
- }
8
+ skipKeys = ["tenant", "locale"];
9
+ keyMap = {
10
+ id: "entryId",
11
+ id_in: "entryId_in"
12
+ };
17
13
  process(input) {
18
14
  const where = {
19
15
  meta: {
@@ -32,4 +28,6 @@ class ListFilesWhereProcessor {
32
28
  return where;
33
29
  }
34
30
  }
35
- exports.ListFilesWhereProcessor = ListFilesWhereProcessor;
31
+ exports.ListFilesWhereProcessor = ListFilesWhereProcessor;
32
+
33
+ //# sourceMappingURL=ListFilesWhereProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ListFilesWhereProcessor","id","id_in","process","input","where","meta","private_not","Object","keys","filter","key","skipKeys","includes","forEach","remappedKey","keyMap","value","undefined"],"sources":["ListFilesWhereProcessor.ts"],"sourcesContent":["import { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport { 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;EAAA;IAAA,gDACL,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAA,8CACkC;MAC9EC,EAAE,EAAE,SAAS;MACbC,KAAK,EAAE;IACX,CAAC;EAAA;EAEDC,OAAO,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,CAACC,QAAQ,CAACC,QAAQ,CAACF,GAAG,CAAC,CAAC,CAC3CG,OAAO,CAACH,GAAG,IAAI;MACZ,MAAMI,WAAW,GAAG,IAAI,CAACC,MAAM,CAACL,GAAG,CAAC;MACpC,MAAMM,KAAK,GAAGb,KAAK,CAACO,GAAG,CAAC;MAExB,IAAII,WAAW,IAAIE,KAAK,KAAKC,SAAS,EAAE;QACpCb,KAAK,CAACU,WAAW,CAAC,GAAGE,KAAK;MAC9B,CAAC,MAAM,IAAIA,KAAK,KAAKC,SAAS,EAAE;QAC5Bb,KAAK,CAACM,GAAG,CAAC,GAAGM,KAAK;MACtB;IACJ,CAAC,CAAC;IAEN,OAAOZ,KAAK;EAChB;AACJ;AAAC"}
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 { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport { 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"}
@@ -1,19 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.ListTagsWhereProcessor = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
7
  class ListTagsWhereProcessor {
10
- constructor() {
11
- (0, _defineProperty2.default)(this, "skipKeys", ["tenant", "locale"]);
12
- (0, _defineProperty2.default)(this, "keyMap", {
13
- tag_startsWith: "tags_startsWith",
14
- tag_not_startsWith: "tags_not_startsWith"
15
- });
16
- }
8
+ skipKeys = ["tenant", "locale"];
9
+ keyMap = {
10
+ tag_startsWith: "tags_startsWith",
11
+ tag_not_startsWith: "tags_not_startsWith"
12
+ };
17
13
  process(input) {
18
14
  const where = {
19
15
  meta: {
@@ -32,4 +28,6 @@ class ListTagsWhereProcessor {
32
28
  return where;
33
29
  }
34
30
  }
35
- exports.ListTagsWhereProcessor = ListTagsWhereProcessor;
31
+ exports.ListTagsWhereProcessor = ListTagsWhereProcessor;
32
+
33
+ //# sourceMappingURL=ListTagsWhereProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ListTagsWhereProcessor","tag_startsWith","tag_not_startsWith","process","input","where","meta","private_not","Object","keys","filter","key","skipKeys","includes","forEach","remappedKey","keyMap","value","undefined"],"sources":["ListTagsWhereProcessor.ts"],"sourcesContent":["import { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport { 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;EAAA;IAAA,gDACJ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAA,8CACkC;MAC9EC,cAAc,EAAE,iBAAiB;MACjCC,kBAAkB,EAAE;IACxB,CAAC;EAAA;EAEDC,OAAO,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,CAACC,QAAQ,CAACC,QAAQ,CAACF,GAAG,CAAC,CAAC,CAC3CG,OAAO,CAACH,GAAG,IAAI;MACZ,MAAMI,WAAW,GAAG,IAAI,CAACC,MAAM,CAACL,GAAG,CAAC;MACpC,MAAMM,KAAK,GAAGb,KAAK,CAACO,GAAG,CAAC;MAExB,IAAII,WAAW,IAAIE,KAAK,KAAKC,SAAS,EAAE;QACpCb,KAAK,CAACU,WAAW,CAAC,GAAGE,KAAK;MAC9B,CAAC,MAAM,IAAIA,KAAK,KAAKC,SAAS,EAAE;QAC5Bb,KAAK,CAACM,GAAG,CAAC,GAAGM,KAAK;MACtB;IACJ,CAAC,CAAC;IAEN,OAAOZ,KAAK;EAChB;AACJ;AAAC"}
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 { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport { 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"}
@@ -1,5 +1,7 @@
1
- import { CmsGroupPlugin } from "@webiny/api-headless-cms";
2
- export declare const createFileManagerPlugins: () => {
3
- groupPlugin: CmsGroupPlugin;
1
+ interface CreateFileManagerPluginsParams {
2
+ withPrivateFiles: boolean;
3
+ }
4
+ export declare const createFileModel: (params: CreateFileManagerPluginsParams) => {
4
5
  fileModelDefinition: import("@webiny/api-headless-cms").CmsPrivateModelFull;
5
6
  };
7
+ export {};
@@ -3,32 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createFileManagerPlugins = void 0;
7
- var _apiHeadlessCms = require("@webiny/api-headless-cms");
6
+ exports.createFileModel = void 0;
8
7
  var _file = require("./file.model");
9
- // import { modelFactory } from "~/cmsFileStorage/modelFactory";
10
-
11
- const createFileManagerPlugins = () => {
12
- const groupId = "contentModelGroup_fm";
13
- const groupPlugin = new _apiHeadlessCms.CmsGroupPlugin({
14
- id: groupId,
15
- slug: "fileManager",
16
- name: "File Manager",
17
- description: "Group for File Manager models",
18
- icon: "fas/folder",
19
- isPrivate: true
20
- });
21
-
22
- // const models = modelDefinitions.map(modelDefinition => {
23
- // return modelFactory({
24
- // group: cmsGroupPlugin.contentModelGroup,
25
- // modelDefinition
26
- // });
27
- // });
28
-
8
+ const createFileModel = params => {
29
9
  return {
30
- groupPlugin,
31
- fileModelDefinition: (0, _file.createFileModelDefinition)(groupPlugin.contentModelGroup)
10
+ fileModelDefinition: (0, _file.createFileModelDefinition)({
11
+ withPrivateFiles: params.withPrivateFiles
12
+ })
32
13
  };
33
14
  };
34
- exports.createFileManagerPlugins = createFileManagerPlugins;
15
+ exports.createFileModel = createFileModel;
16
+
17
+ //# sourceMappingURL=createFileManagerPlugins.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFileManagerPlugins","groupId","groupPlugin","CmsGroupPlugin","id","slug","name","description","icon","isPrivate","fileModelDefinition","createFileModelDefinition","contentModelGroup"],"sources":["createFileManagerPlugins.ts"],"sourcesContent":["import { CmsGroupPlugin } from \"@webiny/api-headless-cms\";\n// import { modelFactory } from \"~/cmsFileStorage/modelFactory\";\nimport { createFileModelDefinition } from \"~/cmsFileStorage/file.model\";\n\nexport const createFileManagerPlugins = () => {\n const groupId = \"contentModelGroup_fm\";\n\n const groupPlugin = new CmsGroupPlugin({\n id: groupId,\n slug: \"fileManager\",\n name: \"File Manager\",\n description: \"Group for File Manager models\",\n icon: \"fas/folder\",\n isPrivate: true\n });\n\n // const models = modelDefinitions.map(modelDefinition => {\n // return modelFactory({\n // group: cmsGroupPlugin.contentModelGroup,\n // modelDefinition\n // });\n // });\n\n return {\n groupPlugin,\n fileModelDefinition: createFileModelDefinition(groupPlugin.contentModelGroup)\n };\n};\n"],"mappings":";;;;;;AAAA;AAEA;AADA;;AAGO,MAAMA,wBAAwB,GAAG,MAAM;EAC1C,MAAMC,OAAO,GAAG,sBAAsB;EAEtC,MAAMC,WAAW,GAAG,IAAIC,8BAAc,CAAC;IACnCC,EAAE,EAAEH,OAAO;IACXI,IAAI,EAAE,aAAa;IACnBC,IAAI,EAAE,cAAc;IACpBC,WAAW,EAAE,+BAA+B;IAC5CC,IAAI,EAAE,YAAY;IAClBC,SAAS,EAAE;EACf,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACA;EACA;;EAEA,OAAO;IACHP,WAAW;IACXQ,mBAAmB,EAAE,IAAAC,+BAAyB,EAACT,WAAW,CAACU,iBAAiB;EAChF,CAAC;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["_file","require","createFileModel","params","fileModelDefinition","createFileModelDefinition","withPrivateFiles","exports"],"sources":["createFileManagerPlugins.ts"],"sourcesContent":["import { createFileModelDefinition } from \"~/cmsFileStorage/file.model\";\n\ninterface CreateFileManagerPluginsParams {\n withPrivateFiles: boolean;\n}\n\nexport const createFileModel = (params: CreateFileManagerPluginsParams) => {\n return {\n fileModelDefinition: createFileModelDefinition({\n withPrivateFiles: params.withPrivateFiles\n })\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAMO,MAAMC,eAAe,GAAIC,MAAsC,IAAK;EACvE,OAAO;IACHC,mBAAmB,EAAE,IAAAC,+BAAyB,EAAC;MAC3CC,gBAAgB,EAAEH,MAAM,CAACG;IAC7B,CAAC;EACL,CAAC;AACL,CAAC;AAACC,OAAA,CAAAL,eAAA,GAAAA,eAAA"}
@@ -11,6 +11,7 @@ const createModelField = params => {
11
11
  label,
12
12
  fieldId: initialFieldId,
13
13
  type,
14
+ tags,
14
15
  settings = {},
15
16
  listValidation = [],
16
17
  validation = [],
@@ -28,10 +29,13 @@ const createModelField = params => {
28
29
  label,
29
30
  type,
30
31
  settings,
32
+ tags,
31
33
  listValidation,
32
34
  validation,
33
35
  multipleValues,
34
36
  predefinedValues
35
37
  };
36
38
  };
37
- exports.createModelField = createModelField;
39
+ exports.createModelField = createModelField;
40
+
41
+ //# sourceMappingURL=createModelField.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createModelField","params","label","fieldId","initialFieldId","type","settings","listValidation","validation","multipleValues","predefinedValues","values","enabled","camelCase","id","storageId"],"sources":["createModelField.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport camelCase from \"lodash/camelCase\";\n\nexport interface CreateModelFieldParams\n extends Omit<CmsModelField, \"id\" | \"storageId\" | \"fieldId\"> {\n fieldId?: string;\n}\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n const {\n label,\n fieldId: initialFieldId,\n type,\n settings = {},\n listValidation = [],\n validation = [],\n multipleValues = false,\n predefinedValues = {\n values: [],\n enabled: false\n }\n } = params;\n\n const fieldId = initialFieldId ? camelCase(initialFieldId) : camelCase(label);\n\n return {\n id: fieldId,\n storageId: `${type}@${fieldId}`,\n fieldId,\n label,\n type,\n settings,\n listValidation,\n validation,\n multipleValues,\n predefinedValues\n };\n};\n"],"mappings":";;;;;;;AACA;AAOO,MAAMA,gBAAgB,GAAIC,MAA8B,IAAoB;EAC/E,MAAM;IACFC,KAAK;IACLC,OAAO,EAAEC,cAAc;IACvBC,IAAI;IACJC,QAAQ,GAAG,CAAC,CAAC;IACbC,cAAc,GAAG,EAAE;IACnBC,UAAU,GAAG,EAAE;IACfC,cAAc,GAAG,KAAK;IACtBC,gBAAgB,GAAG;MACfC,MAAM,EAAE,EAAE;MACVC,OAAO,EAAE;IACb;EACJ,CAAC,GAAGX,MAAM;EAEV,MAAME,OAAO,GAAGC,cAAc,GAAG,IAAAS,kBAAS,EAACT,cAAc,CAAC,GAAG,IAAAS,kBAAS,EAACX,KAAK,CAAC;EAE7E,OAAO;IACHY,EAAE,EAAEX,OAAO;IACXY,SAAS,EAAG,GAAEV,IAAK,IAAGF,OAAQ,EAAC;IAC/BA,OAAO;IACPD,KAAK;IACLG,IAAI;IACJC,QAAQ;IACRC,cAAc;IACdC,UAAU;IACVC,cAAc;IACdC;EACJ,CAAC;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["_camelCase","_interopRequireDefault","require","createModelField","params","label","fieldId","initialFieldId","type","tags","settings","listValidation","validation","multipleValues","predefinedValues","values","enabled","camelCase","id","storageId","exports"],"sources":["createModelField.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport camelCase from \"lodash/camelCase\";\n\nexport interface CreateModelFieldParams\n extends Omit<CmsModelField, \"id\" | \"storageId\" | \"fieldId\"> {\n fieldId?: string;\n}\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n const {\n label,\n fieldId: initialFieldId,\n type,\n tags,\n settings = {},\n listValidation = [],\n validation = [],\n multipleValues = false,\n predefinedValues = {\n values: [],\n enabled: false\n }\n } = params;\n\n const fieldId = initialFieldId ? camelCase(initialFieldId) : camelCase(label);\n\n return {\n id: fieldId,\n storageId: `${type}@${fieldId}`,\n fieldId,\n label,\n type,\n settings,\n tags,\n listValidation,\n validation,\n multipleValues,\n predefinedValues\n };\n};\n"],"mappings":";;;;;;;AACA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAOO,MAAMC,gBAAgB,GAAIC,MAA8B,IAAoB;EAC/E,MAAM;IACFC,KAAK;IACLC,OAAO,EAAEC,cAAc;IACvBC,IAAI;IACJC,IAAI;IACJC,QAAQ,GAAG,CAAC,CAAC;IACbC,cAAc,GAAG,EAAE;IACnBC,UAAU,GAAG,EAAE;IACfC,cAAc,GAAG,KAAK;IACtBC,gBAAgB,GAAG;MACfC,MAAM,EAAE,EAAE;MACVC,OAAO,EAAE;IACb;EACJ,CAAC,GAAGZ,MAAM;EAEV,MAAME,OAAO,GAAGC,cAAc,GAAG,IAAAU,kBAAS,EAACV,cAAc,CAAC,GAAG,IAAAU,kBAAS,EAACZ,KAAK,CAAC;EAE7E,OAAO;IACHa,EAAE,EAAEZ,OAAO;IACXa,SAAS,EAAG,GAAEX,IAAK,IAAGF,OAAQ,EAAC;IAC/BA,OAAO;IACPD,KAAK;IACLG,IAAI;IACJE,QAAQ;IACRD,IAAI;IACJE,cAAc;IACdC,UAAU;IACVC,cAAc;IACdC;EACJ,CAAC;AACL,CAAC;AAACM,OAAA,CAAAjB,gBAAA,GAAAA,gBAAA"}
@@ -1,4 +1,6 @@
1
- import { CmsPrivateModelFull } from "@webiny/api-headless-cms";
2
- import { CmsModelGroup } from "@webiny/api-headless-cms/types";
3
1
  export declare const FILE_MODEL_ID = "fmFile";
4
- export declare const createFileModelDefinition: (group: CmsModelGroup) => CmsPrivateModelFull;
2
+ interface CreateFileModelDefinitionParams {
3
+ withPrivateFiles: boolean;
4
+ }
5
+ export declare const createFileModelDefinition: (params: CreateFileModelDefinitionParams) => import("@webiny/api-headless-cms").CmsPrivateModelFull;
6
+ export {};
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createFileModelDefinition = exports.FILE_MODEL_ID = void 0;
7
+ var _apiHeadlessCms = require("@webiny/api-headless-cms");
7
8
  var _createModelField = require("./createModelField");
8
9
  const required = () => {
9
10
  return {
@@ -57,12 +58,45 @@ const metaPrivateField = () => {
57
58
  type: "boolean"
58
59
  });
59
60
  };
61
+ const metaOriginalKeyField = () => {
62
+ return (0, _createModelField.createModelField)({
63
+ label: "Original Key",
64
+ type: "text"
65
+ });
66
+ };
60
67
  const metaField = () => {
61
68
  return (0, _createModelField.createModelField)({
62
69
  label: "Meta",
63
70
  type: "object",
64
71
  settings: {
65
- fields: [metaPrivateField(), metaWidthField(), metaHeightField()]
72
+ fields: [metaPrivateField(), metaWidthField(), metaHeightField(), metaOriginalKeyField()]
73
+ }
74
+ });
75
+ };
76
+ const accessControlTypeField = () => {
77
+ return (0, _createModelField.createModelField)({
78
+ label: "Type",
79
+ type: "text",
80
+ predefinedValues: {
81
+ enabled: true,
82
+ values: [{
83
+ label: "Public",
84
+ value: "public",
85
+ selected: true
86
+ }, {
87
+ label: "Private",
88
+ value: "private-authenticated"
89
+ }]
90
+ }
91
+ });
92
+ };
93
+ const accessControlField = () => {
94
+ return (0, _createModelField.createModelField)({
95
+ label: "Access Control",
96
+ type: "object",
97
+ tags: ["$bulk-edit"],
98
+ settings: {
99
+ fields: [accessControlTypeField()]
66
100
  }
67
101
  });
68
102
  };
@@ -70,6 +104,7 @@ const tagsField = () => {
70
104
  return (0, _createModelField.createModelField)({
71
105
  label: "Tags",
72
106
  type: "text",
107
+ tags: ["$bulk-edit"],
73
108
  multipleValues: true,
74
109
  validation: [required()]
75
110
  });
@@ -82,37 +117,37 @@ const aliasesField = () => {
82
117
  validation: [required()]
83
118
  });
84
119
  };
120
+ const locationField = () => {
121
+ return (0, _createModelField.createModelField)({
122
+ type: "object",
123
+ label: "Location",
124
+ fieldId: "location",
125
+ settings: {
126
+ fields: [(0, _createModelField.createModelField)({
127
+ type: "text",
128
+ fieldId: "folderId",
129
+ label: "Folder ID",
130
+ settings: {
131
+ path: "location.folderId"
132
+ }
133
+ })]
134
+ }
135
+ });
136
+ };
85
137
  const FILE_MODEL_ID = "fmFile";
86
138
  exports.FILE_MODEL_ID = FILE_MODEL_ID;
87
- const createFileModelDefinition = group => {
88
- return {
139
+ const createFileModelDefinition = params => {
140
+ const fields = [locationField(), nameField(), keyField(), typeField(), sizeField(), metaField(), tagsField(), aliasesField()];
141
+ if (params.withPrivateFiles) {
142
+ fields.push(accessControlField());
143
+ }
144
+ return (0, _apiHeadlessCms.createPrivateModelDefinition)({
89
145
  name: "FmFile",
90
146
  modelId: FILE_MODEL_ID,
91
147
  titleFieldId: "name",
92
- layout: [["location"], ["name"], ["key"], ["type"], ["size"], ["meta"], ["tags"], ["aliases"]],
93
- fields: [{
94
- id: "location",
95
- type: "object",
96
- storageId: "object@location",
97
- label: "Location",
98
- fieldId: "location",
99
- settings: {
100
- fields: [{
101
- id: "folderId",
102
- type: "text",
103
- fieldId: "folderId",
104
- label: "Folder ID",
105
- storageId: "text@folderId",
106
- settings: {
107
- path: "location.folderId"
108
- }
109
- }]
110
- }
111
- }, nameField(), keyField(), typeField(), sizeField(), metaField(), tagsField(), aliasesField()],
112
- description: "File Manager - File content model",
113
- isPrivate: true,
114
- group,
115
- noValidate: true
116
- };
148
+ fields
149
+ });
117
150
  };
118
- exports.createFileModelDefinition = createFileModelDefinition;
151
+ exports.createFileModelDefinition = createFileModelDefinition;
152
+
153
+ //# sourceMappingURL=file.model.js.map