@webiny/api-headless-cms 5.39.0-beta.0 → 5.39.0-beta.2

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 (250) hide show
  1. package/constants.d.ts +31 -0
  2. package/constants.js +48 -1
  3. package/constants.js.map +1 -1
  4. package/context.js +40 -34
  5. package/context.js.map +1 -1
  6. package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +20 -0
  7. package/crud/contentEntry/entryDataFactories/createEntryData.js +228 -0
  8. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -0
  9. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +21 -0
  10. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +114 -0
  11. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -0
  12. package/crud/contentEntry/entryDataFactories/createPublishEntryData.d.ts +13 -0
  13. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +61 -0
  14. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -0
  15. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.d.ts +12 -0
  16. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +57 -0
  17. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -0
  18. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.d.ts +12 -0
  19. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +38 -0
  20. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -0
  21. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.d.ts +20 -0
  22. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +122 -0
  23. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -0
  24. package/crud/contentEntry/entryDataFactories/index.d.ts +8 -0
  25. package/crud/contentEntry/entryDataFactories/index.js +95 -0
  26. package/crud/contentEntry/entryDataFactories/index.js.map +1 -0
  27. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.d.ts +5 -0
  28. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js +36 -0
  29. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js.map +1 -0
  30. package/crud/contentEntry/entryDataFactories/statuses.d.ts +4 -0
  31. package/crud/contentEntry/entryDataFactories/statuses.js +15 -0
  32. package/crud/contentEntry/entryDataFactories/statuses.js.map +1 -0
  33. package/crud/contentEntry/entryDataValidation.js +29 -24
  34. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  35. package/crud/contentEntry/markLockedFields.js +14 -9
  36. package/crud/contentEntry/markLockedFields.js.map +1 -1
  37. package/crud/contentEntry/referenceFieldsMapping.js +10 -12
  38. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  39. package/crud/contentEntry/searchableFields.js +2 -3
  40. package/crud/contentEntry/searchableFields.js.map +1 -1
  41. package/crud/contentEntry.crud.d.ts +1 -4
  42. package/crud/contentEntry.crud.js +140 -383
  43. package/crud/contentEntry.crud.js.map +1 -1
  44. package/crud/contentModel/fields/descriptionField.js +1 -1
  45. package/crud/contentModel/fields/descriptionField.js.map +1 -1
  46. package/crud/contentModel/fields/imageField.js +3 -7
  47. package/crud/contentModel/fields/imageField.js.map +1 -1
  48. package/crud/contentModel/fields/titleField.js +1 -1
  49. package/crud/contentModel/fields/titleField.js.map +1 -1
  50. package/crud/contentModel/listModelsFromDatabase.js +3 -4
  51. package/crud/contentModel/listModelsFromDatabase.js.map +1 -1
  52. package/crud/contentModel/validateModelFields.js +4 -5
  53. package/crud/contentModel/validateModelFields.js.map +1 -1
  54. package/crud/contentModel/validation.d.ts +96 -96
  55. package/crud/contentModel.crud.js +28 -26
  56. package/crud/contentModel.crud.js.map +1 -1
  57. package/crud/contentModelGroup/validation.d.ts +1 -1
  58. package/crud/contentModelGroup.crud.js +18 -15
  59. package/crud/contentModelGroup.crud.js.map +1 -1
  60. package/crud/system.crud.js +4 -4
  61. package/crud/system.crud.js.map +1 -1
  62. package/export/crud/exporting.js +2 -3
  63. package/export/crud/exporting.js.map +1 -1
  64. package/export/crud/importing.js +3 -3
  65. package/export/crud/importing.js.map +1 -1
  66. package/export/crud/imports/importData.js +30 -3
  67. package/export/crud/imports/importData.js.map +1 -1
  68. package/export/crud/imports/importGroups.js +15 -10
  69. package/export/crud/imports/importGroups.js.map +1 -1
  70. package/export/crud/imports/importModels.js +14 -12
  71. package/export/crud/imports/importModels.js.map +1 -1
  72. package/export/crud/imports/validateGroups.js +13 -7
  73. package/export/crud/imports/validateGroups.js.map +1 -1
  74. package/export/crud/imports/validateInput.js +15 -9
  75. package/export/crud/imports/validateInput.js.map +1 -1
  76. package/export/crud/imports/validateModels.d.ts +4 -1
  77. package/export/crud/imports/validateModels.js +24 -25
  78. package/export/crud/imports/validateModels.js.map +1 -1
  79. package/export/types.d.ts +2 -0
  80. package/export/types.js.map +1 -1
  81. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -6
  82. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  83. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +2 -7
  84. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  85. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +44 -37
  86. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  87. package/graphql/getSchema.js +15 -9
  88. package/graphql/getSchema.js.map +1 -1
  89. package/graphql/index.d.ts +1 -1
  90. package/graphql/schema/baseContentSchema.js +6 -7
  91. package/graphql/schema/baseContentSchema.js.map +1 -1
  92. package/graphql/schema/baseSchema.js +1 -8
  93. package/graphql/schema/baseSchema.js.map +1 -1
  94. package/graphql/schema/contentEntries.js +44 -13
  95. package/graphql/schema/contentEntries.js.map +1 -1
  96. package/graphql/schema/contentModelGroups.js +1 -1
  97. package/graphql/schema/contentModelGroups.js.map +1 -1
  98. package/graphql/schema/contentModels.js +5 -5
  99. package/graphql/schema/contentModels.js.map +1 -1
  100. package/graphql/schema/createFieldResolvers.js +11 -11
  101. package/graphql/schema/createFieldResolvers.js.map +1 -1
  102. package/graphql/schema/createManageResolvers.js +6 -9
  103. package/graphql/schema/createManageResolvers.js.map +1 -1
  104. package/graphql/schema/createManageSDL.js +30 -24
  105. package/graphql/schema/createManageSDL.js.map +1 -1
  106. package/graphql/schema/createPreviewResolvers.js +4 -5
  107. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  108. package/graphql/schema/createReadResolvers.js +4 -5
  109. package/graphql/schema/createReadResolvers.js.map +1 -1
  110. package/graphql/schema/createReadSDL.js +9 -4
  111. package/graphql/schema/createReadSDL.js.map +1 -1
  112. package/graphql/schema/resolvers/manage/resolveDelete.js +1 -1
  113. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  114. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +1 -1
  115. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
  116. package/graphql/schema/resolvers/manage/resolveGet.js +9 -4
  117. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  118. package/graphql/schema/resolvers/manage/resolvePublish.d.ts +1 -2
  119. package/graphql/schema/resolvers/manage/resolvePublish.js +1 -1
  120. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  121. package/graphql/schema/resolvers/preview/resolveGet.js +3 -4
  122. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  123. package/graphql/schema/resolvers/read/resolveGet.js +3 -4
  124. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  125. package/graphqlFields/datetime.js +1 -2
  126. package/graphqlFields/datetime.js.map +1 -1
  127. package/graphqlFields/dynamicZone/dynamicZoneField.js +13 -13
  128. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  129. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +6 -6
  130. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
  131. package/graphqlFields/index.js +2 -1
  132. package/graphqlFields/index.js.map +1 -1
  133. package/graphqlFields/json.d.ts +2 -0
  134. package/graphqlFields/json.js +49 -0
  135. package/graphqlFields/json.js.map +1 -0
  136. package/graphqlFields/object.js +20 -28
  137. package/graphqlFields/object.js.map +1 -1
  138. package/graphqlFields/ref.js +24 -14
  139. package/graphqlFields/ref.js.map +1 -1
  140. package/graphqlFields/richText/RichTextPluginsProcessor.d.ts +6 -0
  141. package/graphqlFields/richText/RichTextPluginsProcessor.js +34 -0
  142. package/graphqlFields/richText/RichTextPluginsProcessor.js.map +1 -0
  143. package/graphqlFields/richText/richTextResolver.d.ts +7 -0
  144. package/graphqlFields/richText/richTextResolver.js +39 -0
  145. package/graphqlFields/richText/richTextResolver.js.map +1 -0
  146. package/graphqlFields/richText.js +8 -2
  147. package/graphqlFields/richText.js.map +1 -1
  148. package/htmlRenderer/LexicalRenderer.d.ts +5 -0
  149. package/htmlRenderer/LexicalRenderer.js +28 -0
  150. package/htmlRenderer/LexicalRenderer.js.map +1 -0
  151. package/htmlRenderer/createLexicalHTMLRenderer.d.ts +2 -0
  152. package/htmlRenderer/createLexicalHTMLRenderer.js +31 -0
  153. package/htmlRenderer/createLexicalHTMLRenderer.js.map +1 -0
  154. package/index.d.ts +1 -1
  155. package/index.js +4 -4
  156. package/index.js.map +1 -1
  157. package/modelManager/DefaultCmsModelManager.js +0 -4
  158. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  159. package/package.json +21 -19
  160. package/parameters/context.js +1 -1
  161. package/parameters/context.js.map +1 -1
  162. package/parameters/header.js +1 -2
  163. package/parameters/header.js.map +1 -1
  164. package/parameters/manual.js +6 -3
  165. package/parameters/manual.js.map +1 -1
  166. package/parameters/path.js +1 -2
  167. package/parameters/path.js.map +1 -1
  168. package/plugins/CmsGraphQLSchemaPlugin.js +3 -4
  169. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -1
  170. package/plugins/CmsGraphQLSchemaSorterPlugin.js +1 -4
  171. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -1
  172. package/plugins/CmsGroupPlugin.js +4 -7
  173. package/plugins/CmsGroupPlugin.js.map +1 -1
  174. package/plugins/CmsModelFieldConverterPlugin.js +3 -4
  175. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  176. package/plugins/CmsModelPlugin.d.ts +6 -4
  177. package/plugins/CmsModelPlugin.js +52 -27
  178. package/plugins/CmsModelPlugin.js.map +1 -1
  179. package/plugins/CmsParametersPlugin.js +1 -4
  180. package/plugins/CmsParametersPlugin.js.map +1 -1
  181. package/plugins/CmsRichTextRendererPlugin.d.ts +24 -0
  182. package/plugins/CmsRichTextRendererPlugin.js +28 -0
  183. package/plugins/CmsRichTextRendererPlugin.js.map +1 -0
  184. package/plugins/StorageOperationsCmsModelPlugin.js +3 -6
  185. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -1
  186. package/plugins/StorageTransformPlugin.d.ts +2 -2
  187. package/plugins/StorageTransformPlugin.js +1 -4
  188. package/plugins/StorageTransformPlugin.js.map +1 -1
  189. package/plugins/index.d.ts +1 -0
  190. package/plugins/index.js +11 -0
  191. package/plugins/index.js.map +1 -1
  192. package/storage/index.d.ts +1 -0
  193. package/storage/index.js +15 -0
  194. package/storage/index.js.map +1 -0
  195. package/storage/json.d.ts +2 -0
  196. package/storage/json.js +27 -0
  197. package/storage/json.js.map +1 -0
  198. package/storage/object.js +5 -7
  199. package/storage/object.js.map +1 -1
  200. package/types.d.ts +182 -53
  201. package/types.js +0 -3
  202. package/types.js.map +1 -1
  203. package/utils/access.d.ts +0 -1
  204. package/utils/access.js +1 -10
  205. package/utils/access.js.map +1 -1
  206. package/utils/caching/Cache.js +3 -5
  207. package/utils/caching/Cache.js.map +1 -1
  208. package/utils/caching/CacheKey.js +0 -3
  209. package/utils/caching/CacheKey.js.map +1 -1
  210. package/utils/converters/Converter.js +1 -4
  211. package/utils/converters/Converter.js.map +1 -1
  212. package/utils/converters/ConverterCollection.js +10 -6
  213. package/utils/converters/ConverterCollection.js.map +1 -1
  214. package/utils/converters/valueKeyStorageConverter.js +3 -3
  215. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  216. package/utils/date.d.ts +2 -2
  217. package/utils/date.js +1 -1
  218. package/utils/date.js.map +1 -1
  219. package/utils/entryStorage.js +3 -3
  220. package/utils/entryStorage.js.map +1 -1
  221. package/utils/identity.d.ts +2 -0
  222. package/utils/identity.js +20 -0
  223. package/utils/identity.js.map +1 -0
  224. package/utils/permissions/ModelsPermissions.js +0 -3
  225. package/utils/permissions/ModelsPermissions.js.map +1 -1
  226. package/utils/renderGetFilterFields.js +2 -3
  227. package/utils/renderGetFilterFields.js.map +1 -1
  228. package/utils/renderListFilterFields.js +9 -3
  229. package/utils/renderListFilterFields.js.map +1 -1
  230. package/utils/renderSortEnum.js +2 -1
  231. package/utils/renderSortEnum.js.map +1 -1
  232. package/validators/gte.js +1 -2
  233. package/validators/gte.js.map +1 -1
  234. package/validators/in.js +1 -2
  235. package/validators/in.js.map +1 -1
  236. package/validators/lte.js +1 -2
  237. package/validators/lte.js.map +1 -1
  238. package/validators/maxLength.js +1 -2
  239. package/validators/maxLength.js.map +1 -1
  240. package/validators/minLength.js +1 -2
  241. package/validators/minLength.js.map +1 -1
  242. package/validators/pattern.js +2 -2
  243. package/validators/pattern.js.map +1 -1
  244. package/validators/timeGte.js +1 -2
  245. package/validators/timeGte.js.map +1 -1
  246. package/validators/timeLte.js +1 -2
  247. package/validators/timeLte.js.map +1 -1
  248. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +0 -7
  249. package/graphql/schema/resolvers/commonFieldResolvers.js +0 -15
  250. package/graphql/schema/resolvers/commonFieldResolvers.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_CmsGroupPlugin","_pubsub","_beforeUpdate","_beforeCreate","_beforeDelete","_validation","_utils","_filterAsync","_utils2","_listGroupsFromDatabase","_handlerGraphql","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelGroupsPermissions","context","filterGroup","group","ownsGroup","ensure","owns","createdBy","throw","canAccessGroup","listDatabaseGroupsCache","createMemoryCache","listFilteredDatabaseGroupsCache","listPluginGroupsCache","clearGroupsCache","clear","fetchPluginGroups","tenant","locale","_getIdentity","pluginGroups","plugins","byType","CmsGroupPlugin","type","cacheKey","createCacheKey","identity","security","isAuthorizationEnabled","id","undefined","groups","map","contentModelGroup","slug","savedOn","join","getOrSet","filter","plugin","t","l","_objectSpread2","default","webinyVersion","WEBINY_VERSION","filterAsync","fetchGroups","_getIdentity2","databaseGroups","listGroupsFromDatabase","filteredCacheKey","dbCacheKey","get","concat","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","getGroup","rwd","withoutAuthorization","code","find","NotFoundError","ensureCanAccessGroup","listGroups","where","createGroup","input","result","createGroupCreateValidation","safeParseAsync","success","createZodError","error","data","mdbid","createdOn","Date","toISOString","displayName","publish","create","ex","WebinyError","message","updateGroup","original","createGroupUpdateValidation","Object","keys","length","updatedGroup","update","deleteGroup","delete","benchmark","measure","exports"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsGroup,\n CmsGroupContext,\n HeadlessCmsStorageOperations,\n OnGroupAfterCreateTopicParams,\n OnGroupAfterDeleteTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeCreateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupCreateErrorTopicParams,\n OnGroupDeleteErrorTopicParams,\n OnGroupUpdateErrorTopicParams\n} from \"~/types\";\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 {\n createGroupCreateValidation,\n createGroupUpdateValidation\n} from \"~/crud/contentModelGroup/validation\";\nimport { createZodError, mdbid } from \"@webiny/utils\";\nimport { ModelGroupsPermissions } from \"~/utils/permissions/ModelGroupsPermissions\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { listGroupsFromDatabase } from \"~/crud/contentModelGroup/listGroupsFromDatabase\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n modelGroupsPermissions: ModelGroupsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const {\n getTenant,\n getIdentity,\n getLocale,\n storageOperations,\n modelGroupsPermissions,\n context\n } = params;\n\n const filterGroup = async (group?: CmsGroup) => {\n if (!group) {\n return false;\n }\n const ownsGroup = await modelGroupsPermissions.ensure(\n { owns: group.createdBy },\n { throw: false }\n );\n\n if (!ownsGroup) {\n return false;\n }\n\n return await modelGroupsPermissions.canAccessGroup({\n group\n });\n };\n\n const listDatabaseGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const listFilteredDatabaseGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const listPluginGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const clearGroupsCache = (): void => {\n listPluginGroupsCache.clear();\n listDatabaseGroupsCache.clear();\n listFilteredDatabaseGroupsCache.clear();\n };\n\n const fetchPluginGroups = (tenant: string, locale: string): Promise<CmsGroup[]> => {\n const pluginGroups = context.plugins.byType<CmsGroupPlugin>(CmsGroupPlugin.type);\n\n const cacheKey = createCacheKey({\n tenant,\n locale,\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined,\n groups: pluginGroups\n .map(({ contentModelGroup: group }) => {\n return `${group.id}#${group.slug}#${group.savedOn || \"unknown\"}`;\n })\n .join(\"/\")\n });\n\n return listPluginGroupsCache.getOrSet(cacheKey, async (): Promise<CmsGroup[]> => {\n const groups = pluginGroups\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 return filterAsync(groups, filterGroup);\n });\n };\n\n const fetchGroups = async (tenant: string, locale: string) => {\n const pluginGroups = await fetchPluginGroups(tenant, locale);\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const cacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseGroups = await listDatabaseGroupsCache.getOrSet(cacheKey, async () => {\n return await listGroupsFromDatabase({\n storageOperations,\n tenant,\n locale\n });\n });\n const filteredCacheKey = createCacheKey({\n dbCacheKey: cacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const groups = await listFilteredDatabaseGroupsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseGroups, filterGroup);\n }\n );\n\n return groups.concat(pluginGroups);\n };\n\n /**\n * Create\n */\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n const onGroupCreateError = createTopic<OnGroupCreateErrorTopicParams>(\"cms.onGroupCreateError\");\n /**\n * Update\n */\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n const onGroupUpdateError = createTopic<OnGroupUpdateErrorTopicParams>(\"cms.onGroupUpdateError\");\n /**\n * Delete\n */\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n const onGroupDeleteError = createTopic<OnGroupDeleteErrorTopicParams>(\"cms.onGroupDeleteError\");\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 * CRUD Methods\n */\n const getGroup: CmsGroupContext[\"getGroup\"] = async id => {\n await modelGroupsPermissions.ensure({ rwd: \"r\" });\n\n const groups = await context.security.withoutAuthorization(async () => {\n return fetchGroups(getTenant().id, getLocale().code);\n });\n const group = groups.find(group => group.id === id);\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n\n await modelGroupsPermissions.ensure({ owns: group.createdBy });\n await modelGroupsPermissions.ensureCanAccessGroup({\n group\n });\n\n return group;\n };\n\n const listGroups: CmsGroupContext[\"listGroups\"] = async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n\n await modelGroupsPermissions.ensure({ rwd: \"r\" });\n\n return fetchGroups(tenant || getTenant().id, locale || getLocale().code);\n };\n\n const createGroup: CmsGroupContext[\"createGroup\"] = async input => {\n await modelGroupsPermissions.ensure({ rwd: \"w\" });\n\n const result = await createGroupCreateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n const identity = getIdentity();\n\n const id = data.id || mdbid();\n const group: CmsGroup = {\n ...data,\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 await onGroupCreateError.publish({\n input,\n group,\n error: ex\n });\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 const updateGroup: CmsGroupContext[\"updateGroup\"] = async (id, input) => {\n await modelGroupsPermissions.ensure({ rwd: \"w\" });\n\n const original = await getGroup(id);\n\n await modelGroupsPermissions.ensure({ owns: original.createdBy });\n\n const result = await createGroupUpdateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(data).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...data,\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 await onGroupUpdateError.publish({\n input,\n original,\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n };\n const deleteGroup: CmsGroupContext[\"deleteGroup\"] = async id => {\n await modelGroupsPermissions.ensure({ rwd: \"d\" });\n\n const group = await getGroup(id);\n\n await modelGroupsPermissions.ensure({ owns: group.createdBy });\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 await onGroupDeleteError.publish({\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n };\n\n return {\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupCreateError,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupUpdateError,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n onGroupDeleteError,\n clearGroupsCache,\n getGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.getGroup\", async () => {\n return getGroup(id);\n });\n },\n listGroups: async params => {\n return context.benchmark.measure(\"headlessCms.crud.groups.listGroups\", async () => {\n return listGroups(params);\n });\n },\n createGroup: async input => {\n return context.benchmark.measure(\"headlessCms.crud.groups.createGroup\", async () => {\n return createGroup(input);\n });\n },\n updateGroup: async (id, input) => {\n return context.benchmark.measure(\"headlessCms.crud.groups.updateGroup\", async () => {\n return updateGroup(id, input);\n });\n },\n deleteGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.deleteGroup\", async () => {\n return deleteGroup(id);\n });\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_CmsGroupPlugin","_pubsub","_beforeUpdate","_beforeCreate","_beforeDelete","_validation","_utils","_filterAsync","_utils2","_listGroupsFromDatabase","_handlerGraphql","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelGroupsPermissions","context","filterGroup","group","ownsGroup","ensure","owns","createdBy","throw","canAccessGroup","listDatabaseGroupsCache","createMemoryCache","listFilteredDatabaseGroupsCache","listPluginGroupsCache","clearGroupsCache","clear","fetchPluginGroups","tenant","locale","pluginGroups","plugins","byType","CmsGroupPlugin","type","cacheKey","createCacheKey","identity","security","isAuthorizationEnabled","id","undefined","groups","map","contentModelGroup","slug","savedOn","join","getOrSet","filter","plugin","t","l","webinyVersion","WEBINY_VERSION","filterAsync","fetchGroups","databaseGroups","listGroupsFromDatabase","filteredCacheKey","dbCacheKey","get","concat","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","getGroup","rwd","withoutAuthorization","code","find","NotFoundError","ensureCanAccessGroup","listGroups","where","createGroup","input","result","createGroupCreateValidation","safeParseAsync","success","createZodError","error","data","mdbid","createdOn","Date","toISOString","displayName","publish","create","ex","WebinyError","message","updateGroup","original","createGroupUpdateValidation","Object","keys","length","updatedGroup","update","deleteGroup","delete","benchmark","measure","exports"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsGroup,\n CmsGroupContext,\n HeadlessCmsStorageOperations,\n OnGroupAfterCreateTopicParams,\n OnGroupAfterDeleteTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeCreateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupCreateErrorTopicParams,\n OnGroupDeleteErrorTopicParams,\n OnGroupUpdateErrorTopicParams\n} from \"~/types\";\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 {\n createGroupCreateValidation,\n createGroupUpdateValidation\n} from \"~/crud/contentModelGroup/validation\";\nimport { createZodError, mdbid } from \"@webiny/utils\";\nimport { ModelGroupsPermissions } from \"~/utils/permissions/ModelGroupsPermissions\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { listGroupsFromDatabase } from \"~/crud/contentModelGroup/listGroupsFromDatabase\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n modelGroupsPermissions: ModelGroupsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const {\n getTenant,\n getIdentity,\n getLocale,\n storageOperations,\n modelGroupsPermissions,\n context\n } = params;\n\n const filterGroup = async (group?: CmsGroup) => {\n if (!group) {\n return false;\n }\n const ownsGroup = await modelGroupsPermissions.ensure(\n { owns: group.createdBy },\n { throw: false }\n );\n\n if (!ownsGroup) {\n return false;\n }\n\n return await modelGroupsPermissions.canAccessGroup({\n group\n });\n };\n\n const listDatabaseGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const listFilteredDatabaseGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const listPluginGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const clearGroupsCache = (): void => {\n listPluginGroupsCache.clear();\n listDatabaseGroupsCache.clear();\n listFilteredDatabaseGroupsCache.clear();\n };\n\n const fetchPluginGroups = (tenant: string, locale: string): Promise<CmsGroup[]> => {\n const pluginGroups = context.plugins.byType<CmsGroupPlugin>(CmsGroupPlugin.type);\n\n const cacheKey = createCacheKey({\n tenant,\n locale,\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined,\n groups: pluginGroups\n .map(({ contentModelGroup: group }) => {\n return `${group.id}#${group.slug}#${group.savedOn || \"unknown\"}`;\n })\n .join(\"/\")\n });\n\n return listPluginGroupsCache.getOrSet(cacheKey, async (): Promise<CmsGroup[]> => {\n const groups = pluginGroups\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 return filterAsync(groups, filterGroup);\n });\n };\n\n const fetchGroups = async (tenant: string, locale: string) => {\n const pluginGroups = await fetchPluginGroups(tenant, locale);\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const cacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseGroups = await listDatabaseGroupsCache.getOrSet(cacheKey, async () => {\n return await listGroupsFromDatabase({\n storageOperations,\n tenant,\n locale\n });\n });\n const filteredCacheKey = createCacheKey({\n dbCacheKey: cacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const groups = await listFilteredDatabaseGroupsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseGroups, filterGroup);\n }\n );\n\n return groups.concat(pluginGroups);\n };\n\n /**\n * Create\n */\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n const onGroupCreateError = createTopic<OnGroupCreateErrorTopicParams>(\"cms.onGroupCreateError\");\n /**\n * Update\n */\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n const onGroupUpdateError = createTopic<OnGroupUpdateErrorTopicParams>(\"cms.onGroupUpdateError\");\n /**\n * Delete\n */\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n const onGroupDeleteError = createTopic<OnGroupDeleteErrorTopicParams>(\"cms.onGroupDeleteError\");\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 * CRUD Methods\n */\n const getGroup: CmsGroupContext[\"getGroup\"] = async id => {\n await modelGroupsPermissions.ensure({ rwd: \"r\" });\n\n const groups = await context.security.withoutAuthorization(async () => {\n return fetchGroups(getTenant().id, getLocale().code);\n });\n const group = groups.find(group => group.id === id);\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n\n await modelGroupsPermissions.ensure({ owns: group.createdBy });\n await modelGroupsPermissions.ensureCanAccessGroup({\n group\n });\n\n return group;\n };\n\n const listGroups: CmsGroupContext[\"listGroups\"] = async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n\n await modelGroupsPermissions.ensure({ rwd: \"r\" });\n\n return fetchGroups(tenant || getTenant().id, locale || getLocale().code);\n };\n\n const createGroup: CmsGroupContext[\"createGroup\"] = async input => {\n await modelGroupsPermissions.ensure({ rwd: \"w\" });\n\n const result = await createGroupCreateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n const identity = getIdentity();\n\n const id = data.id || mdbid();\n const group: CmsGroup = {\n ...data,\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 await onGroupCreateError.publish({\n input,\n group,\n error: ex\n });\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 const updateGroup: CmsGroupContext[\"updateGroup\"] = async (id, input) => {\n await modelGroupsPermissions.ensure({ rwd: \"w\" });\n\n const original = await getGroup(id);\n\n await modelGroupsPermissions.ensure({ owns: original.createdBy });\n\n const result = await createGroupUpdateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(data).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...data,\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 await onGroupUpdateError.publish({\n input,\n original,\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n };\n const deleteGroup: CmsGroupContext[\"deleteGroup\"] = async id => {\n await modelGroupsPermissions.ensure({ rwd: \"d\" });\n\n const group = await getGroup(id);\n\n await modelGroupsPermissions.ensure({ owns: group.createdBy });\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 await onGroupDeleteError.publish({\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n };\n\n return {\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupCreateError,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupUpdateError,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n onGroupDeleteError,\n clearGroupsCache,\n getGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.getGroup\", async () => {\n return getGroup(id);\n });\n },\n listGroups: async params => {\n return context.benchmark.measure(\"headlessCms.crud.groups.listGroups\", async () => {\n return listGroups(params);\n });\n },\n createGroup: async input => {\n return context.benchmark.measure(\"headlessCms.crud.groups.createGroup\", async () => {\n return createGroup(input);\n });\n },\n updateGroup: async (id, input) => {\n return context.benchmark.measure(\"headlessCms.crud.groups.updateGroup\", async () => {\n return updateGroup(id, input);\n });\n },\n deleteGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.deleteGroup\", async () => {\n return deleteGroup(id);\n });\n }\n };\n};\n"],"mappings":"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"}
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.createSystemCrud = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
8
  var _apiSecurity = require("@webiny/api-security");
