@strapi/content-type-builder 5.13.0-beta.1 → 5.13.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.
- package/dist/admin/components/AttributeIcon.js +0 -1
- package/dist/admin/components/AttributeIcon.js.map +1 -1
- package/dist/admin/components/AttributeIcon.mjs +0 -1
- package/dist/admin/components/AttributeIcon.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.js +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs +1 -1
- package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.js +2 -5
- package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.mjs +2 -5
- package/dist/admin/components/AutoReloadOverlayBlocker.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js +11 -13
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs +11 -13
- package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
- package/dist/admin/components/ComponentList.js +26 -12
- package/dist/admin/components/ComponentList.js.map +1 -1
- package/dist/admin/components/ComponentList.mjs +26 -12
- package/dist/admin/components/ComponentList.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +70 -253
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +73 -256
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +81 -53
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +82 -54
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/DisplayedType.js +14 -14
- package/dist/admin/components/DisplayedType.js.map +1 -1
- package/dist/admin/components/DisplayedType.mjs +15 -15
- package/dist/admin/components/DisplayedType.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js +38 -34
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs +40 -36
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js +164 -198
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +165 -198
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.js +2 -2
- package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +27 -10
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +27 -10
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +4 -4
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +4 -4
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.js +14 -9
- package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
- package/dist/admin/components/FormModal/utils/canEditContentType.mjs +14 -9
- package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs.map +1 -1
- package/dist/admin/components/FormModalEndActions.js +34 -1
- package/dist/admin/components/FormModalEndActions.js.map +1 -1
- package/dist/admin/components/FormModalEndActions.mjs +34 -1
- package/dist/admin/components/FormModalEndActions.mjs.map +1 -1
- package/dist/admin/components/FormModalHeader.js +28 -10
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalHeader.mjs +28 -10
- package/dist/admin/components/FormModalHeader.mjs.map +1 -1
- package/dist/admin/components/FormModalSubHeader.js.map +1 -1
- package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +5 -9
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +5 -9
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/List.js +199 -149
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs +202 -151
- package/dist/admin/components/List.mjs.map +1 -1
- package/dist/admin/components/Relation/Relation.js +2 -3
- package/dist/admin/components/Relation/Relation.js.map +1 -1
- package/dist/admin/components/Relation/Relation.mjs +2 -3
- package/dist/admin/components/Relation/Relation.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js +5 -6
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs +5 -6
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js +21 -19
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs +21 -19
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
- package/dist/admin/components/SelectCategory.js +1 -1
- package/dist/admin/components/SelectCategory.js.map +1 -1
- package/dist/admin/components/SelectCategory.mjs +1 -1
- package/dist/admin/components/SelectCategory.mjs.map +1 -1
- package/dist/admin/components/SelectComponent.js +6 -3
- package/dist/admin/components/SelectComponent.js.map +1 -1
- package/dist/admin/components/SelectComponent.mjs +6 -3
- package/dist/admin/components/SelectComponent.mjs.map +1 -1
- package/dist/admin/components/SelectComponents.js +6 -9
- package/dist/admin/components/SelectComponents.js.map +1 -1
- package/dist/admin/components/SelectComponents.mjs +6 -9
- package/dist/admin/components/SelectComponents.mjs.map +1 -1
- package/dist/admin/components/SelectNumber.js +4 -0
- package/dist/admin/components/SelectNumber.js.map +1 -1
- package/dist/admin/components/SelectNumber.mjs +4 -0
- package/dist/admin/components/SelectNumber.mjs.map +1 -1
- package/dist/admin/components/TabForm.js +1 -2
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs +1 -2
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/icons/Curve.js +1 -1
- package/dist/admin/icons/Curve.js.map +1 -1
- package/dist/admin/icons/Curve.mjs +1 -1
- package/dist/admin/icons/Curve.mjs.map +1 -1
- package/dist/admin/pages/App/index.js +19 -39
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs +21 -41
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/LinkToCMSettingsView.js +17 -26
- package/dist/admin/pages/ListView/LinkToCMSettingsView.js.map +1 -1
- package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs +17 -26
- package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js +158 -105
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs +163 -110
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/admin/reducers.js +4 -3
- package/dist/admin/reducers.js.map +1 -1
- package/dist/admin/reducers.mjs +4 -3
- package/dist/admin/reducers.mjs.map +1 -1
- package/dist/admin/src/components/AutoReloadOverlayBlocker.d.ts +2 -2
- package/dist/admin/src/components/ComponentCard/ComponentCard.d.ts +1 -5
- package/dist/admin/src/components/ComponentList.d.ts +6 -4
- package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +14 -29
- package/dist/admin/src/components/DisplayedType.d.ts +1 -2
- package/dist/admin/src/components/DynamicZoneList.d.ts +5 -8
- package/dist/admin/src/components/FormModal/forms/forms.d.ts +38 -2
- package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +2 -3
- package/dist/admin/src/components/FormModal/reducer.d.ts +4 -10
- package/dist/admin/src/components/FormModal/utils/canEditContentType.d.ts +4 -4
- package/dist/admin/src/components/FormModal/utils/getAttributesToDisplay.d.ts +1 -1
- package/dist/admin/src/components/FormModalEndActions.d.ts +5 -1
- package/dist/admin/src/components/FormModalHeader.d.ts +7 -10
- package/dist/admin/src/components/FormModalSubHeader.d.ts +3 -3
- package/dist/admin/src/components/GenericInputs.d.ts +1 -2
- package/dist/admin/src/components/List.d.ts +13 -16
- package/dist/admin/src/components/Relation/Relation.d.ts +1 -2
- package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +1 -2
- package/dist/admin/src/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.d.ts +2 -3
- package/dist/admin/src/components/Relation/RelationNaturePicker/RelationNaturePicker.d.ts +1 -2
- package/dist/admin/src/components/SelectComponents.d.ts +1 -3
- package/dist/admin/src/components/SelectNumber.d.ts +7 -1
- package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +4 -3
- package/dist/admin/src/pages/ListView/ListView.d.ts +1 -1
- package/dist/admin/src/reducers.d.ts +8 -2
- package/dist/admin/src/types.d.ts +43 -40
- package/dist/admin/src/utils/findAttribute.d.ts +2 -2
- package/dist/admin/src/utils/formAPI.d.ts +1 -43
- package/dist/admin/src/utils/getMaxDepth.d.ts +2 -2
- package/dist/admin/src/utils/getRelationType.d.ts +1 -1
- package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +1 -1
- package/dist/admin/translations/de.json.js +1 -0
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +1 -0
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/dk.json.js +1 -0
- package/dist/admin/translations/dk.json.js.map +1 -1
- package/dist/admin/translations/dk.json.mjs +1 -0
- package/dist/admin/translations/dk.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +2 -4
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +2 -4
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +1 -0
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +1 -0
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/ko.json.js +1 -0
- package/dist/admin/translations/ko.json.js.map +1 -1
- package/dist/admin/translations/ko.json.mjs +1 -0
- package/dist/admin/translations/ko.json.mjs.map +1 -1
- package/dist/admin/translations/pl.json.js +1 -0
- package/dist/admin/translations/pl.json.js.map +1 -1
- package/dist/admin/translations/pl.json.mjs +1 -0
- package/dist/admin/translations/pl.json.mjs.map +1 -1
- package/dist/admin/translations/pt-BR.json.js +1 -0
- package/dist/admin/translations/pt-BR.json.js.map +1 -1
- package/dist/admin/translations/pt-BR.json.mjs +1 -0
- package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
- package/dist/admin/translations/sv.json.js +1 -0
- package/dist/admin/translations/sv.json.js.map +1 -1
- package/dist/admin/translations/sv.json.mjs +1 -0
- package/dist/admin/translations/sv.json.mjs.map +1 -1
- package/dist/admin/translations/tr.json.js +1 -0
- package/dist/admin/translations/tr.json.js.map +1 -1
- package/dist/admin/translations/tr.json.mjs +1 -0
- package/dist/admin/translations/tr.json.mjs.map +1 -1
- package/dist/admin/translations/zh.json.js +1 -0
- package/dist/admin/translations/zh.json.js.map +1 -1
- package/dist/admin/translations/zh.json.mjs +1 -0
- package/dist/admin/translations/zh.json.mjs.map +1 -1
- package/dist/admin/utils/findAttribute.js.map +1 -1
- package/dist/admin/utils/findAttribute.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js +1 -0
- package/dist/admin/utils/formAPI.js.map +1 -1
- package/dist/admin/utils/formAPI.mjs +1 -0
- package/dist/admin/utils/formAPI.mjs.map +1 -1
- package/dist/admin/utils/getMaxDepth.js.map +1 -1
- package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
- package/dist/admin/utils/getRelationType.js.map +1 -1
- package/dist/admin/utils/getRelationType.mjs.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.js.map +1 -1
- package/dist/admin/utils/isAllowedContentTypesForRelations.mjs.map +1 -1
- package/dist/server/controllers/index.js +1 -3
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +1 -3
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js +0 -2
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +1 -2
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/content-type.js.map +1 -1
- package/dist/server/controllers/validation/content-type.mjs.map +1 -1
- package/dist/server/routes/admin.js +0 -51
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +0 -51
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/services/index.js +1 -3
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +1 -3
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/component-builder.js +2 -12
- package/dist/server/services/schema-builder/component-builder.js.map +1 -1
- package/dist/server/services/schema-builder/component-builder.mjs +2 -12
- package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.js +28 -43
- package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.mjs +28 -43
- package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/index.js +49 -51
- package/dist/server/services/schema-builder/index.js.map +1 -1
- package/dist/server/services/schema-builder/index.mjs +49 -51
- package/dist/server/services/schema-builder/index.mjs.map +1 -1
- package/dist/server/src/controllers/index.d.ts +0 -5
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/common.d.ts +0 -1
- package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-type.d.ts +2 -3
- package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +0 -6
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +0 -2
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/component-builder.d.ts +0 -1
- package/dist/server/src/services/schema-builder/component-builder.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/content-type-builder.d.ts +3 -2
- package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/index.d.ts +0 -3
- package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +0 -2
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/package.json +6 -11
- package/dist/admin/components/AttributeRow.js +0 -342
- package/dist/admin/components/AttributeRow.js.map +0 -1
- package/dist/admin/components/AttributeRow.mjs +0 -339
- package/dist/admin/components/AttributeRow.mjs.map +0 -1
- package/dist/admin/components/ComponentRow.js +0 -42
- package/dist/admin/components/ComponentRow.js.map +0 -1
- package/dist/admin/components/ComponentRow.mjs +0 -40
- package/dist/admin/components/ComponentRow.mjs.map +0 -1
- package/dist/admin/components/DataManager/DataManagerContext.js +0 -9
- package/dist/admin/components/DataManager/DataManagerContext.js.map +0 -1
- package/dist/admin/components/DataManager/DataManagerContext.mjs +0 -7
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +0 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +0 -344
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +0 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +0 -323
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +0 -1
- package/dist/admin/components/DataManager/reducer.js +0 -546
- package/dist/admin/components/DataManager/reducer.js.map +0 -1
- package/dist/admin/components/DataManager/reducer.mjs +0 -542
- package/dist/admin/components/DataManager/reducer.mjs.map +0 -1
- package/dist/admin/components/DataManager/undoRedo.js +0 -102
- package/dist/admin/components/DataManager/undoRedo.js.map +0 -1
- package/dist/admin/components/DataManager/undoRedo.mjs +0 -100
- package/dist/admin/components/DataManager/undoRedo.mjs.map +0 -1
- package/dist/admin/components/DataManager/useDataManager.js +0 -9
- package/dist/admin/components/DataManager/useDataManager.js.map +0 -1
- package/dist/admin/components/DataManager/useDataManager.mjs +0 -7
- package/dist/admin/components/DataManager/useDataManager.mjs.map +0 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.js +0 -35
- package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +0 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs +0 -33
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +0 -1
- package/dist/admin/components/DataManager/utils/cleanData.js +0 -128
- package/dist/admin/components/DataManager/utils/cleanData.js.map +0 -1
- package/dist/admin/components/DataManager/utils/cleanData.mjs +0 -125
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +0 -1
- package/dist/admin/components/DataManager/utils/formatSchemas.js +0 -21
- package/dist/admin/components/DataManager/utils/formatSchemas.js.map +0 -1
- package/dist/admin/components/DataManager/utils/formatSchemas.mjs +0 -18
- package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +0 -1
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js +0 -34
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +0 -1
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs +0 -31
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs.map +0 -1
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js +0 -45
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js.map +0 -1
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs +0 -43
- package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs.map +0 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js +0 -17
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +0 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs +0 -15
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +0 -1
- package/dist/admin/components/ExitPrompt.js +0 -50
- package/dist/admin/components/ExitPrompt.js.map +0 -1
- package/dist/admin/components/ExitPrompt.mjs +0 -48
- package/dist/admin/components/ExitPrompt.mjs.map +0 -1
- package/dist/admin/components/Footers.js +0 -95
- package/dist/admin/components/Footers.js.map +0 -1
- package/dist/admin/components/Footers.mjs +0 -92
- package/dist/admin/components/Footers.mjs.map +0 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js +0 -28
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +0 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs +0 -7
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +0 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +0 -205
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +0 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +0 -202
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +0 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js +0 -9
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js.map +0 -1
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs +0 -7
- package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs.map +0 -1
- package/dist/admin/components/Status.js +0 -73
- package/dist/admin/components/Status.js.map +0 -1
- package/dist/admin/components/Status.mjs +0 -70
- package/dist/admin/components/Status.mjs.map +0 -1
- package/dist/admin/pages/ListView/EmptyState.js +0 -38
- package/dist/admin/pages/ListView/EmptyState.js.map +0 -1
- package/dist/admin/pages/ListView/EmptyState.mjs +0 -36
- package/dist/admin/pages/ListView/EmptyState.mjs.map +0 -1
- package/dist/admin/src/components/AttributeRow.d.ts +0 -28
- package/dist/admin/src/components/ComponentRow.d.ts +0 -11
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +0 -138
- package/dist/admin/src/components/DataManager/DataManagerProvider.d.ts +0 -6
- package/dist/admin/src/components/DataManager/reducer.d.ts +0 -278
- package/dist/admin/src/components/DataManager/undoRedo.d.ts +0 -23
- package/dist/admin/src/components/DataManager/useDataManager.d.ts +0 -1
- package/dist/admin/src/components/DataManager/useServerRestartWatcher.d.ts +0 -1
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +0 -311
- package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +0 -3
- package/dist/admin/src/components/DataManager/utils/retrieveComponentsThatHaveComponents.d.ts +0 -12
- package/dist/admin/src/components/DataManager/utils/retrieveNestedComponents.d.ts +0 -8
- package/dist/admin/src/components/DataManager/utils/retrieveSpecificInfoFromComponents.d.ts +0 -1
- package/dist/admin/src/components/ExitPrompt.d.ts +0 -1
- package/dist/admin/src/components/Footers.d.ts +0 -13
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +0 -19
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +0 -54
- package/dist/admin/src/components/FormModalNavigation/useFormModalNavigation.d.ts +0 -1
- package/dist/admin/src/components/Status.d.ts +0 -6
- package/dist/admin/src/pages/ListView/EmptyState.d.ts +0 -1
- package/dist/server/controllers/schema.js +0 -55
- package/dist/server/controllers/schema.js.map +0 -1
- package/dist/server/controllers/schema.mjs +0 -53
- package/dist/server/controllers/schema.mjs.map +0 -1
- package/dist/server/controllers/validation/schema.js +0 -612
- package/dist/server/controllers/validation/schema.js.map +0 -1
- package/dist/server/controllers/validation/schema.mjs +0 -610
- package/dist/server/controllers/validation/schema.mjs.map +0 -1
- package/dist/server/services/schema.js +0 -246
- package/dist/server/services/schema.js.map +0 -1
- package/dist/server/services/schema.mjs +0 -242
- package/dist/server/services/schema.mjs.map +0 -1
- package/dist/server/src/controllers/schema.d.ts +0 -8
- package/dist/server/src/controllers/schema.d.ts.map +0 -1
- package/dist/server/src/controllers/validation/schema.d.ts +0 -80968
- package/dist/server/src/controllers/validation/schema.d.ts.map +0 -1
- package/dist/server/src/services/schema.d.ts +0 -2756
- package/dist/server/src/services/schema.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","sources":["../../../../server/src/controllers/validation/schema.ts"],"sourcesContent":["import { z } from 'zod';\nimport { strings, validateZod } 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) => snakeCase(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\nconst maxLengthGreaterThanMinLength: z.SuperRefinement<Record<string, unknown>> = (value, ctx) => {\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\nconst 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 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});\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});\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});\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,\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 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 )\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\nexport const validateUpdateSchema = validateZod(\n 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"],"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","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","basePropertiesSchema","object","configurable","boolean","nullish","private","pluginOptions","record","unknown","optional","maxLengthSchema","number","int","positive","minLengthSchema","requiredSchema","uniqueSchema","baseRelationSchema","literal","oneToOneSchema","extend","string","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","array","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","superRefine","createAttributeSchema","isReservedAttributeName","updateAttributeSchema","deleteAttributeSchema","contentTypeUIDSchema","componentUIDSchema","categorySchema","CATEGORY_NAME_REGEX","baseComponentSchema","uid","displayName","icon","ICON_REGEX","description","category","createComponentSchema","config","updateComponentSchema","deleteComponentSchema","baseContentTypeSchema","draftAndPublish","typeKinds","SINGLE_TYPE","COLLECTION_TYPE","baseCreateContentTypeSchema","collectionName","COLLECTION_NAME_REGEX","KEBAB_BASE_REGEX","isReservedModelName","createSingleTypeSchema","createCollectionTypeSchema","baseUpdateContentTypeSchema","updateSingleTypeSchema","updateCollectionTypeSchema","deleteContentTypeSchema","schemaSchema","contentTypes","validateUpdateSchema","validateZod","data","invalid_type_error","required_error"],"mappings":"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"}
|
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var utils = require('@strapi/utils');
|
|
4
|
-
var fp = require('lodash/fp');
|
|
5
|
-
var index = require('./schema-builder/index.js');
|
|
6
|
-
var index$1 = require('../utils/index.js');
|
|
7
|
-
var contentTypes = require('./content-types.js');
|
|
8
|
-
|
|
9
|
-
const removeEmptyDefaultsOnUpdates = (schema)=>{
|
|
10
|
-
schema.components.forEach((component)=>{
|
|
11
|
-
if (component.action === 'delete') {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
component.attributes.forEach((attribute)=>{
|
|
15
|
-
if (attribute.action === 'update') {
|
|
16
|
-
const { properties } = attribute;
|
|
17
|
-
if ('default' in properties && properties.default === '') {
|
|
18
|
-
properties.default = undefined;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
schema.contentTypes.forEach((contentType)=>{
|
|
24
|
-
if (contentType.action === 'delete') {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
contentType.attributes.forEach((attribute)=>{
|
|
28
|
-
if (attribute.action === 'update') {
|
|
29
|
-
const { properties } = attribute;
|
|
30
|
-
if ('default' in properties && properties.default === '') {
|
|
31
|
-
properties.default = undefined;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
const removeDeletedUIDTargetFieldsOnUpdates = (schema)=>{
|
|
38
|
-
schema.contentTypes.forEach((contentType)=>{
|
|
39
|
-
if (contentType.action === 'delete') {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
contentType.attributes.forEach((attribute)=>{
|
|
43
|
-
if (attribute.action === 'update') {
|
|
44
|
-
const { properties } = attribute;
|
|
45
|
-
if (properties.type === 'uid' && properties.targetField && !contentType.attributes.find((attr)=>attr.name === properties.targetField)) {
|
|
46
|
-
properties.targetField = undefined;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
const formatAttributes = (model)=>{
|
|
53
|
-
const { getVisibleAttributes } = utils.contentTypes;
|
|
54
|
-
// only get attributes that can be seen in the CTB
|
|
55
|
-
return getVisibleAttributes(model).map((key)=>{
|
|
56
|
-
return {
|
|
57
|
-
...formatAttribute(model.attributes[key]),
|
|
58
|
-
name: key
|
|
59
|
-
};
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
const formatAttribute = (attribute)=>{
|
|
63
|
-
if (attribute.type === 'relation') {
|
|
64
|
-
return {
|
|
65
|
-
...attribute,
|
|
66
|
-
targetAttribute: attribute.inversedBy || attribute.mappedBy || null
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
return attribute;
|
|
70
|
-
};
|
|
71
|
-
const getSchema = async ()=>{
|
|
72
|
-
const contentTypes$1 = fp.mapValues((contentType)=>{
|
|
73
|
-
const { uid, options, globalId, pluginOptions, kind, modelName, plugin, collectionName, info, modelType } = contentType;
|
|
74
|
-
return {
|
|
75
|
-
uid,
|
|
76
|
-
modelName,
|
|
77
|
-
kind,
|
|
78
|
-
globalId,
|
|
79
|
-
options,
|
|
80
|
-
pluginOptions,
|
|
81
|
-
plugin,
|
|
82
|
-
collectionName,
|
|
83
|
-
info,
|
|
84
|
-
modelType,
|
|
85
|
-
attributes: formatAttributes(contentType),
|
|
86
|
-
visible: contentTypes.isContentTypeVisible(contentType),
|
|
87
|
-
restrictRelationsTo: contentTypes.getRestrictRelationsTo(contentType)
|
|
88
|
-
};
|
|
89
|
-
}, strapi.contentTypes);
|
|
90
|
-
const components = fp.mapValues((component)=>{
|
|
91
|
-
const { uid, globalId, modelName, collectionName, info, category, modelType } = component;
|
|
92
|
-
return {
|
|
93
|
-
uid,
|
|
94
|
-
modelName,
|
|
95
|
-
globalId,
|
|
96
|
-
modelType,
|
|
97
|
-
collectionName,
|
|
98
|
-
category,
|
|
99
|
-
info,
|
|
100
|
-
attributes: formatAttributes(component)
|
|
101
|
-
};
|
|
102
|
-
}, strapi.components);
|
|
103
|
-
return {
|
|
104
|
-
contentTypes: contentTypes$1,
|
|
105
|
-
components
|
|
106
|
-
};
|
|
107
|
-
};
|
|
108
|
-
const updateSchema = async (schema)=>{
|
|
109
|
-
const builder = index();
|
|
110
|
-
const apiHandler = index$1.getService('api-handler');
|
|
111
|
-
const { components, contentTypes } = schema;
|
|
112
|
-
// pre-process data
|
|
113
|
-
removeEmptyDefaultsOnUpdates(schema);
|
|
114
|
-
removeDeletedUIDTargetFieldsOnUpdates(schema);
|
|
115
|
-
// we pre create empty typesk
|
|
116
|
-
for (const contentType of contentTypes){
|
|
117
|
-
if (contentType.action === 'create') {
|
|
118
|
-
builder.createContentType({
|
|
119
|
-
...contentType,
|
|
120
|
-
attributes: {}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
// we pre create empty types
|
|
125
|
-
for (const component of components){
|
|
126
|
-
if (component.action === 'create') {
|
|
127
|
-
builder.createComponent({
|
|
128
|
-
...component,
|
|
129
|
-
attributes: {}
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
for (const contentType of contentTypes){
|
|
134
|
-
const { action, uid } = contentType;
|
|
135
|
-
if (action === 'create') {
|
|
136
|
-
builder.createContentTypeAttributes(uid, contentType.attributes.reduce((acc, attr)=>{
|
|
137
|
-
acc[attr.name] = attr.properties;
|
|
138
|
-
return acc;
|
|
139
|
-
}, {}));
|
|
140
|
-
await index$1.getService('content-types').generateAPI({
|
|
141
|
-
displayName: contentType.displayName,
|
|
142
|
-
singularName: contentType.singularName,
|
|
143
|
-
pluralName: contentType.pluralName,
|
|
144
|
-
kind: contentType.kind
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
if (action === 'update') {
|
|
148
|
-
builder.editContentType({
|
|
149
|
-
...contentType,
|
|
150
|
-
attributes: contentType.attributes.reduce((acc, attr)=>{
|
|
151
|
-
// NOTE: handle renaming migrations here by comparing attr name & attr.properties.name
|
|
152
|
-
if (attr.action === 'delete') {
|
|
153
|
-
return acc;
|
|
154
|
-
}
|
|
155
|
-
acc[attr.name] = attr.properties;
|
|
156
|
-
return acc;
|
|
157
|
-
}, {})
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
if (action === 'delete') {
|
|
161
|
-
builder.deleteContentType(uid);
|
|
162
|
-
await apiHandler.backup(uid);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
for (const component of components){
|
|
166
|
-
const { action, uid } = component;
|
|
167
|
-
if (action === 'create') {
|
|
168
|
-
builder.createComponentAttributes(uid, component.attributes.reduce((acc, attr)=>{
|
|
169
|
-
acc[attr.name] = attr.properties;
|
|
170
|
-
return acc;
|
|
171
|
-
}, {}));
|
|
172
|
-
}
|
|
173
|
-
if (action === 'update') {
|
|
174
|
-
builder.editComponent({
|
|
175
|
-
...component,
|
|
176
|
-
attributes: component.attributes.reduce((acc, attr)=>{
|
|
177
|
-
if (attr.action === 'delete') {
|
|
178
|
-
return acc;
|
|
179
|
-
}
|
|
180
|
-
acc[attr.name] = attr.properties;
|
|
181
|
-
return acc;
|
|
182
|
-
}, {})
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
if (action === 'delete') {
|
|
186
|
-
builder.deleteComponent(uid);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
// run sanity checks on the schema
|
|
190
|
-
// Relations target existing types
|
|
191
|
-
// Bidirectional relation have their counterpart in the schema
|
|
192
|
-
// Components target existing components
|
|
193
|
-
// Nested components target existing components
|
|
194
|
-
// Dynamic zones target existing components
|
|
195
|
-
const APIsToDelete = contentTypes.filter((ct)=>ct.action === 'delete').map((ct)=>ct.uid);
|
|
196
|
-
await builder.writeFiles();
|
|
197
|
-
try {
|
|
198
|
-
for (const uid of APIsToDelete){
|
|
199
|
-
await apiHandler.clear(uid);
|
|
200
|
-
}
|
|
201
|
-
} catch (error) {
|
|
202
|
-
strapi.log.error(error);
|
|
203
|
-
for (const uid of APIsToDelete){
|
|
204
|
-
await apiHandler.rollback(uid);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
for (const contentType of contentTypes){
|
|
208
|
-
if (contentType.action === 'delete') {
|
|
209
|
-
strapi.eventHub.emit('content-type.delete', {
|
|
210
|
-
contentType: builder.contentTypes.get(contentType.uid)
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
if (contentType.action === 'update') {
|
|
214
|
-
strapi.eventHub.emit('content-type.update', {
|
|
215
|
-
contentType: builder.contentTypes.get(contentType.uid)
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
if (contentType.action === 'create') {
|
|
219
|
-
strapi.eventHub.emit('content-type.create', {
|
|
220
|
-
contentType: builder.contentTypes.get(contentType.uid)
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
for (const component of components){
|
|
225
|
-
if (component.action === 'delete') {
|
|
226
|
-
strapi.eventHub.emit('component.delete', {
|
|
227
|
-
component: builder.components.get(component.uid)
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
if (component.action === 'update') {
|
|
231
|
-
strapi.eventHub.emit('component.update', {
|
|
232
|
-
component: builder.components.get(component.uid)
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
if (component.action === 'create') {
|
|
236
|
-
strapi.eventHub.emit('component.create', {
|
|
237
|
-
component: builder.components.get(component.uid)
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
exports.formatAttribute = formatAttribute;
|
|
244
|
-
exports.getSchema = getSchema;
|
|
245
|
-
exports.updateSchema = updateSchema;
|
|
246
|
-
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sources":["../../../server/src/services/schema.ts"],"sourcesContent":["import utils from '@strapi/utils';\nimport { mapValues } from 'lodash/fp';\n\nimport type { Schema } from '@strapi/types';\n\nimport createBuilder from './schema-builder';\nimport { getService } from '../utils';\nimport type { Schema as CTBSchema } from '../controllers/validation/schema';\nimport { getRestrictRelationsTo, isContentTypeVisible } from './content-types';\n\nconst removeEmptyDefaultsOnUpdates = (schema: CTBSchema) => {\n schema.components.forEach((component) => {\n if (component.action === 'delete') {\n return;\n }\n\n component.attributes.forEach((attribute) => {\n if (attribute.action === 'update') {\n const { properties } = attribute;\n\n if ('default' in properties && properties.default === '') {\n properties.default = undefined;\n }\n }\n });\n });\n\n schema.contentTypes.forEach((contentType) => {\n if (contentType.action === 'delete') {\n return;\n }\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.action === 'update') {\n const { properties } = attribute;\n\n if ('default' in properties && properties.default === '') {\n properties.default = undefined;\n }\n }\n });\n });\n};\n\nconst removeDeletedUIDTargetFieldsOnUpdates = (schema: CTBSchema) => {\n schema.contentTypes.forEach((contentType) => {\n if (contentType.action === 'delete') {\n return;\n }\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.action === 'update') {\n const { properties } = attribute;\n\n if (\n properties.type === 'uid' &&\n properties.targetField &&\n !contentType.attributes.find((attr) => attr.name === properties.targetField)\n ) {\n properties.targetField = undefined;\n }\n }\n });\n });\n};\n\nconst formatAttributes = (model: any) => {\n const { getVisibleAttributes } = utils.contentTypes;\n\n // only get attributes that can be seen in the CTB\n return getVisibleAttributes(model).map((key) => {\n return { ...formatAttribute(model.attributes[key]), name: key };\n });\n};\n\nexport const formatAttribute = (attribute: Schema.Attribute.AnyAttribute & Record<string, any>) => {\n if (attribute.type === 'relation') {\n return {\n ...attribute,\n targetAttribute: attribute.inversedBy || attribute.mappedBy || null,\n };\n }\n\n return attribute;\n};\n\nexport const getSchema = async () => {\n const contentTypes = mapValues((contentType) => {\n const {\n uid,\n options,\n globalId,\n pluginOptions,\n kind,\n modelName,\n plugin,\n collectionName,\n info,\n modelType,\n } = contentType;\n\n return {\n uid,\n modelName,\n kind,\n globalId,\n options,\n pluginOptions,\n plugin,\n collectionName,\n info,\n modelType,\n attributes: formatAttributes(contentType),\n visible: isContentTypeVisible(contentType),\n restrictRelationsTo: getRestrictRelationsTo(contentType),\n };\n }, strapi.contentTypes);\n\n const components = mapValues((component) => {\n const { uid, globalId, modelName, collectionName, info, category, modelType } = component;\n\n return {\n uid,\n modelName,\n globalId,\n modelType,\n collectionName,\n category,\n info,\n attributes: formatAttributes(component),\n };\n }, strapi.components);\n\n return {\n contentTypes,\n components,\n };\n};\n\nexport const updateSchema = async (schema: CTBSchema) => {\n const builder = createBuilder();\n const apiHandler = getService('api-handler');\n\n const { components, contentTypes } = schema;\n\n // pre-process data\n removeEmptyDefaultsOnUpdates(schema);\n removeDeletedUIDTargetFieldsOnUpdates(schema);\n\n // we pre create empty typesk\n for (const contentType of contentTypes) {\n if (contentType.action === 'create') {\n builder.createContentType({\n ...contentType,\n attributes: {},\n });\n }\n }\n\n // we pre create empty types\n for (const component of components) {\n if (component.action === 'create') {\n builder.createComponent({\n ...component,\n attributes: {},\n });\n }\n }\n\n for (const contentType of contentTypes) {\n const { action, uid } = contentType;\n\n if (action === 'create') {\n builder.createContentTypeAttributes(\n uid,\n contentType.attributes.reduce((acc: any, attr: any) => {\n acc[attr.name] = attr.properties;\n return acc;\n }, {})\n );\n\n await getService('content-types').generateAPI({\n displayName: contentType!.displayName,\n singularName: contentType!.singularName,\n pluralName: contentType!.pluralName,\n kind: contentType!.kind,\n });\n }\n\n if (action === 'update') {\n builder.editContentType({\n ...contentType,\n attributes: contentType.attributes.reduce((acc: any, attr: any) => {\n // NOTE: handle renaming migrations here by comparing attr name & attr.properties.name\n\n if (attr.action === 'delete') {\n return acc;\n }\n\n acc[attr.name] = attr.properties;\n return acc;\n }, {}),\n });\n }\n\n if (action === 'delete') {\n builder.deleteContentType(uid);\n await apiHandler.backup(uid);\n }\n }\n\n for (const component of components) {\n const { action, uid } = component;\n\n if (action === 'create') {\n builder.createComponentAttributes(\n uid,\n component.attributes.reduce((acc: any, attr: any) => {\n acc[attr.name] = attr.properties;\n return acc;\n }, {})\n );\n }\n\n if (action === 'update') {\n builder.editComponent({\n ...component,\n attributes: component.attributes.reduce((acc: any, attr: any) => {\n if (attr.action === 'delete') {\n return acc;\n }\n\n acc[attr.name] = attr.properties;\n return acc;\n }, {}),\n });\n }\n\n if (action === 'delete') {\n builder.deleteComponent(uid);\n }\n }\n\n // run sanity checks on the schema\n // Relations target existing types\n // Bidirectional relation have their counterpart in the schema\n // Components target existing components\n // Nested components target existing components\n // Dynamic zones target existing components\n\n const APIsToDelete = contentTypes\n .filter((ct: any) => ct.action === 'delete')\n .map((ct: any) => ct.uid);\n\n await builder.writeFiles();\n\n try {\n for (const uid of APIsToDelete) {\n await apiHandler.clear(uid);\n }\n } catch (error) {\n strapi.log.error(error);\n for (const uid of APIsToDelete) {\n await apiHandler.rollback(uid);\n }\n }\n\n for (const contentType of contentTypes) {\n if (contentType.action === 'delete') {\n strapi.eventHub.emit('content-type.delete', {\n contentType: builder.contentTypes.get(contentType.uid),\n });\n }\n\n if (contentType.action === 'update') {\n strapi.eventHub.emit('content-type.update', {\n contentType: builder.contentTypes.get(contentType.uid),\n });\n }\n\n if (contentType.action === 'create') {\n strapi.eventHub.emit('content-type.create', {\n contentType: builder.contentTypes.get(contentType.uid),\n });\n }\n }\n\n for (const component of components) {\n if (component.action === 'delete') {\n strapi.eventHub.emit('component.delete', {\n component: builder.components.get(component.uid),\n });\n }\n\n if (component.action === 'update') {\n strapi.eventHub.emit('component.update', {\n component: builder.components.get(component.uid),\n });\n }\n\n if (component.action === 'create') {\n strapi.eventHub.emit('component.create', {\n component: builder.components.get(component.uid),\n });\n }\n }\n};\n"],"names":["removeEmptyDefaultsOnUpdates","schema","components","forEach","component","action","attributes","attribute","properties","default","undefined","contentTypes","contentType","removeDeletedUIDTargetFieldsOnUpdates","type","targetField","find","attr","name","formatAttributes","model","getVisibleAttributes","utils","map","key","formatAttribute","targetAttribute","inversedBy","mappedBy","getSchema","mapValues","uid","options","globalId","pluginOptions","kind","modelName","plugin","collectionName","info","modelType","visible","isContentTypeVisible","restrictRelationsTo","getRestrictRelationsTo","strapi","category","updateSchema","builder","createBuilder","apiHandler","getService","createContentType","createComponent","createContentTypeAttributes","reduce","acc","generateAPI","displayName","singularName","pluralName","editContentType","deleteContentType","backup","createComponentAttributes","editComponent","deleteComponent","APIsToDelete","filter","ct","writeFiles","clear","error","log","rollback","eventHub","emit","get"],"mappings":"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"}
|
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import utils from '@strapi/utils';
|
|
2
|
-
import { mapValues } from 'lodash/fp';
|
|
3
|
-
import createBuilder from './schema-builder/index.mjs';
|
|
4
|
-
import { getService } from '../utils/index.mjs';
|
|
5
|
-
import { isContentTypeVisible, getRestrictRelationsTo } from './content-types.mjs';
|
|
6
|
-
|
|
7
|
-
const removeEmptyDefaultsOnUpdates = (schema)=>{
|
|
8
|
-
schema.components.forEach((component)=>{
|
|
9
|
-
if (component.action === 'delete') {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
component.attributes.forEach((attribute)=>{
|
|
13
|
-
if (attribute.action === 'update') {
|
|
14
|
-
const { properties } = attribute;
|
|
15
|
-
if ('default' in properties && properties.default === '') {
|
|
16
|
-
properties.default = undefined;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
schema.contentTypes.forEach((contentType)=>{
|
|
22
|
-
if (contentType.action === 'delete') {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
contentType.attributes.forEach((attribute)=>{
|
|
26
|
-
if (attribute.action === 'update') {
|
|
27
|
-
const { properties } = attribute;
|
|
28
|
-
if ('default' in properties && properties.default === '') {
|
|
29
|
-
properties.default = undefined;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
const removeDeletedUIDTargetFieldsOnUpdates = (schema)=>{
|
|
36
|
-
schema.contentTypes.forEach((contentType)=>{
|
|
37
|
-
if (contentType.action === 'delete') {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
contentType.attributes.forEach((attribute)=>{
|
|
41
|
-
if (attribute.action === 'update') {
|
|
42
|
-
const { properties } = attribute;
|
|
43
|
-
if (properties.type === 'uid' && properties.targetField && !contentType.attributes.find((attr)=>attr.name === properties.targetField)) {
|
|
44
|
-
properties.targetField = undefined;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
const formatAttributes = (model)=>{
|
|
51
|
-
const { getVisibleAttributes } = utils.contentTypes;
|
|
52
|
-
// only get attributes that can be seen in the CTB
|
|
53
|
-
return getVisibleAttributes(model).map((key)=>{
|
|
54
|
-
return {
|
|
55
|
-
...formatAttribute(model.attributes[key]),
|
|
56
|
-
name: key
|
|
57
|
-
};
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
const formatAttribute = (attribute)=>{
|
|
61
|
-
if (attribute.type === 'relation') {
|
|
62
|
-
return {
|
|
63
|
-
...attribute,
|
|
64
|
-
targetAttribute: attribute.inversedBy || attribute.mappedBy || null
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
return attribute;
|
|
68
|
-
};
|
|
69
|
-
const getSchema = async ()=>{
|
|
70
|
-
const contentTypes = mapValues((contentType)=>{
|
|
71
|
-
const { uid, options, globalId, pluginOptions, kind, modelName, plugin, collectionName, info, modelType } = contentType;
|
|
72
|
-
return {
|
|
73
|
-
uid,
|
|
74
|
-
modelName,
|
|
75
|
-
kind,
|
|
76
|
-
globalId,
|
|
77
|
-
options,
|
|
78
|
-
pluginOptions,
|
|
79
|
-
plugin,
|
|
80
|
-
collectionName,
|
|
81
|
-
info,
|
|
82
|
-
modelType,
|
|
83
|
-
attributes: formatAttributes(contentType),
|
|
84
|
-
visible: isContentTypeVisible(contentType),
|
|
85
|
-
restrictRelationsTo: getRestrictRelationsTo(contentType)
|
|
86
|
-
};
|
|
87
|
-
}, strapi.contentTypes);
|
|
88
|
-
const components = mapValues((component)=>{
|
|
89
|
-
const { uid, globalId, modelName, collectionName, info, category, modelType } = component;
|
|
90
|
-
return {
|
|
91
|
-
uid,
|
|
92
|
-
modelName,
|
|
93
|
-
globalId,
|
|
94
|
-
modelType,
|
|
95
|
-
collectionName,
|
|
96
|
-
category,
|
|
97
|
-
info,
|
|
98
|
-
attributes: formatAttributes(component)
|
|
99
|
-
};
|
|
100
|
-
}, strapi.components);
|
|
101
|
-
return {
|
|
102
|
-
contentTypes,
|
|
103
|
-
components
|
|
104
|
-
};
|
|
105
|
-
};
|
|
106
|
-
const updateSchema = async (schema)=>{
|
|
107
|
-
const builder = createBuilder();
|
|
108
|
-
const apiHandler = getService('api-handler');
|
|
109
|
-
const { components, contentTypes } = schema;
|
|
110
|
-
// pre-process data
|
|
111
|
-
removeEmptyDefaultsOnUpdates(schema);
|
|
112
|
-
removeDeletedUIDTargetFieldsOnUpdates(schema);
|
|
113
|
-
// we pre create empty typesk
|
|
114
|
-
for (const contentType of contentTypes){
|
|
115
|
-
if (contentType.action === 'create') {
|
|
116
|
-
builder.createContentType({
|
|
117
|
-
...contentType,
|
|
118
|
-
attributes: {}
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
// we pre create empty types
|
|
123
|
-
for (const component of components){
|
|
124
|
-
if (component.action === 'create') {
|
|
125
|
-
builder.createComponent({
|
|
126
|
-
...component,
|
|
127
|
-
attributes: {}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
for (const contentType of contentTypes){
|
|
132
|
-
const { action, uid } = contentType;
|
|
133
|
-
if (action === 'create') {
|
|
134
|
-
builder.createContentTypeAttributes(uid, contentType.attributes.reduce((acc, attr)=>{
|
|
135
|
-
acc[attr.name] = attr.properties;
|
|
136
|
-
return acc;
|
|
137
|
-
}, {}));
|
|
138
|
-
await getService('content-types').generateAPI({
|
|
139
|
-
displayName: contentType.displayName,
|
|
140
|
-
singularName: contentType.singularName,
|
|
141
|
-
pluralName: contentType.pluralName,
|
|
142
|
-
kind: contentType.kind
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
if (action === 'update') {
|
|
146
|
-
builder.editContentType({
|
|
147
|
-
...contentType,
|
|
148
|
-
attributes: contentType.attributes.reduce((acc, attr)=>{
|
|
149
|
-
// NOTE: handle renaming migrations here by comparing attr name & attr.properties.name
|
|
150
|
-
if (attr.action === 'delete') {
|
|
151
|
-
return acc;
|
|
152
|
-
}
|
|
153
|
-
acc[attr.name] = attr.properties;
|
|
154
|
-
return acc;
|
|
155
|
-
}, {})
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
if (action === 'delete') {
|
|
159
|
-
builder.deleteContentType(uid);
|
|
160
|
-
await apiHandler.backup(uid);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
for (const component of components){
|
|
164
|
-
const { action, uid } = component;
|
|
165
|
-
if (action === 'create') {
|
|
166
|
-
builder.createComponentAttributes(uid, component.attributes.reduce((acc, attr)=>{
|
|
167
|
-
acc[attr.name] = attr.properties;
|
|
168
|
-
return acc;
|
|
169
|
-
}, {}));
|
|
170
|
-
}
|
|
171
|
-
if (action === 'update') {
|
|
172
|
-
builder.editComponent({
|
|
173
|
-
...component,
|
|
174
|
-
attributes: component.attributes.reduce((acc, attr)=>{
|
|
175
|
-
if (attr.action === 'delete') {
|
|
176
|
-
return acc;
|
|
177
|
-
}
|
|
178
|
-
acc[attr.name] = attr.properties;
|
|
179
|
-
return acc;
|
|
180
|
-
}, {})
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
if (action === 'delete') {
|
|
184
|
-
builder.deleteComponent(uid);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
// run sanity checks on the schema
|
|
188
|
-
// Relations target existing types
|
|
189
|
-
// Bidirectional relation have their counterpart in the schema
|
|
190
|
-
// Components target existing components
|
|
191
|
-
// Nested components target existing components
|
|
192
|
-
// Dynamic zones target existing components
|
|
193
|
-
const APIsToDelete = contentTypes.filter((ct)=>ct.action === 'delete').map((ct)=>ct.uid);
|
|
194
|
-
await builder.writeFiles();
|
|
195
|
-
try {
|
|
196
|
-
for (const uid of APIsToDelete){
|
|
197
|
-
await apiHandler.clear(uid);
|
|
198
|
-
}
|
|
199
|
-
} catch (error) {
|
|
200
|
-
strapi.log.error(error);
|
|
201
|
-
for (const uid of APIsToDelete){
|
|
202
|
-
await apiHandler.rollback(uid);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
for (const contentType of contentTypes){
|
|
206
|
-
if (contentType.action === 'delete') {
|
|
207
|
-
strapi.eventHub.emit('content-type.delete', {
|
|
208
|
-
contentType: builder.contentTypes.get(contentType.uid)
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
if (contentType.action === 'update') {
|
|
212
|
-
strapi.eventHub.emit('content-type.update', {
|
|
213
|
-
contentType: builder.contentTypes.get(contentType.uid)
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
if (contentType.action === 'create') {
|
|
217
|
-
strapi.eventHub.emit('content-type.create', {
|
|
218
|
-
contentType: builder.contentTypes.get(contentType.uid)
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
for (const component of components){
|
|
223
|
-
if (component.action === 'delete') {
|
|
224
|
-
strapi.eventHub.emit('component.delete', {
|
|
225
|
-
component: builder.components.get(component.uid)
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
if (component.action === 'update') {
|
|
229
|
-
strapi.eventHub.emit('component.update', {
|
|
230
|
-
component: builder.components.get(component.uid)
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
if (component.action === 'create') {
|
|
234
|
-
strapi.eventHub.emit('component.create', {
|
|
235
|
-
component: builder.components.get(component.uid)
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
export { formatAttribute, getSchema, updateSchema };
|
|
242
|
-
//# sourceMappingURL=schema.mjs.map
|