@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.6e5425ee89

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 (290) hide show
  1. package/context.js +3 -22
  2. package/context.js.map +1 -1
  3. package/crud/contentEntry/afterDelete.d.ts +2 -2
  4. package/crud/contentEntry/afterDelete.js +2 -7
  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 -5
  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 -5
  11. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  12. package/crud/contentEntry/entryDataValidation.js +4 -47
  13. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  14. package/crud/contentEntry/markLockedFields.js +8 -35
  15. package/crud/contentEntry/markLockedFields.js.map +1 -1
  16. package/crud/contentEntry/referenceFieldsMapping.js +8 -68
  17. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  18. package/crud/contentEntry.crud.d.ts +0 -2
  19. package/crud/contentEntry.crud.js +201 -361
  20. package/crud/contentEntry.crud.js.map +1 -1
  21. package/crud/contentModel/afterCreate.d.ts +3 -3
  22. package/crud/contentModel/afterCreate.js +5 -7
  23. package/crud/contentModel/afterCreate.js.map +1 -1
  24. package/crud/contentModel/afterCreateFrom.d.ts +3 -3
  25. package/crud/contentModel/afterCreateFrom.js +5 -7
  26. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  27. package/crud/contentModel/afterDelete.d.ts +3 -3
  28. package/crud/contentModel/afterDelete.js +5 -7
  29. package/crud/contentModel/afterDelete.js.map +1 -1
  30. package/crud/contentModel/afterUpdate.d.ts +3 -3
  31. package/crud/contentModel/afterUpdate.js +5 -7
  32. package/crud/contentModel/afterUpdate.js.map +1 -1
  33. package/crud/contentModel/beforeCreate.d.ts +4 -4
  34. package/crud/contentModel/beforeCreate.js +14 -42
  35. package/crud/contentModel/beforeCreate.js.map +1 -1
  36. package/crud/contentModel/beforeDelete.d.ts +3 -3
  37. package/crud/contentModel/beforeDelete.js +6 -16
  38. package/crud/contentModel/beforeDelete.js.map +1 -1
  39. package/crud/contentModel/beforeUpdate.d.ts +3 -3
  40. package/crud/contentModel/beforeUpdate.js +5 -10
  41. package/crud/contentModel/beforeUpdate.js.map +1 -1
  42. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  43. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  44. package/crud/contentModel/createFieldModels.js +0 -6
  45. package/crud/contentModel/createFieldModels.js.map +1 -1
  46. package/crud/contentModel/createFieldStorageId.js +0 -2
  47. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  48. package/crud/contentModel/fieldIdValidation.js +0 -5
  49. package/crud/contentModel/fieldIdValidation.js.map +1 -1
  50. package/crud/contentModel/idValidation.js +0 -5
  51. package/crud/contentModel/idValidation.js.map +1 -1
  52. package/crud/contentModel/models.js +1 -8
  53. package/crud/contentModel/models.js.map +1 -1
  54. package/crud/contentModel/systemFields.js.map +1 -1
  55. package/crud/contentModel/validateLayout.js +0 -8
  56. package/crud/contentModel/validateLayout.js.map +1 -1
  57. package/crud/contentModel/validateModel.js +1 -9
  58. package/crud/contentModel/validateModel.js.map +1 -1
  59. package/crud/contentModel/validateModelFields.js +11 -67
  60. package/crud/contentModel/validateModelFields.js.map +1 -1
  61. package/crud/contentModel.crud.js +84 -145
  62. package/crud/contentModel.crud.js.map +1 -1
  63. package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
  64. package/crud/contentModelGroup/beforeCreate.js +3 -15
  65. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  66. package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
  67. package/crud/contentModelGroup/beforeDelete.js +3 -11
  68. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  69. package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
  70. package/crud/contentModelGroup/beforeUpdate.js +2 -7
  71. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  72. package/crud/contentModelGroup.crud.js +59 -76
  73. package/crud/contentModelGroup.crud.js.map +1 -1
  74. package/crud/index.js +3 -23
  75. package/crud/index.js.map +1 -1
  76. package/crud/settings.crud.js +3 -20
  77. package/crud/settings.crud.js.map +1 -1
  78. package/crud/system.crud.js +61 -84
  79. package/crud/system.crud.js.map +1 -1
  80. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -14
  81. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  82. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +16 -71
  83. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  84. package/fieldConverters/index.js +0 -4
  85. package/fieldConverters/index.js.map +1 -1
  86. package/graphql/buildSchemaPlugins.js +5 -9
  87. package/graphql/buildSchemaPlugins.js.map +1 -1
  88. package/graphql/graphQLHandlerFactory.js +4 -29
  89. package/graphql/graphQLHandlerFactory.js.map +1 -1
  90. package/graphql/index.js +1 -8
  91. package/graphql/index.js.map +1 -1
  92. package/graphql/schema/baseContentSchema.js +6 -18
  93. package/graphql/schema/baseContentSchema.js.map +1 -1
  94. package/graphql/schema/contentEntries.js +3 -43
  95. package/graphql/schema/contentEntries.js.map +1 -1
  96. package/graphql/schema/contentModelGroups.js +2 -19
  97. package/graphql/schema/contentModelGroups.js.map +1 -1
  98. package/graphql/schema/contentModels.js +20 -17
  99. package/graphql/schema/contentModels.js.map +1 -1
  100. package/graphql/schema/createFieldResolvers.js +7 -31
  101. package/graphql/schema/createFieldResolvers.js.map +1 -1
  102. package/graphql/schema/createManageResolvers.js +4 -44
  103. package/graphql/schema/createManageResolvers.js.map +1 -1
  104. package/graphql/schema/createManageSDL.js +4 -21
  105. package/graphql/schema/createManageSDL.js.map +1 -1
  106. package/graphql/schema/createPreviewResolvers.js +3 -17
  107. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  108. package/graphql/schema/createReadResolvers.js +3 -17
  109. package/graphql/schema/createReadResolvers.js.map +1 -1
  110. package/graphql/schema/createReadSDL.js +0 -10
  111. package/graphql/schema/createReadSDL.js.map +1 -1
  112. package/graphql/schema/resolvers/commonFieldResolvers.js +0 -2
  113. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  114. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  115. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  116. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  117. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  118. package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
  119. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  120. package/graphql/schema/resolvers/manage/resolveGet.js +5 -25
  121. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  122. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  123. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  124. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  125. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  126. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  127. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  128. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  129. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  130. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  131. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  132. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  133. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  134. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  135. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  136. package/graphql/schema/resolvers/preview/resolveGet.js +3 -15
  137. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  138. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  139. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  140. package/graphql/schema/resolvers/read/resolveGet.js +3 -15
  141. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  142. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  143. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  144. package/graphql/schema/schemaPlugins.js +5 -19
  145. package/graphql/schema/schemaPlugins.js.map +1 -1
  146. package/graphql/system.js +1 -14
  147. package/graphql/system.js.map +1 -1
  148. package/graphqlFields/boolean.js +0 -12
  149. package/graphqlFields/boolean.js.map +1 -1
  150. package/graphqlFields/datetime.js +0 -17
  151. package/graphqlFields/datetime.js.map +1 -1
  152. package/graphqlFields/file.js +0 -8
  153. package/graphqlFields/file.js.map +1 -1
  154. package/graphqlFields/helpers.js +0 -10
  155. package/graphqlFields/helpers.js.map +1 -1
  156. package/graphqlFields/index.js +0 -11
  157. package/graphqlFields/index.js.map +1 -1
  158. package/graphqlFields/longText.js +0 -10
  159. package/graphqlFields/longText.js.map +1 -1
  160. package/graphqlFields/number.js +0 -12
  161. package/graphqlFields/number.js.map +1 -1
  162. package/graphqlFields/object.js +7 -37
  163. package/graphqlFields/object.js.map +1 -1
  164. package/graphqlFields/ref.js +21 -59
  165. package/graphqlFields/ref.js.map +1 -1
  166. package/graphqlFields/richText.js +0 -9
  167. package/graphqlFields/richText.js.map +1 -1
  168. package/graphqlFields/text.js +0 -11
  169. package/graphqlFields/text.js.map +1 -1
  170. package/index.js +0 -19
  171. package/index.js.map +1 -1
  172. package/modelManager/DefaultCmsModelManager.d.ts +7 -7
  173. package/modelManager/DefaultCmsModelManager.js +1 -17
  174. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  175. package/modelManager/index.js +0 -4
  176. package/modelManager/index.js.map +1 -1
  177. package/package.json +27 -28
  178. package/parameters/context.js +0 -4
  179. package/parameters/context.js.map +1 -1
  180. package/parameters/header.js +1 -12
  181. package/parameters/header.js.map +1 -1
  182. package/parameters/index.js +0 -8
  183. package/parameters/index.js.map +1 -1
  184. package/parameters/manual.js +7 -15
  185. package/parameters/manual.js.map +1 -1
  186. package/parameters/path.js +1 -12
  187. package/parameters/path.js.map +1 -1
  188. package/plugins/CmsGroupPlugin.js +1 -9
  189. package/plugins/CmsGroupPlugin.js.map +1 -1
  190. package/plugins/CmsModelFieldConverterPlugin.js +1 -6
  191. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  192. package/plugins/CmsModelPlugin.d.ts +6 -2
  193. package/plugins/CmsModelPlugin.js +18 -49
  194. package/plugins/CmsModelPlugin.js.map +1 -1
  195. package/plugins/CmsParametersPlugin.js +1 -8
  196. package/plugins/CmsParametersPlugin.js.map +1 -1
  197. package/plugins/StorageTransformPlugin.js +1 -10
  198. package/plugins/StorageTransformPlugin.js.map +1 -1
  199. package/plugins/index.js +0 -10
  200. package/plugins/index.js.map +1 -1
  201. package/storage/default.js +0 -3
  202. package/storage/default.js.map +1 -1
  203. package/storage/object.js +3 -25
  204. package/storage/object.js.map +1 -1
  205. package/types.d.ts +267 -126
  206. package/types.js +0 -64
  207. package/types.js.map +1 -1
  208. package/upgrades/5.33.0/index.js +8 -35
  209. package/upgrades/5.33.0/index.js.map +1 -1
  210. package/upgrades/index.js +0 -3
  211. package/upgrades/index.js.map +1 -1
  212. package/utils/access.js +11 -25
  213. package/utils/access.js.map +1 -1
  214. package/utils/converters/Converter.js +1 -14
  215. package/utils/converters/Converter.js.map +1 -1
  216. package/utils/converters/ConverterCollection.d.ts +7 -0
  217. package/utils/converters/ConverterCollection.js +31 -30
  218. package/utils/converters/ConverterCollection.js.map +1 -1
  219. package/utils/converters/valueKeyStorageConverter.js +3 -33
  220. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  221. package/utils/createTypeName.js +1 -9
  222. package/utils/createTypeName.js.map +1 -1
  223. package/utils/entryStorage.js +13 -33
  224. package/utils/entryStorage.js.map +1 -1
  225. package/utils/filterAsync.js +0 -5
  226. package/utils/filterAsync.js.map +1 -1
  227. package/utils/filterModelFields.js +8 -18
  228. package/utils/filterModelFields.js.map +1 -1
  229. package/utils/getEntryTitle.js +0 -9
  230. package/utils/getEntryTitle.js.map +1 -1
  231. package/utils/getSchemaFromFieldPlugins.js +2 -6
  232. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  233. package/utils/ownership.js +0 -8
  234. package/utils/ownership.js.map +1 -1
  235. package/utils/permissions.js +7 -26
  236. package/utils/permissions.js.map +1 -1
  237. package/utils/pluralizedTypeName.js +1 -7
  238. package/utils/pluralizedTypeName.js.map +1 -1
  239. package/utils/renderFields.js +0 -8
  240. package/utils/renderFields.js.map +1 -1
  241. package/utils/renderGetFilterFields.js +0 -11
  242. package/utils/renderGetFilterFields.js.map +1 -1
  243. package/utils/renderInputFields.js +0 -8
  244. package/utils/renderInputFields.js.map +1 -1
  245. package/utils/renderListFilterFields.js +7 -8
  246. package/utils/renderListFilterFields.js.map +1 -1
  247. package/utils/renderSortEnum.js +0 -7
  248. package/utils/renderSortEnum.js.map +1 -1
  249. package/utils/toSlug.js +1 -5
  250. package/utils/toSlug.js.map +1 -1
  251. package/validators/dateGte.js +0 -7
  252. package/validators/dateGte.js.map +1 -1
  253. package/validators/dateLte.js +0 -7
  254. package/validators/dateLte.js.map +1 -1
  255. package/validators/gte.js +0 -8
  256. package/validators/gte.js.map +1 -1
  257. package/validators/in.js +0 -8
  258. package/validators/in.js.map +1 -1
  259. package/validators/index.js +0 -15
  260. package/validators/index.js.map +1 -1
  261. package/validators/lte.js +0 -8
  262. package/validators/lte.js.map +1 -1
  263. package/validators/maxLength.js +0 -8
  264. package/validators/maxLength.js.map +1 -1
  265. package/validators/minLength.js +0 -8
  266. package/validators/minLength.js.map +1 -1
  267. package/validators/pattern.js +0 -9
  268. package/validators/pattern.js.map +1 -1
  269. package/validators/patternPlugins/email.js +0 -2
  270. package/validators/patternPlugins/email.js.map +1 -1
  271. package/validators/patternPlugins/index.js +0 -8
  272. package/validators/patternPlugins/index.js.map +1 -1
  273. package/validators/patternPlugins/lowerCase.js +0 -2
  274. package/validators/patternPlugins/lowerCase.js.map +1 -1
  275. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  276. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  277. package/validators/patternPlugins/upperCase.js +0 -2
  278. package/validators/patternPlugins/upperCase.js.map +1 -1
  279. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  280. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  281. package/validators/patternPlugins/url.js +0 -2
  282. package/validators/patternPlugins/url.js.map +1 -1
  283. package/validators/required.js +0 -5
  284. package/validators/required.js.map +1 -1
  285. package/validators/timeGte.js +0 -8
  286. package/validators/timeGte.js.map +1 -1
  287. package/validators/timeLte.js +0 -8
  288. package/validators/timeLte.js.map +1 -1
  289. package/validators/unique.js +1 -8
  290. package/validators/unique.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["markLockedFields","params","model","context","plugins","byType","CmsModelPlugin","type","find","plugin","contentModel","modelId","cmsLockedFieldPlugins","existingLockedFields","lockedFields","field","fields","alreadyLocked","some","lockedField","fieldId","storageId","lockedFieldData","lockedFieldPlugins","filter","pl","fieldType","getLockedFieldData","data","push","multipleValues","length","newLockedFields","concat","cms","updateModelDirect","original","ex","WebinyError","markUnlockedFields"],"sources":["markLockedFields.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, CmsContext, CmsModelLockedFieldPlugin, LockedField } from \"~/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\n\ninterface MarkLockedFieldsParams {\n model: CmsModel;\n entry: CmsEntry;\n context: CmsContext;\n}\nexport const markLockedFields = async (params: MarkLockedFieldsParams): Promise<void> => {\n const { model, context } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n const cmsLockedFieldPlugins =\n context.plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n const existingLockedFields = model.lockedFields || [];\n const lockedFields: LockedField[] = [];\n for (const field of model.fields) {\n const alreadyLocked = existingLockedFields.some(\n lockedField => lockedField.fieldId === field.storageId\n );\n if (alreadyLocked) {\n continue;\n }\n\n let lockedFieldData = {};\n\n const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === field.type);\n for (const plugin of lockedFieldPlugins) {\n if (typeof plugin.getLockedFieldData !== \"function\") {\n continue;\n }\n const data = plugin.getLockedFieldData({\n field\n });\n lockedFieldData = { ...lockedFieldData, ...data };\n }\n\n lockedFields.push({\n fieldId: field.storageId,\n multipleValues: !!field.multipleValues,\n type: field.type,\n ...lockedFieldData\n });\n }\n // no need to update anything if no locked fields were added\n if (lockedFields.length === 0) {\n return;\n }\n\n const newLockedFields = existingLockedFields.concat(lockedFields);\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: newLockedFields\n }\n });\n model.lockedFields = newLockedFields;\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with new locked fields.`,\n \"MODEL_LOCKED_FIELDS_UPDATE_FAILED\",\n ex\n );\n }\n};\n\nexport interface MarkFieldsUnlockedParams {\n context: CmsContext;\n model: CmsModel;\n}\nexport const markUnlockedFields = async (params: MarkFieldsUnlockedParams) => {\n const { context, model } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: []\n }\n });\n model.lockedFields = [];\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with unlocked fields.`,\n \"MODEL_UNLOCKED_FIELDS_UPDATE_FAILED\",\n ex\n );\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["markLockedFields","params","model","context","plugins","byType","CmsModelPlugin","type","find","plugin","contentModel","modelId","cmsLockedFieldPlugins","existingLockedFields","lockedFields","field","fields","alreadyLocked","some","lockedField","fieldId","storageId","lockedFieldData","lockedFieldPlugins","filter","pl","fieldType","getLockedFieldData","data","push","multipleValues","length","newLockedFields","concat","cms","updateModelDirect","original","ex","WebinyError","markUnlockedFields"],"sources":["markLockedFields.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, CmsContext, CmsModelLockedFieldPlugin, LockedField } from \"~/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\n\ninterface MarkLockedFieldsParams {\n model: CmsModel;\n entry: CmsEntry;\n context: CmsContext;\n}\nexport const markLockedFields = async (params: MarkLockedFieldsParams): Promise<void> => {\n const { model, context } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n const cmsLockedFieldPlugins =\n context.plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n const existingLockedFields = model.lockedFields || [];\n const lockedFields: LockedField[] = [];\n for (const field of model.fields) {\n const alreadyLocked = existingLockedFields.some(\n lockedField => lockedField.fieldId === field.storageId\n );\n if (alreadyLocked) {\n continue;\n }\n\n let lockedFieldData = {};\n\n const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === field.type);\n for (const plugin of lockedFieldPlugins) {\n if (typeof plugin.getLockedFieldData !== \"function\") {\n continue;\n }\n const data = plugin.getLockedFieldData({\n field\n });\n lockedFieldData = { ...lockedFieldData, ...data };\n }\n\n lockedFields.push({\n fieldId: field.storageId,\n multipleValues: !!field.multipleValues,\n type: field.type,\n ...lockedFieldData\n });\n }\n // no need to update anything if no locked fields were added\n if (lockedFields.length === 0) {\n return;\n }\n\n const newLockedFields = existingLockedFields.concat(lockedFields);\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: newLockedFields\n }\n });\n model.lockedFields = newLockedFields;\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with new locked fields.`,\n \"MODEL_LOCKED_FIELDS_UPDATE_FAILED\",\n ex\n );\n }\n};\n\nexport interface MarkFieldsUnlockedParams {\n context: CmsContext;\n model: CmsModel;\n}\nexport const markUnlockedFields = async (params: MarkFieldsUnlockedParams) => {\n const { context, model } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: []\n }\n });\n model.lockedFields = [];\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with unlocked fields.`,\n \"MODEL_UNLOCKED_FIELDS_UPDATE_FAILED\",\n ex\n );\n }\n};\n"],"mappings":"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"}
