@strapi/content-type-builder 5.55.1 → 5.57.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 (152) hide show
  1. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +117 -13
  2. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  3. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +118 -13
  4. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/providers/SchemaProvider.js +31 -19
  6. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  7. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +31 -19
  8. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  9. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  10. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  11. package/dist/admin/components/DataManager/DataManagerProvider.js +166 -6
  12. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  13. package/dist/admin/components/DataManager/DataManagerProvider.mjs +165 -7
  14. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  15. package/dist/admin/components/DataManager/RenameMigrationModal.js +285 -0
  16. package/dist/admin/components/DataManager/RenameMigrationModal.js.map +1 -0
  17. package/dist/admin/components/DataManager/RenameMigrationModal.mjs +257 -0
  18. package/dist/admin/components/DataManager/RenameMigrationModal.mjs.map +1 -0
  19. package/dist/admin/components/DataManager/reducer.js +107 -2
  20. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  21. package/dist/admin/components/DataManager/reducer.mjs +106 -2
  22. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  23. package/dist/admin/components/DataManager/utils/cleanData.js +8 -1
  24. package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
  25. package/dist/admin/components/DataManager/utils/cleanData.mjs +8 -1
  26. package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
  27. package/dist/admin/components/DataManager/utils/groupRenameChains.js +86 -0
  28. package/dist/admin/components/DataManager/utils/groupRenameChains.js.map +1 -0
  29. package/dist/admin/components/DataManager/utils/groupRenameChains.mjs +84 -0
  30. package/dist/admin/components/DataManager/utils/groupRenameChains.mjs.map +1 -0
  31. package/dist/admin/components/DataManager/utils/isStorageCompatibleRename.js +29 -0
  32. package/dist/admin/components/DataManager/utils/isStorageCompatibleRename.js.map +1 -0
  33. package/dist/admin/components/DataManager/utils/isStorageCompatibleRename.mjs +27 -0
  34. package/dist/admin/components/DataManager/utils/isStorageCompatibleRename.mjs.map +1 -0
  35. package/dist/admin/components/DataManager/utils/resolveAfterEditRenameConsent.js +35 -0
  36. package/dist/admin/components/DataManager/utils/resolveAfterEditRenameConsent.js.map +1 -0
  37. package/dist/admin/components/DataManager/utils/resolveAfterEditRenameConsent.mjs +33 -0
  38. package/dist/admin/components/DataManager/utils/resolveAfterEditRenameConsent.mjs.map +1 -0
  39. package/dist/admin/components/DataManager/utils/splitChainsByInheritedConsent.js +48 -0
  40. package/dist/admin/components/DataManager/utils/splitChainsByInheritedConsent.js.map +1 -0
  41. package/dist/admin/components/DataManager/utils/splitChainsByInheritedConsent.mjs +45 -0
  42. package/dist/admin/components/DataManager/utils/splitChainsByInheritedConsent.mjs.map +1 -0
  43. package/dist/admin/components/FormModal/FormModal.js +143 -9
  44. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  45. package/dist/admin/components/FormModal/FormModal.mjs +144 -10
  46. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  47. package/dist/admin/components/FormModal/attributes/validation/common.js +6 -5
  48. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  49. package/dist/admin/components/FormModal/attributes/validation/common.mjs +1 -1
  50. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  51. package/dist/admin/components/FormModal/component/createComponentSchema.js +10 -7
  52. package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
  53. package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
  54. package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
  55. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js +24 -21
  56. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js.map +1 -1
  57. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.mjs +1 -1
  58. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.mjs.map +1 -1
  59. package/dist/admin/components/FormModal/forms/utils/createCollectionName.js +3 -2
  60. package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
  61. package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs +1 -1
  62. package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs.map +1 -1
  63. package/dist/admin/components/FormModal/utils/getRenameStorageChange.js +73 -0
  64. package/dist/admin/components/FormModal/utils/getRenameStorageChange.js.map +1 -0
  65. package/dist/admin/components/FormModal/utils/getRenameStorageChange.mjs +70 -0
  66. package/dist/admin/components/FormModal/utils/getRenameStorageChange.mjs.map +1 -0
  67. package/dist/admin/src/components/AIChat/components/AnimatedBox.d.ts +2 -2
  68. package/dist/admin/src/components/AIChat/components/Input.d.ts +2 -2
  69. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +4 -3
  70. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +6 -1
  71. package/dist/admin/src/components/AttributeOptions/OptionBoxWrapper.d.ts +2 -2
  72. package/dist/admin/src/components/ComponentRow.d.ts +2 -2
  73. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +28 -2
  74. package/dist/admin/src/components/DataManager/RenameMigrationModal.d.ts +73 -0
  75. package/dist/admin/src/components/DataManager/reducer.d.ts +17 -2
  76. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +16 -0
  77. package/dist/admin/src/components/DataManager/utils/groupRenameChains.d.ts +31 -0
  78. package/dist/admin/src/components/DataManager/utils/isStorageCompatibleRename.d.ts +10 -0
  79. package/dist/admin/src/components/DataManager/utils/resolveAfterEditRenameConsent.d.ts +24 -0
  80. package/dist/admin/src/components/DataManager/utils/splitChainsByInheritedConsent.d.ts +26 -0
  81. package/dist/admin/src/components/FormModal/utils/getRenameStorageChange.d.ts +40 -0
  82. package/dist/admin/src/components/List.d.ts +2 -2
  83. package/dist/admin/src/components/Relation/RelationNaturePicker/Components.d.ts +4 -4
  84. package/dist/admin/src/types.d.ts +23 -0
  85. package/dist/admin/translations/en.json.js +12 -0
  86. package/dist/admin/translations/en.json.js.map +1 -1
  87. package/dist/admin/translations/en.json.mjs +12 -0
  88. package/dist/admin/translations/en.json.mjs.map +1 -1
  89. package/dist/server/config.js +24 -3
  90. package/dist/server/config.js.map +1 -1
  91. package/dist/server/config.mjs +21 -3
  92. package/dist/server/config.mjs.map +1 -1
  93. package/dist/server/controllers/schema.js +2 -2
  94. package/dist/server/controllers/schema.js.map +1 -1
  95. package/dist/server/controllers/schema.mjs +1 -1
  96. package/dist/server/controllers/schema.mjs.map +1 -1
  97. package/dist/server/controllers/validation/content-type.js +9 -11
  98. package/dist/server/controllers/validation/content-type.js.map +1 -1
  99. package/dist/server/controllers/validation/content-type.mjs +7 -9
  100. package/dist/server/controllers/validation/content-type.mjs.map +1 -1
  101. package/dist/server/controllers/validation/model-schema.js +2 -3
  102. package/dist/server/controllers/validation/model-schema.js.map +1 -1
  103. package/dist/server/controllers/validation/model-schema.mjs +1 -2
  104. package/dist/server/controllers/validation/model-schema.mjs.map +1 -1
  105. package/dist/server/controllers/validation/relations.js +1 -2
  106. package/dist/server/controllers/validation/relations.js.map +1 -1
  107. package/dist/server/controllers/validation/relations.mjs +1 -2
  108. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  109. package/dist/server/controllers/validation/schema.js +42 -23
  110. package/dist/server/controllers/validation/schema.js.map +1 -1
  111. package/dist/server/controllers/validation/schema.mjs +43 -24
  112. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  113. package/dist/server/index.js +1 -1
  114. package/dist/server/index.js.map +1 -1
  115. package/dist/server/services/content-types.js +1 -2
  116. package/dist/server/services/content-types.js.map +1 -1
  117. package/dist/server/services/content-types.mjs +2 -3
  118. package/dist/server/services/content-types.mjs.map +1 -1
  119. package/dist/server/services/migration-builder/index.js +580 -0
  120. package/dist/server/services/migration-builder/index.js.map +1 -0
  121. package/dist/server/services/migration-builder/index.mjs +573 -0
  122. package/dist/server/services/migration-builder/index.mjs.map +1 -0
  123. package/dist/server/services/schema-builder/content-type-builder.js +31 -1
  124. package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
  125. package/dist/server/services/schema-builder/content-type-builder.mjs +31 -1
  126. package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
  127. package/dist/server/services/schema-mutation.js +30 -2
  128. package/dist/server/services/schema-mutation.js.map +1 -1
  129. package/dist/server/services/schema-mutation.mjs +10 -2
  130. package/dist/server/services/schema-mutation.mjs.map +1 -1
  131. package/dist/server/services/schema.js +259 -15
  132. package/dist/server/services/schema.js.map +1 -1
  133. package/dist/server/services/schema.mjs +252 -9
  134. package/dist/server/services/schema.mjs.map +1 -1
  135. package/dist/server/src/config.d.ts +23 -2
  136. package/dist/server/src/config.d.ts.map +1 -1
  137. package/dist/server/src/controllers/validation/content-type.d.ts +0 -1
  138. package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
  139. package/dist/server/src/controllers/validation/relations.d.ts.map +1 -1
  140. package/dist/server/src/controllers/validation/schema.d.ts +28 -0
  141. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  142. package/dist/server/src/index.d.ts +10 -2
  143. package/dist/server/src/index.d.ts.map +1 -1
  144. package/dist/server/src/services/content-types.d.ts.map +1 -1
  145. package/dist/server/src/services/migration-builder/index.d.ts +83 -0
  146. package/dist/server/src/services/migration-builder/index.d.ts.map +1 -0
  147. package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
  148. package/dist/server/src/services/schema-mutation.d.ts +4 -2
  149. package/dist/server/src/services/schema-mutation.d.ts.map +1 -1
  150. package/dist/server/src/services/schema.d.ts +19 -0
  151. package/dist/server/src/services/schema.d.ts.map +1 -1
  152. package/package.json +11 -10
