@webiny/api-headless-cms 5.40.0-beta.4 → 5.40.0-beta.6

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 (54) hide show
  1. package/constants.d.ts +4 -3
  2. package/constants.js +14 -8
  3. package/constants.js.map +1 -1
  4. package/crud/contentEntry/referenceFieldsMapping.js +1 -1
  5. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  6. package/crud/contentModel/validateStorageId.js +1 -11
  7. package/crud/contentModel/validateStorageId.js.map +1 -1
  8. package/crud/contentModel/validation.d.ts +21 -21
  9. package/crud/contentModel/validation.js +1 -1
  10. package/crud/contentModel/validation.js.map +1 -1
  11. package/graphql/getSchema/generateCacheId.d.ts +10 -0
  12. package/graphql/getSchema/generateCacheId.js +17 -0
  13. package/graphql/getSchema/generateCacheId.js.map +1 -0
  14. package/graphql/getSchema/generateCacheKey.d.ts +10 -0
  15. package/graphql/getSchema/generateCacheKey.js +34 -0
  16. package/graphql/getSchema/generateCacheKey.js.map +1 -0
  17. package/graphql/getSchema.js +4 -43
  18. package/graphql/getSchema.js.map +1 -1
  19. package/graphql/scalars/RevisionId.d.ts +2 -0
  20. package/graphql/scalars/RevisionId.js +26 -0
  21. package/graphql/scalars/RevisionId.js.map +1 -0
  22. package/graphql/scalars/RevisionIdScalarPlugin.d.ts +2 -0
  23. package/graphql/scalars/RevisionIdScalarPlugin.js +18 -0
  24. package/graphql/scalars/RevisionIdScalarPlugin.js.map +1 -0
  25. package/graphql/schema/contentEntries.js +1 -2
  26. package/graphql/schema/contentEntries.js.map +1 -1
  27. package/graphql/schema/contentModels.js +11 -0
  28. package/graphql/schema/contentModels.js.map +1 -1
  29. package/graphql/schema/createManageResolvers.js +1 -1
  30. package/graphql/schema/createManageResolvers.js.map +1 -1
  31. package/graphql/schema/createManageSDL.js +4 -2
  32. package/graphql/schema/createManageSDL.js.map +1 -1
  33. package/graphql/schema/createReadSDL.js +6 -4
  34. package/graphql/schema/createReadSDL.js.map +1 -1
  35. package/graphqlFields/ref.js +1 -1
  36. package/graphqlFields/ref.js.map +1 -1
  37. package/graphqlFields/richText/RichTextPluginsProcessor.d.ts +2 -2
  38. package/graphqlFields/richText/RichTextPluginsProcessor.js.map +1 -1
  39. package/graphqlFields/richText/richTextResolver.js +4 -19
  40. package/graphqlFields/richText/richTextResolver.js.map +1 -1
  41. package/htmlRenderer/createLexicalHTMLRenderer.js.map +1 -1
  42. package/index.d.ts +1 -0
  43. package/index.js +14 -1
  44. package/index.js.map +1 -1
  45. package/package.json +21 -19
  46. package/plugins/CmsRichTextRendererPlugin.d.ts +6 -6
  47. package/plugins/CmsRichTextRendererPlugin.js.map +1 -1
  48. package/types/modelField.d.ts +4 -0
  49. package/types/modelField.js.map +1 -1
  50. package/types/types.d.ts +14 -1
  51. package/types/types.js.map +1 -1
  52. package/utils/RichTextRenderer.d.ts +10 -0
  53. package/utils/RichTextRenderer.js +33 -0
  54. package/utils/RichTextRenderer.js.map +1 -0
package/constants.d.ts CHANGED
@@ -33,9 +33,10 @@ export interface RecordWithEntryMetaFields {
33
33
  lastPublishedBy: CmsIdentity | null;
34
34
  }
35
35
  export declare const pickEntryMetaFields: (object: Partial<RecordWithEntryMetaFields>, filter?: ((fieldName: EntryMetaFieldName | string) => boolean) | undefined) => Partial<RecordWithEntryMetaFields>;
36
- export declare const isNullableEntryMetaField: (fieldName: EntryMetaFieldName) => boolean;
37
- export declare const isDateTimeEntryMetaField: (fieldName: EntryMetaFieldName) => boolean;
38
- export declare const isIdentityEntryMetaField: (fieldName: EntryMetaFieldName) => boolean;
36
+ export declare const isNullableEntryMetaField: (fieldName: string) => boolean;
37
+ export declare const isNonNullableEntryMetaField: (fieldName: string) => boolean;
38
+ export declare const isDateTimeEntryMetaField: (fieldName: string) => boolean;
39
+ export declare const isIdentityEntryMetaField: (fieldName: string) => boolean;
39
40
  export declare const isRevisionEntryMetaField: (fieldName: string) => boolean;
40
41
  export declare const isEntryLevelEntryMetaField: (fieldName: string) => boolean;
41
42
  export declare const isDeletedEntryMetaField: (fieldName: string) => boolean;
package/constants.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.pickEntryMetaFields = exports.isRevisionEntryMetaField = exports.isRestoredEntryMetaField = exports.isNullableEntryMetaField = exports.isIdentityEntryMetaField = exports.isEntryLevelEntryMetaField = exports.isDeletedEntryMetaField = exports.isDateTimeEntryMetaField = exports.ROOT_FOLDER = exports.ENTRY_META_FIELDS = void 0;
6
+ exports.pickEntryMetaFields = exports.isRevisionEntryMetaField = exports.isRestoredEntryMetaField = exports.isNullableEntryMetaField = exports.isNonNullableEntryMetaField = exports.isIdentityEntryMetaField = exports.isEntryLevelEntryMetaField = exports.isDeletedEntryMetaField = exports.isDateTimeEntryMetaField = exports.ROOT_FOLDER = exports.ENTRY_META_FIELDS = void 0;
7
7
  const ROOT_FOLDER = exports.ROOT_FOLDER = "root";
8
8
 
9
9
  // Content entries - xOn and xBy meta fields.
