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

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 (263) hide show
  1. package/FileManagerContextSetup.d.ts +2 -2
  2. package/FileManagerContextSetup.js +16 -14
  3. package/FileManagerContextSetup.js.map +1 -1
  4. package/README.md +1 -1
  5. package/cmsFileStorage/CmsFilesStorage.d.ts +3 -3
  6. package/cmsFileStorage/CmsFilesStorage.js +52 -61
  7. package/cmsFileStorage/CmsFilesStorage.js.map +1 -1
  8. package/cmsFileStorage/ListFilesWhereProcessor.d.ts +2 -2
  9. package/cmsFileStorage/ListFilesWhereProcessor.js +8 -10
  10. package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -1
  11. package/cmsFileStorage/ListTagsWhereProcessor.d.ts +2 -2
  12. package/cmsFileStorage/ListTagsWhereProcessor.js +8 -10
  13. package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -1
  14. package/cmsFileStorage/file.model.d.ts +5 -3
  15. package/cmsFileStorage/file.model.js +83 -43
  16. package/cmsFileStorage/file.model.js.map +1 -1
  17. package/contants.js +3 -2
  18. package/contants.js.map +1 -1
  19. package/createFileManager/files.crud.d.ts +3 -3
  20. package/createFileManager/files.crud.js +83 -55
  21. package/createFileManager/files.crud.js.map +1 -1
  22. package/createFileManager/index.d.ts +2 -14
  23. package/createFileManager/index.js +8 -5
  24. package/createFileManager/index.js.map +1 -1
  25. package/createFileManager/permissions/FilesPermissions.d.ts +1 -1
  26. package/createFileManager/permissions/FilesPermissions.js +3 -1
  27. package/createFileManager/permissions/FilesPermissions.js.map +1 -1
  28. package/createFileManager/permissions/SettingsPermissions.d.ts +4 -0
  29. package/createFileManager/permissions/SettingsPermissions.js +11 -0
  30. package/createFileManager/permissions/SettingsPermissions.js.map +1 -0
  31. package/createFileManager/settings.crud.d.ts +3 -3
  32. package/createFileManager/settings.crud.js +74 -48
  33. package/createFileManager/settings.crud.js.map +1 -1
  34. package/createFileManager/system.crud.d.ts +3 -3
  35. package/createFileManager/system.crud.js +6 -4
  36. package/createFileManager/system.crud.js.map +1 -1
  37. package/createFileManager/types.d.ts +16 -0
  38. package/createFileManager/types.js +7 -0
  39. package/createFileManager/types.js.map +1 -0
  40. package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +11 -0
  41. package/delivery/AssetDelivery/AliasAssetRequestResolver.js +74 -0
  42. package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +1 -0
  43. package/delivery/AssetDelivery/Asset.d.ts +32 -0
  44. package/delivery/AssetDelivery/Asset.js +69 -0
  45. package/delivery/AssetDelivery/Asset.js.map +1 -0
  46. package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +63 -0
  47. package/delivery/AssetDelivery/AssetDeliveryConfig.js +102 -0
  48. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -0
  49. package/delivery/AssetDelivery/AssetRequest.d.ts +25 -0
  50. package/delivery/AssetDelivery/AssetRequest.js +29 -0
  51. package/delivery/AssetDelivery/AssetRequest.js.map +1 -0
  52. package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +6 -0
  53. package/delivery/AssetDelivery/FilesAssetRequestResolver.js +37 -0
  54. package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -0
  55. package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +4 -0
  56. package/delivery/AssetDelivery/NullAssetOutputStrategy.js +15 -0
  57. package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -0
  58. package/delivery/AssetDelivery/NullAssetReply.d.ts +4 -0
  59. package/delivery/AssetDelivery/NullAssetReply.js +20 -0
  60. package/delivery/AssetDelivery/NullAssetReply.js.map +1 -0
  61. package/delivery/AssetDelivery/NullAssetResolver.d.ts +5 -0
  62. package/delivery/AssetDelivery/NullAssetResolver.js +14 -0
  63. package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -0
  64. package/delivery/AssetDelivery/NullRequestResolver.d.ts +4 -0
  65. package/delivery/AssetDelivery/NullRequestResolver.js +14 -0
  66. package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -0
  67. package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +8 -0
  68. package/delivery/AssetDelivery/SetCacheControlHeaders.js +25 -0
  69. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -0
  70. package/delivery/AssetDelivery/SetResponseHeaders.d.ts +18 -0
  71. package/delivery/AssetDelivery/SetResponseHeaders.js +25 -0
  72. package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -0
  73. package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +6 -0
  74. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +7 -0
  75. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +1 -0
  76. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +4 -0
  77. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +7 -0
  78. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +1 -0
  79. package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +4 -0
  80. package/delivery/AssetDelivery/abstractions/AssetProcessor.js +7 -0
  81. package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +1 -0
  82. package/delivery/AssetDelivery/abstractions/AssetReply.d.ts +25 -0
  83. package/delivery/AssetDelivery/abstractions/AssetReply.js +38 -0
  84. package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -0
  85. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +5 -0
  86. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +7 -0
  87. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +1 -0
  88. package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +4 -0
  89. package/delivery/AssetDelivery/abstractions/AssetResolver.js +7 -0
  90. package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +1 -0
  91. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +4 -0
  92. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +7 -0
  93. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +1 -0
  94. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.d.ts +2 -0
  95. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +15 -0
  96. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -0
  97. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +4 -0
  98. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +7 -0
  99. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +1 -0
  100. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +4 -0
  101. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +26 -0
  102. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -0
  103. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +4 -0
  104. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +15 -0
  105. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -0
  106. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +7 -0
  107. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +28 -0
  108. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -0
  109. package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +6 -0
  110. package/delivery/AssetDelivery/privateFiles/PrivateCache.js +28 -0
  111. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -0
  112. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +8 -0
  113. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +37 -0
  114. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -0
  115. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +13 -0
  116. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +63 -0
  117. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -0
  118. package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +6 -0
  119. package/delivery/AssetDelivery/privateFiles/PublicCache.js +28 -0
  120. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -0
  121. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +7 -0
  122. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +27 -0
  123. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -0
  124. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +7 -0
  125. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +27 -0
  126. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -0
  127. package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +7 -0
  128. package/delivery/AssetDelivery/privateFiles/internalIdentity.js +18 -0
  129. package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +1 -0
  130. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +4 -0
  131. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +14 -0
  132. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -0
  133. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +4 -0
  134. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +14 -0
  135. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -0
  136. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +6 -0
  137. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +26 -0
  138. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -0
  139. package/delivery/index.d.ts +17 -0
  140. package/delivery/index.js +194 -0
  141. package/delivery/index.js.map +1 -0
  142. package/delivery/setupAssetDelivery.d.ts +6 -0
  143. package/delivery/setupAssetDelivery.js +128 -0
  144. package/delivery/setupAssetDelivery.js.map +1 -0
  145. package/enterprise/applyThreatScanning.d.ts +2 -0
  146. package/enterprise/applyThreatScanning.js +20 -0
  147. package/enterprise/applyThreatScanning.js.map +1 -0
  148. package/graphql/baseSchema.d.ts +1 -1
  149. package/graphql/baseSchema.js +6 -2
  150. package/graphql/baseSchema.js.map +1 -1
  151. package/graphql/createFilesTypeDefs.d.ts +1 -1
  152. package/graphql/createFilesTypeDefs.js +31 -9
  153. package/graphql/createFilesTypeDefs.js.map +1 -1
  154. package/graphql/filesSchema.d.ts +2 -2
  155. package/graphql/filesSchema.js +14 -8
  156. package/graphql/filesSchema.js.map +1 -1
  157. package/graphql/getFileByUrl.d.ts +3 -0
  158. package/graphql/getFileByUrl.js +78 -0
  159. package/graphql/getFileByUrl.js.map +1 -0
  160. package/graphql/index.d.ts +3 -2
  161. package/graphql/index.js +27 -5
  162. package/graphql/index.js.map +1 -1
  163. package/graphql/utils.js +3 -1
  164. package/graphql/utils.js.map +1 -1
  165. package/handlers/{transform/managers → manage}/imageManager.d.ts +2 -3
  166. package/handlers/{transform/managers → manage}/imageManager.js +10 -9
  167. package/handlers/manage/imageManager.js.map +1 -0
  168. package/handlers/manage/index.d.ts +1 -1
  169. package/handlers/manage/index.js +9 -5
  170. package/handlers/manage/index.js.map +1 -1
  171. package/handlers/{transform → manage}/legacyUtils.d.ts +0 -5
  172. package/handlers/{transform → manage}/legacyUtils.js +7 -15
  173. package/handlers/manage/legacyUtils.js.map +1 -0
  174. package/handlers/{transform → manage}/utils.js +7 -9
  175. package/handlers/manage/utils.js.map +1 -0
  176. package/handlers/types.d.ts +1 -1
  177. package/handlers/types.js +3 -1
  178. package/handlers/types.js.map +1 -1
  179. package/handlers/utils/getEnvironment.js +3 -1
  180. package/handlers/utils/getEnvironment.js.map +1 -1
  181. package/handlers/utils/getObjectParams.js +3 -1
  182. package/handlers/utils/getObjectParams.js.map +1 -1
  183. package/handlers/utils/index.js +3 -1
  184. package/handlers/utils/index.js.map +1 -1
  185. package/index.d.ts +6 -3
  186. package/index.js +31 -7
  187. package/index.js.map +1 -1
  188. package/modelModifier/CmsModelModifier.d.ts +5 -3
  189. package/modelModifier/CmsModelModifier.js +15 -12
  190. package/modelModifier/CmsModelModifier.js.map +1 -1
  191. package/package.json +25 -35
  192. package/plugins/FilePhysicalStoragePlugin.d.ts +2 -1
  193. package/plugins/FilePhysicalStoragePlugin.js +3 -3
  194. package/plugins/FilePhysicalStoragePlugin.js.map +1 -1
  195. package/plugins/FileStorageTransformPlugin.d.ts +1 -1
  196. package/plugins/FileStorageTransformPlugin.js +3 -4
  197. package/plugins/FileStorageTransformPlugin.js.map +1 -1
  198. package/plugins/index.js +3 -1
  199. package/plugins/index.js.map +1 -1
  200. package/storage/FileStorage.d.ts +5 -3
  201. package/storage/FileStorage.js +20 -16
  202. package/storage/FileStorage.js.map +1 -1
  203. package/types/file.d.ts +12 -0
  204. package/types/file.js +3 -1
  205. package/types/file.js.map +1 -1
  206. package/types/file.lifecycle.d.ts +2 -2
  207. package/types/file.lifecycle.js +3 -1
  208. package/types/file.lifecycle.js.map +1 -1
  209. package/types.d.ts +37 -15
  210. package/types.js +3 -1
  211. package/types.js.map +1 -1
  212. package/cmsFileStorage/createFileManagerPlugins.d.ts +0 -5
  213. package/cmsFileStorage/createFileManagerPlugins.js +0 -34
  214. package/cmsFileStorage/createFileManagerPlugins.js.map +0 -1
  215. package/cmsFileStorage/createModelField.d.ts +0 -5
  216. package/cmsFileStorage/createModelField.js +0 -37
  217. package/cmsFileStorage/createModelField.js.map +0 -1
  218. package/cmsFileStorage/isInstallationPending.d.ts +0 -4
  219. package/cmsFileStorage/isInstallationPending.js +0 -21
  220. package/cmsFileStorage/isInstallationPending.js.map +0 -1
  221. package/createFileManager/filevalidation.disabled.d.ts +0 -0
  222. package/createFileManager/filevalidation.disabled.js +0 -55
  223. package/createFileManager/filevalidation.disabled.js.map +0 -1
  224. package/handlers/download/byAlias.d.ts +0 -6
  225. package/handlers/download/byAlias.js +0 -89
  226. package/handlers/download/byAlias.js.map +0 -1
  227. package/handlers/download/byExactKey.d.ts +0 -2
  228. package/handlers/download/byExactKey.js +0 -57
  229. package/handlers/download/byExactKey.js.map +0 -1
  230. package/handlers/download/extractFileInformation.d.ts +0 -9
  231. package/handlers/download/extractFileInformation.js +0 -20
  232. package/handlers/download/extractFileInformation.js.map +0 -1
  233. package/handlers/download/getS3Object.d.ts +0 -12
  234. package/handlers/download/getS3Object.js +0 -72
  235. package/handlers/download/getS3Object.js.map +0 -1
  236. package/handlers/download/index.d.ts +0 -2
  237. package/handlers/download/index.js +0 -27
  238. package/handlers/download/index.js.map +0 -1
  239. package/handlers/transform/index.d.ts +0 -2
  240. package/handlers/transform/index.js +0 -92
  241. package/handlers/transform/index.js.map +0 -1
  242. package/handlers/transform/legacyUtils.js.map +0 -1
  243. package/handlers/transform/loaders/imageLoader.d.ts +0 -30
  244. package/handlers/transform/loaders/imageLoader.js +0 -94
  245. package/handlers/transform/loaders/imageLoader.js.map +0 -1
  246. package/handlers/transform/loaders/index.d.ts +0 -8
  247. package/handlers/transform/loaders/index.js +0 -10
  248. package/handlers/transform/loaders/index.js.map +0 -1
  249. package/handlers/transform/loaders/sanitizeImageTransformations.d.ts +0 -11
  250. package/handlers/transform/loaders/sanitizeImageTransformations.js +0 -45
  251. package/handlers/transform/loaders/sanitizeImageTransformations.js.map +0 -1
  252. package/handlers/transform/managers/imageManager.js.map +0 -1
  253. package/handlers/transform/managers/index.d.ts +0 -5
  254. package/handlers/transform/managers/index.js +0 -10
  255. package/handlers/transform/managers/index.js.map +0 -1
  256. package/handlers/transform/optimizeImage.d.ts +0 -3
  257. package/handlers/transform/optimizeImage.js +0 -42
  258. package/handlers/transform/optimizeImage.js.map +0 -1
  259. package/handlers/transform/transformImage.d.ts +0 -13
  260. package/handlers/transform/transformImage.js +0 -28
  261. package/handlers/transform/transformImage.js.map +0 -1
  262. package/handlers/transform/utils.js.map +0 -1
  263. /package/handlers/{transform → manage}/utils.d.ts +0 -0