@@ -1 +1 @@
1
- {"version":3,"file":"common.mjs","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: { attributes?: Record<string, unknown> },\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n new RegExp(value || '');\n return true;\n } catch {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n new RegExp(value || '');\n return true;\n } catch {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = this.parent as { max?: T };\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
1
+ {"version":3,"file":"common.mjs","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport snakeCase from 'lodash/snakeCase';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: { attributes?: Record<string, unknown> },\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n new RegExp(value || '');\n return true;\n } catch {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n new RegExp(value || '');\n return true;\n } catch {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = this.parent as { max?: T };\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var strapiAdmin = require('@strapi/admin/strapi-admin');
4
- var fp = require('lodash/fp');
4
+ var snakeCase = require('lodash/snakeCase');
5
5
  var yup = require('yup');
6
6
  var getTrad = require('../../../utils/getTrad.js');
7
7
  var createUid = require('../utils/createUid.js');
8
8
 
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
9
11
  function _interopNamespace(e) {
10
12
  if (e && e.__esModule) return e;
11
13
  var n = Object.create(null);
@@ -24,6 +26,7 @@ function _interopNamespace(e) {
24
26
  return Object.freeze(n);
25
27
  }
26
28
 
29
+ var snakeCase__default = /*#__PURE__*/_interopDefault(snakeCase);
27
30
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
28
31
 
29
32
  const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;
@@ -37,11 +40,11 @@ const createComponentSchema = (usedComponentNames, reservedNames, category, take
37
40
  return false;
38
41
  }
39
42
  const name = createUid.createComponentUid(value, category);
40
- const snakeCaseKey = fp.snakeCase(name);
41
- const snakeCaseCollectionName = fp.snakeCase(currentCollectionName);
43
+ const snakeCaseKey = snakeCase__default.default(name);
44
+ const snakeCaseCollectionName = snakeCase__default.default(currentCollectionName);
42
45
  return usedComponentNames.every((reserved)=>{
43
- return fp.snakeCase(reserved) !== snakeCaseKey;
44
- }) && takenCollectionNames.every((collectionName)=>fp.snakeCase(collectionName) !== snakeCaseCollectionName);
46
+ return snakeCase__default.default(reserved) !== snakeCaseKey;
47
+ }) && takenCollectionNames.every((collectionName)=>snakeCase__default.default(collectionName) !== snakeCaseCollectionName);
45
48
  }
46
49
  }).test({
47
50
  name: 'nameNotAllowed',
@@ -50,9 +53,9 @@ const createComponentSchema = (usedComponentNames, reservedNames, category, take
50
53
  if (!value) {
51
54
  return false;
52
55
  }
53
- const snakeCaseKey = fp.snakeCase(value);
56
+ const snakeCaseKey = snakeCase__default.default(value);
54
57
  return reservedNames.every((reserved)=>{
55
- return fp.snakeCase(reserved) !== snakeCaseKey;
58
+ return snakeCase__default.default(reserved) !== snakeCaseKey;
56
59
  });
57
60
  }
58
61
  }).required(strapiAdmin.translatedErrors.required.id),