10
9
  var _error = _interopRequireDefault(require("@webiny/error"));
11
10
  var _pubsub = require("@webiny/pubsub");
@@ -33,16 +32,17 @@ const createSystemCrud = params => {
33
32
  const system = await storageOperations.system.get({
34
33
  tenant: getTenant().id
35
34
  });
36
- return (system === null || system === void 0 ? void 0 : system.version) || null;
35
+ return system?.version || null;
37
36
  };
38
37
  const setVersion = async version => {
39
38
  const original = await storageOperations.system.get({
40
39
  tenant: getTenant().id
41
40
  });
42
- const system = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original || {}), {}, {
41
+ const system = {
42
+ ...(original || {}),
43
43
  version,
44
44
  tenant: getTenant().id
45
- });
45
+ };
46
46
  if (!original) {
47
47
  await storageOperations.system.create({
48
48
  system
@@ -1 +1 @@
1
- {"version":3,"names":["_apiSecurity","require","_error","_interopRequireDefault","_pubsub","initialContentModelGroup","name","slug","description","icon","createSystemCrud","params","getTenant","getLocale","storageOperations","context","getIdentity","onSystemBeforeInstall","createTopic","onSystemAfterInstall","onSystemInstallError","getVersion","system","get","tenant","id","version","setVersion","original","_objectSpread2","default","create","update","getSystemVersion","setSystemVersion","installSystem","identity","NotAuthorizedError","publish","locale","code","cms","createGroup","ex","WebinyError","message","group","WEBINY_VERSION","error","data","exports"],"sources":["system.crud.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport WebinyError from \"@webiny/error\";\nimport {\n OnSystemAfterInstallTopicParams,\n OnSystemBeforeInstallTopicParams,\n CmsContext,\n CmsSystem,\n CmsSystemContext,\n HeadlessCmsStorageOperations,\n OnSystemInstallErrorTopicParams\n} from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\n\nconst initialContentModelGroup = {\n name: \"Ungrouped\",\n slug: \"ungrouped\",\n description: \"A generic content model group\",\n icon: \"fas/star\"\n};\n\ninterface CreateSystemCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createSystemCrud = (params: CreateSystemCrudParams): CmsSystemContext => {\n const { getTenant, getLocale, storageOperations, context, getIdentity } = params;\n\n const onSystemBeforeInstall = createTopic<OnSystemBeforeInstallTopicParams>(\n \"cms.onSystemBeforeInstall\"\n );\n const onSystemAfterInstall = createTopic<OnSystemAfterInstallTopicParams>(\n \"cms.onSystemAfterInstall\"\n );\n\n const onSystemInstallError = createTopic<OnSystemInstallErrorTopicParams>(\n \"cms.onSystemInstallError\"\n );\n\n const getVersion = async () => {\n if (!getTenant()) {\n return null;\n }\n\n const system = await storageOperations.system.get({\n tenant: getTenant().id\n });\n\n return system?.version || null;\n };\n\n const setVersion = async (version: string) => {\n const original = await storageOperations.system.get({\n tenant: getTenant().id\n });\n const system: CmsSystem = {\n ...(original || {}),\n version,\n tenant: getTenant().id\n };\n if (!original) {\n await storageOperations.system.create({\n system\n });\n return;\n }\n await storageOperations.system.update({\n system\n });\n };\n\n return {\n /**\n * Lifecycle Events.\n */\n onSystemBeforeInstall,\n onSystemAfterInstall,\n onSystemInstallError,\n getSystemVersion: getVersion,\n setSystemVersion: setVersion,\n installSystem: async (): Promise<void> => {\n const identity = getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n\n const version = await getVersion();\n if (version) {\n return;\n }\n try {\n /**\n * First trigger before install event.\n */\n await onSystemBeforeInstall.publish({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n\n /**\n * Add default content model group.\n */\n try {\n await context.cms.createGroup(initialContentModelGroup);\n } catch (ex) {\n throw new WebinyError(\n ex.message,\n \"CMS_INSTALLATION_CONTENT_MODEL_GROUP_ERROR\",\n {\n group: initialContentModelGroup\n }\n );\n }\n\n const system: CmsSystem = {\n version: context.WEBINY_VERSION,\n tenant: getTenant().id\n };\n /**\n * We need to create the system data.\n */\n await storageOperations.system.create({\n system\n });\n /**\n * And trigger after install event.\n */\n await onSystemAfterInstall.publish({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n } catch (ex) {\n await onSystemInstallError.publish({\n error: ex,\n tenant: getTenant().id,\n locale: getLocale().code\n });\n throw new WebinyError(ex.message, ex.code, ex.data);\n }\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_apiSecurity","require","_error","_interopRequireDefault","_pubsub","initialContentModelGroup","name","slug","description","icon","createSystemCrud","params","getTenant","getLocale","storageOperations","context","getIdentity","onSystemBeforeInstall","createTopic","onSystemAfterInstall","onSystemInstallError","getVersion","system","get","tenant","id","version","setVersion","original","create","update","getSystemVersion","setSystemVersion","installSystem","identity","NotAuthorizedError","publish","locale","code","cms","createGroup","ex","WebinyError","message","group","WEBINY_VERSION","error","data","exports"],"sources":["system.crud.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport WebinyError from \"@webiny/error\";\nimport {\n OnSystemAfterInstallTopicParams,\n OnSystemBeforeInstallTopicParams,\n CmsContext,\n CmsSystem,\n CmsSystemContext,\n HeadlessCmsStorageOperations,\n OnSystemInstallErrorTopicParams\n} from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\n\nconst initialContentModelGroup = {\n name: \"Ungrouped\",\n slug: \"ungrouped\",\n description: \"A generic content model group\",\n icon: \"fas/star\"\n};\n\ninterface CreateSystemCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createSystemCrud = (params: CreateSystemCrudParams): CmsSystemContext => {\n const { getTenant, getLocale, storageOperations, context, getIdentity } = params;\n\n const onSystemBeforeInstall = createTopic<OnSystemBeforeInstallTopicParams>(\n \"cms.onSystemBeforeInstall\"\n );\n const onSystemAfterInstall = createTopic<OnSystemAfterInstallTopicParams>(\n \"cms.onSystemAfterInstall\"\n );\n\n const onSystemInstallError = createTopic<OnSystemInstallErrorTopicParams>(\n \"cms.onSystemInstallError\"\n );\n\n const getVersion = async () => {\n if (!getTenant()) {\n return null;\n }\n\n const system = await storageOperations.system.get({\n tenant: getTenant().id\n });\n\n return system?.version || null;\n };\n\n const setVersion = async (version: string) => {\n const original = await storageOperations.system.get({\n tenant: getTenant().id\n });\n const system: CmsSystem = {\n ...(original || {}),\n version,\n tenant: getTenant().id\n };\n if (!original) {\n await storageOperations.system.create({\n system\n });\n return;\n }\n await storageOperations.system.update({\n system\n });\n };\n\n return {\n /**\n * Lifecycle Events.\n */\n onSystemBeforeInstall,\n onSystemAfterInstall,\n onSystemInstallError,\n getSystemVersion: getVersion,\n setSystemVersion: setVersion,\n installSystem: async (): Promise<void> => {\n const identity = getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n\n const version = await getVersion();\n if (version) {\n return;\n }\n try {\n /**\n * First trigger before install event.\n */\n await onSystemBeforeInstall.publish({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n\n /**\n * Add default content model group.\n */\n try {\n await context.cms.createGroup(initialContentModelGroup);\n } catch (ex) {\n throw new WebinyError(\n ex.message,\n \"CMS_INSTALLATION_CONTENT_MODEL_GROUP_ERROR\",\n {\n group: initialContentModelGroup\n }\n );\n }\n\n const system: CmsSystem = {\n version: context.WEBINY_VERSION,\n tenant: getTenant().id\n };\n /**\n * We need to create the system data.\n */\n await storageOperations.system.create({\n system\n });\n /**\n * And trigger after install event.\n */\n await onSystemAfterInstall.publish({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n } catch (ex) {\n await onSystemInstallError.publish({\n error: ex,\n tenant: getTenant().id,\n locale: getLocale().code\n });\n throw new WebinyError(ex.message, ex.code, ex.data);\n }\n }\n };\n};\n"],"mappings":"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"}
@@ -19,12 +19,11 @@ const createExportStructureContext = context => {
19
19
  * * are part of one of the groups we already fetched
20
20
  */
21
21
  const models = (await context.cms.listModels()).filter(model => {
22
- var _model$fields;
23
22
  if (model.isPrivate) {
24
23
  return false;
25
- } else if (!((_model$fields = model.fields) !== null && _model$fields !== void 0 && _model$fields.length)) {
24
+ } else if (!model.fields?.length) {
26
25
  return false;
27
- } else if (!(modelIdList !== null && modelIdList !== void 0 && modelIdList.length)) {
26
+ } else if (!modelIdList?.length) {
28
27
  return true;
29
28
  }
30
29
  return modelIdList.includes(model.modelId);
@@ -1 +1 @@
1
- {"version":3,"names":["_sanitize","require","createExportStructureContext","context","params","models","modelIdList","groups","cms","listGroups","map","sanitizeGroup","listModels","filter","model","_model$fields","isPrivate","fields","length","includes","modelId","group","find","id","sanitizeModel","some","exports"],"sources":["exporting.ts"],"sourcesContent":["import { HeadlessCmsExportStructure, SanitizedCmsModel } from \"~/export/types\";\nimport { CmsContext } from \"~/types\";\nimport { sanitizeGroup, sanitizeModel } from \"./sanitize\";\n\nexport const createExportStructureContext = (context: CmsContext): HeadlessCmsExportStructure => {\n return async params => {\n const { models: modelIdList } = params;\n const groups = (await context.cms.listGroups()).map(sanitizeGroup);\n /**\n * We need all the models which:\n * * are accessible by current user\n * * are not private\n * * are included (if targets are provided)\n * * are part of one of the groups we already fetched\n */\n const models = (await context.cms.listModels())\n .filter(model => {\n if (model.isPrivate) {\n return false;\n } else if (!model.fields?.length) {\n return false;\n } else if (!modelIdList?.length) {\n return true;\n }\n return modelIdList.includes(model.modelId);\n })\n .map(model => {\n const group = groups.find(group => group.id === model.group.id);\n if (!group) {\n return null;\n }\n return sanitizeModel(group, model);\n })\n .filter((model): model is SanitizedCmsModel => {\n return !!model;\n });\n\n return {\n groups: groups.filter(group => {\n return models.some(model => model.group === group.id);\n }),\n models\n };\n };\n};\n"],"mappings":";;;;;;AAEA,IAAAA,SAAA,GAAAC,OAAA;AAEO,MAAMC,4BAA4B,GAAIC,OAAmB,IAAiC;EAC7F,OAAO,MAAMC,MAAM,IAAI;IACnB,MAAM;MAAEC,MAAM,EAAEC;IAAY,CAAC,GAAGF,MAAM;IACtC,MAAMG,MAAM,GAAG,CAAC,MAAMJ,OAAO,CAACK,GAAG,CAACC,UAAU,CAAC,CAAC,EAAEC,GAAG,CAACC,uBAAa,CAAC;IAClE;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,MAAMN,MAAM,GAAG,CAAC,MAAMF,OAAO,CAACK,GAAG,CAACI,UAAU,CAAC,CAAC,EACzCC,MAAM,CAACC,KAAK,IAAI;MAAA,IAAAC,aAAA;MACb,IAAID,KAAK,CAACE,SAAS,EAAE;QACjB,OAAO,KAAK;MAChB,CAAC,MAAM,IAAI,GAAAD,aAAA,GAACD,KAAK,CAACG,MAAM,cAAAF,aAAA,eAAZA,aAAA,CAAcG,MAAM,GAAE;QAC9B,OAAO,KAAK;MAChB,CAAC,MAAM,IAAI,EAACZ,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEY,MAAM,GAAE;QAC7B,OAAO,IAAI;MACf;MACA,OAAOZ,WAAW,CAACa,QAAQ,CAACL,KAAK,CAACM,OAAO,CAAC;IAC9C,CAAC,CAAC,CACDV,GAAG,CAACI,KAAK,IAAI;MACV,MAAMO,KAAK,GAAGd,MAAM,CAACe,IAAI,CAACD,KAAK,IAAIA,KAAK,CAACE,EAAE,KAAKT,KAAK,CAACO,KAAK,CAACE,EAAE,CAAC;MAC/D,IAAI,CAACF,KAAK,EAAE;QACR,OAAO,IAAI;MACf;MACA,OAAO,IAAAG,uBAAa,EAACH,KAAK,EAAEP,KAAK,CAAC;IACtC,CAAC,CAAC,CACDD,MAAM,CAAEC,KAAK,IAAiC;MAC3C,OAAO,CAAC,CAACA,KAAK;IAClB,CAAC,CAAC;IAEN,OAAO;MACHP,MAAM,EAAEA,MAAM,CAACM,MAAM,CAACQ,KAAK,IAAI;QAC3B,OAAOhB,MAAM,CAACoB,IAAI,CAACX,KAAK,IAAIA,KAAK,CAACO,KAAK,KAAKA,KAAK,CAACE,EAAE,CAAC;MACzD,CAAC,CAAC;MACFlB;IACJ,CAAC;EACL,CAAC;AACL,CAAC;AAACqB,OAAA,CAAAxB,4BAAA,GAAAA,4BAAA"}
1
+ {"version":3,"names":["_sanitize","require","createExportStructureContext","context","params","models","modelIdList","groups","cms","listGroups","map","sanitizeGroup","listModels","filter","model","isPrivate","fields","length","includes","modelId","group","find","id","sanitizeModel","some","exports"],"sources":["exporting.ts"],"sourcesContent":["import { HeadlessCmsExportStructure, SanitizedCmsModel } from \"~/export/types\";\nimport { CmsContext } from \"~/types\";\nimport { sanitizeGroup, sanitizeModel } from \"./sanitize\";\n\nexport const createExportStructureContext = (context: CmsContext): HeadlessCmsExportStructure => {\n return async params => {\n const { models: modelIdList } = params;\n const groups = (await context.cms.listGroups()).map(sanitizeGroup);\n /**\n * We need all the models which:\n * * are accessible by current user\n * * are not private\n * * are included (if targets are provided)\n * * are part of one of the groups we already fetched\n */\n const models = (await context.cms.listModels())\n .filter(model => {\n if (model.isPrivate) {\n return false;\n } else if (!model.fields?.length) {\n return false;\n } else if (!modelIdList?.length) {\n return true;\n }\n return modelIdList.includes(model.modelId);\n })\n .map(model => {\n const group = groups.find(group => group.id === model.group.id);\n if (!group) {\n return null;\n }\n return sanitizeModel(group, model);\n })\n .filter((model): model is SanitizedCmsModel => {\n return !!model;\n });\n\n return {\n groups: groups.filter(group => {\n return models.some(model => model.group === group.id);\n }),\n models\n };\n };\n};\n"],"mappings":";;;;;;AAEA,IAAAA,SAAA,GAAAC,OAAA;AAEO,MAAMC,4BAA4B,GAAIC,OAAmB,IAAiC;EAC7F,OAAO,MAAMC,MAAM,IAAI;IACnB,MAAM;MAAEC,MAAM,EAAEC;IAAY,CAAC,GAAGF,MAAM;IACtC,MAAMG,MAAM,GAAG,CAAC,MAAMJ,OAAO,CAACK,GAAG,CAACC,UAAU,CAAC,CAAC,EAAEC,GAAG,CAACC,uBAAa,CAAC;IAClE;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,MAAMN,MAAM,GAAG,CAAC,MAAMF,OAAO,CAACK,GAAG,CAACI,UAAU,CAAC,CAAC,EACzCC,MAAM,CAACC,KAAK,IAAI;MACb,IAAIA,KAAK,CAACC,SAAS,EAAE;QACjB,OAAO,KAAK;MAChB,CAAC,MAAM,IAAI,CAACD,KAAK,CAACE,MAAM,EAAEC,MAAM,EAAE;QAC9B,OAAO,KAAK;MAChB,CAAC,MAAM,IAAI,CAACX,WAAW,EAAEW,MAAM,EAAE;QAC7B,OAAO,IAAI;MACf;MACA,OAAOX,WAAW,CAACY,QAAQ,CAACJ,KAAK,CAACK,OAAO,CAAC;IAC9C,CAAC,CAAC,CACDT,GAAG,CAACI,KAAK,IAAI;MACV,MAAMM,KAAK,GAAGb,MAAM,CAACc,IAAI,CAACD,KAAK,IAAIA,KAAK,CAACE,EAAE,KAAKR,KAAK,CAACM,KAAK,CAACE,EAAE,CAAC;MAC/D,IAAI,CAACF,KAAK,EAAE;QACR,OAAO,IAAI;MACf;MACA,OAAO,IAAAG,uBAAa,EAACH,KAAK,EAAEN,KAAK,CAAC;IACtC,CAAC,CAAC,CACDD,MAAM,CAAEC,KAAK,IAAiC;MAC3C,OAAO,CAAC,CAACA,KAAK;IAClB,CAAC,CAAC;IAEN,OAAO;MACHP,MAAM,EAAEA,MAAM,CAACM,MAAM,CAACO,KAAK,IAAI;QAC3B,OAAOf,MAAM,CAACmB,IAAI,CAACV,KAAK,IAAIA,KAAK,CAACM,KAAK,KAAKA,KAAK,CAACE,EAAE,CAAC;MACzD,CAAC,CAAC;MACFjB;IACJ,CAAC;EACL,CAAC;AACL,CAAC;AAACoB,OAAA,CAAAvB,4BAAA,GAAAA,4BAAA"}
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.createImportCrud = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
8
  var _error = _interopRequireDefault(require("@webiny/error"));
10
9
  var _importData = require("./imports/importData");
11
10
  var _validateInput = require("./imports/validateInput");
@@ -68,9 +67,10 @@ const createImportCrud = context => {
68
67
  });
69
68
  const modelError = imported.models.find(model => !!model.error);
70
69
  const error = imported.error || modelError;
71
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, imported), {}, {
70
+ return {
71
+ ...imported,
72
72
  message: error ? null : "Import done."
73
- });
73
+ };
74
74
  }
75
75
  };
76
76
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_importData","_validateInput","fetchGroupsAndModels","context","security","withoutAuthorization","groups","cms","listGroups","models","listModels","createImportCrud","validate","params","data","validated","validateInput","error","message","structure","WebinyError","imported","importData","modelError","find","model","_objectSpread2","default","exports"],"sources":["importing.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { HeadlessCmsImport, ValidCmsGroupResult, ValidCmsModelResult } from \"~/export/types\";\nimport { CmsContext } from \"~/types\";\nimport { importData } from \"./imports/importData\";\nimport { validateInput } from \"./imports/validateInput\";\n\nconst fetchGroupsAndModels = async (context: CmsContext) => {\n return await context.security.withoutAuthorization(async () => {\n return {\n groups: await context.cms.listGroups(),\n models: await context.cms.listModels()\n };\n });\n};\n\nexport const createImportCrud = (context: CmsContext): HeadlessCmsImport => {\n return {\n validate: async params => {\n const { data } = params;\n\n const { groups, models } = await fetchGroupsAndModels(context);\n\n const validated = await validateInput({\n groups,\n models,\n data\n });\n if (validated.error) {\n return {\n groups: validated.groups,\n models: validated.models,\n message: validated.error\n };\n }\n\n return {\n groups: validated.groups,\n models: validated.models,\n message: \"Validation done.\"\n };\n },\n structure: async params => {\n const { data } = params;\n\n const { groups, models } = await fetchGroupsAndModels(context);\n\n const validated = await validateInput({\n groups,\n models,\n data\n });\n if (validated.error) {\n throw new WebinyError(validated.error, \"VALIDATION_ERROR\");\n }\n\n const imported = await importData({\n context,\n groups: validated.groups as ValidCmsGroupResult[],\n models: validated.models as ValidCmsModelResult[]\n });\n\n const modelError = imported.models.find(model => !!model.error);\n const error = imported.error || modelError;\n\n return {\n ...imported,\n message: error ? null : \"Import done.\"\n };\n }\n };\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA,MAAMG,oBAAoB,GAAG,MAAOC,OAAmB,IAAK;EACxD,OAAO,MAAMA,OAAO,CAACC,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IAC3D,OAAO;MACHC,MAAM,EAAE,MAAMH,OAAO,CAACI,GAAG,CAACC,UAAU,CAAC,CAAC;MACtCC,MAAM,EAAE,MAAMN,OAAO,CAACI,GAAG,CAACG,UAAU,CAAC;IACzC,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAEM,MAAMC,gBAAgB,GAAIR,OAAmB,IAAwB;EACxE,OAAO;IACHS,QAAQ,EAAE,MAAMC,MAAM,IAAI;MACtB,MAAM;QAAEC;MAAK,CAAC,GAAGD,MAAM;MAEvB,MAAM;QAAEP,MAAM;QAAEG;MAAO,CAAC,GAAG,MAAMP,oBAAoB,CAACC,OAAO,CAAC;MAE9D,MAAMY,SAAS,GAAG,MAAM,IAAAC,4BAAa,EAAC;QAClCV,MAAM;QACNG,MAAM;QACNK;MACJ,CAAC,CAAC;MACF,IAAIC,SAAS,CAACE,KAAK,EAAE;QACjB,OAAO;UACHX,MAAM,EAAES,SAAS,CAACT,MAAM;UACxBG,MAAM,EAAEM,SAAS,CAACN,MAAM;UACxBS,OAAO,EAAEH,SAAS,CAACE;QACvB,CAAC;MACL;MAEA,OAAO;QACHX,MAAM,EAAES,SAAS,CAACT,MAAM;QACxBG,MAAM,EAAEM,SAAS,CAACN,MAAM;QACxBS,OAAO,EAAE;MACb,CAAC;IACL,CAAC;IACDC,SAAS,EAAE,MAAMN,MAAM,IAAI;MACvB,MAAM;QAAEC;MAAK,CAAC,GAAGD,MAAM;MAEvB,MAAM;QAAEP,MAAM;QAAEG;MAAO,CAAC,GAAG,MAAMP,oBAAoB,CAACC,OAAO,CAAC;MAE9D,MAAMY,SAAS,GAAG,MAAM,IAAAC,4BAAa,EAAC;QAClCV,MAAM;QACNG,MAAM;QACNK;MACJ,CAAC,CAAC;MACF,IAAIC,SAAS,CAACE,KAAK,EAAE;QACjB,MAAM,IAAIG,cAAW,CAACL,SAAS,CAACE,KAAK,EAAE,kBAAkB,CAAC;MAC9D;MAEA,MAAMI,QAAQ,GAAG,MAAM,IAAAC,sBAAU,EAAC;QAC9BnB,OAAO;QACPG,MAAM,EAAES,SAAS,CAACT,MAA+B;QACjDG,MAAM,EAAEM,SAAS,CAACN;MACtB,CAAC,CAAC;MAEF,MAAMc,UAAU,GAAGF,QAAQ,CAACZ,MAAM,CAACe,IAAI,CAACC,KAAK,IAAI,CAAC,CAACA,KAAK,CAACR,KAAK,CAAC;MAC/D,MAAMA,KAAK,GAAGI,QAAQ,CAACJ,KAAK,IAAIM,UAAU;MAE1C,WAAAG,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACON,QAAQ;QACXH,OAAO,EAAED,KAAK,GAAG,IAAI,GAAG;MAAc;IAE9C;EACJ,CAAC;AACL,CAAC;AAACW,OAAA,CAAAjB,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_importData","_validateInput","fetchGroupsAndModels","context","security","withoutAuthorization","groups","cms","listGroups","models","listModels","createImportCrud","validate","params","data","validated","validateInput","error","message","structure","WebinyError","imported","importData","modelError","find","model","exports"],"sources":["importing.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { HeadlessCmsImport, ValidCmsGroupResult, ValidCmsModelResult } from \"~/export/types\";\nimport { CmsContext } from \"~/types\";\nimport { importData } from \"./imports/importData\";\nimport { validateInput } from \"./imports/validateInput\";\n\nconst fetchGroupsAndModels = async (context: CmsContext) => {\n return await context.security.withoutAuthorization(async () => {\n return {\n groups: await context.cms.listGroups(),\n models: await context.cms.listModels()\n };\n });\n};\n\nexport const createImportCrud = (context: CmsContext): HeadlessCmsImport => {\n return {\n validate: async params => {\n const { data } = params;\n\n const { groups, models } = await fetchGroupsAndModels(context);\n\n const validated = await validateInput({\n groups,\n models,\n data\n });\n if (validated.error) {\n return {\n groups: validated.groups,\n models: validated.models,\n message: validated.error\n };\n }\n\n return {\n groups: validated.groups,\n models: validated.models,\n message: \"Validation done.\"\n };\n },\n structure: async params => {\n const { data } = params;\n\n const { groups, models } = await fetchGroupsAndModels(context);\n\n const validated = await validateInput({\n groups,\n models,\n data\n });\n if (validated.error) {\n throw new WebinyError(validated.error, \"VALIDATION_ERROR\");\n }\n\n const imported = await importData({\n context,\n groups: validated.groups as ValidCmsGroupResult[],\n models: validated.models as ValidCmsModelResult[]\n });\n\n const modelError = imported.models.find(model => !!model.error);\n const error = imported.error || modelError;\n\n return {\n ...imported,\n message: error ? null : \"Import done.\"\n };\n }\n };\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA,MAAMG,oBAAoB,GAAG,MAAOC,OAAmB,IAAK;EACxD,OAAO,MAAMA,OAAO,CAACC,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IAC3D,OAAO;MACHC,MAAM,EAAE,MAAMH,OAAO,CAACI,GAAG,CAACC,UAAU,CAAC,CAAC;MACtCC,MAAM,EAAE,MAAMN,OAAO,CAACI,GAAG,CAACG,UAAU,CAAC;IACzC,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAEM,MAAMC,gBAAgB,GAAIR,OAAmB,IAAwB;EACxE,OAAO;IACHS,QAAQ,EAAE,MAAMC,MAAM,IAAI;MACtB,MAAM;QAAEC;MAAK,CAAC,GAAGD,MAAM;MAEvB,MAAM;QAAEP,MAAM;QAAEG;MAAO,CAAC,GAAG,MAAMP,oBAAoB,CAACC,OAAO,CAAC;MAE9D,MAAMY,SAAS,GAAG,MAAM,IAAAC,4BAAa,EAAC;QAClCV,MAAM;QACNG,MAAM;QACNK;MACJ,CAAC,CAAC;MACF,IAAIC,SAAS,CAACE,KAAK,EAAE;QACjB,OAAO;UACHX,MAAM,EAAES,SAAS,CAACT,MAAM;UACxBG,MAAM,EAAEM,SAAS,CAACN,MAAM;UACxBS,OAAO,EAAEH,SAAS,CAACE;QACvB,CAAC;MACL;MAEA,OAAO;QACHX,MAAM,EAAES,SAAS,CAACT,MAAM;QACxBG,MAAM,EAAEM,SAAS,CAACN,MAAM;QACxBS,OAAO,EAAE;MACb,CAAC;IACL,CAAC;IACDC,SAAS,EAAE,MAAMN,MAAM,IAAI;MACvB,MAAM;QAAEC;MAAK,CAAC,GAAGD,MAAM;MAEvB,MAAM;QAAEP,MAAM;QAAEG;MAAO,CAAC,GAAG,MAAMP,oBAAoB,CAACC,OAAO,CAAC;MAE9D,MAAMY,SAAS,GAAG,MAAM,IAAAC,4BAAa,EAAC;QAClCV,MAAM;QACNG,MAAM;QACNK;MACJ,CAAC,CAAC;MACF,IAAIC,SAAS,CAACE,KAAK,EAAE;QACjB,MAAM,IAAIG,cAAW,CAACL,SAAS,CAACE,KAAK,EAAE,kBAAkB,CAAC;MAC9D;MAEA,MAAMI,QAAQ,GAAG,MAAM,IAAAC,sBAAU,EAAC;QAC9BnB,OAAO;QACPG,MAAM,EAAES,SAAS,CAACT,MAA+B;QACjDG,MAAM,EAAEM,SAAS,CAACN;MACtB,CAAC,CAAC;MAEF,MAAMc,UAAU,GAAGF,QAAQ,CAACZ,MAAM,CAACe,IAAI,CAACC,KAAK,IAAI,CAAC,CAACA,KAAK,CAACR,KAAK,CAAC;MAC/D,MAAMA,KAAK,GAAGI,QAAQ,CAACJ,KAAK,IAAIM,UAAU;MAE1C,OAAO;QACH,GAAGF,QAAQ;QACXH,OAAO,EAAED,KAAK,GAAG,IAAI,GAAG;MAC5B,CAAC;IACL;EACJ,CAAC;AACL,CAAC;AAACS,OAAA,CAAAf,gBAAA,GAAAA,gBAAA"}
@@ -6,18 +6,45 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.importData = void 0;
7
7
  var _importGroups = require("./importGroups");
