@strapi/content-type-builder 5.51.1 → 5.52.0

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 (117) hide show
  1. package/dist/admin/components/AIChat/Chat.js +1 -1
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  3. package/dist/admin/components/AIChat/Chat.mjs +1 -1
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/FeedbackModal.js +1 -1
  6. package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
  7. package/dist/admin/components/AIChat/FeedbackModal.mjs +1 -1
  8. package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
  9. package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -1
  10. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  11. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
  12. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/components/Base64Image.js +1 -1
  14. package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -1
  15. package/dist/admin/components/AIChat/components/Base64Image.mjs +1 -1
  16. package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/components/Messages/Message.js +2 -2
  18. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  19. package/dist/admin/components/AIChat/components/Messages/Message.mjs +2 -2
  20. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/hooks/useAIFetch.js +1 -1
  22. package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
  23. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs +1 -1
  24. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
  25. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +2 -2
  26. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  27. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +2 -2
  28. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  29. package/dist/admin/components/CTBSession/useCTBTracking.js +1 -1
  30. package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
  31. package/dist/admin/components/CTBSession/useCTBTracking.mjs +1 -1
  32. package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
  33. package/dist/admin/components/DataManager/reducer.js +4 -0
  34. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  35. package/dist/admin/components/DataManager/reducer.mjs +4 -0
  36. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  37. package/dist/admin/components/DataManager/useServerRestartWatcher.js +1 -1
  38. package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
  39. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs +1 -1
  40. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
  41. package/dist/admin/components/FormModal/attributes/ConditionForm.js +1 -1
  42. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  43. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +1 -1
  44. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  45. package/dist/admin/components/FormModal/attributes/advancedForm.js +1 -0
  46. package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
  47. package/dist/admin/components/FormModal/attributes/advancedForm.mjs +1 -0
  48. package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
  49. package/dist/admin/components/FormModal/attributes/types.js +6 -1
  50. package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
  51. package/dist/admin/components/FormModal/attributes/types.mjs +6 -1
  52. package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
  53. package/dist/admin/components/FormModal/attributes/validation/common.js +6 -4
  54. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  55. package/dist/admin/components/FormModal/attributes/validation/common.mjs +6 -4
  56. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  57. package/dist/admin/components/FormModal/forms/forms.js +1 -1
  58. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  59. package/dist/admin/components/FormModal/forms/forms.mjs +1 -1
  60. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  61. package/dist/admin/components/FormModal/reducer.js +7 -0
  62. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  63. package/dist/admin/components/FormModal/reducer.mjs +7 -0
  64. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  65. package/dist/admin/components/PluralName.js +1 -1
  66. package/dist/admin/components/PluralName.js.map +1 -1
  67. package/dist/admin/components/PluralName.mjs +1 -1
  68. package/dist/admin/components/PluralName.mjs.map +1 -1
  69. package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
  70. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +8 -0
  71. package/dist/admin/src/components/FormModal/attributes/types.d.ts +2 -0
  72. package/dist/admin/src/types.d.ts +1 -0
  73. package/dist/admin/translations/en.json.js +1 -0
  74. package/dist/admin/translations/en.json.js.map +1 -1
  75. package/dist/admin/translations/en.json.mjs +1 -0
  76. package/dist/admin/translations/en.json.mjs.map +1 -1
  77. package/dist/server/controllers/validation/common.js +1 -1
  78. package/dist/server/controllers/validation/common.js.map +1 -1
  79. package/dist/server/controllers/validation/common.mjs +1 -1
  80. package/dist/server/controllers/validation/common.mjs.map +1 -1
  81. package/dist/server/controllers/validation/relations.js +1 -0
  82. package/dist/server/controllers/validation/relations.js.map +1 -1
  83. package/dist/server/controllers/validation/relations.mjs +1 -0
  84. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  85. package/dist/server/controllers/validation/schema.js +2 -1
  86. package/dist/server/controllers/validation/schema.js.map +1 -1
  87. package/dist/server/controllers/validation/schema.mjs +2 -1
  88. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  89. package/dist/server/services/content-types.js +1 -1
  90. package/dist/server/services/content-types.js.map +1 -1
  91. package/dist/server/services/content-types.mjs +1 -1
  92. package/dist/server/services/content-types.mjs.map +1 -1
  93. package/dist/server/services/schema-builder/content-type-builder.js +3 -2
  94. package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
  95. package/dist/server/services/schema-builder/content-type-builder.mjs +3 -2
  96. package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
  97. package/dist/server/services/schema.js +1 -5
  98. package/dist/server/services/schema.js.map +1 -1
  99. package/dist/server/services/schema.mjs +2 -2
  100. package/dist/server/services/schema.mjs.map +1 -1
  101. package/dist/server/src/controllers/validation/relations.d.ts +2 -0
  102. package/dist/server/src/controllers/validation/relations.d.ts.map +1 -1
  103. package/dist/server/src/controllers/validation/schema.d.ts +3234 -0
  104. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  105. package/dist/server/src/services/schema-builder/types.d.ts +1 -0
  106. package/dist/server/src/services/schema-builder/types.d.ts.map +1 -1
  107. package/dist/server/src/utils/attributes.d.ts +10 -10
  108. package/dist/server/src/utils/attributes.d.ts.map +1 -1
  109. package/dist/server/utils/attributes.js +2 -2
  110. package/dist/server/utils/attributes.js.map +1 -1
  111. package/dist/server/utils/attributes.mjs +3 -2
  112. package/dist/server/utils/attributes.mjs.map +1 -1
  113. package/package.json +9 -9
  114. package/dist/server/src/controllers/ai/auth.d.ts +0 -1
  115. package/dist/server/src/controllers/ai/auth.d.ts.map +0 -1
  116. package/dist/server/src/controllers/ai/index.d.ts +0 -1
  117. package/dist/server/src/controllers/ai/index.d.ts.map +0 -1
@@ -223,12 +223,14 @@ export declare const attributeTypes: {
223
223
  target: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
224
224
  relation: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
225
225
  type: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
226
+ required: yup.BooleanSchema<boolean | undefined, Record<string, any>, boolean | undefined>;
226
227
  targetAttribute: import("yup/lib/Lazy").default<yup.default<string | null | undefined, Record<string, any>, string | null | undefined>, Record<string, any>>;
227
228
  }, Record<string, any>, import("yup/lib/object").TypeOfShape<{
228
229
  name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
229
230
  target: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
230
231
  relation: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
231
232
  type: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
233
+ required: yup.BooleanSchema<boolean | undefined, Record<string, any>, boolean | undefined>;
232
234
  targetAttribute: import("yup/lib/Lazy").default<yup.default<string | null | undefined, Record<string, any>, string | null | undefined>, Record<string, any>>;
233
235
  }>>;