@@ -1 +1 @@
1
- {"version":3,"file":"createComponentSchema.js","sources":["../../../../../admin/src/components/FormModal/component/createComponentSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createComponentUid } from '../utils/createUid';\n\nconst CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\n\nexport const createComponentSchema = (\n usedComponentNames: Array<string>,\n reservedNames: Array<string>,\n category: string,\n takenCollectionNames: Array<string>,\n currentCollectionName: string\n) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createComponentUid(value, category);\n\n const snakeCaseKey = snakeCase(name);\n const snakeCaseCollectionName = snakeCase(currentCollectionName);\n\n return (\n usedComponentNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n }) &&\n takenCollectionNames.every(\n (collectionName) => snakeCase(collectionName) !== snakeCaseCollectionName\n )\n );\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n return reservedNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n category: yup\n .string()\n .matches(CATEGORY_NAME_REGEX, getTrad('error.category.format'))\n .required(errorsTrads.required.id),\n\n icon: yup.string(),\n };\n\n return yup.object(shape);\n};\n"],"names":["CATEGORY_NAME_REGEX","createComponentSchema","usedComponentNames","reservedNames","category","takenCollectionNames","currentCollectionName","shape","displayName","yup","string","test","name","message","errorsTrads","unique","id","value","createComponentUid","snakeCaseKey","snakeCase","snakeCaseCollectionName","every","reserved","collectionName","getTrad","required","matches","icon","object"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAMA,mBAAAA,GAAsB,0BAAA;MAEfC,qBAAAA,GAAwB,CACnCC,kBAAAA,EACAC,aAAAA,EACAC,UACAC,oBAAAA,EACAC,qBAAAA,GAAAA;AAEA,IAAA,MAAMC,KAAAA,GAAQ;AACZC,QAAAA,WAAAA,EAAaC,cAAAA,CACVC,MAAM,EAAA,CACNC,IAAI,CAAC;YACJC,IAAAA,EAAM,iBAAA;YACNC,OAAAA,EAASC,4BAAAA,CAAYC,MAAM,CAACC,EAAE;AAC9BL,YAAAA,IAAAA,CAAAA,CAAKM,KAAK,EAAA;AACR,gBAAA,IAAI,CAACA,KAAAA,EAAO;oBACV,OAAO,KAAA;AACT,gBAAA;gBAEA,MAAML,IAAAA,GAAOM,6BAAmBD,KAAAA,EAAOb,QAAAA,CAAAA;AAEvC,gBAAA,MAAMe,eAAeC,YAAAA,CAAUR,IAAAA,CAAAA;AAC/B,gBAAA,MAAMS,0BAA0BD,YAAAA,CAAUd,qBAAAA,CAAAA;gBAE1C,OACEJ,kBAAAA,CAAmBoB,KAAK,CAAC,CAACC,QAAAA,GAAAA;AACxB,oBAAA,OAAOH,aAAUG,QAAAA,CAAAA,KAAcJ,YAAAA;AACjC,gBAAA,CAAA,CAAA,IACAd,qBAAqBiB,KAAK,CACxB,CAACE,cAAAA,GAAmBJ,aAAUI,cAAAA,CAAAA,KAAoBH,uBAAAA,CAAAA;AAGxD,YAAA;AACF,SAAA,CAAA,CACCV,IAAI,CAAC;YACJC,IAAAA,EAAM,gBAAA;AACNC,YAAAA,OAAAA,EAASY,eAAAA,CAAQ,qCAAA,CAAA;AACjBd,YAAAA,IAAAA,CAAAA,CAAKM,KAAK,EAAA;AACR,gBAAA,IAAI,CAACA,KAAAA,EAAO;oBACV,OAAO,KAAA;AACT,gBAAA;AAEA,gBAAA,MAAME,eAAeC,YAAAA,CAAUH,KAAAA,CAAAA;gBAC/B,OAAOd,aAAAA,CAAcmB,KAAK,CAAC,CAACC,QAAAA,GAAAA;AAC1B,oBAAA,OAAOH,aAAUG,QAAAA,CAAAA,KAAcJ,YAAAA;AACjC,gBAAA,CAAA,CAAA;AACF,YAAA;AACF,SAAA,CAAA,CACCO,QAAQ,CAACZ,4BAAAA,CAAYY,QAAQ,CAACV,EAAE,CAAA;AACnCZ,QAAAA,QAAAA,EAAUK,cAAAA,CACPC,MAAM,EAAA,CACNiB,OAAO,CAAC3B,mBAAAA,EAAqByB,eAAAA,CAAQ,uBAAA,CAAA,CAAA,CACrCC,QAAQ,CAACZ,4BAAAA,CAAYY,QAAQ,CAACV,EAAE,CAAA;AAEnCY,QAAAA,IAAAA,EAAMnB,eAAIC,MAAM;AAClB,KAAA;IAEA,OAAOD,cAAAA,CAAIoB,MAAM,CAACtB,KAAAA,CAAAA;AACpB;;;;"}
1
+ {"version":3,"file":"createComponentSchema.js","sources":["../../../../../admin/src/components/FormModal/component/createComponentSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport snakeCase from 'lodash/snakeCase';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createComponentUid } from '../utils/createUid';\n\nconst CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\n\nexport const createComponentSchema = (\n usedComponentNames: Array<string>,\n reservedNames: Array<string>,\n category: string,\n takenCollectionNames: Array<string>,\n currentCollectionName: string\n) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createComponentUid(value, category);\n\n const snakeCaseKey = snakeCase(name);\n const snakeCaseCollectionName = snakeCase(currentCollectionName);\n\n return (\n usedComponentNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n }) &&\n takenCollectionNames.every(\n (collectionName) => snakeCase(collectionName) !== snakeCaseCollectionName\n )\n );\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n return reservedNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n category: yup\n .string()\n .matches(CATEGORY_NAME_REGEX, getTrad('error.category.format'))\n .required(errorsTrads.required.id),\n\n icon: yup.string(),\n };\n\n return yup.object(shape);\n};\n"],"names":["CATEGORY_NAME_REGEX","createComponentSchema","usedComponentNames","reservedNames","category","takenCollectionNames","currentCollectionName","shape","displayName","yup","string","test","name","message","errorsTrads","unique","id","value","createComponentUid","snakeCaseKey","snakeCase","snakeCaseCollectionName","every","reserved","collectionName","getTrad","required","matches","icon","object"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAMA,mBAAAA,GAAsB,0BAAA;MAEfC,qBAAAA,GAAwB,CACnCC,kBAAAA,EACAC,aAAAA,EACAC,UACAC,oBAAAA,EACAC,qBAAAA,GAAAA;AAEA,IAAA,MAAMC,KAAAA,GAAQ;AACZC,QAAAA,WAAAA,EAAaC,cAAAA,CACVC,MAAM,EAAA,CACNC,IAAI,CAAC;YACJC,IAAAA,EAAM,iBAAA;YACNC,OAAAA,EAASC,4BAAAA,CAAYC,MAAM,CAACC,EAAE;AAC9BL,YAAAA,IAAAA,CAAAA,CAAKM,KAAK,EAAA;AACR,gBAAA,IAAI,CAACA,KAAAA,EAAO;oBACV,OAAO,KAAA;AACT,gBAAA;gBAEA,MAAML,IAAAA,GAAOM,6BAAmBD,KAAAA,EAAOb,QAAAA,CAAAA;AAEvC,gBAAA,MAAMe,eAAeC,0BAAAA,CAAUR,IAAAA,CAAAA;AAC/B,gBAAA,MAAMS,0BAA0BD,0BAAAA,CAAUd,qBAAAA,CAAAA;gBAE1C,OACEJ,kBAAAA,CAAmBoB,KAAK,CAAC,CAACC,QAAAA,GAAAA;AACxB,oBAAA,OAAOH,2BAAUG,QAAAA,CAAAA,KAAcJ,YAAAA;AACjC,gBAAA,CAAA,CAAA,IACAd,qBAAqBiB,KAAK,CACxB,CAACE,cAAAA,GAAmBJ,2BAAUI,cAAAA,CAAAA,KAAoBH,uBAAAA,CAAAA;AAGxD,YAAA;AACF,SAAA,CAAA,CACCV,IAAI,CAAC;YACJC,IAAAA,EAAM,gBAAA;AACNC,YAAAA,OAAAA,EAASY,eAAAA,CAAQ,qCAAA,CAAA;AACjBd,YAAAA,IAAAA,CAAAA,CAAKM,KAAK,EAAA;AACR,gBAAA,IAAI,CAACA,KAAAA,EAAO;oBACV,OAAO,KAAA;AACT,gBAAA;AAEA,gBAAA,MAAME,eAAeC,0BAAAA,CAAUH,KAAAA,CAAAA;gBAC/B,OAAOd,aAAAA,CAAcmB,KAAK,CAAC,CAACC,QAAAA,GAAAA;AAC1B,oBAAA,OAAOH,2BAAUG,QAAAA,CAAAA,KAAcJ,YAAAA;AACjC,gBAAA,CAAA,CAAA;AACF,YAAA;AACF,SAAA,CAAA,CACCO,QAAQ,CAACZ,4BAAAA,CAAYY,QAAQ,CAACV,EAAE,CAAA;AACnCZ,QAAAA,QAAAA,EAAUK,cAAAA,CACPC,MAAM,EAAA,CACNiB,OAAO,CAAC3B,mBAAAA,EAAqByB,eAAAA,CAAQ,uBAAA,CAAA,CAAA,CACrCC,QAAQ,CAACZ,4BAAAA,CAAYY,QAAQ,CAACV,EAAE,CAAA;AAEnCY,QAAAA,IAAAA,EAAMnB,eAAIC,MAAM;AAClB,KAAA;IAEA,OAAOD,cAAAA,CAAIoB,MAAM,CAACtB,KAAAA,CAAAA;AACpB;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { translatedErrors } from '@strapi/admin/strapi-admin';
2
- import { snakeCase } from 'lodash/fp';
2
+ import snakeCase from 'lodash/snakeCase';
3
3
  import * as yup from 'yup';
4
4
  import { getTrad } from '../../../utils/getTrad.mjs';
5
5
  import { createComponentUid } from '../utils/createUid.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"createComponentSchema.mjs","sources":["../../../../../admin/src/components/FormModal/component/createComponentSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createComponentUid } from '../utils/createUid';\n\nconst CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\n\nexport const createComponentSchema = (\n usedComponentNames: Array<string>,\n reservedNames: Array<string>,\n category: string,\n takenCollectionNames: Array<string>,\n currentCollectionName: string\n) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createComponentUid(value, category);\n\n const snakeCaseKey = snakeCase(name);\n const snakeCaseCollectionName = snakeCase(currentCollectionName);\n\n return (\n usedComponentNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n }) &&\n takenCollectionNames.every(\n (collectionName) => snakeCase(collectionName) !== snakeCaseCollectionName\n )\n );\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n return reservedNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n category: yup\n .string()\n .matches(CATEGORY_NAME_REGEX, getTrad('error.category.format'))\n .required(errorsTrads.required.id),\n\n icon: yup.string(),\n };\n\n return yup.object(shape);\n};\n"],"names":["CATEGORY_NAME_REGEX","createComponentSchema","usedComponentNames","reservedNames","category","takenCollectionNames","currentCollectionName","shape","displayName","yup","string","test","name","message","errorsTrads","unique","id","value","createComponentUid","snakeCaseKey","snakeCase","snakeCaseCollectionName","every","reserved","collectionName","getTrad","required","matches","icon","object"],"mappings":";;;;;;AAOA,MAAMA,mBAAAA,GAAsB,0BAAA;MAEfC,qBAAAA,GAAwB,CACnCC,kBAAAA,EACAC,aAAAA,EACAC,UACAC,oBAAAA,EACAC,qBAAAA,GAAAA;AAEA,IAAA,MAAMC,KAAAA,GAAQ;AACZC,QAAAA,WAAAA,EAAaC,GAAAA,CACVC,MAAM,EAAA,CACNC,IAAI,CAAC;YACJC,IAAAA,EAAM,iBAAA;YACNC,OAAAA,EAASC,gBAAAA,CAAYC,MAAM,CAACC,EAAE;AAC9BL,YAAAA,IAAAA,CAAAA,CAAKM,KAAK,EAAA;AACR,gBAAA,IAAI,CAACA,KAAAA,EAAO;oBACV,OAAO,KAAA;AACT,gBAAA;gBAEA,MAAML,IAAAA,GAAOM,mBAAmBD,KAAAA,EAAOb,QAAAA,CAAAA;AAEvC,gBAAA,MAAMe,eAAeC,SAAAA,CAAUR,IAAAA,CAAAA;AAC/B,gBAAA,MAAMS,0BAA0BD,SAAAA,CAAUd,qBAAAA,CAAAA;gBAE1C,OACEJ,kBAAAA,CAAmBoB,KAAK,CAAC,CAACC,QAAAA,GAAAA;AACxB,oBAAA,OAAOH,UAAUG,QAAAA,CAAAA,KAAcJ,YAAAA;AACjC,gBAAA,CAAA,CAAA,IACAd,qBAAqBiB,KAAK,CACxB,CAACE,cAAAA,GAAmBJ,UAAUI,cAAAA,CAAAA,KAAoBH,uBAAAA,CAAAA;AAGxD,YAAA;AACF,SAAA,CAAA,CACCV,IAAI,CAAC;YACJC,IAAAA,EAAM,gBAAA;AACNC,YAAAA,OAAAA,EAASY,OAAAA,CAAQ,qCAAA,CAAA;AACjBd,YAAAA,IAAAA,CAAAA,CAAKM,KAAK,EAAA;AACR,gBAAA,IAAI,CAACA,KAAAA,EAAO;oBACV,OAAO,KAAA;AACT,gBAAA;AAEA,gBAAA,MAAME,eAAeC,SAAAA,CAAUH,KAAAA,CAAAA;gBAC/B,OAAOd,aAAAA,CAAcmB,KAAK,CAAC,CAACC,QAAAA,GAAAA;AAC1B,oBAAA,OAAOH,UAAUG,QAAAA,CAAAA,KAAcJ,YAAAA;AACjC,gBAAA,CAAA,CAAA;AACF,YAAA;AACF,SAAA,CAAA,CACCO,QAAQ,CAACZ,gBAAAA,CAAYY,QAAQ,CAACV,EAAE,CAAA;AACnCZ,QAAAA,QAAAA,EAAUK,GAAAA,CACPC,MAAM,EAAA,CACNiB,OAAO,CAAC3B,mBAAAA,EAAqByB,OAAAA,CAAQ,uBAAA,CAAA,CAAA,CACrCC,QAAQ,CAACZ,gBAAAA,CAAYY,QAAQ,CAACV,EAAE,CAAA;AAEnCY,QAAAA,IAAAA,EAAMnB,IAAIC,MAAM;AAClB,KAAA;IAEA,OAAOD,GAAAA,CAAIoB,MAAM,CAACtB,KAAAA,CAAAA;AACpB;;;;"}
1
+ {"version":3,"file":"createComponentSchema.mjs","sources":["../../../../../admin/src/components/FormModal/component/createComponentSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport snakeCase from 'lodash/snakeCase';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createComponentUid } from '../utils/createUid';\n\nconst CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\n\nexport const createComponentSchema = (\n usedComponentNames: Array<string>,\n reservedNames: Array<string>,\n category: string,\n takenCollectionNames: Array<string>,\n currentCollectionName: string\n) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createComponentUid(value, category);\n\n const snakeCaseKey = snakeCase(name);\n const snakeCaseCollectionName = snakeCase(currentCollectionName);\n\n return (\n usedComponentNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n }) &&\n takenCollectionNames.every(\n (collectionName) => snakeCase(collectionName) !== snakeCaseCollectionName\n )\n );\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n return reservedNames.every((reserved) => {\n return snakeCase(reserved) !== snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n category: yup\n .string()\n .matches(CATEGORY_NAME_REGEX, getTrad('error.category.format'))\n .required(errorsTrads.required.id),\n\n icon: yup.string(),\n };\n\n return yup.object(shape);\n};\n"],"names":["CATEGORY_NAME_REGEX","createComponentSchema","usedComponentNames","reservedNames","category","takenCollectionNames","currentCollectionName","shape","displayName","yup","string","test","name","message","errorsTrads","unique","id","value","createComponentUid","snakeCaseKey","snakeCase","snakeCaseCollectionName","every","reserved","collectionName","getTrad","required","matches","icon","object"],"mappings":";;;;;;AAOA,MAAMA,mBAAAA,GAAsB,0BAAA;MAEfC,qBAAAA,GAAwB,CACnCC,kBAAAA,EACAC,aAAAA,EACAC,UACAC,oBAAAA,EACAC,qBAAAA,GAAAA;AAEA,IAAA,MAAMC,KAAAA,GAAQ;AACZC,QAAAA,WAAAA,EAAaC,GAAAA,CACVC,MAAM,EAAA,CACNC,IAAI,CAAC;YACJC,IAAAA,EAAM,iBAAA;YACNC,OAAAA,EAASC,gBAAAA,CAAYC,MAAM,CAACC,EAAE;AAC9BL,YAAAA,IAAAA,CAAAA,CAAKM,KAAK,EAAA;AACR,gBAAA,IAAI,CAACA,KAAAA,EAAO;oBACV,OAAO,KAAA;AACT,gBAAA;gBAEA,MAAML,IAAAA,GAAOM,mBAAmBD,KAAAA,EAAOb,QAAAA,CAAAA;AAEvC,gBAAA,MAAMe,eAAeC,SAAAA,CAAUR,IAAAA,CAAAA;AAC/B,gBAAA,MAAMS,0BAA0BD,SAAAA,CAAUd,qBAAAA,CAAAA;gBAE1C,OACEJ,kBAAAA,CAAmBoB,KAAK,CAAC,CAACC,QAAAA,GAAAA;AACxB,oBAAA,OAAOH,UAAUG,QAAAA,CAAAA,KAAcJ,YAAAA;AACjC,gBAAA,CAAA,CAAA,IACAd,qBAAqBiB,KAAK,CACxB,CAACE,cAAAA,GAAmBJ,UAAUI,cAAAA,CAAAA,KAAoBH,uBAAAA,CAAAA;AAGxD,YAAA;AACF,SAAA,CAAA,CACCV,IAAI,CAAC;YACJC,IAAAA,EAAM,gBAAA;AACNC,YAAAA,OAAAA,EAASY,OAAAA,CAAQ,qCAAA,CAAA;AACjBd,YAAAA,IAAAA,CAAAA,CAAKM,KAAK,EAAA;AACR,gBAAA,IAAI,CAACA,KAAAA,EAAO;oBACV,OAAO,KAAA;AACT,gBAAA;AAEA,gBAAA,MAAME,eAAeC,SAAAA,CAAUH,KAAAA,CAAAA;gBAC/B,OAAOd,aAAAA,CAAcmB,KAAK,CAAC,CAACC,QAAAA,GAAAA;AAC1B,oBAAA,OAAOH,UAAUG,QAAAA,CAAAA,KAAcJ,YAAAA;AACjC,gBAAA,CAAA,CAAA;AACF,YAAA;AACF,SAAA,CAAA,CACCO,QAAQ,CAACZ,gBAAAA,CAAYY,QAAQ,CAACV,EAAE,CAAA;AACnCZ,QAAAA,QAAAA,EAAUK,GAAAA,CACPC,MAAM,EAAA,CACNiB,OAAO,CAAC3B,mBAAAA,EAAqByB,OAAAA,CAAQ,uBAAA,CAAA,CAAA,CACrCC,QAAQ,CAACZ,gBAAAA,CAAYY,QAAQ,CAACV,EAAE,CAAA;AAEnCY,QAAAA,IAAAA,EAAMnB,IAAIC,MAAM;AAClB,KAAA;IAEA,OAAOD,GAAAA,CAAIoB,MAAM,CAACtB,KAAAA,CAAAA;AACpB;;;;"}
@@ -1,11 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var strapiAdmin = require('@strapi/admin/strapi-admin');
4
- var fp = require('lodash/fp');
4
+ var snakeCase = require('lodash/snakeCase');
5
5
  var yup = require('yup');
6
6
  var getTrad = require('../../../utils/getTrad.js');
7
7
  var createUid = require('../utils/createUid.js');
8
8
 
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
9
11
  function _interopNamespace(e) {
10
12
  if (e && e.__esModule) return e;
11
13
  var n = Object.create(null);
@@ -24,6 +26,7 @@ function _interopNamespace(e) {
24
26
  return Object.freeze(n);
25
27
  }
26
28
 
29
+ var snakeCase__default = /*#__PURE__*/_interopDefault(snakeCase);
27
30
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
28
31
 
29
32
  const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [], singularNames = [], pluralNames = [], collectionNames = [] })=>{
@@ -36,9 +39,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
36
39
  return false;
37
40
  }
38
41
  const name = createUid.createUid(value);
39
- const snakeCaseKey = fp.snakeCase(name);
42
+ const snakeCaseKey = snakeCase__default.default(name);
40
43
  return !usedContentTypeNames.some((value)=>{
41
- return fp.snakeCase(value) === snakeCaseKey;
44
+ return snakeCase__default.default(value) === snakeCaseKey;
42
45
  });
43
46
  }
44
47
  }).test({
@@ -48,9 +51,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
48
51
  if (!value) {
49
52
  return false;
50
53
  }
51
- const snakeCaseKey = fp.snakeCase(value);
54
+ const snakeCaseKey = snakeCase__default.default(value);
52
55
  return !reservedModels.some((key)=>{
53
- return fp.snakeCase(key) === snakeCaseKey;
56
+ return snakeCase__default.default(key) === snakeCaseKey;
54
57
  });
55
58
  }
56
59
  }).required(strapiAdmin.translatedErrors.required.id),