8
8
  var _importModels = require("./importModels");
9
+ const getGroup = params => {
10
+ const {
11
+ validated,
12
+ imported,
13
+ target
14
+ } = params;
15
+ const group = imported.find(group => {
16
+ return group.group.id === target;
17
+ });
18
+ if (group) {
19
+ return group.group.id;
20
+ }
21
+ const validatedGroup = validated.find(group => {
22
+ return group.group.id === target || group.target === target;
23
+ });
24
+ return validatedGroup?.target || validatedGroup?.group.id;
25
+ };
9
26
  const importData = async params => {
10
27
  const {
11
28
  context
12
29
  } = params;
13
30
  const groups = await (0, _importGroups.importGroups)(params);
14
- const importModelResults = await (0, _importModels.importModels)({
31
+ const models = await (0, _importModels.importModels)({
15
32
  context,
16
- models: params.models
33
+ models: params.models.map(model => {
34
+ const group = getGroup({
35
+ validated: params.groups,
36
+ imported: groups,
37
+ target: model.model.group
38
+ });
39
+ return {
40
+ ...model,
41
+ group: group || model.model.group
42
+ };
43
+ })
17
44
  });
18
45
  return {
19
46
  groups,
20
- models: importModelResults
47
+ models
21
48
  };
22
49
  };
23
50
  exports.importData = importData;
@@ -1 +1 @@
1
- {"version":3,"names":["_importGroups","require","_importModels","importData","params","context","groups","importGroups","importModelResults","importModels","models","exports"],"sources":["importData.ts"],"sourcesContent":["import {\n CmsGroupImportResult,\n CmsModelImportResult,\n ValidCmsGroupResult,\n ValidCmsModelResult\n} from \"~/export/types\";\nimport { CmsContext } from \"~/types\";\nimport { importGroups } from \"./importGroups\";\nimport { importModels } from \"./importModels\";\n\ninterface Params {\n context: CmsContext;\n groups: ValidCmsGroupResult[];\n models: ValidCmsModelResult[];\n}\n\ninterface Response {\n groups: CmsGroupImportResult[];\n models: CmsModelImportResult[];\n error?: string;\n}\n\nexport const importData = async (params: Params): Promise<Response> => {\n const { context } = params;\n\n const groups = await importGroups(params);\n\n const importModelResults = await importModels({\n context,\n models: params.models\n });\n\n return {\n groups,\n models: importModelResults\n };\n};\n"],"mappings":";;;;;;AAOA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAcO,MAAME,UAAU,GAAG,MAAOC,MAAc,IAAwB;EACnE,MAAM;IAAEC;EAAQ,CAAC,GAAGD,MAAM;EAE1B,MAAME,MAAM,GAAG,MAAM,IAAAC,0BAAY,EAACH,MAAM,CAAC;EAEzC,MAAMI,kBAAkB,GAAG,MAAM,IAAAC,0BAAY,EAAC;IAC1CJ,OAAO;IACPK,MAAM,EAAEN,MAAM,CAACM;EACnB,CAAC,CAAC;EAEF,OAAO;IACHJ,MAAM;IACNI,MAAM,EAAEF;EACZ,CAAC;AACL,CAAC;AAACG,OAAA,CAAAR,UAAA,GAAAA,UAAA"}
1
+ {"version":3,"names":["_importGroups","require","_importModels","getGroup","params","validated","imported","target","group","find","id","validatedGroup","importData","context","groups","importGroups","models","importModels","map","model","exports"],"sources":["importData.ts"],"sourcesContent":["import {\n CmsGroupImportResult,\n CmsModelImportResult,\n ValidCmsGroupResult,\n ValidCmsModelResult\n} from \"~/export/types\";\nimport { CmsContext } from \"~/types\";\nimport { importGroups } from \"./importGroups\";\nimport { importModels } from \"./importModels\";\n\ninterface Params {\n context: CmsContext;\n groups: ValidCmsGroupResult[];\n models: ValidCmsModelResult[];\n}\n\ninterface Response {\n groups: CmsGroupImportResult[];\n models: CmsModelImportResult[];\n error?: string;\n}\n\ninterface GetGroupParams {\n validated: ValidCmsGroupResult[];\n imported: CmsGroupImportResult[];\n target: string;\n}\n\nconst getGroup = (params: GetGroupParams) => {\n const { validated, imported, target } = params;\n const group = imported.find(group => {\n return group.group.id === target;\n });\n if (group) {\n return group.group.id;\n }\n const validatedGroup = validated.find(group => {\n return group.group.id === target || group.target === target;\n });\n return validatedGroup?.target || validatedGroup?.group.id;\n};\n\nexport const importData = async (params: Params): Promise<Response> => {\n const { context } = params;\n\n const groups = await importGroups(params);\n\n const models = await importModels({\n context,\n models: params.models.map(model => {\n const group = getGroup({\n validated: params.groups,\n imported: groups,\n target: model.model.group\n });\n return {\n ...model,\n group: group || model.model.group\n };\n })\n });\n\n return {\n groups,\n models\n };\n};\n"],"mappings":";;;;;;AAOA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAoBA,MAAME,QAAQ,GAAIC,MAAsB,IAAK;EACzC,MAAM;IAAEC,SAAS;IAAEC,QAAQ;IAAEC;EAAO,CAAC,GAAGH,MAAM;EAC9C,MAAMI,KAAK,GAAGF,QAAQ,CAACG,IAAI,CAACD,KAAK,IAAI;IACjC,OAAOA,KAAK,CAACA,KAAK,CAACE,EAAE,KAAKH,MAAM;EACpC,CAAC,CAAC;EACF,IAAIC,KAAK,EAAE;IACP,OAAOA,KAAK,CAACA,KAAK,CAACE,EAAE;EACzB;EACA,MAAMC,cAAc,GAAGN,SAAS,CAACI,IAAI,CAACD,KAAK,IAAI;IAC3C,OAAOA,KAAK,CAACA,KAAK,CAACE,EAAE,KAAKH,MAAM,IAAIC,KAAK,CAACD,MAAM,KAAKA,MAAM;EAC/D,CAAC,CAAC;EACF,OAAOI,cAAc,EAAEJ,MAAM,IAAII,cAAc,EAAEH,KAAK,CAACE,EAAE;AAC7D,CAAC;AAEM,MAAME,UAAU,GAAG,MAAOR,MAAc,IAAwB;EACnE,MAAM;IAAES;EAAQ,CAAC,GAAGT,MAAM;EAE1B,MAAMU,MAAM,GAAG,MAAM,IAAAC,0BAAY,EAACX,MAAM,CAAC;EAEzC,MAAMY,MAAM,GAAG,MAAM,IAAAC,0BAAY,EAAC;IAC9BJ,OAAO;IACPG,MAAM,EAAEZ,MAAM,CAACY,MAAM,CAACE,GAAG,CAACC,KAAK,IAAI;MAC/B,MAAMX,KAAK,GAAGL,QAAQ,CAAC;QACnBE,SAAS,EAAED,MAAM,CAACU,MAAM;QACxBR,QAAQ,EAAEQ,MAAM;QAChBP,MAAM,EAAEY,KAAK,CAACA,KAAK,CAACX;MACxB,CAAC,CAAC;MACF,OAAO;QACH,GAAGW,KAAK;QACRX,KAAK,EAAEA,KAAK,IAAIW,KAAK,CAACA,KAAK,CAACX;MAChC,CAAC;IACL,CAAC;EACL,CAAC,CAAC;EAEF,OAAO;IACHM,MAAM;IACNE;EACJ,CAAC;AACL,CAAC;AAACI,OAAA,CAAAR,UAAA,GAAAA,UAAA"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.importGroups = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
7
  var _types = require("../../types");
10
8
  const importGroups = async params => {
11
9
  const {
@@ -42,12 +40,15 @@ const importGroups = async params => {
42
40
  //
43
41
  else if (group.action === _types.CmsImportAction.UPDATE) {
44
42
  try {
45
- const result = await context.cms.updateGroup(group.group.id, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, group.group), {}, {
43
+ const result = await context.cms.updateGroup(group.group.id, {
44
+ ...group.group,
46
45
  description: group.group.description || undefined
47
- }));
46
+ });
48
47
  results.push({
49
48
  action: group.action,
50
- group: (0, _objectSpread2.default)({}, result),
49
+ group: {
50
+ ...result
51
+ },
51
52
  imported: true
52
53
  });
53
54
  } catch (ex) {
@@ -58,9 +59,10 @@ const importGroups = async params => {
58
59
  error: {
59
60
  message: ex.message,
60
61
  code: ex.code || "UPDATE_GROUP_ERROR",
61
- data: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data), {}, {
62
+ data: {
63
+ ...ex.data,
62
64
  group
63
- })
65
+ }
64
66
  }
65
67
  });
66
68
  }
@@ -74,7 +76,9 @@ const importGroups = async params => {
74
76
  const result = await context.cms.createGroup(group.group);
75
77
  results.push({
76
78
  action: group.action,
77
- group: (0, _objectSpread2.default)({}, result),
79
+ group: {
80
+ ...result
81
+ },
78
82
  imported: true
79
83
  });
80
84
  } catch (ex) {
@@ -85,9 +89,10 @@ const importGroups = async params => {
85
89
  error: {
86
90
  message: ex.message,
87
91
  code: ex.code || "CREATE_GROUP_ERROR",
88
- data: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data), {}, {
92
+ data: {
93
+ ...ex.data,
89
94
  group
90
- })
95
+ }
91
96
  }
92
97
  });
