@webiny/api-headless-cms 6.0.0-rc.1 → 6.0.0-rc.3

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 (118) 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/contentModel/validation.d.ts +9 -9
  20. package/crud/contentModel/validation.js +3 -3
  21. package/crud/contentModel/validation.js.map +1 -1
  22. package/domain/contentModel/errors.d.ts +1 -1
  23. package/domain/contentModel/errors.js.map +1 -1
  24. package/domain/contentModel/schemas.d.ts +126 -8
  25. package/domain/contentModel/schemas.js +12 -13
  26. package/domain/contentModel/schemas.js.map +1 -1
  27. package/export/graphql/index.js +1 -1
  28. package/export/graphql/index.js.map +1 -1
  29. package/features/contentModel/CreateModel/CreateModelRepository.js +4 -1
  30. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  31. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +12 -3
  32. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  33. package/features/contentModel/UpdateModel/UpdateModelRepository.js +8 -2
  34. package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
  35. package/features/contentModel/UpdateModel/UpdateModelUseCase.js +4 -1
  36. package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
  37. package/features/modelBuilder/feature.js +2 -2
  38. package/features/modelBuilder/feature.js.map +1 -1
  39. package/features/modelBuilder/fields/BaseFieldBuilder.d.ts +36 -0
  40. package/features/modelBuilder/fields/BaseFieldBuilder.js +41 -0
  41. package/features/modelBuilder/fields/BaseFieldBuilder.js.map +1 -0
  42. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +228 -0
  43. package/features/modelBuilder/fields/DataFieldBuilder.js +219 -0
  44. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -0
  45. package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +2 -2
  46. package/features/modelBuilder/fields/DynamicZoneFieldType.js +6 -3
  47. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  48. package/features/modelBuilder/fields/FieldBuilder.d.ts +5 -228
  49. package/features/modelBuilder/fields/FieldBuilder.js +3 -231
  50. package/features/modelBuilder/fields/FieldBuilder.js.map +1 -1
  51. package/features/modelBuilder/fields/LayoutFieldBuilder.d.ts +7 -0
  52. package/features/modelBuilder/fields/LayoutFieldBuilder.js +9 -0
  53. package/features/modelBuilder/fields/LayoutFieldBuilder.js.map +1 -0
  54. package/features/modelBuilder/fields/ObjectFieldType.d.ts +4 -3
  55. package/features/modelBuilder/fields/ObjectFieldType.js +19 -4
  56. package/features/modelBuilder/fields/ObjectFieldType.js.map +1 -1
  57. package/features/modelBuilder/fields/UiAlertFieldType.d.ts +8 -4
  58. package/features/modelBuilder/fields/UiAlertFieldType.js +23 -6
  59. package/features/modelBuilder/fields/UiAlertFieldType.js.map +1 -1
  60. package/features/modelBuilder/fields/UiSeparatorFieldType.d.ts +6 -4
  61. package/features/modelBuilder/fields/UiSeparatorFieldType.js +18 -4
  62. package/features/modelBuilder/fields/UiSeparatorFieldType.js.map +1 -1
  63. package/features/modelBuilder/fields/UiTabsFieldType.d.ts +28 -0
  64. package/features/modelBuilder/fields/UiTabsFieldType.js +75 -0
  65. package/features/modelBuilder/fields/UiTabsFieldType.js.map +1 -0
  66. package/features/modelBuilder/fields/abstractions.d.ts +2 -2
  67. package/features/modelBuilder/fields/abstractions.js.map +1 -1
  68. package/features/modelBuilder/index.d.ts +2 -0
  69. package/features/modelBuilder/index.js +2 -0
  70. package/features/modelBuilder/index.js.map +1 -1
  71. package/features/modelBuilder/models/BaseModelBuilder.d.ts +8 -3
  72. package/features/modelBuilder/models/BaseModelBuilder.js +19 -0
  73. package/features/modelBuilder/models/BaseModelBuilder.js.map +1 -1
  74. package/features/modelBuilder/models/PrivateModelBuilder.js +4 -2
  75. package/features/modelBuilder/models/PrivateModelBuilder.js.map +1 -1
  76. package/features/modelBuilder/models/PublicModelBuilder.js +16 -11
  77. package/features/modelBuilder/models/PublicModelBuilder.js.map +1 -1
  78. package/graphql/schema/baseSchema.js +17 -15
  79. package/graphql/schema/baseSchema.js.map +1 -1
  80. package/graphql/schema/cms/helpers/index.d.ts +1 -0
  81. package/graphql/schema/cms/helpers/index.js +1 -0
  82. package/graphql/schema/cms/helpers/index.js.map +1 -1
  83. package/graphql/schema/cms/helpers/transformWhereToNested.d.ts +17 -0
  84. package/graphql/schema/cms/helpers/transformWhereToNested.js +54 -0
  85. package/graphql/schema/cms/helpers/transformWhereToNested.js.map +1 -0
  86. package/graphql/schema/cms/helpers.d.ts +1 -0
  87. package/graphql/schema/cms/helpers.js +1 -0
  88. package/graphql/schema/cms/helpers.js.map +1 -1
  89. package/graphql/schema/cms/listEntriesResolver.js +6 -2
  90. package/graphql/schema/cms/listEntriesResolver.js.map +1 -1
  91. package/graphql/schema/contentModels.js +21 -3
  92. package/graphql/schema/contentModels.js.map +1 -1
  93. package/graphql/schema/createManageSDL.js +4 -2
  94. package/graphql/schema/createManageSDL.js.map +1 -1
  95. package/graphqlFields/index.js +1 -2
  96. package/graphqlFields/index.js.map +1 -1
  97. package/package.json +22 -22
  98. package/plugins/CmsModelPlugin.js +19 -4
  99. package/plugins/CmsModelPlugin.js.map +1 -1
  100. package/types/fields/objectField.d.ts +2 -0
  101. package/types/fields/objectField.js.map +1 -1
  102. package/types/model.d.ts +32 -3
  103. package/types/model.js.map +1 -1
  104. package/types/modelField.d.ts +19 -3
  105. package/types/modelField.js.map +1 -1
  106. package/types/types.d.ts +12 -9
  107. package/types/types.js.map +1 -1
  108. package/utils/createModelField.js +4 -2
  109. package/utils/createModelField.js.map +1 -1
  110. package/crud/contentEntry/entryDataFactories/state.d.ts +0 -10
  111. package/crud/contentEntry/entryDataFactories/state.js +0 -16
  112. package/crud/contentEntry/entryDataFactories/state.js.map +0 -1
  113. package/features/modelBuilder/fields/UiFieldType.d.ts +0 -18
  114. package/features/modelBuilder/fields/UiFieldType.js +0 -25
  115. package/features/modelBuilder/fields/UiFieldType.js.map +0 -1
  116. package/graphqlFields/ui.d.ts +0 -2
  117. package/graphqlFields/ui.js +0 -32
  118. package/graphqlFields/ui.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":[]}