@@ -61,9 +64,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
61
64
  if (!value) {
62
65
  return false;
63
66
  }
64
- const snakeCaseKey = fp.snakeCase(value);
67
+ const snakeCaseKey = snakeCase__default.default(value);
65
68
  return !pluralNames.some((key)=>{
66
- return fp.snakeCase(key) === snakeCaseKey;
69
+ return snakeCase__default.default(key) === snakeCaseKey;
67
70
  });
68
71
  }
69
72
  }).test({
@@ -73,9 +76,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
73
76
  if (!value) {
74
77
  return false;
75
78
  }
76
- const snakeCaseKey = fp.snakeCase(value);
79
+ const snakeCaseKey = snakeCase__default.default(value);
77
80
  return !singularNames.some((key)=>{
78
- return fp.snakeCase(key) === snakeCaseKey;
81
+ return snakeCase__default.default(key) === snakeCaseKey;
79
82
  });
80
83
  }
81
84
  }).test({
@@ -85,7 +88,7 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
85
88
  if (!value) {
86
89
  return false;
87
90
  }
88
- return fp.snakeCase(context.parent.singularName) !== fp.snakeCase(value);
91
+ return snakeCase__default.default(context.parent.singularName) !== snakeCase__default.default(value);
89
92
  }
90
93
  }).test({
91
94
  name: 'pluralNameNotAllowed',
@@ -94,9 +97,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
94
97
  if (!value) {
95
98
  return false;
96
99
  }
97
- const snakeCaseKey = fp.snakeCase(value);
100
+ const snakeCaseKey = snakeCase__default.default(value);
98
101
  return !reservedModels.some((key)=>{
99
- return fp.snakeCase(key) === snakeCaseKey;
102
+ return snakeCase__default.default(key) === snakeCaseKey;
100
103
  });
101
104
  }
102
105
  }).test({
@@ -106,9 +109,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
106
109
  if (!value) {
107
110
  return false;
108
111
  }
109
- const snakeCaseKey = fp.snakeCase(value);
112
+ const snakeCaseKey = snakeCase__default.default(value);
110
113
  return !collectionNames.some((key)=>{
111
- return fp.snakeCase(key) === snakeCaseKey;
114
+ return snakeCase__default.default(key) === snakeCaseKey;
112
115
  });
113
116
  }
114
117
  }).required(strapiAdmin.translatedErrors.required.id),
