@webiny/api-headless-cms 0.0.0-unstable.6e5425ee89 → 0.0.0-unstable.78f581c1d2

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 (272) hide show
  1. package/context.js +15 -0
  2. package/context.js.map +1 -1
  3. package/crud/contentEntry/afterDelete.js +5 -0
  4. package/crud/contentEntry/afterDelete.js.map +1 -1
  5. package/crud/contentEntry/beforeCreate.js +3 -0
  6. package/crud/contentEntry/beforeCreate.js.map +1 -1
  7. package/crud/contentEntry/beforeUpdate.js +3 -0
  8. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  9. package/crud/contentEntry/entryDataValidation.js +40 -1
  10. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  11. package/crud/contentEntry/markLockedFields.js +25 -2
  12. package/crud/contentEntry/markLockedFields.js.map +1 -1
  13. package/crud/contentEntry/referenceFieldsMapping.js +59 -5
  14. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  15. package/crud/contentEntry.crud.js +145 -27
  16. package/crud/contentEntry.crud.js.map +1 -1
  17. package/crud/contentModel/afterCreate.js +2 -0
  18. package/crud/contentModel/afterCreate.js.map +1 -1
  19. package/crud/contentModel/afterCreateFrom.js +2 -0
  20. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  21. package/crud/contentModel/afterDelete.js +2 -0
  22. package/crud/contentModel/afterDelete.js.map +1 -1
  23. package/crud/contentModel/afterUpdate.js +2 -0
  24. package/crud/contentModel/afterUpdate.js.map +1 -1
  25. package/crud/contentModel/beforeCreate.js +32 -4
  26. package/crud/contentModel/beforeCreate.js.map +1 -1
  27. package/crud/contentModel/beforeDelete.js +10 -0
  28. package/crud/contentModel/beforeDelete.js.map +1 -1
  29. package/crud/contentModel/beforeUpdate.js +5 -0
  30. package/crud/contentModel/beforeUpdate.js.map +1 -1
  31. package/crud/contentModel/contentModelManagerFactory.js +7 -0
  32. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  33. package/crud/contentModel/createFieldModels.js +6 -0
  34. package/crud/contentModel/createFieldModels.js.map +1 -1
  35. package/crud/contentModel/createFieldStorageId.js +2 -0
  36. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  37. package/crud/contentModel/fieldIdValidation.js +5 -0
  38. package/crud/contentModel/fieldIdValidation.js.map +1 -1
  39. package/crud/contentModel/idValidation.js +5 -0
  40. package/crud/contentModel/idValidation.js.map +1 -1
  41. package/crud/contentModel/models.js +8 -1
  42. package/crud/contentModel/models.js.map +1 -1
  43. package/crud/contentModel/systemFields.js.map +1 -1
  44. package/crud/contentModel/validateLayout.js +8 -0
  45. package/crud/contentModel/validateLayout.js.map +1 -1
  46. package/crud/contentModel/validateModel.js +8 -0
  47. package/crud/contentModel/validateModel.js.map +1 -1
  48. package/crud/contentModel/validateModelFields.js +60 -8
  49. package/crud/contentModel/validateModelFields.js.map +1 -1
  50. package/crud/contentModel.crud.js +96 -11
  51. package/crud/contentModel.crud.js.map +1 -1
  52. package/crud/contentModelGroup/beforeCreate.js +12 -0
  53. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  54. package/crud/contentModelGroup/beforeDelete.js +8 -0
  55. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  56. package/crud/contentModelGroup/beforeUpdate.js +5 -0
  57. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  58. package/crud/contentModelGroup.crud.js +47 -10
  59. package/crud/contentModelGroup.crud.js.map +1 -1
  60. package/crud/index.js +16 -0
  61. package/crud/index.js.map +1 -1
  62. package/crud/settings.crud.js +12 -0
  63. package/crud/settings.crud.js.map +1 -1
  64. package/crud/system.crud.js +37 -2
  65. package/crud/system.crud.js.map +1 -1
  66. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +13 -0
  67. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  68. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +53 -0
  69. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  70. package/fieldConverters/index.js +4 -0
  71. package/fieldConverters/index.js.map +1 -1
  72. package/graphql/buildSchemaPlugins.js +9 -5
  73. package/graphql/buildSchemaPlugins.js.map +1 -1
  74. package/graphql/graphQLHandlerFactory.js +28 -3
  75. package/graphql/graphQLHandlerFactory.js.map +1 -1
  76. package/graphql/index.js +8 -1
  77. package/graphql/index.js.map +1 -1
  78. package/graphql/schema/baseContentSchema.js +9 -1
  79. package/graphql/schema/baseContentSchema.js.map +1 -1
  80. package/graphql/schema/contentEntries.js +42 -2
  81. package/graphql/schema/contentEntries.js.map +1 -1
  82. package/graphql/schema/contentModelGroups.js +19 -2
  83. package/graphql/schema/contentModelGroups.js.map +1 -1
  84. package/graphql/schema/contentModels.js +18 -2
  85. package/graphql/schema/contentModels.js.map +1 -1
  86. package/graphql/schema/createFieldResolvers.js +21 -3
  87. package/graphql/schema/createFieldResolvers.js.map +1 -1
  88. package/graphql/schema/createManageResolvers.js +26 -0
  89. package/graphql/schema/createManageResolvers.js.map +1 -1
  90. package/graphql/schema/createManageSDL.js +14 -1
  91. package/graphql/schema/createManageSDL.js.map +1 -1
  92. package/graphql/schema/createPreviewResolvers.js +10 -0
  93. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  94. package/graphql/schema/createReadResolvers.js +10 -0
  95. package/graphql/schema/createReadResolvers.js.map +1 -1
  96. package/graphql/schema/createReadSDL.js +10 -0
  97. package/graphql/schema/createReadSDL.js.map +1 -1
  98. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -0
  99. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  100. package/graphql/schema/resolvers/manage/resolveCreate.js +3 -0
  101. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  102. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +3 -0
  103. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  104. package/graphql/schema/resolvers/manage/resolveDelete.js +6 -0
  105. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  106. package/graphql/schema/resolvers/manage/resolveGet.js +16 -0
  107. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  108. package/graphql/schema/resolvers/manage/resolveGetByIds.js +3 -0
  109. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  110. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +3 -0
  111. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  112. package/graphql/schema/resolvers/manage/resolveList.js +3 -0
  113. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  114. package/graphql/schema/resolvers/manage/resolvePublish.js +3 -0
  115. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  116. package/graphql/schema/resolvers/manage/resolveRepublish.js +3 -0
  117. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  118. package/graphql/schema/resolvers/manage/resolveUnpublish.js +3 -0
  119. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  120. package/graphql/schema/resolvers/manage/resolveUpdate.js +3 -0
  121. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  122. package/graphql/schema/resolvers/preview/resolveGet.js +8 -0
  123. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  124. package/graphql/schema/resolvers/preview/resolveList.js +3 -0
  125. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  126. package/graphql/schema/resolvers/read/resolveGet.js +8 -0
  127. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  128. package/graphql/schema/resolvers/read/resolveList.js +3 -0
  129. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  130. package/graphql/schema/schemaPlugins.js +19 -5
  131. package/graphql/schema/schemaPlugins.js.map +1 -1
  132. package/graphql/system.js +14 -1
  133. package/graphql/system.js.map +1 -1
  134. package/graphqlFields/boolean.js +12 -0
  135. package/graphqlFields/boolean.js.map +1 -1
  136. package/graphqlFields/datetime.js +17 -0
  137. package/graphqlFields/datetime.js.map +1 -1
  138. package/graphqlFields/file.js +8 -0
  139. package/graphqlFields/file.js.map +1 -1
  140. package/graphqlFields/helpers.js +10 -0
  141. package/graphqlFields/helpers.js.map +1 -1
  142. package/graphqlFields/index.js +11 -0
  143. package/graphqlFields/index.js.map +1 -1
  144. package/graphqlFields/longText.js +10 -0
  145. package/graphqlFields/longText.js.map +1 -1
  146. package/graphqlFields/number.js +12 -0
  147. package/graphqlFields/number.js.map +1 -1
  148. package/graphqlFields/object.js +36 -6
  149. package/graphqlFields/object.js.map +1 -1
  150. package/graphqlFields/ref.js +51 -17
  151. package/graphqlFields/ref.js.map +1 -1
  152. package/graphqlFields/richText.js +9 -0
  153. package/graphqlFields/richText.js.map +1 -1
  154. package/graphqlFields/text.js +11 -0
  155. package/graphqlFields/text.js.map +1 -1
  156. package/index.js +19 -0
  157. package/index.js.map +1 -1
  158. package/modelManager/DefaultCmsModelManager.js +16 -0
  159. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  160. package/modelManager/index.js +4 -0
  161. package/modelManager/index.js.map +1 -1
  162. package/package.json +24 -24
  163. package/parameters/context.js +4 -0
  164. package/parameters/context.js.map +1 -1
  165. package/parameters/header.js +11 -0
  166. package/parameters/header.js.map +1 -1
  167. package/parameters/index.js +8 -0
  168. package/parameters/index.js.map +1 -1
  169. package/parameters/manual.js +8 -1
  170. package/parameters/manual.js.map +1 -1
  171. package/parameters/path.js +11 -0
  172. package/parameters/path.js.map +1 -1
  173. package/plugins/CmsGroupPlugin.js +8 -0
  174. package/plugins/CmsGroupPlugin.js.map +1 -1
  175. package/plugins/CmsModelFieldConverterPlugin.js +5 -0
  176. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  177. package/plugins/CmsModelPlugin.js +38 -2
  178. package/plugins/CmsModelPlugin.js.map +1 -1
  179. package/plugins/CmsParametersPlugin.js +7 -0
  180. package/plugins/CmsParametersPlugin.js.map +1 -1
  181. package/plugins/StorageTransformPlugin.js +9 -0
  182. package/plugins/StorageTransformPlugin.js.map +1 -1
  183. package/plugins/index.js +10 -0
  184. package/plugins/index.js.map +1 -1
  185. package/storage/default.js +3 -0
  186. package/storage/default.js.map +1 -1
  187. package/storage/object.js +18 -0
  188. package/storage/object.js.map +1 -1
  189. package/types.js +62 -0
  190. package/types.js.map +1 -1
  191. package/upgrades/5.33.0/index.js +26 -3
  192. package/upgrades/5.33.0/index.js.map +1 -1
  193. package/upgrades/index.js +3 -0
  194. package/upgrades/index.js.map +1 -1
  195. package/utils/access.js +25 -11
  196. package/utils/access.js.map +1 -1
  197. package/utils/converters/Converter.js +13 -0
  198. package/utils/converters/Converter.js.map +1 -1
  199. package/utils/converters/ConverterCollection.js +32 -9
  200. package/utils/converters/ConverterCollection.js.map +1 -1
  201. package/utils/converters/valueKeyStorageConverter.js +26 -0
  202. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  203. package/utils/createTypeName.js +8 -0
  204. package/utils/createTypeName.js.map +1 -1
  205. package/utils/entryStorage.js +26 -10
  206. package/utils/entryStorage.js.map +1 -1
  207. package/utils/filterAsync.js +5 -0
  208. package/utils/filterAsync.js.map +1 -1
  209. package/utils/filterModelFields.js +9 -3
  210. package/utils/filterModelFields.js.map +1 -1
  211. package/utils/getEntryTitle.js +9 -0
  212. package/utils/getEntryTitle.js.map +1 -1
  213. package/utils/getSchemaFromFieldPlugins.js +6 -2
  214. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  215. package/utils/ownership.js +8 -0
  216. package/utils/ownership.js.map +1 -1
  217. package/utils/permissions.js +23 -8
  218. package/utils/permissions.js.map +1 -1
  219. package/utils/pluralizedTypeName.js +6 -0
  220. package/utils/pluralizedTypeName.js.map +1 -1
  221. package/utils/renderFields.js +8 -0
  222. package/utils/renderFields.js.map +1 -1
  223. package/utils/renderGetFilterFields.js +11 -0
  224. package/utils/renderGetFilterFields.js.map +1 -1
  225. package/utils/renderInputFields.js +8 -0
  226. package/utils/renderInputFields.js.map +1 -1
  227. package/utils/renderListFilterFields.js +9 -1
  228. package/utils/renderListFilterFields.js.map +1 -1
  229. package/utils/renderSortEnum.js +7 -0
  230. package/utils/renderSortEnum.js.map +1 -1
  231. package/utils/toSlug.js +4 -0
  232. package/utils/toSlug.js.map +1 -1
  233. package/validators/dateGte.js +7 -0
  234. package/validators/dateGte.js.map +1 -1
  235. package/validators/dateLte.js +7 -0
  236. package/validators/dateLte.js.map +1 -1
  237. package/validators/gte.js +8 -0
  238. package/validators/gte.js.map +1 -1
  239. package/validators/in.js +8 -0
  240. package/validators/in.js.map +1 -1
  241. package/validators/index.js +15 -0
  242. package/validators/index.js.map +1 -1
  243. package/validators/lte.js +8 -0
  244. package/validators/lte.js.map +1 -1
  245. package/validators/maxLength.js +8 -0
  246. package/validators/maxLength.js.map +1 -1
  247. package/validators/minLength.js +8 -0
  248. package/validators/minLength.js.map +1 -1
  249. package/validators/pattern.js +9 -0
  250. package/validators/pattern.js.map +1 -1
  251. package/validators/patternPlugins/email.js +2 -0
  252. package/validators/patternPlugins/email.js.map +1 -1
  253. package/validators/patternPlugins/index.js +8 -0
  254. package/validators/patternPlugins/index.js.map +1 -1
  255. package/validators/patternPlugins/lowerCase.js +2 -0
  256. package/validators/patternPlugins/lowerCase.js.map +1 -1
  257. package/validators/patternPlugins/lowerCaseSpace.js +2 -0
  258. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  259. package/validators/patternPlugins/upperCase.js +2 -0
  260. package/validators/patternPlugins/upperCase.js.map +1 -1
  261. package/validators/patternPlugins/upperCaseSpace.js +2 -0
  262. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  263. package/validators/patternPlugins/url.js +2 -0
  264. package/validators/patternPlugins/url.js.map +1 -1
  265. package/validators/required.js +5 -0
  266. package/validators/required.js.map +1 -1
  267. package/validators/timeGte.js +8 -0
  268. package/validators/timeGte.js.map +1 -1
  269. package/validators/timeLte.js +8 -0
  270. package/validators/timeLte.js.map +1 -1
  271. package/validators/unique.js +7 -0
  272. package/validators/unique.js.map +1 -1