93
98
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","importGroups","params","context","groups","results","group","action","CmsImportAction","NONE","error","push","imported","message","code","CODE","UPDATE","result","cms","updateGroup","id","_objectSpread2","default","description","undefined","ex","data","createGroup","exports"],"sources":["importGroups.ts"],"sourcesContent":["import { CmsContext } from \"~/types\";\nimport { CmsGroupImportResult, CmsImportAction, ValidCmsGroupResult } from \"~/export/types\";\n\ninterface Params {\n context: CmsContext;\n groups: ValidCmsGroupResult[];\n}\n\nexport const importGroups = async (params: Params) => {\n const { context, groups } = params;\n\n const results: CmsGroupImportResult[] = [];\n for (const group of groups) {\n if (group.action === CmsImportAction.NONE || group.error) {\n results.push({\n action: group.action,\n group: group.group,\n imported: false,\n error: group.error || {\n message: \"No action to be ran on the group.\",\n code: \"NO_ACTION\"\n }\n });\n }\n /**\n * Cannot update if the group is created via plugin.\n */\n if (group.action === CmsImportAction.CODE) {\n results.push({\n action: group.action,\n group: group.group,\n imported: true\n });\n continue;\n }\n /**\n * Update the group.\n */\n //\n else if (group.action === CmsImportAction.UPDATE) {\n try {\n const result = await context.cms.updateGroup(group.group.id, {\n ...group.group,\n description: group.group.description || undefined\n });\n results.push({\n action: group.action,\n group: {\n ...result\n },\n imported: true\n });\n } catch (ex) {\n results.push({\n action: group.action,\n group: group.group,\n imported: false,\n error: {\n message: ex.message,\n code: ex.code || \"UPDATE_GROUP_ERROR\",\n data: {\n ...ex.data,\n group\n }\n }\n });\n }\n continue;\n }\n /**\n * Create the group\n */\n //\n try {\n const result = await context.cms.createGroup(group.group);\n results.push({\n action: group.action,\n group: {\n ...result\n },\n imported: true\n });\n } catch (ex) {\n results.push({\n action: group.action,\n group: group.group,\n imported: false,\n error: {\n message: ex.message,\n code: ex.code || \"CREATE_GROUP_ERROR\",\n data: {\n ...ex.data,\n group\n }\n }\n });\n }\n }\n\n return results;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_types","require","importGroups","params","context","groups","results","group","action","CmsImportAction","NONE","error","push","imported","message","code","CODE","UPDATE","result","cms","updateGroup","id","description","undefined","ex","data","createGroup","exports"],"sources":["importGroups.ts"],"sourcesContent":["import { CmsContext } from \"~/types\";\nimport { CmsGroupImportResult, CmsImportAction, ValidCmsGroupResult } from \"~/export/types\";\n\ninterface Params {\n context: CmsContext;\n groups: ValidCmsGroupResult[];\n}\n\nexport const importGroups = async (params: Params) => {\n const { context, groups } = params;\n\n const results: CmsGroupImportResult[] = [];\n for (const group of groups) {\n if (group.action === CmsImportAction.NONE || group.error) {\n results.push({\n action: group.action,\n group: group.group,\n imported: false,\n error: group.error || {\n message: \"No action to be ran on the group.\",\n code: \"NO_ACTION\"\n }\n });\n }\n /**\n * Cannot update if the group is created via plugin.\n */\n if (group.action === CmsImportAction.CODE) {\n results.push({\n action: group.action,\n group: group.group,\n imported: true\n });\n continue;\n }\n /**\n * Update the group.\n */\n //\n else if (group.action === CmsImportAction.UPDATE) {\n try {\n const result = await context.cms.updateGroup(group.group.id, {\n ...group.group,\n description: group.group.description || undefined\n });\n results.push({\n action: group.action,\n group: {\n ...result\n },\n imported: true\n });\n } catch (ex) {\n results.push({\n action: group.action,\n group: group.group,\n imported: false,\n error: {\n message: ex.message,\n code: ex.code || \"UPDATE_GROUP_ERROR\",\n data: {\n ...ex.data,\n group\n }\n }\n });\n }\n continue;\n }\n /**\n * Create the group\n */\n //\n try {\n const result = await context.cms.createGroup(group.group);\n results.push({\n action: group.action,\n group: {\n ...result\n },\n imported: true\n });\n } catch (ex) {\n results.push({\n action: group.action,\n group: group.group,\n imported: false,\n error: {\n message: ex.message,\n code: ex.code || \"CREATE_GROUP_ERROR\",\n data: {\n ...ex.data,\n group\n }\n }\n });\n }\n }\n\n return results;\n};\n"],"mappings":"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"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.importModels = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
7
  var _types = require("../../types");