@@ -15,13 +15,15 @@ const ENTRY_META_FIELDS = exports.ENTRY_META_FIELDS = [
15
15
  const pickEntryMetaFields = (object, filter) => {
16
16
  const pickedEntryMetaFields = {};
17
17
  for (const entryMetaFieldName of ENTRY_META_FIELDS) {
18
- if (entryMetaFieldName in object) {
19
- const mustPick = !filter || filter(entryMetaFieldName);
20
- if (mustPick) {
21
- Object.assign(pickedEntryMetaFields, {
22
- [entryMetaFieldName]: object[entryMetaFieldName]
23
- });
24
- }
18
+ const fieldExists = (entryMetaFieldName in object);
19
+ if (!fieldExists) {
20
+ object[entryMetaFieldName] = undefined;
21
+ }
22
+ const mustPick = !filter || filter(entryMetaFieldName);
23
+ if (mustPick) {
24
+ Object.assign(pickedEntryMetaFields, {
25
+ [entryMetaFieldName]: object[entryMetaFieldName]
26
+ });
25
27
  }
26
28
  }
27
29
  return pickedEntryMetaFields;
@@ -33,6 +35,10 @@ const isNullableEntryMetaField = fieldName => {
33
35
  return lcFieldName.includes("modified") || lcFieldName.includes("published") || lcFieldName.includes("deleted") || lcFieldName.includes("restored");
34
36
  };
35
37
  exports.isNullableEntryMetaField = isNullableEntryMetaField;
38
+ const isNonNullableEntryMetaField = fieldName => {
39
+ return !isNullableEntryMetaField(fieldName);
40
+ };
41
+ exports.isNonNullableEntryMetaField = isNonNullableEntryMetaField;
36
42
  const isDateTimeEntryMetaField = fieldName => {
37
43
  // Only field ending with "On" are date/time fields.
38
44
  return fieldName.endsWith("On");
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["ROOT_FOLDER","exports","ENTRY_META_FIELDS","pickEntryMetaFields","object","filter","pickedEntryMetaFields","entryMetaFieldName","mustPick","Object","assign","isNullableEntryMetaField","fieldName","lcFieldName","toLowerCase","includes","isDateTimeEntryMetaField","endsWith","isIdentityEntryMetaField","isRevisionEntryMetaField","startsWith","isEntryLevelEntryMetaField","isDeletedEntryMetaField","isRestoredEntryMetaField"],"sources":["constants.ts"],"sourcesContent":["import { CmsIdentity } from \"~/types\";\n\nexport const ROOT_FOLDER = \"root\";\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 if (entryMetaFieldName in object) {\n const mustPick = !filter || filter(entryMetaFieldName);\n if (mustPick) {\n Object.assign(pickedEntryMetaFields, {\n [entryMetaFieldName]: object[entryMetaFieldName]\n });\n }\n }\n }\n\n return pickedEntryMetaFields;\n};\n\nexport const isNullableEntryMetaField = (fieldName: EntryMetaFieldName) => {\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 isDateTimeEntryMetaField = (fieldName: EntryMetaFieldName) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"On\");\n};\n\nexport const isIdentityEntryMetaField = (fieldName: EntryMetaFieldName) => {\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","exports","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 { CmsIdentity } from \"~/types\";\n\nexport const ROOT_FOLDER = \"root\";\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":";;;;;;AAEO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,MAAM;;AAEjC;AACO,MAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG;AAC7B;AACA,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB;AAEjB;AACA,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,CACnB;AAqCH,MAAMC,mBAAmB,GAAGA,CAC/BC,MAA0C,EAC1CC,MAA4D,KAC3D;EACD,MAAMC,qBAAyD,GAAG,CAAC,CAAC;EACpE,KAAK,MAAMC,kBAAkB,IAAIL,iBAAiB,EAAE;IAChD,MAAMM,WAAW,IAAGD,kBAAkB,IAAIH,MAAM;IAChD,IAAI,CAACI,WAAW,EAAE;MACdJ,MAAM,CAACG,kBAAkB,CAAC,GAAGE,SAAS;IAC1C;IAEA,MAAMC,QAAQ,GAAG,CAACL,MAAM,IAAIA,MAAM,CAACE,kBAAkB,CAAC;IACtD,IAAIG,QAAQ,EAAE;MACVC,MAAM,CAACC,MAAM,CAACN,qBAAqB,EAAE;QACjC,CAACC,kBAAkB,GAAGH,MAAM,CAACG,kBAAkB;MACnD,CAAC,CAAC;IACN;EACJ;EAEA,OAAOD,qBAAqB;AAChC,CAAC;AAACL,OAAA,CAAAE,mBAAA,GAAAA,mBAAA;AAEK,MAAMU,wBAAwB,GAAIC,SAAiB,IAAK;EAC3D;EACA,MAAMC,WAAW,GAAGD,SAAS,CAACE,WAAW,CAAC,CAAC;EAC3C,OACID,WAAW,CAACE,QAAQ,CAAC,UAAU,CAAC,IAChCF,WAAW,CAACE,QAAQ,CAAC,WAAW,CAAC,IACjCF,WAAW,CAACE,QAAQ,CAAC,SAAS,CAAC,IAC/BF,WAAW,CAACE,QAAQ,CAAC,UAAU,CAAC;AAExC,CAAC;AAAChB,OAAA,CAAAY,wBAAA,GAAAA,wBAAA;AAEK,MAAMK,2BAA2B,GAAIJ,SAAiB,IAAK;EAC9D,OAAO,CAACD,wBAAwB,CAACC,SAAS,CAAC;AAC/C,CAAC;AAACb,OAAA,CAAAiB,2BAAA,GAAAA,2BAAA;AAEK,MAAMC,wBAAwB,GAAIL,SAAiB,IAAK;EAC3D;EACA,OAAOA,SAAS,CAACM,QAAQ,CAAC,IAAI,CAAC;AACnC,CAAC;AAACnB,OAAA,CAAAkB,wBAAA,GAAAA,wBAAA;AAEK,MAAME,wBAAwB,GAAIP,SAAiB,IAAK;EAC3D;EACA,OAAOA,SAAS,CAACM,QAAQ,CAAC,IAAI,CAAC;AACnC,CAAC;AAACnB,OAAA,CAAAoB,wBAAA,GAAAA,wBAAA;AAEK,MAAMC,wBAAwB,GAAIR,SAAiB,IAAK;EAC3D,OACIZ,iBAAiB,CAACe,QAAQ,CAACH,SAA+B,CAAC,IAC3DA,SAAS,CAACS,UAAU,CAAC,UAAU,CAAC;AAExC,CAAC;AAACtB,OAAA,CAAAqB,wBAAA,GAAAA,wBAAA;AAEK,MAAME,0BAA0B,GAAIV,SAAiB,IAAK;EAC7D,OACIZ,iBAAiB,CAACe,QAAQ,CAACH,SAA+B,CAAC,IAC3D,CAACA,SAAS,CAACS,UAAU,CAAC,UAAU,CAAC;AAEzC,CAAC;AAACtB,OAAA,CAAAuB,0BAAA,GAAAA,0BAAA;AAEK,MAAMC,uBAAuB,GAAIX,SAAiB,IAAK;EAC1D,OACIZ,iBAAiB,CAACe,QAAQ,CAACH,SAA+B,CAAC,IAAIA,SAAS,CAACG,QAAQ,CAAC,SAAS,CAAC;AAEpG,CAAC;AAAChB,OAAA,CAAAwB,uBAAA,GAAAA,uBAAA;AAEK,MAAMC,wBAAwB,GAAIZ,SAAiB,IAAK;EAC3D,OACIZ,iBAAiB,CAACe,QAAQ,CAACH,SAA+B,CAAC,IAC3DA,SAAS,CAACG,QAAQ,CAAC,UAAU,CAAC;AAEtC,CAAC;AAAChB,OAAA,CAAAyB,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -275,7 +275,7 @@ async function validateReferencedEntries({
275
275
  referencesByModel.forEach((ids, modelId) => {
276
276
  const modelEntriesInDb = entriesByModel[modelId];
277
277
  for (const id of ids) {
278
- if (!modelEntriesInDb.includes(id)) {
278
+ if (!modelEntriesInDb || !modelEntriesInDb.includes(id)) {
279
279
  throw new _error.default(`Missing referenced entry with id "${id}" in model "${modelId}".`, "ENTRY_NOT_FOUND", {
280
280
  id,
281
281
  model: modelId
@@ -1 +1 @@
1
- {"version":3,"names":["_dotProp","_interopRequireDefault","require","_error","_utils","_getBaseFieldType","buildReferenceFieldPaths","params","fields","parentPaths","initialParentPaths","input","isMultipleValues","Array","isArray","filter","field","includes","getBaseFieldType","reduce","collection","baseType","parentPathsValue","length","join","multipleValues","inputValue","dotProp","get","fieldId","key","path","push","templates","settings","values","forEach","value","index","valueTemplate","Object","keys","template","find","tpl","gqlTypeName","result","concat","String","objFieldPath","objFieldInputValue","results","getReferenceFieldValue","ref","id","modelId","entryId","trim","referenceFieldsMapping","context","model","validateEntries","output","referenceFieldPaths","validateReferencedEntries","refValue","maybeEntryId","parseIdentifier","set","exports","referencesByModel","Map","has","size","models","security","withoutAuthorization","cms","listModels","entries","promises","map","getEntriesByIds","allEntries","Promise","all","then","res","flat","entriesByModel","acc","entry","ids","modelEntriesInDb","WebinyError"],"sources":["referenceFieldsMapping.ts"],"sourcesContent":["import dotProp from \"dot-prop\";\nimport WebinyError from \"@webiny/error\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\nimport { CmsContext, CmsDynamicZoneTemplate, CmsModel, CmsModelField } from \"~/types\";\n\ninterface CmsRefEntry {\n id: string;\n entryId: string;\n modelId: string;\n}\n\ntype RefValue = Pick<CmsRefEntry, \"id\" | \"modelId\"> & {\n entryId?: string;\n};\n\ninterface ReferenceObject {\n id: string;\n modelId: string;\n}\n\ninterface Params {\n context: CmsContext;\n model: CmsModel;\n input: Record<string, ReferenceObject | ReferenceObject[]>;\n validateEntries?: boolean;\n}\n\ninterface BuildReferenceFieldPaths {\n fields: CmsModelField[];\n parentPaths: string[];\n input: Record<string, any>;\n}\n\nconst buildReferenceFieldPaths = (params: BuildReferenceFieldPaths): string[] => {\n const { fields, parentPaths: initialParentPaths, input } = params;\n\n const parentPaths = [...initialParentPaths];\n\n const isMultipleValues = Array.isArray(input);\n\n return fields\n .filter(field => [\"object\", \"ref\", \"dynamicZone\"].includes(getBaseFieldType(field)))\n .reduce((collection, field) => {\n /**\n * First we check the ref field\n */\n const baseType = getBaseFieldType(field);\n if (baseType === \"ref\") {\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n if (field.multipleValues) {\n const inputValue = dotProp.get(input, `${field.fieldId}`, []);\n if (!Array.isArray(inputValue)) {\n return collection;\n }\n\n for (const key in inputValue) {\n const path = `${parentPathsValue}${field.fieldId}.${key}`;\n collection.push(path);\n }\n return collection;\n }\n\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n collection.push(`${parentPathsValue}${field.fieldId}`);\n\n return collection;\n }\n\n if (baseType === \"dynamicZone\") {\n const templates: CmsDynamicZoneTemplate[] = field.settings?.templates || [];\n\n if (field.multipleValues) {\n const values = dotProp.get(input, field.fieldId, []);\n if (!Array.isArray(values)) {\n return collection;\n }\n\n values.forEach((value, index) => {\n const valueTemplate = Object.keys(value)[0];\n const template = templates.find(tpl => tpl.gqlTypeName === valueTemplate);\n if (!template) {\n return;\n }\n\n const result = buildReferenceFieldPaths({\n fields: template.fields,\n input: value[valueTemplate],\n parentPaths: parentPaths.concat([\n field.fieldId,\n String(index),\n template.gqlTypeName\n ])\n });\n\n collection.push(...result);\n });\n\n return collection;\n }\n\n const value = dotProp.get(input, field.fieldId, {});\n if (!value) {\n return collection;\n }\n\n const valueTemplate = Object.keys(value)[0];\n const template = templates.find(tpl => tpl.gqlTypeName === valueTemplate);\n\n if (!template) {\n return collection;\n }\n\n const result = buildReferenceFieldPaths({\n fields: template.fields,\n input: dotProp.get(value, valueTemplate, {}),\n parentPaths: parentPaths.concat([field.fieldId, template.gqlTypeName])\n });\n collection.push(...result);\n\n return collection;\n }\n\n /**\n * Then we move onto the object field\n */\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n /**\n * This is if received input is array. We need to map key with fieldId at this point.\n */\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n const objFieldPath = `${field.fieldId}`;\n const objFieldInputValue = dotProp.get(input, objFieldPath, []);\n\n /**\n * If field is multiple values one, we need to go through the input and use the existing keys.\n */\n if (field.multipleValues) {\n if (Array.isArray(objFieldInputValue) === false) {\n return collection;\n }\n for (const key in objFieldInputValue) {\n const result = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue[key],\n parentPaths: parentPaths.concat([field.fieldId, key])\n });\n collection.push(...result);\n }\n\n return collection;\n }\n\n /**\n * Single value reference field.\n */\n const results = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue,\n parentPaths: parentPaths.concat([field.fieldId])\n });\n\n return collection.concat(results);\n }, [] as string[]);\n};\n\nconst getReferenceFieldValue = (ref: any): { id: string | null; modelId: string | null } => {\n if (!ref) {\n return {\n id: null,\n modelId: null\n };\n }\n return {\n id: (ref.id || ref.entryId || \"\").trim() || null,\n modelId: (ref.modelId || \"\").trim() || null\n };\n};\n\n/**\n * This function traverses the content entry input value, extracts all occurrences of the `ref` field,\n * optionally verifies that those referenced entries exist (by loading them), and normalizes the `ref` value to\n * always contain `{ id, modelId, entryId }`. `entryId` is important when data is being loaded via\n * the `read` and `preview` endpoint.\n */\nexport const referenceFieldsMapping = async (params: Params): Promise<Record<string, any>> => {\n const { context, model, input, validateEntries = false } = params;\n\n let output: Record<string, any> = {\n ...input\n };\n\n const referenceFieldPaths = buildReferenceFieldPaths({\n fields: model.fields,\n input,\n parentPaths: []\n });\n\n if (!referenceFieldPaths.length) {\n return output;\n }\n\n if (validateEntries) {\n await validateReferencedEntries({ output, context, referenceFieldPaths });\n }\n\n /**\n * Assign the entryId, id and model values to the output.\n */\n for (const path of referenceFieldPaths) {\n // It is safe to cast here, because `referenceFieldPaths` array is generated from the `input`.\n const refValue: RefValue | undefined = dotProp.get(input, path);\n if (!refValue) {\n continue;\n }\n\n /**\n * Over time, the structure of `RefInput` was changing, and we need to handle different cases for backwards\n * compatibility. The latest valid structure of a `ref` field value is { id, modelId }, but we also need\n * to make sure that the legacy structure { entryId, modelId } is supported.\n */\n const { id, modelId, entryId: maybeEntryId } = refValue;\n\n const { id: entryId } = parseIdentifier(maybeEntryId || id);\n\n output = dotProp.set(output, path, {\n // If `id` is not set, we're dealing with the legacy structure.\n id: id ?? maybeEntryId,\n entryId,\n modelId\n });\n }\n\n return output;\n};\n\ninterface ValidateReferencedEntriesParams {\n output: Record<string, any>;\n context: CmsContext;\n referenceFieldPaths: string[];\n}\n\nasync function validateReferencedEntries({\n output,\n context,\n referenceFieldPaths\n}: ValidateReferencedEntriesParams) {\n const referencesByModel = new Map<string, string[]>();\n\n /**\n * Group references by modelId.\n */\n for (const path of referenceFieldPaths) {\n const ref = dotProp.get(output, path) as ReferenceObject | any;\n\n const { id, modelId } = getReferenceFieldValue(ref);\n\n if (!id || !modelId) {\n continue;\n }\n\n if (!referencesByModel.has(modelId)) {\n referencesByModel.set(modelId, []);\n }\n\n referencesByModel.get(modelId)?.push(id);\n }\n\n if (!referencesByModel.size) {\n return;\n }\n\n /**\n * Load all models and use only those that are used in reference.\n */\n const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter(model => {\n const entries = referencesByModel.get(model.modelId);\n if (!Array.isArray(entries) || entries.length === 0) {\n return false;\n }\n return true;\n });\n });\n\n if (!models.length) {\n return;\n }\n\n /**\n * Load all the entries by their IDs.\n */\n const promises = await context.security.withoutAuthorization(async () => {\n return models.map(model => {\n return context.cms.getEntriesByIds(model, referencesByModel.get(model.modelId) || []);\n });\n });\n\n const allEntries = await Promise.all(promises).then(res => res.flat());\n const entriesByModel = allEntries.reduce<Record<string, string[]>>((acc, entry) => {\n return { ...acc, [entry.modelId]: [...(acc[entry.modelId] || []), entry.id] };\n }, {});\n\n /**\n * Verify that all entries exist.\n */\n referencesByModel.forEach((ids, modelId) => {\n const modelEntriesInDb = entriesByModel[modelId];\n for (const id of ids) {\n if (!modelEntriesInDb.includes(id)) {\n throw new WebinyError(\n `Missing referenced entry with id \"${id}\" in model \"${modelId}\".`,\n \"ENTRY_NOT_FOUND\",\n {\n id,\n model: modelId\n }\n );\n }\n }\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_dotProp","_interopRequireDefault","require","_error","_utils","_getBaseFieldType","buildReferenceFieldPaths","params","fields","parentPaths","initialParentPaths","input","isMultipleValues","Array","isArray","filter","field","includes","getBaseFieldType","reduce","collection","baseType","parentPathsValue","length","join","multipleValues","inputValue","dotProp","get","fieldId","key","path","push","templates","settings","values","forEach","value","index","valueTemplate","Object","keys","template","find","tpl","gqlTypeName","result","concat","String","objFieldPath","objFieldInputValue","results","getReferenceFieldValue","ref","id","modelId","entryId","trim","referenceFieldsMapping","context","model","validateEntries","output","referenceFieldPaths","validateReferencedEntries","refValue","maybeEntryId","parseIdentifier","set","exports","referencesByModel","Map","has","size","models","security","withoutAuthorization","cms","listModels","entries","promises","map","getEntriesByIds","allEntries","Promise","all","then","res","flat","entriesByModel","acc","entry","ids","modelEntriesInDb","WebinyError"],"sources":["referenceFieldsMapping.ts"],"sourcesContent":["import dotProp from \"dot-prop\";\nimport WebinyError from \"@webiny/error\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\nimport { CmsContext, CmsDynamicZoneTemplate, CmsModel, CmsModelField } from \"~/types\";\n\ninterface CmsRefEntry {\n id: string;\n entryId: string;\n modelId: string;\n}\n\ntype RefValue = Pick<CmsRefEntry, \"id\" | \"modelId\"> & {\n entryId?: string;\n};\n\ninterface ReferenceObject {\n id: string;\n modelId: string;\n}\n\ninterface Params {\n context: CmsContext;\n model: CmsModel;\n input: Record<string, ReferenceObject | ReferenceObject[]>;\n validateEntries?: boolean;\n}\n\ninterface BuildReferenceFieldPaths {\n fields: CmsModelField[];\n parentPaths: string[];\n input: Record<string, any>;\n}\n\nconst buildReferenceFieldPaths = (params: BuildReferenceFieldPaths): string[] => {\n const { fields, parentPaths: initialParentPaths, input } = params;\n\n const parentPaths = [...initialParentPaths];\n\n const isMultipleValues = Array.isArray(input);\n\n return fields\n .filter(field => [\"object\", \"ref\", \"dynamicZone\"].includes(getBaseFieldType(field)))\n .reduce((collection, field) => {\n /**\n * First we check the ref field\n */\n const baseType = getBaseFieldType(field);\n if (baseType === \"ref\") {\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n if (field.multipleValues) {\n const inputValue = dotProp.get(input, `${field.fieldId}`, []);\n if (!Array.isArray(inputValue)) {\n return collection;\n }\n\n for (const key in inputValue) {\n const path = `${parentPathsValue}${field.fieldId}.${key}`;\n collection.push(path);\n }\n return collection;\n }\n\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n collection.push(`${parentPathsValue}${field.fieldId}`);\n\n return collection;\n }\n\n if (baseType === \"dynamicZone\") {\n const templates: CmsDynamicZoneTemplate[] = field.settings?.templates || [];\n\n if (field.multipleValues) {\n const values = dotProp.get(input, field.fieldId, []);\n if (!Array.isArray(values)) {\n return collection;\n }\n\n values.forEach((value, index) => {\n const valueTemplate = Object.keys(value)[0];\n const template = templates.find(tpl => tpl.gqlTypeName === valueTemplate);\n if (!template) {\n return;\n }\n\n const result = buildReferenceFieldPaths({\n fields: template.fields,\n input: value[valueTemplate],\n parentPaths: parentPaths.concat([\n field.fieldId,\n String(index),\n template.gqlTypeName\n ])\n });\n\n collection.push(...result);\n });\n\n return collection;\n }\n\n const value = dotProp.get(input, field.fieldId, {});\n if (!value) {\n return collection;\n }\n\n const valueTemplate = Object.keys(value)[0];\n const template = templates.find(tpl => tpl.gqlTypeName === valueTemplate);\n\n if (!template) {\n return collection;\n }\n\n const result = buildReferenceFieldPaths({\n fields: template.fields,\n input: dotProp.get(value, valueTemplate, {}),\n parentPaths: parentPaths.concat([field.fieldId, template.gqlTypeName])\n });\n collection.push(...result);\n\n return collection;\n }\n\n /**\n * Then we move onto the object field\n */\n const parentPathsValue = parentPaths.length > 0 ? `${parentPaths.join(\".\")}.` : \"\";\n /**\n * This is if received input is array. We need to map key with fieldId at this point.\n */\n if (isMultipleValues) {\n for (const key in input) {\n const path = `${parentPathsValue}${key}.${field.fieldId}`;\n collection.push(path);\n }\n return collection;\n }\n\n const objFieldPath = `${field.fieldId}`;\n const objFieldInputValue = dotProp.get(input, objFieldPath, []);\n\n /**\n * If field is multiple values one, we need to go through the input and use the existing keys.\n */\n if (field.multipleValues) {\n if (Array.isArray(objFieldInputValue) === false) {\n return collection;\n }\n for (const key in objFieldInputValue) {\n const result = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue[key],\n parentPaths: parentPaths.concat([field.fieldId, key])\n });\n collection.push(...result);\n }\n\n return collection;\n }\n\n /**\n * Single value reference field.\n */\n const results = buildReferenceFieldPaths({\n fields: field.settings?.fields || [],\n input: objFieldInputValue,\n parentPaths: parentPaths.concat([field.fieldId])\n });\n\n return collection.concat(results);\n }, [] as string[]);\n};\n\nconst getReferenceFieldValue = (ref: any): { id: string | null; modelId: string | null } => {\n if (!ref) {\n return {\n id: null,\n modelId: null\n };\n }\n return {\n id: (ref.id || ref.entryId || \"\").trim() || null,\n modelId: (ref.modelId || \"\").trim() || null\n };\n};\n\n/**\n * This function traverses the content entry input value, extracts all occurrences of the `ref` field,\n * optionally verifies that those referenced entries exist (by loading them), and normalizes the `ref` value to\n * always contain `{ id, modelId, entryId }`. `entryId` is important when data is being loaded via\n * the `read` and `preview` endpoint.\n */\nexport const referenceFieldsMapping = async (params: Params): Promise<Record<string, any>> => {\n const { context, model, input, validateEntries = false } = params;\n\n let output: Record<string, any> = {\n ...input\n };\n\n const referenceFieldPaths = buildReferenceFieldPaths({\n fields: model.fields,\n input,\n parentPaths: []\n });\n\n if (!referenceFieldPaths.length) {\n return output;\n }\n\n if (validateEntries) {\n await validateReferencedEntries({ output, context, referenceFieldPaths });\n }\n\n /**\n * Assign the entryId, id and model values to the output.\n */\n for (const path of referenceFieldPaths) {\n // It is safe to cast here, because `referenceFieldPaths` array is generated from the `input`.\n const refValue: RefValue | undefined = dotProp.get(input, path);\n if (!refValue) {\n continue;\n }\n\n /**\n * Over time, the structure of `RefInput` was changing, and we need to handle different cases for backwards\n * compatibility. The latest valid structure of a `ref` field value is { id, modelId }, but we also need\n * to make sure that the legacy structure { entryId, modelId } is supported.\n */\n const { id, modelId, entryId: maybeEntryId } = refValue;\n\n const { id: entryId } = parseIdentifier(maybeEntryId || id);\n\n output = dotProp.set(output, path, {\n // If `id` is not set, we're dealing with the legacy structure.\n id: id ?? maybeEntryId,\n entryId,\n modelId\n });\n }\n\n return output;\n};\n\ninterface ValidateReferencedEntriesParams {\n output: Record<string, any>;\n context: CmsContext;\n referenceFieldPaths: string[];\n}\n\nasync function validateReferencedEntries({\n output,\n context,\n referenceFieldPaths\n}: ValidateReferencedEntriesParams) {\n const referencesByModel = new Map<string, string[]>();\n\n /**\n * Group references by modelId.\n */\n for (const path of referenceFieldPaths) {\n const ref = dotProp.get(output, path) as ReferenceObject | any;\n\n const { id, modelId } = getReferenceFieldValue(ref);\n\n if (!id || !modelId) {\n continue;\n }\n\n if (!referencesByModel.has(modelId)) {\n referencesByModel.set(modelId, []);\n }\n\n referencesByModel.get(modelId)?.push(id);\n }\n\n if (!referencesByModel.size) {\n return;\n }\n\n /**\n * Load all models and use only those that are used in reference.\n */\n const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter(model => {\n const entries = referencesByModel.get(model.modelId);\n if (!Array.isArray(entries) || entries.length === 0) {\n return false;\n }\n return true;\n });\n });\n\n if (!models.length) {\n return;\n }\n\n /**\n * Load all the entries by their IDs.\n */\n const promises = await context.security.withoutAuthorization(async () => {\n return models.map(model => {\n return context.cms.getEntriesByIds(model, referencesByModel.get(model.modelId) || []);\n });\n });\n\n const allEntries = await Promise.all(promises).then(res => res.flat());\n const entriesByModel = allEntries.reduce<Record<string, string[]>>((acc, entry) => {\n return { ...acc, [entry.modelId]: [...(acc[entry.modelId] || []), entry.id] };\n }, {});\n\n /**\n * Verify that all entries exist.\n */\n referencesByModel.forEach((ids, modelId) => {\n const modelEntriesInDb = entriesByModel[modelId];\n for (const id of ids) {\n if (!modelEntriesInDb || !modelEntriesInDb.includes(id)) {\n throw new WebinyError(\n `Missing referenced entry with id \"${id}\" in model \"${modelId}\".`,\n \"ENTRY_NOT_FOUND\",\n {\n id,\n model: modelId\n }\n );\n }\n }\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,24 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.validateStorageId = void 0;
8
- var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
9
8
  var _error = _interopRequireDefault(require("@webiny/error"));
10
- // We allow "@" because that's we use it with the `createModelField` function.
9
+ // We allow "@" because that's how we construct storageIds with `createModelField` utility.
11
10
  const VALID_STORAGE_ID_REGEX = /^([@a-zA-Z-0-9]+)$/;
12
11
  const validateStorageId = storageId => {
13
12
  if (!storageId.match(VALID_STORAGE_ID_REGEX)) {
14
13
  const message = [`Invalid storageId provided ("${storageId}").`, 'Only alphanumeric characters and "@" are allowed.'].join(" ");
15
14
  throw new _error.default(message, "STORAGE_ID_NOT_ALPHANUMERIC_ERROR");
16
15
  }
17
-
18
- // We must do this because in the process of camel casing, Lodash removes the `@`
19
- // character from the string. For example, if we received `text@productName`, we
20
- // would be doing the `text@productName` vs. `textProductName` (camel cased) comparison.
21
- storageId = storageId.replace("@", "");
22
- if (storageId !== (0, _camelCase.default)(storageId)) {
23
- const message = [`Invalid storageId provided ("${storageId}").`, "Must be a camelCased string."].join(" ");
24
- throw new _error.default(message, "STORAGE_ID_NOT_CAMEL_CASED_ERROR");
25
- }
26
16
  };
27
17
  exports.validateStorageId = validateStorageId;
28
18
 
@@ -1 +1 @@
1
- {"version":3,"names":["_camelCase","_interopRequireDefault","require","_error","VALID_STORAGE_ID_REGEX","validateStorageId","storageId","match","message","join","WebinyError","replace","lodashCamelCase","exports"],"sources":["validateStorageId.ts"],"sourcesContent":["import lodashCamelCase from \"lodash/camelCase\";\nimport WebinyError from \"@webiny/error\";\n\n// We allow \"@\" because that's we use it with the `createModelField` function.\nconst VALID_STORAGE_ID_REGEX = /^([@a-zA-Z-0-9]+)$/;\n\nexport const validateStorageId = (storageId: string) => {\n if (!storageId.match(VALID_STORAGE_ID_REGEX)) {\n const message = [\n `Invalid storageId provided (\"${storageId}\").`,\n 'Only alphanumeric characters and \"@\" are allowed.'\n ].join(\" \");\n\n throw new WebinyError(message, \"STORAGE_ID_NOT_ALPHANUMERIC_ERROR\");\n }\n\n // We must do this because in the process of camel casing, Lodash removes the `@`\n // character from the string. For example, if we received `text@productName`, we\n // would be doing the `text@productName` vs. `textProductName` (camel cased) comparison.\n storageId = storageId.replace(\"@\", \"\");\n\n if (storageId !== lodashCamelCase(storageId)) {\n const message = [\n `Invalid storageId provided (\"${storageId}\").`,\n \"Must be a camelCased string.\"\n ].join(\" \");\n\n throw new WebinyError(message, \"STORAGE_ID_NOT_CAMEL_CASED_ERROR\");\n }\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA;AACA,MAAME,sBAAsB,GAAG,oBAAoB;AAE5C,MAAMC,iBAAiB,GAAIC,SAAiB,IAAK;EACpD,IAAI,CAACA,SAAS,CAACC,KAAK,CAACH,sBAAsB,CAAC,EAAE;IAC1C,MAAMI,OAAO,GAAG,CACX,gCAA+BF,SAAU,KAAI,EAC9C,mDAAmD,CACtD,CAACG,IAAI,CAAC,GAAG,CAAC;IAEX,MAAM,IAAIC,cAAW,CAACF,OAAO,EAAE,mCAAmC,CAAC;EACvE;;EAEA;EACA;EACA;EACAF,SAAS,GAAGA,SAAS,CAACK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;EAEtC,IAAIL,SAAS,KAAK,IAAAM,kBAAe,EAACN,SAAS,CAAC,EAAE;IAC1C,MAAME,OAAO,GAAG,CACX,gCAA+BF,SAAU,KAAI,EAC9C,8BAA8B,CACjC,CAACG,IAAI,CAAC,GAAG,CAAC;IAEX,MAAM,IAAIC,cAAW,CAACF,OAAO,EAAE,kCAAkC,CAAC;EACtE;AACJ,CAAC;AAACK,OAAA,CAAAR,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","VALID_STORAGE_ID_REGEX","validateStorageId","storageId","match","message","join","WebinyError","exports"],"sources":["validateStorageId.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\n\n// We allow \"@\" because that's how we construct storageIds with `createModelField` utility.\nconst VALID_STORAGE_ID_REGEX = /^([@a-zA-Z-0-9]+)$/;\n\nexport const validateStorageId = (storageId: string) => {\n if (!storageId.match(VALID_STORAGE_ID_REGEX)) {\n const message = [\n `Invalid storageId provided (\"${storageId}\").`,\n 'Only alphanumeric characters and \"@\" are allowed.'\n ].join(\" \");\n\n throw new WebinyError(message, \"STORAGE_ID_NOT_ALPHANUMERIC_ERROR\");\n }\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA;AACA,MAAMC,sBAAsB,GAAG,oBAAoB;AAE5C,MAAMC,iBAAiB,GAAIC,SAAiB,IAAK;EACpD,IAAI,CAACA,SAAS,CAACC,KAAK,CAACH,sBAAsB,CAAC,EAAE;IAC1C,MAAMI,OAAO,GAAG,CACX,gCAA+BF,SAAU,KAAI,EAC9C,mDAAmD,CACtD,CAACG,IAAI,CAAC,GAAG,CAAC;IAEX,MAAM,IAAIC,cAAW,CAACF,OAAO,EAAE,mCAAmC,CAAC;EACvE;AACJ,CAAC;AAACG,OAAA,CAAAN,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -49,13 +49,13 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
49
49
  }>>>;
50
50
  renderer: zod.ZodDefault<zod.ZodNullable<zod.ZodOptional<zod.ZodObject<{
51
51
  name: zod.ZodString;
52
- settings: zod.ZodOptional<zod.ZodNullable<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{}, zod.ZodTypeAny, "passthrough">>>>;
52
+ settings: zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{}, zod.ZodTypeAny, "passthrough">>>;
53
53
  }, "strip", zod.ZodTypeAny, {
54
54
  name: string;
55
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
55
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
56
56
  }, {
57
57
  name: string;
58
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
58
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
59
59
  }>>>>;
60
60
  validation: zod.ZodEffects<zod.ZodDefault<zod.ZodOptional<zod.ZodOptional<zod.ZodNullable<zod.ZodArray<zod.ZodObject<{
61
61
  name: zod.ZodString;
@@ -118,7 +118,7 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
118
118
  placeholderText: string | null;
119
119
  renderer: {
120
120
  name: string;
121
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
121
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
122
122
  } | null;
123
123
  validation: {
124
124
  name: string;
@@ -167,7 +167,7 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
167
167
  } | undefined;
168
168
  renderer?: {
169
169
  name: string;
170
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
170
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
171
171
  } | null | undefined;
172
172
  validation?: {
173
173
  name: string;
@@ -199,7 +199,7 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
199
199
  placeholderText: string | null;
200
200
  renderer: {
201
201
  name: string;
202
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
202
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
203
203
  } | null;
204
204
  validation: {
205
205
  name: string;
@@ -269,7 +269,7 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
269
269
  } | undefined;
270
270
  renderer?: {
271
271
  name: string;
272
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
272
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
273
273
  } | null | undefined;
274
274
  validation?: {
275
275
  name: string;
@@ -340,13 +340,13 @@ export declare const createModelImportValidation: () => zod.ZodObject<{
340
340
  }>>>;
341
341
  renderer: zod.ZodDefault<zod.ZodNullable<zod.ZodOptional<zod.ZodObject<{
342
342
  name: zod.ZodString;
343
- settings: zod.ZodOptional<zod.ZodNullable<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{}, zod.ZodTypeAny, "passthrough">>>>;
343
+ settings: zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{}, zod.ZodTypeAny, "passthrough">>>;
344
344
  }, "strip", zod.ZodTypeAny, {
345
345
  name: string;
346
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
346
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
347
347
  }, {
348
348
  name: string;
349
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
349
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
350
350
  }>>>>;
351
351
  validation: zod.ZodEffects<zod.ZodDefault<zod.ZodOptional<zod.ZodOptional<zod.ZodNullable<zod.ZodArray<zod.ZodObject<{
352
352
  name: zod.ZodString;
@@ -409,7 +409,7 @@ export declare const createModelImportValidation: () => zod.ZodObject<{
409
409
  placeholderText: string | null;
410
410
  renderer: {
411
411
  name: string;
412
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
412
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
413
413
  } | null;
414
414
  validation: {
415
415
  name: string;
@@ -458,7 +458,7 @@ export declare const createModelImportValidation: () => zod.ZodObject<{
458
458
  } | undefined;
459
459
  renderer?: {
460
460
  name: string;
461
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
461
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
462
462
  } | null | undefined;
463
463
  validation?: {
464
464
  name: string;
@@ -489,7 +489,7 @@ export declare const createModelImportValidation: () => zod.ZodObject<{
489
489
  placeholderText: string | null;
490
490
  renderer: {
491
491
  name: string;
492
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
492
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
493
493
  } | null;
494
494
  validation: {
495
495
  name: string;
@@ -552,7 +552,7 @@ export declare const createModelImportValidation: () => zod.ZodObject<{
552
552
  } | undefined;
553
553
  renderer?: {
554
554
  name: string;
555
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
555
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
556
556
  } | null | undefined;
557
557
  validation?: {
558
558
  name: string;
@@ -655,13 +655,13 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
655
655
  }>>>;
656
656
  renderer: zod.ZodDefault<zod.ZodNullable<zod.ZodOptional<zod.ZodObject<{
657
657
  name: zod.ZodString;
658
- settings: zod.ZodOptional<zod.ZodNullable<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{}, zod.ZodTypeAny, "passthrough">>>>;
658
+ settings: zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{}, zod.ZodTypeAny, "passthrough">>>;
659
659
  }, "strip", zod.ZodTypeAny, {
660
660
  name: string;
661
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
661
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
662
662
  }, {
663
663
  name: string;
664
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
664
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
665
665
  }>>>>;
666
666
  validation: zod.ZodEffects<zod.ZodDefault<zod.ZodOptional<zod.ZodOptional<zod.ZodNullable<zod.ZodArray<zod.ZodObject<{
667
667
  name: zod.ZodString;
@@ -724,7 +724,7 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
724
724
  placeholderText: string | null;
725
725
  renderer: {
726
726
  name: string;
727
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
727
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
728
728
  } | null;
729
729
  validation: {
730
730
  name: string;
@@ -773,7 +773,7 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
773
773
  } | undefined;
774
774
  renderer?: {
775
775
  name: string;
776
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
776
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
777
777
  } | null | undefined;
778
778
  validation?: {
779
779
  name: string;
@@ -803,7 +803,7 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
803
803
  placeholderText: string | null;
804
804
  renderer: {
805
805
  name: string;
806
- settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
806
+ settings?: zod.objectOutputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
807
807
  } | null;
808
808
  validation: {
809
809
  name: string;
@@ -865,7 +865,7 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
865
865
  } | undefined;
866
866
  renderer?: {
867
867
  name: string;
868
- settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | null | undefined;
868
+ settings?: zod.objectInputType<{}, zod.ZodTypeAny, "passthrough"> | undefined;
869
869
  } | null | undefined;
870
870
  validation?: {
871
871
  name: string;
@@ -52,7 +52,7 @@ const fieldSchema = _zod.default.object({
52
52
  }).optional(),
53
53
  renderer: _zod.default.object({
54
54
  name: shortString,
55
- settings: _zod.default.object({}).passthrough().nullable().optional()
55
+ settings: _zod.default.object({}).passthrough().optional()
56
56
  }).optional().nullable().default(null),
57
57
  validation: _zod.default.array(_zod.default.object({
58
58
  name: shortString,
@@ -1 +1 @@
1
- {"version":3,"names":["_zod","_interopRequireDefault","require","_upperFirst","_camelCase","fieldSystemFields","str","zod","string","trim","shortString","max","optionalShortString","optional","optionalNullishShortString","nullish","fieldSchema","object","id","storageId","transform","fieldId","regex","message","superRefine","value","ctx","includes","addIssue","code","ZodIssueCode","custom","path","label","helpText","default","placeholderText","nullable","type","tags","array","multipleValues","boolean","predefinedValues","enabled","values","selected","renderer","name","settings","passthrough","validation","listValidation","apiNameRefinementValidation","match","upperFirst","camelCase","refinementSingularValidationMessage","refinementPluralValidationMessage","refinementModelIdValidation","camelCasedValue","toLowerCase","refinementModelIdValidationMessage","modelIdTransformation","createModelCreateValidation","modelId","singularApiName","min","refine","pluralApiName","description","group","icon","fields","layout","titleFieldId","descriptionFieldId","imageFieldId","defaultFields","exports","createModelImportValidation","createModelCreateFromValidation","locale","createModelUpdateValidation"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport upperFirst from \"lodash/upperFirst\";\nimport camelCase from \"lodash/camelCase\";\n\nconst fieldSystemFields: string[] = [\n \"id\",\n \"fieldId\",\n \"storageId\",\n \"label\",\n \"helpText\",\n \"placeholderText\",\n \"type\",\n \"multipleValues\",\n \"predefinedValues\",\n \"renderer\",\n \"validation\",\n \"listValidation\",\n \"settings\"\n];\n\nconst str = zod.string().trim();\nconst shortString = str.max(255);\nconst optionalShortString = shortString.optional();\nconst optionalNullishShortString = optionalShortString.nullish();\n\nconst fieldSchema = zod.object({\n id: shortString,\n storageId: zod\n .string()\n .optional()\n .transform(() => {\n return \"\";\n }),\n fieldId: shortString\n .max(100)\n .regex(/^!?[a-zA-Z]/, {\n message: `Provided value is not valid - must not start with a number.`\n })\n .regex(/^(^[a-zA-Z0-9]+)$/, {\n message: `Provided value is not valid - must be alphanumeric string.`\n })\n .superRefine((value, ctx) => {\n if (fieldSystemFields.includes(value)) {\n return ctx.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `Provided ${value} is not valid - \"${value}\" is an auto-generated field.`,\n path: [\"fieldId\"]\n });\n }\n }),\n label: shortString,\n helpText: optionalShortString.optional().nullish().default(null),\n placeholderText: optionalShortString.optional().nullable().default(null),\n type: shortString,\n tags: zod.array(shortString).optional().default([]),\n multipleValues: zod\n .boolean()\n .optional()\n .nullish()\n .transform(value => {\n return !!value;\n })\n .default(false),\n predefinedValues: zod\n .object({\n enabled: zod.boolean(),\n values: zod\n .array(\n zod.object({\n value: shortString,\n label: shortString,\n selected: zod.boolean().optional().default(false)\n })\n )\n .default([])\n })\n .default({\n enabled: false,\n values: []\n })\n .optional(),\n renderer: zod\n .object({\n name: shortString,\n settings: zod.object({}).passthrough().nullable().optional()\n })\n .optional()\n .nullable()\n .default(null),\n validation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .nullish()\n .optional()\n .default([])\n .transform(value => value || []),\n listValidation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .nullish()\n .optional()\n .default([])\n .transform(value => value || []),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n});\n\nconst apiNameRefinementValidation = (value: string): boolean => {\n if (value.match(/^[A-Z]/) === null) {\n return false;\n }\n return value === upperFirst(camelCase(value));\n};\nconst refinementSingularValidationMessage = (value?: string) => {\n return {\n message: `The Singular API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategory\" or \"CarMake\".`\n };\n};\nconst refinementPluralValidationMessage = (value?: string) => {\n return {\n message: `The Plural API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategories\" or \"CarMakes\".`\n };\n};\n\nconst refinementModelIdValidation = (value?: string) => {\n if (!value) {\n return true;\n } else if (value.match(/^[a-zA-Z]/) === null) {\n return false;\n }\n const camelCasedValue = camelCase(value).toLowerCase();\n return camelCasedValue === value.toLowerCase();\n};\nconst refinementModelIdValidationMessage = (value?: string) => {\n if (!value) {\n return {};\n } else if (value.match(/^[a-zA-Z]/) === null) {\n return {\n message: `The modelId \"${value}\" is not valid. It must start with a A-Z or a-z.`\n };\n }\n return {\n message: `The modelId \"${value}\" is not valid.`\n };\n};\n\nconst modelIdTransformation = (value?: string) => {\n if (!value) {\n return value;\n }\n const camelCasedValue = camelCase(value);\n if (camelCasedValue.toLowerCase() === value.toLowerCase()) {\n return value;\n }\n return camelCasedValue;\n};\n\nexport const createModelCreateValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString.transform(modelIdTransformation),\n singularApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementSingularValidationMessage),\n pluralApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema).default([]),\n layout: zod.array(zod.array(shortString)).default([]),\n tags: zod.array(shortString).optional(),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n defaultFields: zod.boolean().nullish()\n });\n};\n\nexport const createModelImportValidation = () => {\n return zod.object({\n name: shortString.min(1).refine(\n value => {\n return value.match(/[a-zA-Z]/) !== null;\n },\n value => {\n return {\n message: `The name \"${value}\" is not valid.`\n };\n }\n ),\n modelId: shortString\n .min(1)\n .refine(refinementModelIdValidation, refinementModelIdValidationMessage)\n .transform(modelIdTransformation),\n singularApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementSingularValidationMessage),\n pluralApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema).min(1),\n layout: zod.array(zod.array(shortString)).min(1),\n tags: zod.array(shortString).optional(),\n titleFieldId: shortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish()\n });\n};\n\nexport const createModelCreateFromValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString.transform(modelIdTransformation),\n singularApiName: shortString.refine(\n apiNameRefinementValidation,\n refinementSingularValidationMessage\n ),\n pluralApiName: shortString.refine(\n apiNameRefinementValidation,\n refinementPluralValidationMessage\n ),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n locale: optionalShortString\n });\n};\n\nexport const createModelUpdateValidation = () => {\n return zod.object({\n name: optionalShortString,\n singularApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return apiNameRefinementValidation(value);\n }, refinementSingularValidationMessage),\n pluralApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return apiNameRefinementValidation(value);\n }, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: optionalShortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema),\n layout: zod.array(zod.array(shortString)),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n tags: zod.array(shortString).optional()\n });\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_zod","_interopRequireDefault","require","_upperFirst","_camelCase","fieldSystemFields","str","zod","string","trim","shortString","max","optionalShortString","optional","optionalNullishShortString","nullish","fieldSchema","object","id","storageId","transform","fieldId","regex","message","superRefine","value","ctx","includes","addIssue","code","ZodIssueCode","custom","path","label","helpText","default","placeholderText","nullable","type","tags","array","multipleValues","boolean","predefinedValues","enabled","values","selected","renderer","name","settings","passthrough","validation","listValidation","apiNameRefinementValidation","match","upperFirst","camelCase","refinementSingularValidationMessage","refinementPluralValidationMessage","refinementModelIdValidation","camelCasedValue","toLowerCase","refinementModelIdValidationMessage","modelIdTransformation","createModelCreateValidation","modelId","singularApiName","min","refine","pluralApiName","description","group","icon","fields","layout","titleFieldId","descriptionFieldId","imageFieldId","defaultFields","exports","createModelImportValidation","createModelCreateFromValidation","locale","createModelUpdateValidation"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport upperFirst from \"lodash/upperFirst\";\nimport camelCase from \"lodash/camelCase\";\n\nconst fieldSystemFields: string[] = [\n \"id\",\n \"fieldId\",\n \"storageId\",\n \"label\",\n \"helpText\",\n \"placeholderText\",\n \"type\",\n \"multipleValues\",\n \"predefinedValues\",\n \"renderer\",\n \"validation\",\n \"listValidation\",\n \"settings\"\n];\n\nconst str = zod.string().trim();\nconst shortString = str.max(255);\nconst optionalShortString = shortString.optional();\nconst optionalNullishShortString = optionalShortString.nullish();\n\nconst fieldSchema = zod.object({\n id: shortString,\n storageId: zod\n .string()\n .optional()\n .transform(() => {\n return \"\";\n }),\n fieldId: shortString\n .max(100)\n .regex(/^!?[a-zA-Z]/, {\n message: `Provided value is not valid - must not start with a number.`\n })\n .regex(/^(^[a-zA-Z0-9]+)$/, {\n message: `Provided value is not valid - must be alphanumeric string.`\n })\n .superRefine((value, ctx) => {\n if (fieldSystemFields.includes(value)) {\n return ctx.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `Provided ${value} is not valid - \"${value}\" is an auto-generated field.`,\n path: [\"fieldId\"]\n });\n }\n }),\n label: shortString,\n helpText: optionalShortString.optional().nullish().default(null),\n placeholderText: optionalShortString.optional().nullable().default(null),\n type: shortString,\n tags: zod.array(shortString).optional().default([]),\n multipleValues: zod\n .boolean()\n .optional()\n .nullish()\n .transform(value => {\n return !!value;\n })\n .default(false),\n predefinedValues: zod\n .object({\n enabled: zod.boolean(),\n values: zod\n .array(\n zod.object({\n value: shortString,\n label: shortString,\n selected: zod.boolean().optional().default(false)\n })\n )\n .default([])\n })\n .default({\n enabled: false,\n values: []\n })\n .optional(),\n renderer: zod\n .object({\n name: shortString,\n settings: zod.object({}).passthrough().optional()\n })\n .optional()\n .nullable()\n .default(null),\n validation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .nullish()\n .optional()\n .default([])\n .transform(value => value || []),\n listValidation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .nullish()\n .optional()\n .default([])\n .transform(value => value || []),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n});\n\nconst apiNameRefinementValidation = (value: string): boolean => {\n if (value.match(/^[A-Z]/) === null) {\n return false;\n }\n return value === upperFirst(camelCase(value));\n};\nconst refinementSingularValidationMessage = (value?: string) => {\n return {\n message: `The Singular API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategory\" or \"CarMake\".`\n };\n};\nconst refinementPluralValidationMessage = (value?: string) => {\n return {\n message: `The Plural API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategories\" or \"CarMakes\".`\n };\n};\n\nconst refinementModelIdValidation = (value?: string) => {\n if (!value) {\n return true;\n } else if (value.match(/^[a-zA-Z]/) === null) {\n return false;\n }\n const camelCasedValue = camelCase(value).toLowerCase();\n return camelCasedValue === value.toLowerCase();\n};\nconst refinementModelIdValidationMessage = (value?: string) => {\n if (!value) {\n return {};\n } else if (value.match(/^[a-zA-Z]/) === null) {\n return {\n message: `The modelId \"${value}\" is not valid. It must start with a A-Z or a-z.`\n };\n }\n return {\n message: `The modelId \"${value}\" is not valid.`\n };\n};\n\nconst modelIdTransformation = (value?: string) => {\n if (!value) {\n return value;\n }\n const camelCasedValue = camelCase(value);\n if (camelCasedValue.toLowerCase() === value.toLowerCase()) {\n return value;\n }\n return camelCasedValue;\n};\n\nexport const createModelCreateValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString.transform(modelIdTransformation),\n singularApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementSingularValidationMessage),\n pluralApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema).default([]),\n layout: zod.array(zod.array(shortString)).default([]),\n tags: zod.array(shortString).optional(),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n defaultFields: zod.boolean().nullish()\n });\n};\n\nexport const createModelImportValidation = () => {\n return zod.object({\n name: shortString.min(1).refine(\n value => {\n return value.match(/[a-zA-Z]/) !== null;\n },\n value => {\n return {\n message: `The name \"${value}\" is not valid.`\n };\n }\n ),\n modelId: shortString\n .min(1)\n .refine(refinementModelIdValidation, refinementModelIdValidationMessage)\n .transform(modelIdTransformation),\n singularApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementSingularValidationMessage),\n pluralApiName: shortString\n .min(1)\n .refine(apiNameRefinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema).min(1),\n layout: zod.array(zod.array(shortString)).min(1),\n tags: zod.array(shortString).optional(),\n titleFieldId: shortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish()\n });\n};\n\nexport const createModelCreateFromValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString.transform(modelIdTransformation),\n singularApiName: shortString.refine(\n apiNameRefinementValidation,\n refinementSingularValidationMessage\n ),\n pluralApiName: shortString.refine(\n apiNameRefinementValidation,\n refinementPluralValidationMessage\n ),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n locale: optionalShortString\n });\n};\n\nexport const createModelUpdateValidation = () => {\n return zod.object({\n name: optionalShortString,\n singularApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return apiNameRefinementValidation(value);\n }, refinementSingularValidationMessage),\n pluralApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return apiNameRefinementValidation(value);\n }, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: optionalShortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema),\n layout: zod.array(zod.array(shortString)),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n tags: zod.array(shortString).optional()\n });\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { ApiEndpoint } from "../../types";
2
+ import { Tenant } from "@webiny/api-tenancy/types";
3
+ import { I18NLocale } from "@webiny/api-i18n/types";
4
+ interface GenerateCacheIdParams {
5
+ type: ApiEndpoint;
6
+ getTenant: () => Tenant;
7
+ getLocale: () => I18NLocale;
8
+ }
9
+ export declare const generateCacheId: (params: GenerateCacheIdParams) => string;
10
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateCacheId = void 0;
7
+ const generateCacheId = params => {
8
+ const {
9
+ getTenant,
10
+ type,
11
+ getLocale
12
+ } = params;
13
+ return [`tenant:${getTenant().id}`, `endpoint:${type}`, `locale:${getLocale().code}`].join("#");
14
+ };
15
+ exports.generateCacheId = generateCacheId;
16
+
17
+ //# sourceMappingURL=generateCacheId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateCacheId","params","getTenant","type","getLocale","id","code","join","exports"],"sources":["generateCacheId.ts"],"sourcesContent":["import { ApiEndpoint } from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\n\ninterface GenerateCacheIdParams {\n type: ApiEndpoint;\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n}\n\nexport const generateCacheId = (params: GenerateCacheIdParams): string => {\n const { getTenant, type, getLocale } = params;\n return [`tenant:${getTenant().id}`, `endpoint:${type}`, `locale:${getLocale().code}`].join(\"#\");\n};\n"],"mappings":";;;;;;AAUO,MAAMA,eAAe,GAAIC,MAA6B,IAAa;EACtE,MAAM;IAAEC,SAAS;IAAEC,IAAI;IAAEC;EAAU,CAAC,GAAGH,MAAM;EAC7C,OAAO,CAAE,UAASC,SAAS,CAAC,CAAC,CAACG,EAAG,EAAC,EAAG,YAAWF,IAAK,EAAC,EAAG,UAASC,SAAS,CAAC,CAAC,CAACE,IAAK,EAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;AACnG,CAAC;AAACC,OAAA,CAAAR,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { CmsModel } from "../../types";
2
+ interface GenerateCacheKeyParams {
3
+ models: Pick<CmsModel, "modelId" | "singularApiName" | "pluralApiName" | "savedOn">[];
4
+ }
5
+ /**
6
+ * Method generates cache key based on last model change time.
7
+ * Or sets "unknown" - possible when no models in database.
8
+ */
9
+ export declare const generateCacheKey: (params: GenerateCacheKeyParams) => Promise<string>;
10
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.generateCacheKey = void 0;
8
+ var _crypto = _interopRequireDefault(require("crypto"));
9
+ /**
10
+ * Method generates cache key based on last model change time.
11
+ * Or sets "unknown" - possible when no models in database.
12
+ */
13
+ const generateCacheKey = async params => {
14
+ const {
15
+ models
16
+ } = params;
17
+ const keys = [];
18
+ for (const model of models) {
19
+ const savedOn = model.savedOn;
20
+ const value =
21
+ // @ts-expect-error
22
+ savedOn instanceof Date || savedOn?.toISOString ?
23
+ // @ts-expect-error
24
+ savedOn.toISOString() : savedOn || "unknown";
25
+ keys.push(model.modelId, model.singularApiName, model.pluralApiName, value);
26
+ }
27
+ const key = keys.join("#");
28
+ const hash = _crypto.default.createHash("sha1");
29
+ hash.update(key);
30
+ return hash.digest("hex");
31
+ };
32
+ exports.generateCacheKey = generateCacheKey;
33
+
34
+ //# sourceMappingURL=generateCacheKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_crypto","_interopRequireDefault","require","generateCacheKey","params","models","keys","model","savedOn","value","Date","toISOString","push","modelId","singularApiName","pluralApiName","key","join","hash","crypto","createHash","update","digest","exports"],"sources":["generateCacheKey.ts"],"sourcesContent":["import { CmsModel } from \"~/types\";\nimport crypto from \"crypto\";\n\ninterface GenerateCacheKeyParams {\n models: Pick<CmsModel, \"modelId\" | \"singularApiName\" | \"pluralApiName\" | \"savedOn\">[];\n}\n\n/**\n * Method generates cache key based on last model change time.\n * Or sets \"unknown\" - possible when no models in database.\n */\nexport const generateCacheKey = async (params: GenerateCacheKeyParams): Promise<string> => {\n const { models } = params;\n\n const keys: string[] = [];\n for (const model of models) {\n const savedOn = model.savedOn;\n const value =\n // @ts-expect-error\n savedOn instanceof Date || savedOn?.toISOString\n ? // @ts-expect-error\n savedOn.toISOString()\n : savedOn || \"unknown\";\n keys.push(model.modelId, model.singularApiName, model.pluralApiName, value);\n }\n const key = keys.join(\"#\");\n\n const hash = crypto.createHash(\"sha1\");\n hash.update(key);\n return hash.digest(\"hex\");\n};\n"],"mappings":";;;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAMA;AACA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAG,MAAOC,MAA8B,IAAsB;EACvF,MAAM;IAAEC;EAAO,CAAC,GAAGD,MAAM;EAEzB,MAAME,IAAc,GAAG,EAAE;EACzB,KAAK,MAAMC,KAAK,IAAIF,MAAM,EAAE;IACxB,MAAMG,OAAO,GAAGD,KAAK,CAACC,OAAO;IAC7B,MAAMC,KAAK;IACP;IACAD,OAAO,YAAYE,IAAI,IAAIF,OAAO,EAAEG,WAAW;IACzC;IACAH,OAAO,CAACG,WAAW,CAAC,CAAC,GACrBH,OAAO,IAAI,SAAS;IAC9BF,IAAI,CAACM,IAAI,CAACL,KAAK,CAACM,OAAO,EAAEN,KAAK,CAACO,eAAe,EAAEP,KAAK,CAACQ,aAAa,EAAEN,KAAK,CAAC;EAC/E;EACA,MAAMO,GAAG,GAAGV,IAAI,CAACW,IAAI,CAAC,GAAG,CAAC;EAE1B,MAAMC,IAAI,GAAGC,eAAM,CAACC,UAAU,CAAC,MAAM,CAAC;EACtCF,IAAI,CAACG,MAAM,CAACL,GAAG,CAAC;EAChB,OAAOE,IAAI,CAACI,MAAM,CAAC,KAAK,CAAC;AAC7B,CAAC;AAACC,OAAA,CAAApB,gBAAA,GAAAA,gBAAA","ignoreList":[]}