@@ -1,24 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.referenceFieldsMapping = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
12
9
  var _error = _interopRequireDefault(require("@webiny/error"));
13
-
14
10
  var _dotProp = _interopRequireDefault(require("dot-prop"));
15
-
16
11
  var _utils = require("@webiny/utils");
17
-
18
- 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; }
19
-
20
- 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; }
21
-
22
12
  const buildReferenceFieldPaths = params => {
23
13
  const {
24
14
  fields,
@@ -29,75 +19,58 @@ const buildReferenceFieldPaths = params => {
29
19
  const isMultipleValues = Array.isArray(input);
30
20
  return fields.filter(field => ["object", "ref"].includes(field.type)).reduce((collection, field) => {
31
21
  var _field$settings2;
32
-
33
22
  /**
34
23
  * First we check the ref field
35
24
  */
36
25
  if (field.type === "ref") {
37
26
  const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(".")}.` : "";
38
-
39
27
  if (field.multipleValues) {
40
28
  const inputValue = _dotProp.default.get(input, `${field.fieldId}`, []);
41
-
42
29
  if (Array.isArray(inputValue) === false) {
43
30
  return collection;
44
31
  }
45
-
46
32
  for (const key in inputValue) {
47
33
  const path = `${parentPathsValue}${field.fieldId}.${key}`;
48
34
  collection.push(path);
49
35
  }
50
-
51
36
  return collection;
52
37
  }
53
-
54
38
  if (isMultipleValues) {
55
39
  for (const key in input) {
56
40
  const path = `${parentPathsValue}${key}.${field.fieldId}`;
57
41
  collection.push(path);
58
42
  }
59
-
60
43
  return collection;
61
44
  }
62
-
63
45
  collection.push(`${parentPathsValue}${field.fieldId}`);
64
46
  return collection;
65
47
  }
66
48
  /**
67
49
  * Then we move onto the object field
68
50
  */
69
-
70
-
71
51
  const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(".")}.` : "";
72
52
  /**
73
53
  * This is if received input is array. We need to map key with fieldId at this point.
74
54
  */
75
-
76
55
  if (isMultipleValues) {
77
56
  for (const key in input) {
78
57
  const path = `${parentPathsValue}${key}.${field.fieldId}`;
79
58
  collection.push(path);
80
59
  }
81
-
82
60
  return collection;
83
61
  }
84
-
85
62
  const objFieldPath = `${field.fieldId}`;
86
-
87
63
  const objFieldInputValue = _dotProp.default.get(input, objFieldPath, []);
64
+
88
65
  /**
89
66
  * If field is multiple values one, we need to go through the input and use the existing keys.
90
67
  */
91
-
92
-
93
68
  if (field.multipleValues) {
94
69
  if (Array.isArray(objFieldInputValue) === false) {
95
70
  return collection;
96
71
  }
97
-
98
72
  for (const key in objFieldInputValue) {
99
73
  var _field$settings;
100
-
101
74
  const result = buildReferenceFieldPaths({
102
75
  fields: ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [],
103
76
  input: objFieldInputValue[key],
@@ -105,14 +78,12 @@ const buildReferenceFieldPaths = params => {
105
78
  });
106
79
  collection.push(...result);
107
80
  }
108
-
109
81
  return collection;
110
82
  }
83
+
111
84
  /**
112
85
  * Single value reference field.
113
86
  */
114
-
115
-
116
87
  const results = buildReferenceFieldPaths({
117
88
  fields: ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.fields) || [],
118
89
  input: objFieldInputValue,
@@ -121,7 +92,6 @@ const buildReferenceFieldPaths = params => {
121
92
  return collection.concat(results);
122
93
  }, []);
123
94
  };
124
-
125
95
  const getReferenceFieldValue = ref => {
126
96
  if (!ref) {
127
97
  return {
@@ -129,13 +99,11 @@ const getReferenceFieldValue = ref => {
129
99
  modelId: null
130
100
  };
131
101
  }
132
-
133
102
  return {
134
103
  id: (ref.id || ref.entryId || "").trim() || null,
135
104
  modelId: (ref.modelId || "").trim() || null
136
105
  };
137
106
  };
138
-
139
107
  const referenceFieldsMapping = async params => {
140
108
  const {
141
109
  context,
@@ -143,80 +111,62 @@ const referenceFieldsMapping = async params => {
143
111
  input,
144
112
  validateEntries = false
145
113
  } = params;
146
-
147
- let output = _objectSpread({}, input);
148
-
114
+ let output = (0, _objectSpread2.default)({}, input);
149
115
  const referenceFieldPaths = buildReferenceFieldPaths({
150
116
  fields: model.fields,
151
117
  input,
152
118
  parentPaths: []
153
119
  });
154
-
155
120
  if (referenceFieldPaths.length === 0) {
156
121
  return output;
157
122
  }
158
-
159
123
  const referencesByModel = {};
160
124
  const pathsByReferenceId = {};
161
-
162
125
  for (const path of referenceFieldPaths) {
163
126
  const ref = _dotProp.default.get(output, path);
164
-
165
127
  const {
166
128
  id,
167
129
  modelId
168
130
  } = getReferenceFieldValue(ref);
169
-
170
131
  if (!id || !modelId) {
171
132
  continue;
172
133
  }
173
-
174
134
  if (!referencesByModel[modelId]) {
175
135
  referencesByModel[modelId] = [];
176
136
  }
177
-
178
137
  referencesByModel[modelId].push(id);
179
-
180
138
  if (!pathsByReferenceId[id]) {
181
139
  pathsByReferenceId[id] = [];
182
140
  }
183
-
184
141
  pathsByReferenceId[id].push(path);
185
142
  }
143
+
186
144
  /**
187
145
  * Again, no point in going further.
188
146
  */
189
-
190
-
191
147
  if (Object.keys(referencesByModel).length === 0) {
192
148
  return output;
193
149
  }
194
150
  /**
195
151
  * Load all models and use only those that are used in reference.
196
152
  */
197
-
198
-
199
153
  const models = (await context.cms.listModels()).filter(model => {
200
154
  const entries = referencesByModel[model.modelId];
201
-
202
155
  if (Array.isArray(entries) === false || entries.length === 0) {
203
156
  return false;
204
157
  }
205
-
206
158
  return true;
207
159
  });
208
160
  /**
209
161
  * Check for any model existence, just in case.
210
162
  */
211
-
212
163
  if (models.length === 0) {
213
164
  return output;
214
165
  }
166
+
215
167
  /**
216
168
  * Load all the entries by their ID
217
169
  */
218
-
219
-
220
170
  const promises = models.map(model => {
221
171
  return context.cms.getEntriesByIds(model, referencesByModel[model.modelId]);
222
172
  });
@@ -229,16 +179,13 @@ const referenceFieldsMapping = async params => {
229
179
  modelId: entry.modelId
230
180
  };
231
181
  }
232
-
233
182
  return collection;
234
183
  }, {});
235
184
  /**
236
185
  * Verify that all referenced entries actually exist.
237
186
  */
238
-
239
187
  for (const modelId in referencesByModel) {
240
188
  const entries = referencesByModel[modelId];
241
-
242
189
  for (const id of entries) {
243
190
  if (records[id]) {
244
191
  continue;
@@ -248,7 +195,6 @@ const referenceFieldsMapping = async params => {
248
195
  model: modelId
249
196
  });
250
197
  }
251
-
252
198
  const {
253
199
  id: entryId
254
200
  } = (0, _utils.parseIdentifier)(id);
@@ -259,15 +205,13 @@ const referenceFieldsMapping = async params => {
259
205
  };
260
206
  }
261
207
  }
208
+
262
209
  /**
263
210
  * In the end, assign the entryId, id and model values to the output.
264
211
  */
265
-
266
-
267
212
  for (const id in pathsByReferenceId) {
268
213
  const entry = records[id];
269
214
  const paths = pathsByReferenceId[id];
270
-
271
215
  if (!entry) {
272
216
  if (validateEntries === true) {
273
217
  throw new _error.default("Missing entry in records.", "ENTRY_ERROR", {
@@ -275,10 +219,8 @@ const referenceFieldsMapping = async params => {
275
219
  paths
276
220
  });
277
221
  }
278
-
279
222
  continue;
280
223
  }
281
-
282
224
  for (const path of paths) {
283
225
  output = _dotProp.default.set(output, path, {
284
226
  id: entry.id,
@@ -287,8 +229,6 @@ const referenceFieldsMapping = async params => {
287
229
  });
288
230
  }
289
231
  }
290
-
291
232
  return output;
292
233
  };
293
-
294
234
  exports.referenceFieldsMapping = referenceFieldsMapping;
@@ -1 +1 @@
1
- {"version":3,"names":["buildReferenceFieldPaths","params","fields","parentPaths","initialParentPaths","input","isMultipleValues","Array","isArray","filter","field","includes","type","reduce","collection","parentPathsValue","length","join","multipleValues","inputValue","dotProp","get","fieldId","key","path","push","objFieldPath","objFieldInputValue","result","settings","concat","results","getReferenceFieldValue","ref","id","modelId","entryId","trim","referenceFieldsMapping","context","model","validateEntries","output","referenceFieldPaths","referencesByModel","pathsByReferenceId","Object","keys","models","cms","listModels","entries","promises","map","getEntriesByIds","Promise","all","records","entry","WebinyError","parseIdentifier","paths","set"],"sources":["referenceFieldsMapping.ts"],"sourcesContent":["import { CmsContext, CmsModel, CmsModelField } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport dotProp from \"dot-prop\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\ninterface CmsRefEntry {\n id: string;\n entryId: string;\n modelId: string;\n}\n\ninterface ReferenceObject {\n id: string;\n modelId: string;\n}\n\ninterface Params {\n context: CmsContext;\n model: CmsModel;\n input: Record<string, ReferenceObject | ReferenceObject[]>;\n validateEntries?: boolean;\n}\n\ninterface BuildReferenceFieldPaths {\n fields: CmsModelField[];\n parentPaths: string[];\n input: Record<string, any>;\n}\n\nconst buildReferenceFieldPaths = (params: BuildReferenceFieldPaths): string[] => {\n const { fields, parentPaths: initialParentPaths, input } = params;\n\n const parentPaths = [...initialParentPaths];\n\n const isMultipleValues = Array.isArray(input);\n\n return fields\n .filter(field => [\"object\", \"ref\"].includes(field.type))\n .reduce((collection, field) => {\n /**\n * First we check the ref field\n */\n if (field.type === \"ref\") {\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n if (field.multipleValues) {\n const inputValue = dotProp.get(input, `${field.fieldId}`, []);\n if (Array.isArray(inputValue) === false) {\n return collection;\n }\n for (const key in inputValue) {\n const path = `${parentPathsValue}${field.fieldId}.${key}`;\n collection.push(path);\n }\n return collection;\n }\n\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n collection.push(`${parentPathsValue}${field.fieldId}`);\n\n return collection;\n }\n /**\n * Then we move onto the object field\n */\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n /**\n * This is if received input is array. We need to map key with fieldId at this point.\n */\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n const objFieldPath = `${field.fieldId}`;\n const objFieldInputValue = dotProp.get(input, objFieldPath, []);\n\n /**\n * If field is multiple values one, we need to go through the input and use the existing keys.\n */\n if (field.multipleValues) {\n if (Array.isArray(objFieldInputValue) === false) {\n return collection;\n }\n for (const key in objFieldInputValue) {\n const result = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue[key],\n parentPaths: parentPaths.concat([field.fieldId, key])\n });\n collection.push(...result);\n }\n\n return collection;\n }\n\n /**\n * Single value reference field.\n */\n const results = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue,\n parentPaths: parentPaths.concat([field.fieldId])\n });\n\n return collection.concat(results);\n }, [] as string[]);\n};\n\nconst getReferenceFieldValue = (ref: any): { id: string | null; modelId: string | null } => {\n if (!ref) {\n return {\n id: null,\n modelId: null\n };\n }\n return {\n id: (ref.id || ref.entryId || \"\").trim() || null,\n modelId: (ref.modelId || \"\").trim() || null\n };\n};\n\nexport const referenceFieldsMapping = async (params: Params): Promise<Record<string, any>> => {\n const { context, model, input, validateEntries = false } = params;\n\n let output: Record<string, any> = {\n ...input\n };\n\n const referenceFieldPaths = buildReferenceFieldPaths({\n fields: model.fields,\n input,\n parentPaths: []\n });\n if (referenceFieldPaths.length === 0) {\n return output;\n }\n\n const referencesByModel: Record<string, string[]> = {};\n const pathsByReferenceId: Record<string, string[]> = {};\n\n for (const path of referenceFieldPaths) {\n const ref = dotProp.get(output, path) as ReferenceObject | any;\n\n const { id, modelId } = getReferenceFieldValue(ref);\n\n if (!id || !modelId) {\n continue;\n }\n if (!referencesByModel[modelId]) {\n referencesByModel[modelId] = [];\n }\n referencesByModel[modelId].push(id);\n if (!pathsByReferenceId[id]) {\n pathsByReferenceId[id] = [];\n }\n pathsByReferenceId[id].push(path);\n }\n\n /**\n * Again, no point in going further.\n */\n if (Object.keys(referencesByModel).length === 0) {\n return output;\n }\n /**\n * Load all models and use only those that are used in reference.\n */\n const models = (await context.cms.listModels()).filter(model => {\n const entries = referencesByModel[model.modelId];\n if (Array.isArray(entries) === false || entries.length === 0) {\n return false;\n }\n return true;\n });\n /**\n * Check for any model existence, just in case.\n */\n if (models.length === 0) {\n return output;\n }\n\n /**\n * Load all the entries by their ID\n */\n const promises = models.map(model => {\n return context.cms.getEntriesByIds(model, referencesByModel[model.modelId]);\n });\n\n const results = await Promise.all(promises);\n\n const records: Record<string, CmsRefEntry> = results.reduce((collection, entries) => {\n for (const entry of entries) {\n collection[entry.id] = {\n id: entry.id,\n entryId: entry.entryId,\n modelId: entry.modelId\n };\n }\n return collection;\n }, {} as Record<string, CmsRefEntry>);\n /**\n * Verify that all referenced entries actually exist.\n */\n for (const modelId in referencesByModel) {\n const entries = referencesByModel[modelId];\n for (const id of entries) {\n if (records[id]) {\n continue;\n } else if (validateEntries === true) {\n throw new WebinyError(\n `Missing referenced entry with id \"${id}\" in model \"${modelId}\".`,\n \"ENTRY_NOT_FOUND\",\n {\n id,\n model: modelId\n }\n );\n }\n const { id: entryId } = parseIdentifier(id);\n records[id] = {\n id,\n entryId,\n modelId\n };\n }\n }\n\n /**\n * In the end, assign the entryId, id and model values to the output.\n */\n for (const id in pathsByReferenceId) {\n const entry = records[id];\n const paths = pathsByReferenceId[id];\n if (!entry) {\n if (validateEntries === true) {\n throw new WebinyError(\"Missing entry in records.\", \"ENTRY_ERROR\", {\n id,\n paths\n });\n }\n continue;\n }\n for (const path of paths) {\n output = dotProp.set(output, path, {\n id: entry.id,\n entryId: entry.entryId,\n modelId: entry.modelId\n });\n }\n }\n\n return output;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["buildReferenceFieldPaths","params","fields","parentPaths","initialParentPaths","input","isMultipleValues","Array","isArray","filter","field","includes","type","reduce","collection","parentPathsValue","length","join","multipleValues","inputValue","dotProp","get","fieldId","key","path","push","objFieldPath","objFieldInputValue","result","settings","concat","results","getReferenceFieldValue","ref","id","modelId","entryId","trim","referenceFieldsMapping","context","model","validateEntries","output","referenceFieldPaths","referencesByModel","pathsByReferenceId","Object","keys","models","cms","listModels","entries","promises","map","getEntriesByIds","Promise","all","records","entry","WebinyError","parseIdentifier","paths","set"],"sources":["referenceFieldsMapping.ts"],"sourcesContent":["import { CmsContext, CmsModel, CmsModelField } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport dotProp from \"dot-prop\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\ninterface CmsRefEntry {\n id: string;\n entryId: string;\n modelId: string;\n}\n\ninterface ReferenceObject {\n id: string;\n modelId: string;\n}\n\ninterface Params {\n context: CmsContext;\n model: CmsModel;\n input: Record<string, ReferenceObject | ReferenceObject[]>;\n validateEntries?: boolean;\n}\n\ninterface BuildReferenceFieldPaths {\n fields: CmsModelField[];\n parentPaths: string[];\n input: Record<string, any>;\n}\n\nconst buildReferenceFieldPaths = (params: BuildReferenceFieldPaths): string[] => {\n const { fields, parentPaths: initialParentPaths, input } = params;\n\n const parentPaths = [...initialParentPaths];\n\n const isMultipleValues = Array.isArray(input);\n\n return fields\n .filter(field => [\"object\", \"ref\"].includes(field.type))\n .reduce((collection, field) => {\n /**\n * First we check the ref field\n */\n if (field.type === \"ref\") {\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n if (field.multipleValues) {\n const inputValue = dotProp.get(input, `${field.fieldId}`, []);\n if (Array.isArray(inputValue) === false) {\n return collection;\n }\n for (const key in inputValue) {\n const path = `${parentPathsValue}${field.fieldId}.${key}`;\n collection.push(path);\n }\n return collection;\n }\n\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n collection.push(`${parentPathsValue}${field.fieldId}`);\n\n return collection;\n }\n /**\n * Then we move onto the object field\n */\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n /**\n * This is if received input is array. We need to map key with fieldId at this point.\n */\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n const objFieldPath = `${field.fieldId}`;\n const objFieldInputValue = dotProp.get(input, objFieldPath, []);\n\n /**\n * If field is multiple values one, we need to go through the input and use the existing keys.\n */\n if (field.multipleValues) {\n if (Array.isArray(objFieldInputValue) === false) {\n return collection;\n }\n for (const key in objFieldInputValue) {\n const result = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue[key],\n parentPaths: parentPaths.concat([field.fieldId, key])\n });\n collection.push(...result);\n }\n\n return collection;\n }\n\n /**\n * Single value reference field.\n */\n const results = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue,\n parentPaths: parentPaths.concat([field.fieldId])\n });\n\n return collection.concat(results);\n }, [] as string[]);\n};\n\nconst getReferenceFieldValue = (ref: any): { id: string | null; modelId: string | null } => {\n if (!ref) {\n return {\n id: null,\n modelId: null\n };\n }\n return {\n id: (ref.id || ref.entryId || \"\").trim() || null,\n modelId: (ref.modelId || \"\").trim() || null\n };\n};\n\nexport const referenceFieldsMapping = async (params: Params): Promise<Record<string, any>> => {\n const { context, model, input, validateEntries = false } = params;\n\n let output: Record<string, any> = {\n ...input\n };\n\n const referenceFieldPaths = buildReferenceFieldPaths({\n fields: model.fields,\n input,\n parentPaths: []\n });\n if (referenceFieldPaths.length === 0) {\n return output;\n }\n\n const referencesByModel: Record<string, string[]> = {};\n const pathsByReferenceId: Record<string, string[]> = {};\n\n for (const path of referenceFieldPaths) {\n const ref = dotProp.get(output, path) as ReferenceObject | any;\n\n const { id, modelId } = getReferenceFieldValue(ref);\n\n if (!id || !modelId) {\n continue;\n }\n if (!referencesByModel[modelId]) {\n referencesByModel[modelId] = [];\n }\n referencesByModel[modelId].push(id);\n if (!pathsByReferenceId[id]) {\n pathsByReferenceId[id] = [];\n }\n pathsByReferenceId[id].push(path);\n }\n\n /**\n * Again, no point in going further.\n */\n if (Object.keys(referencesByModel).length === 0) {\n return output;\n }\n /**\n * Load all models and use only those that are used in reference.\n */\n const models = (await context.cms.listModels()).filter(model => {\n const entries = referencesByModel[model.modelId];\n if (Array.isArray(entries) === false || entries.length === 0) {\n return false;\n }\n return true;\n });\n /**\n * Check for any model existence, just in case.\n */\n if (models.length === 0) {\n return output;\n }\n\n /**\n * Load all the entries by their ID\n */\n const promises = models.map(model => {\n return context.cms.getEntriesByIds(model, referencesByModel[model.modelId]);\n });\n\n const results = await Promise.all(promises);\n\n const records: Record<string, CmsRefEntry> = results.reduce((collection, entries) => {\n for (const entry of entries) {\n collection[entry.id] = {\n id: entry.id,\n entryId: entry.entryId,\n modelId: entry.modelId\n };\n }\n return collection;\n }, {} as Record<string, CmsRefEntry>);\n /**\n * Verify that all referenced entries actually exist.\n */\n for (const modelId in referencesByModel) {\n const entries = referencesByModel[modelId];\n for (const id of entries) {\n if (records[id]) {\n continue;\n } else if (validateEntries === true) {\n throw new WebinyError(\n `Missing referenced entry with id \"${id}\" in model \"${modelId}\".`,\n \"ENTRY_NOT_FOUND\",\n {\n id,\n model: modelId\n }\n );\n }\n const { id: entryId } = parseIdentifier(id);\n records[id] = {\n id,\n entryId,\n modelId\n };\n }\n }\n\n /**\n * In the end, assign the entryId, id and model values to the output.\n */\n for (const id in pathsByReferenceId) {\n const entry = records[id];\n const paths = pathsByReferenceId[id];\n if (!entry) {\n if (validateEntries === true) {\n throw new WebinyError(\"Missing entry in records.\", \"ENTRY_ERROR\", {\n id,\n paths\n });\n }\n continue;\n }\n for (const path of paths) {\n output = dotProp.set(output, path, {\n id: entry.id,\n entryId: entry.entryId,\n modelId: entry.modelId\n });\n }\n }\n\n return output;\n};\n"],"mappings":";;;;;;;;AACA;AACA;AACA;AA0BA,MAAMA,wBAAwB,GAAIC,MAAgC,IAAe;EAC7E,MAAM;IAAEC,MAAM;IAAEC,WAAW,EAAEC,kBAAkB;IAAEC;EAAM,CAAC,GAAGJ,MAAM;EAEjE,MAAME,WAAW,GAAG,CAAC,GAAGC,kBAAkB,CAAC;EAE3C,MAAME,gBAAgB,GAAGC,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC;EAE7C,OAAOH,MAAM,CACRO,MAAM,CAACC,KAAK,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACD,KAAK,CAACE,IAAI,CAAC,CAAC,CACvDC,MAAM,CAAC,CAACC,UAAU,EAAEJ,KAAK,KAAK;IAAA;IAC3B;AACZ;AACA;IACY,IAAIA,KAAK,CAACE,IAAI,KAAK,KAAK,EAAE;MACtB,MAAMG,gBAAgB,GAAGZ,WAAW,CAACa,MAAM,GAAG,CAAC,GAAI,GAAEb,WAAW,CAACc,IAAI,CAAC,GAAG,CAAE,GAAE,GAAG,EAAE;MAClF,IAAIP,KAAK,CAACQ,cAAc,EAAE;QACtB,MAAMC,UAAU,GAAGC,gBAAO,CAACC,GAAG,CAAChB,KAAK,EAAG,GAAEK,KAAK,CAACY,OAAQ,EAAC,EAAE,EAAE,CAAC;QAC7D,IAAIf,KAAK,CAACC,OAAO,CAACW,UAAU,CAAC,KAAK,KAAK,EAAE;UACrC,OAAOL,UAAU;QACrB;QACA,KAAK,MAAMS,GAAG,IAAIJ,UAAU,EAAE;UAC1B,MAAMK,IAAI,GAAI,GAAET,gBAAiB,GAAEL,KAAK,CAACY,OAAQ,IAAGC,GAAI,EAAC;UACzDT,UAAU,CAACW,IAAI,CAACD,IAAI,CAAC;QACzB;QACA,OAAOV,UAAU;MACrB;MAEA,IAAIR,gBAAgB,EAAE;QAClB,KAAK,MAAMiB,GAAG,IAAIlB,KAAK,EAAE;UACrB,MAAMmB,IAAI,GAAI,GAAET,gBAAiB,GAAEQ,GAAI,IAAGb,KAAK,CAACY,OAAQ,EAAC;UACzDR,UAAU,CAACW,IAAI,CAACD,IAAI,CAAC;QACzB;QACA,OAAOV,UAAU;MACrB;MAEAA,UAAU,CAACW,IAAI,CAAE,GAAEV,gBAAiB,GAAEL,KAAK,CAACY,OAAQ,EAAC,CAAC;MAEtD,OAAOR,UAAU;IACrB;IACA;AACZ;AACA;IACY,MAAMC,gBAAgB,GAAGZ,WAAW,CAACa,MAAM,GAAG,CAAC,GAAI,GAAEb,WAAW,CAACc,IAAI,CAAC,GAAG,CAAE,GAAE,GAAG,EAAE;IAClF;AACZ;AACA;IACY,IAAIX,gBAAgB,EAAE;MAClB,KAAK,MAAMiB,GAAG,IAAIlB,KAAK,EAAE;QACrB,MAAMmB,IAAI,GAAI,GAAET,gBAAiB,GAAEQ,GAAI,IAAGb,KAAK,CAACY,OAAQ,EAAC;QACzDR,UAAU,CAACW,IAAI,CAACD,IAAI,CAAC;MACzB;MACA,OAAOV,UAAU;IACrB;IAEA,MAAMY,YAAY,GAAI,GAAEhB,KAAK,CAACY,OAAQ,EAAC;IACvC,MAAMK,kBAAkB,GAAGP,gBAAO,CAACC,GAAG,CAAChB,KAAK,EAAEqB,YAAY,EAAE,EAAE,CAAC;;IAE/D;AACZ;AACA;IACY,IAAIhB,KAAK,CAACQ,cAAc,EAAE;MACtB,IAAIX,KAAK,CAACC,OAAO,CAACmB,kBAAkB,CAAC,KAAK,KAAK,EAAE;QAC7C,OAAOb,UAAU;MACrB;MACA,KAAK,MAAMS,GAAG,IAAII,kBAAkB,EAAE;QAAA;QAClC,MAAMC,MAAM,GAAG5B,wBAAwB,CAAC;UACpCE,MAAM,EAAE,oBAAAQ,KAAK,CAACmB,QAAQ,oDAAd,gBAAgB3B,MAAM,KAAI,EAAE;UACpCG,KAAK,EAAEsB,kBAAkB,CAACJ,GAAG,CAAC;UAC9BpB,WAAW,EAAEA,WAAW,CAAC2B,MAAM,CAAC,CAACpB,KAAK,CAACY,OAAO,EAAEC,GAAG,CAAC;QACxD,CAAC,CAAC;QACFT,UAAU,CAACW,IAAI,CAAC,GAAGG,MAAM,CAAC;MAC9B;MAEA,OAAOd,UAAU;IACrB;;IAEA;AACZ;AACA;IACY,MAAMiB,OAAO,GAAG/B,wBAAwB,CAAC;MACrCE,MAAM,EAAE,qBAAAQ,KAAK,CAACmB,QAAQ,qDAAd,iBAAgB3B,MAAM,KAAI,EAAE;MACpCG,KAAK,EAAEsB,kBAAkB;MACzBxB,WAAW,EAAEA,WAAW,CAAC2B,MAAM,CAAC,CAACpB,KAAK,CAACY,OAAO,CAAC;IACnD,CAAC,CAAC;IAEF,OAAOR,UAAU,CAACgB,MAAM,CAACC,OAAO,CAAC;EACrC,CAAC,EAAE,EAAE,CAAa;AAC1B,CAAC;AAED,MAAMC,sBAAsB,GAAIC,GAAQ,IAAoD;EACxF,IAAI,CAACA,GAAG,EAAE;IACN,OAAO;MACHC,EAAE,EAAE,IAAI;MACRC,OAAO,EAAE;IACb,CAAC;EACL;EACA,OAAO;IACHD,EAAE,EAAE,CAACD,GAAG,CAACC,EAAE,IAAID,GAAG,CAACG,OAAO,IAAI,EAAE,EAAEC,IAAI,EAAE,IAAI,IAAI;IAChDF,OAAO,EAAE,CAACF,GAAG,CAACE,OAAO,IAAI,EAAE,EAAEE,IAAI,EAAE,IAAI;EAC3C,CAAC;AACL,CAAC;AAEM,MAAMC,sBAAsB,GAAG,MAAOrC,MAAc,IAAmC;EAC1F,MAAM;IAAEsC,OAAO;IAAEC,KAAK;IAAEnC,KAAK;IAAEoC,eAAe,GAAG;EAAM,CAAC,GAAGxC,MAAM;EAEjE,IAAIyC,MAA2B,mCACxBrC,KAAK,CACX;EAED,MAAMsC,mBAAmB,GAAG3C,wBAAwB,CAAC;IACjDE,MAAM,EAAEsC,KAAK,CAACtC,MAAM;IACpBG,KAAK;IACLF,WAAW,EAAE;EACjB,CAAC,CAAC;EACF,IAAIwC,mBAAmB,CAAC3B,MAAM,KAAK,CAAC,EAAE;IAClC,OAAO0B,MAAM;EACjB;EAEA,MAAME,iBAA2C,GAAG,CAAC,CAAC;EACtD,MAAMC,kBAA4C,GAAG,CAAC,CAAC;EAEvD,KAAK,MAAMrB,IAAI,IAAImB,mBAAmB,EAAE;IACpC,MAAMV,GAAG,GAAGb,gBAAO,CAACC,GAAG,CAACqB,MAAM,EAAElB,IAAI,CAA0B;IAE9D,MAAM;MAAEU,EAAE;MAAEC;IAAQ,CAAC,GAAGH,sBAAsB,CAACC,GAAG,CAAC;IAEnD,IAAI,CAACC,EAAE,IAAI,CAACC,OAAO,EAAE;MACjB;IACJ;IACA,IAAI,CAACS,iBAAiB,CAACT,OAAO,CAAC,EAAE;MAC7BS,iBAAiB,CAACT,OAAO,CAAC,GAAG,EAAE;IACnC;IACAS,iBAAiB,CAACT,OAAO,CAAC,CAACV,IAAI,CAACS,EAAE,CAAC;IACnC,IAAI,CAACW,kBAAkB,CAACX,EAAE,CAAC,EAAE;MACzBW,kBAAkB,CAACX,EAAE,CAAC,GAAG,EAAE;IAC/B;IACAW,kBAAkB,CAACX,EAAE,CAAC,CAACT,IAAI,CAACD,IAAI,CAAC;EACrC;;EAEA;AACJ;AACA;EACI,IAAIsB,MAAM,CAACC,IAAI,CAACH,iBAAiB,CAAC,CAAC5B,MAAM,KAAK,CAAC,EAAE;IAC7C,OAAO0B,MAAM;EACjB;EACA;AACJ;AACA;EACI,MAAMM,MAAM,GAAG,CAAC,MAAMT,OAAO,CAACU,GAAG,CAACC,UAAU,EAAE,EAAEzC,MAAM,CAAC+B,KAAK,IAAI;IAC5D,MAAMW,OAAO,GAAGP,iBAAiB,CAACJ,KAAK,CAACL,OAAO,CAAC;IAChD,IAAI5B,KAAK,CAACC,OAAO,CAAC2C,OAAO,CAAC,KAAK,KAAK,IAAIA,OAAO,CAACnC,MAAM,KAAK,CAAC,EAAE;MAC1D,OAAO,KAAK;IAChB;IACA,OAAO,IAAI;EACf,CAAC,CAAC;EACF;AACJ;AACA;EACI,IAAIgC,MAAM,CAAChC,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO0B,MAAM;EACjB;;EAEA;AACJ;AACA;EACI,MAAMU,QAAQ,GAAGJ,MAAM,CAACK,GAAG,CAACb,KAAK,IAAI;IACjC,OAAOD,OAAO,CAACU,GAAG,CAACK,eAAe,CAACd,KAAK,EAAEI,iBAAiB,CAACJ,KAAK,CAACL,OAAO,CAAC,CAAC;EAC/E,CAAC,CAAC;EAEF,MAAMJ,OAAO,GAAG,MAAMwB,OAAO,CAACC,GAAG,CAACJ,QAAQ,CAAC;EAE3C,MAAMK,OAAoC,GAAG1B,OAAO,CAAClB,MAAM,CAAC,CAACC,UAAU,EAAEqC,OAAO,KAAK;IACjF,KAAK,MAAMO,KAAK,IAAIP,OAAO,EAAE;MACzBrC,UAAU,CAAC4C,KAAK,CAACxB,EAAE,CAAC,GAAG;QACnBA,EAAE,EAAEwB,KAAK,CAACxB,EAAE;QACZE,OAAO,EAAEsB,KAAK,CAACtB,OAAO;QACtBD,OAAO,EAAEuB,KAAK,CAACvB;MACnB,CAAC;IACL;IACA,OAAOrB,UAAU;EACrB,CAAC,EAAE,CAAC,CAAC,CAAgC;EACrC;AACJ;AACA;EACI,KAAK,MAAMqB,OAAO,IAAIS,iBAAiB,EAAE;IACrC,MAAMO,OAAO,GAAGP,iBAAiB,CAACT,OAAO,CAAC;IAC1C,KAAK,MAAMD,EAAE,IAAIiB,OAAO,EAAE;MACtB,IAAIM,OAAO,CAACvB,EAAE,CAAC,EAAE;QACb;MACJ,CAAC,MAAM,IAAIO,eAAe,KAAK,IAAI,EAAE;QACjC,MAAM,IAAIkB,cAAW,CAChB,qCAAoCzB,EAAG,eAAcC,OAAQ,IAAG,EACjE,iBAAiB,EACjB;UACID,EAAE;UACFM,KAAK,EAAEL;QACX,CAAC,CACJ;MACL;MACA,MAAM;QAAED,EAAE,EAAEE;MAAQ,CAAC,GAAG,IAAAwB,sBAAe,EAAC1B,EAAE,CAAC;MAC3CuB,OAAO,CAACvB,EAAE,CAAC,GAAG;QACVA,EAAE;QACFE,OAAO;QACPD;MACJ,CAAC;IACL;EACJ;;EAEA;AACJ;AACA;EACI,KAAK,MAAMD,EAAE,IAAIW,kBAAkB,EAAE;IACjC,MAAMa,KAAK,GAAGD,OAAO,CAACvB,EAAE,CAAC;IACzB,MAAM2B,KAAK,GAAGhB,kBAAkB,CAACX,EAAE,CAAC;IACpC,IAAI,CAACwB,KAAK,EAAE;MACR,IAAIjB,eAAe,KAAK,IAAI,EAAE;QAC1B,MAAM,IAAIkB,cAAW,CAAC,2BAA2B,EAAE,aAAa,EAAE;UAC9DzB,EAAE;UACF2B;QACJ,CAAC,CAAC;MACN;MACA;IACJ;IACA,KAAK,MAAMrC,IAAI,IAAIqC,KAAK,EAAE;MACtBnB,MAAM,GAAGtB,gBAAO,CAAC0C,GAAG,CAACpB,MAAM,EAAElB,IAAI,EAAE;QAC/BU,EAAE,EAAEwB,KAAK,CAACxB,EAAE;QACZE,OAAO,EAAEsB,KAAK,CAACtB,OAAO;QACtBD,OAAO,EAAEuB,KAAK,CAACvB;MACnB,CAAC,CAAC;IACN;EACJ;EAEA,OAAOO,MAAM;AACjB,CAAC;AAAC"}
@@ -4,8 +4,6 @@ import { Tenant } from "@webiny/api-tenancy/types";
4
4
  export declare const STATUS_DRAFT = "draft";
5
5
  export declare const STATUS_PUBLISHED = "published";
6
6
  export declare const STATUS_UNPUBLISHED = "unpublished";
7
- export declare const STATUS_CHANGES_REQUESTED = "changesRequested";
8
- export declare const STATUS_REVIEW_REQUESTED = "reviewRequested";
9
7
  export interface CreateContentEntryCrudParams {
10
8
  storageOperations: HeadlessCmsStorageOperations;
11
9
  context: CmsContext;