10
8
  const importModels = async params => {
11
9
  const {
@@ -75,9 +73,10 @@ const importModels = async params => {
75
73
  const result = await context.cms.updateModel(model.model.modelId, model.model);
76
74
  results.push({
77
75
  action: model.action,
78
- model: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, result), {}, {
76
+ model: {
77
+ ...result,
79
78
  group: group.id
80
- }),
79
+ },
81
80
  related: model.related,
82
81
  imported: true
83
82
  });
@@ -90,9 +89,10 @@ const importModels = async params => {
90
89
  error: {
91
90
  message: ex.message,
92
91
  code: ex.code || "UPDATE_MODEL_ERROR",
93
- data: (0, _objectSpread2.default)({
94
- model: model.model
95
- }, ex.data)
92
+ data: {
93
+ model: model.model,
94
+ ...ex.data
95
+ }
96
96
  }
97
97
  });
98
98
  }
@@ -105,9 +105,10 @@ const importModels = async params => {
105
105
  const result = await context.cms.createModel(model.model);
106
106
  results.push({
107
107
  action: model.action,
108
- model: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, result), {}, {
108
+ model: {
109
+ ...result,
109
110
  group: group.id
110
- }),
111
+ },
111
112
  related: model.related,
112
113
  imported: true
113
114
  });