@@ -1,11 +1,9 @@
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.createFilesTypeDefs = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
7
  var _renderFields = require("@webiny/api-headless-cms/utils/renderFields");
10
8
  var _renderInputFields = require("@webiny/api-headless-cms/utils/renderInputFields");
11
9
  var _renderListFilterFields = require("@webiny/api-headless-cms/utils/renderListFilterFields");
@@ -21,7 +19,9 @@ const removeFieldRequiredValidation = field => {
21
19
  };
22
20
  const createUpdateFields = fields => {
23
21
  return fields.reduce((collection, field) => {
24
- collection.push(removeFieldRequiredValidation((0, _objectSpread2.default)({}, field)));
22
+ collection.push(removeFieldRequiredValidation({
23
+ ...field
24
+ }));
25
25
  return collection;
26
26
  }, []);
27
27
  };
@@ -67,26 +67,47 @@ const createFilesTypeDefs = params => {
67
67
  fieldTypePlugins,
68
68
  sorterPlugins: []
69
69
  });
70
- return (/* GraphQL */`
70
+ return /* GraphQL */`
71
71
  ${fieldTypes.map(f => f.typeDefs).join("\n")}
72
72
 
73
73
  type FmFile {
74
74
  id: ID!
75
- savedOn: DateTime!
76
75
  createdOn: DateTime!
76
+ modifiedOn: DateTime
77
+ savedOn: DateTime!
77
78
  createdBy: FmCreatedBy!
79
+ modifiedBy: FmCreatedBy
80
+ savedBy: FmCreatedBy!
78
81
  src: String
79
82
  ${fieldTypes.map(f => f.fields).join("\n")}
80
83
  }
81
84
 
82
85
  ${inputCreateFields.map(f => f.typeDefs).join("\n")}
86
+
87
+ input FmCreatedByInput {
88
+ id: ID!
89
+ displayName: String!
90
+ type: String!
91
+ }
83
92
 
84
93
  input FmFileCreateInput {
85
94
  id: ID!
95
+ createdOn: DateTime
96
+ modifiedOn: DateTime
97
+ savedOn: DateTime
98
+ createdBy: FmCreatedByInput
99
+ modifiedBy: FmCreatedByInput
100
+ savedBy: FmCreatedByInput
86
101
  ${inputCreateFields.map(f => f.fields).join("\n")}
87
102
  }
88
103
 
89
104
  input FmFileUpdateInput {
105
+ createdOn: DateTime
106
+ modifiedOn: DateTime
107
+ savedOn: DateTime
108
+ createdBy: FmCreatedByInput
109
+ modifiedBy: FmCreatedByInput
110
+ savedBy: FmCreatedByInput
90
111
  ${inputUpdateFields.map(f => f.fields).join("\n")}
91
112
  }
92
113
 
@@ -131,7 +152,7 @@ const createFilesTypeDefs = params => {
131
152
  data: [FmFile!]
132
153
  error: FmError
133
154
  }
134
-
155
+
135
156
  type FmFileModelResponse {
136
157
  data: JSON
137
158
  error: FmError
@@ -156,7 +177,8 @@ const createFilesTypeDefs = params => {
156
177
  updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!
157
178
  deleteFile(id: ID!): FmBooleanResponse!
158
179
  }
159
- `
160
- );
180
+ `;
161
181
  };
162
- exports.createFilesTypeDefs = createFilesTypeDefs;
182
+ exports.createFilesTypeDefs = createFilesTypeDefs;
183
+
184
+ //# sourceMappingURL=createFilesTypeDefs.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFilesTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","listFilterFieldsRender","renderListFilterFields","excludeFields","excludeFromSorterts","sortEnumRender","renderSortEnum","includes","fieldId","sorterPlugins","map","f","typeDefs","join"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n const excludeFromSorterts = [\"tags\", \"aliases\"];\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields.filter(field => !excludeFromSorterts.includes(field.fieldId)),\n fieldTypePlugins,\n sorterPlugins: []\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n savedOn: DateTime!\n createdOn: DateTime!\n createdBy: FmCreatedBy!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n\n input FmFileCreateInput {\n id: ID!\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender}\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n ${sortEnumRender}\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_renderFields","require","_renderInputFields","_renderListFilterFields","_renderSortEnum","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFilesTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","listFilterFieldsRender","renderListFilterFields","excludeFields","excludeFromSorterts","sortEnumRender","renderSortEnum","includes","fieldId","sorterPlugins","map","f","typeDefs","join","exports"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import type { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n const excludeFromSorterts = [\"tags\", \"aliases\"];\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields.filter(field => !excludeFromSorterts.includes(field.fieldId)),\n fieldTypePlugins,\n sorterPlugins: []\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n createdOn: DateTime!\n modifiedOn: DateTime\n savedOn: DateTime!\n createdBy: FmCreatedBy!\n modifiedBy: FmCreatedBy\n savedBy: FmCreatedBy!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FmCreatedByInput {\n id: ID!\n displayName: String!\n type: String!\n }\n\n input FmFileCreateInput {\n id: ID!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender}\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n ${sortEnumRender}\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import { FileManagerContext } from "../types";
3
- import { CreateFilesTypeDefsParams } from "./createFilesTypeDefs";
2
+ import type { FileManagerContext } from "../types";
3
+ import type { CreateFilesTypeDefsParams } from "./createFilesTypeDefs";
4
4
  export declare const createFilesSchema: (params: CreateFilesTypeDefsParams) => GraphQLSchemaPlugin<FileManagerContext>;
@@ -21,7 +21,7 @@ const createFilesSchema = params => {
21
21
  FmFile: {
22
22
  async src(file, _, context) {
23
23
  const settings = await context.fileManager.getSettings();
24
- return ((settings === null || settings === void 0 ? void 0 : settings.srcPrefix) || "") + file.key;
24
+ return (settings?.srcPrefix || "") + file.key;
25
25
  }
26
26
  },
27
27
  FmQuery: {
@@ -30,9 +30,7 @@ const createFilesSchema = params => {
30
30
  if (!identity) {
31
31
  return new _apiSecurity.NotAuthorizedResponse();
32
32
  }
33
- return (0, _utils.resolve)(() => context.security.withoutAuthorization(() => {
34
- return context.cms.getModel("fmFile");
35
- }));
33
+ return (0, _utils.resolve)(() => context.cms.getModel("fmFile"));
36
34
  },
37
35
  getFile(_, args, context) {
38
36
  return (0, _utils.resolve)(() => context.fileManager.getFile(args.id));
@@ -56,13 +54,19 @@ const createFilesSchema = params => {
56
54
  },
57
55
  FmMutation: {
58
56
  async createFile(_, args, context) {
59
- return (0, _utils.resolve)(() => context.fileManager.createFile(args.data, args.meta));
57
+ return (0, _utils.resolve)(() => {
58
+ return context.fileManager.createFile(args.data, args.meta);
59
+ });
60
60
  },
61
61
  async createFiles(_, args, context) {
62
- return (0, _utils.resolve)(() => context.fileManager.createFilesInBatch(args.data, args.meta));
62
+ return (0, _utils.resolve)(() => {
63
+ return context.fileManager.createFilesInBatch(args.data, args.meta);
64
+ });
63
65
  },
64
66
  async updateFile(_, args, context) {
65
- return (0, _utils.resolve)(() => context.fileManager.updateFile(args.id, args.data));
67
+ return (0, _utils.resolve)(() => {
68
+ return context.fileManager.updateFile(args.id, args.data);
69
+ });
66
70
  },
67
71
  async deleteFile(_, args, context) {
68
72
  return (0, _utils.resolve)(async () => {
@@ -80,4 +84,6 @@ const createFilesSchema = params => {
80
84
  fileManagerGraphQL.name = "fm.graphql.files";
81
85
  return fileManagerGraphQL;
82
86
  };
83
- exports.createFilesSchema = createFilesSchema;
87
+ exports.createFilesSchema = createFilesSchema;
88
+
89
+ //# sourceMappingURL=filesSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFilesSchema","params","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","createFilesTypeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmFile","src","file","_","context","settings","getSettings","srcPrefix","key","FmQuery","getFileModel","__","identity","security","getIdentity","NotAuthorizedResponse","resolve","withoutAuthorization","cms","getModel","getFile","args","id","listFiles","data","meta","ListResponse","e","ErrorResponse","listTags","tags","Response","error","FmMutation","createFile","createFiles","createFilesInBatch","updateFile","deleteFile","storage","delete","name"],"sources":["filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport { FileManagerContext, FilesListOpts } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\nimport { createFilesTypeDefs, CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\n\nexport const createFilesSchema = (params: CreateFilesTypeDefsParams) => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: createFilesTypeDefs(params),\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmFile: {\n async src(file, _, context: FileManagerContext) {\n const settings = await context.fileManager.getSettings();\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n FmQuery: {\n getFileModel(_, __, context) {\n const identity = context.security.getIdentity();\n if (!identity) {\n return new NotAuthorizedResponse();\n }\n\n return resolve(() =>\n context.security.withoutAuthorization(() => {\n return context.cms.getModel(\"fmFile\");\n })\n );\n },\n getFile(_, args: any, context) {\n return resolve(() => context.fileManager.getFile(args.id));\n },\n async listFiles(_, args: FilesListOpts, context) {\n try {\n const [data, meta] = await context.fileManager.listFiles(args);\n\n return new ListResponse(data, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n async listTags(_, args: any, context) {\n try {\n const tags = await context.fileManager.listTags(args || {});\n\n return new Response(tags);\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n return resolve(() => context.fileManager.createFile(args.data, args.meta));\n },\n async createFiles(_, args: any, context) {\n return resolve(() =>\n context.fileManager.createFilesInBatch(args.data, args.meta)\n );\n },\n async updateFile(_, args: any, context) {\n return resolve(() => context.fileManager.updateFile(args.id, args.data));\n },\n async deleteFile(_, args: any, context) {\n return resolve(async () => {\n // TODO: Ideally, this should work via a lifecycle hook; first we delete a record from DB, then from cloud storage.\n const file = await context.fileManager.getFile(args.id);\n return await context.fileManager.storage.delete({\n id: file.id,\n key: file.key\n });\n });\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.files\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_handlerGraphql","require","_utils","_createFilesTypeDefs","_apiSecurity","createFilesSchema","params","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","createFilesTypeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmFile","src","file","_","context","settings","getSettings","srcPrefix","key","FmQuery","getFileModel","__","identity","security","getIdentity","NotAuthorizedResponse","resolve","cms","getModel","getFile","args","id","listFiles","data","meta","ListResponse","e","ErrorResponse","listTags","tags","Response","error","FmMutation","createFile","createFiles","createFilesInBatch","updateFile","deleteFile","storage","delete","name","exports"],"sources":["filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport type { FileManagerContext, FilesListOpts } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\nimport type { CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs\";\nimport { createFilesTypeDefs } from \"~/graphql/createFilesTypeDefs\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\n\nexport const createFilesSchema = (params: CreateFilesTypeDefsParams) => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: createFilesTypeDefs(params),\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmFile: {\n async src(file, _, context) {\n const settings = await context.fileManager.getSettings();\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n FmQuery: {\n getFileModel(_, __, context) {\n const identity = context.security.getIdentity();\n if (!identity) {\n return new NotAuthorizedResponse();\n }\n\n return resolve(() => context.cms.getModel(\"fmFile\"));\n },\n getFile(_, args: any, context) {\n return resolve(() => context.fileManager.getFile(args.id));\n },\n async listFiles(_, args: FilesListOpts, context) {\n try {\n const [data, meta] = await context.fileManager.listFiles(args);\n\n return new ListResponse(data, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n async listTags(_, args: any, context) {\n try {\n const tags = await context.fileManager.listTags(args || {});\n\n return new Response(tags);\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.createFile(args.data, args.meta);\n });\n },\n async createFiles(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.createFilesInBatch(args.data, args.meta);\n });\n },\n async updateFile(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.updateFile(args.id, args.data);\n });\n },\n async deleteFile(_, args: any, context) {\n return resolve(async () => {\n // TODO: Ideally, this should work via a lifecycle hook; first we delete a record from DB, then from cloud storage.\n const file = await context.fileManager.getFile(args.id);\n return await context.fileManager.storage.delete({\n id: file.id,\n key: file.key\n });\n });\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.files\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
+ import type { FileManagerContext } from "../types";
3
+ export declare const getFileByUrl: () => GraphQLSchemaPlugin<FileManagerContext>;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getFileByUrl = void 0;
7
+ var _handlerGraphql = require("@webiny/handler-graphql");
8
+ var _apiSecurity = require("@webiny/api-security");
9
+ const getFileByUrl = () => {
10
+ const fileManagerGraphQL = new _handlerGraphql.GraphQLSchemaPlugin({
11
+ typeDefs: /* GraphQL */`
12
+ extend type FmQuery {
13
+ getFileByUrl(url: String!): FmFileResponse
14
+ }
15
+ `,
16
+ resolvers: {
17
+ FmQuery: {
18
+ async getFileByUrl(_, args, context) {
19
+ const {
20
+ url
21
+ } = args;
22
+ const useCase = new SecureGetFileByUrl(context.security, new GetFileByUrlUseCase(context.fileManager));
23
+ try {
24
+ const file = await useCase.execute(url);
25
+ if (file) {
26
+ return new _handlerGraphql.Response(file);
27
+ }
28
+ return new _handlerGraphql.NotFoundResponse("File not found!");
29
+ } catch (error) {
30
+ return new _handlerGraphql.ErrorResponse(error);
31
+ }
32
+ }
33
+ }
34
+ }
35
+ });
36
+ fileManagerGraphQL.name = "fm.graphql.getFileByUrl";
37
+ return fileManagerGraphQL;
38
+ };
39
+ exports.getFileByUrl = getFileByUrl;
40
+ class GetFileByUrlUseCase {
41
+ constructor(fileManager) {
42
+ this.fileManager = fileManager;
43
+ }
44
+ async execute(url) {
45
+ const {
46
+ pathname
47
+ } = new URL(url);
48
+ const isAlias = !pathname.startsWith("/files/") && !pathname.startsWith("/private/");
49
+ const query = isAlias ? pathname : pathname.replace("/files/", "").replace("/private/", "");
50
+ const [files] = await this.fileManager.listFiles({
51
+ where: {
52
+ OR: [{
53
+ key: query
54
+ }, {
55
+ aliases_contains: query
56
+ }]
57
+ },
58
+ limit: 1
59
+ });
60
+ return files.length ? files[0] : undefined;
61
+ }
62
+ }
63
+ class SecureGetFileByUrl {
64
+ constructor(security, useCase) {
65
+ this.security = security;
66
+ this.useCase = useCase;
67
+ }
68
+ execute(url) {
69
+ if (!this.security.getIdentity()) {
70
+ throw new _apiSecurity.NotAuthorizedError({
71
+ message: "You're not authorized to edit this file!"
72
+ });
73
+ }
74
+ return this.useCase.execute(url);
75
+ }
76
+ }
77
+
78
+ //# sourceMappingURL=getFileByUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_handlerGraphql","require","_apiSecurity","getFileByUrl","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","resolvers","FmQuery","_","args","context","url","useCase","SecureGetFileByUrl","security","GetFileByUrlUseCase","fileManager","file","execute","Response","NotFoundResponse","error","ErrorResponse","name","exports","constructor","pathname","URL","isAlias","startsWith","query","replace","files","listFiles","where","OR","key","aliases_contains","limit","length","undefined","getIdentity","NotAuthorizedError","message"],"sources":["getFileByUrl.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { Response, NotFoundResponse } from \"@webiny/handler-graphql\";\nimport type { FileManagerContext, FileManagerContextObject, File } from \"~/types\";\nimport type { Security } from \"@webiny/api-security/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\nexport const getFileByUrl = () => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: /* GraphQL */ `\n extend type FmQuery {\n getFileByUrl(url: String!): FmFileResponse\n }\n `,\n resolvers: {\n FmQuery: {\n async getFileByUrl(_, args, context) {\n const { url } = args as { url: string };\n const useCase = new SecureGetFileByUrl(\n context.security,\n new GetFileByUrlUseCase(context.fileManager)\n );\n try {\n const file = await useCase.execute(url);\n if (file) {\n return new Response(file);\n }\n return new NotFoundResponse(\"File not found!\");\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.getFileByUrl\";\n\n return fileManagerGraphQL;\n};\n\ninterface IGetFileByUrl {\n execute(url: string): Promise<File | undefined>;\n}\n\nclass GetFileByUrlUseCase implements IGetFileByUrl {\n private readonly fileManager: FileManagerContextObject;\n\n constructor(fileManager: FileManagerContextObject) {\n this.fileManager = fileManager;\n }\n\n async execute(url: string): Promise<File | undefined> {\n const { pathname } = new URL(url);\n const isAlias = !pathname.startsWith(\"/files/\") && !pathname.startsWith(\"/private/\");\n const query = isAlias ? pathname : pathname.replace(\"/files/\", \"\").replace(\"/private/\", \"\");\n\n const [files] = await this.fileManager.listFiles({\n where: {\n OR: [{ key: query }, { aliases_contains: query }]\n },\n limit: 1\n });\n\n return files.length ? files[0] : undefined;\n }\n}\n\nclass SecureGetFileByUrl implements IGetFileByUrl {\n private security: Security;\n private useCase: IGetFileByUrl;\n\n constructor(security: Security, useCase: IGetFileByUrl) {\n this.security = security;\n this.useCase = useCase;\n }\n\n execute(url: string): Promise<File | undefined> {\n if (!this.security.getIdentity()) {\n throw new NotAuthorizedError({ message: \"You're not authorized to edit this file!\" });\n }\n\n return this.useCase.execute(url);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAIA,IAAAC,YAAA,GAAAD,OAAA;AAEO,MAAME,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAMC,kBAAkB,GAAG,IAAIC,mCAAmB,CAAqB;IACnEC,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACL,MAAML,YAAYA,CAACM,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACjC,MAAM;YAAEC;UAAI,CAAC,GAAGF,IAAuB;UACvC,MAAMG,OAAO,GAAG,IAAIC,kBAAkB,CAClCH,OAAO,CAACI,QAAQ,EAChB,IAAIC,mBAAmB,CAACL,OAAO,CAACM,WAAW,CAC/C,CAAC;UACD,IAAI;YACA,MAAMC,IAAI,GAAG,MAAML,OAAO,CAACM,OAAO,CAACP,GAAG,CAAC;YACvC,IAAIM,IAAI,EAAE;cACN,OAAO,IAAIE,wBAAQ,CAACF,IAAI,CAAC;YAC7B;YACA,OAAO,IAAIG,gCAAgB,CAAC,iBAAiB,CAAC;UAClD,CAAC,CAAC,OAAOC,KAAK,EAAE;YACZ,OAAO,IAAIC,6BAAa,CAACD,KAAK,CAAC;UACnC;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;EACFlB,kBAAkB,CAACoB,IAAI,GAAG,yBAAyB;EAEnD,OAAOpB,kBAAkB;AAC7B,CAAC;AAACqB,OAAA,CAAAtB,YAAA,GAAAA,YAAA;AAMF,MAAMa,mBAAmB,CAA0B;EAG/CU,WAAWA,CAACT,WAAqC,EAAE;IAC/C,IAAI,CAACA,WAAW,GAAGA,WAAW;EAClC;EAEA,MAAME,OAAOA,CAACP,GAAW,EAA6B;IAClD,MAAM;MAAEe;IAAS,CAAC,GAAG,IAAIC,GAAG,CAAChB,GAAG,CAAC;IACjC,MAAMiB,OAAO,GAAG,CAACF,QAAQ,CAACG,UAAU,CAAC,SAAS,CAAC,IAAI,CAACH,QAAQ,CAACG,UAAU,CAAC,WAAW,CAAC;IACpF,MAAMC,KAAK,GAAGF,OAAO,GAAGF,QAAQ,GAAGA,QAAQ,CAACK,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IAE3F,MAAM,CAACC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAChB,WAAW,CAACiB,SAAS,CAAC;MAC7CC,KAAK,EAAE;QACHC,EAAE,EAAE,CAAC;UAAEC,GAAG,EAAEN;QAAM,CAAC,EAAE;UAAEO,gBAAgB,EAAEP;QAAM,CAAC;MACpD,CAAC;MACDQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,OAAON,KAAK,CAACO,MAAM,GAAGP,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;EAC9C;AACJ;AAEA,MAAM3B,kBAAkB,CAA0B;EAI9CY,WAAWA,CAACX,QAAkB,EAAEF,OAAsB,EAAE;IACpD,IAAI,CAACE,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACF,OAAO,GAAGA,OAAO;EAC1B;EAEAM,OAAOA,CAACP,GAAW,EAA6B;IAC5C,IAAI,CAAC,IAAI,CAACG,QAAQ,CAAC2B,WAAW,CAAC,CAAC,EAAE;MAC9B,MAAM,IAAIC,+BAAkB,CAAC;QAAEC,OAAO,EAAE;MAA2C,CAAC,CAAC;IACzF;IAEA,OAAO,IAAI,CAAC/B,OAAO,CAACM,OAAO,CAACP,GAAG,CAAC;EACpC;AACJ","ignoreList":[]}
@@ -1,3 +1,4 @@
1
1
  import { ContextPlugin } from "@webiny/api";
2
- import { FileManagerContext } from "../types";
3
- export declare const createGraphQLSchemaPlugin: () => (import("@webiny/handler-graphql").GraphQLSchemaPlugin<FileManagerContext> | ContextPlugin<FileManagerContext>)[];
2
+ import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
3
+ import type { FileManagerContext } from "../types";
4
+ export declare const createGraphQLSchemaPlugin: () => (GraphQLSchemaPlugin<FileManagerContext> | ContextPlugin<FileManagerContext>)[];
package/graphql/index.js CHANGED
@@ -4,30 +4,52 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createGraphQLSchemaPlugin = void 0;
7
- var _baseSchema = require("./baseSchema");
8
7
  var _api = require("@webiny/api");
8
+ var _apiHeadlessCms = require("@webiny/api-headless-cms");
9
9
  var _createFieldTypePluginRecords = require("@webiny/api-headless-cms/graphql/schema/createFieldTypePluginRecords");
10
+ var _getSchemaFromFieldPlugins = require("@webiny/api-headless-cms/utils/getSchemaFromFieldPlugins");
11
+ var _baseSchema = require("./baseSchema");
12
+ var _handlerGraphql = require("@webiny/handler-graphql");
10
13
  var _filesSchema = require("./filesSchema");
11
- var _isInstallationPending = require("../cmsFileStorage/isInstallationPending");
14
+ var _getFileByUrl = require("./getFileByUrl");
12
15
  const createGraphQLSchemaPlugin = () => {
13
16
  return [(0, _baseSchema.createBaseSchema)(),
14
17
  // Files schema is generated dynamically, based on a CMS model, so we need to
15
18
  // register it from a ContextPlugin, to perform additional bootstrap.
16
19
  new _api.ContextPlugin(async context => {
17
- if ((0, _isInstallationPending.isInstallationPending)(context)) {
20
+ if (!(await (0, _apiHeadlessCms.isHeadlessCmsReady)(context))) {
18
21
  return;
19
22
  }
20
23
  await context.security.withoutAuthorization(async () => {
21
24
  const fileModel = await context.cms.getModel("fmFile");
22
25
  const models = await context.cms.listModels();
23
26
  const fieldPlugins = (0, _createFieldTypePluginRecords.createFieldTypePluginRecords)(context.plugins);
27
+ /**
28
+ * We need to register all plugins for all the CMS fields.
29
+ */
30
+ const plugins = (0, _getSchemaFromFieldPlugins.createGraphQLSchemaPluginFromFieldPlugins)({
31
+ models,
32
+ type: "manage",
33
+ fieldTypePlugins: fieldPlugins,
34
+ createPlugin: ({
35
+ schema,
36
+ type,
37
+ fieldType
38
+ }) => {
39
+ const plugin = new _handlerGraphql.GraphQLSchemaPlugin(schema);
40
+ plugin.name = `fm.graphql.schema.${type}.field.${fieldType}`;
41
+ return plugin;
42
+ }
43
+ });
24
44
  const graphQlPlugin = (0, _filesSchema.createFilesSchema)({
25
45
  model: fileModel,
26
46
  models,
27
47
  plugins: fieldPlugins
28
48
  });
29
- context.plugins.register(graphQlPlugin);
49
+ context.plugins.register([...plugins, graphQlPlugin, (0, _getFileByUrl.getFileByUrl)()]);
30
50
  });
31
51
  })];
32
52
  };
33
- exports.createGraphQLSchemaPlugin = createGraphQLSchemaPlugin;
53
+ exports.createGraphQLSchemaPlugin = createGraphQLSchemaPlugin;
54
+
55
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createGraphQLSchemaPlugin","createBaseSchema","ContextPlugin","context","isInstallationPending","security","withoutAuthorization","fileModel","cms","getModel","models","listModels","fieldPlugins","createFieldTypePluginRecords","plugins","graphQlPlugin","createFilesSchema","model","register"],"sources":["index.ts"],"sourcesContent":["import { createBaseSchema } from \"~/graphql/baseSchema\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { FileManagerContext } from \"~/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { createFieldTypePluginRecords } from \"@webiny/api-headless-cms/graphql/schema/createFieldTypePluginRecords\";\nimport { createFilesSchema } from \"~/graphql/filesSchema\";\nimport { isInstallationPending } from \"~/cmsFileStorage/isInstallationPending\";\n\nexport const createGraphQLSchemaPlugin = () => {\n return [\n createBaseSchema(),\n // Files schema is generated dynamically, based on a CMS model, so we need to\n // register it from a ContextPlugin, to perform additional bootstrap.\n new ContextPlugin<FileManagerContext>(async context => {\n if (isInstallationPending(context)) {\n return;\n }\n\n await context.security.withoutAuthorization(async () => {\n const fileModel = (await context.cms.getModel(\"fmFile\")) as CmsModel;\n const models = await context.cms.listModels();\n const fieldPlugins = createFieldTypePluginRecords(context.plugins);\n\n const graphQlPlugin = createFilesSchema({\n model: fileModel,\n models,\n plugins: fieldPlugins\n });\n\n context.plugins.register(graphQlPlugin);\n });\n })\n ];\n};\n"],"mappings":";;;;;;AAAA;AACA;AAGA;AACA;AACA;AAEO,MAAMA,yBAAyB,GAAG,MAAM;EAC3C,OAAO,CACH,IAAAC,4BAAgB,GAAE;EAClB;EACA;EACA,IAAIC,kBAAa,CAAqB,MAAMC,OAAO,IAAI;IACnD,IAAI,IAAAC,4CAAqB,EAACD,OAAO,CAAC,EAAE;MAChC;IACJ;IAEA,MAAMA,OAAO,CAACE,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACpD,MAAMC,SAAS,GAAI,MAAMJ,OAAO,CAACK,GAAG,CAACC,QAAQ,CAAC,QAAQ,CAAc;MACpE,MAAMC,MAAM,GAAG,MAAMP,OAAO,CAACK,GAAG,CAACG,UAAU,EAAE;MAC7C,MAAMC,YAAY,GAAG,IAAAC,0DAA4B,EAACV,OAAO,CAACW,OAAO,CAAC;MAElE,MAAMC,aAAa,GAAG,IAAAC,8BAAiB,EAAC;QACpCC,KAAK,EAAEV,SAAS;QAChBG,MAAM;QACNI,OAAO,EAAEF;MACb,CAAC,CAAC;MAEFT,OAAO,CAACW,OAAO,CAACI,QAAQ,CAACH,aAAa,CAAC;IAC3C,CAAC,CAAC;EACN,CAAC,CAAC,CACL;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["_api","require","_apiHeadlessCms","_createFieldTypePluginRecords","_getSchemaFromFieldPlugins","_baseSchema","_handlerGraphql","_filesSchema","_getFileByUrl","createGraphQLSchemaPlugin","createBaseSchema","ContextPlugin","context","isHeadlessCmsReady","security","withoutAuthorization","fileModel","cms","getModel","models","listModels","fieldPlugins","createFieldTypePluginRecords","plugins","createGraphQLSchemaPluginFromFieldPlugins","type","fieldTypePlugins","createPlugin","schema","fieldType","plugin","GraphQLSchemaPlugin","name","graphQlPlugin","createFilesSchema","model","register","getFileByUrl","exports"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { createFieldTypePluginRecords } from \"@webiny/api-headless-cms/graphql/schema/createFieldTypePluginRecords\";\nimport { createGraphQLSchemaPluginFromFieldPlugins } from \"@webiny/api-headless-cms/utils/getSchemaFromFieldPlugins\";\nimport { createBaseSchema } from \"~/graphql/baseSchema\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { createFilesSchema } from \"~/graphql/filesSchema\";\nimport { getFileByUrl } from \"~/graphql/getFileByUrl\";\nimport type { FileManagerContext } from \"~/types\";\n\nexport const createGraphQLSchemaPlugin = () => {\n return [\n createBaseSchema(),\n // Files schema is generated dynamically, based on a CMS model, so we need to\n // register it from a ContextPlugin, to perform additional bootstrap.\n new ContextPlugin<FileManagerContext>(async context => {\n if (!(await isHeadlessCmsReady(context))) {\n return;\n }\n\n await context.security.withoutAuthorization(async () => {\n const fileModel = (await context.cms.getModel(\"fmFile\")) as CmsModel;\n const models = await context.cms.listModels();\n const fieldPlugins = createFieldTypePluginRecords(context.plugins);\n /**\n * We need to register all plugins for all the CMS fields.\n */\n const plugins = createGraphQLSchemaPluginFromFieldPlugins({\n models,\n type: \"manage\",\n fieldTypePlugins: fieldPlugins,\n createPlugin: ({ schema, type, fieldType }) => {\n const plugin = new GraphQLSchemaPlugin(schema);\n plugin.name = `fm.graphql.schema.${type}.field.${fieldType}`;\n return plugin;\n }\n });\n\n const graphQlPlugin = createFilesSchema({\n model: fileModel,\n models,\n plugins: fieldPlugins\n });\n\n context.plugins.register([...plugins, graphQlPlugin, getFileByUrl()]);\n });\n })\n ];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,6BAAA,GAAAF,OAAA;AACA,IAAAG,0BAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,aAAA,GAAAP,OAAA;AAGO,MAAMQ,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,OAAO,CACH,IAAAC,4BAAgB,EAAC,CAAC;EAClB;EACA;EACA,IAAIC,kBAAa,CAAqB,MAAMC,OAAO,IAAI;IACnD,IAAI,EAAE,MAAM,IAAAC,kCAAkB,EAACD,OAAO,CAAC,CAAC,EAAE;MACtC;IACJ;IAEA,MAAMA,OAAO,CAACE,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACpD,MAAMC,SAAS,GAAI,MAAMJ,OAAO,CAACK,GAAG,CAACC,QAAQ,CAAC,QAAQ,CAAc;MACpE,MAAMC,MAAM,GAAG,MAAMP,OAAO,CAACK,GAAG,CAACG,UAAU,CAAC,CAAC;MAC7C,MAAMC,YAAY,GAAG,IAAAC,0DAA4B,EAACV,OAAO,CAACW,OAAO,CAAC;MAClE;AAChB;AACA;MACgB,MAAMA,OAAO,GAAG,IAAAC,oEAAyC,EAAC;QACtDL,MAAM;QACNM,IAAI,EAAE,QAAQ;QACdC,gBAAgB,EAAEL,YAAY;QAC9BM,YAAY,EAAEA,CAAC;UAAEC,MAAM;UAAEH,IAAI;UAAEI;QAAU,CAAC,KAAK;UAC3C,MAAMC,MAAM,GAAG,IAAIC,mCAAmB,CAACH,MAAM,CAAC;UAC9CE,MAAM,CAACE,IAAI,GAAG,qBAAqBP,IAAI,UAAUI,SAAS,EAAE;UAC5D,OAAOC,MAAM;QACjB;MACJ,CAAC,CAAC;MAEF,MAAMG,aAAa,GAAG,IAAAC,8BAAiB,EAAC;QACpCC,KAAK,EAAEnB,SAAS;QAChBG,MAAM;QACNI,OAAO,EAAEF;MACb,CAAC,CAAC;MAEFT,OAAO,CAACW,OAAO,CAACa,QAAQ,CAAC,CAAC,GAAGb,OAAO,EAAEU,aAAa,EAAE,IAAAI,0BAAY,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;EACN,CAAC,CAAC,CACL;AACL,CAAC;AAACC,OAAA,CAAA7B,yBAAA,GAAAA,yBAAA","ignoreList":[]}
package/graphql/utils.js CHANGED
@@ -19,4 +19,6 @@ const resolve = async fn => {
19
19
  return new _handlerGraphql.ErrorResponse(e);
20
20
  }
21
21
  };
22
- exports.resolve = resolve;
22
+ exports.resolve = resolve;
23
+
24
+ //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["emptyResolver","resolve","fn","Response","e","ErrorResponse"],"sources":["utils.ts"],"sourcesContent":["import { Response, ErrorResponse } from \"@webiny/handler-graphql\";\n\nexport const emptyResolver = () => ({});\n\n/**\n * Use any because it really can be any.\n * TODO @ts-refactor maybe use generics at some point?\n */\ninterface ResolveCallable {\n (): Promise<any>;\n}\n\nexport const resolve = async (fn: ResolveCallable) => {\n try {\n return new Response(await fn());\n } catch (e) {\n return new ErrorResponse(e);\n }\n};\n"],"mappings":";;;;;;AAAA;AAEO,MAAMA,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;;AAEvC;AACA;AACA;AACA;AAHA;AAQO,MAAMC,OAAO,GAAG,MAAOC,EAAmB,IAAK;EAClD,IAAI;IACA,OAAO,IAAIC,wBAAQ,CAAC,MAAMD,EAAE,EAAE,CAAC;EACnC,CAAC,CAAC,OAAOE,CAAC,EAAE;IACR,OAAO,IAAIC,6BAAa,CAACD,CAAC,CAAC;EAC/B;AACJ,CAAC;AAAC"}
1
+ {"version":3,"names":["_handlerGraphql","require","emptyResolver","exports","resolve","fn","Response","e","ErrorResponse"],"sources":["utils.ts"],"sourcesContent":["import { Response, ErrorResponse } from \"@webiny/handler-graphql\";\n\nexport const emptyResolver = () => ({});\n\n/**\n * Use any because it really can be any.\n * TODO @ts-refactor maybe use generics at some point?\n */\ninterface ResolveCallable {\n (): Promise<any>;\n}\n\nexport const resolve = async (fn: ResolveCallable) => {\n try {\n return new Response(await fn());\n } catch (e) {\n return new ErrorResponse(e);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEO,MAAMC,aAAa,GAAGA,CAAA,MAAO,CAAC,CAAC,CAAC;;AAEvC;AACA;AACA;AACA;AAHAC,OAAA,CAAAD,aAAA,GAAAA,aAAA;AAQO,MAAME,OAAO,GAAG,MAAOC,EAAmB,IAAK;EAClD,IAAI;IACA,OAAO,IAAIC,wBAAQ,CAAC,MAAMD,EAAE,CAAC,CAAC,CAAC;EACnC,CAAC,CAAC,OAAOE,CAAC,EAAE;IACR,OAAO,IAAIC,6BAAa,CAACD,CAAC,CAAC;EAC/B;AACJ,CAAC;AAACJ,OAAA,CAAAC,OAAA,GAAAA,OAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import S3 from "aws-sdk/clients/s3";
1
+ import type { S3 } from "@webiny/aws-sdk/client-s3";
2
2
  export interface ImageManagerCanProcessParams {
3
3
  key: string;
4
4
  extension: string;
@@ -8,8 +8,7 @@ export interface ImageManagerProcessParams {
8
8
  key: string;
9
9
  extension: string;
10
10
  }
11
- declare const _default: {
11
+ export declare const imageManager: {
12
12
  canProcess: (params: ImageManagerCanProcessParams) => boolean;
13
13
  process({ s3, key, extension }: ImageManagerProcessParams): Promise<void>;
14
14
  };
15
- export default _default;
@@ -4,15 +4,15 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.imageManager = void 0;
8
8
  var _path = require("path");
9
- var _utils = require("../../utils");
10
- var newUtils = _interopRequireWildcard(require("../utils"));
11
- var legacyUtils = _interopRequireWildcard(require("../legacyUtils"));
9
+ var _utils = require("../utils");
10
+ var newUtils = _interopRequireWildcard(require("./utils"));
11
+ var legacyUtils = _interopRequireWildcard(require("./legacyUtils"));
12
12
  const isLegacyKey = key => {
13
13
  return !key.includes("/");
14
14
  };
15
- var _default = {
15
+ const imageManager = exports.imageManager = {
16
16
  canProcess: params => {
17
17
  const {
18
18
  key,
@@ -38,7 +38,7 @@ var _default = {
38
38
  // 1. Get optimized image key.
39
39
  await s3.deleteObject((0, _utils.getObjectParams)(utils.getImageKey({
40
40
  key
41
- }))).promise();
41
+ })));
42
42
  if (!utils.SUPPORTED_TRANSFORMABLE_IMAGES.includes(extension)) {
43
43
  return;
44
44
  }
@@ -59,7 +59,7 @@ var _default = {
59
59
  const imagesList = await s3.listObjects({
60
60
  Bucket: env.bucket,
61
61
  Prefix: prefix
62
- }).promise();
62
+ });
63
63
  if (!imagesList.Contents) {
64
64
  return;
65
65
  }
@@ -67,8 +67,9 @@ var _default = {
67
67
  if (!imageObject.Key) {
68
68
  continue;
69
69
  }
70
- await s3.deleteObject((0, _utils.getObjectParams)(imageObject.Key)).promise();
70
+ await s3.deleteObject((0, _utils.getObjectParams)(imageObject.Key));
71
71
  }
72
72
  }
73
73
  };
74
- exports.default = _default;
74
+
75
+ //# sourceMappingURL=imageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_path","require","_utils","newUtils","_interopRequireWildcard","legacyUtils","isLegacyKey","key","includes","imageManager","exports","canProcess","params","extension","utils","SUPPORTED_IMAGES","startsWith","OPTIMIZED_IMAGE_PREFIX","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","process","s3","deleteObject","getObjectParams","getImageKey","SUPPORTED_TRANSFORMABLE_IMAGES","prefix","getOptimizedImageKeyPrefix","dirname","env","getEnvironment","imagesList","listObjects","Bucket","bucket","Prefix","Contents","imageObject","Key"],"sources":["imageManager.ts"],"sourcesContent":["import { dirname } from \"path\";\nimport type { S3 } from \"@webiny/aws-sdk/client-s3\";\nimport { getObjectParams, getEnvironment } from \"~/handlers/utils\";\nimport * as newUtils from \"./utils\";\nimport * as legacyUtils from \"./legacyUtils\";\n\nconst isLegacyKey = (key: string) => {\n return !key.includes(\"/\");\n};\n\nexport interface ImageManagerCanProcessParams {\n key: string;\n extension: string;\n}\nexport interface ImageManagerProcessParams {\n s3: S3;\n key: string;\n extension: string;\n}\nexport const imageManager = {\n canProcess: (params: ImageManagerCanProcessParams) => {\n const { key, extension } = params;\n const utils = key.includes(\"/\") ? newUtils : legacyUtils;\n\n if (!utils.SUPPORTED_IMAGES.includes(extension)) {\n return false;\n }\n\n // We only want to process original images, and delete all variations of it at once.\n // We DO NOT want to process the event for the deletion of an optimized/transformed image.\n // Unfortunately, there's no way to filter those events on the S3 bucket itself, so we have to do it this way.\n return !(\n key.startsWith(utils.OPTIMIZED_IMAGE_PREFIX) ||\n key.startsWith(utils.OPTIMIZED_TRANSFORMED_IMAGE_PREFIX)\n );\n },\n async process({ s3, key, extension }: ImageManagerProcessParams) {\n const utils = key.includes(\"/\") ? newUtils : legacyUtils;\n\n // 1. Get optimized image key.\n await s3.deleteObject(getObjectParams(utils.getImageKey({ key })));\n\n if (!utils.SUPPORTED_TRANSFORMABLE_IMAGES.includes(extension)) {\n return;\n }\n\n /**\n * Search for all transformed images and delete those too.\n *\n * For new keys, we take the entire path, up to, but not including, the file name:\n * - demo-pages/60228148f98841000981c724/welcome-to-webiny__idp.svg\n * - 60228148f98841000981c724/welcome-to-webiny__idp.svg\n *\n * Legacy keys don't have sub-folders:\n * - 8ldc5n3w2-custom-field-renderers.mp4\n */\n\n const prefix = isLegacyKey(key)\n ? utils.getOptimizedImageKeyPrefix(key)\n : dirname(key) + \"/\";\n\n const env = getEnvironment();\n const imagesList = await s3.listObjects({\n Bucket: env.bucket,\n Prefix: prefix\n });\n\n if (!imagesList.Contents) {\n return;\n }\n\n for (const imageObject of imagesList.Contents) {\n if (!imageObject.Key) {\n continue;\n }\n await s3.deleteObject(getObjectParams(imageObject.Key));\n }\n }\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,WAAA,GAAAD,uBAAA,CAAAH,OAAA;AAEA,MAAMK,WAAW,GAAIC,GAAW,IAAK;EACjC,OAAO,CAACA,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC;AAC7B,CAAC;AAWM,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG;EACxBE,UAAU,EAAGC,MAAoC,IAAK;IAClD,MAAM;MAAEL,GAAG;MAAEM;IAAU,CAAC,GAAGD,MAAM;IACjC,MAAME,KAAK,GAAGP,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAGL,QAAQ,GAAGE,WAAW;IAExD,IAAI,CAACS,KAAK,CAACC,gBAAgB,CAACP,QAAQ,CAACK,SAAS,CAAC,EAAE;MAC7C,OAAO,KAAK;IAChB;;IAEA;IACA;IACA;IACA,OAAO,EACHN,GAAG,CAACS,UAAU,CAACF,KAAK,CAACG,sBAAsB,CAAC,IAC5CV,GAAG,CAACS,UAAU,CAACF,KAAK,CAACI,kCAAkC,CAAC,CAC3D;EACL,CAAC;EACD,MAAMC,OAAOA,CAAC;IAAEC,EAAE;IAAEb,GAAG;IAAEM;EAAqC,CAAC,EAAE;IAC7D,MAAMC,KAAK,GAAGP,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAGL,QAAQ,GAAGE,WAAW;;IAExD;IACA,MAAMe,EAAE,CAACC,YAAY,CAAC,IAAAC,sBAAe,EAACR,KAAK,CAACS,WAAW,CAAC;MAAEhB;IAAI,CAAC,CAAC,CAAC,CAAC;IAElE,IAAI,CAACO,KAAK,CAACU,8BAA8B,CAAChB,QAAQ,CAACK,SAAS,CAAC,EAAE;MAC3D;IACJ;;IAEA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEQ,MAAMY,MAAM,GAAGnB,WAAW,CAACC,GAAG,CAAC,GACzBO,KAAK,CAACY,0BAA0B,CAACnB,GAAG,CAAC,GACrC,IAAAoB,aAAO,EAACpB,GAAG,CAAC,GAAG,GAAG;IAExB,MAAMqB,GAAG,GAAG,IAAAC,qBAAc,EAAC,CAAC;IAC5B,MAAMC,UAAU,GAAG,MAAMV,EAAE,CAACW,WAAW,CAAC;MACpCC,MAAM,EAAEJ,GAAG,CAACK,MAAM;MAClBC,MAAM,EAAET;IACZ,CAAC,CAAC;IAEF,IAAI,CAACK,UAAU,CAACK,QAAQ,EAAE;MACtB;IACJ;IAEA,KAAK,MAAMC,WAAW,IAAIN,UAAU,CAACK,QAAQ,EAAE;MAC3C,IAAI,CAACC,WAAW,CAACC,GAAG,EAAE;QAClB;MACJ;MACA,MAAMjB,EAAE,CAACC,YAAY,CAAC,IAAAC,sBAAe,EAACc,WAAW,CAACC,GAAG,CAAC,CAAC;IAC3D;EACJ;AACJ,CAAC","ignoreList":[]}
@@ -2,4 +2,4 @@ import { S3EventHandler } from "@webiny/handler-aws";
2
2
  /**
3
3
  * This handler must be run through @webiny/handler-aws/s3
4
4
  */
5
- export declare const createManageFilePlugins: () => S3EventHandler<void>[];
5
+ export declare const createManageFilePlugins: () => S3EventHandler<any>[];
@@ -6,10 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createManageFilePlugins = void 0;
8
8
  var _path = _interopRequireDefault(require("path"));
9
- var _s = _interopRequireDefault(require("aws-sdk/clients/s3"));
9
+ var _clientS = require("@webiny/aws-sdk/client-s3");
10
10
  var _utils = require("../utils");
11
- var _managers = _interopRequireDefault(require("../transform/managers"));
11
+ var _imageManager = require("./imageManager");
12
12
  var _handlerAws = require("@webiny/handler-aws");
13
+ const managers = [_imageManager.imageManager];
14
+
13
15
  /**
14
16
  * This handler must be run through @webiny/handler-aws/s3
15
17
  */
@@ -30,12 +32,12 @@ const createManageFilePlugins = () => {
30
32
  const {
31
33
  region
32
34
  } = (0, _utils.getEnvironment)();
33
- const s3 = new _s.default({
35
+ const s3 = new _clientS.S3({
34
36
  region
35
37
  });
36
38
  for (const key of keys) {
37
39
  const extension = _path.default.extname(key);
38
- for (const manager of _managers.default) {
40
+ for (const manager of managers) {
39
41
  const canProcess = manager.canProcess({
40
42
  key,
41
43
  extension
@@ -52,4 +54,6 @@ const createManageFilePlugins = () => {
52
54
  }
53
55
  })];
54
56
  };
55
- exports.createManageFilePlugins = createManageFilePlugins;
57
+ exports.createManageFilePlugins = createManageFilePlugins;
58
+
59
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createManageFilePlugins","S3EventHandler","event","keys","i","Records","length","record","s3","object","key","push","region","getEnvironment","S3","extension","path","extname","manager","managers","canProcess","process"],"sources":["index.ts"],"sourcesContent":["import path from \"path\";\nimport S3 from \"aws-sdk/clients/s3\";\nimport { getEnvironment } from \"../utils\";\nimport managers from \"../transform/managers\";\nimport { S3EventHandler } from \"@webiny/handler-aws\";\n\n/**\n * This handler must be run through @webiny/handler-aws/s3\n */\nexport const createManageFilePlugins = () => {\n return [\n new S3EventHandler(async ({ event }) => {\n const keys: string[] = [];\n for (let i = 0; i < event.Records.length; i++) {\n const record = event.Records[i];\n if (typeof record.s3.object.key === \"string\") {\n keys.push(record.s3.object.key);\n }\n }\n\n if (keys.length === 0) {\n return;\n }\n\n const { region } = getEnvironment();\n const s3 = new S3({ region });\n\n for (const key of keys) {\n const extension = path.extname(key);\n\n for (const manager of managers) {\n const canProcess = manager.canProcess({\n key,\n extension\n });\n\n if (!canProcess) {\n continue;\n }\n await manager.process({\n s3,\n key,\n extension\n });\n }\n }\n })\n ];\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACO,MAAMA,uBAAuB,GAAG,MAAM;EACzC,OAAO,CACH,IAAIC,0BAAc,CAAC,OAAO;IAAEC;EAAM,CAAC,KAAK;IACpC,MAAMC,IAAc,GAAG,EAAE;IACzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,OAAO,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;MAC3C,MAAMG,MAAM,GAAGL,KAAK,CAACG,OAAO,CAACD,CAAC,CAAC;MAC/B,IAAI,OAAOG,MAAM,CAACC,EAAE,CAACC,MAAM,CAACC,GAAG,KAAK,QAAQ,EAAE;QAC1CP,IAAI,CAACQ,IAAI,CAACJ,MAAM,CAACC,EAAE,CAACC,MAAM,CAACC,GAAG,CAAC;MACnC;IACJ;IAEA,IAAIP,IAAI,CAACG,MAAM,KAAK,CAAC,EAAE;MACnB;IACJ;IAEA,MAAM;MAAEM;IAAO,CAAC,GAAG,IAAAC,qBAAc,GAAE;IACnC,MAAML,EAAE,GAAG,IAAIM,UAAE,CAAC;MAAEF;IAAO,CAAC,CAAC;IAE7B,KAAK,MAAMF,GAAG,IAAIP,IAAI,EAAE;MACpB,MAAMY,SAAS,GAAGC,aAAI,CAACC,OAAO,CAACP,GAAG,CAAC;MAEnC,KAAK,MAAMQ,OAAO,IAAIC,iBAAQ,EAAE;QAC5B,MAAMC,UAAU,GAAGF,OAAO,CAACE,UAAU,CAAC;UAClCV,GAAG;UACHK;QACJ,CAAC,CAAC;QAEF,IAAI,CAACK,UAAU,EAAE;UACb;QACJ;QACA,MAAMF,OAAO,CAACG,OAAO,CAAC;UAClBb,EAAE;UACFE,GAAG;UACHK;QACJ,CAAC,CAAC;MACN;IACJ;EACJ,CAAC,CAAC,CACL;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["_path","_interopRequireDefault","require","_clientS","_utils","_imageManager","_handlerAws","managers","imageManager","createManageFilePlugins","S3EventHandler","event","keys","i","Records","length","record","s3","object","key","push","region","getEnvironment","S3","extension","path","extname","manager","canProcess","process","exports"],"sources":["index.ts"],"sourcesContent":["import path from \"path\";\nimport { S3 } from \"@webiny/aws-sdk/client-s3\";\nimport { getEnvironment } from \"../utils\";\nimport { imageManager } from \"./imageManager\";\nimport { S3EventHandler } from \"@webiny/handler-aws\";\n\nconst managers = [imageManager];\n\n/**\n * This handler must be run through @webiny/handler-aws/s3\n */\nexport const createManageFilePlugins = () => {\n return [\n new S3EventHandler(async ({ event }) => {\n const keys: string[] = [];\n for (let i = 0; i < event.Records.length; i++) {\n const record = event.Records[i];\n if (typeof record.s3.object.key === \"string\") {\n keys.push(record.s3.object.key);\n }\n }\n\n if (keys.length === 0) {\n return;\n }\n\n const { region } = getEnvironment();\n const s3 = new S3({ region });\n\n for (const key of keys) {\n const extension = path.extname(key);\n\n for (const manager of managers) {\n const canProcess = manager.canProcess({\n key,\n extension\n });\n\n if (!canProcess) {\n continue;\n }\n await manager.process({\n s3,\n key,\n extension\n });\n }\n }\n })\n ];\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,MAAMK,QAAQ,GAAG,CAACC,0BAAY,CAAC;;AAE/B;AACA;AACA;AACO,MAAMC,uBAAuB,GAAGA,CAAA,KAAM;EACzC,OAAO,CACH,IAAIC,0BAAc,CAAC,OAAO;IAAEC;EAAM,CAAC,KAAK;IACpC,MAAMC,IAAc,GAAG,EAAE;IACzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,OAAO,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;MAC3C,MAAMG,MAAM,GAAGL,KAAK,CAACG,OAAO,CAACD,CAAC,CAAC;MAC/B,IAAI,OAAOG,MAAM,CAACC,EAAE,CAACC,MAAM,CAACC,GAAG,KAAK,QAAQ,EAAE;QAC1CP,IAAI,CAACQ,IAAI,CAACJ,MAAM,CAACC,EAAE,CAACC,MAAM,CAACC,GAAG,CAAC;MACnC;IACJ;IAEA,IAAIP,IAAI,CAACG,MAAM,KAAK,CAAC,EAAE;MACnB;IACJ;IAEA,MAAM;MAAEM;IAAO,CAAC,GAAG,IAAAC,qBAAc,EAAC,CAAC;IACnC,MAAML,EAAE,GAAG,IAAIM,WAAE,CAAC;MAAEF;IAAO,CAAC,CAAC;IAE7B,KAAK,MAAMF,GAAG,IAAIP,IAAI,EAAE;MACpB,MAAMY,SAAS,GAAGC,aAAI,CAACC,OAAO,CAACP,GAAG,CAAC;MAEnC,KAAK,MAAMQ,OAAO,IAAIpB,QAAQ,EAAE;QAC5B,MAAMqB,UAAU,GAAGD,OAAO,CAACC,UAAU,CAAC;UAClCT,GAAG;UACHK;QACJ,CAAC,CAAC;QAEF,IAAI,CAACI,UAAU,EAAE;UACb;QACJ;QACA,MAAMD,OAAO,CAACE,OAAO,CAAC;UAClBZ,EAAE;UACFE,GAAG;UACHK;QACJ,CAAC,CAAC;MACN;IACJ;EACJ,CAAC,CAAC,CACL;AACL,CAAC;AAACM,OAAA,CAAArB,uBAAA,GAAAA,uBAAA","ignoreList":[]}
@@ -1,8 +1,3 @@
1
- /**
2
- * BACKWARDS-COMPATIBILITY!
3
- *
4
- * This file contains utilities for files that don't have `id/key` structure, meaning, all files created before 5.35.0 release.
5
- */
6
1
  declare const SUPPORTED_IMAGES: string[];
7
2
  declare const SUPPORTED_TRANSFORMABLE_IMAGES: string[];
8
3
  declare const OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = "img-o-t-";