@webiny/api-file-manager 5.36.2 → 5.37.0-beta.1

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 (98) hide show
  1. package/FileManagerContextSetup.d.ts +13 -0
  2. package/FileManagerContextSetup.js +113 -0
  3. package/FileManagerContextSetup.js.map +1 -0
  4. package/cmsFileStorage/CmsFilesStorage.d.ts +27 -0
  5. package/cmsFileStorage/CmsFilesStorage.js +173 -0
  6. package/cmsFileStorage/CmsFilesStorage.js.map +1 -0
  7. package/cmsFileStorage/ListFilesWhereProcessor.d.ts +7 -0
  8. package/cmsFileStorage/ListFilesWhereProcessor.js +35 -0
  9. package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -0
  10. package/cmsFileStorage/ListTagsWhereProcessor.d.ts +7 -0
  11. package/cmsFileStorage/ListTagsWhereProcessor.js +35 -0
  12. package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -0
  13. package/cmsFileStorage/createFileManagerPlugins.d.ts +5 -0
  14. package/cmsFileStorage/createFileManagerPlugins.js +34 -0
  15. package/cmsFileStorage/createFileManagerPlugins.js.map +1 -0
  16. package/cmsFileStorage/createModelField.d.ts +5 -0
  17. package/cmsFileStorage/createModelField.js +37 -0
  18. package/cmsFileStorage/createModelField.js.map +1 -0
  19. package/cmsFileStorage/file.model.d.ts +4 -0
  20. package/cmsFileStorage/file.model.js +124 -0
  21. package/cmsFileStorage/file.model.js.map +1 -0
  22. package/cmsFileStorage/isInstallationPending.d.ts +4 -0
  23. package/cmsFileStorage/isInstallationPending.js +21 -0
  24. package/cmsFileStorage/isInstallationPending.js.map +1 -0
  25. package/contants.d.ts +1 -0
  26. package/contants.js +8 -0
  27. package/contants.js.map +1 -0
  28. package/createFileManager/files.crud.js +39 -61
  29. package/createFileManager/files.crud.js.map +1 -1
  30. package/createFileManager/index.d.ts +4 -2
  31. package/createFileManager/index.js.map +1 -1
  32. package/createFileManager/permissions/FilesPermissions.d.ts +4 -0
  33. package/createFileManager/permissions/FilesPermissions.js +9 -0
  34. package/createFileManager/permissions/FilesPermissions.js.map +1 -0
  35. package/createFileManager/settings.crud.js.map +1 -1
  36. package/createFileManager/system.crud.js.map +1 -1
  37. package/graphql/baseSchema.d.ts +3 -0
  38. package/graphql/baseSchema.js +117 -0
  39. package/graphql/baseSchema.js.map +1 -0
  40. package/graphql/createFilesTypeDefs.d.ts +7 -0
  41. package/graphql/createFilesTypeDefs.js +162 -0
  42. package/graphql/createFilesTypeDefs.js.map +1 -0
  43. package/graphql/filesSchema.d.ts +4 -0
  44. package/graphql/filesSchema.js +83 -0
  45. package/graphql/filesSchema.js.map +1 -0
  46. package/graphql/index.d.ts +2 -2
  47. package/graphql/index.js +23 -278
  48. package/graphql/index.js.map +1 -1
  49. package/graphql/utils.d.ts +11 -0
  50. package/graphql/utils.js +22 -0
  51. package/graphql/utils.js.map +1 -0
  52. package/handlers/download/byAlias.js +9 -9
  53. package/handlers/download/byAlias.js.map +1 -1
  54. package/handlers/download/byExactKey.js +9 -9
  55. package/handlers/download/byExactKey.js.map +1 -1
  56. package/handlers/download/extractFileInformation.js.map +1 -1
  57. package/handlers/download/getS3Object.d.ts +2 -0
  58. package/handlers/download/getS3Object.js +39 -24
  59. package/handlers/download/getS3Object.js.map +1 -1
  60. package/handlers/download/index.js.map +1 -1
  61. package/handlers/manage/index.js.map +1 -1
  62. package/handlers/transform/index.js +5 -2
  63. package/handlers/transform/index.js.map +1 -1
  64. package/handlers/transform/legacyUtils.js.map +1 -1
  65. package/handlers/transform/loaders/imageLoader.js.map +1 -1
  66. package/handlers/transform/loaders/index.js.map +1 -1
  67. package/handlers/transform/loaders/sanitizeImageTransformations.js.map +1 -1
  68. package/handlers/transform/managers/imageManager.js.map +1 -1
  69. package/handlers/transform/managers/index.js.map +1 -1
  70. package/handlers/transform/optimizeImage.js.map +1 -1
  71. package/handlers/transform/transformImage.d.ts +5 -2
  72. package/handlers/transform/transformImage.js +7 -4
  73. package/handlers/transform/transformImage.js.map +1 -1
  74. package/handlers/transform/utils.js +2 -2
  75. package/handlers/transform/utils.js.map +1 -1
  76. package/handlers/utils/getEnvironment.js.map +1 -1
  77. package/handlers/utils/getObjectParams.js.map +1 -1
  78. package/handlers/utils/index.js.map +1 -1
  79. package/index.d.ts +3 -2
  80. package/index.js +20 -36
  81. package/index.js.map +1 -1
  82. package/modelModifier/CmsModelModifier.d.ts +24 -0
  83. package/modelModifier/CmsModelModifier.js +59 -0
  84. package/modelModifier/CmsModelModifier.js.map +1 -0
  85. package/package.json +26 -25
  86. package/plugins/FilePhysicalStoragePlugin.js.map +1 -1
  87. package/plugins/FileStorageTransformPlugin.js.map +1 -1
  88. package/plugins/index.js.map +1 -1
  89. package/storage/FileStorage.d.ts +2 -1
  90. package/storage/FileStorage.js +5 -4
  91. package/storage/FileStorage.js.map +1 -1
  92. package/types/file.d.ts +5 -1
  93. package/types/file.js.map +1 -1
  94. package/types.d.ts +16 -26
  95. package/types.js.map +1 -1
  96. package/createFileManager/checkBasePermissions.d.ts +0 -5
  97. package/createFileManager/checkBasePermissions.js +0 -24
  98. package/createFileManager/checkBasePermissions.js.map +0 -1
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createFileModelDefinition = exports.FILE_MODEL_ID = void 0;
7
+ var _createModelField = require("./createModelField");
8
+ const required = () => {
9
+ return {
10
+ name: "required",
11
+ message: "Value is required."
12
+ };
13
+ };
14
+ const nameField = () => {
15
+ return (0, _createModelField.createModelField)({
16
+ label: "Name",
17
+ type: "text",
18
+ validation: [required()]
19
+ });
20
+ };
21
+ const keyField = () => {
22
+ return (0, _createModelField.createModelField)({
23
+ label: "Key",
24
+ type: "text",
25
+ validation: [required()]
26
+ });
27
+ };
28
+ const typeField = () => {
29
+ return (0, _createModelField.createModelField)({
30
+ label: "Type",
31
+ type: "text",
32
+ validation: [required()]
33
+ });
34
+ };
35
+ const sizeField = () => {
36
+ return (0, _createModelField.createModelField)({
37
+ label: "Size",
38
+ type: "number",
39
+ validation: [required()]
40
+ });
41
+ };
42
+ const metaWidthField = () => {
43
+ return (0, _createModelField.createModelField)({
44
+ label: "Width",
45
+ type: "number"
46
+ });
47
+ };
48
+ const metaHeightField = () => {
49
+ return (0, _createModelField.createModelField)({
50
+ label: "Height",
51
+ type: "number"
52
+ });
53
+ };
54
+ const metaPrivateField = () => {
55
+ return (0, _createModelField.createModelField)({
56
+ label: "Private",
57
+ type: "boolean"
58
+ });
59
+ };
60
+ const metaOriginalKeyField = () => {
61
+ return (0, _createModelField.createModelField)({
62
+ label: "Original Key",
63
+ type: "text"
64
+ });
65
+ };
66
+ const metaField = () => {
67
+ return (0, _createModelField.createModelField)({
68
+ label: "Meta",
69
+ type: "object",
70
+ settings: {
71
+ fields: [metaPrivateField(), metaWidthField(), metaHeightField(), metaOriginalKeyField()]
72
+ }
73
+ });
74
+ };
75
+ const tagsField = () => {
76
+ return (0, _createModelField.createModelField)({
77
+ label: "Tags",
78
+ type: "text",
79
+ multipleValues: true,
80
+ validation: [required()]
81
+ });
82
+ };
83
+ const aliasesField = () => {
84
+ return (0, _createModelField.createModelField)({
85
+ label: "Aliases",
86
+ type: "text",
87
+ multipleValues: true,
88
+ validation: [required()]
89
+ });
90
+ };
91
+ const FILE_MODEL_ID = "fmFile";
92
+ exports.FILE_MODEL_ID = FILE_MODEL_ID;
93
+ const createFileModelDefinition = group => {
94
+ return {
95
+ name: "FmFile",
96
+ modelId: FILE_MODEL_ID,
97
+ titleFieldId: "name",
98
+ layout: [["location"], ["name"], ["key"], ["type"], ["size"], ["meta"], ["tags"], ["aliases"]],
99
+ fields: [{
100
+ id: "location",
101
+ type: "object",
102
+ storageId: "object@location",
103
+ label: "Location",
104
+ fieldId: "location",
105
+ settings: {
106
+ fields: [{
107
+ id: "folderId",
108
+ type: "text",
109
+ fieldId: "folderId",
110
+ label: "Folder ID",
111
+ storageId: "text@folderId",
112
+ settings: {
113
+ path: "location.folderId"
114
+ }
115
+ }]
116
+ }
117
+ }, nameField(), keyField(), typeField(), sizeField(), metaField(), tagsField(), aliasesField()],
118
+ description: "File Manager - File content model",
119
+ isPrivate: true,
120
+ group,
121
+ noValidate: true
122
+ };
123
+ };
124
+ exports.createFileModelDefinition = createFileModelDefinition;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_createModelField","require","required","name","message","nameField","createModelField","label","type","validation","keyField","typeField","sizeField","metaWidthField","metaHeightField","metaPrivateField","metaOriginalKeyField","metaField","settings","fields","tagsField","multipleValues","aliasesField","FILE_MODEL_ID","exports","createFileModelDefinition","group","modelId","titleFieldId","layout","id","storageId","fieldId","path","description","isPrivate","noValidate"],"sources":["file.model.ts"],"sourcesContent":["import { CmsPrivateModelFull } from \"@webiny/api-headless-cms\";\nimport { createModelField } from \"./createModelField\";\nimport { CmsModelGroup } from \"@webiny/api-headless-cms/types\";\n\nconst required = () => {\n return {\n name: \"required\",\n message: \"Value is required.\"\n };\n};\n\nconst nameField = () => {\n return createModelField({\n label: \"Name\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst keyField = () => {\n return createModelField({\n label: \"Key\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst typeField = () => {\n return createModelField({\n label: \"Type\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst sizeField = () => {\n return createModelField({\n label: \"Size\",\n type: \"number\",\n validation: [required()]\n });\n};\n\nconst metaWidthField = () => {\n return createModelField({\n label: \"Width\",\n type: \"number\"\n });\n};\n\nconst metaHeightField = () => {\n return createModelField({\n label: \"Height\",\n type: \"number\"\n });\n};\n\nconst metaPrivateField = () => {\n return createModelField({\n label: \"Private\",\n type: \"boolean\"\n });\n};\n\nconst metaOriginalKeyField = () => {\n return createModelField({\n label: \"Original Key\",\n type: \"text\"\n });\n};\n\nconst metaField = () => {\n return createModelField({\n label: \"Meta\",\n type: \"object\",\n settings: {\n fields: [\n metaPrivateField(),\n metaWidthField(),\n metaHeightField(),\n metaOriginalKeyField()\n ]\n }\n });\n};\n\nconst tagsField = () => {\n return createModelField({\n label: \"Tags\",\n type: \"text\",\n multipleValues: true,\n validation: [required()]\n });\n};\n\nconst aliasesField = () => {\n return createModelField({\n label: \"Aliases\",\n type: \"text\",\n multipleValues: true,\n validation: [required()]\n });\n};\n\nexport const FILE_MODEL_ID = \"fmFile\";\n\nexport const createFileModelDefinition = (group: CmsModelGroup): CmsPrivateModelFull => {\n return {\n name: \"FmFile\",\n modelId: FILE_MODEL_ID,\n titleFieldId: \"name\",\n layout: [\n [\"location\"],\n [\"name\"],\n [\"key\"],\n [\"type\"],\n [\"size\"],\n [\"meta\"],\n [\"tags\"],\n [\"aliases\"]\n ],\n fields: [\n {\n id: \"location\",\n type: \"object\",\n storageId: \"object@location\",\n label: \"Location\",\n fieldId: \"location\",\n settings: {\n fields: [\n {\n id: \"folderId\",\n type: \"text\",\n fieldId: \"folderId\",\n label: \"Folder ID\",\n storageId: \"text@folderId\",\n settings: {\n path: \"location.folderId\"\n }\n }\n ]\n }\n },\n nameField(),\n keyField(),\n typeField(),\n sizeField(),\n metaField(),\n tagsField(),\n aliasesField()\n ],\n description: \"File Manager - File content model\",\n isPrivate: true,\n group,\n noValidate: true\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { FileManagerContext } from "../types";
2
+ declare type CheckInstallationParams = Pick<FileManagerContext, "tenancy" | "i18n">;
3
+ export declare const isInstallationPending: ({ tenancy, i18n }: CheckInstallationParams) => boolean;
4
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isInstallationPending = void 0;
7
+ const isInstallationPending = ({
8
+ tenancy,
9
+ i18n
10
+ }) => {
11
+ /**
12
+ * In case of a fresh webiny project "tenant" and "locale" won't be there until
13
+ * installation is completed. So, we need to skip "storage" creation till then.
14
+ */
15
+ const tenant = tenancy.getCurrentTenant();
16
+ if (!tenant) {
17
+ return true;
18
+ }
19
+ return !i18n.getContentLocale();
20
+ };
21
+ exports.isInstallationPending = isInstallationPending;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isInstallationPending","tenancy","i18n","tenant","getCurrentTenant","getContentLocale","exports"],"sources":["isInstallationPending.ts"],"sourcesContent":["import { FileManagerContext } from \"~/types\";\n\ntype CheckInstallationParams = Pick<FileManagerContext, \"tenancy\" | \"i18n\">;\nexport const isInstallationPending = ({ tenancy, i18n }: CheckInstallationParams): boolean => {\n /**\n * In case of a fresh webiny project \"tenant\" and \"locale\" won't be there until\n * installation is completed. So, we need to skip \"storage\" creation till then.\n */\n const tenant = tenancy.getCurrentTenant();\n if (!tenant) {\n return true;\n }\n\n return !i18n.getContentLocale();\n};\n"],"mappings":";;;;;;AAGO,MAAMA,qBAAqB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAA8B,CAAC,KAAc;EAC1F;AACJ;AACA;AACA;EACI,MAAMC,MAAM,GAAGF,OAAO,CAACG,gBAAgB,CAAC,CAAC;EACzC,IAAI,CAACD,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EAEA,OAAO,CAACD,IAAI,CAACG,gBAAgB,CAAC,CAAC;AACnC,CAAC;AAACC,OAAA,CAAAN,qBAAA,GAAAA,qBAAA"}
package/contants.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const ROOT_FOLDER = "root";
package/contants.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ROOT_FOLDER = void 0;
7
+ const ROOT_FOLDER = "root";
8
+ exports.ROOT_FOLDER = ROOT_FOLDER;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ROOT_FOLDER","exports"],"sources":["contants.ts"],"sourcesContent":["export const ROOT_FOLDER = \"root\";\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAG,MAAM;AAACC,OAAA,CAAAD,WAAA,GAAAA,WAAA"}
@@ -7,27 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.createFilesCrud = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
9
  var _handlerGraphql = require("@webiny/handler-graphql");
