@strapi/content-type-builder 5.48.1 → 5.50.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/AIChat/components/Messages/Message.js +5 -1
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/SimpleMenu.js +3 -2
- package/dist/admin/components/AIChat/components/SimpleMenu.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useCodeUpload.js +7 -2
- package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +11 -5
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.js +5 -1
- package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
- package/dist/admin/components/AttributeOptions/EmptyAttributes.js +3 -2
- package/dist/admin/components/AttributeOptions/EmptyAttributes.js.map +1 -1
- package/dist/admin/components/AttributeRow.js +10 -5
- package/dist/admin/components/AttributeRow.js.map +1 -1
- package/dist/admin/components/AutoReloadOverlayBlocker.js +3 -2
- package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js +5 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentList.js +5 -1
- package/dist/admin/components/ComponentList.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +5 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +12 -6
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +7 -2
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.js +10 -4
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js +5 -1
- package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js +5 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js +30 -22
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js +3 -2
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.js +7 -3
- package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js +8 -4
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/component/createComponentSchema.js +4 -3
- 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/contentType/createContentTypeSchema.js +3 -2
- package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/createCollectionName.js +5 -1
- package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +32 -26
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModalHeader.js +6 -2
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js +3 -2
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
- package/dist/admin/components/FormModalSubHeader.js +6 -2
- package/dist/admin/components/FormModalSubHeader.js.map +1 -1
- package/dist/admin/components/GenericInputs.js +9 -4
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/IconPicker/constants.js +4 -3
- package/dist/admin/components/IconPicker/constants.js.map +1 -1
- package/dist/admin/components/PluralName.js +5 -1
- package/dist/admin/components/PluralName.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js +13 -7
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
- package/dist/admin/components/TabForm.js +7 -3
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.js +5 -1
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/src/components/AIChat/components/AnimatedBox.d.ts +4 -5
- package/dist/admin/src/components/AIChat/components/Attachments/AttachmentPreview.d.ts +1 -1
- package/dist/admin/src/components/AIChat/components/Dropzone.d.ts +0 -1
- package/dist/admin/src/components/AIChat/components/FloatingPanel.d.ts +0 -1
- package/dist/admin/src/components/AIChat/components/Input.d.ts +2 -3
- package/dist/admin/src/components/AIChat/components/ResizableTextArea.d.ts +0 -1
- package/dist/admin/src/components/AIChat/components/SimpleMenu.d.ts +9 -9
- package/dist/admin/src/components/AIChat/components/icons/FigmaIcon.d.ts +0 -1
- package/dist/admin/src/components/AIChat/components/icons/StopIcon.d.ts +0 -1
- package/dist/admin/src/components/AIChat/hooks/useAIFetch.d.ts +5 -5
- package/dist/admin/src/components/AttributeOptions/OptionBoxWrapper.d.ts +2 -3
- package/dist/admin/src/components/AttributeRow.d.ts +7 -8
- package/dist/admin/src/components/CTBSession/sessionContext.d.ts +0 -1
- package/dist/admin/src/components/ComponentRow.d.ts +6 -7
- package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +0 -1
- package/dist/admin/src/components/CustomRadioGroup/Styles.d.ts +3 -4
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +0 -1
- package/dist/admin/src/components/DataManager/reducer.d.ts +2 -2
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +56 -56
- package/dist/admin/src/components/FormModal/attributes/form.d.ts +3 -3
- package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +1 -1
- package/dist/admin/src/components/FormModal/forms/forms.d.ts +2 -2
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +0 -1
- package/dist/admin/src/components/List.d.ts +2 -3
- package/dist/admin/src/components/Relation/RelationNaturePicker/Components.d.ts +6 -7
- package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +0 -1
- package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +1 -1
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +109 -50
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +109 -50
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js +11 -6
- package/dist/admin/utils/formAPI.js.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/nameToSlug.js +5 -1
- package/dist/admin/utils/nameToSlug.js.map +1 -1
- package/dist/admin/utils/toRegressedEnumValue.js +5 -1
- package/dist/admin/utils/toRegressedEnumValue.js.map +1 -1
- package/dist/server/controllers/components.js +6 -2
- package/dist/server/controllers/components.js.map +1 -1
- package/dist/server/controllers/content-types.js +8 -4
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/validation/common.js +6 -2
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +1 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/component.js +9 -5
- package/dist/server/controllers/validation/component.js.map +1 -1
- package/dist/server/controllers/validation/data-transform.js +6 -2
- package/dist/server/controllers/validation/data-transform.js.map +1 -1
- package/dist/server/controllers/validation/model-schema.js +6 -2
- package/dist/server/controllers/validation/model-schema.js.map +1 -1
- package/dist/server/controllers/validation/types.js +8 -4
- package/dist/server/controllers/validation/types.js.map +1 -1
- package/dist/server/routes/content-api.js +3 -2
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/services/api-handler.js +4 -3
- package/dist/server/services/api-handler.js.map +1 -1
- package/dist/server/services/api-handler.mjs.map +1 -1
- package/dist/server/services/components.js.map +1 -1
- package/dist/server/services/components.mjs.map +1 -1
- package/dist/server/services/content-types.js +8 -4
- package/dist/server/services/content-types.js.map +1 -1
- package/dist/server/services/schema-builder/component-builder.js +11 -5
- package/dist/server/services/schema-builder/component-builder.js.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.js +13 -8
- package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
- package/dist/server/services/schema-builder/index.js +5 -1
- package/dist/server/services/schema-builder/index.js.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.js +35 -29
- package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
- package/dist/server/services/schema.js +5 -1
- package/dist/server/services/schema.js.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/component-category.d.ts +1 -1
- package/dist/server/src/controllers/validation/component.d.ts +1 -1
- package/dist/server/src/controllers/validation/component.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-type.d.ts +1 -1
- package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/data-transform.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/model-schema.d.ts +1 -1
- package/dist/server/src/controllers/validation/model-schema.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +1 -1
- package/dist/server/src/controllers/validation/types.d.ts.map +1 -1
- package/dist/server/src/middlewares/is-development-mode.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/builder.d.ts.map +1 -1
- package/dist/server/src/services/component-categories.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +3 -26
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/content-types.d.ts +1 -1
- package/dist/server/src/services/content-types.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/component-builder.d.ts +12 -12
- 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 +14 -14
- 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 +27 -27
- package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/schema-handler.d.ts +13 -12
- package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -1
- package/dist/server/src/services/schema.d.ts +66 -66
- package/dist/server/src/services/schema.d.ts.map +1 -1
- package/dist/server/src/utils/attributes.d.ts +2 -2
- package/dist/server/src/utils/attributes.d.ts.map +1 -1
- package/dist/server/src/utils/helpers.d.ts.map +1 -1
- package/dist/server/src/utils/typeguards.d.ts.map +1 -1
- package/dist/server/utils/attributes.js +12 -7
- package/dist/server/utils/attributes.js.map +1 -1
- package/package.json +12 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-types.js","sources":["../../../server/src/controllers/content-types.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Context } from 'koa';\nimport type {} from 'koa-body';\nimport type { Internal } from '@strapi/types';\nimport { getService } from '../utils';\nimport {\n validateContentTypeInput,\n validateUpdateContentTypeInput,\n validateKind,\n} from './validation/content-type';\nimport { isContentTypeVisible } from '../services/content-types';\n\n/**\n * Telemetry uses a bounded HTTP timeout (~1s in the metrics sender); cap how long we defer\n * dev reload so a stuck client cannot block restart indefinitely.\n */\nconst RELOAD_AFTER_TELEMETRY_MAX_MS = 2500;\n\nconst scheduleReloadAfterOutboundTelemetry = (sendPromise: Promise<unknown>): void => {\n setImmediate(() => {\n const settled = sendPromise.catch(() => {});\n Promise.race([\n settled,\n new Promise<void>((resolve) => {\n setTimeout(resolve, RELOAD_AFTER_TELEMETRY_MAX_MS);\n }),\n ])\n .catch(() => {})\n .finally(() => {\n strapi.reload();\n });\n });\n};\n\nexport default {\n async getContentTypes(ctx: Context) {\n const { kind } = ctx.query;\n\n try {\n await validateKind(kind);\n } catch (error) {\n return ctx.send({ error }, 400);\n }\n\n const contentTypeService = getService('content-types');\n\n const contentTypes = Object.keys(strapi.contentTypes)\n .filter(\n (uid) =>\n !kind ||\n _.get(strapi.contentTypes[uid as Internal.UID.ContentType], 'kind', 'collectionType') ===\n kind\n )\n .map((uid) =>\n contentTypeService.formatContentType(strapi.contentTypes[uid as Internal.UID.ContentType])\n );\n\n ctx.send({\n data: contentTypes,\n });\n },\n\n getContentType(ctx: Context) {\n const { uid } = ctx.params;\n\n const contentType = strapi.contentTypes[uid];\n\n if (!contentType) {\n return ctx.send({ error: 'contentType.notFound' }, 404);\n }\n\n if (!isContentTypeVisible(contentType)) {\n return ctx.send({ error: 'contentType.notFound' }, 404);\n }\n\n const contentTypeService = getService('content-types');\n\n ctx.send({ data: contentTypeService.formatContentType(contentType) });\n },\n\n async createContentType(ctx: Context) {\n const body = ctx.request.body as any;\n\n try {\n await validateContentTypeInput(body);\n } catch (error) {\n return ctx.send({ error }, 400);\n }\n\n try {\n strapi.reload.isWatching = false;\n\n const contentTypeService = getService('content-types');\n\n const contentType = await contentTypeService.createContentType({\n contentType: body.contentType,\n components: body.components,\n });\n\n const metricsPayload = {\n eventProperties: {\n kind: contentType.kind,\n },\n };\n\n const telemetryPromise = _.isEmpty(strapi.apis)\n ? strapi.telemetry.send('didCreateFirstContentType', metricsPayload)\n : strapi.telemetry.send('didCreateContentType', metricsPayload);\n\n scheduleReloadAfterOutboundTelemetry(telemetryPromise);\n\n ctx.send({ data: { uid: contentType.uid } }, 201);\n } catch (err) {\n strapi.log.error(err);\n strapi.telemetry\n .send('didNotCreateContentType', {\n eventProperties: { error: (err as Error).message || err },\n })\n .catch(() => {});\n ctx.send({ error: (err as Error).message || 'Unknown error' }, 400);\n }\n },\n\n async updateContentType(ctx: Context) {\n const { uid } = ctx.params;\n const body = ctx.request.body as any;\n\n if (!_.has(strapi.contentTypes, uid)) {\n return ctx.send({ error: 'contentType.notFound' }, 404);\n }\n\n try {\n await validateUpdateContentTypeInput(body);\n } catch (error) {\n return ctx.send({ error }, 400);\n }\n\n try {\n strapi.reload.isWatching = false;\n\n const contentTypeService = getService('content-types');\n\n const component = await contentTypeService.editContentType(uid, {\n contentType: body.contentType,\n components: body.components,\n });\n\n setImmediate(() => strapi.reload());\n\n ctx.send({ data: { uid: component.uid } }, 201);\n } catch (error) {\n strapi.log.error(error);\n ctx.send({ error: (error as Error)?.message || 'Unknown error' }, 400);\n }\n },\n\n async deleteContentType(ctx: Context) {\n const { uid } = ctx.params;\n\n if (!_.has(strapi.contentTypes, uid)) {\n return ctx.send({ error: 'contentType.notFound' }, 404);\n }\n\n try {\n strapi.reload.isWatching = false;\n\n const contentTypeService = getService('content-types');\n\n const component = await contentTypeService.deleteContentType(uid);\n\n setImmediate(() => strapi.reload());\n\n ctx.send({ data: { uid: component.uid } });\n } catch (error) {\n strapi.log.error(error);\n ctx.send({ error: (error as Error)?.message || 'Unknown error' }, 400);\n }\n },\n};\n"],"names":["RELOAD_AFTER_TELEMETRY_MAX_MS","scheduleReloadAfterOutboundTelemetry","sendPromise","setImmediate","settled","catch","Promise","race","resolve","setTimeout","finally","strapi","reload","getContentTypes","ctx","kind","query","validateKind","error","send","contentTypeService","getService","contentTypes","Object","keys","filter","uid","_","get","map","formatContentType","data","getContentType","params","contentType","isContentTypeVisible","createContentType","body","request","validateContentTypeInput","isWatching","components","metricsPayload","eventProperties","telemetryPromise","isEmpty","apis","telemetry","err","log","message","updateContentType","has","validateUpdateContentTypeInput","component","editContentType","deleteContentType"],"mappings":";;;;;;;AAYA;;;AAGC,IACD,MAAMA,6BAAAA,GAAgC,IAAA;AAEtC,MAAMC,uCAAuC,CAACC,WAAAA,GAAAA;IAC5CC,YAAAA,CAAa,IAAA;AACX,QAAA,MAAMC,OAAAA,GAAUF,WAAAA,CAAYG,KAAK,CAAC,IAAA,CAAO,CAAA,CAAA;AACzCC,QAAAA,OAAAA,CAAQC,IAAI,CAAC;AACXH,YAAAA,OAAAA;AACA,YAAA,IAAIE,QAAc,CAACE,OAAAA,GAAAA;AACjBC,gBAAAA,UAAAA,CAAWD,OAAAA,EAASR,6BAAAA,CAAAA;AACtB,YAAA,CAAA;AACD,SAAA,CAAA,CACEK,KAAK,CAAC,IAAA,CAAO,CAAA,CAAA,CACbK,OAAO,CAAC,IAAA;AACPC,YAAAA,MAAAA,CAAOC,MAAM,EAAA;AACf,QAAA,CAAA,CAAA;AACJ,IAAA,CAAA,CAAA;AACF,CAAA;AAEA,mBAAe;AACb,IAAA,MAAMC,iBAAgBC,GAAY,EAAA;AAChC,QAAA,MAAM,EAAEC,IAAI,EAAE,GAAGD,IAAIE,KAAK;QAE1B,IAAI;AACF,YAAA,MAAMC,wBAAAA,CAAaF,IAAAA,CAAAA;AACrB,QAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;YACd,OAAOJ,GAAAA,CAAIK,IAAI,CAAC;AAAED,gBAAAA;aAAM,EAAG,GAAA,CAAA;AAC7B,QAAA;AAEA,QAAA,MAAME,qBAAqBC,gBAAAA,CAAW,eAAA,CAAA;AAEtC,QAAA,MAAMC,YAAAA,GAAeC,MAAAA,CAAOC,IAAI,CAACb,OAAOW,YAAY,CAAA,CACjDG,MAAM,CACL,CAACC,GAAAA,GACC,CAACX,IAAAA,IACDY,CAAAA,CAAEC,GAAG,CAACjB,MAAAA,CAAOW,YAAY,CAACI,GAAAA,CAAgC,EAAE,MAAA,EAAQ,gBAAA,CAAA,KAClEX,MAELc,GAAG,CAAC,CAACH,GAAAA,GACJN,mBAAmBU,iBAAiB,CAACnB,MAAAA,CAAOW,YAAY,CAACI,GAAAA,CAAgC,CAAA,CAAA;AAG7FZ,QAAAA,GAAAA,CAAIK,IAAI,CAAC;YACPY,IAAAA,EAAMT;AACR,SAAA,CAAA;AACF,IAAA,CAAA;AAEAU,IAAAA,cAAAA,CAAAA,CAAelB,GAAY,EAAA;AACzB,QAAA,MAAM,EAAEY,GAAG,EAAE,GAAGZ,IAAImB,MAAM;AAE1B,QAAA,MAAMC,WAAAA,GAAcvB,MAAAA,CAAOW,YAAY,CAACI,GAAAA,CAAI;AAE5C,QAAA,IAAI,CAACQ,WAAAA,EAAa;YAChB,OAAOpB,GAAAA,CAAIK,IAAI,CAAC;gBAAED,KAAAA,EAAO;aAAuB,EAAG,GAAA,CAAA;AACrD,QAAA;QAEA,IAAI,CAACiB,oCAAqBD,WAAAA,CAAAA,EAAc;YACtC,OAAOpB,GAAAA,CAAIK,IAAI,CAAC;gBAAED,KAAAA,EAAO;aAAuB,EAAG,GAAA,CAAA;AACrD,QAAA;AAEA,QAAA,MAAME,qBAAqBC,gBAAAA,CAAW,eAAA,CAAA;AAEtCP,QAAAA,GAAAA,CAAIK,IAAI,CAAC;YAAEY,IAAAA,EAAMX,kBAAAA,CAAmBU,iBAAiB,CAACI,WAAAA;AAAa,SAAA,CAAA;AACrE,IAAA,CAAA;AAEA,IAAA,MAAME,mBAAkBtB,GAAY,EAAA;AAClC,QAAA,MAAMuB,IAAAA,GAAOvB,GAAAA,CAAIwB,OAAO,CAACD,IAAI;QAE7B,IAAI;AACF,YAAA,MAAME,oCAAAA,CAAyBF,IAAAA,CAAAA;AACjC,QAAA,CAAA,CAAE,OAAOnB,KAAAA,EAAO;YACd,OAAOJ,GAAAA,CAAIK,IAAI,CAAC;AAAED,gBAAAA;aAAM,EAAG,GAAA,CAAA;AAC7B,QAAA;QAEA,IAAI;YACFP,MAAAA,CAAOC,MAAM,CAAC4B,UAAU,GAAG,KAAA;AAE3B,YAAA,MAAMpB,qBAAqBC,gBAAAA,CAAW,eAAA,CAAA;AAEtC,YAAA,MAAMa,WAAAA,GAAc,MAAMd,kBAAAA,CAAmBgB,iBAAiB,CAAC;AAC7DF,gBAAAA,WAAAA,EAAaG,KAAKH,WAAW;AAC7BO,gBAAAA,UAAAA,EAAYJ,KAAKI;AACnB,aAAA,CAAA;AAEA,YAAA,MAAMC,cAAAA,GAAiB;gBACrBC,eAAAA,EAAiB;AACf5B,oBAAAA,IAAAA,EAAMmB,YAAYnB;AACpB;AACF,aAAA;AAEA,YAAA,MAAM6B,mBAAmBjB,CAAAA,CAAEkB,OAAO,CAAClC,MAAAA,CAAOmC,IAAI,IAC1CnC,MAAAA,CAAOoC,SAAS,CAAC5B,IAAI,CAAC,6BAA6BuB,cAAAA,CAAAA,GACnD/B,MAAAA,CAAOoC,SAAS,CAAC5B,IAAI,CAAC,sBAAA,EAAwBuB,cAAAA,CAAAA;YAElDzC,oCAAAA,CAAqC2C,gBAAAA,CAAAA;AAErC9B,YAAAA,GAAAA,CAAIK,IAAI,CAAC;gBAAEY,IAAAA,EAAM;AAAEL,oBAAAA,GAAAA,EAAKQ,YAAYR;AAAI;aAAE,EAAG,GAAA,CAAA;AAC/C,QAAA,CAAA,CAAE,OAAOsB,GAAAA,EAAK;YACZrC,MAAAA,CAAOsC,GAAG,CAAC/B,KAAK,CAAC8B,GAAAA,CAAAA;AACjBrC,YAAAA,MAAAA,CAAOoC,SAAS,CACb5B,IAAI,CAAC,yBAAA,EAA2B;gBAC/BwB,eAAAA,EAAiB;oBAAEzB,KAAAA,EAAQ8B,GAAAA,CAAcE,OAAO,IAAIF;AAAI;aAC1D,CAAA,CACC3C,KAAK,CAAC,IAAA,CAAO,CAAA,CAAA;AAChBS,YAAAA,GAAAA,CAAIK,IAAI,CAAC;gBAAED,KAAAA,EAAQ8B,GAAAA,CAAcE,OAAO,IAAI;aAAgB,EAAG,GAAA,CAAA;AACjE,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMC,mBAAkBrC,GAAY,EAAA;AAClC,QAAA,MAAM,EAAEY,GAAG,EAAE,GAAGZ,IAAImB,MAAM;AAC1B,QAAA,MAAMI,IAAAA,GAAOvB,GAAAA,CAAIwB,OAAO,CAACD,IAAI;AAE7B,QAAA,IAAI,CAACV,CAAAA,CAAEyB,GAAG,CAACzC,MAAAA,CAAOW,YAAY,EAAEI,GAAAA,CAAAA,EAAM;YACpC,OAAOZ,GAAAA,CAAIK,IAAI,CAAC;gBAAED,KAAAA,EAAO;aAAuB,EAAG,GAAA,CAAA;AACrD,QAAA;QAEA,IAAI;AACF,YAAA,MAAMmC,0CAAAA,CAA+BhB,IAAAA,CAAAA;AACvC,QAAA,CAAA,CAAE,OAAOnB,KAAAA,EAAO;YACd,OAAOJ,GAAAA,CAAIK,IAAI,CAAC;AAAED,gBAAAA;aAAM,EAAG,GAAA,CAAA;AAC7B,QAAA;QAEA,IAAI;YACFP,MAAAA,CAAOC,MAAM,CAAC4B,UAAU,GAAG,KAAA;AAE3B,YAAA,MAAMpB,qBAAqBC,gBAAAA,CAAW,eAAA,CAAA;AAEtC,YAAA,MAAMiC,SAAAA,GAAY,MAAMlC,kBAAAA,CAAmBmC,eAAe,CAAC7B,GAAAA,EAAK;AAC9DQ,gBAAAA,WAAAA,EAAaG,KAAKH,WAAW;AAC7BO,gBAAAA,UAAAA,EAAYJ,KAAKI;AACnB,aAAA,CAAA;YAEAtC,YAAAA,CAAa,IAAMQ,OAAOC,MAAM,EAAA,CAAA;AAEhCE,YAAAA,GAAAA,CAAIK,IAAI,CAAC;gBAAEY,IAAAA,EAAM;AAAEL,oBAAAA,GAAAA,EAAK4B,UAAU5B;AAAI;aAAE,EAAG,GAAA,CAAA;AAC7C,QAAA,CAAA,CAAE,OAAOR,KAAAA,EAAO;YACdP,MAAAA,CAAOsC,GAAG,CAAC/B,KAAK,CAACA,KAAAA,CAAAA;AACjBJ,YAAAA,GAAAA,CAAIK,IAAI,CAAC;gBAAED,KAAAA,EAAQA,OAAiBgC,OAAAA,IAAW;aAAgB,EAAG,GAAA,CAAA;AACpE,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMM,mBAAkB1C,GAAY,EAAA;AAClC,QAAA,MAAM,EAAEY,GAAG,EAAE,GAAGZ,IAAImB,MAAM;AAE1B,QAAA,IAAI,CAACN,CAAAA,CAAEyB,GAAG,CAACzC,MAAAA,CAAOW,YAAY,EAAEI,GAAAA,CAAAA,EAAM;YACpC,OAAOZ,GAAAA,CAAIK,IAAI,CAAC;gBAAED,KAAAA,EAAO;aAAuB,EAAG,GAAA,CAAA;AACrD,QAAA;QAEA,IAAI;YACFP,MAAAA,CAAOC,MAAM,CAAC4B,UAAU,GAAG,KAAA;AAE3B,YAAA,MAAMpB,qBAAqBC,gBAAAA,CAAW,eAAA,CAAA;AAEtC,YAAA,MAAMiC,SAAAA,GAAY,MAAMlC,kBAAAA,CAAmBoC,iBAAiB,CAAC9B,GAAAA,CAAAA;YAE7DvB,YAAAA,CAAa,IAAMQ,OAAOC,MAAM,EAAA,CAAA;AAEhCE,YAAAA,GAAAA,CAAIK,IAAI,CAAC;gBAAEY,IAAAA,EAAM;AAAEL,oBAAAA,GAAAA,EAAK4B,UAAU5B;AAAI;AAAE,aAAA,CAAA;AAC1C,QAAA,CAAA,CAAE,OAAOR,KAAAA,EAAO;YACdP,MAAAA,CAAOsC,GAAG,CAAC/B,KAAK,CAACA,KAAAA,CAAAA;AACjBJ,YAAAA,GAAAA,CAAIK,IAAI,CAAC;gBAAED,KAAAA,EAAQA,OAAiBgC,OAAAA,IAAW;aAAgB,EAAG,GAAA,CAAA;AACpE,QAAA;AACF,IAAA;AACF,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"content-types.js","sources":["../../../server/src/controllers/content-types.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Context } from 'koa';\nimport type {} from 'koa-body';\nimport type { Internal } from '@strapi/types';\nimport { getService } from '../utils';\nimport {\n validateContentTypeInput,\n validateUpdateContentTypeInput,\n validateKind,\n} from './validation/content-type';\nimport { isContentTypeVisible } from '../services/content-types';\n\n/**\n * Telemetry uses a bounded HTTP timeout (~1s in the metrics sender); cap how long we defer\n * dev reload so a stuck client cannot block restart indefinitely.\n */\nconst RELOAD_AFTER_TELEMETRY_MAX_MS = 2500;\n\nconst scheduleReloadAfterOutboundTelemetry = (sendPromise: Promise<unknown>): void => {\n setImmediate(() => {\n const settled = sendPromise.catch(() => {});\n Promise.race([\n settled,\n new Promise<void>((resolve) => {\n setTimeout(resolve, RELOAD_AFTER_TELEMETRY_MAX_MS);\n }),\n ])\n .catch(() => {})\n .finally(() => {\n strapi.reload();\n });\n });\n};\n\nexport default {\n async getContentTypes(ctx: Context) {\n const { kind } = ctx.query;\n\n try {\n await validateKind(kind);\n } catch (error) {\n return ctx.send({ error }, 400);\n }\n\n const contentTypeService = getService('content-types');\n\n const contentTypes = Object.keys(strapi.contentTypes)\n .filter(\n (uid) =>\n !kind ||\n _.get(strapi.contentTypes[uid as Internal.UID.ContentType], 'kind', 'collectionType') ===\n kind\n )\n .map((uid) =>\n contentTypeService.formatContentType(strapi.contentTypes[uid as Internal.UID.ContentType])\n );\n\n ctx.send({\n data: contentTypes,\n });\n },\n\n getContentType(ctx: Context) {\n const { uid } = ctx.params;\n\n const contentType = strapi.contentTypes[uid];\n\n if (!contentType) {\n return ctx.send({ error: 'contentType.notFound' }, 404);\n }\n\n if (!isContentTypeVisible(contentType)) {\n return ctx.send({ error: 'contentType.notFound' }, 404);\n }\n\n const contentTypeService = getService('content-types');\n\n ctx.send({ data: contentTypeService.formatContentType(contentType) });\n },\n\n async createContentType(ctx: Context) {\n const body = ctx.request.body as any;\n\n try {\n await validateContentTypeInput(body);\n } catch (error) {\n return ctx.send({ error }, 400);\n }\n\n try {\n strapi.reload.isWatching = false;\n\n const contentTypeService = getService('content-types');\n\n const contentType = await contentTypeService.createContentType({\n contentType: body.contentType,\n components: body.components,\n });\n\n const metricsPayload = {\n eventProperties: {\n kind: contentType.kind,\n },\n };\n\n const telemetryPromise = _.isEmpty(strapi.apis)\n ? strapi.telemetry.send('didCreateFirstContentType', metricsPayload)\n : strapi.telemetry.send('didCreateContentType', metricsPayload);\n\n scheduleReloadAfterOutboundTelemetry(telemetryPromise);\n\n ctx.send({ data: { uid: contentType.uid } }, 201);\n } catch (err) {\n strapi.log.error(err);\n strapi.telemetry\n .send('didNotCreateContentType', {\n eventProperties: { error: (err as Error).message || err },\n })\n .catch(() => {});\n ctx.send({ error: (err as Error).message || 'Unknown error' }, 400);\n }\n },\n\n async updateContentType(ctx: Context) {\n const { uid } = ctx.params;\n const body = ctx.request.body as any;\n\n if (!_.has(strapi.contentTypes, uid)) {\n return ctx.send({ error: 'contentType.notFound' }, 404);\n }\n\n try {\n await validateUpdateContentTypeInput(body);\n } catch (error) {\n return ctx.send({ error }, 400);\n }\n\n try {\n strapi.reload.isWatching = false;\n\n const contentTypeService = getService('content-types');\n\n const component = await contentTypeService.editContentType(uid, {\n contentType: body.contentType,\n components: body.components,\n });\n\n setImmediate(() => strapi.reload());\n\n ctx.send({ data: { uid: component.uid } }, 201);\n } catch (error) {\n strapi.log.error(error);\n ctx.send({ error: (error as Error)?.message || 'Unknown error' }, 400);\n }\n },\n\n async deleteContentType(ctx: Context) {\n const { uid } = ctx.params;\n\n if (!_.has(strapi.contentTypes, uid)) {\n return ctx.send({ error: 'contentType.notFound' }, 404);\n }\n\n try {\n strapi.reload.isWatching = false;\n\n const contentTypeService = getService('content-types');\n\n const component = await contentTypeService.deleteContentType(uid);\n\n setImmediate(() => strapi.reload());\n\n ctx.send({ data: { uid: component.uid } });\n } catch (error) {\n strapi.log.error(error);\n ctx.send({ error: (error as Error)?.message || 'Unknown error' }, 400);\n }\n },\n};\n"],"names":["RELOAD_AFTER_TELEMETRY_MAX_MS","scheduleReloadAfterOutboundTelemetry","sendPromise","setImmediate","settled","catch","Promise","race","resolve","setTimeout","finally","strapi","reload","getContentTypes","ctx","kind","query","validateKind","error","send","contentTypeService","getService","contentTypes","Object","keys","filter","uid","_","get","map","formatContentType","data","getContentType","params","contentType","isContentTypeVisible","createContentType","body","request","validateContentTypeInput","isWatching","components","metricsPayload","eventProperties","telemetryPromise","isEmpty","apis","telemetry","err","log","message","updateContentType","has","validateUpdateContentTypeInput","component","editContentType","deleteContentType"],"mappings":"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"}
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
var utils = require('@strapi/utils');
|
|
4
4
|
var _ = require('lodash');
|
|
5
5
|
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var ___default = /*#__PURE__*/_interopDefault(_);
|
|
9
|
+
|
|
6
10
|
const validators = {
|
|
7
11
|
required: utils.yup.boolean(),
|
|
8
12
|
unique: utils.yup.boolean(),
|
|
@@ -27,7 +31,7 @@ const isValidIcon = {
|
|
|
27
31
|
};
|
|
28
32
|
const isValidCategoryName = {
|
|
29
33
|
name: 'isValidCategoryName',
|
|
30
|
-
message: `\${path} must
|
|
34
|
+
message: `\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,
|
|
31
35
|
test: (val)=>val === '' || CATEGORY_NAME_REGEX.test(val)
|
|
32
36
|
};
|
|
33
37
|
const isValidCollectionName = {
|
|
@@ -67,7 +71,7 @@ const isValidDefaultJSON = {
|
|
|
67
71
|
if (val === undefined) {
|
|
68
72
|
return true;
|
|
69
73
|
}
|
|
70
|
-
if (
|
|
74
|
+
if (___default.default.isNumber(val) || ___default.default.isNull(val) || ___default.default.isObject(val) || ___default.default.isArray(val)) {
|
|
71
75
|
return true;
|
|
72
76
|
}
|
|
73
77
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,\n test: (val) => val === '' || CATEGORY_NAME_REGEX.test(val as string),\n};\n\nexport const isValidCollectionName: CommonTestConfig = {\n name: 'isValidCollectionName',\n message: `\\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`,\n test: (val) => val === '' || COLLECTION_NAME_REGEX.test(val as string),\n};\n\nexport const isValidKey = (key: string): CommonTestConfig => ({\n name: 'isValidKey',\n message: `Attribute name '${key}' must match the following regex: ${NAME_REGEX}`,\n test: () => NAME_REGEX.test(key),\n});\n\nexport const isValidEnum: CommonTestConfig = {\n name: 'isValidEnum',\n message: '${path} should not start with number',\n test: (val) => val === '' || !strings.startsWithANumber(val as string),\n};\n\nexport const areEnumValuesUnique: CommonTestConfig = {\n name: 'areEnumValuesUnique',\n message: '${path} cannot contain duplicate values',\n test(values) {\n const filtered = [...new Set(values as string[])];\n\n return filtered.length === (values as string[]).length;\n },\n};\n\nexport const isValidRegExpPattern: CommonTestConfig = {\n name: 'isValidRegExpPattern',\n message: '${path} must be a valid RexExp pattern string',\n test: (val) => val === '' || !!new RegExp(val as string),\n};\n\nexport const isValidDefaultJSON: CommonTestConfig = {\n name: 'isValidDefaultJSON',\n message: '${path} is not a valid JSON',\n test(val) {\n if (val === undefined) {\n return true;\n }\n\n if (_.isNumber(val) || _.isNull(val) || _.isObject(val) || _.isArray(val)) {\n return true;\n }\n\n try {\n JSON.parse(val as string);\n\n return true;\n } catch (err) {\n return false;\n }\n },\n};\n"],"names":["validators","required","yup","boolean","unique","minLength","number","integer","positive","maxLength","NAME_REGEX","COLLECTION_NAME_REGEX","CATEGORY_NAME_REGEX","ICON_REGEX","UID_REGEX","KEBAB_BASE_REGEX","isValidName","name","message","test","val","isValidIcon","isValidCategoryName","isValidCollectionName","isValidKey","key","isValidEnum","strings","startsWithANumber","areEnumValuesUnique","values","filtered","Set","length","isValidRegExpPattern","RegExp","isValidDefaultJSON","undefined","_","isNumber","isNull","isObject","isArray","JSON","parse","err"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ const isValidIcon = {
|
|
|
25
25
|
};
|
|
26
26
|
const isValidCategoryName = {
|
|
27
27
|
name: 'isValidCategoryName',
|
|
28
|
-
message: `\${path} must
|
|
28
|
+
message: `\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,
|
|
29
29
|
test: (val)=>val === '' || CATEGORY_NAME_REGEX.test(val)
|
|
30
30
|
};
|
|
31
31
|
const isValidCollectionName = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.mjs","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must
|
|
1
|
+
{"version":3,"file":"common.mjs","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,\n test: (val) => val === '' || CATEGORY_NAME_REGEX.test(val as string),\n};\n\nexport const isValidCollectionName: CommonTestConfig = {\n name: 'isValidCollectionName',\n message: `\\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`,\n test: (val) => val === '' || COLLECTION_NAME_REGEX.test(val as string),\n};\n\nexport const isValidKey = (key: string): CommonTestConfig => ({\n name: 'isValidKey',\n message: `Attribute name '${key}' must match the following regex: ${NAME_REGEX}`,\n test: () => NAME_REGEX.test(key),\n});\n\nexport const isValidEnum: CommonTestConfig = {\n name: 'isValidEnum',\n message: '${path} should not start with number',\n test: (val) => val === '' || !strings.startsWithANumber(val as string),\n};\n\nexport const areEnumValuesUnique: CommonTestConfig = {\n name: 'areEnumValuesUnique',\n message: '${path} cannot contain duplicate values',\n test(values) {\n const filtered = [...new Set(values as string[])];\n\n return filtered.length === (values as string[]).length;\n },\n};\n\nexport const isValidRegExpPattern: CommonTestConfig = {\n name: 'isValidRegExpPattern',\n message: '${path} must be a valid RexExp pattern string',\n test: (val) => val === '' || !!new RegExp(val as string),\n};\n\nexport const isValidDefaultJSON: CommonTestConfig = {\n name: 'isValidDefaultJSON',\n message: '${path} is not a valid JSON',\n test(val) {\n if (val === undefined) {\n return true;\n }\n\n if (_.isNumber(val) || _.isNull(val) || _.isObject(val) || _.isArray(val)) {\n return true;\n }\n\n try {\n JSON.parse(val as string);\n\n return true;\n } catch (err) {\n return false;\n }\n },\n};\n"],"names":["validators","required","yup","boolean","unique","minLength","number","integer","positive","maxLength","NAME_REGEX","COLLECTION_NAME_REGEX","CATEGORY_NAME_REGEX","ICON_REGEX","UID_REGEX","KEBAB_BASE_REGEX","isValidName","name","message","test","val","isValidIcon","isValidCategoryName","isValidCollectionName","isValidKey","key","isValidEnum","strings","startsWithANumber","areEnumValuesUnique","values","filtered","Set","length","isValidRegExpPattern","RegExp","isValidDefaultJSON","undefined","_","isNumber","isNull","isObject","isArray","JSON","parse","err"],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@ var common = require('./common.js');
|
|
|
7
7
|
var modelSchema = require('./model-schema.js');
|
|
8
8
|
var dataTransform = require('./data-transform.js');
|
|
9
9
|
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var ___default = /*#__PURE__*/_interopDefault(_);
|
|
13
|
+
|
|
10
14
|
const VALID_RELATIONS = [
|
|
11
15
|
'oneToOne',
|
|
12
16
|
'oneToMany'
|
|
@@ -30,8 +34,8 @@ const nestedComponentSchema = utils.yup.array().of(componentSchema.shape({
|
|
|
30
34
|
name: 'mustHaveUIDOrTmpUID',
|
|
31
35
|
message: 'Component must have a uid or a tmpUID',
|
|
32
36
|
test (attr) {
|
|
33
|
-
if (
|
|
34
|
-
if (!
|
|
37
|
+
if (___default.default.has(attr, 'uid') && ___default.default.has(attr, 'tmpUID')) return false;
|
|
38
|
+
if (!___default.default.has(attr, 'uid') && !___default.default.has(attr, 'tmpUID')) return false;
|
|
35
39
|
return true;
|
|
36
40
|
}
|
|
37
41
|
}).required().noUnknown());
|
|
@@ -45,12 +49,12 @@ const updateComponentInputSchema = utils.yup.object({
|
|
|
45
49
|
components: nestedComponentSchema
|
|
46
50
|
}).noUnknown();
|
|
47
51
|
const validateUpdateComponentInput = (data)=>{
|
|
48
|
-
if (
|
|
52
|
+
if (___default.default.has(data, 'component') && data.component) {
|
|
49
53
|
dataTransform.removeEmptyDefaults(data.component);
|
|
50
54
|
}
|
|
51
|
-
if (
|
|
55
|
+
if (___default.default.has(data, 'components') && Array.isArray(data.components)) {
|
|
52
56
|
data.components.forEach((data)=>{
|
|
53
|
-
if (
|
|
57
|
+
if (___default.default.has(data, 'uid')) {
|
|
54
58
|
dataTransform.removeEmptyDefaults(data);
|
|
55
59
|
}
|
|
56
60
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../../server/src/controllers/validation/component.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup, validateYupSchema } from '@strapi/utils';\n\nimport type { Struct } from '@strapi/types';\nimport { modelTypes, DEFAULT_TYPES } from '../../services/constants';\nimport { isValidCategoryName, isValidIcon } from './common';\nimport { createSchema } from './model-schema';\nimport { removeEmptyDefaults } from './data-transform';\n\nexport const VALID_RELATIONS = ['oneToOne', 'oneToMany'];\nexport const VALID_TYPES = [...DEFAULT_TYPES, 'component', 'customField'];\n\nexport const componentSchema = createSchema(VALID_TYPES, VALID_RELATIONS, {\n modelType: modelTypes.COMPONENT,\n})\n .shape({\n displayName: yup.string().min(1).required('displayName.required'),\n icon: yup.string().nullable().test(isValidIcon),\n category: yup.string().nullable().test(isValidCategoryName).required('category.required'),\n })\n .required()\n .noUnknown();\n\nexport const nestedComponentSchema = yup.array().of(\n componentSchema\n .shape({\n uid: yup.string(),\n tmpUID: yup.string(),\n })\n .test({\n name: 'mustHaveUIDOrTmpUID',\n message: 'Component must have a uid or a tmpUID',\n test(attr: unknown) {\n if (_.has(attr, 'uid') && _.has(attr, 'tmpUID')) return false;\n if (!_.has(attr, 'uid') && !_.has(attr, 'tmpUID')) return false;\n return true;\n },\n })\n .required()\n .noUnknown()\n);\n\nexport const componentInputSchema = yup\n .object({\n component: componentSchema,\n components: nestedComponentSchema,\n })\n .noUnknown();\n\nexport const validateComponentInput = validateYupSchema(componentInputSchema);\n\nconst updateComponentInputSchema = yup\n .object({\n component: componentSchema,\n components: nestedComponentSchema,\n })\n .noUnknown();\n\nexport const validateUpdateComponentInput = (data: {\n component?: Struct.ComponentSchema;\n components?: Struct.ComponentSchema[];\n}) => {\n if (_.has(data, 'component') && data.component) {\n removeEmptyDefaults(data.component);\n }\n\n if (_.has(data, 'components') && Array.isArray(data.components)) {\n data.components.forEach((data) => {\n if (_.has(data, 'uid')) {\n removeEmptyDefaults(data);\n }\n });\n }\n\n return validateYupSchema(updateComponentInputSchema)(data);\n};\n"],"names":["VALID_RELATIONS","VALID_TYPES","DEFAULT_TYPES","componentSchema","createSchema","modelType","modelTypes","COMPONENT","shape","displayName","yup","string","min","required","icon","nullable","test","isValidIcon","category","isValidCategoryName","noUnknown","nestedComponentSchema","array","of","uid","tmpUID","name","message","attr","_","has","componentInputSchema","object","component","components","validateComponentInput","validateYupSchema","updateComponentInputSchema","validateUpdateComponentInput","data","removeEmptyDefaults","Array","isArray","forEach"],"mappings":"
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../../server/src/controllers/validation/component.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup, validateYupSchema } from '@strapi/utils';\n\nimport type { Struct } from '@strapi/types';\nimport { modelTypes, DEFAULT_TYPES } from '../../services/constants';\nimport { isValidCategoryName, isValidIcon } from './common';\nimport { createSchema } from './model-schema';\nimport { removeEmptyDefaults } from './data-transform';\n\nexport const VALID_RELATIONS = ['oneToOne', 'oneToMany'];\nexport const VALID_TYPES = [...DEFAULT_TYPES, 'component', 'customField'];\n\nexport const componentSchema = createSchema(VALID_TYPES, VALID_RELATIONS, {\n modelType: modelTypes.COMPONENT,\n})\n .shape({\n displayName: yup.string().min(1).required('displayName.required'),\n icon: yup.string().nullable().test(isValidIcon),\n category: yup.string().nullable().test(isValidCategoryName).required('category.required'),\n })\n .required()\n .noUnknown();\n\nexport const nestedComponentSchema = yup.array().of(\n componentSchema\n .shape({\n uid: yup.string(),\n tmpUID: yup.string(),\n })\n .test({\n name: 'mustHaveUIDOrTmpUID',\n message: 'Component must have a uid or a tmpUID',\n test(attr: unknown) {\n if (_.has(attr, 'uid') && _.has(attr, 'tmpUID')) return false;\n if (!_.has(attr, 'uid') && !_.has(attr, 'tmpUID')) return false;\n return true;\n },\n })\n .required()\n .noUnknown()\n);\n\nexport const componentInputSchema = yup\n .object({\n component: componentSchema,\n components: nestedComponentSchema,\n })\n .noUnknown();\n\nexport const validateComponentInput = validateYupSchema(componentInputSchema);\n\nconst updateComponentInputSchema = yup\n .object({\n component: componentSchema,\n components: nestedComponentSchema,\n })\n .noUnknown();\n\nexport const validateUpdateComponentInput = (data: {\n component?: Struct.ComponentSchema;\n components?: Struct.ComponentSchema[];\n}) => {\n if (_.has(data, 'component') && data.component) {\n removeEmptyDefaults(data.component);\n }\n\n if (_.has(data, 'components') && Array.isArray(data.components)) {\n data.components.forEach((data) => {\n if (_.has(data, 'uid')) {\n removeEmptyDefaults(data);\n }\n });\n }\n\n return validateYupSchema(updateComponentInputSchema)(data);\n};\n"],"names":["VALID_RELATIONS","VALID_TYPES","DEFAULT_TYPES","componentSchema","createSchema","modelType","modelTypes","COMPONENT","shape","displayName","yup","string","min","required","icon","nullable","test","isValidIcon","category","isValidCategoryName","noUnknown","nestedComponentSchema","array","of","uid","tmpUID","name","message","attr","_","has","componentInputSchema","object","component","components","validateComponentInput","validateYupSchema","updateComponentInputSchema","validateUpdateComponentInput","data","removeEmptyDefaults","Array","isArray","forEach"],"mappings":"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"}
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
var _ = require('lodash');
|
|
4
4
|
var typeguards = require('../../utils/typeguards.js');
|
|
5
5
|
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var ___default = /*#__PURE__*/_interopDefault(_);
|
|
9
|
+
|
|
6
10
|
const removeEmptyDefaults = (data)=>{
|
|
7
11
|
const { attributes } = data || {};
|
|
8
12
|
Object.keys(attributes).forEach((attributeName)=>{
|
|
@@ -13,9 +17,9 @@ const removeEmptyDefaults = (data)=>{
|
|
|
13
17
|
});
|
|
14
18
|
};
|
|
15
19
|
const removeDeletedUIDTargetFields = (data)=>{
|
|
16
|
-
if (
|
|
20
|
+
if (___default.default.has(data, 'attributes')) {
|
|
17
21
|
Object.values(data.attributes).forEach((attribute)=>{
|
|
18
|
-
if (attribute.type === 'uid' && !
|
|
22
|
+
if (attribute.type === 'uid' && !___default.default.isUndefined(attribute.targetField) && !___default.default.has(data.attributes, attribute.targetField)) {
|
|
19
23
|
attribute.targetField = undefined;
|
|
20
24
|
}
|
|
21
25
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-transform.js","sources":["../../../../server/src/controllers/validation/data-transform.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\nimport _ from 'lodash';\nimport { hasDefaultAttribute } from '../../utils/typeguards';\n\nexport const removeEmptyDefaults = (\n data: Partial<Struct.ContentTypeSchema> | Partial<Struct.ComponentSchema> | undefined\n) => {\n const { attributes } = data || {};\n\n Object.keys(attributes!).forEach((attributeName) => {\n const attribute = attributes![attributeName];\n\n if (hasDefaultAttribute(attribute) && attribute.default === '') {\n attribute.default = undefined;\n }\n });\n};\n\nexport const removeDeletedUIDTargetFields = (data: Struct.ContentTypeSchema) => {\n if (_.has(data, 'attributes')) {\n Object.values(data.attributes).forEach((attribute) => {\n if (\n attribute.type === 'uid' &&\n !_.isUndefined(attribute.targetField) &&\n !_.has(data.attributes, attribute.targetField)\n ) {\n attribute.targetField = undefined;\n }\n });\n }\n};\n"],"names":["removeEmptyDefaults","data","attributes","Object","keys","forEach","attributeName","attribute","hasDefaultAttribute","default","undefined","removeDeletedUIDTargetFields","_","has","values","type","isUndefined","targetField"],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-transform.js","sources":["../../../../server/src/controllers/validation/data-transform.ts"],"sourcesContent":["import type { Struct } from '@strapi/types';\nimport _ from 'lodash';\nimport { hasDefaultAttribute } from '../../utils/typeguards';\n\nexport const removeEmptyDefaults = (\n data: Partial<Struct.ContentTypeSchema> | Partial<Struct.ComponentSchema> | undefined\n) => {\n const { attributes } = data || {};\n\n Object.keys(attributes!).forEach((attributeName) => {\n const attribute = attributes![attributeName];\n\n if (hasDefaultAttribute(attribute) && attribute.default === '') {\n attribute.default = undefined;\n }\n });\n};\n\nexport const removeDeletedUIDTargetFields = (data: Struct.ContentTypeSchema) => {\n if (_.has(data, 'attributes')) {\n Object.values(data.attributes).forEach((attribute) => {\n if (\n attribute.type === 'uid' &&\n !_.isUndefined(attribute.targetField) &&\n !_.has(data.attributes, attribute.targetField)\n ) {\n attribute.targetField = undefined;\n }\n });\n }\n};\n"],"names":["removeEmptyDefaults","data","attributes","Object","keys","forEach","attributeName","attribute","hasDefaultAttribute","default","undefined","removeDeletedUIDTargetFields","_","has","values","type","isUndefined","targetField"],"mappings":";;;;;;;;;AAIO,MAAMA,sBAAsB,CACjCC,IAAAA,GAAAA;AAEA,IAAA,MAAM,EAAEC,UAAU,EAAE,GAAGD,QAAQ,EAAC;AAEhCE,IAAAA,MAAAA,CAAOC,IAAI,CAACF,UAAAA,CAAAA,CAAaG,OAAO,CAAC,CAACC,aAAAA,GAAAA;QAChC,MAAMC,SAAAA,GAAYL,UAAW,CAACI,aAAAA,CAAc;AAE5C,QAAA,IAAIE,8BAAAA,CAAoBD,SAAAA,CAAAA,IAAcA,SAAAA,CAAUE,OAAO,KAAK,EAAA,EAAI;AAC9DF,YAAAA,SAAAA,CAAUE,OAAO,GAAGC,SAAAA;AACtB,QAAA;AACF,IAAA,CAAA,CAAA;AACF;AAEO,MAAMC,+BAA+B,CAACV,IAAAA,GAAAA;AAC3C,IAAA,IAAIW,kBAAAA,CAAEC,GAAG,CAACZ,IAAAA,EAAM,YAAA,CAAA,EAAe;AAC7BE,QAAAA,MAAAA,CAAOW,MAAM,CAACb,IAAAA,CAAKC,UAAU,CAAA,CAAEG,OAAO,CAAC,CAACE,SAAAA,GAAAA;YACtC,IACEA,SAAAA,CAAUQ,IAAI,KAAK,KAAA,IACnB,CAACH,kBAAAA,CAAEI,WAAW,CAACT,SAAAA,CAAUU,WAAW,KACpC,CAACL,kBAAAA,CAAEC,GAAG,CAACZ,IAAAA,CAAKC,UAAU,EAAEK,SAAAA,CAAUU,WAAW,CAAA,EAC7C;AACAV,gBAAAA,SAAAA,CAAUU,WAAW,GAAGP,SAAAA;AAC1B,YAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;AACF;;;;;"}
|
|
@@ -9,6 +9,10 @@ var common = require('./common.js');
|
|
|
9
9
|
var types = require('./types.js');
|
|
10
10
|
var relations = require('./relations.js');
|
|
11
11
|
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
var ___default = /*#__PURE__*/_interopDefault(_);
|
|
15
|
+
|
|
12
16
|
const createSchema = (types, relations, { modelType } = {})=>{
|
|
13
17
|
const shape = {
|
|
14
18
|
description: utils.yup.string(),
|
|
@@ -32,7 +36,7 @@ const createSchema = (types, relations, { modelType } = {})=>{
|
|
|
32
36
|
};
|
|
33
37
|
const createAttributesValidator = ({ types: types$1, modelType, relations: relations$1 })=>{
|
|
34
38
|
return utils.yup.lazy((attributes)=>{
|
|
35
|
-
return utils.yup.object().shape(
|
|
39
|
+
return utils.yup.object().shape(___default.default.mapValues(attributes, (attribute, key)=>{
|
|
36
40
|
if (isForbiddenKey(key)) {
|
|
37
41
|
return forbiddenValidator();
|
|
38
42
|
}
|
|
@@ -42,7 +46,7 @@ const createAttributesValidator = ({ types: types$1, modelType, relations: relat
|
|
|
42
46
|
if (attribute.type === 'relation') {
|
|
43
47
|
return relations.getRelationValidator(attribute, relations$1).test(common.isValidKey(key));
|
|
44
48
|
}
|
|
45
|
-
if (
|
|
49
|
+
if (___default.default.has(attribute, 'type')) {
|
|
46
50
|
return types.getTypeValidator(attribute, {
|
|
47
51
|
types: types$1,
|
|
48
52
|
modelType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-schema.js","sources":["../../../../server/src/controllers/validation/model-schema.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport _ from 'lodash';\nimport { snakeCase } from 'lodash/fp';\nimport { modelTypes, typeKinds } from '../../services/constants';\nimport { getService } from '../../utils';\nimport { isValidKey, isValidCollectionName } from './common';\nimport { getTypeValidator } from './types';\nimport { getRelationValidator } from './relations';\n\ntype ModelTypeInput = (typeof modelTypes)[keyof typeof modelTypes];\n\ntype CreateAttributesInput = {\n types: ReadonlyArray<string>;\n relations: ReadonlyArray<string>;\n modelType?: ModelTypeInput;\n};\n\nexport const createSchema = (\n types: CreateAttributesInput['types'],\n relations: CreateAttributesInput['relations'],\n { modelType }: { modelType?: ModelTypeInput } = {}\n) => {\n const shape = {\n description: yup.string(),\n options: yup.object(),\n pluginOptions: yup.object(),\n collectionName: yup.string().nullable().test(isValidCollectionName),\n attributes: createAttributesValidator({ types, relations, modelType }),\n draftAndPublish: yup.boolean(),\n } as any;\n\n if (modelType === modelTypes.CONTENT_TYPE) {\n shape.kind = yup.string().oneOf([typeKinds.SINGLE_TYPE, typeKinds.COLLECTION_TYPE]).nullable();\n }\n\n return yup.object(shape).noUnknown();\n};\n\nconst createAttributesValidator = ({ types, modelType, relations }: CreateAttributesInput) => {\n return yup.lazy((attributes) => {\n return yup\n .object()\n .shape(\n _.mapValues(attributes, (attribute, key) => {\n if (isForbiddenKey(key)) {\n return forbiddenValidator();\n }\n\n if (isConflictingKey(key, attributes)) {\n return conflictingKeysValidator(key);\n }\n\n if (attribute.type === 'relation') {\n return getRelationValidator(attribute, relations).test(isValidKey(key));\n }\n\n if (_.has(attribute, 'type')) {\n return getTypeValidator(attribute, { types, modelType, attributes }).test(\n isValidKey(key)\n );\n }\n\n return typeOrRelationValidator;\n })\n )\n .required('attributes.required');\n });\n};\n\nconst isConflictingKey = (key: string, attributes: Record<string, any>) => {\n const snakeCaseKey = snakeCase(key);\n\n return Object.keys(attributes).some((existingKey) => {\n if (existingKey === key) return false; // don't compare against itself\n return snakeCase(existingKey) === snakeCaseKey;\n });\n};\n\nconst isForbiddenKey = (key: string) => {\n return getService('builder').isReservedAttributeName(key);\n};\n\nconst forbiddenValidator = () => {\n const reservedNames = [...getService('builder').getReservedNames().attributes];\n\n return yup.mixed().test({\n name: 'forbiddenKeys',\n message: `Attribute keys cannot be one of ${reservedNames.join(', ')}`,\n test: () => false,\n });\n};\n\nconst conflictingKeysValidator = (key: string) => {\n return yup.mixed().test({\n name: 'conflictingKeys',\n message: `Attribute ${key} conflicts with an existing key`,\n test: () => false,\n });\n};\n\nconst typeOrRelationValidator = yup.object().test({\n name: 'mustHaveTypeOrTarget',\n message: 'Attribute must have either a type or a target',\n test: () => false,\n});\n"],"names":["createSchema","types","relations","modelType","shape","description","yup","string","options","object","pluginOptions","collectionName","nullable","test","isValidCollectionName","attributes","createAttributesValidator","draftAndPublish","boolean","modelTypes","CONTENT_TYPE","kind","oneOf","typeKinds","SINGLE_TYPE","COLLECTION_TYPE","noUnknown","lazy","_","mapValues","attribute","key","isForbiddenKey","forbiddenValidator","isConflictingKey","conflictingKeysValidator","type","getRelationValidator","isValidKey","has","getTypeValidator","typeOrRelationValidator","required","snakeCaseKey","snakeCase","Object","keys","some","existingKey","getService","isReservedAttributeName","reservedNames","getReservedNames","mixed","name","message","join"],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-schema.js","sources":["../../../../server/src/controllers/validation/model-schema.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport _ from 'lodash';\nimport { snakeCase } from 'lodash/fp';\nimport { modelTypes, typeKinds } from '../../services/constants';\nimport { getService } from '../../utils';\nimport { isValidKey, isValidCollectionName } from './common';\nimport { getTypeValidator } from './types';\nimport { getRelationValidator } from './relations';\n\ntype ModelTypeInput = (typeof modelTypes)[keyof typeof modelTypes];\n\ntype CreateAttributesInput = {\n types: ReadonlyArray<string>;\n relations: ReadonlyArray<string>;\n modelType?: ModelTypeInput;\n};\n\nexport const createSchema = (\n types: CreateAttributesInput['types'],\n relations: CreateAttributesInput['relations'],\n { modelType }: { modelType?: ModelTypeInput } = {}\n) => {\n const shape = {\n description: yup.string(),\n options: yup.object(),\n pluginOptions: yup.object(),\n collectionName: yup.string().nullable().test(isValidCollectionName),\n attributes: createAttributesValidator({ types, relations, modelType }),\n draftAndPublish: yup.boolean(),\n } as any;\n\n if (modelType === modelTypes.CONTENT_TYPE) {\n shape.kind = yup.string().oneOf([typeKinds.SINGLE_TYPE, typeKinds.COLLECTION_TYPE]).nullable();\n }\n\n return yup.object(shape).noUnknown();\n};\n\nconst createAttributesValidator = ({ types, modelType, relations }: CreateAttributesInput) => {\n return yup.lazy((attributes) => {\n return yup\n .object()\n .shape(\n _.mapValues(attributes, (attribute, key) => {\n if (isForbiddenKey(key)) {\n return forbiddenValidator();\n }\n\n if (isConflictingKey(key, attributes)) {\n return conflictingKeysValidator(key);\n }\n\n if (attribute.type === 'relation') {\n return getRelationValidator(attribute, relations).test(isValidKey(key));\n }\n\n if (_.has(attribute, 'type')) {\n return getTypeValidator(attribute, { types, modelType, attributes }).test(\n isValidKey(key)\n );\n }\n\n return typeOrRelationValidator;\n })\n )\n .required('attributes.required');\n });\n};\n\nconst isConflictingKey = (key: string, attributes: Record<string, any>) => {\n const snakeCaseKey = snakeCase(key);\n\n return Object.keys(attributes).some((existingKey) => {\n if (existingKey === key) return false; // don't compare against itself\n return snakeCase(existingKey) === snakeCaseKey;\n });\n};\n\nconst isForbiddenKey = (key: string) => {\n return getService('builder').isReservedAttributeName(key);\n};\n\nconst forbiddenValidator = () => {\n const reservedNames = [...getService('builder').getReservedNames().attributes];\n\n return yup.mixed().test({\n name: 'forbiddenKeys',\n message: `Attribute keys cannot be one of ${reservedNames.join(', ')}`,\n test: () => false,\n });\n};\n\nconst conflictingKeysValidator = (key: string) => {\n return yup.mixed().test({\n name: 'conflictingKeys',\n message: `Attribute ${key} conflicts with an existing key`,\n test: () => false,\n });\n};\n\nconst typeOrRelationValidator = yup.object().test({\n name: 'mustHaveTypeOrTarget',\n message: 'Attribute must have either a type or a target',\n test: () => false,\n});\n"],"names":["createSchema","types","relations","modelType","shape","description","yup","string","options","object","pluginOptions","collectionName","nullable","test","isValidCollectionName","attributes","createAttributesValidator","draftAndPublish","boolean","modelTypes","CONTENT_TYPE","kind","oneOf","typeKinds","SINGLE_TYPE","COLLECTION_TYPE","noUnknown","lazy","_","mapValues","attribute","key","isForbiddenKey","forbiddenValidator","isConflictingKey","conflictingKeysValidator","type","getRelationValidator","isValidKey","has","getTypeValidator","typeOrRelationValidator","required","snakeCaseKey","snakeCase","Object","keys","some","existingKey","getService","isReservedAttributeName","reservedNames","getReservedNames","mixed","name","message","join"],"mappings":"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"}
|
|
@@ -5,12 +5,16 @@ var utils = require('@strapi/utils');
|
|
|
5
5
|
var constants = require('../../services/constants.js');
|
|
6
6
|
var common = require('./common.js');
|
|
7
7
|
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var ___default = /*#__PURE__*/_interopDefault(_);
|
|
11
|
+
|
|
8
12
|
const maxLengthIsGreaterThanOrEqualToMinLength = {
|
|
9
13
|
name: 'isGreaterThanMin',
|
|
10
14
|
message: 'maxLength must be greater or equal to minLength',
|
|
11
15
|
test (value) {
|
|
12
16
|
const { minLength } = this.parent;
|
|
13
|
-
return !(!
|
|
17
|
+
return !(!___default.default.isUndefined(minLength) && !___default.default.isUndefined(value) && value < minLength);
|
|
14
18
|
}
|
|
15
19
|
};
|
|
16
20
|
const getTypeValidator = (attribute, { types, modelType, attributes })=>{
|
|
@@ -47,14 +51,14 @@ const getTypeShape = (attribute, { attributes } = {})=>{
|
|
|
47
51
|
{
|
|
48
52
|
return {
|
|
49
53
|
required: common.validators.required,
|
|
50
|
-
targetField: utils.yup.string().oneOf(Object.keys(attributes).filter((key)=>constants.VALID_UID_TARGETS.includes(
|
|
54
|
+
targetField: utils.yup.string().oneOf(Object.keys(attributes).filter((key)=>constants.VALID_UID_TARGETS.includes(___default.default.get(attributes[key], 'type')))).nullable(),
|
|
51
55
|
default: utils.yup.string().test('isValidDefaultUID', 'cannot define a default UID if the targetField is set', function(value) {
|
|
52
56
|
const { targetField } = this.parent;
|
|
53
|
-
return !!(
|
|
57
|
+
return !!(___default.default.isNil(targetField) || ___default.default.isNil(value));
|
|
54
58
|
}).test('isValidDefaultRegexUID', `\${path} must match the custom regex or the default one "${common.UID_REGEX}"`, function(value) {
|
|
55
59
|
const { regex } = this.parent;
|
|
56
60
|
if (regex) {
|
|
57
|
-
return !
|
|
61
|
+
return !___default.default.isNil(value) && (value === '' || new RegExp(regex).test(value));
|
|
58
62
|
}
|
|
59
63
|
return value === '' || common.UID_REGEX.test(value);
|
|
60
64
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean().nullable(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean().nullable(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
var z = require('zod/v4');
|
|
4
4
|
var utils = require('@strapi/utils');
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function _interopNamespace(e) {
|
|
7
|
+
if (e && e.__esModule) return e;
|
|
7
8
|
var n = Object.create(null);
|
|
8
9
|
if (e) {
|
|
9
10
|
Object.keys(e).forEach(function (k) {
|
|
@@ -20,7 +21,7 @@ function _interopNamespaceDefault(e) {
|
|
|
20
21
|
return Object.freeze(n);
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
var z__namespace = /*#__PURE__*/
|
|
24
|
+
var z__namespace = /*#__PURE__*/_interopNamespace(z);
|
|
24
25
|
|
|
25
26
|
const ctUIDRegexp = /^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$/;
|
|
26
27
|
const componentUIDRegexp = /^[\w-]+\.[\w-]+$/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-api.js","sources":["../../../server/src/routes/content-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nimport { createContentApiRoutesFactory } from '@strapi/utils';\n\nconst ctUIDRegexp = /^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$/;\nconst componentUIDRegexp = /^[\\w-]+\\.[\\w-]+$/;\n\nconst baseAttributeSchema = z.object({\n type: z.string(),\n configurable: z.literal(false).optional(),\n private: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst mediaAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean(),\n required: z.boolean().optional(),\n allowedTypes: z.array(z.string()).optional(),\n});\n\nconst relationAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('relation'),\n relation: z.string(),\n target: z.string().regex(ctUIDRegexp),\n targetAttribute: z.string().nullable(),\n autoPopulate: z.boolean().optional(),\n mappedBy: z.string().optional(),\n inversedBy: z.string().optional(),\n});\n\nconst componentAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean(),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string().regex(componentUIDRegexp)),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst uidAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().optional(),\n});\n\nconst genericAttributeSchema = z.object({\n type: z.string(),\n required: z.boolean().optional(),\n unique: z.boolean().optional(),\n default: z.unknown().optional(),\n min: z.union([z.number(), z.string()]).optional(),\n max: z.union([z.number(), z.string()]).optional(),\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n enum: z.array(z.string()).optional(),\n regex: z.string().optional(),\n private: z.boolean().optional(),\n configurable: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst attributeSchema = z.union([\n mediaAttributeSchema,\n relationAttributeSchema,\n componentAttributeSchema,\n dynamicZoneAttributeSchema,\n uidAttributeSchema,\n genericAttributeSchema,\n]);\n\nconst contentTypeSchemaBase = z.object({\n displayName: z.string(),\n singularName: z.string(),\n pluralName: z.string(),\n description: z.string(),\n draftAndPublish: z.boolean(),\n kind: z.enum(['collectionType', 'singleType']),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n visible: z.boolean(),\n restrictRelationsTo: z.array(z.string()).nullable(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n reviewWorkflows: z.boolean().optional(),\n populateCreatorFields: z.boolean().optional(),\n comment: z.string().optional(),\n version: z.string().optional(),\n});\n\nconst formattedContentTypeSchema = z.object({\n uid: z.string().regex(ctUIDRegexp),\n plugin: z.string().optional(),\n apiID: z.string(),\n schema: contentTypeSchemaBase,\n});\n\nconst componentSchemaBase = z.object({\n displayName: z.string(),\n description: z.string(),\n icon: z.string().optional(),\n connection: z.string().optional(),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst formattedComponentSchema = z.object({\n uid: z.string().regex(componentUIDRegexp),\n category: z.string(),\n apiId: z.string(),\n schema: componentSchemaBase,\n});\n\nconst createRoutes = createContentApiRoutesFactory((): Core.RouterInput['routes'] => {\n return [\n {\n method: 'GET',\n path: '/content-types',\n handler: 'content-types.getContentTypes',\n request: {\n query: { kind: z.enum(['collectionType', 'singleType']) },\n },\n response: z.object({ data: z.array(formattedContentTypeSchema) }),\n },\n {\n method: 'GET',\n path: '/content-types/:uid',\n handler: 'content-types.getContentType',\n request: {\n params: {\n uid: z.string().regex(ctUIDRegexp),\n },\n },\n response: z.object({ data: formattedContentTypeSchema }),\n },\n {\n method: 'GET',\n path: '/components',\n handler: 'components.getComponents',\n response: z.object({ data: z.array(formattedComponentSchema) }),\n },\n {\n method: 'GET',\n path: '/components/:uid',\n handler: 'components.getComponent',\n request: {\n params: {\n uid: z.string().regex(componentUIDRegexp),\n },\n },\n response: z.object({ data: formattedComponentSchema }),\n },\n ];\n});\n\nexport default createRoutes;\n"],"names":["ctUIDRegexp","componentUIDRegexp","baseAttributeSchema","z","object","type","string","configurable","literal","optional","private","boolean","pluginOptions","record","unknown","mediaAttributeSchema","extend","multiple","required","allowedTypes","array","relationAttributeSchema","relation","target","regex","targetAttribute","nullable","autoPopulate","mappedBy","inversedBy","componentAttributeSchema","component","repeatable","min","number","max","dynamicZoneAttributeSchema","components","uidAttributeSchema","targetField","genericAttributeSchema","unique","default","union","minLength","maxLength","enum","attributeSchema","contentTypeSchemaBase","displayName","singularName","pluralName","description","draftAndPublish","kind","collectionName","attributes","visible","restrictRelationsTo","options","reviewWorkflows","populateCreatorFields","comment","version","formattedContentTypeSchema","uid","plugin","apiID","schema","componentSchemaBase","icon","connection","formattedComponentSchema","category","apiId","createRoutes","createContentApiRoutesFactory","method","path","handler","request","query","response","data","params"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content-api.js","sources":["../../../server/src/routes/content-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nimport { createContentApiRoutesFactory } from '@strapi/utils';\n\nconst ctUIDRegexp = /^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$/;\nconst componentUIDRegexp = /^[\\w-]+\\.[\\w-]+$/;\n\nconst baseAttributeSchema = z.object({\n type: z.string(),\n configurable: z.literal(false).optional(),\n private: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst mediaAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean(),\n required: z.boolean().optional(),\n allowedTypes: z.array(z.string()).optional(),\n});\n\nconst relationAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('relation'),\n relation: z.string(),\n target: z.string().regex(ctUIDRegexp),\n targetAttribute: z.string().nullable(),\n autoPopulate: z.boolean().optional(),\n mappedBy: z.string().optional(),\n inversedBy: z.string().optional(),\n});\n\nconst componentAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean(),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string().regex(componentUIDRegexp)),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst uidAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().optional(),\n});\n\nconst genericAttributeSchema = z.object({\n type: z.string(),\n required: z.boolean().optional(),\n unique: z.boolean().optional(),\n default: z.unknown().optional(),\n min: z.union([z.number(), z.string()]).optional(),\n max: z.union([z.number(), z.string()]).optional(),\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n enum: z.array(z.string()).optional(),\n regex: z.string().optional(),\n private: z.boolean().optional(),\n configurable: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst attributeSchema = z.union([\n mediaAttributeSchema,\n relationAttributeSchema,\n componentAttributeSchema,\n dynamicZoneAttributeSchema,\n uidAttributeSchema,\n genericAttributeSchema,\n]);\n\nconst contentTypeSchemaBase = z.object({\n displayName: z.string(),\n singularName: z.string(),\n pluralName: z.string(),\n description: z.string(),\n draftAndPublish: z.boolean(),\n kind: z.enum(['collectionType', 'singleType']),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n visible: z.boolean(),\n restrictRelationsTo: z.array(z.string()).nullable(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n reviewWorkflows: z.boolean().optional(),\n populateCreatorFields: z.boolean().optional(),\n comment: z.string().optional(),\n version: z.string().optional(),\n});\n\nconst formattedContentTypeSchema = z.object({\n uid: z.string().regex(ctUIDRegexp),\n plugin: z.string().optional(),\n apiID: z.string(),\n schema: contentTypeSchemaBase,\n});\n\nconst componentSchemaBase = z.object({\n displayName: z.string(),\n description: z.string(),\n icon: z.string().optional(),\n connection: z.string().optional(),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst formattedComponentSchema = z.object({\n uid: z.string().regex(componentUIDRegexp),\n category: z.string(),\n apiId: z.string(),\n schema: componentSchemaBase,\n});\n\nconst createRoutes = createContentApiRoutesFactory((): Core.RouterInput['routes'] => {\n return [\n {\n method: 'GET',\n path: '/content-types',\n handler: 'content-types.getContentTypes',\n request: {\n query: { kind: z.enum(['collectionType', 'singleType']) },\n },\n response: z.object({ data: z.array(formattedContentTypeSchema) }),\n },\n {\n method: 'GET',\n path: '/content-types/:uid',\n handler: 'content-types.getContentType',\n request: {\n params: {\n uid: z.string().regex(ctUIDRegexp),\n },\n },\n response: z.object({ data: formattedContentTypeSchema }),\n },\n {\n method: 'GET',\n path: '/components',\n handler: 'components.getComponents',\n response: z.object({ data: z.array(formattedComponentSchema) }),\n },\n {\n method: 'GET',\n path: '/components/:uid',\n handler: 'components.getComponent',\n request: {\n params: {\n uid: z.string().regex(componentUIDRegexp),\n },\n },\n response: z.object({ data: formattedComponentSchema }),\n },\n ];\n});\n\nexport default createRoutes;\n"],"names":["ctUIDRegexp","componentUIDRegexp","baseAttributeSchema","z","object","type","string","configurable","literal","optional","private","boolean","pluginOptions","record","unknown","mediaAttributeSchema","extend","multiple","required","allowedTypes","array","relationAttributeSchema","relation","target","regex","targetAttribute","nullable","autoPopulate","mappedBy","inversedBy","componentAttributeSchema","component","repeatable","min","number","max","dynamicZoneAttributeSchema","components","uidAttributeSchema","targetField","genericAttributeSchema","unique","default","union","minLength","maxLength","enum","attributeSchema","contentTypeSchemaBase","displayName","singularName","pluralName","description","draftAndPublish","kind","collectionName","attributes","visible","restrictRelationsTo","options","reviewWorkflows","populateCreatorFields","comment","version","formattedContentTypeSchema","uid","plugin","apiID","schema","componentSchemaBase","icon","connection","formattedComponentSchema","category","apiId","createRoutes","createContentApiRoutesFactory","method","path","handler","request","query","response","data","params"],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
var path = require('path');
|
|
4
4
|
var fse = require('fs-extra');
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function _interopNamespace(e) {
|
|
7
|
+
if (e && e.__esModule) return e;
|
|
7
8
|
var n = Object.create(null);
|
|
8
9
|
if (e) {
|
|
9
10
|
Object.keys(e).forEach(function (k) {
|
|
@@ -20,8 +21,8 @@ function _interopNamespaceDefault(e) {
|
|
|
20
21
|
return Object.freeze(n);
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
var path__namespace = /*#__PURE__*/
|
|
24
|
-
var fse__namespace = /*#__PURE__*/
|
|
24
|
+
var path__namespace = /*#__PURE__*/_interopNamespace(path);
|
|
25
|
+
var fse__namespace = /*#__PURE__*/_interopNamespace(fse);
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Deletes the API folder of a contentType
|