@webiny/api-headless-cms 0.0.0-unstable.df7a8bb475 → 0.0.0-unstable.e2758ee1cf

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 (204) hide show
  1. package/constants.d.ts +2 -1
  2. package/constants.js +4 -0
  3. package/constants.js.map +1 -1
  4. package/crud/contentEntry/entryDataFactories/createEntryData.js +4 -3
  5. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
  6. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +4 -3
  7. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
  8. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +4 -1
  9. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -1
  10. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +4 -1
  11. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -1
  12. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +2 -1
  13. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -1
  14. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +4 -3
  15. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -1
  16. package/crud/contentEntry/entryDataFactories/system.d.ts +10 -0
  17. package/crud/contentEntry/entryDataFactories/system.js +14 -0
  18. package/crud/contentEntry/entryDataFactories/system.js.map +1 -0
  19. package/crud/contentEntry/searchableFields.js +6 -2
  20. package/crud/contentEntry/searchableFields.js.map +1 -1
  21. package/crud/contentModel/validation.d.ts +9 -9
  22. package/crud/contentModel/validation.js +3 -3
  23. package/crud/contentModel/validation.js.map +1 -1
  24. package/domain/contentModel/errors.d.ts +1 -1
  25. package/domain/contentModel/errors.js.map +1 -1
  26. package/domain/contentModel/schemas.d.ts +126 -8
  27. package/domain/contentModel/schemas.js +12 -13
  28. package/domain/contentModel/schemas.js.map +1 -1
  29. package/export/graphql/index.js +1 -1
  30. package/export/graphql/index.js.map +1 -1
  31. package/exports/api/cms/model.d.ts +1 -0
  32. package/exports/api/cms/model.js.map +1 -1
  33. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.d.ts +2 -2
  34. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +3 -4
  35. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
  36. package/features/contentModel/CreateModel/CreateModelRepository.js +4 -1
  37. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  38. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +12 -3
  39. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  40. package/features/contentModel/UpdateModel/UpdateModelRepository.js +8 -2
  41. package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
  42. package/features/contentModel/UpdateModel/UpdateModelUseCase.js +4 -1
  43. package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
  44. package/features/modelBuilder/feature.js +6 -0
  45. package/features/modelBuilder/feature.js.map +1 -1
  46. package/features/modelBuilder/fields/BaseFieldBuilder.d.ts +36 -0
  47. package/features/modelBuilder/fields/BaseFieldBuilder.js +41 -0
  48. package/features/modelBuilder/fields/BaseFieldBuilder.js.map +1 -0
  49. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +228 -0
  50. package/features/modelBuilder/fields/DataFieldBuilder.js +219 -0
  51. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -0
  52. package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +2 -2
  53. package/features/modelBuilder/fields/DynamicZoneFieldType.js +10 -3
  54. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  55. package/features/modelBuilder/fields/FieldBuilder.d.ts +5 -50
  56. package/features/modelBuilder/fields/FieldBuilder.js +3 -165
  57. package/features/modelBuilder/fields/FieldBuilder.js.map +1 -1
  58. package/features/modelBuilder/fields/FieldBuilderRegistry.js +11 -1
  59. package/features/modelBuilder/fields/FieldBuilderRegistry.js.map +1 -1
  60. package/features/modelBuilder/fields/LayoutFieldBuilder.d.ts +7 -0
  61. package/features/modelBuilder/fields/LayoutFieldBuilder.js +9 -0
  62. package/features/modelBuilder/fields/LayoutFieldBuilder.js.map +1 -0
  63. package/features/modelBuilder/fields/ObjectFieldType.d.ts +4 -3
  64. package/features/modelBuilder/fields/ObjectFieldType.js +19 -4
  65. package/features/modelBuilder/fields/ObjectFieldType.js.map +1 -1
  66. package/features/modelBuilder/fields/UiAlertFieldType.d.ts +19 -0
  67. package/features/modelBuilder/fields/UiAlertFieldType.js +36 -0
  68. package/features/modelBuilder/fields/UiAlertFieldType.js.map +1 -0
  69. package/features/modelBuilder/fields/UiSeparatorFieldType.d.ts +17 -0
  70. package/features/modelBuilder/fields/UiSeparatorFieldType.js +31 -0
  71. package/features/modelBuilder/fields/UiSeparatorFieldType.js.map +1 -0
  72. package/features/modelBuilder/fields/UiTabsFieldType.d.ts +28 -0
  73. package/features/modelBuilder/fields/UiTabsFieldType.js +75 -0
  74. package/features/modelBuilder/fields/UiTabsFieldType.js.map +1 -0
  75. package/features/modelBuilder/fields/abstractions.d.ts +2 -2
  76. package/features/modelBuilder/fields/abstractions.js.map +1 -1
  77. package/features/modelBuilder/index.d.ts +3 -0
  78. package/features/modelBuilder/index.js +3 -0
  79. package/features/modelBuilder/index.js.map +1 -1
  80. package/features/modelBuilder/models/BaseModelBuilder.d.ts +9 -4
  81. package/features/modelBuilder/models/BaseModelBuilder.js +19 -0
  82. package/features/modelBuilder/models/BaseModelBuilder.js.map +1 -1
  83. package/features/modelBuilder/models/PrivateModelBuilder.js +4 -2
  84. package/features/modelBuilder/models/PrivateModelBuilder.js.map +1 -1
  85. package/features/modelBuilder/models/PublicModelBuilder.js +16 -4
  86. package/features/modelBuilder/models/PublicModelBuilder.js.map +1 -1
  87. package/graphql/index.js +2 -1
  88. package/graphql/index.js.map +1 -1
  89. package/graphql/schema/baseSchema.js +17 -15
  90. package/graphql/schema/baseSchema.js.map +1 -1
  91. package/graphql/schema/cms/createEntryResolver.d.ts +10 -0
  92. package/graphql/schema/cms/createEntryResolver.js +56 -0
  93. package/graphql/schema/cms/createEntryResolver.js.map +1 -0
  94. package/graphql/schema/cms/deleteEntryResolver.d.ts +10 -0
  95. package/graphql/schema/cms/deleteEntryResolver.js +56 -0
  96. package/graphql/schema/cms/deleteEntryResolver.js.map +1 -0
  97. package/graphql/schema/cms/getEntryResolver.d.ts +11 -0
  98. package/graphql/schema/cms/getEntryResolver.js +58 -0
  99. package/graphql/schema/cms/getEntryResolver.js.map +1 -0
  100. package/graphql/schema/cms/helpers/buildFieldsSelection.d.ts +23 -0
  101. package/graphql/schema/cms/helpers/buildFieldsSelection.js +79 -0
  102. package/graphql/schema/cms/helpers/buildFieldsSelection.js.map +1 -0
  103. package/graphql/schema/cms/helpers/getErrorMessage.d.ts +4 -0
  104. package/graphql/schema/cms/helpers/getErrorMessage.js +14 -0
  105. package/graphql/schema/cms/helpers/getErrorMessage.js.map +1 -0
  106. package/graphql/schema/cms/helpers/getModel.d.ts +6 -0
  107. package/graphql/schema/cms/helpers/getModel.js +12 -0
  108. package/graphql/schema/cms/helpers/getModel.js.map +1 -0
  109. package/graphql/schema/cms/helpers/index.d.ts +5 -0
  110. package/graphql/schema/cms/helpers/index.js +7 -0
  111. package/graphql/schema/cms/helpers/index.js.map +1 -0
  112. package/graphql/schema/cms/helpers/transformSortToArray.d.ts +18 -0
  113. package/graphql/schema/cms/helpers/transformSortToArray.js +38 -0
  114. package/graphql/schema/cms/helpers/transformSortToArray.js.map +1 -0
  115. package/graphql/schema/cms/helpers/transformWhereToNested.d.ts +17 -0
  116. package/graphql/schema/cms/helpers/transformWhereToNested.js +54 -0
  117. package/graphql/schema/cms/helpers/transformWhereToNested.js.map +1 -0
  118. package/graphql/schema/cms/helpers.d.ts +5 -0
  119. package/graphql/schema/cms/helpers.js +7 -0
  120. package/graphql/schema/cms/helpers.js.map +1 -0
  121. package/graphql/schema/cms/index.d.ts +2 -0
  122. package/graphql/schema/cms/index.js +26 -0
  123. package/graphql/schema/cms/index.js.map +1 -0
  124. package/graphql/schema/cms/listEntriesResolver.d.ts +14 -0
  125. package/graphql/schema/cms/listEntriesResolver.js +97 -0
  126. package/graphql/schema/cms/listEntriesResolver.js.map +1 -0
  127. package/graphql/schema/cms/publishEntryResolver.d.ts +10 -0
  128. package/graphql/schema/cms/publishEntryResolver.js +56 -0
  129. package/graphql/schema/cms/publishEntryResolver.js.map +1 -0
  130. package/graphql/schema/cms/resolvers/createEntry.d.ts +8 -0
  131. package/graphql/schema/cms/resolvers/createEntry.js +17 -0
  132. package/graphql/schema/cms/resolvers/createEntry.js.map +1 -0
  133. package/graphql/schema/cms/resolvers/deleteEntryRevision.d.ts +8 -0
  134. package/graphql/schema/cms/resolvers/deleteEntryRevision.js +17 -0
  135. package/graphql/schema/cms/resolvers/deleteEntryRevision.js.map +1 -0
  136. package/graphql/schema/cms/resolvers/getEntry.d.ts +8 -0
  137. package/graphql/schema/cms/resolvers/getEntry.js +17 -0
  138. package/graphql/schema/cms/resolvers/getEntry.js.map +1 -0
  139. package/graphql/schema/cms/resolvers/index.d.ts +9 -0
  140. package/graphql/schema/cms/resolvers/index.js +11 -0
  141. package/graphql/schema/cms/resolvers/index.js.map +1 -0
  142. package/graphql/schema/cms/resolvers/listEntries.d.ts +8 -0
  143. package/graphql/schema/cms/resolvers/listEntries.js +17 -0
  144. package/graphql/schema/cms/resolvers/listEntries.js.map +1 -0
  145. package/graphql/schema/cms/resolvers/mutationCms.d.ts +8 -0
  146. package/graphql/schema/cms/resolvers/mutationCms.js +24 -0
  147. package/graphql/schema/cms/resolvers/mutationCms.js.map +1 -0
  148. package/graphql/schema/cms/resolvers/publishEntryRevision.d.ts +8 -0
  149. package/graphql/schema/cms/resolvers/publishEntryRevision.js +17 -0
  150. package/graphql/schema/cms/resolvers/publishEntryRevision.js.map +1 -0
  151. package/graphql/schema/cms/resolvers/queryCms.d.ts +8 -0
  152. package/graphql/schema/cms/resolvers/queryCms.js +23 -0
  153. package/graphql/schema/cms/resolvers/queryCms.js.map +1 -0
  154. package/graphql/schema/cms/resolvers/unpublishEntryRevision.d.ts +8 -0
  155. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js +17 -0
  156. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js.map +1 -0
  157. package/graphql/schema/cms/resolvers/updateEntryRevision.d.ts +8 -0
  158. package/graphql/schema/cms/resolvers/updateEntryRevision.js +17 -0
  159. package/graphql/schema/cms/resolvers/updateEntryRevision.js.map +1 -0
  160. package/graphql/schema/cms/typeDefs/index.d.ts +3 -0
  161. package/graphql/schema/cms/typeDefs/index.js +5 -0
  162. package/graphql/schema/cms/typeDefs/index.js.map +1 -0
  163. package/graphql/schema/cms/typeDefs/mutation.d.ts +8 -0
  164. package/graphql/schema/cms/typeDefs/mutation.js +42 -0
  165. package/graphql/schema/cms/typeDefs/mutation.js.map +1 -0
  166. package/graphql/schema/cms/typeDefs/query.d.ts +8 -0
  167. package/graphql/schema/cms/typeDefs/query.js +35 -0
  168. package/graphql/schema/cms/typeDefs/query.js.map +1 -0
  169. package/graphql/schema/cms/typeDefs/responses.d.ts +8 -0
  170. package/graphql/schema/cms/typeDefs/responses.js +35 -0
  171. package/graphql/schema/cms/typeDefs/responses.js.map +1 -0
  172. package/graphql/schema/cms/unpublishEntryResolver.d.ts +10 -0
  173. package/graphql/schema/cms/unpublishEntryResolver.js +56 -0
  174. package/graphql/schema/cms/unpublishEntryResolver.js.map +1 -0
  175. package/graphql/schema/cms/updateEntryResolver.d.ts +11 -0
  176. package/graphql/schema/cms/updateEntryResolver.js +58 -0
  177. package/graphql/schema/cms/updateEntryResolver.js.map +1 -0
  178. package/graphql/schema/contentModels.js +21 -3
  179. package/graphql/schema/contentModels.js.map +1 -1
  180. package/graphql/schema/createManageSDL.js +4 -2
  181. package/graphql/schema/createManageSDL.js.map +1 -1
  182. package/graphqlFields/index.js.map +1 -1
  183. package/package.json +24 -23
  184. package/plugins/CmsModelPlugin.js +19 -4
  185. package/plugins/CmsModelPlugin.js.map +1 -1
  186. package/types/fields/objectField.d.ts +2 -0
  187. package/types/fields/objectField.js.map +1 -1
  188. package/types/model.d.ts +32 -3
  189. package/types/model.js.map +1 -1
  190. package/types/modelField.d.ts +19 -3
  191. package/types/modelField.js.map +1 -1
  192. package/types/types.d.ts +12 -9
  193. package/types/types.js.map +1 -1
  194. package/utils/createModelField.js +4 -2
  195. package/utils/createModelField.js.map +1 -1
  196. package/crud/contentEntry/entryDataFactories/state.d.ts +0 -10
  197. package/crud/contentEntry/entryDataFactories/state.js +0 -16
  198. package/crud/contentEntry/entryDataFactories/state.js.map +0 -1
  199. package/crud/contentModel/validateModel.d.ts +0 -9
  200. package/crud/contentModel/validateModel.js +0 -21
  201. package/crud/contentModel/validateModel.js.map +0 -1
  202. package/crud/contentModel/validateModelFields.d.ts +0 -9
  203. package/crud/contentModel/validateModelFields.js +0 -267
  204. package/crud/contentModel/validateModelFields.js.map +0 -1
package/constants.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { CmsIdentity } from "./types/index.js";
1
+ import type { CmsIdentity, ICmsEntryLive } from "./types/index.js";
2
2
  export declare const ROOT_FOLDER = "root";
3
3
  export declare const CMS_MODEL_SINGLETON_TAG = "singleEntry";
4
4
  export declare const ENTRY_META_FIELDS: readonly ["createdOn", "modifiedOn", "savedOn", "deletedOn", "restoredOn", "firstPublishedOn", "lastPublishedOn", "createdBy", "modifiedBy", "savedBy", "deletedBy", "restoredBy", "firstPublishedBy", "lastPublishedBy", "revisionCreatedOn", "revisionModifiedOn", "revisionSavedOn", "revisionDeletedOn", "revisionRestoredOn", "revisionFirstPublishedOn", "revisionLastPublishedOn", "revisionCreatedBy", "revisionModifiedBy", "revisionSavedBy", "revisionDeletedBy", "revisionRestoredBy", "revisionFirstPublishedBy", "revisionLastPublishedBy"];
@@ -32,6 +32,7 @@ export interface RecordWithEntryMetaFields {
32
32
  restoredBy: CmsIdentity | null;
33
33
  firstPublishedBy: CmsIdentity | null;
34
34
  lastPublishedBy: CmsIdentity | null;
35
+ live: ICmsEntryLive | null;
35
36
  }
36
37
  export declare const pickEntryMetaFields: (object: Partial<RecordWithEntryMetaFields>, filter?: (fieldName: EntryMetaFieldName | string) => boolean) => Partial<RecordWithEntryMetaFields>;
37
38
  export declare const isNullableEntryMetaField: (fieldName: string) => boolean;
package/constants.js CHANGED
@@ -21,6 +21,10 @@ export const pickEntryMetaFields = (object, filter) => {
21
21
  });
22
22
  }
23
23
  }
24
+ /**
25
+ * Also add live field, as it's not part of entry meta fields, but it's required to be transfered.
26
+ */
27
+ pickedEntryMetaFields.live = object.live;
24
28
  return pickedEntryMetaFields;
25
29
  };
