@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.615a930a68

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 (140) hide show
  1. package/context.js +3 -7
  2. package/context.js.map +1 -1
  3. package/crud/contentEntry/afterDelete.d.ts +2 -2
  4. package/crud/contentEntry/afterDelete.js +2 -2
  5. package/crud/contentEntry/afterDelete.js.map +1 -1
  6. package/crud/contentEntry/beforeCreate.d.ts +2 -2
  7. package/crud/contentEntry/beforeCreate.js +2 -2
  8. package/crud/contentEntry/beforeCreate.js.map +1 -1
  9. package/crud/contentEntry/beforeUpdate.d.ts +2 -2
  10. package/crud/contentEntry/beforeUpdate.js +2 -2
  11. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  12. package/crud/contentEntry/entryDataValidation.js +3 -7
  13. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  14. package/crud/contentEntry/markLockedFields.js +6 -10
  15. package/crud/contentEntry/markLockedFields.js.map +1 -1
  16. package/crud/contentEntry/referenceFieldsMapping.js +3 -9
  17. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  18. package/crud/contentEntry/searchableFields.d.ts +9 -0
  19. package/crud/contentEntry/searchableFields.js +83 -0
  20. package/crud/contentEntry/searchableFields.js.map +1 -0
  21. package/crud/contentEntry.crud.d.ts +0 -2
  22. package/crud/contentEntry.crud.js +200 -269
  23. package/crud/contentEntry.crud.js.map +1 -1
  24. package/crud/contentModel/afterCreate.d.ts +3 -3
  25. package/crud/contentModel/afterCreate.js +5 -5
  26. package/crud/contentModel/afterCreate.js.map +1 -1
  27. package/crud/contentModel/afterCreateFrom.d.ts +3 -3
  28. package/crud/contentModel/afterCreateFrom.js +5 -5
  29. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  30. package/crud/contentModel/afterDelete.d.ts +3 -3
  31. package/crud/contentModel/afterDelete.js +5 -5
  32. package/crud/contentModel/afterDelete.js.map +1 -1
  33. package/crud/contentModel/afterUpdate.d.ts +3 -3
  34. package/crud/contentModel/afterUpdate.js +5 -5
  35. package/crud/contentModel/afterUpdate.js.map +1 -1
  36. package/crud/contentModel/beforeCreate.d.ts +4 -4
  37. package/crud/contentModel/beforeCreate.js +10 -10
  38. package/crud/contentModel/beforeCreate.js.map +1 -1
  39. package/crud/contentModel/beforeDelete.d.ts +3 -3
  40. package/crud/contentModel/beforeDelete.js +6 -6
  41. package/crud/contentModel/beforeDelete.js.map +1 -1
  42. package/crud/contentModel/beforeUpdate.d.ts +3 -3
  43. package/crud/contentModel/beforeUpdate.js +5 -5
  44. package/crud/contentModel/beforeUpdate.js.map +1 -1
  45. package/crud/contentModel/validateModel.js +1 -1
  46. package/crud/contentModel/validateModelFields.js +3 -7
  47. package/crud/contentModel/validateModelFields.js.map +1 -1
  48. package/crud/contentModel.crud.js +84 -60
  49. package/crud/contentModel.crud.js.map +1 -1
  50. package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
  51. package/crud/contentModelGroup/beforeCreate.js +3 -3
  52. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  53. package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
  54. package/crud/contentModelGroup/beforeDelete.js +3 -3
  55. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  56. package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
  57. package/crud/contentModelGroup/beforeUpdate.js +2 -2
  58. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  59. package/crud/contentModelGroup.crud.js +58 -38
  60. package/crud/contentModelGroup.crud.js.map +1 -1
  61. package/crud/index.js +3 -7
  62. package/crud/index.js.map +1 -1
  63. package/crud/settings.crud.js +3 -8
  64. package/crud/settings.crud.js.map +1 -1
  65. package/crud/system.crud.js +63 -51
  66. package/crud/system.crud.js.map +1 -1
  67. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -1
  68. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +17 -19
  69. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  70. package/graphql/graphQLHandlerFactory.js +1 -1
  71. package/graphql/schema/baseContentSchema.js +5 -9
  72. package/graphql/schema/baseContentSchema.js.map +1 -1
  73. package/graphql/schema/contentEntries.js +1 -1
  74. package/graphql/schema/contentModels.js +19 -0
  75. package/graphql/schema/contentModels.js.map +1 -1
  76. package/graphql/schema/createFieldResolvers.js +4 -10
  77. package/graphql/schema/createFieldResolvers.js.map +1 -1
  78. package/graphql/schema/createManageResolvers.js +4 -18
  79. package/graphql/schema/createManageResolvers.js.map +1 -1
  80. package/graphql/schema/createManageSDL.js +6 -8
  81. package/graphql/schema/createManageSDL.js.map +1 -1
  82. package/graphql/schema/createPreviewResolvers.js +3 -7
  83. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  84. package/graphql/schema/createReadResolvers.js +3 -7
  85. package/graphql/schema/createReadResolvers.js.map +1 -1
  86. package/graphql/schema/createReadSDL.js +3 -1
  87. package/graphql/schema/createReadSDL.js.map +1 -1
  88. package/graphql/schema/resolvers/manage/resolveGet.js +5 -9
  89. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  90. package/graphql/schema/resolvers/preview/resolveGet.js +3 -7
  91. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  92. package/graphql/schema/resolvers/read/resolveGet.js +3 -7
  93. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  94. package/graphqlFields/number.js +4 -0
  95. package/graphqlFields/number.js.map +1 -1
  96. package/graphqlFields/object.js +102 -16
  97. package/graphqlFields/object.js.map +1 -1
  98. package/graphqlFields/ref.js +4 -8
  99. package/graphqlFields/ref.js.map +1 -1
  100. package/modelManager/DefaultCmsModelManager.d.ts +7 -7
  101. package/modelManager/DefaultCmsModelManager.js +1 -1
  102. package/package.json +27 -28
  103. package/parameters/header.js +1 -1
  104. package/parameters/manual.js +7 -8
  105. package/parameters/manual.js.map +1 -1
  106. package/parameters/path.js +1 -1
  107. package/plugins/CmsGroupPlugin.js +1 -1
  108. package/plugins/CmsModelFieldConverterPlugin.js +1 -1
  109. package/plugins/CmsModelPlugin.d.ts +6 -2
  110. package/plugins/CmsModelPlugin.js +18 -13
  111. package/plugins/CmsModelPlugin.js.map +1 -1
  112. package/plugins/CmsParametersPlugin.js +1 -1
  113. package/plugins/StorageTransformPlugin.d.ts +1 -1
  114. package/plugins/StorageTransformPlugin.js +1 -1
  115. package/plugins/StorageTransformPlugin.js.map +1 -1
  116. package/storage/object.js +3 -7
  117. package/storage/object.js.map +1 -1
  118. package/types.d.ts +276 -127
  119. package/types.js +0 -2
  120. package/types.js.map +1 -1
  121. package/upgrades/5.33.0/index.js +5 -9
  122. package/upgrades/5.33.0/index.js.map +1 -1
  123. package/utils/converters/Converter.js +1 -1
  124. package/utils/converters/ConverterCollection.d.ts +7 -0
  125. package/utils/converters/ConverterCollection.js +31 -7
  126. package/utils/converters/ConverterCollection.js.map +1 -1
  127. package/utils/converters/valueKeyStorageConverter.js +3 -7
  128. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  129. package/utils/createTypeName.js +1 -1
  130. package/utils/entryStorage.js +3 -7
  131. package/utils/entryStorage.js.map +1 -1
  132. package/utils/filterModelFields.js +5 -9
  133. package/utils/filterModelFields.js.map +1 -1
  134. package/utils/permissions.js +1 -5
  135. package/utils/permissions.js.map +1 -1
  136. package/utils/pluralizedTypeName.js +1 -1
  137. package/utils/renderListFilterFields.js +9 -1
  138. package/utils/renderListFilterFields.js.map +1 -1
  139. package/utils/toSlug.js +1 -1
  140. package/validators/unique.js +1 -1
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.createModelGroupsCrud = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _fields = require("@commodo/fields");
13
13
 