234
236
  richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>): import("yup/lib/object").OptionalObjectSchema<{
@@ -34,6 +34,7 @@ export type Relation = Base & {
34
34
  target: string;
35
35
  targetAttribute?: string | null;
36
36
  configurable?: boolean;
37
+ required?: boolean;
37
38
  private?: boolean;
38
39
  pluginOptions?: Record<string, unknown>;
39
40
  };
@@ -70,6 +70,7 @@ var en = {
70
70
  "error.contentTypeName.reserved-name": "This name cannot be used in your project as it might break other functionalities",
71
71
  "error.category.format": "A category name must start with a letter and only contain letters, numbers, dashes and underscores",
72
72
  "error.validation.enum-duplicate": "Duplicate values are not allowed (only alphanumeric characters are taken into account).",
73
+ "error.validation.enum-empty": "You must add at least one value",
73
74
  "error.validation.enum-empty-string": "Empty strings are not allowed",
74
75
  "error.validation.enum-regex": "At least one value is invalid. Values should have at least one alphabetical character preceding the first occurence of a number.",
75
76
  "error.validation.minSupMax": "Min can't be superior to max",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -66,6 +66,7 @@ var en = {
66
66
  "error.contentTypeName.reserved-name": "This name cannot be used in your project as it might break other functionalities",
67
67
  "error.category.format": "A category name must start with a letter and only contain letters, numbers, dashes and underscores",
68
68
  "error.validation.enum-duplicate": "Duplicate values are not allowed (only alphanumeric characters are taken into account).",
69
+ "error.validation.enum-empty": "You must add at least one value",
69
70
  "error.validation.enum-empty-string": "Empty strings are not allowed",
70
71
  "error.validation.enum-regex": "At least one value is invalid. Values should have at least one alphabetical character preceding the first occurence of a number.",
71
72
  "error.validation.minSupMax": "Min can't be superior to max",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -77,7 +77,7 @@ const isValidDefaultJSON = {
77
77
  try {
78
78
  JSON.parse(val);
79
79
  return true;
80
- } catch (err) {
80
+ } catch {
81
81
  return false;
82
82
  }
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,\n test: (val) => val === '' || CATEGORY_NAME_REGEX.test(val as string),\n};\n\nexport const isValidCollectionName: CommonTestConfig = {\n name: 'isValidCollectionName',\n message: `\\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`,\n test: (val) => val === '' || COLLECTION_NAME_REGEX.test(val as string),\n};\n\nexport const isValidKey = (key: string): CommonTestConfig => ({\n name: 'isValidKey',\n message: `Attribute name '${key}' must match the following regex: ${NAME_REGEX}`,\n test: () => NAME_REGEX.test(key),\n});\n\nexport const isValidEnum: CommonTestConfig = {\n name: 'isValidEnum',\n message: '${path} should not start with number',\n test: (val) => val === '' || !strings.startsWithANumber(val as string),\n};\n\nexport const areEnumValuesUnique: CommonTestConfig = {\n name: 'areEnumValuesUnique',\n message: '${path} cannot contain duplicate values',\n test(values) {\n const filtered = [...new Set(values as string[])];\n\n return filtered.length === (values as string[]).length;\n },\n};\n\nexport const isValidRegExpPattern: CommonTestConfig = {\n name: 'isValidRegExpPattern',\n message: '${path} must be a valid RexExp pattern string',\n test: (val) => val === '' || !!new RegExp(val as string),\n};\n\nexport const isValidDefaultJSON: CommonTestConfig = {\n name: 'isValidDefaultJSON',\n message: '${path} is not a valid JSON',\n test(val) {\n if (val === undefined) {\n return true;\n }\n\n if (_.isNumber(val) || _.isNull(val) || _.isObject(val) || _.isArray(val)) {\n return true;\n }\n\n try {\n JSON.parse(val as string);\n\n return true;\n } catch (err) {\n return false;\n }\n },\n};\n"],"names":["validators","required","yup","boolean","unique","minLength","number","integer","positive","maxLength","NAME_REGEX","COLLECTION_NAME_REGEX","CATEGORY_NAME_REGEX","ICON_REGEX","UID_REGEX","KEBAB_BASE_REGEX","isValidName","name","message","test","val","isValidIcon","isValidCategoryName","isValidCollectionName","isValidKey","key","isValidEnum","strings","startsWithANumber","areEnumValuesUnique","values","filtered","Set","length","isValidRegExpPattern","RegExp","isValidDefaultJSON","undefined","_","isNumber","isNull","isObject","isArray","JSON","parse","err"],"mappings":";;;;;;;;;MAKaA,UAAAA,GAAa;AACxBC,IAAAA,QAAAA,EAAUC,UAAIC,OAAO,EAAA;AACrBC,IAAAA,MAAAA,EAAQF,UAAIC,OAAO,EAAA;AACnBE,IAAAA,SAAAA,EAAWH,SAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,QAAQ,EAAA;AAC1CC,IAAAA,SAAAA,EAAWP,SAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,QAAQ;AAC5C;AAEO,MAAME,aAAa;AACnB,MAAMC,wBAAwB;AAC9B,MAAMC,sBAAsB;AAC5B,MAAMC,aAAa;AACnB,MAAMC,YAAY;AAClB,MAAMC,mBAAmB;MAInBC,WAAAA,GAAgC;IAC3CC,IAAAA,EAAM,aAAA;IACNC,OAAAA,EAAS,CAAC,yCAAyC,EAAER,UAAAA,CAAAA,CAAY;AACjES,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAiBA,GAAAA,KAAQ,EAAA,IAAMV,UAAAA,CAAWS,IAAI,CAACC,GAAAA;AACxD;MAEaC,WAAAA,GAAgC;IAC3CJ,IAAAA,EAAM,aAAA;IACNC,OAAAA,EAAS,CAAC,sJAAsJ,CAAC;AACjKC,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,EAAA,IAAMP,UAAAA,CAAWM,IAAI,CAACC,GAAAA;AAC/C;MAQaE,mBAAAA,GAAwC;IACnDL,IAAAA,EAAM,qBAAA;IACNC,OAAAA,EAAS,CAAC,2FAA2F,CAAC;AACtGC,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,EAAA,IAAMR,mBAAAA,CAAoBO,IAAI,CAACC,GAAAA;AACxD;MAEaG,qBAAAA,GAA0C;IACrDN,IAAAA,EAAM,uBAAA;IACNC,OAAAA,EAAS,CAAC,yCAAyC,EAAEP,qBAAAA,CAAAA,CAAuB;AAC5EQ,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,EAAA,IAAMT,qBAAAA,CAAsBQ,IAAI,CAACC,GAAAA;AAC1D;AAEO,MAAMI,UAAAA,GAAa,CAACC,GAAAA,IAAmC;QAC5DR,IAAAA,EAAM,YAAA;AACNC,QAAAA,OAAAA,EAAS,CAAC,gBAAgB,EAAEO,GAAAA,CAAI,kCAAkC,EAAEf,UAAAA,CAAAA,CAAY;QAChFS,IAAAA,EAAM,IAAMT,UAAAA,CAAWS,IAAI,CAACM,GAAAA;AAC9B,KAAA;MAEaC,WAAAA,GAAgC;IAC3CT,IAAAA,EAAM,aAAA;IACNC,OAAAA,EAAS,sCAAA;AACTC,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,MAAM,CAACO,aAAAA,CAAQC,iBAAiB,CAACR,GAAAA;AAC1D;MAEaS,mBAAAA,GAAwC;IACnDZ,IAAAA,EAAM,qBAAA;IACNC,OAAAA,EAAS,yCAAA;AACTC,IAAAA,IAAAA,CAAAA,CAAKW,MAAM,EAAA;AACT,QAAA,MAAMC,QAAAA,GAAW;AAAI,YAAA,GAAA,IAAIC,GAAAA,CAAIF,MAAAA;AAAoB,SAAA;AAEjD,QAAA,OAAOC,QAAAA,CAASE,MAAM,KAAMH,OAAoBG,MAAM;AACxD,IAAA;AACF;MAEaC,oBAAAA,GAAyC;IACpDjB,IAAAA,EAAM,sBAAA;IACNC,OAAAA,EAAS,+CAAA;AACTC,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,MAAM,CAAC,CAAC,IAAIe,MAAAA,CAAOf,GAAAA;AAC5C;MAEagB,kBAAAA,GAAuC;IAClDnB,IAAAA,EAAM,oBAAA;IACNC,OAAAA,EAAS,6BAAA;AACTC,IAAAA,IAAAA,CAAAA,CAAKC,GAAG,EAAA;AACN,QAAA,IAAIA,QAAQiB,SAAAA,EAAW;YACrB,OAAO,IAAA;AACT,QAAA;AAEA,QAAA,IAAIC,kBAAAA,CAAEC,QAAQ,CAACnB,GAAAA,CAAAA,IAAQkB,mBAAEE,MAAM,CAACpB,GAAAA,CAAAA,IAAQkB,kBAAAA,CAAEG,QAAQ,CAACrB,GAAAA,CAAAA,IAAQkB,kBAAAA,CAAEI,OAAO,CAACtB,GAAAA,CAAAA,EAAM;YACzE,OAAO,IAAA;AACT,QAAA;QAEA,IAAI;AACFuB,YAAAA,IAAAA,CAAKC,KAAK,CAACxB,GAAAA,CAAAA;YAEX,OAAO,IAAA;AACT,QAAA,CAAA,CAAE,OAAOyB,GAAAA,EAAK;YACZ,OAAO,KAAA;AACT,QAAA;AACF,IAAA;AACF;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"common.js","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,\n test: (val) => val === '' || CATEGORY_NAME_REGEX.test(val as string),\n};\n\nexport const isValidCollectionName: CommonTestConfig = {\n name: 'isValidCollectionName',\n message: `\\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`,\n test: (val) => val === '' || COLLECTION_NAME_REGEX.test(val as string),\n};\n\nexport const isValidKey = (key: string): CommonTestConfig => ({\n name: 'isValidKey',\n message: `Attribute name '${key}' must match the following regex: ${NAME_REGEX}`,\n test: () => NAME_REGEX.test(key),\n});\n\nexport const isValidEnum: CommonTestConfig = {\n name: 'isValidEnum',\n message: '${path} should not start with number',\n test: (val) => val === '' || !strings.startsWithANumber(val as string),\n};\n\nexport const areEnumValuesUnique: CommonTestConfig = {\n name: 'areEnumValuesUnique',\n message: '${path} cannot contain duplicate values',\n test(values) {\n const filtered = [...new Set(values as string[])];\n\n return filtered.length === (values as string[]).length;\n },\n};\n\nexport const isValidRegExpPattern: CommonTestConfig = {\n name: 'isValidRegExpPattern',\n message: '${path} must be a valid RexExp pattern string',\n test: (val) => val === '' || !!new RegExp(val as string),\n};\n\nexport const isValidDefaultJSON: CommonTestConfig = {\n name: 'isValidDefaultJSON',\n message: '${path} is not a valid JSON',\n test(val) {\n if (val === undefined) {\n return true;\n }\n\n if (_.isNumber(val) || _.isNull(val) || _.isObject(val) || _.isArray(val)) {\n return true;\n }\n\n try {\n JSON.parse(val as string);\n\n return true;\n } catch {\n return false;\n }\n },\n};\n"],"names":["validators","required","yup","boolean","unique","minLength","number","integer","positive","maxLength","NAME_REGEX","COLLECTION_NAME_REGEX","CATEGORY_NAME_REGEX","ICON_REGEX","UID_REGEX","KEBAB_BASE_REGEX","isValidName","name","message","test","val","isValidIcon","isValidCategoryName","isValidCollectionName","isValidKey","key","isValidEnum","strings","startsWithANumber","areEnumValuesUnique","values","filtered","Set","length","isValidRegExpPattern","RegExp","isValidDefaultJSON","undefined","_","isNumber","isNull","isObject","isArray","JSON","parse"],"mappings":";;;;;;;;;MAKaA,UAAAA,GAAa;AACxBC,IAAAA,QAAAA,EAAUC,UAAIC,OAAO,EAAA;AACrBC,IAAAA,MAAAA,EAAQF,UAAIC,OAAO,EAAA;AACnBE,IAAAA,SAAAA,EAAWH,SAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,QAAQ,EAAA;AAC1CC,IAAAA,SAAAA,EAAWP,SAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,QAAQ;AAC5C;AAEO,MAAME,aAAa;AACnB,MAAMC,wBAAwB;AAC9B,MAAMC,sBAAsB;AAC5B,MAAMC,aAAa;AACnB,MAAMC,YAAY;AAClB,MAAMC,mBAAmB;MAInBC,WAAAA,GAAgC;IAC3CC,IAAAA,EAAM,aAAA;IACNC,OAAAA,EAAS,CAAC,yCAAyC,EAAER,UAAAA,CAAAA,CAAY;AACjES,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAiBA,GAAAA,KAAQ,EAAA,IAAMV,UAAAA,CAAWS,IAAI,CAACC,GAAAA;AACxD;MAEaC,WAAAA,GAAgC;IAC3CJ,IAAAA,EAAM,aAAA;IACNC,OAAAA,EAAS,CAAC,sJAAsJ,CAAC;AACjKC,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,EAAA,IAAMP,UAAAA,CAAWM,IAAI,CAACC,GAAAA;AAC/C;MAQaE,mBAAAA,GAAwC;IACnDL,IAAAA,EAAM,qBAAA;IACNC,OAAAA,EAAS,CAAC,2FAA2F,CAAC;AACtGC,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,EAAA,IAAMR,mBAAAA,CAAoBO,IAAI,CAACC,GAAAA;AACxD;MAEaG,qBAAAA,GAA0C;IACrDN,IAAAA,EAAM,uBAAA;IACNC,OAAAA,EAAS,CAAC,yCAAyC,EAAEP,qBAAAA,CAAAA,CAAuB;AAC5EQ,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,EAAA,IAAMT,qBAAAA,CAAsBQ,IAAI,CAACC,GAAAA;AAC1D;AAEO,MAAMI,UAAAA,GAAa,CAACC,GAAAA,IAAmC;QAC5DR,IAAAA,EAAM,YAAA;AACNC,QAAAA,OAAAA,EAAS,CAAC,gBAAgB,EAAEO,GAAAA,CAAI,kCAAkC,EAAEf,UAAAA,CAAAA,CAAY;QAChFS,IAAAA,EAAM,IAAMT,UAAAA,CAAWS,IAAI,CAACM,GAAAA;AAC9B,KAAA;MAEaC,WAAAA,GAAgC;IAC3CT,IAAAA,EAAM,aAAA;IACNC,OAAAA,EAAS,sCAAA;AACTC,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,MAAM,CAACO,aAAAA,CAAQC,iBAAiB,CAACR,GAAAA;AAC1D;MAEaS,mBAAAA,GAAwC;IACnDZ,IAAAA,EAAM,qBAAA;IACNC,OAAAA,EAAS,yCAAA;AACTC,IAAAA,IAAAA,CAAAA,CAAKW,MAAM,EAAA;AACT,QAAA,MAAMC,QAAAA,GAAW;AAAI,YAAA,GAAA,IAAIC,GAAAA,CAAIF,MAAAA;AAAoB,SAAA;AAEjD,QAAA,OAAOC,QAAAA,CAASE,MAAM,KAAMH,OAAoBG,MAAM;AACxD,IAAA;AACF;MAEaC,oBAAAA,GAAyC;IACpDjB,IAAAA,EAAM,sBAAA;IACNC,OAAAA,EAAS,+CAAA;AACTC,IAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQA,GAAAA,KAAQ,MAAM,CAAC,CAAC,IAAIe,MAAAA,CAAOf,GAAAA;AAC5C;MAEagB,kBAAAA,GAAuC;IAClDnB,IAAAA,EAAM,oBAAA;IACNC,OAAAA,EAAS,6BAAA;AACTC,IAAAA,IAAAA,CAAAA,CAAKC,GAAG,EAAA;AACN,QAAA,IAAIA,QAAQiB,SAAAA,EAAW;YACrB,OAAO,IAAA;AACT,QAAA;AAEA,QAAA,IAAIC,kBAAAA,CAAEC,QAAQ,CAACnB,GAAAA,CAAAA,IAAQkB,mBAAEE,MAAM,CAACpB,GAAAA,CAAAA,IAAQkB,kBAAAA,CAAEG,QAAQ,CAACrB,GAAAA,CAAAA,IAAQkB,kBAAAA,CAAEI,OAAO,CAACtB,GAAAA,CAAAA,EAAM;YACzE,OAAO,IAAA;AACT,QAAA;QAEA,IAAI;AACFuB,YAAAA,IAAAA,CAAKC,KAAK,CAACxB,GAAAA,CAAAA;YAEX,OAAO,IAAA;AACT,QAAA,CAAA,CAAE,OAAM;YACN,OAAO,KAAA;AACT,QAAA;AACF,IAAA;AACF;;;;;;;;;;;;;;;;;;;"}
@@ -71,7 +71,7 @@ const isValidDefaultJSON = {
71
71
  try {
72
72
  JSON.parse(val);
73
73
  return true;
74
- } catch (err) {
74
+ } catch {
75
75
  return false;
76
76
  }
77
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"common.mjs","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,\n test: (val) => val === '' || CATEGORY_NAME_REGEX.test(val as string),\n};\n\nexport const isValidCollectionName: CommonTestConfig = {\n name: 'isValidCollectionName',\n message: `\\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`,\n test: (val) => val === '' || COLLECTION_NAME_REGEX.test(val as string),\n};\n\nexport const isValidKey = (key: string): CommonTestConfig => ({\n name: 'isValidKey',\n message: `Attribute name '${key}' must match the following regex: ${NAME_REGEX}`,\n test: () => NAME_REGEX.test(key),\n});\n\nexport const isValidEnum: CommonTestConfig = {\n name: 'isValidEnum',\n message: '${path} should not start with number',\n test: (val) => val === '' || !strings.startsWithANumber(val as string),\n};\n\nexport const areEnumValuesUnique: CommonTestConfig = {\n name: 'areEnumValuesUnique',\n message: '${path} cannot contain duplicate values',\n test(values) {\n const filtered = [...new Set(values as string[])];\n\n return filtered.length === (values as string[]).length;\n },\n};\n\nexport const isValidRegExpPattern: CommonTestConfig = {\n name: 'isValidRegExpPattern',\n message: '${path} must be a valid RexExp pattern string',\n test: (val) => val === '' || !!new RegExp(val as string),\n};\n\nexport const isValidDefaultJSON: CommonTestConfig = {\n name: 'isValidDefaultJSON',\n message: '${path} is not a valid JSON',\n test(val) {\n if (val === undefined) {\n return true;\n }\n\n if (_.isNumber(val) || _.isNull(val) || _.isObject(val) || _.isArray(val)) {\n return true;\n }\n\n try {\n JSON.parse(val as string);\n\n return true;\n } catch (err) {\n return false;\n }\n },\n};\n"],"names":["validators","required","yup","boolean","unique","minLength","number","integer","positive","maxLength","NAME_REGEX","COLLECTION_NAME_REGEX","CATEGORY_NAME_REGEX","ICON_REGEX","UID_REGEX","KEBAB_BASE_REGEX","isValidName","name","message","test","val","isValidIcon","isValidCategoryName","isValidCollectionName","isValidKey","key","isValidEnum","strings","startsWithANumber","areEnumValuesUnique","values","filtered","Set","length","isValidRegExpPattern","RegExp","isValidDefaultJSON","undefined","_","isNumber","isNull","isObject","isArray","JSON","parse","err"],"mappings":"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"}
1
+ {"version":3,"file":"common.mjs","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,\n test: (val) => val === '' || CATEGORY_NAME_REGEX.test(val as string),\n};\n\nexport const isValidCollectionName: CommonTestConfig = {\n name: 'isValidCollectionName',\n message: `\\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`,\n test: (val) => val === '' || COLLECTION_NAME_REGEX.test(val as string),\n};\n\nexport const isValidKey = (key: string): CommonTestConfig => ({\n name: 'isValidKey',\n message: `Attribute name '${key}' must match the following regex: ${NAME_REGEX}`,\n test: () => NAME_REGEX.test(key),\n});\n\nexport const isValidEnum: CommonTestConfig = {\n name: 'isValidEnum',\n message: '${path} should not start with number',\n test: (val) => val === '' || !strings.startsWithANumber(val as string),\n};\n\nexport const areEnumValuesUnique: CommonTestConfig = {\n name: 'areEnumValuesUnique',\n message: '${path} cannot contain duplicate values',\n test(values) {\n const filtered = [...new Set(values as string[])];\n\n return filtered.length === (values as string[]).length;\n },\n};\n\nexport const isValidRegExpPattern: CommonTestConfig = {\n name: 'isValidRegExpPattern',\n message: '${path} must be a valid RexExp pattern string',\n test: (val) => val === '' || !!new RegExp(val as string),\n};\n\nexport const isValidDefaultJSON: CommonTestConfig = {\n name: 'isValidDefaultJSON',\n message: '${path} is not a valid JSON',\n test(val) {\n if (val === undefined) {\n return true;\n }\n\n if (_.isNumber(val) || _.isNull(val) || _.isObject(val) || _.isArray(val)) {\n return true;\n }\n\n try {\n JSON.parse(val as string);\n\n return true;\n } catch {\n return false;\n }\n },\n};\n"],"names":["validators","required","yup","boolean","unique","minLength","number","integer","positive","maxLength","NAME_REGEX","COLLECTION_NAME_REGEX","CATEGORY_NAME_REGEX","ICON_REGEX","UID_REGEX","KEBAB_BASE_REGEX","isValidName","name","message","test","val","isValidIcon","isValidCategoryName","isValidCollectionName","isValidKey","key","isValidEnum","strings","startsWithANumber","areEnumValuesUnique","values","filtered","Set","length","isValidRegExpPattern","RegExp","isValidDefaultJSON","undefined","_","isNumber","isNull","isObject","isArray","JSON","parse"],"mappings":"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"}
@@ -38,6 +38,7 @@ const getRelationValidator = (attribute, allowedRelations)=>{
38
38
  ]).required(),