@@ -221,7 +221,7 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
221
221
  tags?: string[] | undefined;
222
222
  settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
223
223
  }>, "many">>;
224
- layout: zod.ZodDefault<zod.ZodArray<zod.ZodArray<zod.ZodString, "many">, "many">>;
224
+ layout: zod.ZodDefault<zod.ZodArray<zod.ZodArray<zod.ZodAny, "many">, "many">>;
225
225
  tags: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
226
226
  titleFieldId: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>;
227
227
  descriptionFieldId: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>;
@@ -277,7 +277,7 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
277
277
  enabled: boolean;
278
278
  } | undefined;
279
279
  }[];
280
- layout: string[][];
280
+ layout: any[][];
281
281
  singularApiName: string;
282
282
  pluralApiName: string;
283
283
  group: string;
@@ -335,7 +335,7 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
335
335
  tags?: string[] | undefined;
336
336
  settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
337
337
  }[] | undefined;
338
- layout?: string[][] | undefined;
338
+ layout?: any[][] | undefined;
339
339
  modelId?: string | undefined;
340
340
  titleFieldId?: string | null | undefined;
341
341
  descriptionFieldId?: string | null | undefined;
@@ -564,7 +564,7 @@ export declare const createModelImportValidation: () => zod.ZodObject<{
564
564
  tags?: string[] | undefined;
565
565
  settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
566
566
  }>, "many">;
567
- layout: zod.ZodArray<zod.ZodArray<zod.ZodString, "many">, "many">;
567
+ layout: zod.ZodArray<zod.ZodArray<zod.ZodAny, "many">, "many">;
568
568
  tags: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
569
569
  titleFieldId: zod.ZodOptional<zod.ZodNullable<zod.ZodString>>;
570
570
  descriptionFieldId: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>;
@@ -619,7 +619,7 @@ export declare const createModelImportValidation: () => zod.ZodObject<{
619
619
  enabled: boolean;
620
620
  } | undefined;
621
621
  }[];
622
- layout: string[][];
622
+ layout: any[][];
623
623
  singularApiName: string;
624
624
  pluralApiName: string;
625
625
  group: string;
@@ -666,7 +666,7 @@ export declare const createModelImportValidation: () => zod.ZodObject<{
666
666
  tags?: string[] | undefined;
667
667
  settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
668
668
  }[];
669
- layout: string[][];
669
+ layout: any[][];
670
670
  singularApiName: string;
671
671
  pluralApiName: string;
672
672
  modelId: string;
@@ -956,7 +956,7 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
956
956
  tags?: string[] | undefined;
957
957
  settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
958
958
  }>, "many">;
959
- layout: zod.ZodArray<zod.ZodArray<zod.ZodString, "many">, "many">;
959
+ layout: zod.ZodArray<zod.ZodArray<zod.ZodAny, "many">, "many">;
960
960
  titleFieldId: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>;
961
961
  descriptionFieldId: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>;
962
962
  imageFieldId: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>;
@@ -1010,7 +1010,7 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
1010
1010
  enabled: boolean;
1011
1011
  } | undefined;
1012
1012
  }[];
1013
- layout: string[][];
1013
+ layout: any[][];
1014
1014
  name?: string | undefined;
1015
1015
  tags?: string[] | undefined;
1016
1016
  singularApiName?: string | undefined;
@@ -1056,7 +1056,7 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
1056
1056
  tags?: string[] | undefined;
1057
1057
  settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
1058
1058
  }[];
1059
- layout: string[][];
1059
+ layout: any[][];
1060
1060
  name?: string | undefined;
1061
1061
  description?: string | null | undefined;
1062
1062
  icon?: zod.objectInputType<{