26
30
  export const isNullableEntryMetaField = fieldName => {
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["ROOT_FOLDER","CMS_MODEL_SINGLETON_TAG","ENTRY_META_FIELDS","pickEntryMetaFields","object","filter","pickedEntryMetaFields","entryMetaFieldName","fieldExists","undefined","mustPick","Object","assign","isNullableEntryMetaField","fieldName","lcFieldName","toLowerCase","includes","isNonNullableEntryMetaField","isDateTimeEntryMetaField","endsWith","isIdentityEntryMetaField","isRevisionEntryMetaField","startsWith","isEntryLevelEntryMetaField","isDeletedEntryMetaField","isRestoredEntryMetaField"],"sources":["constants.ts"],"sourcesContent":["import type { CmsIdentity } from \"~/types/index.js\";\n\nexport const ROOT_FOLDER = \"root\";\n\nexport const CMS_MODEL_SINGLETON_TAG = \"singleEntry\";\n\n// Content entries - xOn and xBy meta fields.\nexport const ENTRY_META_FIELDS = [\n // Entry-level meta fields.\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\",\n \"createdBy\",\n \"modifiedBy\",\n \"savedBy\",\n \"deletedBy\",\n \"restoredBy\",\n \"firstPublishedBy\",\n \"lastPublishedBy\",\n\n // Revision-level meta fields.\n \"revisionCreatedOn\",\n \"revisionModifiedOn\",\n \"revisionSavedOn\",\n \"revisionDeletedOn\",\n \"revisionRestoredOn\",\n \"revisionFirstPublishedOn\",\n \"revisionLastPublishedOn\",\n \"revisionCreatedBy\",\n \"revisionModifiedBy\",\n \"revisionSavedBy\",\n \"revisionDeletedBy\",\n \"revisionRestoredBy\",\n \"revisionFirstPublishedBy\",\n \"revisionLastPublishedBy\"\n] as const;\n\nexport type EntryMetaFieldName = (typeof ENTRY_META_FIELDS)[number];\n\nexport interface RecordWithEntryMetaFields {\n revisionCreatedOn: string;\n revisionSavedOn: string;\n revisionModifiedOn: string | null;\n revisionDeletedOn: string | null;\n revisionRestoredOn: string | null;\n revisionFirstPublishedOn: string | null;\n revisionLastPublishedOn: string | null;\n revisionCreatedBy: CmsIdentity;\n revisionSavedBy: CmsIdentity;\n revisionModifiedBy: CmsIdentity | null;\n revisionDeletedBy: CmsIdentity | null;\n revisionRestoredBy: CmsIdentity | null;\n revisionFirstPublishedBy: CmsIdentity | null;\n revisionLastPublishedBy: CmsIdentity | null;\n\n // Entry-level meta fields.\n createdOn: string;\n savedOn: string;\n modifiedOn: string | null;\n deletedOn: string | null;\n restoredOn: string | null;\n firstPublishedOn: string | null;\n lastPublishedOn: string | null;\n createdBy: CmsIdentity;\n savedBy: CmsIdentity;\n modifiedBy: CmsIdentity | null;\n deletedBy: CmsIdentity | null;\n restoredBy: CmsIdentity | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n}\n\nexport const pickEntryMetaFields = (\n object: Partial<RecordWithEntryMetaFields>,\n filter?: (fieldName: EntryMetaFieldName | string) => boolean\n) => {\n const pickedEntryMetaFields: Partial<RecordWithEntryMetaFields> = {};\n for (const entryMetaFieldName of ENTRY_META_FIELDS) {\n const fieldExists = entryMetaFieldName in object;\n if (!fieldExists) {\n object[entryMetaFieldName] = undefined;\n }\n\n const mustPick = !filter || filter(entryMetaFieldName);\n if (mustPick) {\n Object.assign(pickedEntryMetaFields, {\n [entryMetaFieldName]: object[entryMetaFieldName]\n });\n }\n }\n\n return pickedEntryMetaFields;\n};\n\nexport const isNullableEntryMetaField = (fieldName: string) => {\n // Only modifiedX, publishedX, deletedX fields are nullable.\n const lcFieldName = fieldName.toLowerCase();\n return (\n lcFieldName.includes(\"modified\") ||\n lcFieldName.includes(\"published\") ||\n lcFieldName.includes(\"deleted\") ||\n lcFieldName.includes(\"restored\")\n );\n};\n\nexport const isNonNullableEntryMetaField = (fieldName: string) => {\n return !isNullableEntryMetaField(fieldName);\n};\n\nexport const isDateTimeEntryMetaField = (fieldName: string) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"On\");\n};\n\nexport const isIdentityEntryMetaField = (fieldName: string) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"By\");\n};\n\nexport const isRevisionEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n fieldName.startsWith(\"revision\")\n );\n};\n\nexport const isEntryLevelEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n !fieldName.startsWith(\"revision\")\n );\n};\n\nexport const isDeletedEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) && fieldName.includes(\"deleted\")\n );\n};\n\nexport const isRestoredEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n fieldName.includes(\"restored\")\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ROOT_FOLDER","CMS_MODEL_SINGLETON_TAG","ENTRY_META_FIELDS","pickEntryMetaFields","object","filter","pickedEntryMetaFields","entryMetaFieldName","fieldExists","undefined","mustPick","Object","assign","live","isNullableEntryMetaField","fieldName","lcFieldName","toLowerCase","includes","isNonNullableEntryMetaField","isDateTimeEntryMetaField","endsWith","isIdentityEntryMetaField","isRevisionEntryMetaField","startsWith","isEntryLevelEntryMetaField","isDeletedEntryMetaField","isRestoredEntryMetaField"],"sources":["constants.ts"],"sourcesContent":["import type { CmsIdentity, ICmsEntryLive } from \"~/types/index.js\";\n\nexport const ROOT_FOLDER = \"root\";\n\nexport const CMS_MODEL_SINGLETON_TAG = \"singleEntry\";\n\n// Content entries - xOn and xBy meta fields.\nexport const ENTRY_META_FIELDS = [\n // Entry-level meta fields.\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\",\n \"createdBy\",\n \"modifiedBy\",\n \"savedBy\",\n \"deletedBy\",\n \"restoredBy\",\n \"firstPublishedBy\",\n \"lastPublishedBy\",\n\n // Revision-level meta fields.\n \"revisionCreatedOn\",\n \"revisionModifiedOn\",\n \"revisionSavedOn\",\n \"revisionDeletedOn\",\n \"revisionRestoredOn\",\n \"revisionFirstPublishedOn\",\n \"revisionLastPublishedOn\",\n \"revisionCreatedBy\",\n \"revisionModifiedBy\",\n \"revisionSavedBy\",\n \"revisionDeletedBy\",\n \"revisionRestoredBy\",\n \"revisionFirstPublishedBy\",\n \"revisionLastPublishedBy\"\n] as const;\n\nexport type EntryMetaFieldName = (typeof ENTRY_META_FIELDS)[number];\n\nexport interface RecordWithEntryMetaFields {\n revisionCreatedOn: string;\n revisionSavedOn: string;\n revisionModifiedOn: string | null;\n revisionDeletedOn: string | null;\n revisionRestoredOn: string | null;\n revisionFirstPublishedOn: string | null;\n revisionLastPublishedOn: string | null;\n revisionCreatedBy: CmsIdentity;\n revisionSavedBy: CmsIdentity;\n revisionModifiedBy: CmsIdentity | null;\n revisionDeletedBy: CmsIdentity | null;\n revisionRestoredBy: CmsIdentity | null;\n revisionFirstPublishedBy: CmsIdentity | null;\n revisionLastPublishedBy: CmsIdentity | null;\n\n // Entry-level meta fields.\n createdOn: string;\n savedOn: string;\n modifiedOn: string | null;\n deletedOn: string | null;\n restoredOn: string | null;\n firstPublishedOn: string | null;\n lastPublishedOn: string | null;\n createdBy: CmsIdentity;\n savedBy: CmsIdentity;\n modifiedBy: CmsIdentity | null;\n deletedBy: CmsIdentity | null;\n restoredBy: CmsIdentity | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n live: ICmsEntryLive | null;\n}\n\nexport const pickEntryMetaFields = (\n object: Partial<RecordWithEntryMetaFields>,\n filter?: (fieldName: EntryMetaFieldName | string) => boolean\n) => {\n const pickedEntryMetaFields: Partial<RecordWithEntryMetaFields> = {};\n for (const entryMetaFieldName of ENTRY_META_FIELDS) {\n const fieldExists = entryMetaFieldName in object;\n if (!fieldExists) {\n object[entryMetaFieldName] = undefined;\n }\n\n const mustPick = !filter || filter(entryMetaFieldName);\n if (mustPick) {\n Object.assign(pickedEntryMetaFields, {\n [entryMetaFieldName]: object[entryMetaFieldName]\n });\n }\n }\n /**\n * Also add live field, as it's not part of entry meta fields, but it's required to be transfered.\n */\n pickedEntryMetaFields.live = object.live;\n\n return pickedEntryMetaFields;\n};\n\nexport const isNullableEntryMetaField = (fieldName: string) => {\n // Only modifiedX, publishedX, deletedX fields are nullable.\n const lcFieldName = fieldName.toLowerCase();\n return (\n lcFieldName.includes(\"modified\") ||\n lcFieldName.includes(\"published\") ||\n lcFieldName.includes(\"deleted\") ||\n lcFieldName.includes(\"restored\")\n );\n};\n\nexport const isNonNullableEntryMetaField = (fieldName: string) => {\n return !isNullableEntryMetaField(fieldName);\n};\n\nexport const isDateTimeEntryMetaField = (fieldName: string) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"On\");\n};\n\nexport const isIdentityEntryMetaField = (fieldName: string) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"By\");\n};\n\nexport const isRevisionEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n fieldName.startsWith(\"revision\")\n );\n};\n\nexport const isEntryLevelEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n !fieldName.startsWith(\"revision\")\n );\n};\n\nexport const isDeletedEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) && fieldName.includes(\"deleted\")\n );\n};\n\nexport const isRestoredEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n fieldName.includes(\"restored\")\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ import { referenceFieldsMapping } from "../referenceFieldsMapping.js";
6
6
  import { createIdentifier, mdbid } from "@webiny/utils";
7
7
  import { STATUS_DRAFT, STATUS_PUBLISHED, STATUS_UNPUBLISHED } from "./statuses.js";
8
8
  import { getIdentity } from "../../../utils/identity.js";
9
- import { getState } from "./state.js";
9
+ import { getSystem } from "./system.js";
10
10
  /**
11
11
  * Used for some fields to convert their values.
12
12
  */
@@ -217,9 +217,10 @@ export const createEntryData = async ({
217
217
  location: {
218
218
  folderId: rawInput.location?.folderId || rawInput.wbyAco_location?.folderId || ROOT_FOLDER
219
219
  },
220
- state: getState({
220
+ system: getSystem({
221
221
  input: rawInput
222
- })
222
+ }),
223
+ live: null
223
224
  };
224
225
  if (status !== STATUS_DRAFT) {
225
226
  if (status === STATUS_PUBLISHED) {
@@ -1 +1 @@
1
- {"version":3,"names":["getDate","ROOT_FOLDER","WebinyError","validateModelEntryDataOrThrow","referenceFieldsMapping","createIdentifier","mdbid","STATUS_DRAFT","STATUS_PUBLISHED","STATUS_UNPUBLISHED","getIdentity","getState","convertDefaultValue","field","value","type","Boolean","Number","getDefaultValue","settings","list","defaultValue","undefined","predefinedValues","enabled","Array","isArray","values","selectedValue","find","selected","filter","map","createEntryId","input","entryId","id","match","version","cleanInputValues","model","fields","reduce","acc","fieldId","key","createEntryData","rawInput","options","context","getSecurityIdentity","getTenant","accessControl","initialValues","skipValidators","validateEntries","currentIdentity","currentDateTime","Date","status","ensureCanAccessEntry","pw","locked","revisionLevelPublishingMetaFields","revisionFirstPublishedOn","revisionLastPublishedOn","revisionFirstPublishedBy","revisionLastPublishedBy","entryLevelPublishingMetaFields","firstPublishedOn","lastPublishedOn","firstPublishedBy","lastPublishedBy","entry","tenant","modelId","createdOn","modifiedOn","savedOn","deletedOn","restoredOn","createdBy","modifiedBy","savedBy","deletedBy","restoredBy","revisionCreatedOn","revisionModifiedOn","revisionSavedOn","revisionDeletedOn","revisionRestoredOn","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","revisionDeletedBy","revisionRestoredBy","location","folderId","wbyAco_location","state","structuredClone"],"sources":["createEntryData.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CmsModelField,\n CreateCmsEntryInput,\n CreateCmsEntryOptionsInput\n} from \"~/types/index.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport WebinyError from \"@webiny/error\";\nimport { validateModelEntryDataOrThrow } from \"~/crud/contentEntry/entryDataValidation.js\";\nimport { referenceFieldsMapping } from \"~/crud/contentEntry/referenceFieldsMapping.js\";\nimport { createIdentifier, mdbid } from \"@webiny/utils\";\nimport { STATUS_DRAFT, STATUS_PUBLISHED, STATUS_UNPUBLISHED } from \"./statuses.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport type { AccessControl } from \"~/crud/AccessControl/AccessControl.js\";\nimport { getState } from \"./state.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\nimport type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\n\ntype DefaultValue = boolean | number | string | null;\n\n/**\n * Used for some fields to convert their values.\n */\nconst convertDefaultValue = (field: CmsModelField, value: DefaultValue): DefaultValue => {\n switch (field.type) {\n case \"boolean\":\n return Boolean(value);\n case \"number\":\n return Number(value);\n default:\n return value;\n }\n};\n\nconst getDefaultValue = (field: CmsModelField): (DefaultValue | DefaultValue[]) | undefined => {\n const { settings, list } = field;\n if (settings && settings.defaultValue !== undefined) {\n return convertDefaultValue(field, settings.defaultValue);\n }\n const { predefinedValues } = field;\n if (\n !predefinedValues ||\n !predefinedValues.enabled ||\n Array.isArray(predefinedValues.values) === false\n ) {\n return undefined;\n }\n if (!list) {\n const selectedValue = predefinedValues.values.find(value => {\n return !!value.selected;\n });\n if (selectedValue) {\n return convertDefaultValue(field, selectedValue.value);\n }\n return undefined;\n }\n return predefinedValues.values\n .filter(({ selected }) => !!selected)\n .map(({ value }) => {\n return convertDefaultValue(field, value);\n });\n};\n\nconst createEntryId = (input: CreateCmsEntryInput) => {\n let entryId = mdbid();\n if (input.id) {\n if (input.id.match(/^([a-zA-Z0-9])([a-zA-Z0-9\\-]+)([a-zA-Z0-9])$/) === null) {\n throw new WebinyError(\n \"The provided ID is not valid. It must be a string which can be A-Z, a-z, 0-9, - and it cannot start or end with a -.\",\n \"INVALID_ID\",\n {\n id: input.id\n }\n );\n }\n entryId = input.id;\n }\n const version = 1;\n return {\n entryId,\n version,\n id: createIdentifier({\n id: entryId,\n version\n })\n };\n};\n\n/**\n * Cleans and adds default values to create input data.\n */\nconst cleanInputValues = <TValues extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n input: TValues\n) => {\n return model.fields.reduce<TValues>((acc, field) => {\n /**\n * This should never happen, but let's make it sure.\n * The fix would be for the user to add the fieldId on the field definition.\n */\n if (!field.fieldId) {\n throw new WebinyError(\"Field does not have an fieldId.\", \"MISSING_FIELD_ID\", {\n field\n });\n }\n const key = field.fieldId as keyof TValues;\n const value = input[key] as TValues[keyof TValues];\n /**\n * We set the default value on create input if value is not defined.\n */\n acc[key] = value === undefined ? (getDefaultValue(field) as TValues[keyof TValues]) : value;\n return acc;\n }, {} as TValues);\n};\n\ninterface CreateEntryDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n model: CmsModel;\n rawInput: CreateCmsEntryInput<TValues>;\n options?: CreateCmsEntryOptionsInput;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n accessControl: AccessControl;\n}\n\ninterface ICreateEntryDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n input: CreateCmsEntryInput<TValues>;\n}\n\nexport const createEntryData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n model,\n rawInput,\n options,\n context,\n getIdentity: getSecurityIdentity,\n getTenant,\n accessControl\n}: CreateEntryDataParams<TValues>): Promise<ICreateEntryDataResponse<TValues>> => {\n const initialValues = cleanInputValues<TValues>(model, rawInput.values || ({} as TValues));\n\n await validateModelEntryDataOrThrow({\n context,\n model,\n values: initialValues,\n skipValidators: options?.skipValidators\n });\n\n const values = await referenceFieldsMapping<TValues>({\n context,\n model,\n values: initialValues,\n validateEntries: true\n });\n\n const { id, entryId, version } = createEntryId(rawInput);\n\n /**\n * There is a possibility that user sends an ID in the input, so we will use that one.\n * There is no check if the ID is unique or not, that is up to the user.\n */\n const currentIdentity = getSecurityIdentity();\n const currentDateTime = new Date();\n\n /**\n * Users can set the initial status of the entry. If so, we need to make\n * sure they have the required permissions and also that all the fields\n * are filled in correctly.\n */\n const status = rawInput.status || STATUS_DRAFT;\n if (status !== STATUS_DRAFT) {\n if (status === STATUS_PUBLISHED) {\n await accessControl.ensureCanAccessEntry({ model, pw: \"p\" });\n } else if (status === STATUS_UNPUBLISHED) {\n // If setting the status other than draft, we have to check if the user has permissions to publish.\n await accessControl.ensureCanAccessEntry({ model, pw: \"u\" });\n }\n }\n\n const locked = status !== STATUS_DRAFT;\n\n let revisionLevelPublishingMetaFields: Pick<\n CmsEntry,\n | \"revisionFirstPublishedOn\"\n | \"revisionLastPublishedOn\"\n | \"revisionFirstPublishedBy\"\n | \"revisionLastPublishedBy\"\n > = {\n revisionFirstPublishedOn: null,\n revisionLastPublishedOn: null,\n revisionFirstPublishedBy: null,\n revisionLastPublishedBy: null\n };\n\n let entryLevelPublishingMetaFields: Pick<\n CmsEntry,\n \"firstPublishedOn\" | \"lastPublishedOn\" | \"firstPublishedBy\" | \"lastPublishedBy\"\n > = {\n firstPublishedOn: null,\n lastPublishedOn: null,\n firstPublishedBy: null,\n lastPublishedBy: null\n };\n\n if (status === STATUS_PUBLISHED) {\n revisionLevelPublishingMetaFields = {\n revisionFirstPublishedOn: getDate(rawInput.revisionFirstPublishedOn, currentDateTime),\n revisionLastPublishedOn: getDate(rawInput.revisionLastPublishedOn, currentDateTime),\n revisionFirstPublishedBy: getIdentity(\n rawInput.revisionFirstPublishedBy,\n currentIdentity\n ),\n revisionLastPublishedBy: getIdentity(rawInput.revisionLastPublishedBy, currentIdentity)\n };\n\n entryLevelPublishingMetaFields = {\n firstPublishedOn: getDate(rawInput.firstPublishedOn, currentDateTime),\n lastPublishedOn: getDate(rawInput.lastPublishedOn, currentDateTime),\n firstPublishedBy: getIdentity(rawInput.firstPublishedBy, currentIdentity),\n lastPublishedBy: getIdentity(rawInput.lastPublishedBy, currentIdentity)\n };\n }\n\n const entry: CmsEntry<TValues> = {\n tenant: getTenant().id,\n entryId,\n id,\n modelId: model.modelId,\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: getDate(rawInput.createdOn, currentDateTime),\n modifiedOn: getDate(rawInput.modifiedOn, null),\n savedOn: getDate(rawInput.savedOn, currentDateTime),\n deletedOn: getDate(rawInput.deletedOn, null),\n restoredOn: getDate(rawInput.restoredOn, null),\n createdBy: getIdentity(rawInput.createdBy, currentIdentity)!,\n modifiedBy: getIdentity(rawInput.modifiedBy, null),\n savedBy: getIdentity(rawInput.savedBy, currentIdentity)!,\n deletedBy: getIdentity(rawInput.deletedBy, null),\n restoredBy: getIdentity(rawInput.restoredBy, null),\n ...entryLevelPublishingMetaFields,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: getDate(rawInput.revisionCreatedOn, currentDateTime),\n revisionModifiedOn: getDate(rawInput.revisionModifiedOn, null),\n revisionSavedOn: getDate(rawInput.revisionSavedOn, currentDateTime),\n revisionDeletedOn: getDate(rawInput.revisionDeletedOn, null),\n revisionRestoredOn: getDate(rawInput.revisionRestoredOn, null),\n revisionCreatedBy: getIdentity(rawInput.revisionCreatedBy, currentIdentity)!,\n revisionModifiedBy: getIdentity(rawInput.revisionModifiedBy, null),\n revisionSavedBy: getIdentity(rawInput.revisionSavedBy, currentIdentity)!,\n revisionDeletedBy: getIdentity(rawInput.revisionDeletedBy, null),\n revisionRestoredBy: getIdentity(rawInput.revisionRestoredBy, null),\n ...revisionLevelPublishingMetaFields,\n\n version,\n status,\n locked,\n values,\n location: {\n folderId:\n rawInput.location?.folderId || rawInput.wbyAco_location?.folderId || ROOT_FOLDER\n },\n state: getState({\n input: rawInput\n })\n };\n\n if (status !== STATUS_DRAFT) {\n if (status === STATUS_PUBLISHED) {\n await accessControl.ensureCanAccessEntry({ model, entry, pw: \"p\" });\n } else if (status === STATUS_UNPUBLISHED) {\n // If setting the status other than draft, we have to check if the user has permissions to publish.\n await accessControl.ensureCanAccessEntry({ model, entry, pw: \"u\" });\n }\n }\n\n return {\n entry,\n input: {\n ...rawInput,\n values: structuredClone(values)\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getDate","ROOT_FOLDER","WebinyError","validateModelEntryDataOrThrow","referenceFieldsMapping","createIdentifier","mdbid","STATUS_DRAFT","STATUS_PUBLISHED","STATUS_UNPUBLISHED","getIdentity","getSystem","convertDefaultValue","field","value","type","Boolean","Number","getDefaultValue","settings","list","defaultValue","undefined","predefinedValues","enabled","Array","isArray","values","selectedValue","find","selected","filter","map","createEntryId","input","entryId","id","match","version","cleanInputValues","model","fields","reduce","acc","fieldId","key","createEntryData","rawInput","options","context","getSecurityIdentity","getTenant","accessControl","initialValues","skipValidators","validateEntries","currentIdentity","currentDateTime","Date","status","ensureCanAccessEntry","pw","locked","revisionLevelPublishingMetaFields","revisionFirstPublishedOn","revisionLastPublishedOn","revisionFirstPublishedBy","revisionLastPublishedBy","entryLevelPublishingMetaFields","firstPublishedOn","lastPublishedOn","firstPublishedBy","lastPublishedBy","entry","tenant","modelId","createdOn","modifiedOn","savedOn","deletedOn","restoredOn","createdBy","modifiedBy","savedBy","deletedBy","restoredBy","revisionCreatedOn","revisionModifiedOn","revisionSavedOn","revisionDeletedOn","revisionRestoredOn","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","revisionDeletedBy","revisionRestoredBy","location","folderId","wbyAco_location","system","live","structuredClone"],"sources":["createEntryData.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CmsModelField,\n CreateCmsEntryInput,\n CreateCmsEntryOptionsInput\n} from \"~/types/index.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport WebinyError from \"@webiny/error\";\nimport { validateModelEntryDataOrThrow } from \"~/crud/contentEntry/entryDataValidation.js\";\nimport { referenceFieldsMapping } from \"~/crud/contentEntry/referenceFieldsMapping.js\";\nimport { createIdentifier, mdbid } from \"@webiny/utils\";\nimport { STATUS_DRAFT, STATUS_PUBLISHED, STATUS_UNPUBLISHED } from \"./statuses.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport type { AccessControl } from \"~/crud/AccessControl/AccessControl.js\";\nimport { getSystem } from \"./system.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\nimport type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\n\ntype DefaultValue = boolean | number | string | null;\n\n/**\n * Used for some fields to convert their values.\n */\nconst convertDefaultValue = (field: CmsModelField, value: DefaultValue): DefaultValue => {\n switch (field.type) {\n case \"boolean\":\n return Boolean(value);\n case \"number\":\n return Number(value);\n default:\n return value;\n }\n};\n\nconst getDefaultValue = (field: CmsModelField): (DefaultValue | DefaultValue[]) | undefined => {\n const { settings, list } = field;\n if (settings && settings.defaultValue !== undefined) {\n return convertDefaultValue(field, settings.defaultValue);\n }\n const { predefinedValues } = field;\n if (\n !predefinedValues ||\n !predefinedValues.enabled ||\n Array.isArray(predefinedValues.values) === false\n ) {\n return undefined;\n }\n if (!list) {\n const selectedValue = predefinedValues.values.find(value => {\n return !!value.selected;\n });\n if (selectedValue) {\n return convertDefaultValue(field, selectedValue.value);\n }\n return undefined;\n }\n return predefinedValues.values\n .filter(({ selected }) => !!selected)\n .map(({ value }) => {\n return convertDefaultValue(field, value);\n });\n};\n\nconst createEntryId = (input: CreateCmsEntryInput) => {\n let entryId = mdbid();\n if (input.id) {\n if (input.id.match(/^([a-zA-Z0-9])([a-zA-Z0-9\\-]+)([a-zA-Z0-9])$/) === null) {\n throw new WebinyError(\n \"The provided ID is not valid. It must be a string which can be A-Z, a-z, 0-9, - and it cannot start or end with a -.\",\n \"INVALID_ID\",\n {\n id: input.id\n }\n );\n }\n entryId = input.id;\n }\n const version = 1;\n return {\n entryId,\n version,\n id: createIdentifier({\n id: entryId,\n version\n })\n };\n};\n\n/**\n * Cleans and adds default values to create input data.\n */\nconst cleanInputValues = <TValues extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n input: TValues\n) => {\n return model.fields.reduce<TValues>((acc, field) => {\n /**\n * This should never happen, but let's make it sure.\n * The fix would be for the user to add the fieldId on the field definition.\n */\n if (!field.fieldId) {\n throw new WebinyError(\"Field does not have an fieldId.\", \"MISSING_FIELD_ID\", {\n field\n });\n }\n const key = field.fieldId as keyof TValues;\n const value = input[key] as TValues[keyof TValues];\n /**\n * We set the default value on create input if value is not defined.\n */\n acc[key] = value === undefined ? (getDefaultValue(field) as TValues[keyof TValues]) : value;\n return acc;\n }, {} as TValues);\n};\n\ninterface CreateEntryDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n model: CmsModel;\n rawInput: CreateCmsEntryInput<TValues>;\n options?: CreateCmsEntryOptionsInput;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n accessControl: AccessControl;\n}\n\ninterface ICreateEntryDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n input: CreateCmsEntryInput<TValues>;\n}\n\nexport const createEntryData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n model,\n rawInput,\n options,\n context,\n getIdentity: getSecurityIdentity,\n getTenant,\n accessControl\n}: CreateEntryDataParams<TValues>): Promise<ICreateEntryDataResponse<TValues>> => {\n const initialValues = cleanInputValues<TValues>(model, rawInput.values || ({} as TValues));\n\n await validateModelEntryDataOrThrow({\n context,\n model,\n values: initialValues,\n skipValidators: options?.skipValidators\n });\n\n const values = await referenceFieldsMapping<TValues>({\n context,\n model,\n values: initialValues,\n validateEntries: true\n });\n\n const { id, entryId, version } = createEntryId(rawInput);\n\n /**\n * There is a possibility that user sends an ID in the input, so we will use that one.\n * There is no check if the ID is unique or not, that is up to the user.\n */\n const currentIdentity = getSecurityIdentity();\n const currentDateTime = new Date();\n\n /**\n * Users can set the initial status of the entry. If so, we need to make\n * sure they have the required permissions and also that all the fields\n * are filled in correctly.\n */\n const status = rawInput.status || STATUS_DRAFT;\n if (status !== STATUS_DRAFT) {\n if (status === STATUS_PUBLISHED) {\n await accessControl.ensureCanAccessEntry({ model, pw: \"p\" });\n } else if (status === STATUS_UNPUBLISHED) {\n // If setting the status other than draft, we have to check if the user has permissions to publish.\n await accessControl.ensureCanAccessEntry({ model, pw: \"u\" });\n }\n }\n\n const locked = status !== STATUS_DRAFT;\n\n let revisionLevelPublishingMetaFields: Pick<\n CmsEntry,\n | \"revisionFirstPublishedOn\"\n | \"revisionLastPublishedOn\"\n | \"revisionFirstPublishedBy\"\n | \"revisionLastPublishedBy\"\n > = {\n revisionFirstPublishedOn: null,\n revisionLastPublishedOn: null,\n revisionFirstPublishedBy: null,\n revisionLastPublishedBy: null\n };\n\n let entryLevelPublishingMetaFields: Pick<\n CmsEntry,\n \"firstPublishedOn\" | \"lastPublishedOn\" | \"firstPublishedBy\" | \"lastPublishedBy\"\n > = {\n firstPublishedOn: null,\n lastPublishedOn: null,\n firstPublishedBy: null,\n lastPublishedBy: null\n };\n\n if (status === STATUS_PUBLISHED) {\n revisionLevelPublishingMetaFields = {\n revisionFirstPublishedOn: getDate(rawInput.revisionFirstPublishedOn, currentDateTime),\n revisionLastPublishedOn: getDate(rawInput.revisionLastPublishedOn, currentDateTime),\n revisionFirstPublishedBy: getIdentity(\n rawInput.revisionFirstPublishedBy,\n currentIdentity\n ),\n revisionLastPublishedBy: getIdentity(rawInput.revisionLastPublishedBy, currentIdentity)\n };\n\n entryLevelPublishingMetaFields = {\n firstPublishedOn: getDate(rawInput.firstPublishedOn, currentDateTime),\n lastPublishedOn: getDate(rawInput.lastPublishedOn, currentDateTime),\n firstPublishedBy: getIdentity(rawInput.firstPublishedBy, currentIdentity),\n lastPublishedBy: getIdentity(rawInput.lastPublishedBy, currentIdentity)\n };\n }\n\n const entry: CmsEntry<TValues> = {\n tenant: getTenant().id,\n entryId,\n id,\n modelId: model.modelId,\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: getDate(rawInput.createdOn, currentDateTime),\n modifiedOn: getDate(rawInput.modifiedOn, null),\n savedOn: getDate(rawInput.savedOn, currentDateTime),\n deletedOn: getDate(rawInput.deletedOn, null),\n restoredOn: getDate(rawInput.restoredOn, null),\n createdBy: getIdentity(rawInput.createdBy, currentIdentity)!,\n modifiedBy: getIdentity(rawInput.modifiedBy, null),\n savedBy: getIdentity(rawInput.savedBy, currentIdentity)!,\n deletedBy: getIdentity(rawInput.deletedBy, null),\n restoredBy: getIdentity(rawInput.restoredBy, null),\n ...entryLevelPublishingMetaFields,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: getDate(rawInput.revisionCreatedOn, currentDateTime),\n revisionModifiedOn: getDate(rawInput.revisionModifiedOn, null),\n revisionSavedOn: getDate(rawInput.revisionSavedOn, currentDateTime),\n revisionDeletedOn: getDate(rawInput.revisionDeletedOn, null),\n revisionRestoredOn: getDate(rawInput.revisionRestoredOn, null),\n revisionCreatedBy: getIdentity(rawInput.revisionCreatedBy, currentIdentity)!,\n revisionModifiedBy: getIdentity(rawInput.revisionModifiedBy, null),\n revisionSavedBy: getIdentity(rawInput.revisionSavedBy, currentIdentity)!,\n revisionDeletedBy: getIdentity(rawInput.revisionDeletedBy, null),\n revisionRestoredBy: getIdentity(rawInput.revisionRestoredBy, null),\n ...revisionLevelPublishingMetaFields,\n\n version,\n status,\n locked,\n values,\n location: {\n folderId:\n rawInput.location?.folderId || rawInput.wbyAco_location?.folderId || ROOT_FOLDER\n },\n system: getSystem({\n input: rawInput\n }),\n live: null\n };\n\n if (status !== STATUS_DRAFT) {\n if (status === STATUS_PUBLISHED) {\n await accessControl.ensureCanAccessEntry({ model, entry, pw: \"p\" });\n } else if (status === STATUS_UNPUBLISHED) {\n // If setting the status other than draft, we have to check if the user has permissions to publish.\n await accessControl.ensureCanAccessEntry({ model, entry, pw: \"u\" });\n }\n }\n\n return {\n entry,\n input: {\n ...rawInput,\n values: structuredClone(values)\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ import { referenceFieldsMapping } from "../referenceFieldsMapping.js";
6
6
  import { createIdentifier, parseIdentifier } from "@webiny/utils";
7
7
  import WebinyError from "@webiny/error";
8
8
  import { STATUS_DRAFT, STATUS_PUBLISHED, STATUS_UNPUBLISHED } from "./statuses.js";
9
- import { getState } from "./state.js";
9
+ import { getSystem } from "./system.js";
10
10
  export const createEntryRevisionFromData = async ({
11
11
  sourceId,
12
12
  model,
@@ -122,10 +122,11 @@ export const createEntryRevisionFromData = async ({
122
122
  locked,
123
123
  status,
124
124
  values,
125
- state: getState({
125
+ system: getSystem({
126
126
  input: rawInput,
127
127
  original: originalEntry
128
- })
128
+ }),
129
+ live: originalEntry.live
129
130
  };
130
131
  return {
131
132
  entry,
@@ -1 +1 @@
1
- {"version":3,"names":["getDate","getIdentity","mapAndCleanUpdatedInputData","validateModelEntryDataOrThrow","referenceFieldsMapping","createIdentifier","parseIdentifier","WebinyError","STATUS_DRAFT","STATUS_PUBLISHED","STATUS_UNPUBLISHED","getState","createEntryRevisionFromData","sourceId","model","rawInput","options","context","getSecurityIdentity","originalEntry","latestStorageEntry","accessControl","initialValues","values","entry","skipValidators","validateEntries","latestId","id","version","nextVersion","increaseEntryIdVersion","currentIdentity","currentDateTime","Date","status","ensureCanAccessEntry","pw","locked","revisionLevelPublishingMetaFields","revisionFirstPublishedOn","revisionLastPublishedOn","revisionFirstPublishedBy","revisionLastPublishedBy","entryLevelPublishingMetaFields","firstPublishedOn","lastPublishedOn","firstPublishedBy","lastPublishedBy","createdOn","savedOn","modifiedOn","createdBy","savedBy","modifiedBy","revisionCreatedOn","revisionSavedOn","revisionModifiedOn","revisionCreatedBy","revisionSavedBy","revisionModifiedBy","state","input","original","structuredClone","entryId"],"sources":["createEntryRevisionFromData.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CreateCmsEntryInput,\n CreateCmsEntryOptionsInput\n} from \"~/types/index.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { mapAndCleanUpdatedInputData } from \".//mapAndCleanUpdatedInputData.js\";\nimport { validateModelEntryDataOrThrow } from \"../entryDataValidation.js\";\nimport { referenceFieldsMapping } from \"../referenceFieldsMapping.js\";\nimport { createIdentifier, parseIdentifier } from \"@webiny/utils\";\nimport WebinyError from \"@webiny/error\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\nimport type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\nimport { STATUS_DRAFT, STATUS_PUBLISHED, STATUS_UNPUBLISHED } from \"./statuses.js\";\nimport type { AccessControl } from \"~/crud/AccessControl/AccessControl.js\";\nimport { getState } from \"./state.js\";\n\ninterface CreateEntryRevisionFromDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n sourceId: string;\n model: CmsModel;\n rawInput: CreateCmsEntryInput<TValues>;\n options?: CreateCmsEntryOptionsInput;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n originalEntry: CmsEntry<TValues>;\n latestStorageEntry: CmsEntry<TValues>;\n accessControl: AccessControl;\n}\n\ninterface ICreateEntryRevisionFromDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n input: CreateCmsEntryInput<TValues>;\n}\n\nexport const createEntryRevisionFromData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n sourceId,\n model,\n rawInput,\n options,\n context,\n getIdentity: getSecurityIdentity,\n originalEntry,\n latestStorageEntry,\n accessControl\n}: CreateEntryRevisionFromDataParams<TValues>): Promise<\n ICreateEntryRevisionFromDataResponse<TValues>\n> => {\n /**\n * Make sure we only work with fields that are defined in the model.\n *\n * Also, we can be certain to cast as TValues because originalValues and new ones are being merged.\n */\n const initialValues = {\n ...originalEntry.values,\n ...mapAndCleanUpdatedInputData<TValues>(model, rawInput.values)\n };\n\n await validateModelEntryDataOrThrow({\n context,\n model,\n values: initialValues,\n entry: originalEntry,\n skipValidators: options?.skipValidators\n });\n\n const values = await referenceFieldsMapping<TValues>({\n context,\n model,\n values: initialValues,\n validateEntries: false\n });\n\n const latestId = latestStorageEntry ? latestStorageEntry.id : sourceId;\n const { id, version: nextVersion } = increaseEntryIdVersion(latestId);\n\n const currentIdentity = getSecurityIdentity();\n const currentDateTime = new Date();\n\n /**\n * Users can set the initial status of the entry. If so, we need to make\n * sure they have the required permissions and also that all the fields\n * are filled in correctly.\n */\n const status = rawInput.status || STATUS_DRAFT;\n if (status !== STATUS_DRAFT) {\n if (status === STATUS_PUBLISHED) {\n await accessControl.ensureCanAccessEntry({ model, pw: \"p\" });\n } else if (status === STATUS_UNPUBLISHED) {\n // If setting the status other than draft, we have to check if the user has permissions to publish.\n await accessControl.ensureCanAccessEntry({ model, pw: \"u\" });\n }\n }\n\n const locked = status !== STATUS_DRAFT;\n\n let revisionLevelPublishingMetaFields: Pick<\n CmsEntry,\n | \"revisionFirstPublishedOn\"\n | \"revisionLastPublishedOn\"\n | \"revisionFirstPublishedBy\"\n | \"revisionLastPublishedBy\"\n > = {\n revisionFirstPublishedOn: getDate(rawInput.revisionFirstPublishedOn, null),\n revisionLastPublishedOn: getDate(rawInput.revisionLastPublishedOn, null),\n revisionFirstPublishedBy: getIdentity(rawInput.revisionFirstPublishedBy, null),\n revisionLastPublishedBy: getIdentity(rawInput.revisionLastPublishedBy, null)\n };\n\n let entryLevelPublishingMetaFields: Pick<\n CmsEntry,\n \"firstPublishedOn\" | \"lastPublishedOn\" | \"firstPublishedBy\" | \"lastPublishedBy\"\n > = {\n firstPublishedOn: getDate(rawInput.firstPublishedOn, latestStorageEntry.firstPublishedOn),\n lastPublishedOn: getDate(rawInput.lastPublishedOn, latestStorageEntry.lastPublishedOn),\n firstPublishedBy: getIdentity(\n rawInput.firstPublishedBy,\n latestStorageEntry.firstPublishedBy\n ),\n lastPublishedBy: getIdentity(rawInput.lastPublishedBy, latestStorageEntry.lastPublishedBy)\n };\n\n if (status === STATUS_PUBLISHED) {\n revisionLevelPublishingMetaFields = {\n revisionFirstPublishedOn: getDate(rawInput.revisionFirstPublishedOn, currentDateTime),\n revisionLastPublishedOn: getDate(rawInput.revisionLastPublishedOn, currentDateTime),\n revisionFirstPublishedBy: getIdentity(\n rawInput.revisionFirstPublishedBy,\n currentIdentity\n ),\n revisionLastPublishedBy: getIdentity(rawInput.revisionLastPublishedBy, currentIdentity)\n };\n\n entryLevelPublishingMetaFields = {\n firstPublishedOn: getDate(\n rawInput.firstPublishedOn,\n latestStorageEntry.firstPublishedOn\n ),\n lastPublishedOn: getDate(rawInput.lastPublishedOn, currentDateTime),\n firstPublishedBy: getIdentity(\n rawInput.firstPublishedBy,\n latestStorageEntry.firstPublishedBy\n ),\n lastPublishedBy: getIdentity(rawInput.lastPublishedBy, currentIdentity)\n };\n }\n\n const entry: CmsEntry<TValues> = {\n ...originalEntry,\n id,\n version: nextVersion,\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: getDate(rawInput.createdOn, latestStorageEntry.createdOn),\n savedOn: getDate(rawInput.savedOn, currentDateTime),\n modifiedOn: getDate(rawInput.modifiedOn, currentDateTime),\n createdBy: getIdentity(rawInput.createdBy, latestStorageEntry.createdBy)!,\n savedBy: getIdentity(rawInput.savedBy, currentIdentity)!,\n modifiedBy: getIdentity(rawInput.modifiedBy, currentIdentity),\n ...entryLevelPublishingMetaFields,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: getDate(rawInput.revisionCreatedOn, currentDateTime),\n revisionSavedOn: getDate(rawInput.revisionSavedOn, currentDateTime),\n revisionModifiedOn: getDate(rawInput.revisionModifiedOn, null),\n revisionCreatedBy: getIdentity(rawInput.revisionCreatedBy, currentIdentity)!,\n revisionSavedBy: getIdentity(rawInput.revisionSavedBy, currentIdentity)!,\n revisionModifiedBy: getIdentity(rawInput.revisionModifiedBy, null),\n ...revisionLevelPublishingMetaFields,\n\n locked,\n status,\n values,\n state: getState({\n input: rawInput,\n original: originalEntry\n })\n };\n\n return {\n entry,\n input: {\n ...rawInput,\n values: structuredClone(values)\n }\n };\n};\n\nconst increaseEntryIdVersion = (id: string) => {\n const { id: entryId, version } = parseIdentifier(id);\n if (!version) {\n throw new WebinyError(\n \"Cannot increase version on the ID without the version part.\",\n \"WRONG_ID\",\n {\n id\n }\n );\n }\n return {\n entryId,\n version: version + 1,\n id: createIdentifier({\n id: entryId,\n version: version + 1\n })\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getDate","getIdentity","mapAndCleanUpdatedInputData","validateModelEntryDataOrThrow","referenceFieldsMapping","createIdentifier","parseIdentifier","WebinyError","STATUS_DRAFT","STATUS_PUBLISHED","STATUS_UNPUBLISHED","getSystem","createEntryRevisionFromData","sourceId","model","rawInput","options","context","getSecurityIdentity","originalEntry","latestStorageEntry","accessControl","initialValues","values","entry","skipValidators","validateEntries","latestId","id","version","nextVersion","increaseEntryIdVersion","currentIdentity","currentDateTime","Date","status","ensureCanAccessEntry","pw","locked","revisionLevelPublishingMetaFields","revisionFirstPublishedOn","revisionLastPublishedOn","revisionFirstPublishedBy","revisionLastPublishedBy","entryLevelPublishingMetaFields","firstPublishedOn","lastPublishedOn","firstPublishedBy","lastPublishedBy","createdOn","savedOn","modifiedOn","createdBy","savedBy","modifiedBy","revisionCreatedOn","revisionSavedOn","revisionModifiedOn","revisionCreatedBy","revisionSavedBy","revisionModifiedBy","system","input","original","live","structuredClone","entryId"],"sources":["createEntryRevisionFromData.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CreateCmsEntryInput,\n CreateCmsEntryOptionsInput\n} from \"~/types/index.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { mapAndCleanUpdatedInputData } from \".//mapAndCleanUpdatedInputData.js\";\nimport { validateModelEntryDataOrThrow } from \"../entryDataValidation.js\";\nimport { referenceFieldsMapping } from \"../referenceFieldsMapping.js\";\nimport { createIdentifier, parseIdentifier } from \"@webiny/utils\";\nimport WebinyError from \"@webiny/error\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\nimport type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\nimport { STATUS_DRAFT, STATUS_PUBLISHED, STATUS_UNPUBLISHED } from \"./statuses.js\";\nimport type { AccessControl } from \"~/crud/AccessControl/AccessControl.js\";\nimport { getSystem } from \"./system.js\";\n\ninterface CreateEntryRevisionFromDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n sourceId: string;\n model: CmsModel;\n rawInput: CreateCmsEntryInput<TValues>;\n options?: CreateCmsEntryOptionsInput;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n originalEntry: CmsEntry<TValues>;\n latestStorageEntry: CmsEntry<TValues>;\n accessControl: AccessControl;\n}\n\ninterface ICreateEntryRevisionFromDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n input: CreateCmsEntryInput<TValues>;\n}\n\nexport const createEntryRevisionFromData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n sourceId,\n model,\n rawInput,\n options,\n context,\n getIdentity: getSecurityIdentity,\n originalEntry,\n latestStorageEntry,\n accessControl\n}: CreateEntryRevisionFromDataParams<TValues>): Promise<\n ICreateEntryRevisionFromDataResponse<TValues>\n> => {\n /**\n * Make sure we only work with fields that are defined in the model.\n *\n * Also, we can be certain to cast as TValues because originalValues and new ones are being merged.\n */\n const initialValues = {\n ...originalEntry.values,\n ...mapAndCleanUpdatedInputData<TValues>(model, rawInput.values)\n };\n\n await validateModelEntryDataOrThrow({\n context,\n model,\n values: initialValues,\n entry: originalEntry,\n skipValidators: options?.skipValidators\n });\n\n const values = await referenceFieldsMapping<TValues>({\n context,\n model,\n values: initialValues,\n validateEntries: false\n });\n\n const latestId = latestStorageEntry ? latestStorageEntry.id : sourceId;\n const { id, version: nextVersion } = increaseEntryIdVersion(latestId);\n\n const currentIdentity = getSecurityIdentity();\n const currentDateTime = new Date();\n\n /**\n * Users can set the initial status of the entry. If so, we need to make\n * sure they have the required permissions and also that all the fields\n * are filled in correctly.\n */\n const status = rawInput.status || STATUS_DRAFT;\n if (status !== STATUS_DRAFT) {\n if (status === STATUS_PUBLISHED) {\n await accessControl.ensureCanAccessEntry({ model, pw: \"p\" });\n } else if (status === STATUS_UNPUBLISHED) {\n // If setting the status other than draft, we have to check if the user has permissions to publish.\n await accessControl.ensureCanAccessEntry({ model, pw: \"u\" });\n }\n }\n\n const locked = status !== STATUS_DRAFT;\n\n let revisionLevelPublishingMetaFields: Pick<\n CmsEntry,\n | \"revisionFirstPublishedOn\"\n | \"revisionLastPublishedOn\"\n | \"revisionFirstPublishedBy\"\n | \"revisionLastPublishedBy\"\n > = {\n revisionFirstPublishedOn: getDate(rawInput.revisionFirstPublishedOn, null),\n revisionLastPublishedOn: getDate(rawInput.revisionLastPublishedOn, null),\n revisionFirstPublishedBy: getIdentity(rawInput.revisionFirstPublishedBy, null),\n revisionLastPublishedBy: getIdentity(rawInput.revisionLastPublishedBy, null)\n };\n\n let entryLevelPublishingMetaFields: Pick<\n CmsEntry,\n \"firstPublishedOn\" | \"lastPublishedOn\" | \"firstPublishedBy\" | \"lastPublishedBy\"\n > = {\n firstPublishedOn: getDate(rawInput.firstPublishedOn, latestStorageEntry.firstPublishedOn),\n lastPublishedOn: getDate(rawInput.lastPublishedOn, latestStorageEntry.lastPublishedOn),\n firstPublishedBy: getIdentity(\n rawInput.firstPublishedBy,\n latestStorageEntry.firstPublishedBy\n ),\n lastPublishedBy: getIdentity(rawInput.lastPublishedBy, latestStorageEntry.lastPublishedBy)\n };\n\n if (status === STATUS_PUBLISHED) {\n revisionLevelPublishingMetaFields = {\n revisionFirstPublishedOn: getDate(rawInput.revisionFirstPublishedOn, currentDateTime),\n revisionLastPublishedOn: getDate(rawInput.revisionLastPublishedOn, currentDateTime),\n revisionFirstPublishedBy: getIdentity(\n rawInput.revisionFirstPublishedBy,\n currentIdentity\n ),\n revisionLastPublishedBy: getIdentity(rawInput.revisionLastPublishedBy, currentIdentity)\n };\n\n entryLevelPublishingMetaFields = {\n firstPublishedOn: getDate(\n rawInput.firstPublishedOn,\n latestStorageEntry.firstPublishedOn\n ),\n lastPublishedOn: getDate(rawInput.lastPublishedOn, currentDateTime),\n firstPublishedBy: getIdentity(\n rawInput.firstPublishedBy,\n latestStorageEntry.firstPublishedBy\n ),\n lastPublishedBy: getIdentity(rawInput.lastPublishedBy, currentIdentity)\n };\n }\n\n const entry: CmsEntry<TValues> = {\n ...originalEntry,\n id,\n version: nextVersion,\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: getDate(rawInput.createdOn, latestStorageEntry.createdOn),\n savedOn: getDate(rawInput.savedOn, currentDateTime),\n modifiedOn: getDate(rawInput.modifiedOn, currentDateTime),\n createdBy: getIdentity(rawInput.createdBy, latestStorageEntry.createdBy)!,\n savedBy: getIdentity(rawInput.savedBy, currentIdentity)!,\n modifiedBy: getIdentity(rawInput.modifiedBy, currentIdentity),\n ...entryLevelPublishingMetaFields,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: getDate(rawInput.revisionCreatedOn, currentDateTime),\n revisionSavedOn: getDate(rawInput.revisionSavedOn, currentDateTime),\n revisionModifiedOn: getDate(rawInput.revisionModifiedOn, null),\n revisionCreatedBy: getIdentity(rawInput.revisionCreatedBy, currentIdentity)!,\n revisionSavedBy: getIdentity(rawInput.revisionSavedBy, currentIdentity)!,\n revisionModifiedBy: getIdentity(rawInput.revisionModifiedBy, null),\n ...revisionLevelPublishingMetaFields,\n\n locked,\n status,\n values,\n system: getSystem({\n input: rawInput,\n original: originalEntry\n }),\n live: originalEntry.live\n };\n\n return {\n entry,\n input: {\n ...rawInput,\n values: structuredClone(values)\n }\n };\n};\n\nconst increaseEntryIdVersion = (id: string) => {\n const { id: entryId, version } = parseIdentifier(id);\n if (!version) {\n throw new WebinyError(\n \"Cannot increase version on the ID without the version part.\",\n \"WRONG_ID\",\n {\n id\n }\n );\n }\n return {\n entryId,\n version: version + 1,\n id: createIdentifier({\n id: entryId,\n version: version + 1\n })\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -46,7 +46,10 @@ export const createPublishEntryData = async ({
46
46
  revisionSavedBy: getIdentity(currentIdentity),
47
47
  revisionModifiedBy: getIdentity(currentIdentity),
48
48
  revisionFirstPublishedBy: getIdentity(originalEntry.revisionFirstPublishedBy, currentIdentity),
49
- revisionLastPublishedBy: getIdentity(currentIdentity)
49
+ revisionLastPublishedBy: getIdentity(currentIdentity),
50
+ live: {
51
+ version: originalEntry.version
52
+ }
50
53
  };
51
54
  return {
52
55
  entry
@@ -1 +1 @@
1
- {"version":3,"names":["STATUS_PUBLISHED","validateModelEntryDataOrThrow","getIdentity","getDate","createPublishEntryData","model","context","getSecurityIdentity","originalEntry","latestEntry","values","entry","currentDateTime","Date","toISOString","currentIdentity","status","locked","createdOn","modifiedOn","savedOn","firstPublishedOn","lastPublishedOn","createdBy","modifiedBy","savedBy","firstPublishedBy","lastPublishedBy","revisionCreatedOn","revisionSavedOn","revisionModifiedOn","revisionFirstPublishedOn","revisionLastPublishedOn","revisionCreatedBy","revisionSavedBy","revisionModifiedBy","revisionFirstPublishedBy","revisionLastPublishedBy"],"sources":["createPublishEntryData.ts"],"sourcesContent":["import type { CmsContext, CmsEntry, CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport { STATUS_PUBLISHED } from \"./statuses.js\";\nimport { validateModelEntryDataOrThrow } from \"~/crud/contentEntry/entryDataValidation.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\n\ninterface ICreatePublishEntryDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n model: CmsModel;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n originalEntry: CmsEntry<TValues>;\n latestEntry: CmsEntry<TValues>;\n}\n\ninterface ICreatePublishEntryDataResponse<T extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<T>;\n}\n\nexport const createPublishEntryData = async <T extends CmsEntryValues = CmsEntryValues>({\n model,\n context,\n getIdentity: getSecurityIdentity,\n originalEntry,\n latestEntry\n}: ICreatePublishEntryDataParams<T>): Promise<ICreatePublishEntryDataResponse<T>> => {\n await validateModelEntryDataOrThrow({\n context,\n model,\n values: originalEntry.values,\n entry: originalEntry\n });\n\n const currentDateTime = new Date().toISOString();\n const currentIdentity = getSecurityIdentity();\n\n const entry: CmsEntry<T> = {\n ...originalEntry,\n status: STATUS_PUBLISHED,\n locked: true,\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: getDate(latestEntry.createdOn),\n modifiedOn: getDate(currentDateTime),\n savedOn: getDate(currentDateTime),\n firstPublishedOn: getDate(latestEntry.firstPublishedOn, currentDateTime),\n lastPublishedOn: getDate(currentDateTime),\n createdBy: getIdentity(latestEntry.createdBy),\n modifiedBy: getIdentity(currentIdentity),\n savedBy: getIdentity(currentIdentity),\n firstPublishedBy: getIdentity(latestEntry.firstPublishedBy, currentIdentity),\n lastPublishedBy: getIdentity(currentIdentity),\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: getDate(originalEntry.revisionCreatedOn),\n revisionSavedOn: getDate(currentDateTime),\n revisionModifiedOn: getDate(currentDateTime),\n revisionFirstPublishedOn: getDate(originalEntry.revisionFirstPublishedOn, currentDateTime),\n revisionLastPublishedOn: getDate(currentDateTime),\n revisionCreatedBy: getIdentity(originalEntry.revisionCreatedBy),\n revisionSavedBy: getIdentity(currentIdentity),\n revisionModifiedBy: getIdentity(currentIdentity),\n revisionFirstPublishedBy: getIdentity(\n originalEntry.revisionFirstPublishedBy,\n currentIdentity\n ),\n revisionLastPublishedBy: getIdentity(currentIdentity)\n };\n\n return { entry };\n};\n"],"mappings":"AACA,SAASA,gBAAgB;AACzB,SAASC,6BAA6B;AACtC,SAASC,WAAW;AACpB,SAASC,OAAO;AAehB,OAAO,MAAMC,sBAAsB,GAAG,MAAAA,CAAkD;EACpFC,KAAK;EACLC,OAAO;EACPJ,WAAW,EAAEK,mBAAmB;EAChCC,aAAa;EACbC;AAC8B,CAAC,KAAkD;EACjF,MAAMR,6BAA6B,CAAC;IAChCK,OAAO;IACPD,KAAK;IACLK,MAAM,EAAEF,aAAa,CAACE,MAAM;IAC5BC,KAAK,EAAEH;EACX,CAAC,CAAC;EAEF,MAAMI,eAAe,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAChD,MAAMC,eAAe,GAAGR,mBAAmB,CAAC,CAAC;EAE7C,MAAMI,KAAkB,GAAG;IACvB,GAAGH,aAAa;IAChBQ,MAAM,EAAEhB,gBAAgB;IACxBiB,MAAM,EAAE,IAAI;IAEZ;AACR;AACA;IACQC,SAAS,EAAEf,OAAO,CAACM,WAAW,CAACS,SAAS,CAAC;IACzCC,UAAU,EAAEhB,OAAO,CAACS,eAAe,CAAC;IACpCQ,OAAO,EAAEjB,OAAO,CAACS,eAAe,CAAC;IACjCS,gBAAgB,EAAElB,OAAO,CAACM,WAAW,CAACY,gBAAgB,EAAET,eAAe,CAAC;IACxEU,eAAe,EAAEnB,OAAO,CAACS,eAAe,CAAC;IACzCW,SAAS,EAAErB,WAAW,CAACO,WAAW,CAACc,SAAS,CAAC;IAC7CC,UAAU,EAAEtB,WAAW,CAACa,eAAe,CAAC;IACxCU,OAAO,EAAEvB,WAAW,CAACa,eAAe,CAAC;IACrCW,gBAAgB,EAAExB,WAAW,CAACO,WAAW,CAACiB,gBAAgB,EAAEX,eAAe,CAAC;IAC5EY,eAAe,EAAEzB,WAAW,CAACa,eAAe,CAAC;IAE7C;AACR;AACA;IACQa,iBAAiB,EAAEzB,OAAO,CAACK,aAAa,CAACoB,iBAAiB,CAAC;IAC3DC,eAAe,EAAE1B,OAAO,CAACS,eAAe,CAAC;IACzCkB,kBAAkB,EAAE3B,OAAO,CAACS,eAAe,CAAC;IAC5CmB,wBAAwB,EAAE5B,OAAO,CAACK,aAAa,CAACuB,wBAAwB,EAAEnB,eAAe,CAAC;IAC1FoB,uBAAuB,EAAE7B,OAAO,CAACS,eAAe,CAAC;IACjDqB,iBAAiB,EAAE/B,WAAW,CAACM,aAAa,CAACyB,iBAAiB,CAAC;IAC/DC,eAAe,EAAEhC,WAAW,CAACa,eAAe,CAAC;IAC7CoB,kBAAkB,EAAEjC,WAAW,CAACa,eAAe,CAAC;IAChDqB,wBAAwB,EAAElC,WAAW,CACjCM,aAAa,CAAC4B,wBAAwB,EACtCrB,eACJ,CAAC;IACDsB,uBAAuB,EAAEnC,WAAW,CAACa,eAAe;EACxD,CAAC;EAED,OAAO;IAAEJ;EAAM,CAAC;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["STATUS_PUBLISHED","validateModelEntryDataOrThrow","getIdentity","getDate","createPublishEntryData","model","context","getSecurityIdentity","originalEntry","latestEntry","values","entry","currentDateTime","Date","toISOString","currentIdentity","status","locked","createdOn","modifiedOn","savedOn","firstPublishedOn","lastPublishedOn","createdBy","modifiedBy","savedBy","firstPublishedBy","lastPublishedBy","revisionCreatedOn","revisionSavedOn","revisionModifiedOn","revisionFirstPublishedOn","revisionLastPublishedOn","revisionCreatedBy","revisionSavedBy","revisionModifiedBy","revisionFirstPublishedBy","revisionLastPublishedBy","live","version"],"sources":["createPublishEntryData.ts"],"sourcesContent":["import type { CmsContext, CmsEntry, CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport { STATUS_PUBLISHED } from \"./statuses.js\";\nimport { validateModelEntryDataOrThrow } from \"~/crud/contentEntry/entryDataValidation.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\n\ninterface ICreatePublishEntryDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n model: CmsModel;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n originalEntry: CmsEntry<TValues>;\n latestEntry: CmsEntry<TValues>;\n}\n\ninterface ICreatePublishEntryDataResponse<T extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<T>;\n}\n\nexport const createPublishEntryData = async <T extends CmsEntryValues = CmsEntryValues>({\n model,\n context,\n getIdentity: getSecurityIdentity,\n originalEntry,\n latestEntry\n}: ICreatePublishEntryDataParams<T>): Promise<ICreatePublishEntryDataResponse<T>> => {\n await validateModelEntryDataOrThrow({\n context,\n model,\n values: originalEntry.values,\n entry: originalEntry\n });\n\n const currentDateTime = new Date().toISOString();\n const currentIdentity = getSecurityIdentity();\n\n const entry: CmsEntry<T> = {\n ...originalEntry,\n status: STATUS_PUBLISHED,\n locked: true,\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: getDate(latestEntry.createdOn),\n modifiedOn: getDate(currentDateTime),\n savedOn: getDate(currentDateTime),\n firstPublishedOn: getDate(latestEntry.firstPublishedOn, currentDateTime),\n lastPublishedOn: getDate(currentDateTime),\n createdBy: getIdentity(latestEntry.createdBy),\n modifiedBy: getIdentity(currentIdentity),\n savedBy: getIdentity(currentIdentity),\n firstPublishedBy: getIdentity(latestEntry.firstPublishedBy, currentIdentity),\n lastPublishedBy: getIdentity(currentIdentity),\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: getDate(originalEntry.revisionCreatedOn),\n revisionSavedOn: getDate(currentDateTime),\n revisionModifiedOn: getDate(currentDateTime),\n revisionFirstPublishedOn: getDate(originalEntry.revisionFirstPublishedOn, currentDateTime),\n revisionLastPublishedOn: getDate(currentDateTime),\n revisionCreatedBy: getIdentity(originalEntry.revisionCreatedBy),\n revisionSavedBy: getIdentity(currentIdentity),\n revisionModifiedBy: getIdentity(currentIdentity),\n revisionFirstPublishedBy: getIdentity(\n originalEntry.revisionFirstPublishedBy,\n currentIdentity\n ),\n revisionLastPublishedBy: getIdentity(currentIdentity),\n\n live: {\n version: originalEntry.version\n }\n };\n\n return { entry };\n};\n"],"mappings":"AACA,SAASA,gBAAgB;AACzB,SAASC,6BAA6B;AACtC,SAASC,WAAW;AACpB,SAASC,OAAO;AAehB,OAAO,MAAMC,sBAAsB,GAAG,MAAAA,CAAkD;EACpFC,KAAK;EACLC,OAAO;EACPJ,WAAW,EAAEK,mBAAmB;EAChCC,aAAa;EACbC;AAC8B,CAAC,KAAkD;EACjF,MAAMR,6BAA6B,CAAC;IAChCK,OAAO;IACPD,KAAK;IACLK,MAAM,EAAEF,aAAa,CAACE,MAAM;IAC5BC,KAAK,EAAEH;EACX,CAAC,CAAC;EAEF,MAAMI,eAAe,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAChD,MAAMC,eAAe,GAAGR,mBAAmB,CAAC,CAAC;EAE7C,MAAMI,KAAkB,GAAG;IACvB,GAAGH,aAAa;IAChBQ,MAAM,EAAEhB,gBAAgB;IACxBiB,MAAM,EAAE,IAAI;IAEZ;AACR;AACA;IACQC,SAAS,EAAEf,OAAO,CAACM,WAAW,CAACS,SAAS,CAAC;IACzCC,UAAU,EAAEhB,OAAO,CAACS,eAAe,CAAC;IACpCQ,OAAO,EAAEjB,OAAO,CAACS,eAAe,CAAC;IACjCS,gBAAgB,EAAElB,OAAO,CAACM,WAAW,CAACY,gBAAgB,EAAET,eAAe,CAAC;IACxEU,eAAe,EAAEnB,OAAO,CAACS,eAAe,CAAC;IACzCW,SAAS,EAAErB,WAAW,CAACO,WAAW,CAACc,SAAS,CAAC;IAC7CC,UAAU,EAAEtB,WAAW,CAACa,eAAe,CAAC;IACxCU,OAAO,EAAEvB,WAAW,CAACa,eAAe,CAAC;IACrCW,gBAAgB,EAAExB,WAAW,CAACO,WAAW,CAACiB,gBAAgB,EAAEX,eAAe,CAAC;IAC5EY,eAAe,EAAEzB,WAAW,CAACa,eAAe,CAAC;IAE7C;AACR;AACA;IACQa,iBAAiB,EAAEzB,OAAO,CAACK,aAAa,CAACoB,iBAAiB,CAAC;IAC3DC,eAAe,EAAE1B,OAAO,CAACS,eAAe,CAAC;IACzCkB,kBAAkB,EAAE3B,OAAO,CAACS,eAAe,CAAC;IAC5CmB,wBAAwB,EAAE5B,OAAO,CAACK,aAAa,CAACuB,wBAAwB,EAAEnB,eAAe,CAAC;IAC1FoB,uBAAuB,EAAE7B,OAAO,CAACS,eAAe,CAAC;IACjDqB,iBAAiB,EAAE/B,WAAW,CAACM,aAAa,CAACyB,iBAAiB,CAAC;IAC/DC,eAAe,EAAEhC,WAAW,CAACa,eAAe,CAAC;IAC7CoB,kBAAkB,EAAEjC,WAAW,CAACa,eAAe,CAAC;IAChDqB,wBAAwB,EAAElC,WAAW,CACjCM,aAAa,CAAC4B,wBAAwB,EACtCrB,eACJ,CAAC;IACDsB,uBAAuB,EAAEnC,WAAW,CAACa,eAAe,CAAC;IAErDuB,IAAI,EAAE;MACFC,OAAO,EAAE/B,aAAa,CAAC+B;IAC3B;EACJ,CAAC;EAED,OAAO;IAAE5B;EAAM,CAAC;AACpB,CAAC","ignoreList":[]}
@@ -41,7 +41,10 @@ export const createRepublishEntryData = async ({
41
41
  revisionFirstPublishedBy: getIdentity(originalEntry.revisionFirstPublishedBy, currentIdentity),
42
42
  revisionLastPublishedOn: getDate(currentDateTime),
43
43
  revisionLastPublishedBy: getIdentity(currentIdentity),
44
- values
44
+ values,
45
+ live: {
46
+ version: originalEntry.version
47
+ }
45
48
  };
46
49
  return {
47
50
  entry
@@ -1 +1 @@
1
- {"version":3,"names":["referenceFieldsMapping","STATUS_PUBLISHED","getIdentity","getDate","createRepublishEntryData","model","context","getSecurityIdentity","originalEntry","values","validateEntries","currentDateTime","Date","toISOString","currentIdentity","entry","status","savedOn","modifiedOn","savedBy","modifiedBy","firstPublishedOn","firstPublishedBy","lastPublishedOn","lastPublishedBy","revisionSavedOn","revisionModifiedOn","revisionSavedBy","revisionModifiedBy","revisionFirstPublishedOn","revisionFirstPublishedBy","revisionLastPublishedOn","revisionLastPublishedBy"],"sources":["createRepublishEntryData.ts"],"sourcesContent":["import type { CmsContext, CmsEntry, CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport { referenceFieldsMapping } from \"~/crud/contentEntry/referenceFieldsMapping.js\";\nimport { STATUS_PUBLISHED } from \"./statuses.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\n\ntype CreateRepublishEntryDataParams<TValues extends CmsEntryValues = CmsEntryValues> = {\n model: CmsModel;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n originalEntry: CmsEntry<TValues>;\n};\n\ninterface ICreateRepublishEntryDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n}\n\nexport const createRepublishEntryData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n model,\n context,\n getIdentity: getSecurityIdentity,\n originalEntry\n}: CreateRepublishEntryDataParams<TValues>): Promise<\n ICreateRepublishEntryDataResponse<TValues>\n> => {\n const values = await referenceFieldsMapping<TValues>({\n context,\n model,\n values: originalEntry.values,\n validateEntries: false\n });\n\n const currentDateTime = new Date().toISOString();\n const currentIdentity = getSecurityIdentity();\n\n const entry: CmsEntry<TValues> = {\n ...originalEntry,\n status: STATUS_PUBLISHED,\n /**\n * Entry-level meta fields. 👇\n */\n savedOn: getDate(currentDateTime),\n modifiedOn: getDate(currentDateTime),\n savedBy: getIdentity(currentIdentity)!,\n modifiedBy: getIdentity(currentIdentity),\n firstPublishedOn: getDate(originalEntry.firstPublishedOn, currentDateTime),\n firstPublishedBy: getIdentity(originalEntry.firstPublishedBy, currentIdentity),\n lastPublishedOn: getDate(currentDateTime),\n lastPublishedBy: getIdentity(currentIdentity),\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionSavedOn: getDate(currentDateTime),\n revisionModifiedOn: getDate(currentDateTime),\n revisionSavedBy: getIdentity(currentIdentity)!,\n revisionModifiedBy: getIdentity(currentIdentity),\n revisionFirstPublishedOn: getDate(originalEntry.revisionFirstPublishedOn, currentDateTime),\n revisionFirstPublishedBy: getIdentity(\n originalEntry.revisionFirstPublishedBy,\n currentIdentity\n ),\n revisionLastPublishedOn: getDate(currentDateTime),\n revisionLastPublishedBy: getIdentity(currentIdentity),\n values\n };\n\n return {\n entry\n };\n};\n"],"mappings":"AACA,SAASA,sBAAsB;AAC/B,SAASC,gBAAgB;AACzB,SAASC,WAAW;AACpB,SAASC,OAAO;AAchB,OAAO,MAAMC,wBAAwB,GAAG,MAAAA,CAAwD;EAC5FC,KAAK;EACLC,OAAO;EACPJ,WAAW,EAAEK,mBAAmB;EAChCC;AACqC,CAAC,KAErC;EACD,MAAMC,MAAM,GAAG,MAAMT,sBAAsB,CAAU;IACjDM,OAAO;IACPD,KAAK;IACLI,MAAM,EAAED,aAAa,CAACC,MAAM;IAC5BC,eAAe,EAAE;EACrB,CAAC,CAAC;EAEF,MAAMC,eAAe,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAChD,MAAMC,eAAe,GAAGP,mBAAmB,CAAC,CAAC;EAE7C,MAAMQ,KAAwB,GAAG;IAC7B,GAAGP,aAAa;IAChBQ,MAAM,EAAEf,gBAAgB;IACxB;AACR;AACA;IACQgB,OAAO,EAAEd,OAAO,CAACQ,eAAe,CAAC;IACjCO,UAAU,EAAEf,OAAO,CAACQ,eAAe,CAAC;IACpCQ,OAAO,EAAEjB,WAAW,CAACY,eAAe,CAAE;IACtCM,UAAU,EAAElB,WAAW,CAACY,eAAe,CAAC;IACxCO,gBAAgB,EAAElB,OAAO,CAACK,aAAa,CAACa,gBAAgB,EAAEV,eAAe,CAAC;IAC1EW,gBAAgB,EAAEpB,WAAW,CAACM,aAAa,CAACc,gBAAgB,EAAER,eAAe,CAAC;IAC9ES,eAAe,EAAEpB,OAAO,CAACQ,eAAe,CAAC;IACzCa,eAAe,EAAEtB,WAAW,CAACY,eAAe,CAAC;IAE7C;AACR;AACA;IACQW,eAAe,EAAEtB,OAAO,CAACQ,eAAe,CAAC;IACzCe,kBAAkB,EAAEvB,OAAO,CAACQ,eAAe,CAAC;IAC5CgB,eAAe,EAAEzB,WAAW,CAACY,eAAe,CAAE;IAC9Cc,kBAAkB,EAAE1B,WAAW,CAACY,eAAe,CAAC;IAChDe,wBAAwB,EAAE1B,OAAO,CAACK,aAAa,CAACqB,wBAAwB,EAAElB,eAAe,CAAC;IAC1FmB,wBAAwB,EAAE5B,WAAW,CACjCM,aAAa,CAACsB,wBAAwB,EACtChB,eACJ,CAAC;IACDiB,uBAAuB,EAAE5B,OAAO,CAACQ,eAAe,CAAC;IACjDqB,uBAAuB,EAAE9B,WAAW,CAACY,eAAe,CAAC;IACrDL;EACJ,CAAC;EAED,OAAO;IACHM;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["referenceFieldsMapping","STATUS_PUBLISHED","getIdentity","getDate","createRepublishEntryData","model","context","getSecurityIdentity","originalEntry","values","validateEntries","currentDateTime","Date","toISOString","currentIdentity","entry","status","savedOn","modifiedOn","savedBy","modifiedBy","firstPublishedOn","firstPublishedBy","lastPublishedOn","lastPublishedBy","revisionSavedOn","revisionModifiedOn","revisionSavedBy","revisionModifiedBy","revisionFirstPublishedOn","revisionFirstPublishedBy","revisionLastPublishedOn","revisionLastPublishedBy","live","version"],"sources":["createRepublishEntryData.ts"],"sourcesContent":["import type { CmsContext, CmsEntry, CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport { referenceFieldsMapping } from \"~/crud/contentEntry/referenceFieldsMapping.js\";\nimport { STATUS_PUBLISHED } from \"./statuses.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\n\ntype CreateRepublishEntryDataParams<TValues extends CmsEntryValues = CmsEntryValues> = {\n model: CmsModel;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n originalEntry: CmsEntry<TValues>;\n};\n\ninterface ICreateRepublishEntryDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n}\n\nexport const createRepublishEntryData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n model,\n context,\n getIdentity: getSecurityIdentity,\n originalEntry\n}: CreateRepublishEntryDataParams<TValues>): Promise<\n ICreateRepublishEntryDataResponse<TValues>\n> => {\n const values = await referenceFieldsMapping<TValues>({\n context,\n model,\n values: originalEntry.values,\n validateEntries: false\n });\n\n const currentDateTime = new Date().toISOString();\n const currentIdentity = getSecurityIdentity();\n\n const entry: CmsEntry<TValues> = {\n ...originalEntry,\n status: STATUS_PUBLISHED,\n /**\n * Entry-level meta fields. 👇\n */\n savedOn: getDate(currentDateTime),\n modifiedOn: getDate(currentDateTime),\n savedBy: getIdentity(currentIdentity)!,\n modifiedBy: getIdentity(currentIdentity),\n firstPublishedOn: getDate(originalEntry.firstPublishedOn, currentDateTime),\n firstPublishedBy: getIdentity(originalEntry.firstPublishedBy, currentIdentity),\n lastPublishedOn: getDate(currentDateTime),\n lastPublishedBy: getIdentity(currentIdentity),\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionSavedOn: getDate(currentDateTime),\n revisionModifiedOn: getDate(currentDateTime),\n revisionSavedBy: getIdentity(currentIdentity)!,\n revisionModifiedBy: getIdentity(currentIdentity),\n revisionFirstPublishedOn: getDate(originalEntry.revisionFirstPublishedOn, currentDateTime),\n revisionFirstPublishedBy: getIdentity(\n originalEntry.revisionFirstPublishedBy,\n currentIdentity\n ),\n revisionLastPublishedOn: getDate(currentDateTime),\n revisionLastPublishedBy: getIdentity(currentIdentity),\n values,\n\n live: {\n version: originalEntry.version\n }\n };\n\n return {\n entry\n };\n};\n"],"mappings":"AACA,SAASA,sBAAsB;AAC/B,SAASC,gBAAgB;AACzB,SAASC,WAAW;AACpB,SAASC,OAAO;AAchB,OAAO,MAAMC,wBAAwB,GAAG,MAAAA,CAAwD;EAC5FC,KAAK;EACLC,OAAO;EACPJ,WAAW,EAAEK,mBAAmB;EAChCC;AACqC,CAAC,KAErC;EACD,MAAMC,MAAM,GAAG,MAAMT,sBAAsB,CAAU;IACjDM,OAAO;IACPD,KAAK;IACLI,MAAM,EAAED,aAAa,CAACC,MAAM;IAC5BC,eAAe,EAAE;EACrB,CAAC,CAAC;EAEF,MAAMC,eAAe,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAChD,MAAMC,eAAe,GAAGP,mBAAmB,CAAC,CAAC;EAE7C,MAAMQ,KAAwB,GAAG;IAC7B,GAAGP,aAAa;IAChBQ,MAAM,EAAEf,gBAAgB;IACxB;AACR;AACA;IACQgB,OAAO,EAAEd,OAAO,CAACQ,eAAe,CAAC;IACjCO,UAAU,EAAEf,OAAO,CAACQ,eAAe,CAAC;IACpCQ,OAAO,EAAEjB,WAAW,CAACY,eAAe,CAAE;IACtCM,UAAU,EAAElB,WAAW,CAACY,eAAe,CAAC;IACxCO,gBAAgB,EAAElB,OAAO,CAACK,aAAa,CAACa,gBAAgB,EAAEV,eAAe,CAAC;IAC1EW,gBAAgB,EAAEpB,WAAW,CAACM,aAAa,CAACc,gBAAgB,EAAER,eAAe,CAAC;IAC9ES,eAAe,EAAEpB,OAAO,CAACQ,eAAe,CAAC;IACzCa,eAAe,EAAEtB,WAAW,CAACY,eAAe,CAAC;IAE7C;AACR;AACA;IACQW,eAAe,EAAEtB,OAAO,CAACQ,eAAe,CAAC;IACzCe,kBAAkB,EAAEvB,OAAO,CAACQ,eAAe,CAAC;IAC5CgB,eAAe,EAAEzB,WAAW,CAACY,eAAe,CAAE;IAC9Cc,kBAAkB,EAAE1B,WAAW,CAACY,eAAe,CAAC;IAChDe,wBAAwB,EAAE1B,OAAO,CAACK,aAAa,CAACqB,wBAAwB,EAAElB,eAAe,CAAC;IAC1FmB,wBAAwB,EAAE5B,WAAW,CACjCM,aAAa,CAACsB,wBAAwB,EACtChB,eACJ,CAAC;IACDiB,uBAAuB,EAAE5B,OAAO,CAACQ,eAAe,CAAC;IACjDqB,uBAAuB,EAAE9B,WAAW,CAACY,eAAe,CAAC;IACrDL,MAAM;IAENwB,IAAI,EAAE;MACFC,OAAO,EAAE1B,aAAa,CAAC0B;IAC3B;EACJ,CAAC;EAED,OAAO;IACHnB;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -23,7 +23,8 @@ export const createUnpublishEntryData = async ({
23
23
  revisionSavedOn: getDate(currentDateTime),
24
24
  revisionModifiedOn: getDate(currentDateTime),
25
25
  revisionSavedBy: getIdentity(currentIdentity),
26
- revisionModifiedBy: getIdentity(currentIdentity)
26
+ revisionModifiedBy: getIdentity(currentIdentity),
27
+ live: null
27
28
  };
28
29
  return {
29
30
  entry
@@ -1 +1 @@
1
- {"version":3,"names":["STATUS_UNPUBLISHED","getIdentity","getDate","createUnpublishEntryData","getSecurityIdentity","originalEntry","currentDateTime","Date","toISOString","currentIdentity","entry","status","savedOn","modifiedOn","savedBy","modifiedBy","revisionSavedOn","revisionModifiedOn","revisionSavedBy","revisionModifiedBy"],"sources":["createUnpublishEntryData.ts"],"sourcesContent":["import type { CmsEntry, CmsEntryValues } from \"~/types/index.js\";\nimport { STATUS_UNPUBLISHED } from \"./statuses.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\n\ninterface CreateRepublishEntryDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n getIdentity: () => SecurityIdentity;\n originalEntry: CmsEntry<TValues>;\n}\n\ninterface ICreateUnpublishEntryDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n}\n\nexport const createUnpublishEntryData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n getIdentity: getSecurityIdentity,\n originalEntry\n}: CreateRepublishEntryDataParams<TValues>): Promise<\n ICreateUnpublishEntryDataResponse<TValues>\n> => {\n const currentDateTime = new Date().toISOString();\n const currentIdentity = getSecurityIdentity();\n\n const entry: CmsEntry<TValues> = {\n ...originalEntry,\n status: STATUS_UNPUBLISHED,\n\n /**\n * Entry-level meta fields. 👇\n */\n savedOn: getDate(currentDateTime),\n modifiedOn: getDate(currentDateTime),\n savedBy: getIdentity(currentIdentity),\n modifiedBy: getIdentity(currentIdentity),\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionSavedOn: getDate(currentDateTime),\n revisionModifiedOn: getDate(currentDateTime),\n revisionSavedBy: getIdentity(currentIdentity),\n revisionModifiedBy: getIdentity(currentIdentity)\n };\n\n return {\n entry\n };\n};\n"],"mappings":"AACA,SAASA,kBAAkB;AAC3B,SAASC,WAAW;AACpB,SAASC,OAAO;AAYhB,OAAO,MAAMC,wBAAwB,GAAG,MAAAA,CAAwD;EAC5FF,WAAW,EAAEG,mBAAmB;EAChCC;AACqC,CAAC,KAErC;EACD,MAAMC,eAAe,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAChD,MAAMC,eAAe,GAAGL,mBAAmB,CAAC,CAAC;EAE7C,MAAMM,KAAwB,GAAG;IAC7B,GAAGL,aAAa;IAChBM,MAAM,EAAEX,kBAAkB;IAE1B;AACR;AACA;IACQY,OAAO,EAAEV,OAAO,CAACI,eAAe,CAAC;IACjCO,UAAU,EAAEX,OAAO,CAACI,eAAe,CAAC;IACpCQ,OAAO,EAAEb,WAAW,CAACQ,eAAe,CAAC;IACrCM,UAAU,EAAEd,WAAW,CAACQ,eAAe,CAAC;IAExC;AACR;AACA;IACQO,eAAe,EAAEd,OAAO,CAACI,eAAe,CAAC;IACzCW,kBAAkB,EAAEf,OAAO,CAACI,eAAe,CAAC;IAC5CY,eAAe,EAAEjB,WAAW,CAACQ,eAAe,CAAC;IAC7CU,kBAAkB,EAAElB,WAAW,CAACQ,eAAe;EACnD,CAAC;EAED,OAAO;IACHC;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["STATUS_UNPUBLISHED","getIdentity","getDate","createUnpublishEntryData","getSecurityIdentity","originalEntry","currentDateTime","Date","toISOString","currentIdentity","entry","status","savedOn","modifiedOn","savedBy","modifiedBy","revisionSavedOn","revisionModifiedOn","revisionSavedBy","revisionModifiedBy","live"],"sources":["createUnpublishEntryData.ts"],"sourcesContent":["import type { CmsEntry, CmsEntryValues } from \"~/types/index.js\";\nimport { STATUS_UNPUBLISHED } from \"./statuses.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\n\ninterface CreateRepublishEntryDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n getIdentity: () => SecurityIdentity;\n originalEntry: CmsEntry<TValues>;\n}\n\ninterface ICreateUnpublishEntryDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n}\n\nexport const createUnpublishEntryData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n getIdentity: getSecurityIdentity,\n originalEntry\n}: CreateRepublishEntryDataParams<TValues>): Promise<\n ICreateUnpublishEntryDataResponse<TValues>\n> => {\n const currentDateTime = new Date().toISOString();\n const currentIdentity = getSecurityIdentity();\n\n const entry: CmsEntry<TValues> = {\n ...originalEntry,\n status: STATUS_UNPUBLISHED,\n\n /**\n * Entry-level meta fields. 👇\n */\n savedOn: getDate(currentDateTime),\n modifiedOn: getDate(currentDateTime),\n savedBy: getIdentity(currentIdentity),\n modifiedBy: getIdentity(currentIdentity),\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionSavedOn: getDate(currentDateTime),\n revisionModifiedOn: getDate(currentDateTime),\n revisionSavedBy: getIdentity(currentIdentity),\n revisionModifiedBy: getIdentity(currentIdentity),\n live: null\n };\n\n return {\n entry\n };\n};\n"],"mappings":"AACA,SAASA,kBAAkB;AAC3B,SAASC,WAAW;AACpB,SAASC,OAAO;AAYhB,OAAO,MAAMC,wBAAwB,GAAG,MAAAA,CAAwD;EAC5FF,WAAW,EAAEG,mBAAmB;EAChCC;AACqC,CAAC,KAErC;EACD,MAAMC,eAAe,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAChD,MAAMC,eAAe,GAAGL,mBAAmB,CAAC,CAAC;EAE7C,MAAMM,KAAwB,GAAG;IAC7B,GAAGL,aAAa;IAChBM,MAAM,EAAEX,kBAAkB;IAE1B;AACR;AACA;IACQY,OAAO,EAAEV,OAAO,CAACI,eAAe,CAAC;IACjCO,UAAU,EAAEX,OAAO,CAACI,eAAe,CAAC;IACpCQ,OAAO,EAAEb,WAAW,CAACQ,eAAe,CAAC;IACrCM,UAAU,EAAEd,WAAW,CAACQ,eAAe,CAAC;IAExC;AACR;AACA;IACQO,eAAe,EAAEd,OAAO,CAACI,eAAe,CAAC;IACzCW,kBAAkB,EAAEf,OAAO,CAACI,eAAe,CAAC;IAC5CY,eAAe,EAAEjB,WAAW,CAACQ,eAAe,CAAC;IAC7CU,kBAAkB,EAAElB,WAAW,CAACQ,eAAe,CAAC;IAChDW,IAAI,EAAE;EACV,CAAC;EAED,OAAO;IACHV;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -5,7 +5,7 @@ import { referenceFieldsMapping } from "../referenceFieldsMapping.js";
5
5
  import { mapAndCleanUpdatedInputData } from "./mapAndCleanUpdatedInputData.js";
6
6
  import lodashMerge from "lodash/merge.js";
7
7
  import { removeNullValues, removeUndefinedValues } from "@webiny/utils";
8
- import { getState } from "./state.js";
8
+ import { getSystem } from "./system.js";
9
9
  export const createUpdateEntryData = async ({
10
10
  model,
11
11
  rawInput,
@@ -94,10 +94,11 @@ export const createUpdateEntryData = async ({
94
94
  values,
95
95
  meta,
96
96
  status: transformEntryStatus(originalEntry.status),
97
- state: getState({
97
+ system: getSystem({
98
98
  input: rawInput,
99
99
  original: originalEntry
100
- })
100
+ }),
101
+ live: originalEntry.live
101
102
  };
102
103
  const folderId = rawInput.wbyAco_location?.folderId;
103
104
  if (folderId) {
@@ -1 +1 @@
1
- {"version":3,"names":["getDate","getIdentity","validateModelEntryDataOrThrow","referenceFieldsMapping","mapAndCleanUpdatedInputData","lodashMerge","removeNullValues","removeUndefinedValues","getState","createUpdateEntryData","model","rawInput","options","context","metaInput","getSecurityIdentity","originalEntry","cleanedValues","values","entry","skipValidators","mergedValues","validateEntries","meta","createEntryMeta","currentIdentity","currentDateTime","Date","revisionCreatedOn","revisionModifiedOn","revisionSavedOn","revisionDeletedOn","revisionRestoredOn","revisionFirstPublishedOn","revisionLastPublishedOn","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","revisionDeletedBy","revisionRestoredBy","revisionFirstPublishedBy","revisionLastPublishedBy","createdOn","savedOn","modifiedOn","deletedOn","restoredOn","firstPublishedOn","lastPublishedOn","createdBy","savedBy","modifiedBy","deletedBy","restoredBy","firstPublishedBy","lastPublishedBy","status","transformEntryStatus","state","input","original","folderId","wbyAco_location","location","structuredClone","allowedEntryStatus","includes"],"sources":["createUpdateEntryData.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryStatus,\n CmsEntryValues,\n CmsModel,\n UpdateCmsEntryInput,\n UpdateCmsEntryOptionsInput\n} from \"~/types/index.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { validateModelEntryDataOrThrow } from \"../entryDataValidation.js\";\nimport { referenceFieldsMapping } from \"../referenceFieldsMapping.js\";\nimport { mapAndCleanUpdatedInputData } from \"./mapAndCleanUpdatedInputData.js\";\nimport lodashMerge from \"lodash/merge.js\";\nimport { removeNullValues, removeUndefinedValues } from \"@webiny/utils\";\nimport { getState } from \"./state.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\nimport type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\n\ninterface UpdateEntryFromDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n metaInput?: Record<string, any>;\n model: CmsModel;\n rawInput: UpdateCmsEntryInput<TValues>;\n options?: UpdateCmsEntryOptionsInput;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n originalEntry: CmsEntry<TValues>;\n}\n\ninterface UpdateEntryDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n input: UpdateCmsEntryInput<TValues>;\n}\n\nexport const createUpdateEntryData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n model,\n rawInput,\n options,\n context,\n metaInput,\n getIdentity: getSecurityIdentity,\n originalEntry\n}: UpdateEntryFromDataParams<TValues>): Promise<UpdateEntryDataResponse<TValues>> => {\n /**\n * Make sure we only work with fields that are defined in the model.\n */\n const cleanedValues = mapAndCleanUpdatedInputData<TValues>(\n model,\n rawInput?.values || ({} as TValues)\n );\n\n await validateModelEntryDataOrThrow({\n context,\n model,\n values: cleanedValues,\n entry: originalEntry,\n skipValidators: options?.skipValidators\n });\n\n const mergedValues: TValues = {\n /**\n * Existing values from the database, transformed back to original, of course.\n */\n ...originalEntry.values,\n /**\n * Add new values.\n */\n ...cleanedValues\n };\n\n const values = await referenceFieldsMapping<TValues>({\n context,\n model,\n values: mergedValues,\n validateEntries: false\n });\n\n /**\n * If users wants to remove a key from meta values, they need to send meta key with the null value.\n */\n const meta = createEntryMeta(metaInput, originalEntry.meta);\n\n const currentIdentity = getSecurityIdentity();\n const currentDateTime = new Date();\n\n /**\n * We always send the full entry to the hooks and storage operations update.\n */\n const entry: CmsEntry<TValues> = {\n ...originalEntry,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: getDate(rawInput.revisionCreatedOn, originalEntry.revisionCreatedOn),\n revisionModifiedOn: getDate(rawInput.revisionModifiedOn, currentDateTime),\n revisionSavedOn: getDate(rawInput.revisionSavedOn, currentDateTime),\n revisionDeletedOn: getDate(rawInput.revisionDeletedOn, null),\n revisionRestoredOn: getDate(rawInput.revisionRestoredOn, null),\n revisionFirstPublishedOn: getDate(\n rawInput.revisionFirstPublishedOn,\n originalEntry.revisionFirstPublishedOn\n ),\n revisionLastPublishedOn: getDate(\n rawInput.revisionLastPublishedOn,\n originalEntry.revisionLastPublishedOn\n ),\n revisionCreatedBy: getIdentity(\n rawInput.revisionCreatedBy,\n originalEntry.revisionCreatedBy\n )!,\n revisionModifiedBy: getIdentity(rawInput.revisionModifiedBy, currentIdentity),\n revisionSavedBy: getIdentity(rawInput.revisionSavedBy, currentIdentity)!,\n revisionDeletedBy: getIdentity(rawInput.revisionSavedBy, null),\n revisionRestoredBy: getIdentity(rawInput.revisionRestoredBy, null),\n revisionFirstPublishedBy: getIdentity(\n rawInput.revisionFirstPublishedBy,\n originalEntry.revisionFirstPublishedBy\n ),\n revisionLastPublishedBy: getIdentity(\n rawInput.revisionLastPublishedBy,\n originalEntry.revisionLastPublishedBy\n ),\n\n /**\n * Entry-level meta fields. 👇\n * If required, within storage operations, these entry-level updates\n * will be propagated to the latest revision too.\n */\n createdOn: getDate(rawInput.createdOn, originalEntry.createdOn),\n savedOn: getDate(rawInput.savedOn, currentDateTime),\n modifiedOn: getDate(rawInput.modifiedOn, currentDateTime),\n deletedOn: getDate(rawInput.deletedOn, null),\n restoredOn: getDate(rawInput.restoredOn, null),\n firstPublishedOn: getDate(rawInput.firstPublishedOn, originalEntry.firstPublishedOn),\n lastPublishedOn: getDate(rawInput.lastPublishedOn, originalEntry.lastPublishedOn),\n createdBy: getIdentity(rawInput.createdBy, originalEntry.createdBy)!,\n savedBy: getIdentity(rawInput.savedBy, currentIdentity)!,\n modifiedBy: getIdentity(rawInput.modifiedBy, currentIdentity),\n deletedBy: getIdentity(rawInput.deletedBy, null),\n restoredBy: getIdentity(rawInput.restoredBy, null),\n firstPublishedBy: getIdentity(rawInput.firstPublishedBy, originalEntry.firstPublishedBy),\n lastPublishedBy: getIdentity(rawInput.lastPublishedBy, originalEntry.lastPublishedBy),\n\n values,\n meta,\n status: transformEntryStatus(originalEntry.status),\n state: getState({\n input: rawInput,\n original: originalEntry\n })\n };\n\n const folderId = rawInput.wbyAco_location?.folderId;\n if (folderId) {\n entry.location = {\n folderId\n };\n }\n\n return {\n entry,\n input: {\n ...rawInput,\n values: structuredClone(values)\n }\n };\n};\n\n/**\n * This method takes original entry meta and new input.\n * When new meta is merged onto the existing one, everything that has undefined or null value is removed.\n */\nconst createEntryMeta = (input?: Record<string, any>, original?: Record<string, any>) => {\n const meta = lodashMerge(original || {}, input || {});\n return removeUndefinedValues(removeNullValues(meta));\n};\n\nconst allowedEntryStatus: string[] = [\"draft\", \"published\", \"unpublished\"];\n\nconst transformEntryStatus = (status: CmsEntryStatus | string): CmsEntryStatus => {\n return allowedEntryStatus.includes(status) ? (status as CmsEntryStatus) : \"draft\";\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getDate","getIdentity","validateModelEntryDataOrThrow","referenceFieldsMapping","mapAndCleanUpdatedInputData","lodashMerge","removeNullValues","removeUndefinedValues","getSystem","createUpdateEntryData","model","rawInput","options","context","metaInput","getSecurityIdentity","originalEntry","cleanedValues","values","entry","skipValidators","mergedValues","validateEntries","meta","createEntryMeta","currentIdentity","currentDateTime","Date","revisionCreatedOn","revisionModifiedOn","revisionSavedOn","revisionDeletedOn","revisionRestoredOn","revisionFirstPublishedOn","revisionLastPublishedOn","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","revisionDeletedBy","revisionRestoredBy","revisionFirstPublishedBy","revisionLastPublishedBy","createdOn","savedOn","modifiedOn","deletedOn","restoredOn","firstPublishedOn","lastPublishedOn","createdBy","savedBy","modifiedBy","deletedBy","restoredBy","firstPublishedBy","lastPublishedBy","status","transformEntryStatus","system","input","original","live","folderId","wbyAco_location","location","structuredClone","allowedEntryStatus","includes"],"sources":["createUpdateEntryData.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryStatus,\n CmsEntryValues,\n CmsModel,\n UpdateCmsEntryInput,\n UpdateCmsEntryOptionsInput\n} from \"~/types/index.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\nimport { validateModelEntryDataOrThrow } from \"../entryDataValidation.js\";\nimport { referenceFieldsMapping } from \"../referenceFieldsMapping.js\";\nimport { mapAndCleanUpdatedInputData } from \"./mapAndCleanUpdatedInputData.js\";\nimport lodashMerge from \"lodash/merge.js\";\nimport { removeNullValues, removeUndefinedValues } from \"@webiny/utils\";\nimport { getSystem } from \"./system.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\nimport type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\n\ninterface UpdateEntryFromDataParams<TValues extends CmsEntryValues = CmsEntryValues> {\n metaInput?: Record<string, any>;\n model: CmsModel;\n rawInput: UpdateCmsEntryInput<TValues>;\n options?: UpdateCmsEntryOptionsInput;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n originalEntry: CmsEntry<TValues>;\n}\n\ninterface UpdateEntryDataResponse<TValues extends CmsEntryValues = CmsEntryValues> {\n entry: CmsEntry<TValues>;\n input: UpdateCmsEntryInput<TValues>;\n}\n\nexport const createUpdateEntryData = async <TValues extends CmsEntryValues = CmsEntryValues>({\n model,\n rawInput,\n options,\n context,\n metaInput,\n getIdentity: getSecurityIdentity,\n originalEntry\n}: UpdateEntryFromDataParams<TValues>): Promise<UpdateEntryDataResponse<TValues>> => {\n /**\n * Make sure we only work with fields that are defined in the model.\n */\n const cleanedValues = mapAndCleanUpdatedInputData<TValues>(\n model,\n rawInput?.values || ({} as TValues)\n );\n\n await validateModelEntryDataOrThrow({\n context,\n model,\n values: cleanedValues,\n entry: originalEntry,\n skipValidators: options?.skipValidators\n });\n\n const mergedValues: TValues = {\n /**\n * Existing values from the database, transformed back to original, of course.\n */\n ...originalEntry.values,\n /**\n * Add new values.\n */\n ...cleanedValues\n };\n\n const values = await referenceFieldsMapping<TValues>({\n context,\n model,\n values: mergedValues,\n validateEntries: false\n });\n\n /**\n * If users wants to remove a key from meta values, they need to send meta key with the null value.\n */\n const meta = createEntryMeta(metaInput, originalEntry.meta);\n\n const currentIdentity = getSecurityIdentity();\n const currentDateTime = new Date();\n\n /**\n * We always send the full entry to the hooks and storage operations update.\n */\n const entry: CmsEntry<TValues> = {\n ...originalEntry,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: getDate(rawInput.revisionCreatedOn, originalEntry.revisionCreatedOn),\n revisionModifiedOn: getDate(rawInput.revisionModifiedOn, currentDateTime),\n revisionSavedOn: getDate(rawInput.revisionSavedOn, currentDateTime),\n revisionDeletedOn: getDate(rawInput.revisionDeletedOn, null),\n revisionRestoredOn: getDate(rawInput.revisionRestoredOn, null),\n revisionFirstPublishedOn: getDate(\n rawInput.revisionFirstPublishedOn,\n originalEntry.revisionFirstPublishedOn\n ),\n revisionLastPublishedOn: getDate(\n rawInput.revisionLastPublishedOn,\n originalEntry.revisionLastPublishedOn\n ),\n revisionCreatedBy: getIdentity(\n rawInput.revisionCreatedBy,\n originalEntry.revisionCreatedBy\n )!,\n revisionModifiedBy: getIdentity(rawInput.revisionModifiedBy, currentIdentity),\n revisionSavedBy: getIdentity(rawInput.revisionSavedBy, currentIdentity)!,\n revisionDeletedBy: getIdentity(rawInput.revisionSavedBy, null),\n revisionRestoredBy: getIdentity(rawInput.revisionRestoredBy, null),\n revisionFirstPublishedBy: getIdentity(\n rawInput.revisionFirstPublishedBy,\n originalEntry.revisionFirstPublishedBy\n ),\n revisionLastPublishedBy: getIdentity(\n rawInput.revisionLastPublishedBy,\n originalEntry.revisionLastPublishedBy\n ),\n\n /**\n * Entry-level meta fields. 👇\n * If required, within storage operations, these entry-level updates\n * will be propagated to the latest revision too.\n */\n createdOn: getDate(rawInput.createdOn, originalEntry.createdOn),\n savedOn: getDate(rawInput.savedOn, currentDateTime),\n modifiedOn: getDate(rawInput.modifiedOn, currentDateTime),\n deletedOn: getDate(rawInput.deletedOn, null),\n restoredOn: getDate(rawInput.restoredOn, null),\n firstPublishedOn: getDate(rawInput.firstPublishedOn, originalEntry.firstPublishedOn),\n lastPublishedOn: getDate(rawInput.lastPublishedOn, originalEntry.lastPublishedOn),\n createdBy: getIdentity(rawInput.createdBy, originalEntry.createdBy)!,\n savedBy: getIdentity(rawInput.savedBy, currentIdentity)!,\n modifiedBy: getIdentity(rawInput.modifiedBy, currentIdentity),\n deletedBy: getIdentity(rawInput.deletedBy, null),\n restoredBy: getIdentity(rawInput.restoredBy, null),\n firstPublishedBy: getIdentity(rawInput.firstPublishedBy, originalEntry.firstPublishedBy),\n lastPublishedBy: getIdentity(rawInput.lastPublishedBy, originalEntry.lastPublishedBy),\n\n values,\n meta,\n status: transformEntryStatus(originalEntry.status),\n system: getSystem({\n input: rawInput,\n original: originalEntry\n }),\n live: originalEntry.live\n };\n\n const folderId = rawInput.wbyAco_location?.folderId;\n if (folderId) {\n entry.location = {\n folderId\n };\n }\n\n return {\n entry,\n input: {\n ...rawInput,\n values: structuredClone(values)\n }\n };\n};\n\n/**\n * This method takes original entry meta and new input.\n * When new meta is merged onto the existing one, everything that has undefined or null value is removed.\n */\nconst createEntryMeta = (input?: Record<string, any>, original?: Record<string, any>) => {\n const meta = lodashMerge(original || {}, input || {});\n return removeUndefinedValues(removeNullValues(meta));\n};\n\nconst allowedEntryStatus: string[] = [\"draft\", \"published\", \"unpublished\"];\n\nconst transformEntryStatus = (status: CmsEntryStatus | string): CmsEntryStatus => {\n return allowedEntryStatus.includes(status) ? (status as CmsEntryStatus) : \"draft\";\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import type { CmsEntry, ICmsEntrySystem } from "../../../types/index.js";
2
+ interface IInputWithPossibleSystem {
3
+ system: Partial<ICmsEntrySystem>;
4
+ }
5
+ interface IParams {
6
+ input: Partial<IInputWithPossibleSystem>;
7
+ original?: CmsEntry | null;
8
+ }
9
+ export declare const getSystem: ({ input, original }: IParams) => ICmsEntrySystem | undefined;
10
+ export {};
@@ -0,0 +1,14 @@
1
+ export const getSystem = ({
2
+ input,
3
+ original
4
+ }) => {
5
+ if (!input.system) {
6
+ return original?.system;
7
+ }
8
+ return {
9
+ ...original?.system,
10
+ ...input.system
11
+ };
12
+ };
13
+
14
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getSystem","input","original","system"],"sources":["system.ts"],"sourcesContent":["import type { CmsEntry, ICmsEntrySystem } from \"~/types/index.js\";\n\ninterface IInputWithPossibleSystem {\n system: Partial<ICmsEntrySystem>;\n}\ninterface IParams {\n input: Partial<IInputWithPossibleSystem>;\n original?: CmsEntry | null;\n}\n\nexport const getSystem = ({ input, original }: IParams): ICmsEntrySystem | undefined => {\n if (!input.system) {\n return original?.system;\n }\n return {\n ...original?.system,\n ...input.system\n };\n};\n"],"mappings":"AAUA,OAAO,MAAMA,SAAS,GAAGA,CAAC;EAAEC,KAAK;EAAEC;AAAkB,CAAC,KAAkC;EACpF,IAAI,CAACD,KAAK,CAACE,MAAM,EAAE;IACf,OAAOD,QAAQ,EAAEC,MAAM;EAC3B;EACA,OAAO;IACH,GAAGD,QAAQ,EAAEC,MAAM;IACnB,GAAGF,KAAK,CAACE;EACb,CAAC;AACL,CAAC","ignoreList":[]}
@@ -43,7 +43,11 @@ const buildSearchableFieldList = params => {
43
43
  const path = [...parents, field.fieldId].join(".");
44
44
  result.push(path);
45
45
  return result;
46
- }, []);
46
+ },
47
+ /**
48
+ * We always add id and entry id
49
+ */
50
+ ["id", "entryId"]);
47
51
  };
48
52
  export const getSearchableFields = params => {
49
53
  const {
@@ -59,7 +63,7 @@ export const getSearchableFields = params => {
59
63
  fields,
60
64
  input,
61
65
  plugins: fieldPluginMap,
62
- parents: []
66
+ parents: ["values"]
63
67
  });
64
68
  };
65
69
 
@@ -1 +1 @@
1
- {"version":3,"names":["buildSearchableFieldList","params","input","plugins","fields","parents","reduce","result","field","plugin","type","childFields","settings","length","childResults","fieldId","push","fullTextSearch","disableFullTextSearch","path","join","getSearchableFields","fieldPluginMap","byType","collection","fieldType"],"sources":["searchableFields.ts"],"sourcesContent":["import type { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types/index.js\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\n\ninterface BuildParams {\n input: string[];\n fields: CmsModelField[];\n plugins: Record<string, CmsModelFieldToGraphQLPlugin>;\n parents: string[];\n}\nconst buildSearchableFieldList = (params: BuildParams): string[] => {\n const { input, plugins, fields, parents } = params;\n return fields.reduce<string[]>((result, field) => {\n /**\n * We need to check if the field is full text searchable, and for that we need a plugin for the field type.\n */\n const plugin = plugins[field.type];\n if (!plugin) {\n return result;\n }\n /**\n * There is a possibility that searchable fields exist in nested object field, so check that as well.\n */\n const childFields = field.settings?.fields || [];\n if (childFields.length > 0) {\n /**\n * So we build a list of searchable child fields and push it into the main result set.\n */\n const childResults = buildSearchableFieldList({\n fields: childFields,\n parents: [...parents, field.fieldId],\n plugins,\n input\n });\n\n result.push(...childResults);\n return result;\n }\n /**\n * If not searchable, continue further.\n */\n if (!plugin.fullTextSearch || field.settings?.disableFullTextSearch === true) {\n return result;\n }\n\n /**\n * Combine all parent paths with the current one and push it.\n */\n const path = [...parents, field.fieldId].join(\".\");\n result.push(path);\n\n return result;\n }, []);\n};\n\ninterface Params {\n input: string[];\n fields: CmsModelField[];\n plugins: PluginsContainer;\n}\nexport const getSearchableFields = (params: Params): string[] => {\n const { plugins, input, fields } = params;\n const fieldPluginMap = plugins\n .byType<CmsModelFieldToGraphQLPlugin>(\"cms-model-field-to-graphql\")\n .reduce(\n (collection, field) => {\n collection[field.fieldType] = field;\n return collection;\n },\n {} as Record<string, CmsModelFieldToGraphQLPlugin>\n );\n\n return buildSearchableFieldList({\n fields,\n input,\n plugins: fieldPluginMap,\n parents: []\n });\n};\n"],"mappings":"AASA,MAAMA,wBAAwB,GAAIC,MAAmB,IAAe;EAChE,MAAM;IAAEC,KAAK;IAAEC,OAAO;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGJ,MAAM;EAClD,OAAOG,MAAM,CAACE,MAAM,CAAW,CAACC,MAAM,EAAEC,KAAK,KAAK;IAC9C;AACR;AACA;IACQ,MAAMC,MAAM,GAAGN,OAAO,CAACK,KAAK,CAACE,IAAI,CAAC;IAClC,IAAI,CAACD,MAAM,EAAE;MACT,OAAOF,MAAM;IACjB;IACA;AACR;AACA;IACQ,MAAMI,WAAW,GAAGH,KAAK,CAACI,QAAQ,EAAER,MAAM,IAAI,EAAE;IAChD,IAAIO,WAAW,CAACE,MAAM,GAAG,CAAC,EAAE;MACxB;AACZ;AACA;MACY,MAAMC,YAAY,GAAGd,wBAAwB,CAAC;QAC1CI,MAAM,EAAEO,WAAW;QACnBN,OAAO,EAAE,CAAC,GAAGA,OAAO,EAAEG,KAAK,CAACO,OAAO,CAAC;QACpCZ,OAAO;QACPD;MACJ,CAAC,CAAC;MAEFK,MAAM,CAACS,IAAI,CAAC,GAAGF,YAAY,CAAC;MAC5B,OAAOP,MAAM;IACjB;IACA;AACR;AACA;IACQ,IAAI,CAACE,MAAM,CAACQ,cAAc,IAAIT,KAAK,CAACI,QAAQ,EAAEM,qBAAqB,KAAK,IAAI,EAAE;MAC1E,OAAOX,MAAM;IACjB;;IAEA;AACR;AACA;IACQ,MAAMY,IAAI,GAAG,CAAC,GAAGd,OAAO,EAAEG,KAAK,CAACO,OAAO,CAAC,CAACK,IAAI,CAAC,GAAG,CAAC;IAClDb,MAAM,CAACS,IAAI,CAACG,IAAI,CAAC;IAEjB,OAAOZ,MAAM;EACjB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAOD,OAAO,MAAMc,mBAAmB,GAAIpB,MAAc,IAAe;EAC7D,MAAM;IAAEE,OAAO;IAAED,KAAK;IAAEE;EAAO,CAAC,GAAGH,MAAM;EACzC,MAAMqB,cAAc,GAAGnB,OAAO,CACzBoB,MAAM,CAA+B,4BAA4B,CAAC,CAClEjB,MAAM,CACH,CAACkB,UAAU,EAAEhB,KAAK,KAAK;IACnBgB,UAAU,CAAChB,KAAK,CAACiB,SAAS,CAAC,GAAGjB,KAAK;IACnC,OAAOgB,UAAU;EACrB,CAAC,EACD,CAAC,CACL,CAAC;EAEL,OAAOxB,wBAAwB,CAAC;IAC5BI,MAAM;IACNF,KAAK;IACLC,OAAO,EAAEmB,cAAc;IACvBjB,OAAO,EAAE;EACb,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["buildSearchableFieldList","params","input","plugins","fields","parents","reduce","result","field","plugin","type","childFields","settings","length","childResults","fieldId","push","fullTextSearch","disableFullTextSearch","path","join","getSearchableFields","fieldPluginMap","byType","collection","fieldType"],"sources":["searchableFields.ts"],"sourcesContent":["import type { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types/index.js\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\n\ninterface BuildParams {\n input: string[];\n fields: CmsModelField[];\n plugins: Record<string, CmsModelFieldToGraphQLPlugin>;\n parents: string[];\n}\nconst buildSearchableFieldList = (params: BuildParams): string[] => {\n const { input, plugins, fields, parents } = params;\n return fields.reduce<string[]>(\n (result, field) => {\n /**\n * We need to check if the field is full text searchable, and for that we need a plugin for the field type.\n */\n const plugin = plugins[field.type];\n if (!plugin) {\n return result;\n }\n /**\n * There is a possibility that searchable fields exist in nested object field, so check that as well.\n */\n const childFields = field.settings?.fields || [];\n if (childFields.length > 0) {\n /**\n * So we build a list of searchable child fields and push it into the main result set.\n */\n const childResults = buildSearchableFieldList({\n fields: childFields,\n parents: [...parents, field.fieldId],\n plugins,\n input\n });\n\n result.push(...childResults);\n return result;\n }\n /**\n * If not searchable, continue further.\n */\n if (!plugin.fullTextSearch || field.settings?.disableFullTextSearch === true) {\n return result;\n }\n\n /**\n * Combine all parent paths with the current one and push it.\n */\n const path = [...parents, field.fieldId].join(\".\");\n result.push(path);\n\n return result;\n },\n /**\n * We always add id and entry id\n */\n [\"id\", \"entryId\"]\n );\n};\n\ninterface Params {\n input: string[];\n fields: CmsModelField[];\n plugins: PluginsContainer;\n}\nexport const getSearchableFields = (params: Params): string[] => {\n const { plugins, input, fields } = params;\n const fieldPluginMap = plugins\n .byType<CmsModelFieldToGraphQLPlugin>(\"cms-model-field-to-graphql\")\n .reduce<Record<string, CmsModelFieldToGraphQLPlugin>>((collection, field) => {\n collection[field.fieldType] = field;\n return collection;\n }, {});\n\n return buildSearchableFieldList({\n fields,\n input,\n plugins: fieldPluginMap,\n parents: [\"values\"]\n });\n};\n"],"mappings":"AASA,MAAMA,wBAAwB,GAAIC,MAAmB,IAAe;EAChE,MAAM;IAAEC,KAAK;IAAEC,OAAO;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGJ,MAAM;EAClD,OAAOG,MAAM,CAACE,MAAM,CAChB,CAACC,MAAM,EAAEC,KAAK,KAAK;IACf;AACZ;AACA;IACY,MAAMC,MAAM,GAAGN,OAAO,CAACK,KAAK,CAACE,IAAI,CAAC;IAClC,IAAI,CAACD,MAAM,EAAE;MACT,OAAOF,MAAM;IACjB;IACA;AACZ;AACA;IACY,MAAMI,WAAW,GAAGH,KAAK,CAACI,QAAQ,EAAER,MAAM,IAAI,EAAE;IAChD,IAAIO,WAAW,CAACE,MAAM,GAAG,CAAC,EAAE;MACxB;AAChB;AACA;MACgB,MAAMC,YAAY,GAAGd,wBAAwB,CAAC;QAC1CI,MAAM,EAAEO,WAAW;QACnBN,OAAO,EAAE,CAAC,GAAGA,OAAO,EAAEG,KAAK,CAACO,OAAO,CAAC;QACpCZ,OAAO;QACPD;MACJ,CAAC,CAAC;MAEFK,MAAM,CAACS,IAAI,CAAC,GAAGF,YAAY,CAAC;MAC5B,OAAOP,MAAM;IACjB;IACA;AACZ;AACA;IACY,IAAI,CAACE,MAAM,CAACQ,cAAc,IAAIT,KAAK,CAACI,QAAQ,EAAEM,qBAAqB,KAAK,IAAI,EAAE;MAC1E,OAAOX,MAAM;IACjB;;IAEA;AACZ;AACA;IACY,MAAMY,IAAI,GAAG,CAAC,GAAGd,OAAO,EAAEG,KAAK,CAACO,OAAO,CAAC,CAACK,IAAI,CAAC,GAAG,CAAC;IAClDb,MAAM,CAACS,IAAI,CAACG,IAAI,CAAC;IAEjB,OAAOZ,MAAM;EACjB,CAAC;EACD;AACR;AACA;EACQ,CAAC,IAAI,EAAE,SAAS,CACpB,CAAC;AACL,CAAC;AAOD,OAAO,MAAMc,mBAAmB,GAAIpB,MAAc,IAAe;EAC7D,MAAM;IAAEE,OAAO;IAAED,KAAK;IAAEE;EAAO,CAAC,GAAGH,MAAM;EACzC,MAAMqB,cAAc,GAAGnB,OAAO,CACzBoB,MAAM,CAA+B,4BAA4B,CAAC,CAClEjB,MAAM,CAA+C,CAACkB,UAAU,EAAEhB,KAAK,KAAK;IACzEgB,UAAU,CAAChB,KAAK,CAACiB,SAAS,CAAC,GAAGjB,KAAK;IACnC,OAAOgB,UAAU;EACrB,CAAC,EAAE,CAAC,CAAC,CAAC;EAEV,OAAOxB,wBAAwB,CAAC;IAC5BI,MAAM;IACNF,KAAK;IACLC,OAAO,EAAEmB,cAAc;IACvBjB,OAAO,EAAE,CAAC,QAAQ;EACtB,CAAC,CAAC;AACN,CAAC","ignoreList":[]}