@@ -1,22 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createSystemCrud = void 0;
9
+
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
9
12
  var _crypto = _interopRequireDefault(require("crypto"));
13
+
10
14
  var _apiSecurity = require("@webiny/api-security");
15
+
11
16
  var _apiUpgrade = require("@webiny/api-upgrade");
17
+
12
18
  var _error = _interopRequireDefault(require("@webiny/error"));
19
+
13
20
  var _pubsub = require("@webiny/pubsub");
21
+
14
22
  const initialContentModelGroup = {
15
23
  name: "Ungrouped",
16
24
  slug: "ungrouped",
17
25
  description: "A generic content model group",
18
26
  icon: "fas/star"
19
27
  };
28
+
20
29
  const createSystemCrud = params => {
21
30
  const {
22
31
  getTenant,
@@ -28,18 +37,22 @@ const createSystemCrud = params => {
28
37
  const onSystemBeforeInstall = (0, _pubsub.createTopic)("cms.onSystemBeforeInstall");
29
38
  const onSystemAfterInstall = (0, _pubsub.createTopic)("cms.onSystemAfterInstall");
30
39
  const onSystemInstallError = (0, _pubsub.createTopic)("cms.onSystemInstallError");
40
+
31
41
  const createReadAPIKey = () => {
32
42
  return _crypto.default.randomBytes(Math.ceil(48 / 2)).toString("hex");
33
43
  };
44
+
34
45
  const getVersion = async () => {
35
46
  if (!getTenant()) {
36
47
  return null;
37
48
  }
49
+
38
50
  const system = await storageOperations.system.get({
39
51
  tenant: getTenant().id
40
52
  });
41
53
  return (system === null || system === void 0 ? void 0 : system.version) || null;
42
54
  };
55
+
43
56
  const setVersion = async version => {
44
57
  const original = await storageOperations.system.get({
45
58
  tenant: getTenant().id
@@ -48,22 +61,26 @@ const createSystemCrud = params => {
48
61
  version,
49
62
  tenant: getTenant().id
50
63
  });
64
+
51
65
  if (!original) {
52
66
  await storageOperations.system.create({
53
67
  system
54
68
  });
55
69
  return;
56
70
  }
71
+
57
72
  await storageOperations.system.update({
58
73
  system
59
74
  });
60
75
  };
76
+
61
77
  return {
62
78
  /**
63
79
  * Deprecated - will be removed in 5.36.0
64
80
  */
65
81
  onBeforeSystemInstall: onSystemBeforeInstall,
66
82
  onAfterSystemInstall: onSystemAfterInstall,
83
+
67
84
  /**
68
85
  * Released in 5.34.0
69
86
  */
@@ -76,9 +93,11 @@ const createSystemCrud = params => {
76
93
  const original = await storageOperations.system.get({
77
94
  tenant: getTenant().id
78
95
  });
96
+
79
97
  if (!original) {
80
98
  return null;
81
99
  }
100
+
82
101
  if (!original.readAPIKey) {
83
102
  const readAPIKey = createReadAPIKey();
84
103
  const system = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
@@ -89,17 +108,22 @@ const createSystemCrud = params => {
89
108
  });
90
109
  return readAPIKey;
91
110
  }
111
+
92
112
  return original.readAPIKey;
93
113
  },
94
114
  installSystem: async () => {
95
115
  const identity = getIdentity();
116
+
96
117
  if (!identity) {
97
118
  throw new _apiSecurity.NotAuthorizedError();
98
119
  }
120
+
99
121
  const version = await getVersion();
122
+
100
123
  if (version) {
101
124
  return;
102
125
  }
126
+
103
127
  try {
104
128
  /**
105
129
  * First trigger before install event.
@@ -108,10 +132,10 @@ const createSystemCrud = params => {
108
132
  tenant: getTenant().id,
109
133
  locale: getLocale().code
110
134
  });
111
-
112
135
  /**
113
136
  * Add default content model group.
114
137
  */
138
+
115
139
  try {
116
140
  await context.cms.createGroup(initialContentModelGroup);
117
141
  } catch (ex) {
@@ -119,6 +143,7 @@ const createSystemCrud = params => {
119
143
  group: initialContentModelGroup
120
144
  });
121
145
  }
146
+
122
147
  const system = {
123
148
  version: context.WEBINY_VERSION,
124
149
  readAPIKey: createReadAPIKey(),
@@ -127,12 +152,14 @@ const createSystemCrud = params => {
127
152
  /**
128
153
  * We need to create the system data.
129
154
  */
155
+
130
156
  await storageOperations.system.create({
131
157
  system
132
158
  });
133
159
  /**
134
160
  * And trigger after install event.
135
161
  */
162
+
136
163
  await onSystemAfterInstall.publish({
137
164
  tenant: getTenant().id,
138
165
  locale: getLocale().code
@@ -146,14 +173,18 @@ const createSystemCrud = params => {
146
173
  throw new _error.default(ex.message, ex.code, ex.data);
147
174
  }
148
175
  },
176
+
149
177
  async upgradeSystem(version) {
150
178
  const identity = getIdentity();
179
+
151
180
  if (!identity) {
152
181
  throw new _apiSecurity.NotAuthorizedError();
153
182
  }
183
+
154
184
  const upgradePlugins = context.plugins.byType("api-upgrade").filter(pl => pl.app === "headless-cms");
155
185
  const installedAppVersion = await this.getSystemVersion();
156
186
  let plugin = undefined;
187
+
157
188
  try {
158
189
  plugin = (0, _apiUpgrade.getApplicablePlugin)({
159
190
  deployedVersion: context.WEBINY_VERSION,
@@ -171,16 +202,20 @@ const createSystemCrud = params => {
171
202
  throw ex;
172
203
  }
173
204
  }
205
+
174
206
  if (plugin) {
175
207
  await plugin.apply(context);
176
208
  }
177
-
178
209
  /**
179
210
  * Store new app version.
180
211
  */
212
+
213
+
181
214
  await setVersion(version);
182
215
  return true;
183
216
  }
217
+
184
218
  };
185
219
  };
220
+
186
221
  exports.createSystemCrud = createSystemCrud;
@@ -1 +1 @@
1
- {"version":3,"names":["initialContentModelGroup","name","slug","description","icon","createSystemCrud","params","getTenant","getLocale","storageOperations","context","getIdentity","onSystemBeforeInstall","createTopic","onSystemAfterInstall","onSystemInstallError","createReadAPIKey","crypto","randomBytes","Math","ceil","toString","getVersion","system","get","tenant","id","version","setVersion","original","create","update","onBeforeSystemInstall","onAfterSystemInstall","getSystemVersion","setSystemVersion","getReadAPIKey","readAPIKey","installSystem","identity","NotAuthorizedError","publish","locale","code","cms","createGroup","ex","WebinyError","message","group","WEBINY_VERSION","error","data","upgradeSystem","upgradePlugins","plugins","byType","filter","pl","app","installedAppVersion","plugin","undefined","getApplicablePlugin","deployedVersion","upgradeToVersion","ErrorCode","UPGRADE_NOT_AVAILABLE","apply"],"sources":["system.crud.ts"],"sourcesContent":["import crypto from \"crypto\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { ErrorCode, getApplicablePlugin } from \"@webiny/api-upgrade\";\nimport { UpgradePlugin } from \"@webiny/api-upgrade/types\";\nimport WebinyError from \"@webiny/error\";\nimport {\n OnSystemAfterInstallTopicParams,\n OnSystemBeforeInstallTopicParams,\n CmsContext,\n CmsSystem,\n CmsSystemContext,\n HeadlessCms,\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 createReadAPIKey = () => {\n return crypto.randomBytes(Math.ceil(48 / 2)).toString(\"hex\");\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 * Deprecated - will be removed in 5.36.0\n */\n onBeforeSystemInstall: onSystemBeforeInstall,\n onAfterSystemInstall: onSystemAfterInstall,\n /**\n * Released in 5.34.0\n */\n onSystemBeforeInstall,\n onSystemAfterInstall,\n onSystemInstallError,\n getSystemVersion: getVersion,\n setSystemVersion: setVersion,\n getReadAPIKey: async () => {\n const original = await storageOperations.system.get({\n tenant: getTenant().id\n });\n\n if (!original) {\n return null;\n }\n\n if (!original.readAPIKey) {\n const readAPIKey = createReadAPIKey();\n const system: CmsSystem = {\n ...original,\n readAPIKey\n };\n await storageOperations.system.update({\n system\n });\n return readAPIKey;\n }\n\n return original.readAPIKey;\n },\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 readAPIKey: createReadAPIKey(),\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 async upgradeSystem(this: HeadlessCms, version) {\n const identity = getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n\n const upgradePlugins = context.plugins\n .byType<UpgradePlugin>(\"api-upgrade\")\n .filter(pl => pl.app === \"headless-cms\");\n\n const installedAppVersion = await this.getSystemVersion();\n\n let plugin: UpgradePlugin | undefined = undefined;\n try {\n plugin = getApplicablePlugin({\n deployedVersion: context.WEBINY_VERSION,\n installedAppVersion,\n upgradePlugins,\n upgradeToVersion: version\n });\n } catch (ex) {\n /**\n * We just let the error disappear if is UPGRADE_NOT_AVAILABLE code\n * and rethrow if is not.\n * This is because we want upgrade to pass if there is no plugin available.\n */\n if (ex.code !== ErrorCode.UPGRADE_NOT_AVAILABLE) {\n throw ex;\n }\n }\n\n if (plugin) {\n await plugin.apply(context);\n }\n\n /**\n * Store new app version.\n */\n await setVersion(version);\n\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["initialContentModelGroup","name","slug","description","icon","createSystemCrud","params","getTenant","getLocale","storageOperations","context","getIdentity","onSystemBeforeInstall","createTopic","onSystemAfterInstall","onSystemInstallError","createReadAPIKey","crypto","randomBytes","Math","ceil","toString","getVersion","system","get","tenant","id","version","setVersion","original","create","update","onBeforeSystemInstall","onAfterSystemInstall","getSystemVersion","setSystemVersion","getReadAPIKey","readAPIKey","installSystem","identity","NotAuthorizedError","publish","locale","code","cms","createGroup","ex","WebinyError","message","group","WEBINY_VERSION","error","data","upgradeSystem","upgradePlugins","plugins","byType","filter","pl","app","installedAppVersion","plugin","undefined","getApplicablePlugin","deployedVersion","upgradeToVersion","ErrorCode","UPGRADE_NOT_AVAILABLE","apply"],"sources":["system.crud.ts"],"sourcesContent":["import crypto from \"crypto\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { ErrorCode, getApplicablePlugin } from \"@webiny/api-upgrade\";\nimport { UpgradePlugin } from \"@webiny/api-upgrade/types\";\nimport WebinyError from \"@webiny/error\";\nimport {\n OnSystemAfterInstallTopicParams,\n OnSystemBeforeInstallTopicParams,\n CmsContext,\n CmsSystem,\n CmsSystemContext,\n HeadlessCms,\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 createReadAPIKey = () => {\n return crypto.randomBytes(Math.ceil(48 / 2)).toString(\"hex\");\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 * Deprecated - will be removed in 5.36.0\n */\n onBeforeSystemInstall: onSystemBeforeInstall,\n onAfterSystemInstall: onSystemAfterInstall,\n /**\n * Released in 5.34.0\n */\n onSystemBeforeInstall,\n onSystemAfterInstall,\n onSystemInstallError,\n getSystemVersion: getVersion,\n setSystemVersion: setVersion,\n getReadAPIKey: async () => {\n const original = await storageOperations.system.get({\n tenant: getTenant().id\n });\n\n if (!original) {\n return null;\n }\n\n if (!original.readAPIKey) {\n const readAPIKey = createReadAPIKey();\n const system: CmsSystem = {\n ...original,\n readAPIKey\n };\n await storageOperations.system.update({\n system\n });\n return readAPIKey;\n }\n\n return original.readAPIKey;\n },\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 readAPIKey: createReadAPIKey(),\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 async upgradeSystem(this: HeadlessCms, version) {\n const identity = getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n\n const upgradePlugins = context.plugins\n .byType<UpgradePlugin>(\"api-upgrade\")\n .filter(pl => pl.app === \"headless-cms\");\n\n const installedAppVersion = await this.getSystemVersion();\n\n let plugin: UpgradePlugin | undefined = undefined;\n try {\n plugin = getApplicablePlugin({\n deployedVersion: context.WEBINY_VERSION,\n installedAppVersion,\n upgradePlugins,\n upgradeToVersion: version\n });\n } catch (ex) {\n /**\n * We just let the error disappear if is UPGRADE_NOT_AVAILABLE code\n * and rethrow if is not.\n * This is because we want upgrade to pass if there is no plugin available.\n */\n if (ex.code !== ErrorCode.UPGRADE_NOT_AVAILABLE) {\n throw ex;\n }\n }\n\n if (plugin) {\n await plugin.apply(context);\n }\n\n /**\n * Store new app version.\n */\n await setVersion(version);\n\n return true;\n }\n };\n};\n"],"mappings":"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"}
@@ -1,20 +1,26 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.CmsModelDefaultFieldConverterPlugin = void 0;
9
+
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
9
12
  var _CmsModelFieldConverterPlugin = require("../plugins/CmsModelFieldConverterPlugin");
13
+
10
14
  class CmsModelDefaultFieldConverterPlugin extends _CmsModelFieldConverterPlugin.CmsModelFieldConverterPlugin {
11
15
  constructor(...args) {
12
16
  super(...args);
13
17
  (0, _defineProperty2.default)(this, "name", "cms.field.converter.default");
14
18
  }
19
+
15
20
  getFieldType() {
16
21
  return "*";
17
22
  }
23
+
18
24
  convertToStorage({
19
25
  field,
20
26
  value
@@ -28,10 +34,13 @@ class CmsModelDefaultFieldConverterPlugin extends _CmsModelFieldConverterPlugin.
28
34
  /**
29
35
  * A single and multiple values field conversion;
30
36
  */
37
+
38
+
31
39
  return {
32
40
  [field.storageId]: value
33
41
  };
34
42
  }
43
+
35
44
  convertFromStorage({
36
45
  field,
37
46
  value
@@ -45,9 +54,13 @@ class CmsModelDefaultFieldConverterPlugin extends _CmsModelFieldConverterPlugin.
45
54
  /**
46
55
  * A single and multiple values field conversion;
47
56
  */
57
+
58
+
48
59
  return {
49
60
  [field.fieldId]: value
50
61
  };
51
62
  }
63
+
52
64
  }
65
+
53
66
  exports.CmsModelDefaultFieldConverterPlugin = CmsModelDefaultFieldConverterPlugin;
@@ -1 +1 @@
1
- {"version":3,"names":["CmsModelDefaultFieldConverterPlugin","CmsModelFieldConverterPlugin","getFieldType","convertToStorage","field","value","undefined","storageId","convertFromStorage","fieldId"],"sources":["CmsModelDefaultFieldConverterPlugin.ts"],"sourcesContent":["import {\n CmsModelFieldConverterPlugin,\n ConvertParams\n} from \"~/plugins/CmsModelFieldConverterPlugin\";\n\nexport class CmsModelDefaultFieldConverterPlugin extends CmsModelFieldConverterPlugin {\n public override name = \"cms.field.converter.default\";\n\n public override getFieldType(): string {\n return \"*\";\n }\n\n public override convertToStorage({ field, value }: ConvertParams): any {\n /**\n * Do not convert if no value was passed.\n */\n if (value === undefined) {\n return {};\n }\n /**\n * A single and multiple values field conversion;\n */\n return {\n [field.storageId]: value\n };\n }\n\n public override convertFromStorage({ field, value }: ConvertParams): any {\n /**\n * Do not convert if no value was passed.\n */\n if (value === undefined) {\n return {};\n }\n /**\n * A single and multiple values field conversion;\n */\n return {\n [field.fieldId]: value\n };\n }\n}\n"],"mappings":";;;;;;;;AAAA;AAKO,MAAMA,mCAAmC,SAASC,0DAA4B,CAAC;EAAA;IAAA;IAAA,4CAC3D,6BAA6B;EAAA;EAEpCC,YAAY,GAAW;IACnC,OAAO,GAAG;EACd;EAEgBC,gBAAgB,CAAC;IAAEC,KAAK;IAAEC;EAAqB,CAAC,EAAO;IACnE;AACR;AACA;IACQ,IAAIA,KAAK,KAAKC,SAAS,EAAE;MACrB,OAAO,CAAC,CAAC;IACb;IACA;AACR;AACA;IACQ,OAAO;MACH,CAACF,KAAK,CAACG,SAAS,GAAGF;IACvB,CAAC;EACL;EAEgBG,kBAAkB,CAAC;IAAEJ,KAAK;IAAEC;EAAqB,CAAC,EAAO;IACrE;AACR;AACA;IACQ,IAAIA,KAAK,KAAKC,SAAS,EAAE;MACrB,OAAO,CAAC,CAAC;IACb;IACA;AACR;AACA;IACQ,OAAO;MACH,CAACF,KAAK,CAACK,OAAO,GAAGJ;IACrB,CAAC;EACL;AACJ;AAAC"}
1
+ {"version":3,"names":["CmsModelDefaultFieldConverterPlugin","CmsModelFieldConverterPlugin","getFieldType","convertToStorage","field","value","undefined","storageId","convertFromStorage","fieldId"],"sources":["CmsModelDefaultFieldConverterPlugin.ts"],"sourcesContent":["import {\n CmsModelFieldConverterPlugin,\n ConvertParams\n} from \"~/plugins/CmsModelFieldConverterPlugin\";\n\nexport class CmsModelDefaultFieldConverterPlugin extends CmsModelFieldConverterPlugin {\n public override name = \"cms.field.converter.default\";\n\n public override getFieldType(): string {\n return \"*\";\n }\n\n public override convertToStorage({ field, value }: ConvertParams): any {\n /**\n * Do not convert if no value was passed.\n */\n if (value === undefined) {\n return {};\n }\n /**\n * A single and multiple values field conversion;\n */\n return {\n [field.storageId]: value\n };\n }\n\n public override convertFromStorage({ field, value }: ConvertParams): any {\n /**\n * Do not convert if no value was passed.\n */\n if (value === undefined) {\n return {};\n }\n /**\n * A single and multiple values field conversion;\n */\n return {\n [field.fieldId]: value\n };\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAKO,MAAMA,mCAAN,SAAkDC,0DAAlD,CAA+E;EAAA;IAAA;IAAA,4CAC3D,6BAD2D;EAAA;;EAGlEC,YAAY,GAAW;IACnC,OAAO,GAAP;EACH;;EAEeC,gBAAgB,CAAC;IAAEC,KAAF;IAASC;EAAT,CAAD,EAAuC;IACnE;AACR;AACA;IACQ,IAAIA,KAAK,KAAKC,SAAd,EAAyB;MACrB,OAAO,EAAP;IACH;IACD;AACR;AACA;;;IACQ,OAAO;MACH,CAACF,KAAK,CAACG,SAAP,GAAmBF;IADhB,CAAP;EAGH;;EAEeG,kBAAkB,CAAC;IAAEJ,KAAF;IAASC;EAAT,CAAD,EAAuC;IACrE;AACR;AACA;IACQ,IAAIA,KAAK,KAAKC,SAAd,EAAyB;MACrB,OAAO,EAAP;IACH;IACD;AACR;AACA;;;IACQ,OAAO;MACH,CAACF,KAAK,CAACK,OAAP,GAAiBJ;IADd,CAAP;EAGH;;AAnCiF"}
@@ -1,27 +1,36 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.CmsModelObjectFieldConverterPlugin = void 0;
9
+
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
9
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
10
14
  var _CmsModelFieldConverterPlugin = require("../plugins/CmsModelFieldConverterPlugin");
15
+
11
16
  class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.CmsModelFieldConverterPlugin {
12
17
  constructor(...args) {
13
18
  super(...args);
14
19
  (0, _defineProperty2.default)(this, "name", "cms.field.converter.object");
15
20
  }
21
+
16
22
  getFieldType() {
17
23
  return "object";
18
24
  }
25
+
19
26
  getChildFields({
20
27
  field
21
28
  }) {
22
29
  var _field$settings;
30
+
23
31
  return (field === null || field === void 0 ? void 0 : (_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
24
32
  }
33
+
25
34
  convertToStorage(params) {
26
35
  const {
27
36
  field,
@@ -31,15 +40,18 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
31
40
  const childFields = this.getChildFields({
32
41
  field
33
42
  });
43
+
34
44
  if (childFields.length === 0) {
35
45
  return {};
36
46
  }
47
+
37
48
  if (field.multipleValues) {
38
49
  if (Array.isArray(value) === false) {
39
50
  return {
40
51
  [field.storageId]: []
41
52
  };
42
53
  }
54
+
43
55
  return {
44
56
  [field.storageId]: value.map(itemValue => {
45
57
  return this.processChildFieldsToStorage({
@@ -54,6 +66,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
54
66
  })
55
67
  };
56
68
  }
69
+
57
70
  const values = this.processChildFieldsToStorage({
58
71
  fields: childFields.map(child => {
59
72
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
@@ -63,31 +76,38 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
63
76
  value,
64
77
  converterCollection
65
78
  });
79
+
66
80
  if (values === undefined) {
67
81
  return {};
68
82
  }
83
+
69
84
  return {
70
85
  [field.storageId]: values
71
86
  };
72
87
  }
88
+
73
89
  processChildFieldsToStorage(params) {
74
90
  const {
75
91
  fields,
76
92
  value,
77
93
  converterCollection
78
94
  } = params;
95
+
79
96
  if (value === undefined || value === null) {
80
97
  return undefined;
81
98
  }
99
+
82
100
  return fields.reduce((output, field) => {
83
101
  const childFields = this.getChildFields({
84
102
  field
85
103
  });
104
+
86
105
  if (childFields.length > 0) {
87
106
  if (field.multipleValues) {
88
107
  if (Array.isArray(value[field.fieldId]) === false) {
89
108
  return output;
90
109
  }
110
+
91
111
  const values = value[field.fieldId].map(childValue => {
92
112
  return converterCollection.convertToStorage({
93
113
  fields: childFields.map(child => {
@@ -98,9 +118,11 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
98
118
  values: childValue
99
119
  });
100
120
  });
121
+
101
122
  if (values === undefined) {
102
123
  return output;
103
124
  }
125
+
104
126
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
105
127
  [field.storageId]: values
106
128
  });
@@ -108,9 +130,12 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
108
130
  /**
109
131
  * No need to process child fields if no value is provided.
110
132
  */
133
+
134
+
111
135
  if (!value[field.fieldId]) {
112
136
  return output;
113
137
  }
138
+
114
139
  const values = converterCollection.convertToStorage({
115
140
  fields: childFields.map(child => {
116
141
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
@@ -119,21 +144,26 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
119
144
  }),
120
145
  values: value[field.fieldId]
121
146
  });
147
+
122
148
  if (values === undefined) {
123
149
  return output;
124
150
  }
151
+
125
152
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
126
153
  [field.storageId]: values
127
154
  });
128
155
  }
156
+
129
157
  if (value[field.fieldId] === undefined) {
130
158
  return output;
131
159
  }
160
+
132
161
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
133
162
  [field.storageId]: value[field.fieldId]
134
163
  });
135
164
  }, {});
136
165
  }
166
+
137
167
  convertFromStorage(params) {
138
168
  const {
139
169
  field,
@@ -143,15 +173,18 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
143
173
  const childFields = this.getChildFields({
144
174
  field
145
175
  });
176
+
146
177
  if (childFields.length === 0) {
147
178
  return {};
148
179
  }
180
+
149
181
  if (field.multipleValues) {
150
182
  if (Array.isArray(value) === false) {
151
183
  return {
152
184
  [field.fieldId]: []
153
185
  };
154
186
  }
187
+
155
188
  return {
156
189
  [field.fieldId]: value.map(itemValue => {
157
190
  return this.processChildFieldsFromStorage({
@@ -166,6 +199,7 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
166
199
  })
167
200
  };
168
201
  }
202
+
169
203
  const values = this.processChildFieldsFromStorage({
170
204
  fields: childFields.map(child => {
171
205
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
@@ -175,32 +209,40 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
175
209
  value,
176
210
  converterCollection
177
211
  });
212
+
178
213
  if (values === undefined) {
179
214
  return {};
180
215
  }
216
+
181
217
  return {
182
218
  [field.fieldId]: values
183
219
  };
184
220
  }
221
+
185
222
  processChildFieldsFromStorage(params) {
186
223
  const {
187
224
  fields,
188
225
  value,
189
226
  converterCollection
190
227
  } = params;
228
+
191
229
  if (value === undefined || value === null) {
192
230
  return undefined;
193
231
  }
232
+
194
233
  return fields.reduce((output, field) => {
195
234
  const childFields = this.getChildFields({
196
235
  field
197
236
  });
237
+
198
238
  if (childFields.length > 0) {
199
239
  if (field.multipleValues) {
200
240
  const inputValues = value[field.storageId];
241
+
201
242
  if (!inputValues || Array.isArray(inputValues) === false) {
202
243
  return output;
203
244
  }
245
+
204
246
  const values = inputValues.map(childValue => {
205
247
  return converterCollection.convertFromStorage({
206
248
  fields: childFields.map(child => {
@@ -211,9 +253,11 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
211
253
  values: childValue
212
254
  });
213
255
  });
256
+
214
257
  if (values === undefined) {
215
258
  return output;
216
259
  }
260
+
217
261
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
218
262
  [field.fieldId]: values
219
263
  });
@@ -221,9 +265,12 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
221
265
  /**
222
266
  * No need to process child fields if no value is provided.
223
267
  */
268
+
269
+
224
270
  if (!value[field.storageId]) {
225
271
  return output;
226
272
  }
273
+
227
274
  const values = converterCollection.convertFromStorage({
228
275
  fields: childFields.map(child => {
229
276
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
@@ -232,20 +279,26 @@ class CmsModelObjectFieldConverterPlugin extends _CmsModelFieldConverterPlugin.C
232
279
  }),
233
280
  values: value[field.storageId]
234
281
  });
282
+
235
283
  if (values === undefined) {
236
284
  return output;
237
285
  }
286
+
238
287
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
239
288
  [field.fieldId]: values
240
289
  });
241
290
  }
291
+
242
292
  if (value[field.storageId] === undefined) {
243
293
  return output;
244
294
  }
295
+
245
296
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
246
297
  [field.fieldId]: value[field.storageId]
247
298
  });
248
299
  }, {});
249
300
  }
301
+
250
302
  }
303
+
251
304
  exports.CmsModelObjectFieldConverterPlugin = CmsModelObjectFieldConverterPlugin;
@@ -1 +1 @@
1
- {"version":3,"names":["CmsModelObjectFieldConverterPlugin","CmsModelFieldConverterPlugin","getFieldType","getChildFields","field","settings","fields","convertToStorage","params","value","converterCollection","childFields","length","multipleValues","Array","isArray","storageId","map","itemValue","processChildFieldsToStorage","child","parent","values","undefined","reduce","output","fieldId","childValue","convertFromStorage","processChildFieldsFromStorage","inputValues"],"sources":["CmsModelObjectFieldConverterPlugin.ts"],"sourcesContent":["import {\n CmsModelFieldConverterPlugin,\n ConvertParams\n} from \"~/plugins/CmsModelFieldConverterPlugin\";\nimport { CmsEntryValues, CmsModelFieldWithParent } from \"~/types\";\nimport { ConverterCollection } from \"~/utils/converters/ConverterCollection\";\n\ninterface ProcessChildFieldsParams {\n fields: CmsModelFieldWithParent[];\n value?: Record<string, any> | null;\n converterCollection: ConverterCollection;\n}\n\ninterface GetChildFieldsParams {\n field?: CmsModelFieldWithParent | null;\n}\n\nexport class CmsModelObjectFieldConverterPlugin extends CmsModelFieldConverterPlugin {\n public override name = \"cms.field.converter.object\";\n\n public override getFieldType(): string {\n return \"object\";\n }\n\n private getChildFields({ field }: GetChildFieldsParams): CmsModelFieldWithParent[] {\n return field?.settings?.fields || [];\n }\n\n public override convertToStorage(params: ConvertParams): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const childFields = this.getChildFields({\n field\n });\n if (childFields.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (Array.isArray(value) === false) {\n return {\n [field.storageId]: []\n };\n }\n return {\n [field.storageId]: value.map((itemValue: any) => {\n return this.processChildFieldsToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value: itemValue,\n converterCollection\n });\n })\n };\n }\n\n const values = this.processChildFieldsToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value,\n converterCollection\n });\n if (values === undefined) {\n return {};\n }\n\n return {\n [field.storageId]: values\n };\n }\n\n private processChildFieldsToStorage(\n params: ProcessChildFieldsParams\n ): CmsEntryValues | undefined {\n const { fields, value, converterCollection } = params;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const childFields = this.getChildFields({\n field\n });\n\n if (childFields.length > 0) {\n if (field.multipleValues) {\n if (Array.isArray(value[field.fieldId]) === false) {\n return output;\n }\n const values = value[field.fieldId].map((childValue: any) => {\n return converterCollection.convertToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: childValue\n });\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.storageId]: values\n };\n }\n /**\n * No need to process child fields if no value is provided.\n */\n if (!value[field.fieldId]) {\n return output;\n }\n const values = converterCollection.convertToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: value[field.fieldId]\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.storageId]: values\n };\n }\n\n if (value[field.fieldId] === undefined) {\n return output;\n }\n\n return {\n ...output,\n [field.storageId]: value[field.fieldId]\n };\n }, {});\n }\n\n public override convertFromStorage(params: ConvertParams): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const childFields = this.getChildFields({\n field\n });\n if (childFields.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (Array.isArray(value) === false) {\n return {\n [field.fieldId]: []\n };\n }\n return {\n [field.fieldId]: value.map((itemValue: any) => {\n return this.processChildFieldsFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value: itemValue,\n converterCollection\n });\n })\n };\n }\n\n const values = this.processChildFieldsFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value,\n converterCollection\n });\n\n if (values === undefined) {\n return {};\n }\n\n return {\n [field.fieldId]: values\n };\n }\n\n private processChildFieldsFromStorage(\n params: ProcessChildFieldsParams\n ): CmsEntryValues | undefined {\n const { fields, value, converterCollection } = params;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const childFields = this.getChildFields({\n field\n });\n\n if (childFields.length > 0) {\n if (field.multipleValues) {\n const inputValues = value[field.storageId] as any[] | undefined;\n if (!inputValues || Array.isArray(inputValues) === false) {\n return output;\n }\n const values = inputValues.map(childValue => {\n return converterCollection.convertFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: childValue\n });\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: values\n };\n }\n /**\n * No need to process child fields if no value is provided.\n */\n if (!value[field.storageId]) {\n return output;\n }\n const values = converterCollection.convertFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: value[field.storageId]\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: values\n };\n }\n\n if (value[field.storageId] === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: value[field.storageId]\n };\n }, {});\n }\n}\n"],"mappings":";;;;;;;;;AAAA;AAiBO,MAAMA,kCAAkC,SAASC,0DAA4B,CAAC;EAAA;IAAA;IAAA,4CAC1D,4BAA4B;EAAA;EAEnCC,YAAY,GAAW;IACnC,OAAO,QAAQ;EACnB;EAEQC,cAAc,CAAC;IAAEC;EAA4B,CAAC,EAA6B;IAAA;IAC/E,OAAO,CAAAA,KAAK,aAALA,KAAK,0CAALA,KAAK,CAAEC,QAAQ,oDAAf,gBAAiBC,MAAM,KAAI,EAAE;EACxC;EAEgBC,gBAAgB,CAACC,MAAqB,EAAkB;IACpE,MAAM;MAAEJ,KAAK;MAAEK,KAAK;MAAEC;IAAoB,CAAC,GAAGF,MAAM;IAEpD,MAAMG,WAAW,GAAG,IAAI,CAACR,cAAc,CAAC;MACpCC;IACJ,CAAC,CAAC;IACF,IAAIO,WAAW,CAACC,MAAM,KAAK,CAAC,EAAE;MAC1B,OAAO,CAAC,CAAC;IACb;IAEA,IAAIR,KAAK,CAACS,cAAc,EAAE;MACtB,IAAIC,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC,KAAK,KAAK,EAAE;QAChC,OAAO;UACH,CAACL,KAAK,CAACY,SAAS,GAAG;QACvB,CAAC;MACL;MACA,OAAO;QACH,CAACZ,KAAK,CAACY,SAAS,GAAGP,KAAK,CAACQ,GAAG,CAAEC,SAAc,IAAK;UAC7C,OAAO,IAAI,CAACC,2BAA2B,CAAC;YACpCb,MAAM,EAAEK,WAAW,CAACM,GAAG,CAACG,KAAK,IAAI;cAC7B,mEACOA,KAAK;gBACRC,MAAM,EAAEjB;cAAK;YAErB,CAAC,CAAC;YACFK,KAAK,EAAES,SAAS;YAChBR;UACJ,CAAC,CAAC;QACN,CAAC;MACL,CAAC;IACL;IAEA,MAAMY,MAAM,GAAG,IAAI,CAACH,2BAA2B,CAAC;MAC5Cb,MAAM,EAAEK,WAAW,CAACM,GAAG,CAACG,KAAK,IAAI;QAC7B,mEACOA,KAAK;UACRC,MAAM,EAAEjB;QAAK;MAErB,CAAC,CAAC;MACFK,KAAK;MACLC;IACJ,CAAC,CAAC;IACF,IAAIY,MAAM,KAAKC,SAAS,EAAE;MACtB,OAAO,CAAC,CAAC;IACb;IAEA,OAAO;MACH,CAACnB,KAAK,CAACY,SAAS,GAAGM;IACvB,CAAC;EACL;EAEQH,2BAA2B,CAC/BX,MAAgC,EACN;IAC1B,MAAM;MAAEF,MAAM;MAAEG,KAAK;MAAEC;IAAoB,CAAC,GAAGF,MAAM;IAErD,IAAIC,KAAK,KAAKc,SAAS,IAAId,KAAK,KAAK,IAAI,EAAE;MACvC,OAAOc,SAAS;IACpB;IAEA,OAAOjB,MAAM,CAACkB,MAAM,CAAiB,CAACC,MAAM,EAAErB,KAAK,KAAK;MACpD,MAAMO,WAAW,GAAG,IAAI,CAACR,cAAc,CAAC;QACpCC;MACJ,CAAC,CAAC;MAEF,IAAIO,WAAW,CAACC,MAAM,GAAG,CAAC,EAAE;QACxB,IAAIR,KAAK,CAACS,cAAc,EAAE;UACtB,IAAIC,KAAK,CAACC,OAAO,CAACN,KAAK,CAACL,KAAK,CAACsB,OAAO,CAAC,CAAC,KAAK,KAAK,EAAE;YAC/C,OAAOD,MAAM;UACjB;UACA,MAAMH,MAAM,GAAGb,KAAK,CAACL,KAAK,CAACsB,OAAO,CAAC,CAACT,GAAG,CAAEU,UAAe,IAAK;YACzD,OAAOjB,mBAAmB,CAACH,gBAAgB,CAAC;cACxCD,MAAM,EAAEK,WAAW,CAACM,GAAG,CAACG,KAAK,IAAI;gBAC7B,mEACOA,KAAK;kBACRC,MAAM,EAAEjB;gBAAK;cAErB,CAAC,CAAC;cACFkB,MAAM,EAAEK;YACZ,CAAC,CAAC;UACN,CAAC,CAAC;UACF,IAAIL,MAAM,KAAKC,SAAS,EAAE;YACtB,OAAOE,MAAM;UACjB;UACA,mEACOA,MAAM;YACT,CAACrB,KAAK,CAACY,SAAS,GAAGM;UAAM;QAEjC;QACA;AAChB;AACA;QACgB,IAAI,CAACb,KAAK,CAACL,KAAK,CAACsB,OAAO,CAAC,EAAE;UACvB,OAAOD,MAAM;QACjB;QACA,MAAMH,MAAM,GAAGZ,mBAAmB,CAACH,gBAAgB,CAAC;UAChDD,MAAM,EAAEK,WAAW,CAACM,GAAG,CAACG,KAAK,IAAI;YAC7B,mEACOA,KAAK;cACRC,MAAM,EAAEjB;YAAK;UAErB,CAAC,CAAC;UACFkB,MAAM,EAAEb,KAAK,CAACL,KAAK,CAACsB,OAAO;QAC/B,CAAC,CAAC;QACF,IAAIJ,MAAM,KAAKC,SAAS,EAAE;UACtB,OAAOE,MAAM;QACjB;QACA,mEACOA,MAAM;UACT,CAACrB,KAAK,CAACY,SAAS,GAAGM;QAAM;MAEjC;MAEA,IAAIb,KAAK,CAACL,KAAK,CAACsB,OAAO,CAAC,KAAKH,SAAS,EAAE;QACpC,OAAOE,MAAM;MACjB;MAEA,mEACOA,MAAM;QACT,CAACrB,KAAK,CAACY,SAAS,GAAGP,KAAK,CAACL,KAAK,CAACsB,OAAO;MAAC;IAE/C,CAAC,EAAE,CAAC,CAAC,CAAC;EACV;EAEgBE,kBAAkB,CAACpB,MAAqB,EAAkB;IACtE,MAAM;MAAEJ,KAAK;MAAEK,KAAK;MAAEC;IAAoB,CAAC,GAAGF,MAAM;IAEpD,MAAMG,WAAW,GAAG,IAAI,CAACR,cAAc,CAAC;MACpCC;IACJ,CAAC,CAAC;IACF,IAAIO,WAAW,CAACC,MAAM,KAAK,CAAC,EAAE;MAC1B,OAAO,CAAC,CAAC;IACb;IAEA,IAAIR,KAAK,CAACS,cAAc,EAAE;MACtB,IAAIC,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC,KAAK,KAAK,EAAE;QAChC,OAAO;UACH,CAACL,KAAK,CAACsB,OAAO,GAAG;QACrB,CAAC;MACL;MACA,OAAO;QACH,CAACtB,KAAK,CAACsB,OAAO,GAAGjB,KAAK,CAACQ,GAAG,CAAEC,SAAc,IAAK;UAC3C,OAAO,IAAI,CAACW,6BAA6B,CAAC;YACtCvB,MAAM,EAAEK,WAAW,CAACM,GAAG,CAACG,KAAK,IAAI;cAC7B,mEACOA,KAAK;gBACRC,MAAM,EAAEjB;cAAK;YAErB,CAAC,CAAC;YACFK,KAAK,EAAES,SAAS;YAChBR;UACJ,CAAC,CAAC;QACN,CAAC;MACL,CAAC;IACL;IAEA,MAAMY,MAAM,GAAG,IAAI,CAACO,6BAA6B,CAAC;MAC9CvB,MAAM,EAAEK,WAAW,CAACM,GAAG,CAACG,KAAK,IAAI;QAC7B,mEACOA,KAAK;UACRC,MAAM,EAAEjB;QAAK;MAErB,CAAC,CAAC;MACFK,KAAK;MACLC;IACJ,CAAC,CAAC;IAEF,IAAIY,MAAM,KAAKC,SAAS,EAAE;MACtB,OAAO,CAAC,CAAC;IACb;IAEA,OAAO;MACH,CAACnB,KAAK,CAACsB,OAAO,GAAGJ;IACrB,CAAC;EACL;EAEQO,6BAA6B,CACjCrB,MAAgC,EACN;IAC1B,MAAM;MAAEF,MAAM;MAAEG,KAAK;MAAEC;IAAoB,CAAC,GAAGF,MAAM;IAErD,IAAIC,KAAK,KAAKc,SAAS,IAAId,KAAK,KAAK,IAAI,EAAE;MACvC,OAAOc,SAAS;IACpB;IAEA,OAAOjB,MAAM,CAACkB,MAAM,CAAiB,CAACC,MAAM,EAAErB,KAAK,KAAK;MACpD,MAAMO,WAAW,GAAG,IAAI,CAACR,cAAc,CAAC;QACpCC;MACJ,CAAC,CAAC;MAEF,IAAIO,WAAW,CAACC,MAAM,GAAG,CAAC,EAAE;QACxB,IAAIR,KAAK,CAACS,cAAc,EAAE;UACtB,MAAMiB,WAAW,GAAGrB,KAAK,CAACL,KAAK,CAACY,SAAS,CAAsB;UAC/D,IAAI,CAACc,WAAW,IAAIhB,KAAK,CAACC,OAAO,CAACe,WAAW,CAAC,KAAK,KAAK,EAAE;YACtD,OAAOL,MAAM;UACjB;UACA,MAAMH,MAAM,GAAGQ,WAAW,CAACb,GAAG,CAACU,UAAU,IAAI;YACzC,OAAOjB,mBAAmB,CAACkB,kBAAkB,CAAC;cAC1CtB,MAAM,EAAEK,WAAW,CAACM,GAAG,CAACG,KAAK,IAAI;gBAC7B,mEACOA,KAAK;kBACRC,MAAM,EAAEjB;gBAAK;cAErB,CAAC,CAAC;cACFkB,MAAM,EAAEK;YACZ,CAAC,CAAC;UACN,CAAC,CAAC;UACF,IAAIL,MAAM,KAAKC,SAAS,EAAE;YACtB,OAAOE,MAAM;UACjB;UACA,mEACOA,MAAM;YACT,CAACrB,KAAK,CAACsB,OAAO,GAAGJ;UAAM;QAE/B;QACA;AAChB;AACA;QACgB,IAAI,CAACb,KAAK,CAACL,KAAK,CAACY,SAAS,CAAC,EAAE;UACzB,OAAOS,MAAM;QACjB;QACA,MAAMH,MAAM,GAAGZ,mBAAmB,CAACkB,kBAAkB,CAAC;UAClDtB,MAAM,EAAEK,WAAW,CAACM,GAAG,CAACG,KAAK,IAAI;YAC7B,mEACOA,KAAK;cACRC,MAAM,EAAEjB;YAAK;UAErB,CAAC,CAAC;UACFkB,MAAM,EAAEb,KAAK,CAACL,KAAK,CAACY,SAAS;QACjC,CAAC,CAAC;QACF,IAAIM,MAAM,KAAKC,SAAS,EAAE;UACtB,OAAOE,MAAM;QACjB;QACA,mEACOA,MAAM;UACT,CAACrB,KAAK,CAACsB,OAAO,GAAGJ;QAAM;MAE/B;MAEA,IAAIb,KAAK,CAACL,KAAK,CAACY,SAAS,CAAC,KAAKO,SAAS,EAAE;QACtC,OAAOE,MAAM;MACjB;MACA,mEACOA,MAAM;QACT,CAACrB,KAAK,CAACsB,OAAO,GAAGjB,KAAK,CAACL,KAAK,CAACY,SAAS;MAAC;IAE/C,CAAC,EAAE,CAAC,CAAC,CAAC;EACV;AACJ;AAAC"}
1
+ {"version":3,"names":["CmsModelObjectFieldConverterPlugin","CmsModelFieldConverterPlugin","getFieldType","getChildFields","field","settings","fields","convertToStorage","params","value","converterCollection","childFields","length","multipleValues","Array","isArray","storageId","map","itemValue","processChildFieldsToStorage","child","parent","values","undefined","reduce","output","fieldId","childValue","convertFromStorage","processChildFieldsFromStorage","inputValues"],"sources":["CmsModelObjectFieldConverterPlugin.ts"],"sourcesContent":["import {\n CmsModelFieldConverterPlugin,\n ConvertParams\n} from \"~/plugins/CmsModelFieldConverterPlugin\";\nimport { CmsEntryValues, CmsModelFieldWithParent } from \"~/types\";\nimport { ConverterCollection } from \"~/utils/converters/ConverterCollection\";\n\ninterface ProcessChildFieldsParams {\n fields: CmsModelFieldWithParent[];\n value?: Record<string, any> | null;\n converterCollection: ConverterCollection;\n}\n\ninterface GetChildFieldsParams {\n field?: CmsModelFieldWithParent | null;\n}\n\nexport class CmsModelObjectFieldConverterPlugin extends CmsModelFieldConverterPlugin {\n public override name = \"cms.field.converter.object\";\n\n public override getFieldType(): string {\n return \"object\";\n }\n\n private getChildFields({ field }: GetChildFieldsParams): CmsModelFieldWithParent[] {\n return field?.settings?.fields || [];\n }\n\n public override convertToStorage(params: ConvertParams): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const childFields = this.getChildFields({\n field\n });\n if (childFields.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (Array.isArray(value) === false) {\n return {\n [field.storageId]: []\n };\n }\n return {\n [field.storageId]: value.map((itemValue: any) => {\n return this.processChildFieldsToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value: itemValue,\n converterCollection\n });\n })\n };\n }\n\n const values = this.processChildFieldsToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value,\n converterCollection\n });\n if (values === undefined) {\n return {};\n }\n\n return {\n [field.storageId]: values\n };\n }\n\n private processChildFieldsToStorage(\n params: ProcessChildFieldsParams\n ): CmsEntryValues | undefined {\n const { fields, value, converterCollection } = params;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const childFields = this.getChildFields({\n field\n });\n\n if (childFields.length > 0) {\n if (field.multipleValues) {\n if (Array.isArray(value[field.fieldId]) === false) {\n return output;\n }\n const values = value[field.fieldId].map((childValue: any) => {\n return converterCollection.convertToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: childValue\n });\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.storageId]: values\n };\n }\n /**\n * No need to process child fields if no value is provided.\n */\n if (!value[field.fieldId]) {\n return output;\n }\n const values = converterCollection.convertToStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: value[field.fieldId]\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.storageId]: values\n };\n }\n\n if (value[field.fieldId] === undefined) {\n return output;\n }\n\n return {\n ...output,\n [field.storageId]: value[field.fieldId]\n };\n }, {});\n }\n\n public override convertFromStorage(params: ConvertParams): CmsEntryValues {\n const { field, value, converterCollection } = params;\n\n const childFields = this.getChildFields({\n field\n });\n if (childFields.length === 0) {\n return {};\n }\n\n if (field.multipleValues) {\n if (Array.isArray(value) === false) {\n return {\n [field.fieldId]: []\n };\n }\n return {\n [field.fieldId]: value.map((itemValue: any) => {\n return this.processChildFieldsFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value: itemValue,\n converterCollection\n });\n })\n };\n }\n\n const values = this.processChildFieldsFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n value,\n converterCollection\n });\n\n if (values === undefined) {\n return {};\n }\n\n return {\n [field.fieldId]: values\n };\n }\n\n private processChildFieldsFromStorage(\n params: ProcessChildFieldsParams\n ): CmsEntryValues | undefined {\n const { fields, value, converterCollection } = params;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return fields.reduce<CmsEntryValues>((output, field) => {\n const childFields = this.getChildFields({\n field\n });\n\n if (childFields.length > 0) {\n if (field.multipleValues) {\n const inputValues = value[field.storageId] as any[] | undefined;\n if (!inputValues || Array.isArray(inputValues) === false) {\n return output;\n }\n const values = inputValues.map(childValue => {\n return converterCollection.convertFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: childValue\n });\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: values\n };\n }\n /**\n * No need to process child fields if no value is provided.\n */\n if (!value[field.storageId]) {\n return output;\n }\n const values = converterCollection.convertFromStorage({\n fields: childFields.map(child => {\n return {\n ...child,\n parent: field\n };\n }),\n values: value[field.storageId]\n });\n if (values === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: values\n };\n }\n\n if (value[field.storageId] === undefined) {\n return output;\n }\n return {\n ...output,\n [field.fieldId]: value[field.storageId]\n };\n }, {});\n }\n}\n"],"mappings":"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"}