@strapi/core 0.0.0-experimental.838b114ef86c9081f990c3b46f5843a41088ec64 → 0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8
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.
Potentially problematic release.
This version of @strapi/core might be problematic. Click here for more details.
- package/dist/core-api/controller/index.js +1 -1
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +1 -1
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/transform.js +1 -1
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs +1 -1
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/package.json.js +11 -11
- package/dist/package.json.mjs +11 -11
- package/dist/services/content-api/index.d.ts +1 -1
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/index.js +1 -1
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs +2 -2
- package/dist/services/content-api/index.mjs.map +1 -1
- package/dist/services/content-source-maps.d.ts +6 -12
- package/dist/services/content-source-maps.d.ts.map +1 -1
- package/dist/services/content-source-maps.js +25 -100
- package/dist/services/content-source-maps.js.map +1 -1
- package/dist/services/content-source-maps.mjs +25 -100
- package/dist/services/content-source-maps.mjs.map +1 -1
- package/package.json +11 -11
|
@@ -17,7 +17,7 @@ function createController({ contentType }) {
|
|
|
17
17
|
return transform.transformResponse(data, meta, {
|
|
18
18
|
contentType,
|
|
19
19
|
useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',
|
|
20
|
-
encodeSourceMaps: ctx?.headers?.['encode-source-maps'] === 'true'
|
|
20
|
+
encodeSourceMaps: ctx?.headers?.['strapi-encode-source-maps'] === 'true'
|
|
21
21
|
});
|
|
22
22
|
},
|
|
23
23
|
async sanitizeOutput (data, ctx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\nimport requestCtx from '../../services/request-context';\n\nconst isSingleType = (\n contentType: Struct.ContentTypeSchema\n): contentType is Struct.SingleTypeSchema => contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Struct.SingleTypeSchema | Struct.CollectionTypeSchema>(opts: {\n contentType: T;\n}): T extends Struct.SingleTypeSchema\n ? Core.CoreAPI.Controller.SingleType\n : Core.CoreAPI.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: Core.CoreAPI.Controller.Base = {\n transformResponse(data, meta) {\n const ctx = requestCtx.get();\n return transformResponse(data, meta, {\n contentType,\n useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',\n encodeSourceMaps: ctx?.headers?.['encode-source-maps'] === 'true',\n });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["isSingleType","contentType","contentTypeUtils","getAuthFromKoaContext","ctx","prop","createController","proto","transformResponse","data","meta","requestCtx","get","useJsonAPIFormat","headers","encodeSourceMaps","sanitizeOutput","auth","strapi","contentAPI","sanitize","output","sanitizeInput","input","sanitizeQuery","query","validateQuery","validate","validateInput","ctrl","createSingleTypeController","createCollectionTypeController","Object","assign","create"],"mappings":";;;;;;;;;AAUA,MAAMA,YAAe,GAAA,CACnBC,WAC2CC,GAAAA,wBAAAA,CAAiBF,YAAY,CAACC,WAAAA,CAAAA;AAE3E,MAAME,wBAAwB,CAACC,GAAAA,GAAqBC,OAAK,CAAA,YAAA,EAAcD,QAAQ,EAAC;AAOhF,SAASE,gBAAAA,CAAiB,EACxBL,WAAW,EAGZ,EAAA;;AAGC,IAAA,MAAMM,KAAsC,GAAA;QAC1CC,iBAAkBC,CAAAA,CAAAA,IAAI,EAAEC,IAAI,EAAA;YAC1B,MAAMN,GAAAA,GAAMO,eAAWC,GAAG,EAAA;YAC1B,OAAOJ,2BAAAA,CAAkBC,MAAMC,IAAM,EAAA;AACnCT,gBAAAA,WAAAA;AACAY,gBAAAA,gBAAAA,EAAkBT,GAAKU,EAAAA,OAAAA,GAAU,wBAAA,CAAyB,KAAK,IAAA;AAC/DC,gBAAAA,gBAAAA,EAAkBX,GAAKU,EAAAA,OAAAA,GAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\nimport requestCtx from '../../services/request-context';\n\nconst isSingleType = (\n contentType: Struct.ContentTypeSchema\n): contentType is Struct.SingleTypeSchema => contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Struct.SingleTypeSchema | Struct.CollectionTypeSchema>(opts: {\n contentType: T;\n}): T extends Struct.SingleTypeSchema\n ? Core.CoreAPI.Controller.SingleType\n : Core.CoreAPI.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: Core.CoreAPI.Controller.Base = {\n transformResponse(data, meta) {\n const ctx = requestCtx.get();\n return transformResponse(data, meta, {\n contentType,\n useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',\n encodeSourceMaps: ctx?.headers?.['strapi-encode-source-maps'] === 'true',\n });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["isSingleType","contentType","contentTypeUtils","getAuthFromKoaContext","ctx","prop","createController","proto","transformResponse","data","meta","requestCtx","get","useJsonAPIFormat","headers","encodeSourceMaps","sanitizeOutput","auth","strapi","contentAPI","sanitize","output","sanitizeInput","input","sanitizeQuery","query","validateQuery","validate","validateInput","ctrl","createSingleTypeController","createCollectionTypeController","Object","assign","create"],"mappings":";;;;;;;;;AAUA,MAAMA,YAAe,GAAA,CACnBC,WAC2CC,GAAAA,wBAAAA,CAAiBF,YAAY,CAACC,WAAAA,CAAAA;AAE3E,MAAME,wBAAwB,CAACC,GAAAA,GAAqBC,OAAK,CAAA,YAAA,EAAcD,QAAQ,EAAC;AAOhF,SAASE,gBAAAA,CAAiB,EACxBL,WAAW,EAGZ,EAAA;;AAGC,IAAA,MAAMM,KAAsC,GAAA;QAC1CC,iBAAkBC,CAAAA,CAAAA,IAAI,EAAEC,IAAI,EAAA;YAC1B,MAAMN,GAAAA,GAAMO,eAAWC,GAAG,EAAA;YAC1B,OAAOJ,2BAAAA,CAAkBC,MAAMC,IAAM,EAAA;AACnCT,gBAAAA,WAAAA;AACAY,gBAAAA,gBAAAA,EAAkBT,GAAKU,EAAAA,OAAAA,GAAU,wBAAA,CAAyB,KAAK,IAAA;AAC/DC,gBAAAA,gBAAAA,EAAkBX,GAAKU,EAAAA,OAAAA,GAAU,2BAAA,CAA4B,KAAK;AACpE,aAAA,CAAA;AACF,SAAA;QAEA,MAAME,cAAAA,CAAAA,CAAeP,IAAI,EAAEL,GAAG,EAAA;AAC5B,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACC,MAAM,CAACZ,MAAMR,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACrE,SAAA;QAEA,MAAMK,aAAAA,CAAAA,CAAcb,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACG,KAAK,CAACd,MAAMR,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACpE,SAAA;AAEA,QAAA,MAAMO,eAAcpB,GAAG,EAAA;AACrB,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACK,KAAK,CAACrB,GAAAA,CAAIqB,KAAK,EAAExB,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;AAEA,QAAA,MAAMS,eAActB,GAAG,EAAA;AACrB,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACQ,QAAQ,CAACF,KAAK,CAACrB,GAAAA,CAAIqB,KAAK,EAAExB,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;QAEA,MAAMW,aAAAA,CAAAA,CAAcnB,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACQ,QAAQ,CAACJ,KAAK,CAACd,MAAMR,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACpE;AACF,KAAA;IAEA,IAAIY,IAAAA;AAEJ,IAAA,IAAI7B,aAAaC,WAAc,CAAA,EAAA;AAC7B4B,QAAAA,IAAAA,GAAOC,qCAA2B,CAAA;AAAE7B,YAAAA;AAAY,SAAA,CAAA;KAC3C,MAAA;AACL4B,QAAAA,IAAAA,GAAOE,6CAA+B,CAAA;AAAE9B,YAAAA;AAAY,SAAA,CAAA;AACtD;AAEA,IAAA,OAAO+B,OAAOC,MAAM,CAACD,MAAOE,CAAAA,MAAM,CAAC3B,KAAQsB,CAAAA,EAAAA,IAAAA,CAAAA;AAC7C;;;;"}
|
|
@@ -15,7 +15,7 @@ function createController({ contentType }) {
|
|
|
15
15
|
return transformResponse(data, meta, {
|
|
16
16
|
contentType,
|
|
17
17
|
useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',
|
|
18
|
-
encodeSourceMaps: ctx?.headers?.['encode-source-maps'] === 'true'
|
|
18
|
+
encodeSourceMaps: ctx?.headers?.['strapi-encode-source-maps'] === 'true'
|
|
19
19
|
});
|
|
20
20
|
},
|
|
21
21
|
async sanitizeOutput (data, ctx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\nimport requestCtx from '../../services/request-context';\n\nconst isSingleType = (\n contentType: Struct.ContentTypeSchema\n): contentType is Struct.SingleTypeSchema => contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Struct.SingleTypeSchema | Struct.CollectionTypeSchema>(opts: {\n contentType: T;\n}): T extends Struct.SingleTypeSchema\n ? Core.CoreAPI.Controller.SingleType\n : Core.CoreAPI.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: Core.CoreAPI.Controller.Base = {\n transformResponse(data, meta) {\n const ctx = requestCtx.get();\n return transformResponse(data, meta, {\n contentType,\n useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',\n encodeSourceMaps: ctx?.headers?.['encode-source-maps'] === 'true',\n });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["isSingleType","contentType","contentTypeUtils","getAuthFromKoaContext","ctx","prop","createController","proto","transformResponse","data","meta","requestCtx","get","useJsonAPIFormat","headers","encodeSourceMaps","sanitizeOutput","auth","strapi","contentAPI","sanitize","output","sanitizeInput","input","sanitizeQuery","query","validateQuery","validate","validateInput","ctrl","createSingleTypeController","createCollectionTypeController","Object","assign","create"],"mappings":";;;;;;;AAUA,MAAMA,YAAe,GAAA,CACnBC,WAC2CC,GAAAA,YAAAA,CAAiBF,YAAY,CAACC,WAAAA,CAAAA;AAE3E,MAAME,wBAAwB,CAACC,GAAAA,GAAqBC,IAAK,CAAA,YAAA,EAAcD,QAAQ,EAAC;AAOhF,SAASE,gBAAAA,CAAiB,EACxBL,WAAW,EAGZ,EAAA;;AAGC,IAAA,MAAMM,KAAsC,GAAA;QAC1CC,iBAAkBC,CAAAA,CAAAA,IAAI,EAAEC,IAAI,EAAA;YAC1B,MAAMN,GAAAA,GAAMO,WAAWC,GAAG,EAAA;YAC1B,OAAOJ,iBAAAA,CAAkBC,MAAMC,IAAM,EAAA;AACnCT,gBAAAA,WAAAA;AACAY,gBAAAA,gBAAAA,EAAkBT,GAAKU,EAAAA,OAAAA,GAAU,wBAAA,CAAyB,KAAK,IAAA;AAC/DC,gBAAAA,gBAAAA,EAAkBX,GAAKU,EAAAA,OAAAA,GAAU,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\nimport requestCtx from '../../services/request-context';\n\nconst isSingleType = (\n contentType: Struct.ContentTypeSchema\n): contentType is Struct.SingleTypeSchema => contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Struct.SingleTypeSchema | Struct.CollectionTypeSchema>(opts: {\n contentType: T;\n}): T extends Struct.SingleTypeSchema\n ? Core.CoreAPI.Controller.SingleType\n : Core.CoreAPI.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: Core.CoreAPI.Controller.Base = {\n transformResponse(data, meta) {\n const ctx = requestCtx.get();\n return transformResponse(data, meta, {\n contentType,\n useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',\n encodeSourceMaps: ctx?.headers?.['strapi-encode-source-maps'] === 'true',\n });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["isSingleType","contentType","contentTypeUtils","getAuthFromKoaContext","ctx","prop","createController","proto","transformResponse","data","meta","requestCtx","get","useJsonAPIFormat","headers","encodeSourceMaps","sanitizeOutput","auth","strapi","contentAPI","sanitize","output","sanitizeInput","input","sanitizeQuery","query","validateQuery","validate","validateInput","ctrl","createSingleTypeController","createCollectionTypeController","Object","assign","create"],"mappings":";;;;;;;AAUA,MAAMA,YAAe,GAAA,CACnBC,WAC2CC,GAAAA,YAAAA,CAAiBF,YAAY,CAACC,WAAAA,CAAAA;AAE3E,MAAME,wBAAwB,CAACC,GAAAA,GAAqBC,IAAK,CAAA,YAAA,EAAcD,QAAQ,EAAC;AAOhF,SAASE,gBAAAA,CAAiB,EACxBL,WAAW,EAGZ,EAAA;;AAGC,IAAA,MAAMM,KAAsC,GAAA;QAC1CC,iBAAkBC,CAAAA,CAAAA,IAAI,EAAEC,IAAI,EAAA;YAC1B,MAAMN,GAAAA,GAAMO,WAAWC,GAAG,EAAA;YAC1B,OAAOJ,iBAAAA,CAAkBC,MAAMC,IAAM,EAAA;AACnCT,gBAAAA,WAAAA;AACAY,gBAAAA,gBAAAA,EAAkBT,GAAKU,EAAAA,OAAAA,GAAU,wBAAA,CAAyB,KAAK,IAAA;AAC/DC,gBAAAA,gBAAAA,EAAkBX,GAAKU,EAAAA,OAAAA,GAAU,2BAAA,CAA4B,KAAK;AACpE,aAAA,CAAA;AACF,SAAA;QAEA,MAAME,cAAAA,CAAAA,CAAeP,IAAI,EAAEL,GAAG,EAAA;AAC5B,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACC,MAAM,CAACZ,MAAMR,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACrE,SAAA;QAEA,MAAMK,aAAAA,CAAAA,CAAcb,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACG,KAAK,CAACd,MAAMR,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACpE,SAAA;AAEA,QAAA,MAAMO,eAAcpB,GAAG,EAAA;AACrB,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACK,KAAK,CAACrB,GAAAA,CAAIqB,KAAK,EAAExB,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;AAEA,QAAA,MAAMS,eAActB,GAAG,EAAA;AACrB,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACQ,QAAQ,CAACF,KAAK,CAACrB,GAAAA,CAAIqB,KAAK,EAAExB,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;QAEA,MAAMW,aAAAA,CAAAA,CAAcnB,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMa,OAAOd,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOc,MAAAA,CAAOC,UAAU,CAACQ,QAAQ,CAACJ,KAAK,CAACd,MAAMR,WAAa,EAAA;AAAEgB,gBAAAA;AAAK,aAAA,CAAA;AACpE;AACF,KAAA;IAEA,IAAIY,IAAAA;AAEJ,IAAA,IAAI7B,aAAaC,WAAc,CAAA,EAAA;AAC7B4B,QAAAA,IAAAA,GAAOC,0BAA2B,CAAA;AAAE7B,YAAAA;AAAY,SAAA,CAAA;KAC3C,MAAA;AACL4B,QAAAA,IAAAA,GAAOE,8BAA+B,CAAA;AAAE9B,YAAAA;AAAY,SAAA,CAAA;AACtD;AAEA,IAAA,OAAO+B,OAAOC,MAAM,CAACD,MAAOE,CAAAA,MAAM,CAAC3B,KAAQsB,CAAAA,EAAAA,IAAAA,CAAAA;AAC7C;;;;"}
|
|
@@ -23,7 +23,7 @@ const transformResponse = async (resource, meta = {}, opts = {
|
|
|
23
23
|
const applyJsonApiFormat = async (data)=>opts.useJsonAPIFormat ? transformEntry(data, opts?.contentType) : data;
|
|
24
24
|
const applySourceMapEncoding = async (data)=>opts.encodeSourceMaps && opts.contentType ? strapi.get('content-source-maps').encodeSourceMaps({
|
|
25
25
|
data,
|
|
26
|
-
|
|
26
|
+
schema: opts.contentType
|
|
27
27
|
}) : data;
|
|
28
28
|
// Process data through transformation pipeline
|
|
29
29
|
const data = await strapiUtils.async.pipe(applyJsonApiFormat, applySourceMapEncoding)(resource);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { UID, Struct, Data } from '@strapi/types';\nimport { async } from '@strapi/utils';\n\ntype TransformedEntry = {\n id: string;\n documentId?: Data.DocumentID | null;\n attributes: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n documentId: Data.DocumentID | null;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\ninterface TransformOptions {\n contentType?: Struct.ContentTypeSchema | Struct.ComponentSchema;\n /**\n * @deprecated this option is deprecated and will be removed in the next major version\n */\n useJsonAPIFormat?: boolean;\n encodeSourceMaps?: boolean;\n}\n\nconst transformResponse = async (\n resource: any,\n meta: unknown = {},\n opts: TransformOptions = {\n useJsonAPIFormat: false,\n encodeSourceMaps: false,\n }\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n if (!isPlainObject(resource) && !Array.isArray(resource)) {\n throw new Error('Entry must be an object or an array of objects');\n }\n\n // Transform pipeline functions\n const applyJsonApiFormat = async (data: any) =>\n opts.useJsonAPIFormat ? transformEntry(data, opts?.contentType) : data;\n\n const applySourceMapEncoding = async (data: any) =>\n opts.encodeSourceMaps && opts.contentType\n ? strapi.get('content-source-maps').encodeSourceMaps({ data,
|
|
1
|
+
{"version":3,"file":"transform.js","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { UID, Struct, Data } from '@strapi/types';\nimport { async } from '@strapi/utils';\n\ntype TransformedEntry = {\n id: string;\n documentId?: Data.DocumentID | null;\n attributes: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n documentId: Data.DocumentID | null;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\ninterface TransformOptions {\n contentType?: Struct.ContentTypeSchema | Struct.ComponentSchema;\n /**\n * @deprecated this option is deprecated and will be removed in the next major version\n */\n useJsonAPIFormat?: boolean;\n encodeSourceMaps?: boolean;\n}\n\nconst transformResponse = async (\n resource: any,\n meta: unknown = {},\n opts: TransformOptions = {\n useJsonAPIFormat: false,\n encodeSourceMaps: false,\n }\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n if (!isPlainObject(resource) && !Array.isArray(resource)) {\n throw new Error('Entry must be an object or an array of objects');\n }\n\n // Transform pipeline functions\n const applyJsonApiFormat = async (data: any) =>\n opts.useJsonAPIFormat ? transformEntry(data, opts?.contentType) : data;\n\n const applySourceMapEncoding = async (data: any) =>\n opts.encodeSourceMaps && opts.contentType\n ? strapi.get('content-source-maps').encodeSourceMaps({ data, schema: opts.contentType })\n : data;\n\n // Process data through transformation pipeline\n const data = await async.pipe(applyJsonApiFormat, applySourceMapEncoding)(resource);\n\n return {\n data,\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Struct.ComponentSchema\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Struct.ComponentSchema\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n const res = transformEntry(data, component);\n\n if (isNil(res)) {\n return res;\n }\n\n const { id, attributes } = res;\n return { id, ...attributes };\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Struct.Schema\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Struct.Schema\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, documentId, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(property, strapi.contentType(attribute.target));\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n documentId,\n attributes: attributeValues,\n };\n}\n\nexport { transformResponse };\n"],"names":["isEntry","property","isPlainObject","Array","isArray","isDZEntries","transformResponse","resource","meta","opts","useJsonAPIFormat","encodeSourceMaps","isNil","Error","applyJsonApiFormat","data","transformEntry","contentType","applySourceMapEncoding","strapi","get","schema","async","pipe","transformComponent","component","map","datum","res","id","attributes","entry","type","singleEntry","documentId","properties","attributeValues","key","Object","keys","attribute","target","components","subProperty","__component"],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ const transformResponse = async (resource, meta = {}, opts = {
|
|
|
21
21
|
const applyJsonApiFormat = async (data)=>opts.useJsonAPIFormat ? transformEntry(data, opts?.contentType) : data;
|
|
22
22
|
const applySourceMapEncoding = async (data)=>opts.encodeSourceMaps && opts.contentType ? strapi.get('content-source-maps').encodeSourceMaps({
|
|
23
23
|
data,
|
|
24
|
-
|
|
24
|
+
schema: opts.contentType
|
|
25
25
|
}) : data;
|
|
26
26
|
// Process data through transformation pipeline
|
|
27
27
|
const data = await async.pipe(applyJsonApiFormat, applySourceMapEncoding)(resource);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.mjs","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { UID, Struct, Data } from '@strapi/types';\nimport { async } from '@strapi/utils';\n\ntype TransformedEntry = {\n id: string;\n documentId?: Data.DocumentID | null;\n attributes: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n documentId: Data.DocumentID | null;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\ninterface TransformOptions {\n contentType?: Struct.ContentTypeSchema | Struct.ComponentSchema;\n /**\n * @deprecated this option is deprecated and will be removed in the next major version\n */\n useJsonAPIFormat?: boolean;\n encodeSourceMaps?: boolean;\n}\n\nconst transformResponse = async (\n resource: any,\n meta: unknown = {},\n opts: TransformOptions = {\n useJsonAPIFormat: false,\n encodeSourceMaps: false,\n }\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n if (!isPlainObject(resource) && !Array.isArray(resource)) {\n throw new Error('Entry must be an object or an array of objects');\n }\n\n // Transform pipeline functions\n const applyJsonApiFormat = async (data: any) =>\n opts.useJsonAPIFormat ? transformEntry(data, opts?.contentType) : data;\n\n const applySourceMapEncoding = async (data: any) =>\n opts.encodeSourceMaps && opts.contentType\n ? strapi.get('content-source-maps').encodeSourceMaps({ data,
|
|
1
|
+
{"version":3,"file":"transform.mjs","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { UID, Struct, Data } from '@strapi/types';\nimport { async } from '@strapi/utils';\n\ntype TransformedEntry = {\n id: string;\n documentId?: Data.DocumentID | null;\n attributes: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n documentId: Data.DocumentID | null;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\ninterface TransformOptions {\n contentType?: Struct.ContentTypeSchema | Struct.ComponentSchema;\n /**\n * @deprecated this option is deprecated and will be removed in the next major version\n */\n useJsonAPIFormat?: boolean;\n encodeSourceMaps?: boolean;\n}\n\nconst transformResponse = async (\n resource: any,\n meta: unknown = {},\n opts: TransformOptions = {\n useJsonAPIFormat: false,\n encodeSourceMaps: false,\n }\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n if (!isPlainObject(resource) && !Array.isArray(resource)) {\n throw new Error('Entry must be an object or an array of objects');\n }\n\n // Transform pipeline functions\n const applyJsonApiFormat = async (data: any) =>\n opts.useJsonAPIFormat ? transformEntry(data, opts?.contentType) : data;\n\n const applySourceMapEncoding = async (data: any) =>\n opts.encodeSourceMaps && opts.contentType\n ? strapi.get('content-source-maps').encodeSourceMaps({ data, schema: opts.contentType })\n : data;\n\n // Process data through transformation pipeline\n const data = await async.pipe(applyJsonApiFormat, applySourceMapEncoding)(resource);\n\n return {\n data,\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Struct.ComponentSchema\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Struct.ComponentSchema\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n const res = transformEntry(data, component);\n\n if (isNil(res)) {\n return res;\n }\n\n const { id, attributes } = res;\n return { id, ...attributes };\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Struct.Schema\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Struct.Schema\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, documentId, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(property, strapi.contentType(attribute.target));\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n documentId,\n attributes: attributeValues,\n };\n}\n\nexport { transformResponse };\n"],"names":["isEntry","property","isPlainObject","Array","isArray","isDZEntries","transformResponse","resource","meta","opts","useJsonAPIFormat","encodeSourceMaps","isNil","Error","applyJsonApiFormat","data","transformEntry","contentType","applySourceMapEncoding","strapi","get","schema","async","pipe","transformComponent","component","map","datum","res","id","attributes","entry","type","singleEntry","documentId","properties","attributeValues","key","Object","keys","attribute","target","components","subProperty","__component"],"mappings":";;;AAqBA,SAASA,QAAQC,QAAiB,EAAA;AAChC,IAAA,OAAOA,aAAa,IAAQC,IAAAA,aAAAA,CAAcD,QAAaE,CAAAA,IAAAA,KAAAA,CAAMC,OAAO,CAACH,QAAAA,CAAAA;AACvE;AAEA,SAASI,YAAYJ,QAAiB,EAAA;IACpC,OAAOE,KAAAA,CAAMC,OAAO,CAACH,QAAAA,CAAAA;AACvB;AAWA,MAAMK,oBAAoB,OACxBC,QAAAA,EACAC,OAAgB,EAAE,EAClBC,IAAyB,GAAA;IACvBC,gBAAkB,EAAA,KAAA;IAClBC,gBAAkB,EAAA;AACpB,CAAC,GAAA;AAED,IAAA,IAAIC,MAAML,QAAW,CAAA,EAAA;QACnB,OAAOA,QAAAA;AACT;AAEA,IAAA,IAAI,CAACL,aAAcK,CAAAA,QAAAA,CAAAA,IAAa,CAACJ,KAAMC,CAAAA,OAAO,CAACG,QAAW,CAAA,EAAA;AACxD,QAAA,MAAM,IAAIM,KAAM,CAAA,gDAAA,CAAA;AAClB;;IAGA,MAAMC,kBAAAA,GAAqB,OAAOC,IAChCN,GAAAA,IAAAA,CAAKC,gBAAgB,GAAGM,cAAAA,CAAeD,IAAMN,EAAAA,IAAAA,EAAMQ,WAAeF,CAAAA,GAAAA,IAAAA;AAEpE,IAAA,MAAMG,sBAAyB,GAAA,OAAOH,IACpCN,GAAAA,IAAAA,CAAKE,gBAAgB,IAAIF,IAAAA,CAAKQ,WAAW,GACrCE,MAAOC,CAAAA,GAAG,CAAC,qBAAA,CAAA,CAAuBT,gBAAgB,CAAC;AAAEI,YAAAA,IAAAA;AAAMM,YAAAA,MAAAA,EAAQZ,KAAKQ;SACxEF,CAAAA,GAAAA,IAAAA;;AAGN,IAAA,MAAMA,OAAO,MAAMO,KAAAA,CAAMC,IAAI,CAACT,oBAAoBI,sBAAwBX,CAAAA,CAAAA,QAAAA,CAAAA;IAE1E,OAAO;AACLQ,QAAAA,IAAAA;AACAP,QAAAA;AACF,KAAA;AACF;AAMA,SAASgB,kBAAAA,CACPT,IAA4B,EAC5BU,SAAiC,EAAA;IAEjC,IAAItB,KAAAA,CAAMC,OAAO,CAACW,IAAO,CAAA,EAAA;AACvB,QAAA,OAAOA,KAAKW,GAAG,CAAC,CAACC,KAAAA,GAAUH,mBAAmBG,KAAOF,EAAAA,SAAAA,CAAAA,CAAAA;AACvD;IAEA,MAAMG,GAAAA,GAAMZ,eAAeD,IAAMU,EAAAA,SAAAA,CAAAA;AAEjC,IAAA,IAAIb,MAAMgB,GAAM,CAAA,EAAA;QACd,OAAOA,GAAAA;AACT;AAEA,IAAA,MAAM,EAAEC,EAAE,EAAEC,UAAU,EAAE,GAAGF,GAAAA;IAC3B,OAAO;AAAEC,QAAAA,EAAAA;AAAI,QAAA,GAAGC;AAAW,KAAA;AAC7B;AAMA,SAASd,cAAAA,CACPe,KAA6B,EAC7BC,IAAoB,EAAA;AAEpB,IAAA,IAAIpB,MAAMmB,KAAQ,CAAA,EAAA;QAChB,OAAOA,KAAAA;AACT;IAEA,IAAI5B,KAAAA,CAAMC,OAAO,CAAC2B,KAAQ,CAAA,EAAA;AACxB,QAAA,OAAOA,MAAML,GAAG,CAAC,CAACO,WAAAA,GAAgBjB,eAAeiB,WAAaD,EAAAA,IAAAA,CAAAA,CAAAA;AAChE;IAEA,IAAI,CAAC9B,cAAc6B,KAAQ,CAAA,EAAA;AACzB,QAAA,MAAM,IAAIlB,KAAM,CAAA,yBAAA,CAAA;AAClB;AAEA,IAAA,MAAM,EAAEgB,EAAE,EAAEK,UAAU,EAAE,GAAGC,YAAY,GAAGJ,KAAAA;AAE1C,IAAA,MAAMK,kBAA2C,EAAC;AAElD,IAAA,KAAK,MAAMC,GAAAA,IAAOC,MAAOC,CAAAA,IAAI,CAACJ,UAAa,CAAA,CAAA;QACzC,MAAMlC,QAAAA,GAAWkC,UAAU,CAACE,GAAI,CAAA;AAChC,QAAA,MAAMG,SAAYR,GAAAA,IAAAA,IAAQA,IAAKF,CAAAA,UAAU,CAACO,GAAI,CAAA;QAE9C,IAAIG,SAAAA,IAAaA,UAAUR,IAAI,KAAK,cAAchC,OAAQC,CAAAA,QAAAA,CAAAA,IAAa,YAAYuC,SAAW,EAAA;AAC5F,YAAA,MAAMzB,OAAOC,cAAef,CAAAA,QAAAA,EAAUkB,OAAOF,WAAW,CAACuB,UAAUC,MAAM,CAAA,CAAA;YAEzEL,eAAe,CAACC,IAAI,GAAG;AAAEtB,gBAAAA;AAAK,aAAA;AAChC,SAAA,MAAO,IAAIyB,SAAaA,IAAAA,SAAAA,CAAUR,IAAI,KAAK,WAAA,IAAehC,QAAQC,QAAW,CAAA,EAAA;YAC3EmC,eAAe,CAACC,GAAI,CAAA,GAAGb,kBAAmBvB,CAAAA,QAAAA,EAAUkB,OAAOuB,UAAU,CAACF,SAAUf,CAAAA,SAAS,CAAC,CAAA;AAC5F,SAAA,MAAO,IAAIe,SAAaA,IAAAA,SAAAA,CAAUR,IAAI,KAAK,aAAA,IAAiB3B,YAAYJ,QAAW,CAAA,EAAA;AACjF,YAAA,IAAIW,MAAMX,QAAW,CAAA,EAAA;gBACnBmC,eAAe,CAACC,IAAI,GAAGpC,QAAAA;AACzB;AAEAmC,YAAAA,eAAe,CAACC,GAAI,CAAA,GAAGpC,QAASyB,CAAAA,GAAG,CAAC,CAACiB,WAAAA,GAAAA;AACnC,gBAAA,OAAOnB,mBAAmBmB,WAAaxB,EAAAA,MAAAA,CAAOuB,UAAU,CAACC,WAAAA,CAAYC,WAAW,CAAC,CAAA;AACnF,aAAA,CAAA;AACF,SAAA,MAAO,IAAIJ,SAAaA,IAAAA,SAAAA,CAAUR,IAAI,KAAK,OAAA,IAAWhC,QAAQC,QAAW,CAAA,EAAA;AACvE,YAAA,MAAMc,IAAOC,GAAAA,cAAAA,CAAef,QAAUkB,EAAAA,MAAAA,CAAOF,WAAW,CAAC,qBAAA,CAAA,CAAA;YAEzDmB,eAAe,CAACC,IAAI,GAAG;AAAEtB,gBAAAA;AAAK,aAAA;SACzB,MAAA;YACLqB,eAAe,CAACC,IAAI,GAAGpC,QAAAA;AACzB;AACF;IAEA,OAAO;AACL4B,QAAAA,EAAAA;AACAK,QAAAA,UAAAA;QACAJ,UAAYM,EAAAA;AACd,KAAA;AACF;;;;"}
|
package/dist/package.json.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "@strapi/core";
|
|
6
|
-
var version = "0.0.0-experimental.
|
|
6
|
+
var version = "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8";
|
|
7
7
|
var description = "Core of Strapi";
|
|
8
8
|
var homepage = "https://strapi.io";
|
|
9
9
|
var bugs = {
|
|
@@ -59,14 +59,14 @@ var dependencies = {
|
|
|
59
59
|
"@koa/cors": "5.0.0",
|
|
60
60
|
"@koa/router": "12.0.2",
|
|
61
61
|
"@paralleldrive/cuid2": "2.2.2",
|
|
62
|
-
"@strapi/admin": "0.0.0-experimental.
|
|
63
|
-
"@strapi/database": "0.0.0-experimental.
|
|
64
|
-
"@strapi/generators": "0.0.0-experimental.
|
|
65
|
-
"@strapi/logger": "0.0.0-experimental.
|
|
66
|
-
"@strapi/permissions": "0.0.0-experimental.
|
|
67
|
-
"@strapi/types": "0.0.0-experimental.
|
|
68
|
-
"@strapi/typescript-utils": "0.0.0-experimental.
|
|
69
|
-
"@strapi/utils": "0.0.0-experimental.
|
|
62
|
+
"@strapi/admin": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
63
|
+
"@strapi/database": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
64
|
+
"@strapi/generators": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
65
|
+
"@strapi/logger": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
66
|
+
"@strapi/permissions": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
67
|
+
"@strapi/types": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
68
|
+
"@strapi/typescript-utils": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
69
|
+
"@strapi/utils": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
70
70
|
"@vercel/stega": "0.1.2",
|
|
71
71
|
bcryptjs: "2.4.3",
|
|
72
72
|
boxen: "5.1.2",
|
|
@@ -133,9 +133,9 @@ var devDependencies = {
|
|
|
133
133
|
"@types/node": "18.19.24",
|
|
134
134
|
"@types/node-schedule": "2.1.7",
|
|
135
135
|
"@types/statuses": "2.0.1",
|
|
136
|
-
"eslint-config-custom": "0.0.0-experimental.
|
|
136
|
+
"eslint-config-custom": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
137
137
|
supertest: "6.3.3",
|
|
138
|
-
tsconfig: "0.0.0-experimental.
|
|
138
|
+
tsconfig: "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8"
|
|
139
139
|
};
|
|
140
140
|
var engines = {
|
|
141
141
|
node: ">=18.0.0 <=22.x.x",
|
package/dist/package.json.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@strapi/core";
|
|
2
|
-
var version = "0.0.0-experimental.
|
|
2
|
+
var version = "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8";
|
|
3
3
|
var description = "Core of Strapi";
|
|
4
4
|
var homepage = "https://strapi.io";
|
|
5
5
|
var bugs = {
|
|
@@ -55,14 +55,14 @@ var dependencies = {
|
|
|
55
55
|
"@koa/cors": "5.0.0",
|
|
56
56
|
"@koa/router": "12.0.2",
|
|
57
57
|
"@paralleldrive/cuid2": "2.2.2",
|
|
58
|
-
"@strapi/admin": "0.0.0-experimental.
|
|
59
|
-
"@strapi/database": "0.0.0-experimental.
|
|
60
|
-
"@strapi/generators": "0.0.0-experimental.
|
|
61
|
-
"@strapi/logger": "0.0.0-experimental.
|
|
62
|
-
"@strapi/permissions": "0.0.0-experimental.
|
|
63
|
-
"@strapi/types": "0.0.0-experimental.
|
|
64
|
-
"@strapi/typescript-utils": "0.0.0-experimental.
|
|
65
|
-
"@strapi/utils": "0.0.0-experimental.
|
|
58
|
+
"@strapi/admin": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
59
|
+
"@strapi/database": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
60
|
+
"@strapi/generators": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
61
|
+
"@strapi/logger": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
62
|
+
"@strapi/permissions": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
63
|
+
"@strapi/types": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
64
|
+
"@strapi/typescript-utils": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
65
|
+
"@strapi/utils": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
66
66
|
"@vercel/stega": "0.1.2",
|
|
67
67
|
bcryptjs: "2.4.3",
|
|
68
68
|
boxen: "5.1.2",
|
|
@@ -129,9 +129,9 @@ var devDependencies = {
|
|
|
129
129
|
"@types/node": "18.19.24",
|
|
130
130
|
"@types/node-schedule": "2.1.7",
|
|
131
131
|
"@types/statuses": "2.0.1",
|
|
132
|
-
"eslint-config-custom": "0.0.0-experimental.
|
|
132
|
+
"eslint-config-custom": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
133
133
|
supertest: "6.3.3",
|
|
134
|
-
tsconfig: "0.0.0-experimental.
|
|
134
|
+
tsconfig: "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8"
|
|
135
135
|
};
|
|
136
136
|
var engines = {
|
|
137
137
|
node: ">=18.0.0 <=22.x.x",
|
|
@@ -47,7 +47,7 @@ declare const createContentAPI: (strapi: Core.Strapi) => {
|
|
|
47
47
|
controllers: Record<string, string[]>;
|
|
48
48
|
}>;
|
|
49
49
|
};
|
|
50
|
-
getRoutesMap: () => Promise<Record<string,
|
|
50
|
+
getRoutesMap: () => Promise<Record<string, unknown>>;
|
|
51
51
|
sanitize: {
|
|
52
52
|
input: sanitize.SanitizeFunc;
|
|
53
53
|
output: sanitize.SanitizeFunc;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/content-api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/content-api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAqC,MAAM,eAAe,CAAC;AAEtF,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,eAAe,CAAC;AAgB/C;;GAEG;AACH,QAAA,MAAM,gBAAgB,WAAY,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgF5C,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -49,7 +49,7 @@ const filterContentAPI = (route)=>route.info.type === 'content-api';
|
|
|
49
49
|
path: `${apiPrefix}${route.path}`
|
|
50
50
|
}));
|
|
51
51
|
});
|
|
52
|
-
return routesMap;
|
|
52
|
+
return strapiUtils.sanitizeRoutesMapForSerialization(routesMap);
|
|
53
53
|
};
|
|
54
54
|
const sanitizer = strapiUtils.sanitize.createAPISanitizers({
|
|
55
55
|
getModel (uid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { sanitize, validate } from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return routesMap;\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of sanitizers after the creation of the container\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of validators after the creation of the container\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n };\n};\n\nexport default createContentAPI;\n"],"names":["transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","filterContentAPI","info","type","createContentAPI","strapi","getRoutesMap","routesMap","_","forEach","apis","api","apiName","routes","flatMap","filter","length","apiPrefix","get","map","plugins","plugin","transformPrefix","Array","isArray","sanitizer","sanitize","createAPISanitizers","getModel","uid","sanitizers","input","output","validator","validate","createAPIValidators","validators","permissions","instantiatePermissionsUtilities"],"mappings":";;;;;;AAOA,MAAMA,uBAAAA,GAA0B,CAACC,UAAAA,GAAuB,CAACC,KAAAA,GAAAA;AACvD,QAAA,MAAMC,SAASD,KAAME,CAAAA,MAAM,IAAIF,KAAME,CAAAA,MAAM,CAACD,MAAM;QAClD,MAAME,IAAAA,GAAOF,WAAWG,SAAY,GAAA,CAAC,EAAEH,MAAO,CAAA,EAAED,MAAMG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAEJ,UAAAA,CAAW,EAAEC,KAAMG,CAAAA,IAAI,CAAC,CAAC;QAE5F,OAAO;AACL,YAAA,GAAGH,KAAK;AACRG,YAAAA;AACF,SAAA;AACF,KAAA;AAEA,MAAME,mBAAmB,CAACL,KAAAA,GAAsBA,MAAMM,IAAI,CAACC,IAAI,KAAK,aAAA;AAEpE;;IAGA,MAAMC,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,IAAA,MAAMC,YAAe,GAAA,UAAA;AACnB,QAAA,MAAMC,YAA0C,EAAC;AAEjDC,QAAAA,CAAAA,CAAEC,OAAO,CAACJ,MAAAA,CAAOK,IAAI,EAAE,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AAC3B,YAAA,MAAMC,SAASL,CAAEM,CAAAA,OAAO,CAACH,GAAIE,CAAAA,MAAM,EAAE,CAACjB,KAAAA,GAAAA;AACpC,gBAAA,IAAI,YAAYA,KAAO,EAAA;AACrB,oBAAA,OAAOA,MAAMiB,MAAM;AACrB;gBAEA,OAAOjB,KAAAA;AACT,aAAA,CAAA,CAAGmB,MAAM,CAACd,gBAAAA,CAAAA;YAEV,IAAIY,MAAAA,CAAOG,MAAM,KAAK,CAAG,EAAA;AACvB,gBAAA;AACF;AAEA,YAAA,MAAMC,SAAYZ,GAAAA,MAAAA,CAAOP,MAAM,CAACoB,GAAG,CAAC,iBAAA,CAAA;AACpCX,YAAAA,SAAS,CAAC,CAAC,KAAK,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGC,MAAOM,CAAAA,GAAG,CAAC,CAACvB,SAAW;AACpD,oBAAA,GAAGA,KAAK;AACRG,oBAAAA,IAAAA,EAAM,CAAC,EAAEkB,SAAAA,CAAU,EAAErB,KAAMG,CAAAA,IAAI,CAAC;iBAClC,CAAA,CAAA;AACF,SAAA,CAAA;AAEAS,QAAAA,CAAAA,CAAEC,OAAO,CAACJ,MAAAA,CAAOe,OAAO,EAAE,CAACC,MAAQ1B,EAAAA,UAAAA,GAAAA;AACjC,YAAA,MAAM2B,kBAAkB5B,uBAAwBC,CAAAA,UAAAA,CAAAA;AAEhD,YAAA,IAAI4B,KAAMC,CAAAA,OAAO,CAACH,MAAAA,CAAOR,MAAM,CAAG,EAAA;AAChC,gBAAA,OAAOQ,OAAOR,MAAM,CAACM,GAAG,CAACG,eAAAA,CAAAA,CAAiBP,MAAM,CAACd,gBAAAA,CAAAA;AACnD;AAEA,YAAA,MAAMY,SAASL,CAAEM,CAAAA,OAAO,CAACO,MAAAA,CAAOR,MAAM,EAAE,CAACjB,KAAUA,GAAAA,KAAAA,CAAMiB,MAAM,CAACM,GAAG,CAACG,eAAAA,CAAAA,CAAAA,CAAkBP,MAAM,CAC1Fd,gBAAAA,CAAAA;YAGF,IAAIY,MAAAA,CAAOG,MAAM,KAAK,CAAG,EAAA;AACvB,gBAAA;AACF;AAEA,YAAA,MAAMC,SAAYZ,GAAAA,MAAAA,CAAOP,MAAM,CAACoB,GAAG,CAAC,iBAAA,CAAA;AACpCX,YAAAA,SAAS,CAAC,CAAC,QAAQ,EAAEZ,UAAW,CAAA,CAAC,CAAC,GAAGkB,MAAOM,CAAAA,GAAG,CAAC,CAACvB,SAAW;AAC1D,oBAAA,GAAGA,KAAK;AACRG,oBAAAA,IAAAA,EAAM,CAAC,EAAEkB,SAAAA,CAAU,EAAErB,KAAMG,CAAAA,IAAI,CAAC;iBAClC,CAAA,CAAA;AACF,SAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { sanitize, validate, sanitizeRoutesMapForSerialization } from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return sanitizeRoutesMapForSerialization(routesMap);\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of sanitizers after the creation of the container\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of validators after the creation of the container\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n };\n};\n\nexport default createContentAPI;\n"],"names":["transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","filterContentAPI","info","type","createContentAPI","strapi","getRoutesMap","routesMap","_","forEach","apis","api","apiName","routes","flatMap","filter","length","apiPrefix","get","map","plugins","plugin","transformPrefix","Array","isArray","sanitizeRoutesMapForSerialization","sanitizer","sanitize","createAPISanitizers","getModel","uid","sanitizers","input","output","validator","validate","createAPIValidators","validators","permissions","instantiatePermissionsUtilities"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { sanitize, validate } from '@strapi/utils';
|
|
2
|
+
import { sanitize, validate, sanitizeRoutesMapForSerialization } from '@strapi/utils';
|
|
3
3
|
import instantiatePermissionsUtilities from './permissions/index.mjs';
|
|
4
4
|
|
|
5
5
|
const transformRoutePrefixFor = (pluginName)=>(route)=>{
|
|
@@ -47,7 +47,7 @@ const filterContentAPI = (route)=>route.info.type === 'content-api';
|
|
|
47
47
|
path: `${apiPrefix}${route.path}`
|
|
48
48
|
}));
|
|
49
49
|
});
|
|
50
|
-
return routesMap;
|
|
50
|
+
return sanitizeRoutesMapForSerialization(routesMap);
|
|
51
51
|
};
|
|
52
52
|
const sanitizer = sanitize.createAPISanitizers({
|
|
53
53
|
getModel (uid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { sanitize, validate } from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return routesMap;\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of sanitizers after the creation of the container\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of validators after the creation of the container\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n };\n};\n\nexport default createContentAPI;\n"],"names":["transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","filterContentAPI","info","type","createContentAPI","strapi","getRoutesMap","routesMap","_","forEach","apis","api","apiName","routes","flatMap","filter","length","apiPrefix","get","map","plugins","plugin","transformPrefix","Array","isArray","sanitizer","sanitize","createAPISanitizers","getModel","uid","sanitizers","input","output","validator","validate","createAPIValidators","validators","permissions","instantiatePermissionsUtilities"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { sanitize, validate, sanitizeRoutesMapForSerialization } from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return sanitizeRoutesMapForSerialization(routesMap);\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of sanitizers after the creation of the container\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of validators after the creation of the container\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n };\n};\n\nexport default createContentAPI;\n"],"names":["transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","filterContentAPI","info","type","createContentAPI","strapi","getRoutesMap","routesMap","_","forEach","apis","api","apiName","routes","flatMap","filter","length","apiPrefix","get","map","plugins","plugin","transformPrefix","Array","isArray","sanitizeRoutesMapForSerialization","sanitizer","sanitize","createAPISanitizers","getModel","uid","sanitizers","input","output","validator","validate","createAPIValidators","validators","permissions","instantiatePermissionsUtilities"],"mappings":"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"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import type { Core, Struct } from '@strapi/types';
|
|
2
|
+
interface EncodingInfo {
|
|
3
|
+
data: any;
|
|
4
|
+
schema: Struct.Schema;
|
|
5
|
+
}
|
|
2
6
|
declare const createContentSourceMapsService: (strapi: Core.Strapi) => {
|
|
3
7
|
encodeField(text: string, key: string): string;
|
|
4
|
-
encodeEntry(
|
|
5
|
-
|
|
6
|
-
entryRootModel: string;
|
|
7
|
-
entryData: any;
|
|
8
|
-
model: any;
|
|
9
|
-
}): Promise<any>;
|
|
10
|
-
encodeSourceMaps(options: {
|
|
11
|
-
data: any;
|
|
12
|
-
contentType: Struct.ContentTypeSchema;
|
|
13
|
-
rootId?: any;
|
|
14
|
-
rootModel?: string;
|
|
15
|
-
}): Promise<any>;
|
|
8
|
+
encodeEntry({ data, schema }: EncodingInfo): Promise<any>;
|
|
9
|
+
encodeSourceMaps({ data, schema }: EncodingInfo): Promise<any>;
|
|
16
10
|
};
|
|
17
11
|
export { createContentSourceMapsService };
|
|
18
12
|
//# sourceMappingURL=content-source-maps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-source-maps.d.ts","sourceRoot":"","sources":["../../src/services/content-source-maps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"content-source-maps.d.ts","sourceRoot":"","sources":["../../src/services/content-source-maps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAO,MAAM,eAAe,CAAC;AAyCvD,UAAU,YAAY;IACpB,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;CACvB;AAED,QAAA,MAAM,8BAA8B,WAAY,KAAK,MAAM;sBAErC,MAAM,OAAO,MAAM,GAAG,MAAM;kCAQV,YAAY,GAAG,QAAQ,GAAG,CAAC;uCAuBtB,YAAY,GAAG,QAAQ,GAAG,CAAC;CAmBvE,CAAC;AAEF,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var stega = require('@vercel/stega');
|
|
4
|
+
var strapiUtils = require('@strapi/utils');
|
|
4
5
|
|
|
5
6
|
const ENCODABLE_TYPES = [
|
|
6
7
|
'string',
|
|
7
8
|
'text',
|
|
8
9
|
'richtext',
|
|
9
|
-
'
|
|
10
|
-
'enumeration',
|
|
11
|
-
'email',
|
|
10
|
+
'biginteger',
|
|
12
11
|
'date',
|
|
13
|
-
'datetime',
|
|
14
12
|
'time',
|
|
15
|
-
'
|
|
13
|
+
'datetime',
|
|
14
|
+
'timestamp',
|
|
15
|
+
'boolean',
|
|
16
|
+
'enumeration',
|
|
17
|
+
'json',
|
|
18
|
+
'media',
|
|
19
|
+
'email',
|
|
20
|
+
'password'
|
|
16
21
|
];
|
|
22
|
+
// TODO: use a centralized store for these fields that would be shared with the CM and CTB
|
|
17
23
|
const EXCLUDED_FIELDS = [
|
|
18
24
|
'id',
|
|
19
25
|
'documentId',
|
|
@@ -34,117 +40,36 @@ const createContentSourceMapsService = (strapi)=>{
|
|
|
34
40
|
});
|
|
35
41
|
return res;
|
|
36
42
|
},
|
|
37
|
-
async encodeEntry (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return entryData;
|
|
43
|
+
async encodeEntry ({ data, schema }) {
|
|
44
|
+
if (typeof data !== 'object' || data === null || data === undefined) {
|
|
45
|
+
return data;
|
|
41
46
|
}
|
|
42
|
-
|
|
43
|
-
...entryData
|
|
44
|
-
};
|
|
45
|
-
await Promise.all(Object.keys(entryData).map(async (key)=>{
|
|
46
|
-
const value = entryData[key];
|
|
47
|
-
if (value === null || value === undefined) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const attribute = model.attributes[key];
|
|
47
|
+
return strapiUtils.traverseEntity(({ key, value, attribute }, { set })=>{
|
|
51
48
|
if (!attribute || EXCLUDED_FIELDS.includes(key)) {
|
|
52
49
|
return;
|
|
53
50
|
}
|
|
54
|
-
if (ENCODABLE_TYPES.includes(attribute.type)) {
|
|
55
|
-
|
|
56
|
-
key);
|
|
57
|
-
}
|
|
58
|
-
if (attribute.type === 'component') {
|
|
59
|
-
const componentModel = strapi.getModel(attribute.component);
|
|
60
|
-
if (Array.isArray(value)) {
|
|
61
|
-
encodedData[key] = await Promise.all(value.map((item)=>this.encodeEntry({
|
|
62
|
-
entryRootId,
|
|
63
|
-
entryRootModel,
|
|
64
|
-
entryData: item,
|
|
65
|
-
model: componentModel
|
|
66
|
-
})));
|
|
67
|
-
}
|
|
68
|
-
encodedData[key] = await this.encodeEntry({
|
|
69
|
-
entryRootId,
|
|
70
|
-
entryRootModel,
|
|
71
|
-
entryData: value,
|
|
72
|
-
model: componentModel
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
if (attribute.type === 'dynamiczone' && Array.isArray(value)) {
|
|
76
|
-
encodedData[key] = await Promise.all(value.map((item)=>this.encodeEntry({
|
|
77
|
-
entryRootId,
|
|
78
|
-
entryRootModel,
|
|
79
|
-
entryData: item,
|
|
80
|
-
model: strapi.getModel(item.__component)
|
|
81
|
-
})));
|
|
82
|
-
}
|
|
83
|
-
if (attribute.type === 'relation' && 'target' in attribute) {
|
|
84
|
-
const relatedModel = strapi.getModel(attribute.target);
|
|
85
|
-
if (Array.isArray(value)) {
|
|
86
|
-
encodedData[key] = await Promise.all(value.map((item)=>this.encodeEntry({
|
|
87
|
-
entryRootId: item.id,
|
|
88
|
-
entryRootModel: relatedModel.uid,
|
|
89
|
-
entryData: item,
|
|
90
|
-
model: strapi.getModel(attribute.target)
|
|
91
|
-
})));
|
|
92
|
-
}
|
|
93
|
-
encodedData[key] = await this.encodeEntry({
|
|
94
|
-
entryRootId: value.id,
|
|
95
|
-
entryRootModel: relatedModel.uid,
|
|
96
|
-
entryData: value,
|
|
97
|
-
model: strapi.getModel(attribute.target)
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
if (attribute.type === 'media') {
|
|
101
|
-
const fileModel = strapi.getModel('plugin::upload.file');
|
|
102
|
-
if (Array.isArray(value.data)) {
|
|
103
|
-
const encodedMediaData = await Promise.all(value.data.map((item)=>this.encodeEntry({
|
|
104
|
-
entryRootId,
|
|
105
|
-
entryRootModel,
|
|
106
|
-
entryData: item,
|
|
107
|
-
model: fileModel
|
|
108
|
-
})));
|
|
109
|
-
encodedData[key] = {
|
|
110
|
-
...value,
|
|
111
|
-
data: encodedMediaData
|
|
112
|
-
};
|
|
113
|
-
} else {
|
|
114
|
-
const encodedMediaItem = await this.encodeEntry({
|
|
115
|
-
entryRootId,
|
|
116
|
-
entryRootModel,
|
|
117
|
-
entryData: value.data,
|
|
118
|
-
model: fileModel
|
|
119
|
-
});
|
|
120
|
-
encodedData[key] = {
|
|
121
|
-
...value,
|
|
122
|
-
data: encodedMediaItem
|
|
123
|
-
};
|
|
124
|
-
}
|
|
51
|
+
if (ENCODABLE_TYPES.includes(attribute.type) && typeof value === 'string') {
|
|
52
|
+
set(key, this.encodeField(value, key));
|
|
125
53
|
}
|
|
126
|
-
}
|
|
127
|
-
|
|
54
|
+
}, {
|
|
55
|
+
schema,
|
|
56
|
+
getModel: (uid)=>strapi.getModel(uid)
|
|
57
|
+
}, data);
|
|
128
58
|
},
|
|
129
|
-
async encodeSourceMaps (
|
|
130
|
-
const { data, contentType, rootId, rootModel } = options;
|
|
59
|
+
async encodeSourceMaps ({ data, schema }) {
|
|
131
60
|
try {
|
|
132
61
|
if (Array.isArray(data)) {
|
|
133
62
|
return await Promise.all(data.map((item)=>this.encodeSourceMaps({
|
|
134
63
|
data: item,
|
|
135
|
-
|
|
64
|
+
schema
|
|
136
65
|
})));
|
|
137
66
|
}
|
|
138
67
|
if (typeof data !== 'object' || data === null) {
|
|
139
68
|
return data;
|
|
140
69
|
}
|
|
141
|
-
const actualRootId = rootId || data.id;
|
|
142
|
-
const actualRootModel = rootModel || contentType.uid;
|
|
143
70
|
return await this.encodeEntry({
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
entryData: data,
|
|
147
|
-
model: contentType
|
|
71
|
+
data,
|
|
72
|
+
schema
|
|
148
73
|
});
|
|
149
74
|
} catch (error) {
|
|
150
75
|
strapi.log.error('Error encoding source maps:', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-source-maps.js","sources":["../../src/services/content-source-maps.ts"],"sourcesContent":["import { vercelStegaCombine } from '@vercel/stega';\nimport type { Core, Struct } from '@strapi/types';\n\nconst ENCODABLE_TYPES = [\n 'string',\n 'text',\n 'richtext',\n 'uid',\n 'enumeration',\n 'email',\n 'date',\n 'datetime',\n 'time',\n 'timestamp',\n];\n\nconst EXCLUDED_FIELDS = [\n 'id',\n 'documentId',\n 'locale',\n 'localizations',\n 'created_by',\n 'updated_by',\n 'created_at',\n 'updated_at',\n 'publishedAt',\n];\n\nconst createContentSourceMapsService = (strapi: Core.Strapi) => {\n return {\n encodeField(text: string, key: string): string {\n const res = vercelStegaCombine(text, {\n // TODO: smarter metadata than just the key\n key,\n });\n return res;\n },\n\n async encodeEntry(options: {\n entryRootId: any;\n entryRootModel: string;\n entryData: any;\n model: any;\n }): Promise<any> {\n const { entryRootId, entryRootModel, entryData, model } = options;\n\n if (typeof entryData !== 'object' || entryData === null || entryData === undefined) {\n return entryData;\n }\n\n const encodedData = { ...entryData };\n\n await Promise.all(\n Object.keys(entryData).map(async (key) => {\n const value = entryData[key];\n\n if (value === null || value === undefined) {\n return;\n }\n\n const attribute = model.attributes[key];\n\n if (!attribute || EXCLUDED_FIELDS.includes(key)) {\n return;\n }\n\n if (ENCODABLE_TYPES.includes(attribute.type)) {\n encodedData[key] = this.encodeField(\n value,\n // TODO: smarter metadata than just the key\n key\n );\n }\n\n if (attribute.type === 'component') {\n const componentModel = strapi.getModel(attribute.component);\n\n if (Array.isArray(value)) {\n encodedData[key] = await Promise.all(\n value.map((item) =>\n this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: item,\n model: componentModel,\n })\n )\n );\n }\n\n encodedData[key] = await this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: value,\n model: componentModel,\n });\n }\n\n if (attribute.type === 'dynamiczone' && Array.isArray(value)) {\n encodedData[key] = await Promise.all(\n value.map((item) =>\n this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: item,\n model: strapi.getModel(item.__component),\n })\n )\n );\n }\n\n if (attribute.type === 'relation' && 'target' in attribute) {\n const relatedModel = strapi.getModel(attribute.target);\n\n if (Array.isArray(value)) {\n encodedData[key] = await Promise.all(\n value.map((item: any) =>\n this.encodeEntry({\n entryRootId: item.id,\n entryRootModel: relatedModel.uid,\n entryData: item,\n model: strapi.getModel(attribute.target),\n })\n )\n );\n }\n\n encodedData[key] = await this.encodeEntry({\n entryRootId: value.id,\n entryRootModel: relatedModel.uid,\n entryData: value,\n model: strapi.getModel(attribute.target),\n });\n }\n\n if (attribute.type === 'media') {\n const fileModel = strapi.getModel('plugin::upload.file');\n\n if (Array.isArray(value.data)) {\n const encodedMediaData = await Promise.all(\n value.data.map((item: any) =>\n this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: item,\n model: fileModel,\n })\n )\n );\n encodedData[key] = { ...value, data: encodedMediaData };\n } else {\n const encodedMediaItem = await this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: value.data,\n model: fileModel,\n });\n encodedData[key] = { ...value, data: encodedMediaItem };\n }\n }\n })\n );\n\n return encodedData;\n },\n\n async encodeSourceMaps(options: {\n data: any;\n contentType: Struct.ContentTypeSchema;\n rootId?: any;\n rootModel?: string;\n }): Promise<any> {\n const { data, contentType, rootId, rootModel } = options;\n\n try {\n if (Array.isArray(data)) {\n return await Promise.all(\n data.map((item) => this.encodeSourceMaps({ data: item, contentType }))\n );\n }\n\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n\n const actualRootId = rootId || data.id;\n const actualRootModel = rootModel || contentType.uid;\n\n return await this.encodeEntry({\n entryRootId: actualRootId,\n entryRootModel: actualRootModel,\n entryData: data,\n model: contentType,\n });\n } catch (error) {\n strapi.log.error('Error encoding source maps:', error);\n return data;\n }\n },\n };\n};\n\nexport { createContentSourceMapsService };\n"],"names":["ENCODABLE_TYPES","EXCLUDED_FIELDS","createContentSourceMapsService","strapi","encodeField","text","key","res","vercelStegaCombine","encodeEntry","options","entryRootId","entryRootModel","entryData","model","undefined","encodedData","Promise","all","Object","keys","map","value","attribute","attributes","includes","type","componentModel","getModel","component","Array","isArray","item","__component","relatedModel","target","id","uid","fileModel","data","encodedMediaData","encodedMediaItem","encodeSourceMaps","contentType","rootId","rootModel","actualRootId","actualRootModel","error","log"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content-source-maps.js","sources":["../../src/services/content-source-maps.ts"],"sourcesContent":["import { vercelStegaCombine } from '@vercel/stega';\nimport type { Core, Struct, UID } from '@strapi/types';\nimport { traverseEntity } from '@strapi/utils';\n\nconst ENCODABLE_TYPES = [\n 'string',\n 'text',\n 'richtext',\n 'biginteger',\n 'date',\n 'time',\n 'datetime',\n 'timestamp',\n 'boolean',\n 'enumeration',\n 'json',\n 'media',\n 'email',\n 'password',\n /**\n * We cannot modify the response shape, so types that aren't based on string cannot be encoded:\n * - json: object\n * - blocks: object, will require a custom implementation in a dedicated PR\n * - integer, float and decimal: number\n * - boolean: boolean (believe it or not)\n * - uid: can be stringified but would mess up URLs\n */\n];\n\n// TODO: use a centralized store for these fields that would be shared with the CM and CTB\nconst EXCLUDED_FIELDS = [\n 'id',\n 'documentId',\n 'locale',\n 'localizations',\n 'created_by',\n 'updated_by',\n 'created_at',\n 'updated_at',\n 'publishedAt',\n];\n\ninterface EncodingInfo {\n data: any;\n schema: Struct.Schema;\n}\n\nconst createContentSourceMapsService = (strapi: Core.Strapi) => {\n return {\n encodeField(text: string, key: string): string {\n const res = vercelStegaCombine(text, {\n // TODO: smarter metadata than just the key\n key,\n });\n return res;\n },\n\n async encodeEntry({ data, schema }: EncodingInfo): Promise<any> {\n if (typeof data !== 'object' || data === null || data === undefined) {\n return data;\n }\n\n return traverseEntity(\n ({ key, value, attribute }, { set }) => {\n if (!attribute || EXCLUDED_FIELDS.includes(key)) {\n return;\n }\n\n if (ENCODABLE_TYPES.includes(attribute.type) && typeof value === 'string') {\n set(key, this.encodeField(value, key) as any);\n }\n },\n {\n schema,\n getModel: (uid) => strapi.getModel(uid as UID.Schema),\n },\n data\n );\n },\n\n async encodeSourceMaps({ data, schema }: EncodingInfo): Promise<any> {\n try {\n if (Array.isArray(data)) {\n return await Promise.all(\n data.map((item) => this.encodeSourceMaps({ data: item, schema }))\n );\n }\n\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n\n return await this.encodeEntry({ data, schema });\n } catch (error) {\n strapi.log.error('Error encoding source maps:', error);\n return data;\n }\n },\n };\n};\n\nexport { createContentSourceMapsService };\n"],"names":["ENCODABLE_TYPES","EXCLUDED_FIELDS","createContentSourceMapsService","strapi","encodeField","text","key","res","vercelStegaCombine","encodeEntry","data","schema","undefined","traverseEntity","value","attribute","set","includes","type","getModel","uid","encodeSourceMaps","Array","isArray","Promise","all","map","item","error","log"],"mappings":";;;;;AAIA,MAAMA,eAAkB,GAAA;AACtB,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,YAAA;AACA,IAAA,MAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,WAAA;AACA,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA;AASD,CAAA;AAED;AACA,MAAMC,eAAkB,GAAA;AACtB,IAAA,IAAA;AACA,IAAA,YAAA;AACA,IAAA,QAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAOD,MAAMC,iCAAiC,CAACC,MAAAA,GAAAA;IACtC,OAAO;QACLC,WAAYC,CAAAA,CAAAA,IAAY,EAAEC,GAAW,EAAA;YACnC,MAAMC,GAAAA,GAAMC,yBAAmBH,IAAM,EAAA;;AAEnCC,gBAAAA;AACF,aAAA,CAAA;YACA,OAAOC,GAAAA;AACT,SAAA;AAEA,QAAA,MAAME,WAAY,CAAA,CAAA,EAAEC,IAAI,EAAEC,MAAM,EAAgB,EAAA;AAC9C,YAAA,IAAI,OAAOD,IAAS,KAAA,QAAA,IAAYA,IAAS,KAAA,IAAA,IAAQA,SAASE,SAAW,EAAA;gBACnE,OAAOF,IAAAA;AACT;AAEA,YAAA,OAAOG,0BACL,CAAA,CAAC,EAAEP,GAAG,EAAEQ,KAAK,EAAEC,SAAS,EAAE,EAAE,EAAEC,GAAG,EAAE,GAAA;AACjC,gBAAA,IAAI,CAACD,SAAAA,IAAad,eAAgBgB,CAAAA,QAAQ,CAACX,GAAM,CAAA,EAAA;AAC/C,oBAAA;AACF;gBAEA,IAAIN,eAAAA,CAAgBiB,QAAQ,CAACF,SAAAA,CAAUG,IAAI,CAAK,IAAA,OAAOJ,UAAU,QAAU,EAAA;AACzEE,oBAAAA,GAAAA,CAAIV,GAAK,EAAA,IAAI,CAACF,WAAW,CAACU,KAAOR,EAAAA,GAAAA,CAAAA,CAAAA;AACnC;aAEF,EAAA;AACEK,gBAAAA,MAAAA;AACAQ,gBAAAA,QAAAA,EAAU,CAACC,GAAAA,GAAQjB,MAAOgB,CAAAA,QAAQ,CAACC,GAAAA;aAErCV,EAAAA,IAAAA,CAAAA;AAEJ,SAAA;AAEA,QAAA,MAAMW,gBAAiB,CAAA,CAAA,EAAEX,IAAI,EAAEC,MAAM,EAAgB,EAAA;YACnD,IAAI;gBACF,IAAIW,KAAAA,CAAMC,OAAO,CAACb,IAAO,CAAA,EAAA;AACvB,oBAAA,OAAO,MAAMc,OAAAA,CAAQC,GAAG,CACtBf,IAAKgB,CAAAA,GAAG,CAAC,CAACC,IAAS,GAAA,IAAI,CAACN,gBAAgB,CAAC;4BAAEX,IAAMiB,EAAAA,IAAAA;AAAMhB,4BAAAA;AAAO,yBAAA,CAAA,CAAA,CAAA;AAElE;AAEA,gBAAA,IAAI,OAAOD,IAAAA,KAAS,QAAYA,IAAAA,IAAAA,KAAS,IAAM,EAAA;oBAC7C,OAAOA,IAAAA;AACT;AAEA,gBAAA,OAAO,MAAM,IAAI,CAACD,WAAW,CAAC;AAAEC,oBAAAA,IAAAA;AAAMC,oBAAAA;AAAO,iBAAA,CAAA;AAC/C,aAAA,CAAE,OAAOiB,KAAO,EAAA;AACdzB,gBAAAA,MAAAA,CAAO0B,GAAG,CAACD,KAAK,CAAC,6BAA+BA,EAAAA,KAAAA,CAAAA;gBAChD,OAAOlB,IAAAA;AACT;AACF;AACF,KAAA;AACF;;;;"}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import { vercelStegaCombine } from '@vercel/stega';
|
|
2
|
+
import { traverseEntity } from '@strapi/utils';
|
|
2
3
|
|
|
3
4
|
const ENCODABLE_TYPES = [
|
|
4
5
|
'string',
|
|
5
6
|
'text',
|
|
6
7
|
'richtext',
|
|
7
|
-
'
|
|
8
|
-
'enumeration',
|
|
9
|
-
'email',
|
|
8
|
+
'biginteger',
|
|
10
9
|
'date',
|
|
11
|
-
'datetime',
|
|
12
10
|
'time',
|
|
13
|
-
'
|
|
11
|
+
'datetime',
|
|
12
|
+
'timestamp',
|
|
13
|
+
'boolean',
|
|
14
|
+
'enumeration',
|
|
15
|
+
'json',
|
|
16
|
+
'media',
|
|
17
|
+
'email',
|
|
18
|
+
'password'
|
|
14
19
|
];
|
|
20
|
+
// TODO: use a centralized store for these fields that would be shared with the CM and CTB
|
|
15
21
|
const EXCLUDED_FIELDS = [
|
|
16
22
|
'id',
|
|
17
23
|
'documentId',
|
|
@@ -32,117 +38,36 @@ const createContentSourceMapsService = (strapi)=>{
|
|
|
32
38
|
});
|
|
33
39
|
return res;
|
|
34
40
|
},
|
|
35
|
-
async encodeEntry (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return entryData;
|
|
41
|
+
async encodeEntry ({ data, schema }) {
|
|
42
|
+
if (typeof data !== 'object' || data === null || data === undefined) {
|
|
43
|
+
return data;
|
|
39
44
|
}
|
|
40
|
-
|
|
41
|
-
...entryData
|
|
42
|
-
};
|
|
43
|
-
await Promise.all(Object.keys(entryData).map(async (key)=>{
|
|
44
|
-
const value = entryData[key];
|
|
45
|
-
if (value === null || value === undefined) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const attribute = model.attributes[key];
|
|
45
|
+
return traverseEntity(({ key, value, attribute }, { set })=>{
|
|
49
46
|
if (!attribute || EXCLUDED_FIELDS.includes(key)) {
|
|
50
47
|
return;
|
|
51
48
|
}
|
|
52
|
-
if (ENCODABLE_TYPES.includes(attribute.type)) {
|
|
53
|
-
|
|
54
|
-
key);
|
|
55
|
-
}
|
|
56
|
-
if (attribute.type === 'component') {
|
|
57
|
-
const componentModel = strapi.getModel(attribute.component);
|
|
58
|
-
if (Array.isArray(value)) {
|
|
59
|
-
encodedData[key] = await Promise.all(value.map((item)=>this.encodeEntry({
|
|
60
|
-
entryRootId,
|
|
61
|
-
entryRootModel,
|
|
62
|
-
entryData: item,
|
|
63
|
-
model: componentModel
|
|
64
|
-
})));
|
|
65
|
-
}
|
|
66
|
-
encodedData[key] = await this.encodeEntry({
|
|
67
|
-
entryRootId,
|
|
68
|
-
entryRootModel,
|
|
69
|
-
entryData: value,
|
|
70
|
-
model: componentModel
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
if (attribute.type === 'dynamiczone' && Array.isArray(value)) {
|
|
74
|
-
encodedData[key] = await Promise.all(value.map((item)=>this.encodeEntry({
|
|
75
|
-
entryRootId,
|
|
76
|
-
entryRootModel,
|
|
77
|
-
entryData: item,
|
|
78
|
-
model: strapi.getModel(item.__component)
|
|
79
|
-
})));
|
|
80
|
-
}
|
|
81
|
-
if (attribute.type === 'relation' && 'target' in attribute) {
|
|
82
|
-
const relatedModel = strapi.getModel(attribute.target);
|
|
83
|
-
if (Array.isArray(value)) {
|
|
84
|
-
encodedData[key] = await Promise.all(value.map((item)=>this.encodeEntry({
|
|
85
|
-
entryRootId: item.id,
|
|
86
|
-
entryRootModel: relatedModel.uid,
|
|
87
|
-
entryData: item,
|
|
88
|
-
model: strapi.getModel(attribute.target)
|
|
89
|
-
})));
|
|
90
|
-
}
|
|
91
|
-
encodedData[key] = await this.encodeEntry({
|
|
92
|
-
entryRootId: value.id,
|
|
93
|
-
entryRootModel: relatedModel.uid,
|
|
94
|
-
entryData: value,
|
|
95
|
-
model: strapi.getModel(attribute.target)
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
if (attribute.type === 'media') {
|
|
99
|
-
const fileModel = strapi.getModel('plugin::upload.file');
|
|
100
|
-
if (Array.isArray(value.data)) {
|
|
101
|
-
const encodedMediaData = await Promise.all(value.data.map((item)=>this.encodeEntry({
|
|
102
|
-
entryRootId,
|
|
103
|
-
entryRootModel,
|
|
104
|
-
entryData: item,
|
|
105
|
-
model: fileModel
|
|
106
|
-
})));
|
|
107
|
-
encodedData[key] = {
|
|
108
|
-
...value,
|
|
109
|
-
data: encodedMediaData
|
|
110
|
-
};
|
|
111
|
-
} else {
|
|
112
|
-
const encodedMediaItem = await this.encodeEntry({
|
|
113
|
-
entryRootId,
|
|
114
|
-
entryRootModel,
|
|
115
|
-
entryData: value.data,
|
|
116
|
-
model: fileModel
|
|
117
|
-
});
|
|
118
|
-
encodedData[key] = {
|
|
119
|
-
...value,
|
|
120
|
-
data: encodedMediaItem
|
|
121
|
-
};
|
|
122
|
-
}
|
|
49
|
+
if (ENCODABLE_TYPES.includes(attribute.type) && typeof value === 'string') {
|
|
50
|
+
set(key, this.encodeField(value, key));
|
|
123
51
|
}
|
|
124
|
-
}
|
|
125
|
-
|
|
52
|
+
}, {
|
|
53
|
+
schema,
|
|
54
|
+
getModel: (uid)=>strapi.getModel(uid)
|
|
55
|
+
}, data);
|
|
126
56
|
},
|
|
127
|
-
async encodeSourceMaps (
|
|
128
|
-
const { data, contentType, rootId, rootModel } = options;
|
|
57
|
+
async encodeSourceMaps ({ data, schema }) {
|
|
129
58
|
try {
|
|
130
59
|
if (Array.isArray(data)) {
|
|
131
60
|
return await Promise.all(data.map((item)=>this.encodeSourceMaps({
|
|
132
61
|
data: item,
|
|
133
|
-
|
|
62
|
+
schema
|
|
134
63
|
})));
|
|
135
64
|
}
|
|
136
65
|
if (typeof data !== 'object' || data === null) {
|
|
137
66
|
return data;
|
|
138
67
|
}
|
|
139
|
-
const actualRootId = rootId || data.id;
|
|
140
|
-
const actualRootModel = rootModel || contentType.uid;
|
|
141
68
|
return await this.encodeEntry({
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
entryData: data,
|
|
145
|
-
model: contentType
|
|
69
|
+
data,
|
|
70
|
+
schema
|
|
146
71
|
});
|
|
147
72
|
} catch (error) {
|
|
148
73
|
strapi.log.error('Error encoding source maps:', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-source-maps.mjs","sources":["../../src/services/content-source-maps.ts"],"sourcesContent":["import { vercelStegaCombine } from '@vercel/stega';\nimport type { Core, Struct } from '@strapi/types';\n\nconst ENCODABLE_TYPES = [\n 'string',\n 'text',\n 'richtext',\n 'uid',\n 'enumeration',\n 'email',\n 'date',\n 'datetime',\n 'time',\n 'timestamp',\n];\n\nconst EXCLUDED_FIELDS = [\n 'id',\n 'documentId',\n 'locale',\n 'localizations',\n 'created_by',\n 'updated_by',\n 'created_at',\n 'updated_at',\n 'publishedAt',\n];\n\nconst createContentSourceMapsService = (strapi: Core.Strapi) => {\n return {\n encodeField(text: string, key: string): string {\n const res = vercelStegaCombine(text, {\n // TODO: smarter metadata than just the key\n key,\n });\n return res;\n },\n\n async encodeEntry(options: {\n entryRootId: any;\n entryRootModel: string;\n entryData: any;\n model: any;\n }): Promise<any> {\n const { entryRootId, entryRootModel, entryData, model } = options;\n\n if (typeof entryData !== 'object' || entryData === null || entryData === undefined) {\n return entryData;\n }\n\n const encodedData = { ...entryData };\n\n await Promise.all(\n Object.keys(entryData).map(async (key) => {\n const value = entryData[key];\n\n if (value === null || value === undefined) {\n return;\n }\n\n const attribute = model.attributes[key];\n\n if (!attribute || EXCLUDED_FIELDS.includes(key)) {\n return;\n }\n\n if (ENCODABLE_TYPES.includes(attribute.type)) {\n encodedData[key] = this.encodeField(\n value,\n // TODO: smarter metadata than just the key\n key\n );\n }\n\n if (attribute.type === 'component') {\n const componentModel = strapi.getModel(attribute.component);\n\n if (Array.isArray(value)) {\n encodedData[key] = await Promise.all(\n value.map((item) =>\n this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: item,\n model: componentModel,\n })\n )\n );\n }\n\n encodedData[key] = await this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: value,\n model: componentModel,\n });\n }\n\n if (attribute.type === 'dynamiczone' && Array.isArray(value)) {\n encodedData[key] = await Promise.all(\n value.map((item) =>\n this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: item,\n model: strapi.getModel(item.__component),\n })\n )\n );\n }\n\n if (attribute.type === 'relation' && 'target' in attribute) {\n const relatedModel = strapi.getModel(attribute.target);\n\n if (Array.isArray(value)) {\n encodedData[key] = await Promise.all(\n value.map((item: any) =>\n this.encodeEntry({\n entryRootId: item.id,\n entryRootModel: relatedModel.uid,\n entryData: item,\n model: strapi.getModel(attribute.target),\n })\n )\n );\n }\n\n encodedData[key] = await this.encodeEntry({\n entryRootId: value.id,\n entryRootModel: relatedModel.uid,\n entryData: value,\n model: strapi.getModel(attribute.target),\n });\n }\n\n if (attribute.type === 'media') {\n const fileModel = strapi.getModel('plugin::upload.file');\n\n if (Array.isArray(value.data)) {\n const encodedMediaData = await Promise.all(\n value.data.map((item: any) =>\n this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: item,\n model: fileModel,\n })\n )\n );\n encodedData[key] = { ...value, data: encodedMediaData };\n } else {\n const encodedMediaItem = await this.encodeEntry({\n entryRootId,\n entryRootModel,\n entryData: value.data,\n model: fileModel,\n });\n encodedData[key] = { ...value, data: encodedMediaItem };\n }\n }\n })\n );\n\n return encodedData;\n },\n\n async encodeSourceMaps(options: {\n data: any;\n contentType: Struct.ContentTypeSchema;\n rootId?: any;\n rootModel?: string;\n }): Promise<any> {\n const { data, contentType, rootId, rootModel } = options;\n\n try {\n if (Array.isArray(data)) {\n return await Promise.all(\n data.map((item) => this.encodeSourceMaps({ data: item, contentType }))\n );\n }\n\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n\n const actualRootId = rootId || data.id;\n const actualRootModel = rootModel || contentType.uid;\n\n return await this.encodeEntry({\n entryRootId: actualRootId,\n entryRootModel: actualRootModel,\n entryData: data,\n model: contentType,\n });\n } catch (error) {\n strapi.log.error('Error encoding source maps:', error);\n return data;\n }\n },\n };\n};\n\nexport { createContentSourceMapsService };\n"],"names":["ENCODABLE_TYPES","EXCLUDED_FIELDS","createContentSourceMapsService","strapi","encodeField","text","key","res","vercelStegaCombine","encodeEntry","options","entryRootId","entryRootModel","entryData","model","undefined","encodedData","Promise","all","Object","keys","map","value","attribute","attributes","includes","type","componentModel","getModel","component","Array","isArray","item","__component","relatedModel","target","id","uid","fileModel","data","encodedMediaData","encodedMediaItem","encodeSourceMaps","contentType","rootId","rootModel","actualRootId","actualRootModel","error","log"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content-source-maps.mjs","sources":["../../src/services/content-source-maps.ts"],"sourcesContent":["import { vercelStegaCombine } from '@vercel/stega';\nimport type { Core, Struct, UID } from '@strapi/types';\nimport { traverseEntity } from '@strapi/utils';\n\nconst ENCODABLE_TYPES = [\n 'string',\n 'text',\n 'richtext',\n 'biginteger',\n 'date',\n 'time',\n 'datetime',\n 'timestamp',\n 'boolean',\n 'enumeration',\n 'json',\n 'media',\n 'email',\n 'password',\n /**\n * We cannot modify the response shape, so types that aren't based on string cannot be encoded:\n * - json: object\n * - blocks: object, will require a custom implementation in a dedicated PR\n * - integer, float and decimal: number\n * - boolean: boolean (believe it or not)\n * - uid: can be stringified but would mess up URLs\n */\n];\n\n// TODO: use a centralized store for these fields that would be shared with the CM and CTB\nconst EXCLUDED_FIELDS = [\n 'id',\n 'documentId',\n 'locale',\n 'localizations',\n 'created_by',\n 'updated_by',\n 'created_at',\n 'updated_at',\n 'publishedAt',\n];\n\ninterface EncodingInfo {\n data: any;\n schema: Struct.Schema;\n}\n\nconst createContentSourceMapsService = (strapi: Core.Strapi) => {\n return {\n encodeField(text: string, key: string): string {\n const res = vercelStegaCombine(text, {\n // TODO: smarter metadata than just the key\n key,\n });\n return res;\n },\n\n async encodeEntry({ data, schema }: EncodingInfo): Promise<any> {\n if (typeof data !== 'object' || data === null || data === undefined) {\n return data;\n }\n\n return traverseEntity(\n ({ key, value, attribute }, { set }) => {\n if (!attribute || EXCLUDED_FIELDS.includes(key)) {\n return;\n }\n\n if (ENCODABLE_TYPES.includes(attribute.type) && typeof value === 'string') {\n set(key, this.encodeField(value, key) as any);\n }\n },\n {\n schema,\n getModel: (uid) => strapi.getModel(uid as UID.Schema),\n },\n data\n );\n },\n\n async encodeSourceMaps({ data, schema }: EncodingInfo): Promise<any> {\n try {\n if (Array.isArray(data)) {\n return await Promise.all(\n data.map((item) => this.encodeSourceMaps({ data: item, schema }))\n );\n }\n\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n\n return await this.encodeEntry({ data, schema });\n } catch (error) {\n strapi.log.error('Error encoding source maps:', error);\n return data;\n }\n },\n };\n};\n\nexport { createContentSourceMapsService };\n"],"names":["ENCODABLE_TYPES","EXCLUDED_FIELDS","createContentSourceMapsService","strapi","encodeField","text","key","res","vercelStegaCombine","encodeEntry","data","schema","undefined","traverseEntity","value","attribute","set","includes","type","getModel","uid","encodeSourceMaps","Array","isArray","Promise","all","map","item","error","log"],"mappings":";;;AAIA,MAAMA,eAAkB,GAAA;AACtB,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,YAAA;AACA,IAAA,MAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,WAAA;AACA,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA;AASD,CAAA;AAED;AACA,MAAMC,eAAkB,GAAA;AACtB,IAAA,IAAA;AACA,IAAA,YAAA;AACA,IAAA,QAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAOD,MAAMC,iCAAiC,CAACC,MAAAA,GAAAA;IACtC,OAAO;QACLC,WAAYC,CAAAA,CAAAA,IAAY,EAAEC,GAAW,EAAA;YACnC,MAAMC,GAAAA,GAAMC,mBAAmBH,IAAM,EAAA;;AAEnCC,gBAAAA;AACF,aAAA,CAAA;YACA,OAAOC,GAAAA;AACT,SAAA;AAEA,QAAA,MAAME,WAAY,CAAA,CAAA,EAAEC,IAAI,EAAEC,MAAM,EAAgB,EAAA;AAC9C,YAAA,IAAI,OAAOD,IAAS,KAAA,QAAA,IAAYA,IAAS,KAAA,IAAA,IAAQA,SAASE,SAAW,EAAA;gBACnE,OAAOF,IAAAA;AACT;AAEA,YAAA,OAAOG,cACL,CAAA,CAAC,EAAEP,GAAG,EAAEQ,KAAK,EAAEC,SAAS,EAAE,EAAE,EAAEC,GAAG,EAAE,GAAA;AACjC,gBAAA,IAAI,CAACD,SAAAA,IAAad,eAAgBgB,CAAAA,QAAQ,CAACX,GAAM,CAAA,EAAA;AAC/C,oBAAA;AACF;gBAEA,IAAIN,eAAAA,CAAgBiB,QAAQ,CAACF,SAAAA,CAAUG,IAAI,CAAK,IAAA,OAAOJ,UAAU,QAAU,EAAA;AACzEE,oBAAAA,GAAAA,CAAIV,GAAK,EAAA,IAAI,CAACF,WAAW,CAACU,KAAOR,EAAAA,GAAAA,CAAAA,CAAAA;AACnC;aAEF,EAAA;AACEK,gBAAAA,MAAAA;AACAQ,gBAAAA,QAAAA,EAAU,CAACC,GAAAA,GAAQjB,MAAOgB,CAAAA,QAAQ,CAACC,GAAAA;aAErCV,EAAAA,IAAAA,CAAAA;AAEJ,SAAA;AAEA,QAAA,MAAMW,gBAAiB,CAAA,CAAA,EAAEX,IAAI,EAAEC,MAAM,EAAgB,EAAA;YACnD,IAAI;gBACF,IAAIW,KAAAA,CAAMC,OAAO,CAACb,IAAO,CAAA,EAAA;AACvB,oBAAA,OAAO,MAAMc,OAAAA,CAAQC,GAAG,CACtBf,IAAKgB,CAAAA,GAAG,CAAC,CAACC,IAAS,GAAA,IAAI,CAACN,gBAAgB,CAAC;4BAAEX,IAAMiB,EAAAA,IAAAA;AAAMhB,4BAAAA;AAAO,yBAAA,CAAA,CAAA,CAAA;AAElE;AAEA,gBAAA,IAAI,OAAOD,IAAAA,KAAS,QAAYA,IAAAA,IAAAA,KAAS,IAAM,EAAA;oBAC7C,OAAOA,IAAAA;AACT;AAEA,gBAAA,OAAO,MAAM,IAAI,CAACD,WAAW,CAAC;AAAEC,oBAAAA,IAAAA;AAAMC,oBAAAA;AAAO,iBAAA,CAAA;AAC/C,aAAA,CAAE,OAAOiB,KAAO,EAAA;AACdzB,gBAAAA,MAAAA,CAAO0B,GAAG,CAACD,KAAK,CAAC,6BAA+BA,EAAAA,KAAAA,CAAAA;gBAChD,OAAOlB,IAAAA;AACT;AACF;AACF,KAAA;AACF;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/core",
|
|
3
|
-
"version": "0.0.0-experimental.
|
|
3
|
+
"version": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
4
4
|
"description": "Core of Strapi",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
"@koa/cors": "5.0.0",
|
|
57
57
|
"@koa/router": "12.0.2",
|
|
58
58
|
"@paralleldrive/cuid2": "2.2.2",
|
|
59
|
-
"@strapi/admin": "0.0.0-experimental.
|
|
60
|
-
"@strapi/database": "0.0.0-experimental.
|
|
61
|
-
"@strapi/generators": "0.0.0-experimental.
|
|
62
|
-
"@strapi/logger": "0.0.0-experimental.
|
|
63
|
-
"@strapi/permissions": "0.0.0-experimental.
|
|
64
|
-
"@strapi/types": "0.0.0-experimental.
|
|
65
|
-
"@strapi/typescript-utils": "0.0.0-experimental.
|
|
66
|
-
"@strapi/utils": "0.0.0-experimental.
|
|
59
|
+
"@strapi/admin": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
60
|
+
"@strapi/database": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
61
|
+
"@strapi/generators": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
62
|
+
"@strapi/logger": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
63
|
+
"@strapi/permissions": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
64
|
+
"@strapi/types": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
65
|
+
"@strapi/typescript-utils": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
66
|
+
"@strapi/utils": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
67
67
|
"@vercel/stega": "0.1.2",
|
|
68
68
|
"bcryptjs": "2.4.3",
|
|
69
69
|
"boxen": "5.1.2",
|
|
@@ -130,9 +130,9 @@
|
|
|
130
130
|
"@types/node": "18.19.24",
|
|
131
131
|
"@types/node-schedule": "2.1.7",
|
|
132
132
|
"@types/statuses": "2.0.1",
|
|
133
|
-
"eslint-config-custom": "0.0.0-experimental.
|
|
133
|
+
"eslint-config-custom": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8",
|
|
134
134
|
"supertest": "6.3.3",
|
|
135
|
-
"tsconfig": "0.0.0-experimental.
|
|
135
|
+
"tsconfig": "0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8"
|
|
136
136
|
},
|
|
137
137
|
"engines": {
|
|
138
138
|
"node": ">=18.0.0 <=22.x.x",
|