10
- var _apiSecurity = require("@webiny/api-security");
11
10
  var _pubsub = require("@webiny/pubsub");
12
11
  var _error = _interopRequireDefault(require("@webiny/error"));
13
- var _checkBasePermissions = require("./checkBasePermissions");
14
- /**
15
- * If permission is limited to "own" files only, check that current identity owns the file.
16
- */
17
- const checkOwnership = (file, permission, identity) => {
18
- if ((permission === null || permission === void 0 ? void 0 : permission.own) === true) {
19
- if (file.createdBy.id !== identity.id) {
20
- throw new _apiSecurity.NotAuthorizedError();
21
- }
22
- }
23
- };
12
+ var _contants = require("../contants");
24
13
  const createFilesCrud = config => {
25
14
  const {
26
15
  storageOperations,
16
+ filesPermissions,
27
17
  getLocaleCode,
28
18
  getTenantId,
29
19
  getIdentity,
30
- getPermission,
31
20
  WEBINY_VERSION
32
21
  } = config;
33
22
  return {
@@ -40,7 +29,7 @@ const createFilesCrud = config => {
40
29
  onFileBeforeDelete: (0, _pubsub.createTopic)("fileManager.onFileBeforeDelete"),
41
30
  onFileAfterDelete: (0, _pubsub.createTopic)("fileManager.onFileAfterDelete"),
42
31
  async getFile(id) {
43
- const permission = await (0, _checkBasePermissions.checkBasePermissions)(getPermission, {
32
+ await filesPermissions.ensure({
44
33
  rwd: "r"
45
34
  });
46
35
  const file = await storageOperations.files.get({
@@ -53,11 +42,14 @@ const createFilesCrud = config => {
53
42
  if (!file) {
54
43
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
55
44
  }
56
- checkOwnership(file, permission, getIdentity());
45
+ await filesPermissions.ensure({
46
+ owns: file.createdBy
47
+ });
57
48
  return file;
58
49
  },
59
50
  async createFile(input, meta) {
60
- await (0, _checkBasePermissions.checkBasePermissions)(getPermission, {
51
+ var _input$location;
52
+ await filesPermissions.ensure({
61
53
  rwd: "w"
62
54
  });
63
55
  const identity = getIdentity();
@@ -68,11 +60,15 @@ const createFilesCrud = config => {
68
60
  tags: Array.isArray(input.tags) ? input.tags : [],
69
61
  aliases: Array.isArray(input.aliases) ? input.aliases : [],
70
62
  id: input.id || id,
63
+ location: {
64
+ folderId: ((_input$location = input.location) === null || _input$location === void 0 ? void 0 : _input$location.folderId) ?? _contants.ROOT_FOLDER
65
+ },
71
66
  meta: (0, _objectSpread2.default)({
72
67
  private: false
73
68
  }, input.meta || {}),
74
69
  tenant: getTenantId(),
75
70
  createdOn: new Date().toISOString(),
71
+ savedOn: new Date().toISOString(),
76
72
  createdBy: {
77
73
  id: identity.id,
78
74
  displayName: identity.displayName,
@@ -101,7 +97,7 @@ const createFilesCrud = config => {
101
97
  }
102
98
  },
103
99
  async updateFile(id, input) {
104
- const permission = await (0, _checkBasePermissions.checkBasePermissions)(getPermission, {
100
+ await filesPermissions.ensure({
105
101
  rwd: "w"
106
102
  });
107
103
  const original = await storageOperations.files.get({
@@ -114,7 +110,9 @@ const createFilesCrud = config => {
114
110
  if (!original) {
115
111
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
116
112
  }
117
- checkOwnership(original, permission, getIdentity());
113
+ await filesPermissions.ensure({
114
+ owns: original.createdBy
115
+ });
118
116
  const file = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
119
117
  tags: Array.isArray(input.tags) ? input.tags : Array.isArray(original.tags) ? original.tags : [],
120
118
  aliases: Array.isArray(input.aliases) ? input.aliases : Array.isArray(original.aliases) ? original.aliases : [],
@@ -145,7 +143,7 @@ const createFilesCrud = config => {
145
143
  }
146
144
  },
147
145
  async deleteFile(id) {
148
- const permission = await (0, _checkBasePermissions.checkBasePermissions)(getPermission, {
146
+ await filesPermissions.ensure({
149
147
  rwd: "d"
150
148
  });
151
149
  const file = await storageOperations.files.get({
@@ -158,7 +156,9 @@ const createFilesCrud = config => {
158
156
  if (!file) {
159
157
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
160
158
  }
161
- checkOwnership(file, permission, getIdentity());
159
+ await filesPermissions.ensure({
160
+ owns: file.createdBy
161
+ });
162
162
  try {
163
163
  await this.onFileBeforeDelete.publish({
164
164
  file
@@ -178,7 +178,7 @@ const createFilesCrud = config => {
178
178
  return true;
179
179
  },
180
180
  async createFilesInBatch(inputs, meta) {
181
- await (0, _checkBasePermissions.checkBasePermissions)(getPermission, {
181
+ await filesPermissions.ensure({
182
182
  rwd: "w"
183
183
  });
184
184
  const identity = getIdentity();
@@ -190,14 +190,19 @@ const createFilesCrud = config => {
190
190
  type: identity.type
191
191
  };
192
192
  const files = inputs.map(input => {
193
+ var _input$location2;
193
194
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
194
195
  tags: Array.isArray(input.tags) ? input.tags : [],
195
196
  aliases: Array.isArray(input.aliases) ? input.aliases : [],
196
197
  meta: (0, _objectSpread2.default)({
197
198
  private: false
198
199
  }, input.meta || {}),
200
+ location: {
201
+ folderId: ((_input$location2 = input.location) === null || _input$location2 === void 0 ? void 0 : _input$location2.folderId) ?? _contants.ROOT_FOLDER
202
+ },
199
203
  tenant,
200
204
  createdOn: new Date().toISOString(),
205
+ savedOn: new Date().toISOString(),
201
206
  createdBy,
202
207
  locale,
203
208
  webinyVersion: WEBINY_VERSION
@@ -223,67 +228,40 @@ const createFilesCrud = config => {
223
228
  }
224
229
  },
225
230
  async listFiles(params = {}) {
226
- const permission = await (0, _checkBasePermissions.checkBasePermissions)(getPermission, {
231
+ await filesPermissions.ensure({
227
232
  rwd: "r"
228
233
  });
229
234
  const {
230
235
  limit = 40,
231
- search = "",
232
- types = [],
233
- tags = [],
234
- ids = [],
235
236
  after = null,
236
237
  where: initialWhere,
237
- sort: initialSort
238
+ sort: initialSort,
239
+ search
238
240
  } = params;
239
- const where = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialWhere), {}, {
240
- private: false,
241
+ const where = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _objectSpread2.default)({
242
+ meta: {
243
+ private_not: true
244
+ }
245
+ }, initialWhere)), {}, {
241
246
  locale: getLocaleCode(),
242
247
  tenant: getTenantId()
243
248
  });
249
+
244
250
  /**
245
251
  * Always override the createdBy received from the user, if any.
246
252
  */
247
- if (permission.own === true) {
253
+ if (await filesPermissions.canAccessOnlyOwnRecords()) {
248
254
  const identity = getIdentity();
249
255
  where.createdBy = identity.id;
250
256
  }
251
- /**
252
- * We need to map the old GraphQL definition to the new one.
253
- * That GQL definition is marked as deprecated.
254
- */
255
- /**
256
- * To have standardized where objects across the applications, we transform the types into type_in.
257
- */
258
- if (Array.isArray(types) && types.length > 0 && !where.type_in) {
259
- where.type_in = types;
260
- }
261
- /**
262
- * We are assigning search to tag and name search.
263
- * This should be treated as OR condition in the storage operations.
264
- */
265
- if (search && !where.search) {
266
- where.search = search;
267
- }
268
- /**
269
- * Same as on types/type_in.
270
- */
271
- if (Array.isArray(tags) && tags.length > 0 && !where.tag_in) {
272
- where.tag_in = tags.map(tag => tag.toLowerCase());
273
- }
274
- /**
275
- * Same as on types/type_in.
276
- */
277
- if (Array.isArray(ids) && ids.length > 0 && !where.id_in) {
278
- where.id_in = ids;
279
- }
280
257
  const sort = Array.isArray(initialSort) && initialSort.length > 0 ? initialSort : ["id_DESC"];
281
258
  try {
282
259
  return await storageOperations.files.list({
283
260
  where,
284
261
  after,
285
262
  limit,
286
- sort
263
+ sort,
264
+ search
287
265
  });
288
266
  } catch (ex) {
289
267
  throw new _error.default(ex.message || "Could not list files by given parameters.", ex.code || "FILE_TAG_SEARCH_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
@@ -299,7 +277,7 @@ const createFilesCrud = config => {
299
277
  after,
300
278
  limit
301
279
  }) {
302
- await (0, _checkBasePermissions.checkBasePermissions)(getPermission);
280
+ await filesPermissions.ensure();
303
281
  const where = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialWhere), {}, {
304
282
  tenant: getTenantId(),
305
283
  locale: getLocaleCode()
@@ -1 +1 @@
1
- {"version":3,"names":["checkOwnership","file","permission","identity","own","createdBy","id","NotAuthorizedError","createFilesCrud","config","storageOperations","getLocaleCode","getTenantId","getIdentity","getPermission","WEBINY_VERSION","onFileBeforeCreate","createTopic","onFileAfterCreate","onFileBeforeBatchCreate","onFileAfterBatchCreate","onFileBeforeUpdate","onFileAfterUpdate","onFileBeforeDelete","onFileAfterDelete","getFile","checkBasePermissions","rwd","files","get","where","tenant","locale","NotFoundError","createFile","input","meta","key","split","tags","Array","isArray","aliases","private","createdOn","Date","toISOString","displayName","type","webinyVersion","publish","result","create","ex","WebinyError","message","code","data","updateFile","original","update","deleteFile","delete","createFilesInBatch","inputs","map","results","createBatch","listFiles","params","limit","search","types","ids","after","initialWhere","sort","initialSort","length","type_in","tag_in","tag","toLowerCase","id_in","list","listTags"],"sources":["files.crud.ts"],"sourcesContent":["import { NotFoundError } from \"@webiny/handler-graphql\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport WebinyError from \"@webiny/error\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport {\n CreatedBy,\n File,\n FileManagerFilesStorageOperationsListParamsWhere,\n FileManagerFilesStorageOperationsTagsParamsWhere,\n FilePermission,\n FilesCRUD,\n FilesListOpts\n} from \"~/types\";\nimport { checkBasePermissions } from \"./checkBasePermissions\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\n\n/**\n * If permission is limited to \"own\" files only, check that current identity owns the file.\n */\nconst checkOwnership = (file: File, permission: FilePermission, identity: SecurityIdentity) => {\n if (permission?.own === true) {\n if (file.createdBy.id !== identity.id) {\n throw new NotAuthorizedError();\n }\n }\n};\n\nexport const createFilesCrud = (config: FileManagerConfig): FilesCRUD => {\n const {\n storageOperations,\n getLocaleCode,\n getTenantId,\n getIdentity,\n getPermission,\n WEBINY_VERSION\n } = config;\n\n return {\n onFileBeforeCreate: createTopic(\"fileManager.onFileBeforeCreate\"),\n onFileAfterCreate: createTopic(\"fileManager.onFileAfterCreate\"),\n onFileBeforeBatchCreate: createTopic(\"fileManager.onFileBeforeBatchCreate\"),\n onFileAfterBatchCreate: createTopic(\"fileManager.onFileAfterBatchCreate\"),\n onFileBeforeUpdate: createTopic(\"fileManager.onFileBeforeUpdate\"),\n onFileAfterUpdate: createTopic(\"fileManager.onFileAfterUpdate\"),\n onFileBeforeDelete: createTopic(\"fileManager.onFileBeforeDelete\"),\n onFileAfterDelete: createTopic(\"fileManager.onFileAfterDelete\"),\n async getFile(id: string) {\n const permission = await checkBasePermissions(getPermission, { rwd: \"r\" });\n\n const file = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(file, permission, getIdentity());\n\n return file;\n },\n async createFile(input, meta) {\n await checkBasePermissions(getPermission, { rwd: \"w\" });\n const identity = getIdentity();\n\n // Extract ID from file key\n const [id] = input.key.split(\"/\");\n\n const file: File = {\n ...input,\n tags: Array.isArray(input.tags) ? input.tags : [],\n aliases: Array.isArray(input.aliases) ? input.aliases : [],\n id: input.id || id,\n meta: {\n private: false,\n ...(input.meta || {})\n },\n tenant: getTenantId(),\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n locale: getLocaleCode(),\n webinyVersion: WEBINY_VERSION\n };\n\n try {\n await this.onFileBeforeCreate.publish({ file, meta });\n\n const result = await storageOperations.files.create({ file });\n\n await this.onFileAfterCreate.publish({ file, meta });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a file.\",\n ex.code || \"CREATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n file\n }\n );\n }\n },\n async updateFile(id, input) {\n const permission = await checkBasePermissions(getPermission, { rwd: \"w\" });\n\n const original = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!original) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(original, permission, getIdentity());\n\n const file: File = {\n ...original,\n ...input,\n tags: Array.isArray(input.tags)\n ? input.tags\n : Array.isArray(original.tags)\n ? original.tags\n : [],\n aliases: Array.isArray(input.aliases)\n ? input.aliases\n : Array.isArray(original.aliases)\n ? original.aliases\n : [],\n id: original.id,\n webinyVersion: WEBINY_VERSION\n };\n\n try {\n await this.onFileBeforeUpdate.publish({\n original,\n file,\n input\n });\n\n const result = await storageOperations.files.update({\n original,\n file\n });\n\n await this.onFileAfterUpdate.publish({\n original,\n file,\n input\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update a file.\",\n ex.code || \"UPDATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n original,\n file\n }\n );\n }\n },\n async deleteFile(id) {\n const permission = await checkBasePermissions(getPermission, { rwd: \"d\" });\n\n const file = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(file, permission, getIdentity());\n\n try {\n await this.onFileBeforeDelete.publish({ file });\n\n await storageOperations.files.delete({\n file\n });\n\n await this.onFileAfterDelete.publish({ file });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete a file.\",\n ex.code || \"DELETE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n id,\n file\n }\n );\n }\n\n return true;\n },\n async createFilesInBatch(inputs, meta) {\n await checkBasePermissions(getPermission, { rwd: \"w\" });\n\n const identity = getIdentity();\n const tenant = getTenantId();\n const locale = getLocaleCode();\n\n const createdBy: CreatedBy = {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n\n const files: File[] = inputs.map(input => {\n return {\n ...input,\n tags: Array.isArray(input.tags) ? input.tags : [],\n aliases: Array.isArray(input.aliases) ? input.aliases : [],\n meta: {\n private: false,\n ...(input.meta || {})\n },\n tenant,\n createdOn: new Date().toISOString(),\n createdBy,\n locale,\n webinyVersion: WEBINY_VERSION\n };\n });\n\n try {\n await this.onFileBeforeBatchCreate.publish({ files, meta });\n const results = await storageOperations.files.createBatch({\n files\n });\n await this.onFileAfterBatchCreate.publish({ files, meta });\n return results;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a batch of files.\",\n ex.code || \"CREATE_FILES_ERROR\",\n {\n ...(ex.data || {}),\n files\n }\n );\n }\n },\n async listFiles(params: FilesListOpts = {}) {\n const permission = await checkBasePermissions(getPermission, { rwd: \"r\" });\n\n const {\n limit = 40,\n search = \"\",\n types = [],\n tags = [],\n ids = [],\n after = null,\n where: initialWhere,\n sort: initialSort\n } = params;\n\n const where: FileManagerFilesStorageOperationsListParamsWhere = {\n ...initialWhere,\n private: false,\n locale: getLocaleCode(),\n tenant: getTenantId()\n };\n /**\n * Always override the createdBy received from the user, if any.\n */\n if (permission.own === true) {\n const identity = getIdentity();\n where.createdBy = identity.id;\n }\n /**\n * We need to map the old GraphQL definition to the new one.\n * That GQL definition is marked as deprecated.\n */\n /**\n * To have standardized where objects across the applications, we transform the types into type_in.\n */\n if (Array.isArray(types) && types.length > 0 && !where.type_in) {\n where.type_in = types;\n }\n /**\n * We are assigning search to tag and name search.\n * This should be treated as OR condition in the storage operations.\n */\n if (search && !where.search) {\n where.search = search;\n }\n /**\n * Same as on types/type_in.\n */\n if (Array.isArray(tags) && tags.length > 0 && !where.tag_in) {\n where.tag_in = tags.map(tag => tag.toLowerCase());\n }\n /**\n * Same as on types/type_in.\n */\n if (Array.isArray(ids) && ids.length > 0 && !where.id_in) {\n where.id_in = ids;\n }\n\n const sort =\n Array.isArray(initialSort) && initialSort.length > 0 ? initialSort : [\"id_DESC\"];\n try {\n return await storageOperations.files.list({\n where,\n after,\n limit,\n sort\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list files by given parameters.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n where,\n after,\n limit,\n sort\n }\n );\n }\n },\n async listTags({ where: initialWhere, after, limit }) {\n await checkBasePermissions(getPermission);\n\n const where: FileManagerFilesStorageOperationsTagsParamsWhere = {\n ...initialWhere,\n tenant: getTenantId(),\n locale: getLocaleCode()\n };\n\n const params = {\n where,\n limit: limit || 1000000,\n after\n };\n\n try {\n return await storageOperations.files.tags(params);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not search for tags.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n params\n }\n );\n }\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_handlerGraphql","require","_pubsub","_error","_interopRequireDefault","_contants","createFilesCrud","config","storageOperations","filesPermissions","getLocaleCode","getTenantId","getIdentity","WEBINY_VERSION","onFileBeforeCreate","createTopic","onFileAfterCreate","onFileBeforeBatchCreate","onFileAfterBatchCreate","onFileBeforeUpdate","onFileAfterUpdate","onFileBeforeDelete","onFileAfterDelete","getFile","id","ensure","rwd","file","files","get","where","tenant","locale","NotFoundError","owns","createdBy","createFile","input","meta","_input$location","identity","key","split","_objectSpread2","default","tags","Array","isArray","aliases","location","folderId","ROOT_FOLDER","private","createdOn","Date","toISOString","savedOn","displayName","type","webinyVersion","publish","result","create","ex","WebinyError","message","code","data","updateFile","original","update","deleteFile","delete","createFilesInBatch","inputs","map","_input$location2","results","createBatch","listFiles","params","limit","after","initialWhere","sort","initialSort","search","private_not","canAccessOnlyOwnRecords","length","list","listTags","exports"],"sources":["files.crud.ts"],"sourcesContent":["import { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CreatedBy,\n File,\n FileManagerFilesStorageOperationsListParamsWhere,\n FileManagerFilesStorageOperationsTagsParamsWhere,\n FilesCRUD,\n FilesListOpts\n} from \"~/types\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\nimport { ROOT_FOLDER } from \"~/contants\";\n\nexport const createFilesCrud = (config: FileManagerConfig): FilesCRUD => {\n const {\n storageOperations,\n filesPermissions,\n getLocaleCode,\n getTenantId,\n getIdentity,\n WEBINY_VERSION\n } = config;\n\n return {\n onFileBeforeCreate: createTopic(\"fileManager.onFileBeforeCreate\"),\n onFileAfterCreate: createTopic(\"fileManager.onFileAfterCreate\"),\n onFileBeforeBatchCreate: createTopic(\"fileManager.onFileBeforeBatchCreate\"),\n onFileAfterBatchCreate: createTopic(\"fileManager.onFileAfterBatchCreate\"),\n onFileBeforeUpdate: createTopic(\"fileManager.onFileBeforeUpdate\"),\n onFileAfterUpdate: createTopic(\"fileManager.onFileAfterUpdate\"),\n onFileBeforeDelete: createTopic(\"fileManager.onFileBeforeDelete\"),\n onFileAfterDelete: createTopic(\"fileManager.onFileAfterDelete\"),\n async getFile(id: string) {\n await filesPermissions.ensure({ rwd: \"r\" });\n\n const file = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n await filesPermissions.ensure({ owns: file.createdBy });\n\n return file;\n },\n async createFile(input, meta) {\n await filesPermissions.ensure({ rwd: \"w\" });\n\n const identity = getIdentity();\n\n // Extract ID from file key\n const [id] = input.key.split(\"/\");\n\n const file: File = {\n ...input,\n tags: Array.isArray(input.tags) ? input.tags : [],\n aliases: Array.isArray(input.aliases) ? input.aliases : [],\n id: input.id || id,\n location: {\n folderId: input.location?.folderId ?? ROOT_FOLDER\n },\n meta: {\n private: false,\n ...(input.meta || {})\n },\n tenant: getTenantId(),\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n locale: getLocaleCode(),\n webinyVersion: WEBINY_VERSION\n };\n\n try {\n await this.onFileBeforeCreate.publish({ file, meta });\n\n const result = await storageOperations.files.create({ file });\n\n await this.onFileAfterCreate.publish({ file, meta });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a file.\",\n ex.code || \"CREATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n file\n }\n );\n }\n },\n async updateFile(id, input) {\n await filesPermissions.ensure({ rwd: \"w\" });\n\n const original = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!original) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n await filesPermissions.ensure({ owns: original.createdBy });\n\n const file: File = {\n ...original,\n ...input,\n tags: Array.isArray(input.tags)\n ? input.tags\n : Array.isArray(original.tags)\n ? original.tags\n : [],\n aliases: Array.isArray(input.aliases)\n ? input.aliases\n : Array.isArray(original.aliases)\n ? original.aliases\n : [],\n id: original.id,\n webinyVersion: WEBINY_VERSION\n };\n\n try {\n await this.onFileBeforeUpdate.publish({\n original,\n file,\n input\n });\n\n const result = await storageOperations.files.update({\n original,\n file\n });\n\n await this.onFileAfterUpdate.publish({\n original,\n file,\n input\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update a file.\",\n ex.code || \"UPDATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n original,\n file\n }\n );\n }\n },\n async deleteFile(id) {\n await filesPermissions.ensure({ rwd: \"d\" });\n\n const file = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n await filesPermissions.ensure({ owns: file.createdBy });\n\n try {\n await this.onFileBeforeDelete.publish({ file });\n\n await storageOperations.files.delete({\n file\n });\n\n await this.onFileAfterDelete.publish({ file });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete a file.\",\n ex.code || \"DELETE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n id,\n file\n }\n );\n }\n\n return true;\n },\n async createFilesInBatch(inputs, meta) {\n await filesPermissions.ensure({ rwd: \"w\" });\n\n const identity = getIdentity();\n const tenant = getTenantId();\n const locale = getLocaleCode();\n\n const createdBy: CreatedBy = {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n\n const files: File[] = inputs.map(input => {\n return {\n ...input,\n tags: Array.isArray(input.tags) ? input.tags : [],\n aliases: Array.isArray(input.aliases) ? input.aliases : [],\n meta: {\n private: false,\n ...(input.meta || {})\n },\n location: {\n folderId: input.location?.folderId ?? ROOT_FOLDER\n },\n tenant,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy,\n locale,\n webinyVersion: WEBINY_VERSION\n };\n });\n\n try {\n await this.onFileBeforeBatchCreate.publish({ files, meta });\n const results = await storageOperations.files.createBatch({\n files\n });\n await this.onFileAfterBatchCreate.publish({ files, meta });\n return results;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a batch of files.\",\n ex.code || \"CREATE_FILES_ERROR\",\n {\n ...(ex.data || {}),\n files\n }\n );\n }\n },\n async listFiles(params: FilesListOpts = {}) {\n await filesPermissions.ensure({ rwd: \"r\" });\n\n const {\n limit = 40,\n after = null,\n where: initialWhere,\n sort: initialSort,\n search\n } = params;\n\n const where: FileManagerFilesStorageOperationsListParamsWhere = {\n ...{ meta: { private_not: true }, ...initialWhere },\n locale: getLocaleCode(),\n tenant: getTenantId()\n };\n\n /**\n * Always override the createdBy received from the user, if any.\n */\n if (await filesPermissions.canAccessOnlyOwnRecords()) {\n const identity = getIdentity();\n where.createdBy = identity.id;\n }\n\n const sort =\n Array.isArray(initialSort) && initialSort.length > 0 ? initialSort : [\"id_DESC\"];\n try {\n return await storageOperations.files.list({\n where,\n after,\n limit,\n sort,\n search\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list files by given parameters.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n where,\n after,\n limit,\n sort\n }\n );\n }\n },\n async listTags({ where: initialWhere, after, limit }) {\n await filesPermissions.ensure();\n\n const where: FileManagerFilesStorageOperationsTagsParamsWhere = {\n ...initialWhere,\n tenant: getTenantId(),\n locale: getLocaleCode()\n };\n\n const params = {\n where,\n limit: limit || 1000000,\n after\n };\n\n try {\n return await storageOperations.files.tags(params);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not search for tags.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n params\n }\n );\n }\n }\n };\n};\n"],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { FileManagerContextObject, FileManagerStorageOperations } from "../types";
2
- import { GetPermission, SecurityIdentity } from "@webiny/api-security/types";
2
+ import { GetPermissions, SecurityIdentity } from "@webiny/api-security/types";
3
3
  import { FileStorage } from "../storage/FileStorage";
4
+ import { FilesPermissions } from "./permissions/FilesPermissions";
4
5
  export interface FileManagerConfig {
5
6
  storageOperations: FileManagerStorageOperations;
7
+ filesPermissions: FilesPermissions;
6
8
  getTenantId: () => string;
7
9
  getLocaleCode: () => string;
8
10
  getIdentity: () => SecurityIdentity;
9
- getPermission: GetPermission;
11
+ getPermissions: GetPermissions;
10
12
  storage: FileStorage;
11
13
  WEBINY_VERSION: string;
12
14
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createFileManager","config","filesCrud","createFilesCrud","settingsCrud","createSettingsCrud","systemCrud","createSystemCrud","storage"],"sources":["index.ts"],"sourcesContent":["import { FileManagerContextObject, FileManagerStorageOperations } from \"~/types\";\nimport { GetPermission, SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createFilesCrud } from \"~/createFileManager/files.crud\";\nimport { FileStorage } from \"~/storage/FileStorage\";\nimport { createSettingsCrud } from \"~/createFileManager/settings.crud\";\nimport { createSystemCrud } from \"~/createFileManager/system.crud\";\n\nexport interface FileManagerConfig {\n storageOperations: FileManagerStorageOperations;\n getTenantId: () => string;\n getLocaleCode: () => string;\n getIdentity: () => SecurityIdentity;\n getPermission: GetPermission;\n storage: FileStorage;\n WEBINY_VERSION: string;\n}\n\nexport const createFileManager = (config: FileManagerConfig): FileManagerContextObject => {\n const filesCrud = createFilesCrud(config);\n const settingsCrud = createSettingsCrud(config);\n const systemCrud = createSystemCrud(config);\n\n return {\n ...filesCrud,\n ...settingsCrud,\n ...systemCrud,\n storage: config.storage\n };\n};\n"],"mappings":";;;;;;;;AAEA;AAEA;AACA;AAYO,MAAMA,iBAAiB,GAAIC,MAAyB,IAA+B;EACtF,MAAMC,SAAS,GAAG,IAAAC,sBAAe,EAACF,MAAM,CAAC;EACzC,MAAMG,YAAY,GAAG,IAAAC,4BAAkB,EAACJ,MAAM,CAAC;EAC/C,MAAMK,UAAU,GAAG,IAAAC,wBAAgB,EAACN,MAAM,CAAC;EAE3C,2HACOC,SAAS,GACTE,YAAY,GACZE,UAAU;IACbE,OAAO,EAAEP,MAAM,CAACO;EAAO;AAE/B,CAAC;AAAC"}
1
+ {"version":3,"names":["_files","require","_settings","_system","createFileManager","config","filesCrud","createFilesCrud","settingsCrud","createSettingsCrud","systemCrud","createSystemCrud","_objectSpread2","default","storage","exports"],"sources":["index.ts"],"sourcesContent":["import { FileManagerContextObject, FileManagerStorageOperations } from \"~/types\";\nimport { GetPermissions, SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createFilesCrud } from \"~/createFileManager/files.crud\";\nimport { FileStorage } from \"~/storage/FileStorage\";\nimport { createSettingsCrud } from \"~/createFileManager/settings.crud\";\nimport { createSystemCrud } from \"~/createFileManager/system.crud\";\nimport { FilesPermissions } from \"~/createFileManager/permissions/FilesPermissions\";\n\nexport interface FileManagerConfig {\n storageOperations: FileManagerStorageOperations;\n filesPermissions: FilesPermissions;\n getTenantId: () => string;\n getLocaleCode: () => string;\n getIdentity: () => SecurityIdentity;\n getPermissions: GetPermissions;\n storage: FileStorage;\n WEBINY_VERSION: string;\n}\n\nexport const createFileManager = (config: FileManagerConfig): FileManagerContextObject => {\n const filesCrud = createFilesCrud(config);\n const settingsCrud = createSettingsCrud(config);\n const systemCrud = createSystemCrud(config);\n\n return {\n ...filesCrud,\n ...settingsCrud,\n ...systemCrud,\n storage: config.storage\n };\n};\n"],"mappings":";;;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAcO,MAAMG,iBAAiB,GAAIC,MAAyB,IAA+B;EACtF,MAAMC,SAAS,GAAG,IAAAC,sBAAe,EAACF,MAAM,CAAC;EACzC,MAAMG,YAAY,GAAG,IAAAC,4BAAkB,EAACJ,MAAM,CAAC;EAC/C,MAAMK,UAAU,GAAG,IAAAC,wBAAgB,EAACN,MAAM,CAAC;EAE3C,WAAAO,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOP,SAAS,GACTE,YAAY,GACZE,UAAU;IACbI,OAAO,EAAET,MAAM,CAACS;EAAO;AAE/B,CAAC;AAACC,OAAA,CAAAX,iBAAA,GAAAA,iBAAA"}
@@ -0,0 +1,4 @@
1
+ import { AppPermissions } from "@webiny/api-security/utils/AppPermissions";
2
+ import { FilePermission } from "../../types";
3
+ export declare class FilesPermissions extends AppPermissions<FilePermission> {
4
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FilesPermissions = void 0;
7
+ var _AppPermissions = require("@webiny/api-security/utils/AppPermissions");
8
+ class FilesPermissions extends _AppPermissions.AppPermissions {}
9
+ exports.FilesPermissions = FilesPermissions;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_AppPermissions","require","FilesPermissions","AppPermissions","exports"],"sources":["FilesPermissions.ts"],"sourcesContent":["import { AppPermissions } from \"@webiny/api-security/utils/AppPermissions\";\nimport { FilePermission } from \"~/types\";\n\nexport class FilesPermissions extends AppPermissions<FilePermission> {}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAGO,MAAMC,gBAAgB,SAASC,8BAAc,CAAiB;AAAEC,OAAA,CAAAF,gBAAA,GAAAA,gBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["CreateDataModel","withFields","uploadMinFileSize","number","value","validation","create","uploadMaxFileSize","srcPrefix","onSet","endsWith","string","UpdateDataModel","createSettingsCrud","storageOperations","getTenantId","getSettings","settings","get","tenant","createSettings","data","populate","validate","settingsData","toJSON","updateSettings","updatedValue","existingSettings","updatedSettings","onlyDirty","update","original","deleteSettings","delete"],"sources":["settings.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string, number, onSet } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport { FileManagerSettings, SettingsCRUD } from \"~/types\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\n\nconst CreateDataModel = withFields({\n uploadMinFileSize: number({ value: 0, validation: validation.create(\"gte:0\") }),\n uploadMaxFileSize: number({ value: 10737418240 }),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string({ value: \"/files/\" }))\n})();\n\nconst UpdateDataModel = withFields({\n uploadMinFileSize: number({\n validation: validation.create(\"gte:0\")\n }),\n uploadMaxFileSize: number(),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string())\n})();\n\nexport const createSettingsCrud = ({\n storageOperations,\n getTenantId\n}: FileManagerConfig): SettingsCRUD => {\n return {\n async getSettings() {\n return storageOperations.settings.get({ tenant: getTenantId() });\n },\n async createSettings(data) {\n const settings = new CreateDataModel().populate(data);\n await settings.validate();\n\n const settingsData: FileManagerSettings = await settings.toJSON();\n\n return storageOperations.settings.create({\n data: { ...settingsData, tenant: getTenantId() }\n });\n },\n async updateSettings(data) {\n const updatedValue = new UpdateDataModel().populate(data);\n await updatedValue.validate();\n\n const existingSettings = (await storageOperations.settings.get({\n tenant: getTenantId()\n })) as FileManagerSettings;\n\n const updatedSettings: Partial<FileManagerSettings> = await updatedValue.toJSON({\n onlyDirty: true\n });\n\n return storageOperations.settings.update({\n original: existingSettings,\n data: {\n ...existingSettings,\n ...updatedSettings,\n tenant: getTenantId()\n }\n });\n },\n async deleteSettings() {\n await storageOperations.settings.delete({ tenant: getTenantId() });\n\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_fields","require","_validation","CreateDataModel","withFields","uploadMinFileSize","number","value","validation","create","uploadMaxFileSize","srcPrefix","onSet","endsWith","string","UpdateDataModel","createSettingsCrud","storageOperations","getTenantId","getSettings","settings","get","tenant","createSettings","data","populate","validate","settingsData","toJSON","_objectSpread2","default","updateSettings","updatedValue","existingSettings","updatedSettings","onlyDirty","update","original","deleteSettings","delete","exports"],"sources":["settings.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string, number, onSet } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport { FileManagerSettings, SettingsCRUD } from \"~/types\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\n\nconst CreateDataModel = withFields({\n uploadMinFileSize: number({ value: 0, validation: validation.create(\"gte:0\") }),\n uploadMaxFileSize: number({ value: 10737418240 }),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string({ value: \"/files/\" }))\n})();\n\nconst UpdateDataModel = withFields({\n uploadMinFileSize: number({\n validation: validation.create(\"gte:0\")\n }),\n uploadMaxFileSize: number(),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string())\n})();\n\nexport const createSettingsCrud = ({\n storageOperations,\n getTenantId\n}: FileManagerConfig): SettingsCRUD => {\n return {\n async getSettings() {\n return storageOperations.settings.get({ tenant: getTenantId() });\n },\n async createSettings(data) {\n const settings = new CreateDataModel().populate(data);\n await settings.validate();\n\n const settingsData: FileManagerSettings = await settings.toJSON();\n\n return storageOperations.settings.create({\n data: { ...settingsData, tenant: getTenantId() }\n });\n },\n async updateSettings(data) {\n const updatedValue = new UpdateDataModel().populate(data);\n await updatedValue.validate();\n\n const existingSettings = (await storageOperations.settings.get({\n tenant: getTenantId()\n })) as FileManagerSettings;\n\n const updatedSettings: Partial<FileManagerSettings> = await updatedValue.toJSON({\n onlyDirty: true\n });\n\n return storageOperations.settings.update({\n original: existingSettings,\n data: {\n ...existingSettings,\n ...updatedSettings,\n tenant: getTenantId()\n }\n });\n },\n async deleteSettings() {\n await storageOperations.settings.delete({ tenant: getTenantId() });\n\n return true;\n }\n };\n};\n"],"mappings":"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"}