39
39
  relation: utils.yup.string().test('isValidRelation', isValidRelation(allowedRelations)).required(),
40
40
  configurable: utils.yup.boolean().nullable(),
41
+ required: utils.yup.boolean(),
41
42
  private: utils.yup.boolean().nullable(),
42
43
  pluginOptions: utils.yup.object()
43
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"relations.js","sources":["../../../../server/src/controllers/validation/relations.ts"],"sourcesContent":["import { isUndefined } from 'lodash/fp';\nimport { yup } from '@strapi/utils';\nimport type { TestContext, TestFunction } from 'yup';\nimport type { Schema, UID } from '@strapi/types';\nimport { typeKinds, coreUids } from '../../services/constants';\nimport { isValidName } from './common';\n\nconst STRAPI_USER_RELATIONS = ['oneToOne', 'oneToMany'];\n\nconst isValidRelation = (validNatures: ReadonlyArray<string>): TestFunction<string | undefined> =>\n function isValidRelationValue(this: TestContext, value) {\n // NOTE: In case of an undefined value, delegate the check to .required()\n if (value === undefined) {\n return true;\n }\n\n if (this.parent.target === coreUids.STRAPI_USER) {\n if (!validNatures.includes(value) || !isUndefined(this.parent.targetAttribute)) {\n return this.createError({\n path: this.path,\n message: `must be one of the following values: ${STRAPI_USER_RELATIONS.join(', ')}`,\n });\n }\n }\n\n return validNatures.includes(value)\n ? true\n : this.createError({\n path: this.path,\n message: `must be one of the following values: ${validNatures.join(', ')}`,\n });\n };\n\nexport const getRelationValidator = (\n attribute: Schema.Attribute.Relation,\n allowedRelations: ReadonlyArray<string>\n) => {\n const contentTypesUIDs = Object.keys(strapi.contentTypes)\n .filter((key) => strapi.contentTypes[key as UID.ContentType].kind === typeKinds.COLLECTION_TYPE)\n .filter((key) => !key.startsWith(coreUids.PREFIX) || key === coreUids.STRAPI_USER)\n .concat(['__self__', '__contentType__']);\n\n const base = {\n type: yup.string().oneOf(['relation']).required(),\n relation: yup.string().test('isValidRelation', isValidRelation(allowedRelations)).required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n };\n\n switch (attribute.relation) {\n case 'oneToOne':\n case 'oneToMany':\n case 'manyToOne':\n case 'manyToMany':\n case 'morphOne':\n case 'morphMany': {\n return yup.object({\n ...base,\n target: yup.string().oneOf(contentTypesUIDs).required(),\n targetAttribute: yup.string().test(isValidName).nullable(),\n });\n }\n case 'morphToOne':\n case 'morphToMany':\n default: {\n return yup.object({ ...base });\n }\n }\n};\n"],"names":["STRAPI_USER_RELATIONS","isValidRelation","validNatures","isValidRelationValue","value","undefined","parent","target","coreUids","STRAPI_USER","includes","isUndefined","targetAttribute","createError","path","message","join","getRelationValidator","attribute","allowedRelations","contentTypesUIDs","Object","keys","strapi","contentTypes","filter","key","kind","typeKinds","COLLECTION_TYPE","startsWith","PREFIX","concat","base","type","yup","string","oneOf","required","relation","test","configurable","boolean","nullable","private","pluginOptions","object","isValidName"],"mappings":"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"}
1
+ {"version":3,"file":"relations.js","sources":["../../../../server/src/controllers/validation/relations.ts"],"sourcesContent":["import { isUndefined } from 'lodash/fp';\nimport { yup } from '@strapi/utils';\nimport type { TestContext, TestFunction } from 'yup';\nimport type { Schema, UID } from '@strapi/types';\nimport { typeKinds, coreUids } from '../../services/constants';\nimport { isValidName } from './common';\n\nconst STRAPI_USER_RELATIONS = ['oneToOne', 'oneToMany'];\n\nconst isValidRelation = (validNatures: ReadonlyArray<string>): TestFunction<string | undefined> =>\n function isValidRelationValue(this: TestContext, value) {\n // NOTE: In case of an undefined value, delegate the check to .required()\n if (value === undefined) {\n return true;\n }\n\n if (this.parent.target === coreUids.STRAPI_USER) {\n if (!validNatures.includes(value) || !isUndefined(this.parent.targetAttribute)) {\n return this.createError({\n path: this.path,\n message: `must be one of the following values: ${STRAPI_USER_RELATIONS.join(', ')}`,\n });\n }\n }\n\n return validNatures.includes(value)\n ? true\n : this.createError({\n path: this.path,\n message: `must be one of the following values: ${validNatures.join(', ')}`,\n });\n };\n\nexport const getRelationValidator = (\n attribute: Schema.Attribute.Relation,\n allowedRelations: ReadonlyArray<string>\n) => {\n const contentTypesUIDs = Object.keys(strapi.contentTypes)\n .filter((key) => strapi.contentTypes[key as UID.ContentType].kind === typeKinds.COLLECTION_TYPE)\n .filter((key) => !key.startsWith(coreUids.PREFIX) || key === coreUids.STRAPI_USER)\n .concat(['__self__', '__contentType__']);\n\n const base = {\n type: yup.string().oneOf(['relation']).required(),\n relation: yup.string().test('isValidRelation', isValidRelation(allowedRelations)).required(),\n configurable: yup.boolean().nullable(),\n required: yup.boolean(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n };\n\n switch (attribute.relation) {\n case 'oneToOne':\n case 'oneToMany':\n case 'manyToOne':\n case 'manyToMany':\n case 'morphOne':\n case 'morphMany': {\n return yup.object({\n ...base,\n target: yup.string().oneOf(contentTypesUIDs).required(),\n targetAttribute: yup.string().test(isValidName).nullable(),\n });\n }\n case 'morphToOne':\n case 'morphToMany':\n default: {\n return yup.object({ ...base });\n }\n }\n};\n"],"names":["STRAPI_USER_RELATIONS","isValidRelation","validNatures","isValidRelationValue","value","undefined","parent","target","coreUids","STRAPI_USER","includes","isUndefined","targetAttribute","createError","path","message","join","getRelationValidator","attribute","allowedRelations","contentTypesUIDs","Object","keys","strapi","contentTypes","filter","key","kind","typeKinds","COLLECTION_TYPE","startsWith","PREFIX","concat","base","type","yup","string","oneOf","required","relation","test","configurable","boolean","nullable","private","pluginOptions","object","isValidName"],"mappings":";;;;;;;AAOA,MAAMA,qBAAAA,GAAwB;AAAC,IAAA,UAAA;AAAY,IAAA;AAAY,CAAA;AAEvD,MAAMC,eAAAA,GAAkB,CAACC,YAAAA,GACvB,SAASC,qBAAwCC,KAAK,EAAA;;AAEpD,QAAA,IAAIA,UAAUC,SAAAA,EAAW;YACvB,OAAO,IAAA;AACT,QAAA;QAEA,IAAI,IAAI,CAACC,MAAM,CAACC,MAAM,KAAKC,kBAAAA,CAASC,WAAW,EAAE;AAC/C,YAAA,IAAI,CAACP,YAAAA,CAAaQ,QAAQ,CAACN,KAAAA,CAAAA,IAAU,CAACO,cAAAA,CAAY,IAAI,CAACL,MAAM,CAACM,eAAe,CAAA,EAAG;gBAC9E,OAAO,IAAI,CAACC,WAAW,CAAC;oBACtBC,IAAAA,EAAM,IAAI,CAACA,IAAI;AACfC,oBAAAA,OAAAA,EAAS,CAAC,qCAAqC,EAAEf,qBAAAA,CAAsBgB,IAAI,CAAC,IAAA,CAAA,CAAA;AAC9E,iBAAA,CAAA;AACF,YAAA;AACF,QAAA;QAEA,OAAOd,YAAAA,CAAaQ,QAAQ,CAACN,KAAAA,CAAAA,GACzB,OACA,IAAI,CAACS,WAAW,CAAC;YACfC,IAAAA,EAAM,IAAI,CAACA,IAAI;AACfC,YAAAA,OAAAA,EAAS,CAAC,qCAAqC,EAAEb,YAAAA,CAAac,IAAI,CAAC,IAAA,CAAA,CAAA;AACrE,SAAA,CAAA;AACN,IAAA,CAAA;AAEK,MAAMC,oBAAAA,GAAuB,CAClCC,SAAAA,EACAC,gBAAAA,GAAAA;AAEA,IAAA,MAAMC,mBAAmBC,MAAAA,CAAOC,IAAI,CAACC,MAAAA,CAAOC,YAAY,CAAA,CACrDC,MAAM,CAAC,CAACC,MAAQH,MAAAA,CAAOC,YAAY,CAACE,GAAAA,CAAuB,CAACC,IAAI,KAAKC,mBAAAA,CAAUC,eAAe,EAC9FJ,MAAM,CAAC,CAACC,GAAAA,GAAQ,CAACA,GAAAA,CAAII,UAAU,CAACtB,kBAAAA,CAASuB,MAAM,CAAA,IAAKL,GAAAA,KAAQlB,mBAASC,WAAW,CAAA,CAChFuB,MAAM,CAAC;AAAC,QAAA,UAAA;AAAY,QAAA;AAAkB,KAAA,CAAA;AAEzC,IAAA,MAAMC,IAAAA,GAAO;AACXC,QAAAA,IAAAA,EAAMC,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAAC,YAAA;AAAW,SAAA,CAAA,CAAEC,QAAQ,EAAA;QAC/CC,QAAAA,EAAUJ,SAAAA,CAAIC,MAAM,EAAA,CAAGI,IAAI,CAAC,iBAAA,EAAmBvC,eAAAA,CAAgBkB,mBAAmBmB,QAAQ,EAAA;QAC1FG,YAAAA,EAAcN,SAAAA,CAAIO,OAAO,EAAA,CAAGC,QAAQ,EAAA;AACpCL,QAAAA,QAAAA,EAAUH,UAAIO,OAAO,EAAA;QACrBE,OAAAA,EAAST,SAAAA,CAAIO,OAAO,EAAA,CAAGC,QAAQ,EAAA;AAC/BE,QAAAA,aAAAA,EAAeV,UAAIW,MAAM;AAC3B,KAAA;AAEA,IAAA,OAAQ5B,UAAUqB,QAAQ;QACxB,KAAK,UAAA;QACL,KAAK,WAAA;QACL,KAAK,WAAA;QACL,KAAK,YAAA;QACL,KAAK,UAAA;QACL,KAAK,WAAA;AAAa,YAAA;gBAChB,OAAOJ,SAAAA,CAAIW,MAAM,CAAC;AAChB,oBAAA,GAAGb,IAAI;AACP1B,oBAAAA,MAAAA,EAAQ4B,UAAIC,MAAM,EAAA,CAAGC,KAAK,CAACjB,kBAAkBkB,QAAQ,EAAA;AACrD1B,oBAAAA,eAAAA,EAAiBuB,UAAIC,MAAM,EAAA,CAAGI,IAAI,CAACO,oBAAaJ,QAAQ;AAC1D,iBAAA,CAAA;AACF,YAAA;QACA,KAAK,YAAA;QACL,KAAK,aAAA;AACL,QAAA;AAAS,YAAA;gBACP,OAAOR,SAAAA,CAAIW,MAAM,CAAC;AAAE,oBAAA,GAAGb;AAAK,iBAAA,CAAA;AAC9B,YAAA;AACF;AACF;;;;"}
@@ -36,6 +36,7 @@ const getRelationValidator = (attribute, allowedRelations)=>{
36
36
  ]).required(),