@@ -119,9 +122,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
119
122
  if (!value) {
120
123
  return false;
121
124
  }
122
- const snakeCaseKey = fp.snakeCase(value);
125
+ const snakeCaseKey = snakeCase__default.default(value);
123
126
  return !singularNames.some((key)=>{
124
- return fp.snakeCase(key) === snakeCaseKey;
127
+ return snakeCase__default.default(key) === snakeCaseKey;
125
128
  });
126
129
  }
127
130
  }).test({
@@ -131,9 +134,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
131
134
  if (!value) {
132
135
  return false;
133
136
  }
134
- const snakeCaseKey = fp.snakeCase(value);
137
+ const snakeCaseKey = snakeCase__default.default(value);
135
138
  return !pluralNames.some((key)=>{
136
- return fp.snakeCase(key) === snakeCaseKey;
139
+ return snakeCase__default.default(key) === snakeCaseKey;
137
140
  });
138
141
  }
139
142
  }).test({
@@ -143,7 +146,7 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
143
146
  if (!value) {
144
147
  return false;
145
148
  }
146
- return fp.snakeCase(context.parent.pluralName) !== fp.snakeCase(value);
149
+ return snakeCase__default.default(context.parent.pluralName) !== snakeCase__default.default(value);
147
150
  }
148
151
  }).test({
149
152
  name: 'singularNameNotAllowed',
@@ -152,9 +155,9 @@ const createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [
152
155
  if (!value) {
153
156
  return false;
154
157
  }
155
- const snakeCaseKey = fp.snakeCase(value);
158
+ const snakeCaseKey = snakeCase__default.default(value);
156
159
  return !reservedModels.some((key)=>{
157
- return fp.snakeCase(key) === snakeCaseKey;
160
+ return snakeCase__default.default(key) === snakeCaseKey;
158
161
  });
159
162
  }
160
163
  }).required(strapiAdmin.translatedErrors.required.id),