@@ -39,10 +39,15 @@ var _access = require("../utils/access");
39
39
 
40
40
  var _toSlug = require("../utils/toSlug");
41
41
 
42
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
43
-
44
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
42
+ /**
43
+ * Package @commodo/fields does not have types.
44
+ */
45
+ // @ts-ignore
45
46
 
47
+ /**
48
+ * Package mdbid does not have types.
49
+ */
50
+ // @ts-ignore
46
51
  const CreateContentModelGroupModel = (0, _fields.withFields)({
47
52
  name: (0, _fields.string)({
48
53
  validation: _validation.validation.create("required,maxLength:100")
@@ -82,7 +87,7 @@ const createModelGroupsCrud = params => {
82
87
  const tenant = getTenant().id;
83
88
  const locale = getLocale().code;
84
89
  const pluginsGroups = getGroupsAsPlugins().map(group => {
85
- return _objectSpread(_objectSpread({}, group), {}, {
90
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, group), {}, {
86
91
  tenant: group.tenant || tenant,
87
92
  locale: group.locale || locale
88
93
  });
@@ -125,7 +130,7 @@ const createModelGroupsCrud = params => {
125
130
 
126
131
  return true;
127
132
  }).map(plugin => {
128
- return _objectSpread(_objectSpread({}, plugin.contentModelGroup), {}, {
133
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModelGroup), {}, {
129
134
  tenant,
130
135
  locale,
131
136
  webinyVersion: context.WEBINY_VERSION
@@ -158,43 +163,59 @@ const createModelGroupsCrud = params => {
158
163
  try {
159
164
  return await dataLoaders.listGroups.load("listGroups");
160
165
  } catch (ex) {
161
- throw new _error.default(ex.message, ex.code || "LIST_ERROR", _objectSpread(_objectSpread({}, ex.data || {}), {}, {
166
+ throw new _error.default(ex.message, ex.code || "LIST_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
162
167
  where
163
168
  }));
164
169
  }
165
- };
170
+ }; // create
171
+
166
172
 
167
- const onBeforeCreate = (0, _pubsub.createTopic)();
168
- const onAfterCreate = (0, _pubsub.createTopic)();
169
- const onBeforeUpdate = (0, _pubsub.createTopic)();
170
- const onAfterUpdate = (0, _pubsub.createTopic)();
171
- const onBeforeDelete = (0, _pubsub.createTopic)();
172
- const onAfterDelete = (0, _pubsub.createTopic)();
173
+ const onGroupBeforeCreate = (0, _pubsub.createTopic)("cms.onGroupBeforeCreate");
174
+ const onGroupAfterCreate = (0, _pubsub.createTopic)("cms.onGroupAfterCreate"); // update
175
+
176
+ const onGroupBeforeUpdate = (0, _pubsub.createTopic)("cms.onGroupBeforeUpdate");
177
+ const onGroupAfterUpdate = (0, _pubsub.createTopic)("cms.onGroupAfterUpdate"); // delete
178
+
179
+ const onGroupBeforeDelete = (0, _pubsub.createTopic)("cms.onGroupBeforeDelete");
180
+ const onGroupAfterDelete = (0, _pubsub.createTopic)("cms.onGroupAfterDelete");
173
181
  /**
174
182
  * We need to assign some default behaviors.
175
183
  */
176
184
 
177
185
  (0, _beforeCreate.assignBeforeGroupCreate)({
178
- onBeforeCreate,
186
+ onGroupBeforeCreate,
179
187
  plugins: context.plugins,
180
188
  storageOperations
181
189
  });
182
190
  (0, _beforeUpdate.assignBeforeGroupUpdate)({
183
- onBeforeUpdate,
191
+ onGroupBeforeUpdate,
184
192
  plugins: context.plugins
185
193
  });
186
194
  (0, _beforeDelete.assignBeforeGroupDelete)({
187
- onBeforeDelete,
195
+ onGroupBeforeDelete,
188
196
  plugins: context.plugins,
189
197
  storageOperations
190
198
  });
191
199
  return {
192
- onBeforeGroupCreate: onBeforeCreate,
193
- onAfterGroupCreate: onAfterCreate,
194
- onBeforeGroupUpdate: onBeforeUpdate,
195
- onAfterGroupUpdate: onAfterUpdate,
196
- onBeforeGroupDelete: onBeforeDelete,
197
- onAfterGroupDelete: onAfterDelete,
200
+ /**
201
+ * Deprecated - will be removed in 5.36.0
202
+ */
203
+ onBeforeGroupCreate: onGroupBeforeCreate,
204
+ onAfterGroupCreate: onGroupAfterCreate,
205
+ onBeforeGroupUpdate: onGroupBeforeUpdate,
206
+ onAfterGroupUpdate: onGroupAfterUpdate,
207
+ onBeforeGroupDelete: onGroupBeforeDelete,
208
+ onAfterGroupDelete: onGroupAfterDelete,
209
+
210
+ /**
211
+ * Released in 5.34.0
212
+ */
213
+ onGroupBeforeCreate,
214
+ onGroupAfterCreate,
215
+ onGroupBeforeUpdate,
216
+ onGroupAfterUpdate,
217
+ onGroupBeforeDelete,
218
+ onGroupAfterDelete,
198
219
  clearGroupsCache,
199
220
  getGroup: async id => {
200
221
  const permission = await checkPermissions("r");
@@ -212,8 +233,8 @@ const createModelGroupsCrud = params => {
212
233
  locale
213
234
  } = where || {};
214
235
  const permission = await checkPermissions("r");
215
- const response = await groupsList(_objectSpread(_objectSpread({}, params || {}), {}, {
216
- where: _objectSpread(_objectSpread({}, where || {}), {}, {
236
+ const response = await groupsList((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params || {}), {}, {
237
+ where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where || {}), {}, {
217
238
  tenant: tenant || getTenant().id,
218
239
  locale: locale || getLocale().code
219
240
  })
@@ -228,7 +249,7 @@ const createModelGroupsCrud = params => {
228
249
  },
229
250
  createGroup: async inputData => {
230
251
  await checkPermissions("w");
231
- const createdData = new CreateContentModelGroupModel().populate(_objectSpread(_objectSpread({}, inputData), {}, {
252
+ const createdData = new CreateContentModelGroupModel().populate((0, _objectSpread2.default)((0, _objectSpread2.default)({}, inputData), {}, {
232
253
  slug: inputData.slug ? (0, _toSlug.toSlug)(inputData.slug) : "",
233
254
  description: inputData.description || ""
234
255
  }));
@@ -236,8 +257,7 @@ const createModelGroupsCrud = params => {
236
257
  const input = await createdData.toJSON();
237
258
  const identity = getIdentity();
238
259
  const id = (0, _mdbid.default)();
239
-
240
- const group = _objectSpread(_objectSpread({}, input), {}, {
260
+ const group = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
241
261
  id,
242
262
  tenant: getTenant().id,
243
263
  locale: getLocale().code,
@@ -252,19 +272,19 @@ const createModelGroupsCrud = params => {
252
272
  });
253
273
 
254
274
  try {
255
- await onBeforeCreate.publish({
275
+ await onGroupBeforeCreate.publish({
256
276
  group
257
277
  });
258
278
  const result = await storageOperations.groups.create({
259
279
  group
260
280
  });
261
281
  clearGroupsCache();
262
- await onAfterCreate.publish({
282
+ await onGroupAfterCreate.publish({
263
283
  group: result
264
284
  });
265
285
  return group;
266
286
  } catch (ex) {
267
- throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE", _objectSpread(_objectSpread({}, ex.data || {}), {}, {
287
+ throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
268
288
  group,
269
289
  input
270
290
  }));
@@ -287,14 +307,14 @@ const createModelGroupsCrud = params => {
287
307
  return original;
288
308
  }
289
309
 
290
- const group = _objectSpread(_objectSpread(_objectSpread({}, original), updatedDataJson), {}, {
310
+ const group = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), updatedDataJson), {}, {
291
311
  locale: getLocale().code,
292
312
  tenant: getTenant().id,
293
313
  savedOn: new Date().toISOString()
294
314
  });
295
315
 
296
316
  try {
297
- await onBeforeUpdate.publish({
317
+ await onGroupBeforeUpdate.publish({
298
318
  original,
299
319
  group
300
320
  });
@@ -302,7 +322,7 @@ const createModelGroupsCrud = params => {
302
322
  group
303
323
  });
304
324
  clearGroupsCache();
305
- await onAfterUpdate.publish({
325
+ await onGroupAfterUpdate.publish({
306
326
  original,
307
327
  group: updatedGroup
308
328
  });
@@ -322,18 +342,18 @@ const createModelGroupsCrud = params => {
322
342
  (0, _ownership.checkOwnership)(context, permission, group);
323
343
 
324
344
  try {
325
- await onBeforeDelete.publish({
345
+ await onGroupBeforeDelete.publish({
326
346
  group
327
347
  });
328
348
  await storageOperations.groups.delete({
329
349
  group
330
350
  });
331
351
  clearGroupsCache();
332
- await onAfterDelete.publish({
352
+ await onGroupAfterDelete.publish({
333
353
  group
334
354
  });
335
355
  } catch (ex) {
336
- throw new _error.default(ex.message, ex.code || "DELETE_ERROR", _objectSpread(_objectSpread({}, ex.data || {}), {}, {
356
+ throw new _error.default(ex.message, ex.code || "DELETE_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
337
357
  id
338
358
  }));
339
359
  }
@@ -1 +1 @@
1
- {"version":3,"names":["CreateContentModelGroupModel","withFields","name","string","validation","create","slug","description","icon","UpdateContentModelGroupModel","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","checkPermissions","check","baseCheckPermissions","rwd","groupsGet","load","find","g","NotFoundError","groupsList","ex","WebinyError","message","data","onBeforeCreate","createTopic","onAfterCreate","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","getGroup","permission","checkOwnership","validateGroupAccess","response","validateOwnership","createGroup","inputData","createdData","populate","toSlug","validate","input","toJSON","identity","mdbid","createdOn","Date","toISOString","savedOn","createdBy","displayName","publish","result","updateGroup","original","updatedDataJson","onlyDirty","keys","length","updatedGroup","update","error","deleteGroup","delete"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\n/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\nimport {\n CmsGroupContext,\n CmsGroupListParams,\n CmsGroupPermission,\n CmsGroup,\n CmsContext,\n HeadlessCmsStorageOperations,\n CmsGroupCreateInput,\n BeforeGroupCreateTopicParams,\n AfterGroupCreateTopicParams,\n BeforeGroupUpdateTopicParams,\n AfterGroupUpdateTopicParams,\n BeforeGroupDeleteTopicParams,\n AfterGroupDeleteTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeGroupUpdate } from \"./contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"./contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"./contentModelGroup/beforeDelete\";\nimport DataLoader from \"dataloader\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { validateGroupAccess } from \"~/utils/access\";\nimport { toSlug } from \"~/utils/toSlug\";\n\nconst CreateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"required,maxLength:100\") }),\n slug: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"required,maxLength:255\") })\n})();\n\nconst UpdateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"maxLength:255\") })\n})();\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const dataLoaders = {\n listGroups: new DataLoader(async () => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n const pluginsGroups = getGroupsAsPlugins().map(group => {\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n });\n\n const groups = await storageOperations.groups.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n\n return [groups.concat(pluginsGroups)];\n })\n };\n\n const clearGroupsCache = (): void => {\n for (const loader of Object.values(dataLoaders)) {\n loader.clearAll();\n }\n };\n\n const getGroupsAsPlugins = (): CmsGroup[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n /**\n * We need to filter out groups that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModelGroup;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModelGroup,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const checkPermissions = (check: string): Promise<CmsGroupPermission> => {\n return baseCheckPermissions(context, \"cms.contentModelGroup\", { rwd: check });\n };\n\n const groupsGet = async (id: string) => {\n const groups = await dataLoaders.listGroups.load(\"listGroups\");\n\n const group = groups.find(g => g.id === id);\n\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return group;\n };\n\n const groupsList = async (params: CmsGroupListParams) => {\n const { where } = params || {};\n\n try {\n return await dataLoaders.listGroups.load(\"listGroups\");\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"LIST_ERROR\", {\n ...(ex.data || {}),\n where\n });\n }\n };\n\n const onBeforeCreate = createTopic<BeforeGroupCreateTopicParams>();\n const onAfterCreate = createTopic<AfterGroupCreateTopicParams>();\n const onBeforeUpdate = createTopic<BeforeGroupUpdateTopicParams>();\n const onAfterUpdate = createTopic<AfterGroupUpdateTopicParams>();\n const onBeforeDelete = createTopic<BeforeGroupDeleteTopicParams>();\n const onAfterDelete = createTopic<AfterGroupDeleteTopicParams>();\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n return {\n onBeforeGroupCreate: onBeforeCreate,\n onAfterGroupCreate: onAfterCreate,\n onBeforeGroupUpdate: onBeforeUpdate,\n onAfterGroupUpdate: onAfterUpdate,\n onBeforeGroupDelete: onBeforeDelete,\n onAfterGroupDelete: onAfterDelete,\n clearGroupsCache,\n getGroup: async id => {\n const permission = await checkPermissions(\"r\");\n\n const group = await groupsGet(id);\n checkOwnership(context, permission, group);\n validateGroupAccess(context, permission, group);\n\n return group;\n },\n listGroups: async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n const permission = await checkPermissions(\"r\");\n\n const response = await groupsList({\n ...(params || {}),\n where: {\n ...(where || {}),\n tenant: tenant || getTenant().id,\n locale: locale || getLocale().code\n }\n });\n\n return response.filter(group => {\n if (!validateOwnership(context, permission, group)) {\n return false;\n }\n return validateGroupAccess(context, permission, group);\n });\n },\n createGroup: async inputData => {\n await checkPermissions(\"w\");\n\n const createdData = new CreateContentModelGroupModel().populate({\n ...inputData,\n slug: inputData.slug ? toSlug(inputData.slug) : \"\",\n description: inputData.description || \"\"\n });\n await createdData.validate();\n const input: CmsGroupCreateInput & { slug: string; description: string } =\n await createdData.toJSON();\n\n const identity = getIdentity();\n\n const id = mdbid();\n const group: CmsGroup = {\n ...input,\n id,\n tenant: getTenant().id,\n locale: getLocale().code,\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 webinyVersion: context.WEBINY_VERSION\n };\n try {\n await onBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not save data model group.\",\n ex.code || \"ERROR_ON_CREATE\",\n {\n ...(ex.data || {}),\n group,\n input\n }\n );\n }\n },\n updateGroup: async (id, inputData) => {\n const permission = await checkPermissions(\"w\");\n\n const original = await groupsGet(id);\n\n checkOwnership(context, permission, original);\n\n const input = new UpdateContentModelGroupModel().populate(inputData);\n await input.validate();\n\n const updatedDataJson: Partial<CmsGroup> = await input.toJSON({\n onlyDirty: true\n });\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(updatedDataJson).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...updatedDataJson,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n },\n deleteGroup: async id => {\n const permission = await checkPermissions(\"d\");\n\n const group = await groupsGet(id);\n\n checkOwnership(context, permission, group);\n\n try {\n await onBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onAfterDelete.publish({\n group\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["CreateContentModelGroupModel","withFields","name","string","validation","create","slug","description","icon","UpdateContentModelGroupModel","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","checkPermissions","check","baseCheckPermissions","rwd","groupsGet","load","find","g","NotFoundError","groupsList","ex","WebinyError","message","data","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupBeforeDelete","onGroupAfterDelete","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","getGroup","permission","checkOwnership","validateGroupAccess","response","validateOwnership","createGroup","inputData","createdData","populate","toSlug","validate","input","toJSON","identity","mdbid","createdOn","Date","toISOString","savedOn","createdBy","displayName","publish","result","updateGroup","original","updatedDataJson","onlyDirty","keys","length","updatedGroup","update","error","deleteGroup","delete"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\n/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\nimport {\n CmsGroupContext,\n CmsGroupListParams,\n CmsGroupPermission,\n CmsGroup,\n CmsContext,\n HeadlessCmsStorageOperations,\n CmsGroupCreateInput,\n OnGroupBeforeCreateTopicParams,\n OnGroupAfterCreateTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupAfterDeleteTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeGroupUpdate } from \"./contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"./contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"./contentModelGroup/beforeDelete\";\nimport DataLoader from \"dataloader\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { validateGroupAccess } from \"~/utils/access\";\nimport { toSlug } from \"~/utils/toSlug\";\n\nconst CreateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"required,maxLength:100\") }),\n slug: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"required,maxLength:255\") })\n})();\n\nconst UpdateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"maxLength:255\") })\n})();\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const dataLoaders = {\n listGroups: new DataLoader(async () => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n const pluginsGroups = getGroupsAsPlugins().map(group => {\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n });\n\n const groups = await storageOperations.groups.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n\n return [groups.concat(pluginsGroups)];\n })\n };\n\n const clearGroupsCache = (): void => {\n for (const loader of Object.values(dataLoaders)) {\n loader.clearAll();\n }\n };\n\n const getGroupsAsPlugins = (): CmsGroup[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n /**\n * We need to filter out groups that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModelGroup;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModelGroup,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const checkPermissions = (check: string): Promise<CmsGroupPermission> => {\n return baseCheckPermissions(context, \"cms.contentModelGroup\", { rwd: check });\n };\n\n const groupsGet = async (id: string) => {\n const groups = await dataLoaders.listGroups.load(\"listGroups\");\n\n const group = groups.find(g => g.id === id);\n\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return group;\n };\n\n const groupsList = async (params: CmsGroupListParams) => {\n const { where } = params || {};\n\n try {\n return await dataLoaders.listGroups.load(\"listGroups\");\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"LIST_ERROR\", {\n ...(ex.data || {}),\n where\n });\n }\n };\n\n // create\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n // update\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n // delete\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onGroupBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onGroupBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onGroupBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n return {\n /**\n * Deprecated - will be removed in 5.36.0\n */\n onBeforeGroupCreate: onGroupBeforeCreate,\n onAfterGroupCreate: onGroupAfterCreate,\n onBeforeGroupUpdate: onGroupBeforeUpdate,\n onAfterGroupUpdate: onGroupAfterUpdate,\n onBeforeGroupDelete: onGroupBeforeDelete,\n onAfterGroupDelete: onGroupAfterDelete,\n /**\n * Released in 5.34.0\n */\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n clearGroupsCache,\n getGroup: async id => {\n const permission = await checkPermissions(\"r\");\n\n const group = await groupsGet(id);\n checkOwnership(context, permission, group);\n validateGroupAccess(context, permission, group);\n\n return group;\n },\n listGroups: async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n const permission = await checkPermissions(\"r\");\n\n const response = await groupsList({\n ...(params || {}),\n where: {\n ...(where || {}),\n tenant: tenant || getTenant().id,\n locale: locale || getLocale().code\n }\n });\n\n return response.filter(group => {\n if (!validateOwnership(context, permission, group)) {\n return false;\n }\n return validateGroupAccess(context, permission, group);\n });\n },\n createGroup: async inputData => {\n await checkPermissions(\"w\");\n\n const createdData = new CreateContentModelGroupModel().populate({\n ...inputData,\n slug: inputData.slug ? toSlug(inputData.slug) : \"\",\n description: inputData.description || \"\"\n });\n await createdData.validate();\n const input: CmsGroupCreateInput & { slug: string; description: string } =\n await createdData.toJSON();\n\n const identity = getIdentity();\n\n const id = mdbid();\n const group: CmsGroup = {\n ...input,\n id,\n tenant: getTenant().id,\n locale: getLocale().code,\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 webinyVersion: context.WEBINY_VERSION\n };\n try {\n await onGroupBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onGroupAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not save data model group.\",\n ex.code || \"ERROR_ON_CREATE\",\n {\n ...(ex.data || {}),\n group,\n input\n }\n );\n }\n },\n updateGroup: async (id, inputData) => {\n const permission = await checkPermissions(\"w\");\n\n const original = await groupsGet(id);\n\n checkOwnership(context, permission, original);\n\n const input = new UpdateContentModelGroupModel().populate(inputData);\n await input.validate();\n\n const updatedDataJson: Partial<CmsGroup> = await input.toJSON({\n onlyDirty: true\n });\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(updatedDataJson).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...updatedDataJson,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onGroupBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onGroupAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n },\n deleteGroup: async id => {\n const permission = await checkPermissions(\"d\");\n\n const group = await groupsGet(id);\n\n checkOwnership(context, permission, group);\n\n try {\n await onGroupBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onGroupAfterDelete.publish({\n group\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n }\n };\n};\n"],"mappings":"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"}
package/crud/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.createCrud = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _api = require("@webiny/api");
13
13
 
@@ -21,10 +21,6 @@ var _system = require("./system.crud");
21
21
 
22
22
  var _settings = require("./settings.crud");
23
23
 
24
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
-
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
27
-
28
24
  const createCrud = params => {
29
25
  const {
30
26
  storageOperations
@@ -46,7 +42,7 @@ const createCrud = params => {
46
42
  await storageOperations.beforeInit(context);
47
43
  }
48
44
 
49
- context.cms = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, context.cms), {}, {
45
+ context.cms = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, context.cms), {}, {
50
46
  storageOperations
51
47
  }, (0, _system.createSystemCrud)({
52
48
  context,
package/crud/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["createCrud","params","storageOperations","ContextPlugin","context","getLocale","cms","getIdentity","security","getTenant","tenancy","getCurrentTenant","beforeInit","createSystemCrud","createSettingsCrud","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","init"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport { createModelGroupsCrud } from \"./contentModelGroup.crud\";\nimport { createModelsCrud } from \"./contentModel.crud\";\nimport { createContentEntryCrud } from \"./contentEntry.crud\";\nimport { createSystemCrud } from \"./system.crud\";\nimport { createSettingsCrud } from \"./settings.crud\";\n\nexport interface CrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createCrud = (params: CrudParams) => {\n const { storageOperations } = params;\n return new ContextPlugin<CmsContext>(async context => {\n const getLocale = () => {\n return context.cms.getLocale();\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n if (storageOperations.beforeInit) {\n await storageOperations.beforeInit(context);\n }\n\n context.cms = {\n ...context.cms,\n storageOperations,\n ...createSystemCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createSettingsCrud({\n context,\n getTenant,\n getLocale,\n storageOperations\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n getTenant,\n storageOperations\n })\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;AAMO,MAAMA,UAAU,GAAIC,MAAD,IAAwB;EAC9C,MAAM;IAAEC;EAAF,IAAwBD,MAA9B;EACA,OAAO,IAAIE,kBAAJ,CAA8B,MAAMC,OAAN,IAAiB;IAClD,MAAMC,SAAS,GAAG,MAAM;MACpB,OAAOD,OAAO,CAACE,GAAR,CAAYD,SAAZ,EAAP;IACH,CAFD;;IAIA,MAAME,WAAW,GAAG,MAAM;MACtB,OAAOH,OAAO,CAACI,QAAR,CAAiBD,WAAjB,EAAP;IACH,CAFD;;IAIA,MAAME,SAAS,GAAG,MAAM;MACpB,OAAOL,OAAO,CAACM,OAAR,CAAgBC,gBAAhB,EAAP;IACH,CAFD;;IAIA,IAAIT,iBAAiB,CAACU,UAAtB,EAAkC;MAC9B,MAAMV,iBAAiB,CAACU,UAAlB,CAA6BR,OAA7B,CAAN;IACH;;IAEDA,OAAO,CAACE,GAAR,2FACOF,OAAO,CAACE,GADf;MAEIJ;IAFJ,GAGO,IAAAW,wBAAA,EAAiB;MAChBT,OADgB;MAEhBK,SAFgB;MAGhBJ,SAHgB;MAIhBE,WAJgB;MAKhBL;IALgB,CAAjB,CAHP,GAUO,IAAAY,4BAAA,EAAmB;MAClBV,OADkB;MAElBK,SAFkB;MAGlBJ,SAHkB;MAIlBH;IAJkB,CAAnB,CAVP,GAgBO,IAAAa,wCAAA,EAAsB;MACrBX,OADqB;MAErBK,SAFqB;MAGrBJ,SAHqB;MAIrBE,WAJqB;MAKrBL;IALqB,CAAtB,CAhBP,GAuBO,IAAAc,8BAAA,EAAiB;MAChBZ,OADgB;MAEhBC,SAFgB;MAGhBI,SAHgB;MAIhBF,WAJgB;MAKhBL;IALgB,CAAjB,CAvBP,GA8BO,IAAAe,oCAAA,EAAuB;MACtBb,OADsB;MAEtBG,WAFsB;MAGtBE,SAHsB;MAItBP;IAJsB,CAAvB,CA9BP;;IAsCA,IAAI,CAACA,iBAAiB,CAACgB,IAAvB,EAA6B;MACzB;IACH;;IACD,MAAMhB,iBAAiB,CAACgB,IAAlB,CAAuBd,OAAvB,CAAN;EACH,CA3DM,CAAP;AA4DH,CA9DM"}
1
+ {"version":3,"names":["createCrud","params","storageOperations","ContextPlugin","context","getLocale","cms","getIdentity","security","getTenant","tenancy","getCurrentTenant","beforeInit","createSystemCrud","createSettingsCrud","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","init"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport { createModelGroupsCrud } from \"./contentModelGroup.crud\";\nimport { createModelsCrud } from \"./contentModel.crud\";\nimport { createContentEntryCrud } from \"./contentEntry.crud\";\nimport { createSystemCrud } from \"./system.crud\";\nimport { createSettingsCrud } from \"./settings.crud\";\n\nexport interface CrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createCrud = (params: CrudParams) => {\n const { storageOperations } = params;\n return new ContextPlugin<CmsContext>(async context => {\n const getLocale = () => {\n return context.cms.getLocale();\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n if (storageOperations.beforeInit) {\n await storageOperations.beforeInit(context);\n }\n\n context.cms = {\n ...context.cms,\n storageOperations,\n ...createSystemCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createSettingsCrud({\n context,\n getTenant,\n getLocale,\n storageOperations\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n getTenant,\n storageOperations\n })\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAMO,MAAMA,UAAU,GAAIC,MAAD,IAAwB;EAC9C,MAAM;IAAEC;EAAF,IAAwBD,MAA9B;EACA,OAAO,IAAIE,kBAAJ,CAA8B,MAAMC,OAAN,IAAiB;IAClD,MAAMC,SAAS,GAAG,MAAM;MACpB,OAAOD,OAAO,CAACE,GAAR,CAAYD,SAAZ,EAAP;IACH,CAFD;;IAIA,MAAME,WAAW,GAAG,MAAM;MACtB,OAAOH,OAAO,CAACI,QAAR,CAAiBD,WAAjB,EAAP;IACH,CAFD;;IAIA,MAAME,SAAS,GAAG,MAAM;MACpB,OAAOL,OAAO,CAACM,OAAR,CAAgBC,gBAAhB,EAAP;IACH,CAFD;;IAIA,IAAIT,iBAAiB,CAACU,UAAtB,EAAkC;MAC9B,MAAMV,iBAAiB,CAACU,UAAlB,CAA6BR,OAA7B,CAAN;IACH;;IAEDA,OAAO,CAACE,GAAR,+KACOF,OAAO,CAACE,GADf;MAEIJ;IAFJ,GAGO,IAAAW,wBAAA,EAAiB;MAChBT,OADgB;MAEhBK,SAFgB;MAGhBJ,SAHgB;MAIhBE,WAJgB;MAKhBL;IALgB,CAAjB,CAHP,GAUO,IAAAY,4BAAA,EAAmB;MAClBV,OADkB;MAElBK,SAFkB;MAGlBJ,SAHkB;MAIlBH;IAJkB,CAAnB,CAVP,GAgBO,IAAAa,wCAAA,EAAsB;MACrBX,OADqB;MAErBK,SAFqB;MAGrBJ,SAHqB;MAIrBE,WAJqB;MAKrBL;IALqB,CAAtB,CAhBP,GAuBO,IAAAc,8BAAA,EAAiB;MAChBZ,OADgB;MAEhBC,SAFgB;MAGhBI,SAHgB;MAIhBF,WAJgB;MAKhBL;IALgB,CAAjB,CAvBP,GA8BO,IAAAe,oCAAA,EAAuB;MACtBb,OADsB;MAEtBG,WAFsB;MAGtBE,SAHsB;MAItBP;IAJsB,CAAvB,CA9BP;;IAsCA,IAAI,CAACA,iBAAiB,CAACgB,IAAvB,EAA6B;MACzB;IACH;;IACD,MAAMhB,iBAAiB,CAACgB,IAAlB,CAAuBd,OAAvB,CAAN;EACH,CA3DM,CAAP;AA4DH,CA9DM"}
@@ -1,20 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.createSettingsCrud = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _permissions = require("../utils/permissions");
13
13
 
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
-
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
-
18
14
  const createSettingsCrud = params => {
19
15
  const {
20
16
  storageOperations,
@@ -40,8 +36,7 @@ const createSettingsCrud = params => {
40
36
  tenant: getTenant().id,
41
37
  locale: getLocale().code
42
38
  });
43
-
44
- const settings = _objectSpread(_objectSpread({}, original || {}), {}, {
39
+ const settings = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original || {}), {}, {
45
40
  contentModelLastChange: new Date(),
46
41
  tenant: getTenant().id,
47
42
  locale: getLocale().code
@@ -1 +1 @@
1
- {"version":3,"names":["createSettingsCrud","params","storageOperations","context","getTenant","getLocale","checkPermissions","baseCheckPermissions","getSettings","settings","get","tenant","id","locale","code","updateModelLastChange","original","contentModelLastChange","Date","create","update","getModelLastChange","ex","console","log","error","message","data"],"sources":["settings.crud.ts"],"sourcesContent":["import {\n CmsContext,\n CmsSettingsPermission,\n CmsSettings,\n HeadlessCmsStorageOperations,\n CmsSettingsContext\n} from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\n\nexport interface CreateSettingsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n}\nexport const createSettingsCrud = (params: CreateSettingsCrudParams): CmsSettingsContext => {\n const { storageOperations, context, getTenant, getLocale } = params;\n\n const checkPermissions = (): Promise<CmsSettingsPermission> => {\n return baseCheckPermissions(context, \"cms.settings\");\n };\n\n return {\n getSettings: async (): Promise<CmsSettings | null> => {\n await checkPermissions();\n return await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n },\n updateModelLastChange: async (): Promise<void> => {\n const original = await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n\n const settings: CmsSettings = {\n ...(original || {}),\n contentModelLastChange: new Date(),\n tenant: getTenant().id,\n locale: getLocale().code\n };\n\n if (!original) {\n await storageOperations.settings.create({ settings });\n return;\n }\n\n await storageOperations.settings.update({\n settings\n });\n },\n getModelLastChange: async (): Promise<Date> => {\n try {\n const settings = await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n if (!settings?.contentModelLastChange) {\n return new Date();\n }\n return settings.contentModelLastChange;\n } catch (ex) {\n console.log({\n error: {\n message: ex.message,\n code: ex.code || \"COULD_NOT_FETCH_CONTENT_MODEL_LAST_CHANGE\",\n data: ex\n }\n });\n }\n return new Date();\n }\n };\n};\n"],"mappings":";;;;;;;;;;;AASA;;;;;;AAQO,MAAMA,kBAAkB,GAAIC,MAAD,IAA0D;EACxF,MAAM;IAAEC,iBAAF;IAAqBC,OAArB;IAA8BC,SAA9B;IAAyCC;EAAzC,IAAuDJ,MAA7D;;EAEA,MAAMK,gBAAgB,GAAG,MAAsC;IAC3D,OAAO,IAAAC,6BAAA,EAAqBJ,OAArB,EAA8B,cAA9B,CAAP;EACH,CAFD;;EAIA,OAAO;IACHK,WAAW,EAAE,YAAyC;MAClD,MAAMF,gBAAgB,EAAtB;MACA,OAAO,MAAMJ,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;QACxCC,MAAM,EAAEP,SAAS,GAAGQ,EADoB;QAExCC,MAAM,EAAER,SAAS,GAAGS;MAFoB,CAA/B,CAAb;IAIH,CAPE;IAQHC,qBAAqB,EAAE,YAA2B;MAC9C,MAAMC,QAAQ,GAAG,MAAMd,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;QAClDC,MAAM,EAAEP,SAAS,GAAGQ,EAD8B;QAElDC,MAAM,EAAER,SAAS,GAAGS;MAF8B,CAA/B,CAAvB;;MAKA,MAAML,QAAqB,mCACnBO,QAAQ,IAAI,EADO;QAEvBC,sBAAsB,EAAE,IAAIC,IAAJ,EAFD;QAGvBP,MAAM,EAAEP,SAAS,GAAGQ,EAHG;QAIvBC,MAAM,EAAER,SAAS,GAAGS;MAJG,EAA3B;;MAOA,IAAI,CAACE,QAAL,EAAe;QACX,MAAMd,iBAAiB,CAACO,QAAlB,CAA2BU,MAA3B,CAAkC;UAAEV;QAAF,CAAlC,CAAN;QACA;MACH;;MAED,MAAMP,iBAAiB,CAACO,QAAlB,CAA2BW,MAA3B,CAAkC;QACpCX;MADoC,CAAlC,CAAN;IAGH,CA7BE;IA8BHY,kBAAkB,EAAE,YAA2B;MAC3C,IAAI;QACA,MAAMZ,QAAQ,GAAG,MAAMP,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;UAClDC,MAAM,EAAEP,SAAS,GAAGQ,EAD8B;UAElDC,MAAM,EAAER,SAAS,GAAGS;QAF8B,CAA/B,CAAvB;;QAIA,IAAI,EAACL,QAAD,aAACA,QAAD,eAACA,QAAQ,CAAEQ,sBAAX,CAAJ,EAAuC;UACnC,OAAO,IAAIC,IAAJ,EAAP;QACH;;QACD,OAAOT,QAAQ,CAACQ,sBAAhB;MACH,CATD,CASE,OAAOK,EAAP,EAAW;QACTC,OAAO,CAACC,GAAR,CAAY;UACRC,KAAK,EAAE;YACHC,OAAO,EAAEJ,EAAE,CAACI,OADT;YAEHZ,IAAI,EAAEQ,EAAE,CAACR,IAAH,IAAW,2CAFd;YAGHa,IAAI,EAAEL;UAHH;QADC,CAAZ;MAOH;;MACD,OAAO,IAAIJ,IAAJ,EAAP;IACH;EAlDE,CAAP;AAoDH,CA3DM"}
1
+ {"version":3,"names":["createSettingsCrud","params","storageOperations","context","getTenant","getLocale","checkPermissions","baseCheckPermissions","getSettings","settings","get","tenant","id","locale","code","updateModelLastChange","original","contentModelLastChange","Date","create","update","getModelLastChange","ex","console","log","error","message","data"],"sources":["settings.crud.ts"],"sourcesContent":["import {\n CmsContext,\n CmsSettingsPermission,\n CmsSettings,\n HeadlessCmsStorageOperations,\n CmsSettingsContext\n} from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\n\nexport interface CreateSettingsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n}\nexport const createSettingsCrud = (params: CreateSettingsCrudParams): CmsSettingsContext => {\n const { storageOperations, context, getTenant, getLocale } = params;\n\n const checkPermissions = (): Promise<CmsSettingsPermission> => {\n return baseCheckPermissions(context, \"cms.settings\");\n };\n\n return {\n getSettings: async (): Promise<CmsSettings | null> => {\n await checkPermissions();\n return await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n },\n updateModelLastChange: async (): Promise<void> => {\n const original = await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n\n const settings: CmsSettings = {\n ...(original || {}),\n contentModelLastChange: new Date(),\n tenant: getTenant().id,\n locale: getLocale().code\n };\n\n if (!original) {\n await storageOperations.settings.create({ settings });\n return;\n }\n\n await storageOperations.settings.update({\n settings\n });\n },\n getModelLastChange: async (): Promise<Date> => {\n try {\n const settings = await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n if (!settings?.contentModelLastChange) {\n return new Date();\n }\n return settings.contentModelLastChange;\n } catch (ex) {\n console.log({\n error: {\n message: ex.message,\n code: ex.code || \"COULD_NOT_FETCH_CONTENT_MODEL_LAST_CHANGE\",\n data: ex\n }\n });\n }\n return new Date();\n }\n };\n};\n"],"mappings":";;;;;;;;;;;AASA;;AAQO,MAAMA,kBAAkB,GAAIC,MAAD,IAA0D;EACxF,MAAM;IAAEC,iBAAF;IAAqBC,OAArB;IAA8BC,SAA9B;IAAyCC;EAAzC,IAAuDJ,MAA7D;;EAEA,MAAMK,gBAAgB,GAAG,MAAsC;IAC3D,OAAO,IAAAC,6BAAA,EAAqBJ,OAArB,EAA8B,cAA9B,CAAP;EACH,CAFD;;EAIA,OAAO;IACHK,WAAW,EAAE,YAAyC;MAClD,MAAMF,gBAAgB,EAAtB;MACA,OAAO,MAAMJ,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;QACxCC,MAAM,EAAEP,SAAS,GAAGQ,EADoB;QAExCC,MAAM,EAAER,SAAS,GAAGS;MAFoB,CAA/B,CAAb;IAIH,CAPE;IAQHC,qBAAqB,EAAE,YAA2B;MAC9C,MAAMC,QAAQ,GAAG,MAAMd,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;QAClDC,MAAM,EAAEP,SAAS,GAAGQ,EAD8B;QAElDC,MAAM,EAAER,SAAS,GAAGS;MAF8B,CAA/B,CAAvB;MAKA,MAAML,QAAqB,+DACnBO,QAAQ,IAAI,EADO;QAEvBC,sBAAsB,EAAE,IAAIC,IAAJ,EAFD;QAGvBP,MAAM,EAAEP,SAAS,GAAGQ,EAHG;QAIvBC,MAAM,EAAER,SAAS,GAAGS;MAJG,EAA3B;;MAOA,IAAI,CAACE,QAAL,EAAe;QACX,MAAMd,iBAAiB,CAACO,QAAlB,CAA2BU,MAA3B,CAAkC;UAAEV;QAAF,CAAlC,CAAN;QACA;MACH;;MAED,MAAMP,iBAAiB,CAACO,QAAlB,CAA2BW,MAA3B,CAAkC;QACpCX;MADoC,CAAlC,CAAN;IAGH,CA7BE;IA8BHY,kBAAkB,EAAE,YAA2B;MAC3C,IAAI;QACA,MAAMZ,QAAQ,GAAG,MAAMP,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;UAClDC,MAAM,EAAEP,SAAS,GAAGQ,EAD8B;UAElDC,MAAM,EAAER,SAAS,GAAGS;QAF8B,CAA/B,CAAvB;;QAIA,IAAI,EAACL,QAAD,aAACA,QAAD,eAACA,QAAQ,CAAEQ,sBAAX,CAAJ,EAAuC;UACnC,OAAO,IAAIC,IAAJ,EAAP;QACH;;QACD,OAAOT,QAAQ,CAACQ,sBAAhB;MACH,CATD,CASE,OAAOK,EAAP,EAAW;QACTC,OAAO,CAACC,GAAR,CAAY;UACRC,KAAK,EAAE;YACHC,OAAO,EAAEJ,EAAE,CAACI,OADT;YAEHZ,IAAI,EAAEQ,EAAE,CAACR,IAAH,IAAW,2CAFd;YAGHa,IAAI,EAAEL;UAHH;QADC,CAAZ;MAOH;;MACD,OAAO,IAAIJ,IAAJ,EAAP;IACH;EAlDE,CAAP;AAoDH,CA3DM"}
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.createSystemCrud = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _crypto = _interopRequireDefault(require("crypto"));
13
13
 
@@ -19,10 +19,6 @@ var _error = _interopRequireDefault(require("@webiny/error"));
19
19
 
20
20
  var _pubsub = require("@webiny/pubsub");
21
21
 
22
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
-
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
-
26
22
  const initialContentModelGroup = {
27
23
  name: "Ungrouped",
28
24
  slug: "ungrouped",
@@ -38,8 +34,9 @@ const createSystemCrud = params => {
38
34
  context,
39
35
  getIdentity
40
36
  } = params;
41
- const onBeforeInstall = (0, _pubsub.createTopic)();
42
- const onAfterInstall = (0, _pubsub.createTopic)();
37
+ const onSystemBeforeInstall = (0, _pubsub.createTopic)("cms.onSystemBeforeInstall");
38
+ const onSystemAfterInstall = (0, _pubsub.createTopic)("cms.onSystemAfterInstall");
39
+ const onSystemInstallError = (0, _pubsub.createTopic)("cms.onSystemInstallError");
43
40
 
44
41
  const createReadAPIKey = () => {
45
42
  return _crypto.default.randomBytes(Math.ceil(48 / 2)).toString("hex");
@@ -53,15 +50,14 @@ const createSystemCrud = params => {
53
50
  const system = await storageOperations.system.get({
54
51
  tenant: getTenant().id
55
52
  });
56
- return system ? system.version || null : null;
53
+ return (system === null || system === void 0 ? void 0 : system.version) || null;
57
54
  };
58
55
 
59
56
  const setVersion = async version => {
60
57
  const original = await storageOperations.system.get({
61
58
  tenant: getTenant().id
62
59
  });
63
-
64
- const system = _objectSpread(_objectSpread({}, original || {}), {}, {
60
+ const system = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original || {}), {}, {
65
61
  version,
66
62
  tenant: getTenant().id
67
63
  });
@@ -79,8 +75,18 @@ const createSystemCrud = params => {
79
75
  };
80
76
 
81
77
  return {
82
- onBeforeSystemInstall: onBeforeInstall,
83
- onAfterSystemInstall: onAfterInstall,
78
+ /**
79
+ * Deprecated - will be removed in 5.36.0
80
+ */
81
+ onBeforeSystemInstall: onSystemBeforeInstall,
82
+ onAfterSystemInstall: onSystemAfterInstall,
83
+
84
+ /**
85
+ * Released in 5.34.0
86
+ */
87
+ onSystemBeforeInstall,
88
+ onSystemAfterInstall,
89
+ onSystemInstallError,
84
90
  getSystemVersion: getVersion,
85
91
  setSystemVersion: setVersion,
86
92
  getReadAPIKey: async () => {
@@ -94,11 +100,9 @@ const createSystemCrud = params => {
94
100
 
95
101
  if (!original.readAPIKey) {
96
102
  const readAPIKey = createReadAPIKey();
97
-
98
- const system = _objectSpread(_objectSpread({}, original), {}, {
103
+ const system = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
99
104
  readAPIKey
100
105
  });
101
-
102
106
  await storageOperations.system.update({
103
107
  system
104
108
  });
@@ -119,47 +123,55 @@ const createSystemCrud = params => {
119
123
  if (version) {
120
124
  return;
121
125
  }
122
- /**
123
- * First trigger before install event.
124
- */
125
-
126
-
127
- await onBeforeInstall.publish({
128
- tenant: getTenant().id,
129
- locale: getLocale().code
130
- });
131
- /**
132
- * Add default content model group.
133
- */
134
126
 
135
127
  try {
136
- await context.cms.createGroup(initialContentModelGroup);
137
- } catch (ex) {
138
- throw new _error.default(ex.message, "CMS_INSTALLATION_CONTENT_MODEL_GROUP_ERROR", {
139
- group: initialContentModelGroup
128
+ /**
129
+ * First trigger before install event.
130
+ */
131
+ await onSystemBeforeInstall.publish({
132
+ tenant: getTenant().id,
133
+ locale: getLocale().code
140
134
  });
141
- }
135
+ /**
136
+ * Add default content model group.
137
+ */
142
138
 
143
- const system = {
144
- version: context.WEBINY_VERSION,
145
- readAPIKey: createReadAPIKey(),
146
- tenant: getTenant().id
147
- };
148
- /**
149
- * We need to create the system data.
150
- */
139
+ try {
140
+ await context.cms.createGroup(initialContentModelGroup);
141
+ } catch (ex) {
142
+ throw new _error.default(ex.message, "CMS_INSTALLATION_CONTENT_MODEL_GROUP_ERROR", {
143
+ group: initialContentModelGroup
144
+ });
145
+ }
151
146
 
152
- await storageOperations.system.create({
153
- system
154
- });
155
- /**
156
- * And trigger after install event.
157
- */
147
+ const system = {
148
+ version: context.WEBINY_VERSION,
149
+ readAPIKey: createReadAPIKey(),
150
+ tenant: getTenant().id
151
+ };
152
+ /**
153
+ * We need to create the system data.
154
+ */
158
155
 
159
- await onAfterInstall.publish({
160
- tenant: getTenant().id,
161
- locale: getLocale().code
162
- });
156
+ await storageOperations.system.create({
157
+ system
158
+ });
159
+ /**
160
+ * And trigger after install event.
161
+ */
162
+
163
+ await onSystemAfterInstall.publish({
164
+ tenant: getTenant().id,
165
+ locale: getLocale().code
166
+ });
167
+ } catch (ex) {
168
+ await onSystemInstallError.publish({
169
+ error: ex,
170
+ tenant: getTenant().id,
171
+ locale: getLocale().code
172
+ });
173
+ throw new _error.default(ex.message, ex.code, ex.data);
174
+ }
163
175
  },
164
176
 
165
177
  async upgradeSystem(version) {