@@ -120,9 +121,10 @@ const importModels = async params => {
120
121
  error: {
121
122
  message: ex.message,
122
123
  code: ex.code || "CREATE_MODEL_ERROR",
123
- data: (0, _objectSpread2.default)({
124
- model: model.model
125
- }, ex.data)
124
+ data: {
125
+ model: model.model,
126
+ ...ex.data
127
+ }
126
128
  }
127
129
  });
128
130
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","importModels","params","context","models","groups","cms","listGroups","results","model","group","find","id","push","action","related","imported","error","message","code","data","CmsImportAction","NONE","CODE","UPDATE","result","updateModel","modelId","_objectSpread2","default","ex","createModel","exports"],"sources":["importModels.ts"],"sourcesContent":["import { CmsContext } from \"~/types\";\nimport { CmsImportAction, CmsModelImportResult, ValidCmsModelResult } from \"~/export/types\";\n\ninterface Params {\n context: CmsContext;\n models: ValidCmsModelResult[];\n}\n\nexport const importModels = async (params: Params) => {\n const { context, models } = params;\n\n const groups = await context.cms.listGroups();\n\n const results: CmsModelImportResult[] = [];\n\n for (const model of models) {\n /**\n * There is a possibility that group does not exist.\n */\n const group = groups.find(group => {\n return group.id === model.model.group;\n });\n if (!group) {\n results.push({\n action: model.action,\n model: model.model,\n related: model.related,\n imported: false,\n error: {\n message: `Group \"${model.model.group}\" does not exist.`,\n code: \"GROUP_NOT_FOUND\",\n data: {\n model\n }\n }\n });\n continue;\n }\n /**\n * No update action or there is a validation error.\n */\n if (model.action === CmsImportAction.NONE || model.error) {\n results.push({\n action: model.action,\n model: model.model,\n related: model.related,\n imported: false,\n error: model.error || {\n message: \"No action to be ran on the model.\",\n code: \"NO_ACTION\"\n }\n });\n continue;\n }\n /**\n * Cannot update a model if it is created via plugin.\n */\n if (model.action === CmsImportAction.CODE) {\n results.push({\n action: model.action,\n model: model.model,\n related: model.related,\n imported: true\n });\n continue;\n }\n\n /**\n * Update the model\n */\n //\n if (model.action === CmsImportAction.UPDATE) {\n try {\n const result = await context.cms.updateModel(model.model.modelId, model.model);\n results.push({\n action: model.action,\n model: {\n ...result,\n group: group.id\n },\n related: model.related,\n imported: true\n });\n } catch (ex) {\n results.push({\n action: model.action,\n model: model.model,\n imported: false,\n related: model.related,\n error: {\n message: ex.message,\n code: ex.code || \"UPDATE_MODEL_ERROR\",\n data: {\n model: model.model,\n ...ex.data\n }\n }\n });\n }\n continue;\n }\n /**\n * Create a new model.\n */\n try {\n const result = await context.cms.createModel(model.model);\n results.push({\n action: model.action,\n model: {\n ...result,\n group: group.id\n },\n related: model.related,\n imported: true\n });\n } catch (ex) {\n results.push({\n action: model.action,\n model: model.model,\n imported: false,\n related: model.related,\n error: {\n message: ex.message,\n code: ex.code || \"CREATE_MODEL_ERROR\",\n data: {\n model: model.model,\n ...ex.data\n }\n }\n });\n }\n }\n\n return results;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_types","require","importModels","params","context","models","groups","cms","listGroups","results","model","group","find","id","push","action","related","imported","error","message","code","data","CmsImportAction","NONE","CODE","UPDATE","result","updateModel","modelId","ex","createModel","exports"],"sources":["importModels.ts"],"sourcesContent":["import { CmsContext } from \"~/types\";\nimport { CmsImportAction, CmsModelImportResult, ValidCmsModelResult } from \"~/export/types\";\n\ninterface Params {\n context: CmsContext;\n models: ValidCmsModelResult[];\n}\n\nexport const importModels = async (params: Params) => {\n const { context, models } = params;\n\n const groups = await context.cms.listGroups();\n\n const results: CmsModelImportResult[] = [];\n\n for (const model of models) {\n /**\n * There is a possibility that group does not exist.\n */\n const group = groups.find(group => {\n return group.id === model.model.group;\n });\n if (!group) {\n results.push({\n action: model.action,\n model: model.model,\n related: model.related,\n imported: false,\n error: {\n message: `Group \"${model.model.group}\" does not exist.`,\n code: \"GROUP_NOT_FOUND\",\n data: {\n model\n }\n }\n });\n continue;\n }\n /**\n * No update action or there is a validation error.\n */\n if (model.action === CmsImportAction.NONE || model.error) {\n results.push({\n action: model.action,\n model: model.model,\n related: model.related,\n imported: false,\n error: model.error || {\n message: \"No action to be ran on the model.\",\n code: \"NO_ACTION\"\n }\n });\n continue;\n }\n /**\n * Cannot update a model if it is created via plugin.\n */\n if (model.action === CmsImportAction.CODE) {\n results.push({\n action: model.action,\n model: model.model,\n related: model.related,\n imported: true\n });\n continue;\n }\n\n /**\n * Update the model\n */\n //\n if (model.action === CmsImportAction.UPDATE) {\n try {\n const result = await context.cms.updateModel(model.model.modelId, model.model);\n results.push({\n action: model.action,\n model: {\n ...result,\n group: group.id\n },\n related: model.related,\n imported: true\n });\n } catch (ex) {\n results.push({\n action: model.action,\n model: model.model,\n imported: false,\n related: model.related,\n error: {\n message: ex.message,\n code: ex.code || \"UPDATE_MODEL_ERROR\",\n data: {\n model: model.model,\n ...ex.data\n }\n }\n });\n }\n continue;\n }\n /**\n * Create a new model.\n */\n try {\n const result = await context.cms.createModel(model.model);\n results.push({\n action: model.action,\n model: {\n ...result,\n group: group.id\n },\n related: model.related,\n imported: true\n });\n } catch (ex) {\n results.push({\n action: model.action,\n model: model.model,\n imported: false,\n related: model.related,\n error: {\n message: ex.message,\n code: ex.code || \"CREATE_MODEL_ERROR\",\n data: {\n model: model.model,\n ...ex.data\n }\n }\n });\n }\n }\n\n return results;\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAOO,MAAMC,YAAY,GAAG,MAAOC,MAAc,IAAK;EAClD,MAAM;IAAEC,OAAO;IAAEC;EAAO,CAAC,GAAGF,MAAM;EAElC,MAAMG,MAAM,GAAG,MAAMF,OAAO,CAACG,GAAG,CAACC,UAAU,CAAC,CAAC;EAE7C,MAAMC,OAA+B,GAAG,EAAE;EAE1C,KAAK,MAAMC,KAAK,IAAIL,MAAM,EAAE;IACxB;AACR;AACA;IACQ,MAAMM,KAAK,GAAGL,MAAM,CAACM,IAAI,CAACD,KAAK,IAAI;MAC/B,OAAOA,KAAK,CAACE,EAAE,KAAKH,KAAK,CAACA,KAAK,CAACC,KAAK;IACzC,CAAC,CAAC;IACF,IAAI,CAACA,KAAK,EAAE;MACRF,OAAO,CAACK,IAAI,CAAC;QACTC,MAAM,EAAEL,KAAK,CAACK,MAAM;QACpBL,KAAK,EAAEA,KAAK,CAACA,KAAK;QAClBM,OAAO,EAAEN,KAAK,CAACM,OAAO;QACtBC,QAAQ,EAAE,KAAK;QACfC,KAAK,EAAE;UACHC,OAAO,EAAG,UAAST,KAAK,CAACA,KAAK,CAACC,KAAM,mBAAkB;UACvDS,IAAI,EAAE,iBAAiB;UACvBC,IAAI,EAAE;YACFX;UACJ;QACJ;MACJ,CAAC,CAAC;MACF;IACJ;IACA;AACR;AACA;IACQ,IAAIA,KAAK,CAACK,MAAM,KAAKO,sBAAe,CAACC,IAAI,IAAIb,KAAK,CAACQ,KAAK,EAAE;MACtDT,OAAO,CAACK,IAAI,CAAC;QACTC,MAAM,EAAEL,KAAK,CAACK,MAAM;QACpBL,KAAK,EAAEA,KAAK,CAACA,KAAK;QAClBM,OAAO,EAAEN,KAAK,CAACM,OAAO;QACtBC,QAAQ,EAAE,KAAK;QACfC,KAAK,EAAER,KAAK,CAACQ,KAAK,IAAI;UAClBC,OAAO,EAAE,mCAAmC;UAC5CC,IAAI,EAAE;QACV;MACJ,CAAC,CAAC;MACF;IACJ;IACA;AACR;AACA;IACQ,IAAIV,KAAK,CAACK,MAAM,KAAKO,sBAAe,CAACE,IAAI,EAAE;MACvCf,OAAO,CAACK,IAAI,CAAC;QACTC,MAAM,EAAEL,KAAK,CAACK,MAAM;QACpBL,KAAK,EAAEA,KAAK,CAACA,KAAK;QAClBM,OAAO,EAAEN,KAAK,CAACM,OAAO;QACtBC,QAAQ,EAAE;MACd,CAAC,CAAC;MACF;IACJ;;IAEA;AACR;AACA;IACQ;IACA,IAAIP,KAAK,CAACK,MAAM,KAAKO,sBAAe,CAACG,MAAM,EAAE;MACzC,IAAI;QACA,MAAMC,MAAM,GAAG,MAAMtB,OAAO,CAACG,GAAG,CAACoB,WAAW,CAACjB,KAAK,CAACA,KAAK,CAACkB,OAAO,EAAElB,KAAK,CAACA,KAAK,CAAC;QAC9ED,OAAO,CAACK,IAAI,CAAC;UACTC,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBL,KAAK,EAAE;YACH,GAAGgB,MAAM;YACTf,KAAK,EAAEA,KAAK,CAACE;UACjB,CAAC;UACDG,OAAO,EAAEN,KAAK,CAACM,OAAO;UACtBC,QAAQ,EAAE;QACd,CAAC,CAAC;MACN,CAAC,CAAC,OAAOY,EAAE,EAAE;QACTpB,OAAO,CAACK,IAAI,CAAC;UACTC,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBL,KAAK,EAAEA,KAAK,CAACA,KAAK;UAClBO,QAAQ,EAAE,KAAK;UACfD,OAAO,EAAEN,KAAK,CAACM,OAAO;UACtBE,KAAK,EAAE;YACHC,OAAO,EAAEU,EAAE,CAACV,OAAO;YACnBC,IAAI,EAAES,EAAE,CAACT,IAAI,IAAI,oBAAoB;YACrCC,IAAI,EAAE;cACFX,KAAK,EAAEA,KAAK,CAACA,KAAK;cAClB,GAAGmB,EAAE,CAACR;YACV;UACJ;QACJ,CAAC,CAAC;MACN;MACA;IACJ;IACA;AACR;AACA;IACQ,IAAI;MACA,MAAMK,MAAM,GAAG,MAAMtB,OAAO,CAACG,GAAG,CAACuB,WAAW,CAACpB,KAAK,CAACA,KAAK,CAAC;MACzDD,OAAO,CAACK,IAAI,CAAC;QACTC,MAAM,EAAEL,KAAK,CAACK,MAAM;QACpBL,KAAK,EAAE;UACH,GAAGgB,MAAM;UACTf,KAAK,EAAEA,KAAK,CAACE;QACjB,CAAC;QACDG,OAAO,EAAEN,KAAK,CAACM,OAAO;QACtBC,QAAQ,EAAE;MACd,CAAC,CAAC;IACN,CAAC,CAAC,OAAOY,EAAE,EAAE;MACTpB,OAAO,CAACK,IAAI,CAAC;QACTC,MAAM,EAAEL,KAAK,CAACK,MAAM;QACpBL,KAAK,EAAEA,KAAK,CAACA,KAAK;QAClBO,QAAQ,EAAE,KAAK;QACfD,OAAO,EAAEN,KAAK,CAACM,OAAO;QACtBE,KAAK,EAAE;UACHC,OAAO,EAAEU,EAAE,CAACV,OAAO;UACnBC,IAAI,EAAES,EAAE,CAACT,IAAI,IAAI,oBAAoB;UACrCC,IAAI,EAAE;YACFX,KAAK,EAAEA,KAAK,CAACA,KAAK;YAClB,GAAGmB,EAAE,CAACR;UACV;QACJ;MACJ,CAAC,CAAC;IACN;EACJ;EAEA,OAAOZ,OAAO;AAClB,CAAC;AAACsB,OAAA,CAAA7B,YAAA,GAAAA,YAAA"}
@@ -84,15 +84,21 @@ const validateGroups = async params => {
84
84
  }
85
85
  };
86
86
  }
87
- const groupWithSlugExists = groups.some(g => g.slug === data.slug);
87
+ const groupWithSlugExists = groups.find(g => g.slug === data.slug);
88
88
  if (groupWithSlugExists) {
89
+ /**
90
+ * If group with given slug already exists, we will map the ID to the existing group.
91
+ *
92
+ * We will also point all models from the imported group to the existing group.
93
+ * We will not update the existing group.
94
+ */
89
95
  return {
90
- group: data,
91
- action: _types.CmsImportAction.NONE,
92
- error: {
93
- message: `Group with slug "${data.slug}" already exists. Cannot update because the ID is different.`,
94
- code: "GROUP_SLUG_EXISTS"
95
- }
96
+ group: {
97
+ ...data,
98
+ id: groupWithSlugExists.id
99
+ },
100
+ target: data.id,
101
+ action: _types.CmsImportAction.NONE
96
102
  };
97
103
  }
98
104
  return {