@@ -1 +1 @@
1
- {"version":3,"file":"createContentTypeSchema.js","sources":["../../../../../admin/src/components/FormModal/contentType/createContentTypeSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createUid } from '../utils/createUid';\n\ntype CreateContentTypeSchemaParams = {\n usedContentTypeNames: Array<string>;\n reservedModels: Array<string>;\n singularNames: Array<string>;\n pluralNames: Array<string>;\n collectionNames: Array<string>;\n};\n\nexport const createContentTypeSchema = ({\n usedContentTypeNames = [],\n reservedModels = [],\n singularNames = [],\n pluralNames = [],\n collectionNames = [],\n}: CreateContentTypeSchemaParams) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createUid(value);\n\n const snakeCaseKey = snakeCase(name);\n\n return !usedContentTypeNames.some((value) => {\n return snakeCase(value) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n pluralName: yup\n .string()\n .test({\n name: 'pluralNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameAlreadyUsedAsSingular',\n message: getTrad('error.contentType.pluralName-equals-singularName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.pluralName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.singularName) !== snakeCase(value);\n },\n })\n .test({\n name: 'pluralNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameNotAlreadyUsedInCollectionName',\n message: getTrad('error.contentType.pluralName-equals-collectionName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !collectionNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n singularName: yup\n .string()\n .test({\n name: 'singularNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'singularNameAlreadyUsedAsPlural',\n message: getTrad('error.contentType.singularName-equals-pluralName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.singularName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.pluralName) !== snakeCase(value);\n },\n })\n .test({\n name: 'singularNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n draftAndPublish: yup.boolean(),\n kind: yup.string().oneOf(['singleType', 'collectionType']),\n };\n\n return yup.object(shape);\n};\n"],"names":["createContentTypeSchema","usedContentTypeNames","reservedModels","singularNames","pluralNames","collectionNames","shape","displayName","yup","string","test","name","message","errorsTrads","unique","id","value","createUid","snakeCaseKey","snakeCase","some","getTrad","key","required","pluralName","context","parent","singularName","draftAndPublish","boolean","kind","oneOf","object"],"mappings":"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"}
1
+ {"version":3,"file":"createContentTypeSchema.js","sources":["../../../../../admin/src/components/FormModal/contentType/createContentTypeSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport snakeCase from 'lodash/snakeCase';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createUid } from '../utils/createUid';\n\ntype CreateContentTypeSchemaParams = {\n usedContentTypeNames: Array<string>;\n reservedModels: Array<string>;\n singularNames: Array<string>;\n pluralNames: Array<string>;\n collectionNames: Array<string>;\n};\n\nexport const createContentTypeSchema = ({\n usedContentTypeNames = [],\n reservedModels = [],\n singularNames = [],\n pluralNames = [],\n collectionNames = [],\n}: CreateContentTypeSchemaParams) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createUid(value);\n\n const snakeCaseKey = snakeCase(name);\n\n return !usedContentTypeNames.some((value) => {\n return snakeCase(value) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n pluralName: yup\n .string()\n .test({\n name: 'pluralNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameAlreadyUsedAsSingular',\n message: getTrad('error.contentType.pluralName-equals-singularName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.pluralName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.singularName) !== snakeCase(value);\n },\n })\n .test({\n name: 'pluralNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameNotAlreadyUsedInCollectionName',\n message: getTrad('error.contentType.pluralName-equals-collectionName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !collectionNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n singularName: yup\n .string()\n .test({\n name: 'singularNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'singularNameAlreadyUsedAsPlural',\n message: getTrad('error.contentType.singularName-equals-pluralName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.singularName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.pluralName) !== snakeCase(value);\n },\n })\n .test({\n name: 'singularNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n draftAndPublish: yup.boolean(),\n kind: yup.string().oneOf(['singleType', 'collectionType']),\n };\n\n return yup.object(shape);\n};\n"],"names":["createContentTypeSchema","usedContentTypeNames","reservedModels","singularNames","pluralNames","collectionNames","shape","displayName","yup","string","test","name","message","errorsTrads","unique","id","value","createUid","snakeCaseKey","snakeCase","some","getTrad","key","required","pluralName","context","parent","singularName","draftAndPublish","boolean","kind","oneOf","object"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { translatedErrors } from '@strapi/admin/strapi-admin';
2
- import { snakeCase } from 'lodash/fp';
2
+ import snakeCase from 'lodash/snakeCase';
3
3
  import * as yup from 'yup';
4
4
  import { getTrad } from '../../../utils/getTrad.mjs';
5
5
  import { createUid } from '../utils/createUid.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"createContentTypeSchema.mjs","sources":["../../../../../admin/src/components/FormModal/contentType/createContentTypeSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createUid } from '../utils/createUid';\n\ntype CreateContentTypeSchemaParams = {\n usedContentTypeNames: Array<string>;\n reservedModels: Array<string>;\n singularNames: Array<string>;\n pluralNames: Array<string>;\n collectionNames: Array<string>;\n};\n\nexport const createContentTypeSchema = ({\n usedContentTypeNames = [],\n reservedModels = [],\n singularNames = [],\n pluralNames = [],\n collectionNames = [],\n}: CreateContentTypeSchemaParams) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createUid(value);\n\n const snakeCaseKey = snakeCase(name);\n\n return !usedContentTypeNames.some((value) => {\n return snakeCase(value) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n pluralName: yup\n .string()\n .test({\n name: 'pluralNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameAlreadyUsedAsSingular',\n message: getTrad('error.contentType.pluralName-equals-singularName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.pluralName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.singularName) !== snakeCase(value);\n },\n })\n .test({\n name: 'pluralNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameNotAlreadyUsedInCollectionName',\n message: getTrad('error.contentType.pluralName-equals-collectionName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !collectionNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n singularName: yup\n .string()\n .test({\n name: 'singularNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'singularNameAlreadyUsedAsPlural',\n message: getTrad('error.contentType.singularName-equals-pluralName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.singularName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.pluralName) !== snakeCase(value);\n },\n })\n .test({\n name: 'singularNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n draftAndPublish: yup.boolean(),\n kind: yup.string().oneOf(['singleType', 'collectionType']),\n };\n\n return yup.object(shape);\n};\n"],"names":["createContentTypeSchema","usedContentTypeNames","reservedModels","singularNames","pluralNames","collectionNames","shape","displayName","yup","string","test","name","message","errorsTrads","unique","id","value","createUid","snakeCaseKey","snakeCase","some","getTrad","key","required","pluralName","context","parent","singularName","draftAndPublish","boolean","kind","oneOf","object"],"mappings":"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"}
1
+ {"version":3,"file":"createContentTypeSchema.mjs","sources":["../../../../../admin/src/components/FormModal/contentType/createContentTypeSchema.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport snakeCase from 'lodash/snakeCase';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { createUid } from '../utils/createUid';\n\ntype CreateContentTypeSchemaParams = {\n usedContentTypeNames: Array<string>;\n reservedModels: Array<string>;\n singularNames: Array<string>;\n pluralNames: Array<string>;\n collectionNames: Array<string>;\n};\n\nexport const createContentTypeSchema = ({\n usedContentTypeNames = [],\n reservedModels = [],\n singularNames = [],\n pluralNames = [],\n collectionNames = [],\n}: CreateContentTypeSchemaParams) => {\n const shape = {\n displayName: yup\n .string()\n .test({\n name: 'nameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const name = createUid(value);\n\n const snakeCaseKey = snakeCase(name);\n\n return !usedContentTypeNames.some((value) => {\n return snakeCase(value) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'nameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n pluralName: yup\n .string()\n .test({\n name: 'pluralNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameAlreadyUsedAsSingular',\n message: getTrad('error.contentType.pluralName-equals-singularName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.pluralName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.singularName) !== snakeCase(value);\n },\n })\n .test({\n name: 'pluralNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralNameNotAlreadyUsedInCollectionName',\n message: getTrad('error.contentType.pluralName-equals-collectionName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !collectionNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n singularName: yup\n .string()\n .test({\n name: 'singularNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !singularNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'singularNameAlreadyUsedAsPlural',\n message: getTrad('error.contentType.singularName-equals-pluralName'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !pluralNames.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .test({\n name: 'pluralAndSingularAreUnique',\n message: getTrad('error.contentType.singularName-used'),\n test(value, context) {\n if (!value) {\n return false;\n }\n\n return snakeCase(context.parent.pluralName) !== snakeCase(value);\n },\n })\n .test({\n name: 'singularNameNotAllowed',\n message: getTrad('error.contentTypeName.reserved-name'),\n test(value) {\n if (!value) {\n return false;\n }\n\n const snakeCaseKey = snakeCase(value);\n\n return !reservedModels.some((key) => {\n return snakeCase(key) === snakeCaseKey;\n });\n },\n })\n .required(errorsTrads.required.id),\n draftAndPublish: yup.boolean(),\n kind: yup.string().oneOf(['singleType', 'collectionType']),\n };\n\n return yup.object(shape);\n};\n"],"names":["createContentTypeSchema","usedContentTypeNames","reservedModels","singularNames","pluralNames","collectionNames","shape","displayName","yup","string","test","name","message","errorsTrads","unique","id","value","createUid","snakeCaseKey","snakeCase","some","getTrad","key","required","pluralName","context","parent","singularName","draftAndPublish","boolean","kind","oneOf","object"],"mappings":"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"}
@@ -1,16 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var snakeCase = require('lodash/snakeCase');
4
4
  var pluralize = require('pluralize');
5
5
 
6
6
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
7
 
8
+ var snakeCase__default = /*#__PURE__*/_interopDefault(snakeCase);
8
9
  var pluralize__default = /*#__PURE__*/_interopDefault(pluralize);
9
10
 
10
11
  // TODO: create a utility for this
11
12
  // Duplicate in server/src/services/schema-builder/component-builder.ts
12
13
  const createComponentCollectionName = (name, category)=>{
13
- return `components_${fp.snakeCase(category)}_${pluralize__default.default(fp.snakeCase(name))}`;
14
+ return `components_${snakeCase__default.default(category)}_${pluralize__default.default(snakeCase__default.default(name))}`;
14
15
  };
15
16
 
16
17
  exports.createComponentCollectionName = createComponentCollectionName;
@@ -1 +1 @@
1
- {"version":3,"file":"createCollectionName.js","sources":["../../../../../../admin/src/components/FormModal/forms/utils/createCollectionName.ts"],"sourcesContent":["import { snakeCase } from 'lodash/fp';\nimport pluralize from 'pluralize';\n\n// TODO: create a utility for this\n// Duplicate in server/src/services/schema-builder/component-builder.ts\nconst createComponentCollectionName = (name: string, category: string) => {\n return `components_${snakeCase(category)}_${pluralize(snakeCase(name))}`;\n};\n\nexport { createComponentCollectionName };\n"],"names":["createComponentCollectionName","name","category","snakeCase","pluralize"],"mappings":";;;;;;;;;AAGA;AACA;AACA,MAAMA,6BAAAA,GAAgC,CAACC,IAAAA,EAAcC,QAAAA,GAAAA;IACnD,OAAO,CAAC,WAAW,EAAEC,YAAAA,CAAUD,UAAU,CAAC,EAAEE,0BAAAA,CAAUD,YAAAA,CAAUF,IAAAA,CAAAA,CAAAA,CAAAA,CAAQ;AAC1E;;;;"}
1
+ {"version":3,"file":"createCollectionName.js","sources":["../../../../../../admin/src/components/FormModal/forms/utils/createCollectionName.ts"],"sourcesContent":["import snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\n// TODO: create a utility for this\n// Duplicate in server/src/services/schema-builder/component-builder.ts\nconst createComponentCollectionName = (name: string, category: string) => {\n return `components_${snakeCase(category)}_${pluralize(snakeCase(name))}`;\n};\n\nexport { createComponentCollectionName };\n"],"names":["createComponentCollectionName","name","category","snakeCase","pluralize"],"mappings":";;;;;;;;;;AAGA;AACA;AACA,MAAMA,6BAAAA,GAAgC,CAACC,IAAAA,EAAcC,QAAAA,GAAAA;IACnD,OAAO,CAAC,WAAW,EAAEC,0BAAAA,CAAUD,UAAU,CAAC,EAAEE,0BAAAA,CAAUD,0BAAAA,CAAUF,IAAAA,CAAAA,CAAAA,CAAAA,CAAQ;AAC1E;;;;"}
@@ -1,4 +1,4 @@
1
- import { snakeCase } from 'lodash/fp';
1
+ import snakeCase from 'lodash/snakeCase';
2
2
  import pluralize from 'pluralize';
3
3
 
4
4
  // TODO: create a utility for this
@@ -1 +1 @@
1
- {"version":3,"file":"createCollectionName.mjs","sources":["../../../../../../admin/src/components/FormModal/forms/utils/createCollectionName.ts"],"sourcesContent":["import { snakeCase } from 'lodash/fp';\nimport pluralize from 'pluralize';\n\n// TODO: create a utility for this\n// Duplicate in server/src/services/schema-builder/component-builder.ts\nconst createComponentCollectionName = (name: string, category: string) => {\n return `components_${snakeCase(category)}_${pluralize(snakeCase(name))}`;\n};\n\nexport { createComponentCollectionName };\n"],"names":["createComponentCollectionName","name","category","snakeCase","pluralize"],"mappings":";;;AAGA;AACA;AACA,MAAMA,6BAAAA,GAAgC,CAACC,IAAAA,EAAcC,QAAAA,GAAAA;IACnD,OAAO,CAAC,WAAW,EAAEC,SAAAA,CAAUD,UAAU,CAAC,EAAEE,SAAAA,CAAUD,SAAAA,CAAUF,IAAAA,CAAAA,CAAAA,CAAAA,CAAQ;AAC1E;;;;"}
1
+ {"version":3,"file":"createCollectionName.mjs","sources":["../../../../../../admin/src/components/FormModal/forms/utils/createCollectionName.ts"],"sourcesContent":["import snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\n// TODO: create a utility for this\n// Duplicate in server/src/services/schema-builder/component-builder.ts\nconst createComponentCollectionName = (name: string, category: string) => {\n return `components_${snakeCase(category)}_${pluralize(snakeCase(name))}`;\n};\n\nexport { createComponentCollectionName };\n"],"names":["createComponentCollectionName","name","category","snakeCase","pluralize"],"mappings":";;;AAGA;AACA;AACA,MAAMA,6BAAAA,GAAgC,CAACC,IAAAA,EAAcC,QAAAA,GAAAA;IACnD,OAAO,CAAC,WAAW,EAAEC,SAAAA,CAAUD,UAAU,CAAC,EAAEE,SAAAA,CAAUD,SAAAA,CAAUF,IAAAA,CAAAA,CAAAA,CAAAA,CAAQ;AAC1E;;;;"}
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var isStorageCompatibleRename = require('../../DataManager/utils/isStorageCompatibleRename.js');
4
+
5
+ /**
6
+ * Human label for what defines an attribute's storage: the type, plus the
7
+ * relation kind/target for relations and the component uid (+ repeatable) for
8
+ * components, so a warning can say what changed.
9
+ */ const describeAttributeStorage = (attribute)=>{
10
+ const type = attribute.type ?? 'unknown';
11
+ if (type === 'relation') {
12
+ const details = [
13
+ attribute.relation,
14
+ attribute.target ? `to ${attribute.target}` : undefined
15
+ ].filter(Boolean).join(' ');
16
+ return details ? `${type} (${details})` : type;
17
+ }
18
+ if (type === 'component') {
19
+ const details = [
20
+ attribute.component,
21
+ attribute.repeatable ? 'repeatable' : undefined
22
+ ].filter(Boolean).join(', ');
23
+ return details ? `${type} (${details})` : type;
24
+ }
25
+ return type;
26
+ };
27
+ /**
28
+ * Detects an attribute edit that renames an existing field *and* changes its
29
+ * storage (type, relation kind/target, component uid/repeatable). Such a rename
30
+ * cannot be replayed as a data-preserving migration, so the field is dropped
31
+ * and recreated empty — the user should be warned before saving.
32
+ *
33
+ * For a relation, renaming the other side (`targetAttribute`) counts as well:
34
+ * the warning then names that field.
35
+ *
36
+ * Returns `null` when there is nothing to warn about: rename migrations are
37
+ * disabled, the field is brand new (no data yet), no name changed, or the
38
+ * storage is unchanged.
39
+ */ const getRenameStorageChange = (initial, modified, mode)=>{
40
+ if (mode === 'never' || initial.status === 'NEW') {
41
+ return null;
42
+ }
43
+ const isRenamed = (oldName, newName)=>Boolean(oldName) && Boolean(newName) && oldName !== newName;
44
+ const renamed = [
45
+ [
46
+ initial.name,
47
+ modified.name
48
+ ],
49
+ ...initial.type === 'relation' ? [
50
+ [
51
+ initial.targetAttribute,
52
+ modified.targetAttribute
53
+ ]
54
+ ] : []
55
+ ].find(([oldName, newName])=>isRenamed(oldName, newName));
56
+ if (!renamed) {
57
+ return null;
58
+ }
59
+ const [oldName, newName] = renamed;
60
+ if (isStorageCompatibleRename.isStorageCompatibleRename(initial, modified)) {
61
+ return null;
62
+ }
63
+ return {
64
+ oldName,
65
+ newName,
66
+ oldType: describeAttributeStorage(initial),
67
+ newType: describeAttributeStorage(modified)
68
+ };
69
+ };
70
+
71
+ exports.describeAttributeStorage = describeAttributeStorage;
72
+ exports.getRenameStorageChange = getRenameStorageChange;
73
+ //# sourceMappingURL=getRenameStorageChange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRenameStorageChange.js","sources":["../../../../../admin/src/components/FormModal/utils/getRenameStorageChange.ts"],"sourcesContent":["import { isStorageCompatibleRename } from '../../DataManager/utils/isStorageCompatibleRename';\n\nimport type { AnyAttribute, Status } from '../../../types';\nimport type { AttributeRenameMigrationMode } from '../../DataManager/RenameMigrationModal';\n\n/** The loosely typed attribute data held by the form reducer (`FormModalData`). */\nexport type AttributeFormData = Record<string, unknown> & {\n name?: string;\n status?: Status;\n type?: string;\n relation?: string;\n target?: string | null;\n component?: string;\n repeatable?: boolean;\n};\n\nexport interface RenameStorageChange {\n oldName: string;\n newName: string;\n /** Human label of the field's storage before the edit (e.g. `relation (oneToMany to api::tag.tag)`). */\n oldType: string;\n /** Human label of the field's storage after the edit. */\n newType: string;\n}\n\n/**\n * Human label for what defines an attribute's storage: the type, plus the\n * relation kind/target for relations and the component uid (+ repeatable) for\n * components, so a warning can say what changed.\n */\nexport const describeAttributeStorage = (attribute: AttributeFormData): string => {\n const type = attribute.type ?? 'unknown';\n\n if (type === 'relation') {\n const details = [attribute.relation, attribute.target ? `to ${attribute.target}` : undefined]\n .filter(Boolean)\n .join(' ');\n return details ? `${type} (${details})` : type;\n }\n\n if (type === 'component') {\n const details = [attribute.component, attribute.repeatable ? 'repeatable' : undefined]\n .filter(Boolean)\n .join(', ');\n return details ? `${type} (${details})` : type;\n }\n\n return type;\n};\n\n/**\n * Detects an attribute edit that renames an existing field *and* changes its\n * storage (type, relation kind/target, component uid/repeatable). Such a rename\n * cannot be replayed as a data-preserving migration, so the field is dropped\n * and recreated empty — the user should be warned before saving.\n *\n * For a relation, renaming the other side (`targetAttribute`) counts as well:\n * the warning then names that field.\n *\n * Returns `null` when there is nothing to warn about: rename migrations are\n * disabled, the field is brand new (no data yet), no name changed, or the\n * storage is unchanged.\n */\nexport const getRenameStorageChange = (\n initial: AttributeFormData,\n modified: AttributeFormData,\n mode: AttributeRenameMigrationMode\n): RenameStorageChange | null => {\n if (mode === 'never' || initial.status === 'NEW') {\n return null;\n }\n\n const isRenamed = (oldName: unknown, newName: unknown) =>\n Boolean(oldName) && Boolean(newName) && oldName !== newName;\n\n const renamed = [\n [initial.name, modified.name],\n ...(initial.type === 'relation' ? [[initial.targetAttribute, modified.targetAttribute]] : []),\n ].find(([oldName, newName]) => isRenamed(oldName, newName));\n if (!renamed) {\n return null;\n }\n\n const [oldName, newName] = renamed as [string, string];\n\n if (\n isStorageCompatibleRename(\n initial as unknown as AnyAttribute,\n modified as unknown as AnyAttribute\n )\n ) {\n return null;\n }\n\n return {\n oldName,\n newName,\n oldType: describeAttributeStorage(initial),\n newType: describeAttributeStorage(modified),\n };\n};\n"],"names":["describeAttributeStorage","attribute","type","details","relation","target","undefined","filter","Boolean","join","component","repeatable","getRenameStorageChange","initial","modified","mode","status","isRenamed","oldName","newName","renamed","name","targetAttribute","find","isStorageCompatibleRename","oldType","newType"],"mappings":";;;;AAyBA;;;;IAKO,MAAMA,wBAAAA,GAA2B,CAACC,SAAAA,GAAAA;IACvC,MAAMC,IAAAA,GAAOD,SAAAA,CAAUC,IAAI,IAAI,SAAA;AAE/B,IAAA,IAAIA,SAAS,UAAA,EAAY;AACvB,QAAA,MAAMC,OAAAA,GAAU;AAACF,YAAAA,SAAAA,CAAUG,QAAQ;YAAEH,SAAAA,CAAUI,MAAM,GAAG,CAAC,GAAG,EAAEJ,SAAAA,CAAUI,MAAM,EAAE,GAAGC;AAAU,SAAA,CAC1FC,MAAM,CAACC,OAAAA,CAAAA,CACPC,IAAI,CAAC,GAAA,CAAA;QACR,OAAON,OAAAA,GAAU,GAAGD,IAAAA,CAAK,EAAE,EAAEC,OAAAA,CAAQ,CAAC,CAAC,GAAGD,IAAAA;AAC5C,IAAA;AAEA,IAAA,IAAIA,SAAS,WAAA,EAAa;AACxB,QAAA,MAAMC,OAAAA,GAAU;AAACF,YAAAA,SAAAA,CAAUS,SAAS;YAAET,SAAAA,CAAUU,UAAU,GAAG,YAAA,GAAeL;AAAU,SAAA,CACnFC,MAAM,CAACC,OAAAA,CAAAA,CACPC,IAAI,CAAC,IAAA,CAAA;QACR,OAAON,OAAAA,GAAU,GAAGD,IAAAA,CAAK,EAAE,EAAEC,OAAAA,CAAQ,CAAC,CAAC,GAAGD,IAAAA;AAC5C,IAAA;IAEA,OAAOA,IAAAA;AACT;AAEA;;;;;;;;;;;;AAYC,IACM,MAAMU,sBAAAA,GAAyB,CACpCC,SACAC,QAAAA,EACAC,IAAAA,GAAAA;AAEA,IAAA,IAAIA,IAAAA,KAAS,OAAA,IAAWF,OAAAA,CAAQG,MAAM,KAAK,KAAA,EAAO;QAChD,OAAO,IAAA;AACT,IAAA;IAEA,MAAMC,SAAAA,GAAY,CAACC,OAAAA,EAAkBC,OAAAA,GACnCX,QAAQU,OAAAA,CAAAA,IAAYV,OAAAA,CAAQW,YAAYD,OAAAA,KAAYC,OAAAA;AAEtD,IAAA,MAAMC,OAAAA,GAAU;AACd,QAAA;AAACP,YAAAA,OAAAA,CAAQQ,IAAI;AAAEP,YAAAA,QAAAA,CAASO;AAAK,SAAA;WACzBR,OAAAA,CAAQX,IAAI,KAAK,UAAA,GAAa;AAAC,YAAA;AAACW,gBAAAA,OAAAA,CAAQS,eAAe;AAAER,gBAAAA,QAAAA,CAASQ;AAAgB;AAAC,SAAA,GAAG;KAC3F,CAACC,IAAI,CAAC,CAAC,CAACL,SAASC,OAAAA,CAAQ,GAAKF,UAAUC,OAAAA,EAASC,OAAAA,CAAAA,CAAAA;AAClD,IAAA,IAAI,CAACC,OAAAA,EAAS;QACZ,OAAO,IAAA;AACT,IAAA;IAEA,MAAM,CAACF,OAAAA,EAASC,OAAAA,CAAQ,GAAGC,OAAAA;IAE3B,IACEI,mDAAAA,CACEX,SACAC,QAAAA,CAAAA,EAEF;QACA,OAAO,IAAA;AACT,IAAA;IAEA,OAAO;AACLI,QAAAA,OAAAA;AACAC,QAAAA,OAAAA;AACAM,QAAAA,OAAAA,EAASzB,wBAAAA,CAAyBa,OAAAA,CAAAA;AAClCa,QAAAA,OAAAA,EAAS1B,wBAAAA,CAAyBc,QAAAA;AACpC,KAAA;AACF;;;;;"}