37
37
  relation: yup.string().test('isValidRelation', isValidRelation(allowedRelations)).required(),
38
38
  configurable: yup.boolean().nullable(),
39
+ required: yup.boolean(),
39
40
  private: yup.boolean().nullable(),
40
41
  pluginOptions: yup.object()
41
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"relations.mjs","sources":["../../../../server/src/controllers/validation/relations.ts"],"sourcesContent":["import { isUndefined } from 'lodash/fp';\nimport { yup } from '@strapi/utils';\nimport type { TestContext, TestFunction } from 'yup';\nimport type { Schema, UID } from '@strapi/types';\nimport { typeKinds, coreUids } from '../../services/constants';\nimport { isValidName } from './common';\n\nconst STRAPI_USER_RELATIONS = ['oneToOne', 'oneToMany'];\n\nconst isValidRelation = (validNatures: ReadonlyArray<string>): TestFunction<string | undefined> =>\n function isValidRelationValue(this: TestContext, value) {\n // NOTE: In case of an undefined value, delegate the check to .required()\n if (value === undefined) {\n return true;\n }\n\n if (this.parent.target === coreUids.STRAPI_USER) {\n if (!validNatures.includes(value) || !isUndefined(this.parent.targetAttribute)) {\n return this.createError({\n path: this.path,\n message: `must be one of the following values: ${STRAPI_USER_RELATIONS.join(', ')}`,\n });\n }\n }\n\n return validNatures.includes(value)\n ? true\n : this.createError({\n path: this.path,\n message: `must be one of the following values: ${validNatures.join(', ')}`,\n });\n };\n\nexport const getRelationValidator = (\n attribute: Schema.Attribute.Relation,\n allowedRelations: ReadonlyArray<string>\n) => {\n const contentTypesUIDs = Object.keys(strapi.contentTypes)\n .filter((key) => strapi.contentTypes[key as UID.ContentType].kind === typeKinds.COLLECTION_TYPE)\n .filter((key) => !key.startsWith(coreUids.PREFIX) || key === coreUids.STRAPI_USER)\n .concat(['__self__', '__contentType__']);\n\n const base = {\n type: yup.string().oneOf(['relation']).required(),\n relation: yup.string().test('isValidRelation', isValidRelation(allowedRelations)).required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n };\n\n switch (attribute.relation) {\n case 'oneToOne':\n case 'oneToMany':\n case 'manyToOne':\n case 'manyToMany':\n case 'morphOne':\n case 'morphMany': {\n return yup.object({\n ...base,\n target: yup.string().oneOf(contentTypesUIDs).required(),\n targetAttribute: yup.string().test(isValidName).nullable(),\n });\n }\n case 'morphToOne':\n case 'morphToMany':\n default: {\n return yup.object({ ...base });\n }\n }\n};\n"],"names":["STRAPI_USER_RELATIONS","isValidRelation","validNatures","isValidRelationValue","value","undefined","parent","target","coreUids","STRAPI_USER","includes","isUndefined","targetAttribute","createError","path","message","join","getRelationValidator","attribute","allowedRelations","contentTypesUIDs","Object","keys","strapi","contentTypes","filter","key","kind","typeKinds","COLLECTION_TYPE","startsWith","PREFIX","concat","base","type","yup","string","oneOf","required","relation","test","configurable","boolean","nullable","private","pluginOptions","object","isValidName"],"mappings":"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"}
1
+ {"version":3,"file":"relations.mjs","sources":["../../../../server/src/controllers/validation/relations.ts"],"sourcesContent":["import { isUndefined } from 'lodash/fp';\nimport { yup } from '@strapi/utils';\nimport type { TestContext, TestFunction } from 'yup';\nimport type { Schema, UID } from '@strapi/types';\nimport { typeKinds, coreUids } from '../../services/constants';\nimport { isValidName } from './common';\n\nconst STRAPI_USER_RELATIONS = ['oneToOne', 'oneToMany'];\n\nconst isValidRelation = (validNatures: ReadonlyArray<string>): TestFunction<string | undefined> =>\n function isValidRelationValue(this: TestContext, value) {\n // NOTE: In case of an undefined value, delegate the check to .required()\n if (value === undefined) {\n return true;\n }\n\n if (this.parent.target === coreUids.STRAPI_USER) {\n if (!validNatures.includes(value) || !isUndefined(this.parent.targetAttribute)) {\n return this.createError({\n path: this.path,\n message: `must be one of the following values: ${STRAPI_USER_RELATIONS.join(', ')}`,\n });\n }\n }\n\n return validNatures.includes(value)\n ? true\n : this.createError({\n path: this.path,\n message: `must be one of the following values: ${validNatures.join(', ')}`,\n });\n };\n\nexport const getRelationValidator = (\n attribute: Schema.Attribute.Relation,\n allowedRelations: ReadonlyArray<string>\n) => {\n const contentTypesUIDs = Object.keys(strapi.contentTypes)\n .filter((key) => strapi.contentTypes[key as UID.ContentType].kind === typeKinds.COLLECTION_TYPE)\n .filter((key) => !key.startsWith(coreUids.PREFIX) || key === coreUids.STRAPI_USER)\n .concat(['__self__', '__contentType__']);\n\n const base = {\n type: yup.string().oneOf(['relation']).required(),\n relation: yup.string().test('isValidRelation', isValidRelation(allowedRelations)).required(),\n configurable: yup.boolean().nullable(),\n required: yup.boolean(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n };\n\n switch (attribute.relation) {\n case 'oneToOne':\n case 'oneToMany':\n case 'manyToOne':\n case 'manyToMany':\n case 'morphOne':\n case 'morphMany': {\n return yup.object({\n ...base,\n target: yup.string().oneOf(contentTypesUIDs).required(),\n targetAttribute: yup.string().test(isValidName).nullable(),\n });\n }\n case 'morphToOne':\n case 'morphToMany':\n default: {\n return yup.object({ ...base });\n }\n }\n};\n"],"names":["STRAPI_USER_RELATIONS","isValidRelation","validNatures","isValidRelationValue","value","undefined","parent","target","coreUids","STRAPI_USER","includes","isUndefined","targetAttribute","createError","path","message","join","getRelationValidator","attribute","allowedRelations","contentTypesUIDs","Object","keys","strapi","contentTypes","filter","key","kind","typeKinds","COLLECTION_TYPE","startsWith","PREFIX","concat","base","type","yup","string","oneOf","required","relation","test","configurable","boolean","nullable","private","pluginOptions","object","isValidName"],"mappings":"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"}
@@ -216,6 +216,7 @@ const baseRelationSchema = zod.z.object({
216
216
  'morphToMany'
217
217
  ]),
218
218
  configurable: zod.z.boolean().nullish(),
219
+ required: requiredSchema,
219
220
  private: zod.z.boolean().nullish(),
220
221
  pluginOptions: zod.z.record(zod.z.unknown()).optional(),
221
222
  conditions: zod.z.preprocess((val)=>{
@@ -330,7 +331,7 @@ const jsonSchema = basePropertiesSchema.extend({
330
331
  try {
331
332
  JSON.parse(value);
332
333
  return true;
333
- } catch (err) {
334
+ } catch {
334
335
  return false;
335
336
  }
336
337
  })
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sources":["../../../../server/src/controllers/validation/schema.ts"],"sourcesContent":["import { z } from 'zod';\nimport { strings, validateZodSchema, contentTypes } from '@strapi/utils';\nimport type { Struct, UID } from '@strapi/types';\nimport { isArray, isNil, isNull, isNumber, isObject, isUndefined, snakeCase } from 'lodash/fp';\n\nimport { isReservedAttributeName, isReservedModelName } from '../../services/builder';\nimport { coreUids, typeKinds, VALID_UID_TARGETS } from '../../services/constants';\n\nimport {\n CATEGORY_NAME_REGEX,\n ICON_REGEX,\n COLLECTION_NAME_REGEX,\n KEBAB_BASE_REGEX,\n NAME_REGEX,\n} from './common';\n\ntype SchemaMeta =\n | {\n modelType: 'contentType';\n kind?: Struct.ContentTypeKind;\n }\n | {\n modelType: 'component';\n };\n\nconst uniqueAttributeName: z.SuperRefinement<{ name: string }[]> = (attributes, ctx) => {\n const names = new Set(attributes.map((attribute) => snakeCase(attribute.name)));\n if (names.size !== attributes.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Attributes must have unique names',\n });\n }\n};\n\nconst verifyUidTargetField: z.SuperRefinement<\n {\n action: 'create' | 'update' | 'delete';\n name: string;\n properties?: {\n type: unknown;\n targetField?: string | null;\n };\n }[]\n> = (attributes, ctx) => {\n attributes.forEach((attribute) => {\n if (!attribute.properties) {\n return;\n }\n\n const { properties, action } = attribute;\n\n if (properties.type === 'uid' && properties.targetField) {\n const targetAttr = attributes.find((attr) => attr.name === properties.targetField);\n\n if (!targetAttr) {\n // NOTE: on update we are setting it to undefined later in the process instead to handle renames\n if (action === 'create') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Target does not exist',\n });\n }\n } else if (\n !VALID_UID_TARGETS.some((validUIdTarget) => validUIdTarget === targetAttr.properties?.type)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Invalid target type',\n });\n }\n }\n });\n};\n\nconst verifySingularAndPluralNames: z.SuperRefinement<Record<string, unknown>> = (obj, ctx) => {\n // singular and plural can only be provided on creation\n if (obj.action !== 'create') {\n return;\n }\n\n if (obj.singularName === obj.pluralName) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Singular and plural names must be different',\n path: ['singularName'],\n });\n }\n};\n\ntype ContentTypeSchemaAction = {\n action: 'create' | 'update' | 'delete';\n draftAndPublish?: boolean;\n uid?: UID.ContentType;\n attributes?: Array<{ action: 'create' | 'update' | 'delete'; name: string }>;\n};\n\nconst getEffectiveAttributeNames = (contentType: ContentTypeSchemaAction): string[] => {\n if (contentType.action === 'create') {\n return (contentType.attributes ?? [])\n .filter((attribute) => attribute.action !== 'delete')\n .map((attribute) => attribute.name);\n }\n\n if (contentType.action !== 'update' || !contentType.uid) {\n return [];\n }\n\n const existingContentType = strapi.contentTypes[contentType.uid];\n const names = new Set(existingContentType ? Object.keys(existingContentType.attributes) : []);\n\n for (const attribute of contentType.attributes ?? []) {\n if (attribute.action === 'delete') {\n names.delete(attribute.name);\n } else if (attribute.action === 'create') {\n names.add(attribute.name);\n }\n }\n\n return [...names];\n};\n\nexport const verifyDraftAndPublishReservedAttributes: z.SuperRefinement<ContentTypeSchemaAction> = (\n contentType,\n ctx\n) => {\n if (contentType.action === 'delete' || !contentType.draftAndPublish) {\n return;\n }\n\n const reservedAttributeNames = contentTypes.findDraftAndPublishReservedAttributeNames(\n getEffectiveAttributeNames(contentType)\n );\n\n if (reservedAttributeNames.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: contentTypes.getDraftAndPublishEnableBlockedMessage(reservedAttributeNames),\n path: ['draftAndPublish'],\n });\n }\n};\n\nexport const maxLengthGreaterThanMinLength: z.SuperRefinement<Record<string, unknown>> = (\n value,\n ctx\n) => {\n if (\n !isNil(value.maxLength) &&\n !isNil(value.minLength) &&\n isNumber(value.maxLength) &&\n isNumber(value.minLength)\n ) {\n if (value.maxLength < value.minLength) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'maxLength must be greater or equal to minLength',\n path: ['maxLength'],\n });\n }\n }\n};\n\nexport const maxGreaterThanMin: z.SuperRefinement<Record<string, unknown>> = (value, ctx) => {\n if (!isNil(value.max) && !isNil(value.min) && isNumber(value.max) && isNumber(value.min)) {\n if (value.max < value.min) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'max must be greater or equal to min',\n path: ['max'],\n });\n }\n }\n};\n\nconst checkUserTarget: z.SuperRefinement<{\n type: string;\n target?: string;\n relation?: string;\n targetAttribute?: string | null;\n}> = (value, ctx) => {\n if (value.type !== 'relation') {\n return;\n }\n\n if (isUndefined(value.target) || isUndefined(value.relation)) {\n return;\n }\n\n const { target, relation, targetAttribute } = value;\n\n if (\n target === coreUids.STRAPI_USER &&\n (!STRAPI_USER_RELATIONS.includes(relation) || !isUndefined(targetAttribute))\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['relation'],\n message: `Relations to ${coreUids.STRAPI_USER} must be one of the following values: ${STRAPI_USER_RELATIONS.join(', ')} without targetAttribute`,\n });\n }\n};\n\nconst uidRefinement: z.SuperRefinement<{\n type: string;\n default?: unknown;\n targetField?: string | null;\n}> = (value, ctx) => {\n if (!isNil(value.targetField) && !isNil(value.default)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Cannot define a default UID if the targetField is set',\n path: ['default'],\n });\n }\n};\n\nconst enumRefinement: z.SuperRefinement<{\n type: string;\n default?: unknown;\n enum?: string[];\n}> = (value, ctx) => {\n if (value.type === 'enumeration' && !isNil(value.default) && !isNil(value.enum)) {\n if (value.default === '' || !value.enum.some((v) => v === value.default)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Default value must be one of the enum values',\n path: ['default'],\n });\n }\n }\n};\n\nconst conditionSchema = z.object({\n visible: z.record(z.string(), z.array(z.any())),\n});\n\nconst basePropertiesSchema = z.object({\n type: z.enum([\n 'string',\n 'text',\n 'richtext',\n 'blocks',\n 'json',\n 'enumeration',\n 'password',\n 'email',\n 'integer',\n 'biginteger',\n 'float',\n 'decimal',\n 'time',\n 'datetime',\n 'date',\n 'timestamp',\n 'boolean',\n 'component',\n 'uid',\n 'customField',\n 'media',\n 'relation',\n 'dynamiczone',\n ]),\n configurable: z.boolean().nullish(),\n private: z.boolean().nullish(),\n pluginOptions: z.record(z.unknown()).optional(),\n conditions: z.preprocess((val) => {\n return val;\n }, conditionSchema.optional()),\n});\n\nconst maxLengthSchema = z.number().int().positive().optional();\nconst minLengthSchema = z.number().int().positive().optional();\n\nconst requiredSchema = z.boolean().optional();\nconst uniqueSchema = z.boolean().optional();\n\nconst STRAPI_USER_RELATIONS = ['oneToOne', 'oneToMany'];\n\nconst baseRelationSchema = z.object({\n type: z.literal('relation'),\n relation: z.enum([\n 'oneToOne',\n 'oneToMany',\n 'manyToOne',\n 'manyToMany',\n 'morphOne',\n 'morphMany',\n 'morphToOne',\n 'morphToMany',\n ]),\n configurable: z.boolean().nullish(),\n private: z.boolean().nullish(),\n pluginOptions: z.record(z.unknown()).optional(),\n conditions: z.preprocess((val) => {\n return val;\n }, conditionSchema.optional()),\n});\n\nconst oneToOneSchema = baseRelationSchema.extend({\n relation: z.literal('oneToOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst oneWaySchema = baseRelationSchema.extend({\n relation: z.literal('oneToOne'),\n target: z.string(),\n});\n\nconst oneToManySchema = baseRelationSchema.extend({\n relation: z.literal('oneToMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst manyWaySchema = baseRelationSchema.extend({\n relation: z.literal('oneToMany'),\n target: z.string(),\n});\n\nconst manyToOneSchema = baseRelationSchema.extend({\n relation: z.literal('manyToOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst manyToManySchema = baseRelationSchema.extend({\n relation: z.literal('manyToMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphOneSchema = baseRelationSchema.extend({\n relation: z.literal('morphOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphManySchema = baseRelationSchema.extend({\n relation: z.literal('morphMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphToOneSchema = baseRelationSchema.extend({\n relation: z.literal('morphToOne'),\n});\n\nconst morphToManySchema = baseRelationSchema.extend({\n relation: z.literal('morphToMany'),\n});\n\nconst createRelationSchema = (meta: SchemaMeta) => {\n switch (meta.modelType) {\n case 'contentType': {\n switch (meta.kind) {\n case 'singleType':\n return z.discriminatedUnion('relation', [\n oneToOneSchema,\n oneToManySchema,\n morphOneSchema,\n morphManySchema,\n morphToOneSchema,\n morphToManySchema,\n ]);\n\n case 'collectionType':\n return z.discriminatedUnion('relation', [\n oneToOneSchema,\n oneToManySchema,\n manyToOneSchema,\n manyToManySchema,\n morphOneSchema,\n morphManySchema,\n morphToOneSchema,\n morphToManySchema,\n ]);\n default:\n throw new Error('Invalid content type kind');\n }\n }\n\n case 'component': {\n return z.discriminatedUnion('relation', [oneWaySchema, manyWaySchema]);\n }\n default:\n throw new Error('Invalid model type');\n }\n};\n\nconst richTextSchema = basePropertiesSchema.extend({\n type: z.literal('richtext'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n default: z.string().optional(),\n});\n\nconst blocksSchema = basePropertiesSchema.extend({\n type: z.literal('blocks'),\n required: requiredSchema,\n});\n\nconst jsonSchema = basePropertiesSchema.extend({\n type: z.literal('json'),\n required: requiredSchema,\n default: z\n .unknown()\n .optional()\n .refine((value) => {\n if (value === undefined) {\n return true;\n }\n\n if (isNumber(value) || isNull(value) || isObject(value) || isArray(value)) {\n return true;\n }\n\n try {\n JSON.parse(value as string);\n\n return true;\n } catch (err) {\n return false;\n }\n }),\n});\n\nconst enumerationSchema = basePropertiesSchema.extend({\n type: z.literal('enumeration'),\n required: requiredSchema,\n default: z.string().optional(),\n enumName: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || NAME_REGEX.test(value as string);\n }, 'Invalid enum name'),\n enum: z\n .array(\n z.string().refine((value) => {\n return value === '' || !strings.startsWithANumber(value as string);\n })\n )\n .min(1)\n .refine((values) => {\n const filtered = [...new Set(values)];\n return filtered.length === values.length;\n }),\n});\n\nconst textSchema = basePropertiesSchema.extend({\n type: z.literal('text'),\n default: z.string().nullish(),\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n required: requiredSchema,\n unique: uniqueSchema,\n regex: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || !!new RegExp(value as string);\n }, 'Invalid regular expression pattern'),\n});\n\nconst stringSchema = textSchema.extend({\n type: z.literal('string'),\n});\n\nconst passwordSchema = basePropertiesSchema.extend({\n type: z.literal('password'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n});\n\nconst emailSchema = basePropertiesSchema.extend({\n type: z.literal('email'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n default: z.string().email().optional(),\n unique: uniqueSchema,\n});\n\nconst integerSchema = basePropertiesSchema.extend({\n type: z.literal('integer'),\n required: requiredSchema,\n default: z.number().int().optional(),\n unique: uniqueSchema,\n min: z.number().int().optional(),\n max: z.number().int().optional(),\n});\n\nconst bigIntegerSchema = basePropertiesSchema.extend({\n type: z.literal('biginteger'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.string().regex(/^\\d*$/).nullish(),\n min: z.string().regex(/^\\d*$/).nullish(),\n max: z.string().regex(/^\\d*$/).nullish(),\n});\n\nconst floatSchema = basePropertiesSchema.extend({\n type: z.literal('float'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.number().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst decimalSchema = basePropertiesSchema.extend({\n type: z.literal('decimal'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.number().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst timeSchema = basePropertiesSchema.extend({\n type: z.literal('time'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.string().optional(),\n});\n\nconst dateSchema = timeSchema.extend({\n type: z.literal('date'),\n});\n\nconst dateTimeSchema = timeSchema.extend({\n type: z.literal('datetime'),\n});\n\nconst timeStampSchema = basePropertiesSchema.extend({\n type: z.literal('timestamp'),\n});\n\nconst booleanSchema = basePropertiesSchema.extend({\n type: z.literal('boolean'),\n required: requiredSchema,\n default: z.boolean().optional(),\n});\n\nconst componentSchema = basePropertiesSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean().optional(),\n required: requiredSchema,\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneSchema = basePropertiesSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string()).nonempty(),\n required: requiredSchema,\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst mediaSchema = basePropertiesSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean().optional(),\n required: requiredSchema,\n allowedTypes: z\n .array(z.enum(['images', 'videos', 'files', 'audios']))\n .nonempty()\n .optional(),\n});\n\nconst uidSchema = basePropertiesSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().nullish(),\n required: requiredSchema,\n default: z.string().nullish(),\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n options: z\n .object({\n separator: z.string().optional(),\n lowercase: z.boolean().optional(),\n decamelize: z.boolean().optional(),\n customReplacements: z.array(z.array(z.string()).length(2)).optional(),\n preserveLeadingUnderscore: z.boolean().optional(),\n })\n .optional(),\n regex: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || !!new RegExp(value as string);\n }, 'Invalid regular expression pattern'),\n});\n\nconst customFieldSchema = basePropertiesSchema.extend({\n type: z.literal('customField'),\n customField: z.string(),\n});\n\nconst attributePropertiesSchema = (meta: SchemaMeta) => {\n const relationSchema = createRelationSchema(meta);\n\n const base = z.union([\n mediaSchema,\n textSchema,\n stringSchema,\n richTextSchema,\n blocksSchema,\n jsonSchema,\n enumerationSchema,\n passwordSchema,\n emailSchema,\n integerSchema,\n bigIntegerSchema,\n floatSchema,\n decimalSchema,\n timeSchema,\n dateSchema,\n dateTimeSchema,\n timeStampSchema,\n booleanSchema,\n componentSchema,\n customFieldSchema.passthrough(),\n\n relationSchema,\n ]);\n\n if (meta.modelType === 'component') {\n return base\n .superRefine(enumRefinement)\n .superRefine(checkUserTarget)\n .superRefine(maxGreaterThanMin)\n .superRefine(maxLengthGreaterThanMinLength);\n }\n\n return z\n .union([...base.options, uidSchema, dynamicZoneSchema])\n .superRefine(enumRefinement)\n .superRefine(checkUserTarget)\n .superRefine(uidRefinement)\n .superRefine(maxGreaterThanMin)\n .superRefine(maxLengthGreaterThanMinLength);\n};\n\nconst createAttributeSchema = (meta: SchemaMeta) =>\n z.object({\n action: z.literal('create'),\n name: z\n .string()\n .regex(NAME_REGEX)\n .refine((value) => !isReservedAttributeName(value), 'Attribute name is reserved'),\n properties: attributePropertiesSchema(meta),\n });\n\nconst updateAttributeSchema = (meta: SchemaMeta) =>\n z.object({\n action: z.literal('update'),\n name: z.string(),\n properties: attributePropertiesSchema(meta),\n });\n\nconst deleteAttributeSchema = z.object({\n action: z.literal('delete'),\n name: z.string(),\n});\n\nconst contentTypeUIDSchema = z.custom<UID.ContentType>((value) => {\n return typeof value === 'string' && value.length > 0;\n});\n\nconst componentUIDSchema = z.custom<UID.Component>((value) => {\n return typeof value === 'string' && value.length > 0;\n});\n\nconst categorySchema = z.string().min(1).regex(CATEGORY_NAME_REGEX);\n\nconst baseComponentSchema = z.object({\n uid: componentUIDSchema,\n displayName: z.string().min(1),\n icon: z.string().regex(ICON_REGEX).optional(),\n description: z.string().optional(),\n category: categorySchema,\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst createComponentSchema = baseComponentSchema.extend({\n action: z.literal('create'),\n config: z.record(z.string(), z.unknown()).optional().default({}),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'component',\n })\n )\n .superRefine(uniqueAttributeName),\n});\n\nconst updateComponentSchema = baseComponentSchema.extend({\n action: z.literal('update'),\n category: categorySchema.optional(),\n attributes: z\n .array(\n z.discriminatedUnion('action', [\n createAttributeSchema({\n modelType: 'component',\n }),\n updateAttributeSchema({\n modelType: 'component',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName),\n});\n\nconst deleteComponentSchema = z.object({\n action: z.literal('delete'),\n uid: componentUIDSchema,\n});\n\nconst baseContentTypeSchema = z.object({\n uid: contentTypeUIDSchema,\n displayName: z.string().min(1),\n description: z.string().optional(),\n draftAndPublish: z.boolean(),\n options: z.record(z.unknown()).optional().default({}),\n pluginOptions: z.record(z.unknown()).optional().default({}),\n kind: z.enum([typeKinds.SINGLE_TYPE, typeKinds.COLLECTION_TYPE]).optional(),\n});\n\nconst baseCreateContentTypeSchema = baseContentTypeSchema.extend({\n action: z.literal('create'),\n plugin: z.string().min(1).optional(),\n collectionName: z.string().regex(COLLECTION_NAME_REGEX).optional(),\n singularName: z\n .string()\n .min(1)\n .regex(KEBAB_BASE_REGEX, 'Must be kebab case')\n .refine((value) => !isReservedModelName(value), 'Model name is reserved'),\n pluralName: z\n .string()\n .min(1)\n .regex(KEBAB_BASE_REGEX, 'Must be kebab case')\n .refine((value) => !isReservedModelName(value), 'Model name is reserved'),\n config: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst createSingleTypeSchema = baseCreateContentTypeSchema.extend({\n kind: z.literal(typeKinds.SINGLE_TYPE),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n })\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst createCollectionTypeSchema = baseCreateContentTypeSchema.extend({\n kind: z.literal(typeKinds.COLLECTION_TYPE),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n })\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst baseUpdateContentTypeSchema = baseContentTypeSchema.extend({\n action: z.literal('update'),\n});\n\nconst updateSingleTypeSchema = baseUpdateContentTypeSchema.extend({\n kind: z.literal(typeKinds.SINGLE_TYPE).optional(),\n attributes: z\n .array(\n z.discriminatedUnion('action', [\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n }),\n updateAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst updateCollectionTypeSchema = baseUpdateContentTypeSchema.extend({\n kind: z.literal(typeKinds.COLLECTION_TYPE).optional(),\n attributes: z\n .array(\n z.union([\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n }),\n updateAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst deleteContentTypeSchema = z.object({\n action: z.literal('delete'),\n uid: contentTypeUIDSchema,\n});\n\nconst schemaSchema = z.object({\n components: z\n .array(z.union([createComponentSchema, updateComponentSchema, deleteComponentSchema]))\n .optional()\n .default([]),\n contentTypes: z\n .array(\n z\n .union([\n createSingleTypeSchema,\n createCollectionTypeSchema,\n updateSingleTypeSchema,\n updateCollectionTypeSchema,\n deleteContentTypeSchema,\n ])\n .superRefine(verifySingularAndPluralNames)\n .superRefine(verifyDraftAndPublishReservedAttributes)\n )\n .optional()\n .default([]),\n});\n\ntype CreateComponentType = z.infer<typeof createComponentSchema>;\ntype UpdateComponentType = z.infer<typeof updateComponentSchema>;\ntype DeleteComponentType = z.infer<typeof deleteComponentSchema>;\ntype CreateCollectionType = z.infer<typeof createCollectionTypeSchema>;\ntype CreateSingleType = z.infer<typeof createSingleTypeSchema>;\ntype UpdateSingleType = z.infer<typeof updateSingleTypeSchema>;\ntype UpdateCollectionType = z.infer<typeof updateCollectionTypeSchema>;\ntype DeleteContentType = z.infer<typeof deleteContentTypeSchema>;\n\nexport type Schema = {\n components: Array<CreateComponentType | UpdateComponentType | DeleteComponentType>;\n contentTypes: Array<\n | CreateSingleType\n | CreateCollectionType\n | UpdateSingleType\n | UpdateCollectionType\n | DeleteContentType\n >;\n};\n\nconst updateSchemaInput = z.object(\n {\n data: schemaSchema,\n },\n {\n invalid_type_error: 'Invalid schema, expected an object with a data property',\n required_error: 'Schema is required',\n }\n);\n\n// TODO: Remove cast when content-type-builder migrates to Zod 4\nexport const validateUpdateSchema = validateZodSchema(\n updateSchemaInput as unknown as import('@strapi/utils').z.ZodType<\n z.infer<typeof updateSchemaInput>\n >\n);\n"],"names":["uniqueAttributeName","attributes","ctx","names","Set","map","attribute","snakeCase","name","size","length","addIssue","code","z","ZodIssueCode","custom","message","verifyUidTargetField","forEach","properties","action","type","targetField","targetAttr","find","attr","VALID_UID_TARGETS","some","validUIdTarget","verifySingularAndPluralNames","obj","singularName","pluralName","path","getEffectiveAttributeNames","contentType","filter","uid","existingContentType","strapi","contentTypes","Object","keys","delete","add","verifyDraftAndPublishReservedAttributes","draftAndPublish","reservedAttributeNames","findDraftAndPublishReservedAttributeNames","getDraftAndPublishEnableBlockedMessage","maxLengthGreaterThanMinLength","value","isNil","maxLength","minLength","isNumber","maxGreaterThanMin","max","min","checkUserTarget","isUndefined","target","relation","targetAttribute","coreUids","STRAPI_USER","STRAPI_USER_RELATIONS","includes","join","uidRefinement","default","enumRefinement","enum","v","conditionSchema","object","visible","record","string","array","any","basePropertiesSchema","configurable","boolean","nullish","private","pluginOptions","unknown","optional","conditions","preprocess","val","maxLengthSchema","number","int","positive","minLengthSchema","requiredSchema","uniqueSchema","baseRelationSchema","literal","oneToOneSchema","extend","oneWaySchema","oneToManySchema","manyWaySchema","manyToOneSchema","manyToManySchema","morphOneSchema","morphManySchema","morphToOneSchema","morphToManySchema","createRelationSchema","meta","modelType","kind","discriminatedUnion","Error","richTextSchema","required","blocksSchema","jsonSchema","refine","undefined","isNull","isObject","isArray","JSON","parse","err","enumerationSchema","enumName","NAME_REGEX","test","strings","startsWithANumber","values","filtered","textSchema","unique","regex","RegExp","stringSchema","passwordSchema","emailSchema","email","integerSchema","bigIntegerSchema","floatSchema","decimalSchema","timeSchema","dateSchema","dateTimeSchema","timeStampSchema","booleanSchema","componentSchema","component","repeatable","dynamicZoneSchema","components","nonempty","mediaSchema","multiple","allowedTypes","uidSchema","options","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","customFieldSchema","customField","attributePropertiesSchema","relationSchema","base","union","passthrough","superRefine","createAttributeSchema","isReservedAttributeName","updateAttributeSchema","deleteAttributeSchema","contentTypeUIDSchema","componentUIDSchema","categorySchema","CATEGORY_NAME_REGEX","baseComponentSchema","displayName","icon","ICON_REGEX","description","category","createComponentSchema","config","updateComponentSchema","deleteComponentSchema","baseContentTypeSchema","typeKinds","SINGLE_TYPE","COLLECTION_TYPE","baseCreateContentTypeSchema","plugin","collectionName","COLLECTION_NAME_REGEX","KEBAB_BASE_REGEX","isReservedModelName","createSingleTypeSchema","createCollectionTypeSchema","baseUpdateContentTypeSchema","updateSingleTypeSchema","updateCollectionTypeSchema","deleteContentTypeSchema","schemaSchema","updateSchemaInput","data","invalid_type_error","required_error","validateUpdateSchema","validateZodSchema"],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sources":["../../../../server/src/controllers/validation/schema.ts"],"sourcesContent":["import { z } from 'zod';\nimport { strings, validateZodSchema, contentTypes } from '@strapi/utils';\nimport type { Struct, UID } from '@strapi/types';\nimport { isArray, isNil, isNull, isNumber, isObject, isUndefined, snakeCase } from 'lodash/fp';\n\nimport { isReservedAttributeName, isReservedModelName } from '../../services/builder';\nimport { coreUids, typeKinds, VALID_UID_TARGETS } from '../../services/constants';\n\nimport {\n CATEGORY_NAME_REGEX,\n ICON_REGEX,\n COLLECTION_NAME_REGEX,\n KEBAB_BASE_REGEX,\n NAME_REGEX,\n} from './common';\n\ntype SchemaMeta =\n | {\n modelType: 'contentType';\n kind?: Struct.ContentTypeKind;\n }\n | {\n modelType: 'component';\n };\n\nconst uniqueAttributeName: z.SuperRefinement<{ name: string }[]> = (attributes, ctx) => {\n const names = new Set(attributes.map((attribute) => snakeCase(attribute.name)));\n if (names.size !== attributes.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Attributes must have unique names',\n });\n }\n};\n\nconst verifyUidTargetField: z.SuperRefinement<\n {\n action: 'create' | 'update' | 'delete';\n name: string;\n properties?: {\n type: unknown;\n targetField?: string | null;\n };\n }[]\n> = (attributes, ctx) => {\n attributes.forEach((attribute) => {\n if (!attribute.properties) {\n return;\n }\n\n const { properties, action } = attribute;\n\n if (properties.type === 'uid' && properties.targetField) {\n const targetAttr = attributes.find((attr) => attr.name === properties.targetField);\n\n if (!targetAttr) {\n // NOTE: on update we are setting it to undefined later in the process instead to handle renames\n if (action === 'create') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Target does not exist',\n });\n }\n } else if (\n !VALID_UID_TARGETS.some((validUIdTarget) => validUIdTarget === targetAttr.properties?.type)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Invalid target type',\n });\n }\n }\n });\n};\n\nconst verifySingularAndPluralNames: z.SuperRefinement<Record<string, unknown>> = (obj, ctx) => {\n // singular and plural can only be provided on creation\n if (obj.action !== 'create') {\n return;\n }\n\n if (obj.singularName === obj.pluralName) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Singular and plural names must be different',\n path: ['singularName'],\n });\n }\n};\n\ntype ContentTypeSchemaAction = {\n action: 'create' | 'update' | 'delete';\n draftAndPublish?: boolean;\n uid?: UID.ContentType;\n attributes?: Array<{ action: 'create' | 'update' | 'delete'; name: string }>;\n};\n\nconst getEffectiveAttributeNames = (contentType: ContentTypeSchemaAction): string[] => {\n if (contentType.action === 'create') {\n return (contentType.attributes ?? [])\n .filter((attribute) => attribute.action !== 'delete')\n .map((attribute) => attribute.name);\n }\n\n if (contentType.action !== 'update' || !contentType.uid) {\n return [];\n }\n\n const existingContentType = strapi.contentTypes[contentType.uid];\n const names = new Set(existingContentType ? Object.keys(existingContentType.attributes) : []);\n\n for (const attribute of contentType.attributes ?? []) {\n if (attribute.action === 'delete') {\n names.delete(attribute.name);\n } else if (attribute.action === 'create') {\n names.add(attribute.name);\n }\n }\n\n return [...names];\n};\n\nexport const verifyDraftAndPublishReservedAttributes: z.SuperRefinement<ContentTypeSchemaAction> = (\n contentType,\n ctx\n) => {\n if (contentType.action === 'delete' || !contentType.draftAndPublish) {\n return;\n }\n\n const reservedAttributeNames = contentTypes.findDraftAndPublishReservedAttributeNames(\n getEffectiveAttributeNames(contentType)\n );\n\n if (reservedAttributeNames.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: contentTypes.getDraftAndPublishEnableBlockedMessage(reservedAttributeNames),\n path: ['draftAndPublish'],\n });\n }\n};\n\nexport const maxLengthGreaterThanMinLength: z.SuperRefinement<Record<string, unknown>> = (\n value,\n ctx\n) => {\n if (\n !isNil(value.maxLength) &&\n !isNil(value.minLength) &&\n isNumber(value.maxLength) &&\n isNumber(value.minLength)\n ) {\n if (value.maxLength < value.minLength) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'maxLength must be greater or equal to minLength',\n path: ['maxLength'],\n });\n }\n }\n};\n\nexport const maxGreaterThanMin: z.SuperRefinement<Record<string, unknown>> = (value, ctx) => {\n if (!isNil(value.max) && !isNil(value.min) && isNumber(value.max) && isNumber(value.min)) {\n if (value.max < value.min) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'max must be greater or equal to min',\n path: ['max'],\n });\n }\n }\n};\n\nconst checkUserTarget: z.SuperRefinement<{\n type: string;\n target?: string;\n relation?: string;\n targetAttribute?: string | null;\n}> = (value, ctx) => {\n if (value.type !== 'relation') {\n return;\n }\n\n if (isUndefined(value.target) || isUndefined(value.relation)) {\n return;\n }\n\n const { target, relation, targetAttribute } = value;\n\n if (\n target === coreUids.STRAPI_USER &&\n (!STRAPI_USER_RELATIONS.includes(relation) || !isUndefined(targetAttribute))\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['relation'],\n message: `Relations to ${coreUids.STRAPI_USER} must be one of the following values: ${STRAPI_USER_RELATIONS.join(', ')} without targetAttribute`,\n });\n }\n};\n\nconst uidRefinement: z.SuperRefinement<{\n type: string;\n default?: unknown;\n targetField?: string | null;\n}> = (value, ctx) => {\n if (!isNil(value.targetField) && !isNil(value.default)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Cannot define a default UID if the targetField is set',\n path: ['default'],\n });\n }\n};\n\nconst enumRefinement: z.SuperRefinement<{\n type: string;\n default?: unknown;\n enum?: string[];\n}> = (value, ctx) => {\n if (value.type === 'enumeration' && !isNil(value.default) && !isNil(value.enum)) {\n if (value.default === '' || !value.enum.some((v) => v === value.default)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Default value must be one of the enum values',\n path: ['default'],\n });\n }\n }\n};\n\nconst conditionSchema = z.object({\n visible: z.record(z.string(), z.array(z.any())),\n});\n\nconst basePropertiesSchema = z.object({\n type: z.enum([\n 'string',\n 'text',\n 'richtext',\n 'blocks',\n 'json',\n 'enumeration',\n 'password',\n 'email',\n 'integer',\n 'biginteger',\n 'float',\n 'decimal',\n 'time',\n 'datetime',\n 'date',\n 'timestamp',\n 'boolean',\n 'component',\n 'uid',\n 'customField',\n 'media',\n 'relation',\n 'dynamiczone',\n ]),\n configurable: z.boolean().nullish(),\n private: z.boolean().nullish(),\n pluginOptions: z.record(z.unknown()).optional(),\n conditions: z.preprocess((val) => {\n return val;\n }, conditionSchema.optional()),\n});\n\nconst maxLengthSchema = z.number().int().positive().optional();\nconst minLengthSchema = z.number().int().positive().optional();\n\nconst requiredSchema = z.boolean().optional();\nconst uniqueSchema = z.boolean().optional();\n\nconst STRAPI_USER_RELATIONS = ['oneToOne', 'oneToMany'];\n\nconst baseRelationSchema = z.object({\n type: z.literal('relation'),\n relation: z.enum([\n 'oneToOne',\n 'oneToMany',\n 'manyToOne',\n 'manyToMany',\n 'morphOne',\n 'morphMany',\n 'morphToOne',\n 'morphToMany',\n ]),\n configurable: z.boolean().nullish(),\n required: requiredSchema,\n private: z.boolean().nullish(),\n pluginOptions: z.record(z.unknown()).optional(),\n conditions: z.preprocess((val) => {\n return val;\n }, conditionSchema.optional()),\n});\n\nconst oneToOneSchema = baseRelationSchema.extend({\n relation: z.literal('oneToOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst oneWaySchema = baseRelationSchema.extend({\n relation: z.literal('oneToOne'),\n target: z.string(),\n});\n\nconst oneToManySchema = baseRelationSchema.extend({\n relation: z.literal('oneToMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst manyWaySchema = baseRelationSchema.extend({\n relation: z.literal('oneToMany'),\n target: z.string(),\n});\n\nconst manyToOneSchema = baseRelationSchema.extend({\n relation: z.literal('manyToOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst manyToManySchema = baseRelationSchema.extend({\n relation: z.literal('manyToMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphOneSchema = baseRelationSchema.extend({\n relation: z.literal('morphOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphManySchema = baseRelationSchema.extend({\n relation: z.literal('morphMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphToOneSchema = baseRelationSchema.extend({\n relation: z.literal('morphToOne'),\n});\n\nconst morphToManySchema = baseRelationSchema.extend({\n relation: z.literal('morphToMany'),\n});\n\nconst createRelationSchema = (meta: SchemaMeta) => {\n switch (meta.modelType) {\n case 'contentType': {\n switch (meta.kind) {\n case 'singleType':\n return z.discriminatedUnion('relation', [\n oneToOneSchema,\n oneToManySchema,\n morphOneSchema,\n morphManySchema,\n morphToOneSchema,\n morphToManySchema,\n ]);\n\n case 'collectionType':\n return z.discriminatedUnion('relation', [\n oneToOneSchema,\n oneToManySchema,\n manyToOneSchema,\n manyToManySchema,\n morphOneSchema,\n morphManySchema,\n morphToOneSchema,\n morphToManySchema,\n ]);\n default:\n throw new Error('Invalid content type kind');\n }\n }\n\n case 'component': {\n return z.discriminatedUnion('relation', [oneWaySchema, manyWaySchema]);\n }\n default:\n throw new Error('Invalid model type');\n }\n};\n\nconst richTextSchema = basePropertiesSchema.extend({\n type: z.literal('richtext'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n default: z.string().optional(),\n});\n\nconst blocksSchema = basePropertiesSchema.extend({\n type: z.literal('blocks'),\n required: requiredSchema,\n});\n\nconst jsonSchema = basePropertiesSchema.extend({\n type: z.literal('json'),\n required: requiredSchema,\n default: z\n .unknown()\n .optional()\n .refine((value) => {\n if (value === undefined) {\n return true;\n }\n\n if (isNumber(value) || isNull(value) || isObject(value) || isArray(value)) {\n return true;\n }\n\n try {\n JSON.parse(value as string);\n\n return true;\n } catch {\n return false;\n }\n }),\n});\n\nconst enumerationSchema = basePropertiesSchema.extend({\n type: z.literal('enumeration'),\n required: requiredSchema,\n default: z.string().optional(),\n enumName: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || NAME_REGEX.test(value as string);\n }, 'Invalid enum name'),\n enum: z\n .array(\n z.string().refine((value) => {\n return value === '' || !strings.startsWithANumber(value as string);\n })\n )\n .min(1)\n .refine((values) => {\n const filtered = [...new Set(values)];\n return filtered.length === values.length;\n }),\n});\n\nconst textSchema = basePropertiesSchema.extend({\n type: z.literal('text'),\n default: z.string().nullish(),\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n required: requiredSchema,\n unique: uniqueSchema,\n regex: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || !!new RegExp(value as string);\n }, 'Invalid regular expression pattern'),\n});\n\nconst stringSchema = textSchema.extend({\n type: z.literal('string'),\n});\n\nconst passwordSchema = basePropertiesSchema.extend({\n type: z.literal('password'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n});\n\nconst emailSchema = basePropertiesSchema.extend({\n type: z.literal('email'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n default: z.string().email().optional(),\n unique: uniqueSchema,\n});\n\nconst integerSchema = basePropertiesSchema.extend({\n type: z.literal('integer'),\n required: requiredSchema,\n default: z.number().int().optional(),\n unique: uniqueSchema,\n min: z.number().int().optional(),\n max: z.number().int().optional(),\n});\n\nconst bigIntegerSchema = basePropertiesSchema.extend({\n type: z.literal('biginteger'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.string().regex(/^\\d*$/).nullish(),\n min: z.string().regex(/^\\d*$/).nullish(),\n max: z.string().regex(/^\\d*$/).nullish(),\n});\n\nconst floatSchema = basePropertiesSchema.extend({\n type: z.literal('float'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.number().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst decimalSchema = basePropertiesSchema.extend({\n type: z.literal('decimal'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.number().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst timeSchema = basePropertiesSchema.extend({\n type: z.literal('time'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.string().optional(),\n});\n\nconst dateSchema = timeSchema.extend({\n type: z.literal('date'),\n});\n\nconst dateTimeSchema = timeSchema.extend({\n type: z.literal('datetime'),\n});\n\nconst timeStampSchema = basePropertiesSchema.extend({\n type: z.literal('timestamp'),\n});\n\nconst booleanSchema = basePropertiesSchema.extend({\n type: z.literal('boolean'),\n required: requiredSchema,\n default: z.boolean().optional(),\n});\n\nconst componentSchema = basePropertiesSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean().optional(),\n required: requiredSchema,\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneSchema = basePropertiesSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string()).nonempty(),\n required: requiredSchema,\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst mediaSchema = basePropertiesSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean().optional(),\n required: requiredSchema,\n allowedTypes: z\n .array(z.enum(['images', 'videos', 'files', 'audios']))\n .nonempty()\n .optional(),\n});\n\nconst uidSchema = basePropertiesSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().nullish(),\n required: requiredSchema,\n default: z.string().nullish(),\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n options: z\n .object({\n separator: z.string().optional(),\n lowercase: z.boolean().optional(),\n decamelize: z.boolean().optional(),\n customReplacements: z.array(z.array(z.string()).length(2)).optional(),\n preserveLeadingUnderscore: z.boolean().optional(),\n })\n .optional(),\n regex: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || !!new RegExp(value as string);\n }, 'Invalid regular expression pattern'),\n});\n\nconst customFieldSchema = basePropertiesSchema.extend({\n type: z.literal('customField'),\n customField: z.string(),\n});\n\nconst attributePropertiesSchema = (meta: SchemaMeta) => {\n const relationSchema = createRelationSchema(meta);\n\n const base = z.union([\n mediaSchema,\n textSchema,\n stringSchema,\n richTextSchema,\n blocksSchema,\n jsonSchema,\n enumerationSchema,\n passwordSchema,\n emailSchema,\n integerSchema,\n bigIntegerSchema,\n floatSchema,\n decimalSchema,\n timeSchema,\n dateSchema,\n dateTimeSchema,\n timeStampSchema,\n booleanSchema,\n componentSchema,\n customFieldSchema.passthrough(),\n\n relationSchema,\n ]);\n\n if (meta.modelType === 'component') {\n return base\n .superRefine(enumRefinement)\n .superRefine(checkUserTarget)\n .superRefine(maxGreaterThanMin)\n .superRefine(maxLengthGreaterThanMinLength);\n }\n\n return z\n .union([...base.options, uidSchema, dynamicZoneSchema])\n .superRefine(enumRefinement)\n .superRefine(checkUserTarget)\n .superRefine(uidRefinement)\n .superRefine(maxGreaterThanMin)\n .superRefine(maxLengthGreaterThanMinLength);\n};\n\nconst createAttributeSchema = (meta: SchemaMeta) =>\n z.object({\n action: z.literal('create'),\n name: z\n .string()\n .regex(NAME_REGEX)\n .refine((value) => !isReservedAttributeName(value), 'Attribute name is reserved'),\n properties: attributePropertiesSchema(meta),\n });\n\nconst updateAttributeSchema = (meta: SchemaMeta) =>\n z.object({\n action: z.literal('update'),\n name: z.string(),\n properties: attributePropertiesSchema(meta),\n });\n\nconst deleteAttributeSchema = z.object({\n action: z.literal('delete'),\n name: z.string(),\n});\n\nconst contentTypeUIDSchema = z.custom<UID.ContentType>((value) => {\n return typeof value === 'string' && value.length > 0;\n});\n\nconst componentUIDSchema = z.custom<UID.Component>((value) => {\n return typeof value === 'string' && value.length > 0;\n});\n\nconst categorySchema = z.string().min(1).regex(CATEGORY_NAME_REGEX);\n\nconst baseComponentSchema = z.object({\n uid: componentUIDSchema,\n displayName: z.string().min(1),\n icon: z.string().regex(ICON_REGEX).optional(),\n description: z.string().optional(),\n category: categorySchema,\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst createComponentSchema = baseComponentSchema.extend({\n action: z.literal('create'),\n config: z.record(z.string(), z.unknown()).optional().default({}),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'component',\n })\n )\n .superRefine(uniqueAttributeName),\n});\n\nconst updateComponentSchema = baseComponentSchema.extend({\n action: z.literal('update'),\n category: categorySchema.optional(),\n attributes: z\n .array(\n z.discriminatedUnion('action', [\n createAttributeSchema({\n modelType: 'component',\n }),\n updateAttributeSchema({\n modelType: 'component',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName),\n});\n\nconst deleteComponentSchema = z.object({\n action: z.literal('delete'),\n uid: componentUIDSchema,\n});\n\nconst baseContentTypeSchema = z.object({\n uid: contentTypeUIDSchema,\n displayName: z.string().min(1),\n description: z.string().optional(),\n draftAndPublish: z.boolean(),\n options: z.record(z.unknown()).optional().default({}),\n pluginOptions: z.record(z.unknown()).optional().default({}),\n kind: z.enum([typeKinds.SINGLE_TYPE, typeKinds.COLLECTION_TYPE]).optional(),\n});\n\nconst baseCreateContentTypeSchema = baseContentTypeSchema.extend({\n action: z.literal('create'),\n plugin: z.string().min(1).optional(),\n collectionName: z.string().regex(COLLECTION_NAME_REGEX).optional(),\n singularName: z\n .string()\n .min(1)\n .regex(KEBAB_BASE_REGEX, 'Must be kebab case')\n .refine((value) => !isReservedModelName(value), 'Model name is reserved'),\n pluralName: z\n .string()\n .min(1)\n .regex(KEBAB_BASE_REGEX, 'Must be kebab case')\n .refine((value) => !isReservedModelName(value), 'Model name is reserved'),\n config: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst createSingleTypeSchema = baseCreateContentTypeSchema.extend({\n kind: z.literal(typeKinds.SINGLE_TYPE),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n })\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst createCollectionTypeSchema = baseCreateContentTypeSchema.extend({\n kind: z.literal(typeKinds.COLLECTION_TYPE),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n })\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst baseUpdateContentTypeSchema = baseContentTypeSchema.extend({\n action: z.literal('update'),\n});\n\nconst updateSingleTypeSchema = baseUpdateContentTypeSchema.extend({\n kind: z.literal(typeKinds.SINGLE_TYPE).optional(),\n attributes: z\n .array(\n z.discriminatedUnion('action', [\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n }),\n updateAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst updateCollectionTypeSchema = baseUpdateContentTypeSchema.extend({\n kind: z.literal(typeKinds.COLLECTION_TYPE).optional(),\n attributes: z\n .array(\n z.union([\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n }),\n updateAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst deleteContentTypeSchema = z.object({\n action: z.literal('delete'),\n uid: contentTypeUIDSchema,\n});\n\nconst schemaSchema = z.object({\n components: z\n .array(z.union([createComponentSchema, updateComponentSchema, deleteComponentSchema]))\n .optional()\n .default([]),\n contentTypes: z\n .array(\n z\n .union([\n createSingleTypeSchema,\n createCollectionTypeSchema,\n updateSingleTypeSchema,\n updateCollectionTypeSchema,\n deleteContentTypeSchema,\n ])\n .superRefine(verifySingularAndPluralNames)\n .superRefine(verifyDraftAndPublishReservedAttributes)\n )\n .optional()\n .default([]),\n});\n\ntype CreateComponentType = z.infer<typeof createComponentSchema>;\ntype UpdateComponentType = z.infer<typeof updateComponentSchema>;\ntype DeleteComponentType = z.infer<typeof deleteComponentSchema>;\ntype CreateCollectionType = z.infer<typeof createCollectionTypeSchema>;\ntype CreateSingleType = z.infer<typeof createSingleTypeSchema>;\ntype UpdateSingleType = z.infer<typeof updateSingleTypeSchema>;\ntype UpdateCollectionType = z.infer<typeof updateCollectionTypeSchema>;\ntype DeleteContentType = z.infer<typeof deleteContentTypeSchema>;\n\nexport type Schema = {\n components: Array<CreateComponentType | UpdateComponentType | DeleteComponentType>;\n contentTypes: Array<\n | CreateSingleType\n | CreateCollectionType\n | UpdateSingleType\n | UpdateCollectionType\n | DeleteContentType\n >;\n};\n\nconst updateSchemaInput = z.object(\n {\n data: schemaSchema,\n },\n {\n invalid_type_error: 'Invalid schema, expected an object with a data property',\n required_error: 'Schema is required',\n }\n);\n\n// TODO: Remove cast when content-type-builder migrates to Zod 4\nexport const validateUpdateSchema = validateZodSchema(\n updateSchemaInput as unknown as import('@strapi/utils').z.ZodType<\n z.infer<typeof updateSchemaInput>\n >\n);\n"],"names":["uniqueAttributeName","attributes","ctx","names","Set","map","attribute","snakeCase","name","size","length","addIssue","code","z","ZodIssueCode","custom","message","verifyUidTargetField","forEach","properties","action","type","targetField","targetAttr","find","attr","VALID_UID_TARGETS","some","validUIdTarget","verifySingularAndPluralNames","obj","singularName","pluralName","path","getEffectiveAttributeNames","contentType","filter","uid","existingContentType","strapi","contentTypes","Object","keys","delete","add","verifyDraftAndPublishReservedAttributes","draftAndPublish","reservedAttributeNames","findDraftAndPublishReservedAttributeNames","getDraftAndPublishEnableBlockedMessage","maxLengthGreaterThanMinLength","value","isNil","maxLength","minLength","isNumber","maxGreaterThanMin","max","min","checkUserTarget","isUndefined","target","relation","targetAttribute","coreUids","STRAPI_USER","STRAPI_USER_RELATIONS","includes","join","uidRefinement","default","enumRefinement","enum","v","conditionSchema","object","visible","record","string","array","any","basePropertiesSchema","configurable","boolean","nullish","private","pluginOptions","unknown","optional","conditions","preprocess","val","maxLengthSchema","number","int","positive","minLengthSchema","requiredSchema","uniqueSchema","baseRelationSchema","literal","required","oneToOneSchema","extend","oneWaySchema","oneToManySchema","manyWaySchema","manyToOneSchema","manyToManySchema","morphOneSchema","morphManySchema","morphToOneSchema","morphToManySchema","createRelationSchema","meta","modelType","kind","discriminatedUnion","Error","richTextSchema","blocksSchema","jsonSchema","refine","undefined","isNull","isObject","isArray","JSON","parse","enumerationSchema","enumName","NAME_REGEX","test","strings","startsWithANumber","values","filtered","textSchema","unique","regex","RegExp","stringSchema","passwordSchema","emailSchema","email","integerSchema","bigIntegerSchema","floatSchema","decimalSchema","timeSchema","dateSchema","dateTimeSchema","timeStampSchema","booleanSchema","componentSchema","component","repeatable","dynamicZoneSchema","components","nonempty","mediaSchema","multiple","allowedTypes","uidSchema","options","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","customFieldSchema","customField","attributePropertiesSchema","relationSchema","base","union","passthrough","superRefine","createAttributeSchema","isReservedAttributeName","updateAttributeSchema","deleteAttributeSchema","contentTypeUIDSchema","componentUIDSchema","categorySchema","CATEGORY_NAME_REGEX","baseComponentSchema","displayName","icon","ICON_REGEX","description","category","createComponentSchema","config","updateComponentSchema","deleteComponentSchema","baseContentTypeSchema","typeKinds","SINGLE_TYPE","COLLECTION_TYPE","baseCreateContentTypeSchema","plugin","collectionName","COLLECTION_NAME_REGEX","KEBAB_BASE_REGEX","isReservedModelName","createSingleTypeSchema","createCollectionTypeSchema","baseUpdateContentTypeSchema","updateSingleTypeSchema","updateCollectionTypeSchema","deleteContentTypeSchema","schemaSchema","updateSchemaInput","data","invalid_type_error","required_error","validateUpdateSchema","validateZodSchema"],"mappings":"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"}
@@ -214,6 +214,7 @@ const baseRelationSchema = z.object({
214
214
  'morphToMany'
215
215
  ]),
216
216
  configurable: z.boolean().nullish(),
217
+ required: requiredSchema,
217
218
  private: z.boolean().nullish(),
218
219
  pluginOptions: z.record(z.unknown()).optional(),
219
220
  conditions: z.preprocess((val)=>{
@@ -328,7 +329,7 @@ const jsonSchema = basePropertiesSchema.extend({
328
329
  try {
329
330
  JSON.parse(value);
330
331
  return true;
331
- } catch (err) {
332
+ } catch {
332
333
  return false;
333
334
  }
334
335
  })