@strapi/core 5.52.3 → 5.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/container.d.ts +1 -0
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +3 -0
- package/dist/container.js.map +1 -1
- package/dist/container.mjs +3 -0
- package/dist/container.mjs.map +1 -1
- package/dist/core-api/controller/single-type.d.ts.map +1 -1
- package/dist/core-api/controller/single-type.js +7 -4
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs +7 -4
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/domain/content-type/index.d.ts.map +1 -1
- package/dist/domain/content-type/index.js +3 -1
- package/dist/domain/content-type/index.js.map +1 -1
- package/dist/domain/content-type/index.mjs +3 -1
- package/dist/domain/content-type/index.mjs.map +1 -1
- package/dist/package.json.js +20 -17
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +20 -17
- package/dist/package.json.mjs.map +1 -1
- package/dist/services/content-source-maps.d.ts +14 -2
- package/dist/services/content-source-maps.d.ts.map +1 -1
- package/dist/services/content-source-maps.js +134 -1
- package/dist/services/content-source-maps.js.map +1 -1
- package/dist/services/content-source-maps.mjs +134 -2
- package/dist/services/content-source-maps.mjs.map +1 -1
- package/dist/services/cron.d.ts +3 -18
- package/dist/services/cron.d.ts.map +1 -1
- package/dist/services/cron.js +241 -33
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs +241 -33
- package/dist/services/cron.mjs.map +1 -1
- package/dist/services/document-service/transform/query.d.ts.map +1 -1
- package/dist/services/document-service/transform/query.js +4 -2
- package/dist/services/document-service/transform/query.js.map +1 -1
- package/dist/services/document-service/transform/query.mjs +4 -2
- package/dist/services/document-service/transform/query.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.js +12 -3
- package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs +12 -3
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.js +12 -3
- package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs +12 -3
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.js +13 -10
- package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs +13 -10
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
- package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
- package/dist/services/entity-validator/blocks-validator.js +9 -3
- package/dist/services/entity-validator/blocks-validator.js.map +1 -1
- package/dist/services/entity-validator/blocks-validator.mjs +9 -3
- package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
- package/dist/services/features.d.ts.map +1 -1
- package/dist/services/features.js +3 -0
- package/dist/services/features.js.map +1 -1
- package/dist/services/features.mjs +3 -0
- package/dist/services/features.mjs.map +1 -1
- package/dist/services/mcp/handlers/handlePost.d.ts.map +1 -1
- package/dist/services/mcp/handlers/handlePost.js +2 -3
- package/dist/services/mcp/handlers/handlePost.js.map +1 -1
- package/dist/services/mcp/handlers/handlePost.mjs +2 -3
- package/dist/services/mcp/handlers/handlePost.mjs.map +1 -1
- package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts +1 -1
- package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts.map +1 -1
- package/dist/services/mcp/internal/McpCapabilityRegistry.js.map +1 -1
- package/dist/services/mcp/internal/McpCapabilityRegistry.mjs.map +1 -1
- package/dist/services/mcp/internal/McpServerFactory.d.ts +1 -1
- package/dist/services/mcp/internal/McpServerFactory.d.ts.map +1 -1
- package/dist/services/mcp/internal/McpServerFactory.js +2 -3
- package/dist/services/mcp/internal/McpServerFactory.js.map +1 -1
- package/dist/services/mcp/internal/McpServerFactory.mjs +1 -2
- package/dist/services/mcp/internal/McpServerFactory.mjs.map +1 -1
- package/dist/services/mcp/prompt-registry.d.ts +1 -1
- package/dist/services/mcp/prompt-registry.d.ts.map +1 -1
- package/dist/services/mcp/prompt-registry.js +18 -4
- package/dist/services/mcp/prompt-registry.js.map +1 -1
- package/dist/services/mcp/prompt-registry.mjs +18 -4
- package/dist/services/mcp/prompt-registry.mjs.map +1 -1
- package/dist/services/mcp/resource-registry.d.ts +1 -1
- package/dist/services/mcp/resource-registry.d.ts.map +1 -1
- package/dist/services/mcp/resource-registry.js +4 -2
- package/dist/services/mcp/resource-registry.js.map +1 -1
- package/dist/services/mcp/resource-registry.mjs +4 -2
- package/dist/services/mcp/resource-registry.mjs.map +1 -1
- package/dist/services/mcp/tool-registry.d.ts +1 -1
- package/dist/services/mcp/tool-registry.d.ts.map +1 -1
- package/dist/services/mcp/tool-registry.js +18 -11
- package/dist/services/mcp/tool-registry.js.map +1 -1
- package/dist/services/mcp/tool-registry.mjs +18 -11
- package/dist/services/mcp/tool-registry.mjs.map +1 -1
- package/dist/services/mcp/utils/createMcpCapabilityHandlerContext.d.ts +7 -0
- package/dist/services/mcp/utils/createMcpCapabilityHandlerContext.d.ts.map +1 -0
- package/dist/services/mcp/utils/createMcpCapabilityHandlerContext.js +29 -0
- package/dist/services/mcp/utils/createMcpCapabilityHandlerContext.js.map +1 -0
- package/dist/services/mcp/utils/createMcpCapabilityHandlerContext.mjs +27 -0
- package/dist/services/mcp/utils/createMcpCapabilityHandlerContext.mjs.map +1 -0
- package/dist/services/mcp/utils/toSdkMcpCapabilityResult.d.ts +18 -0
- package/dist/services/mcp/utils/toSdkMcpCapabilityResult.d.ts.map +1 -0
- package/dist/services/mcp/utils/toSdkMcpCapabilityResult.js +137 -0
- package/dist/services/mcp/utils/toSdkMcpCapabilityResult.js.map +1 -0
- package/dist/services/mcp/utils/toSdkMcpCapabilityResult.mjs +131 -0
- package/dist/services/mcp/utils/toSdkMcpCapabilityResult.mjs.map +1 -0
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +5 -0
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/session-manager.mjs +5 -0
- package/dist/services/session-manager.mjs.map +1 -1
- package/package.json +20 -17
package/dist/container.d.ts
CHANGED
package/dist/container.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,qBAAa,SAAU,YAAW,IAAI,CAAC,SAAS;IAC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,UAAU,CAAa;IAE/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IASnC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAoBjC"}
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,qBAAa,SAAU,YAAW,IAAI,CAAC,SAAS;IAC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,UAAU,CAAa;IAE/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IASnC,GAAG,CAAC,IAAI,EAAE,MAAM;IAIhB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAoBjC"}
|
package/dist/container.js
CHANGED
|
@@ -8,6 +8,9 @@ class Container {
|
|
|
8
8
|
this.registerMap.set(name, resolver);
|
|
9
9
|
return this;
|
|
10
10
|
}
|
|
11
|
+
has(name) {
|
|
12
|
+
return this.registerMap.has(name) || this.serviceMap.has(name);
|
|
13
|
+
}
|
|
11
14
|
get(name, args) {
|
|
12
15
|
// TODO: handle singleton vs instantiation everytime
|
|
13
16
|
if (this.serviceMap.has(name)) {
|
package/dist/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":["Container","add","name","resolver","registerMap","has","Error","set","
|
|
1
|
+
{"version":3,"file":"container.js","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n has(name: string) {\n return this.registerMap.has(name) || this.serviceMap.has(name);\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":["Container","add","name","resolver","registerMap","has","Error","set","serviceMap","get","args","Map"],"mappings":";;AAEO,MAAMA,SAAAA,CAAAA;IAKXC,GAAAA,CAAIC,IAAY,EAAEC,QAAiB,EAAE;AACnC,QAAA,IAAI,IAAI,CAACC,WAAW,CAACC,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC9B,YAAA,MAAM,IAAII,KAAAA,CAAM,CAAC,2CAA2C,EAAEJ,IAAAA,CAAAA,CAAM,CAAA;AACtE,QAAA;AAEA,QAAA,IAAI,CAACE,WAAW,CAACG,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAAA;AAC3B,QAAA,OAAO,IAAI;AACb,IAAA;AAEAE,IAAAA,GAAAA,CAAIH,IAAY,EAAE;AAChB,QAAA,OAAO,IAAI,CAACE,WAAW,CAACC,GAAG,CAACH,IAAAA,CAAAA,IAAS,IAAI,CAACM,UAAU,CAACH,GAAG,CAACH,IAAAA,CAAAA;AAC3D,IAAA;IAEAO,GAAAA,CAAIP,IAAY,EAAEQ,IAAc,EAAE;;AAEhC,QAAA,IAAI,IAAI,CAACF,UAAU,CAACH,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC7B,YAAA,OAAO,IAAI,CAACM,UAAU,CAACC,GAAG,CAACP,IAAAA,CAAAA;AAC7B,QAAA;AAEA,QAAA,IAAI,IAAI,CAACE,WAAW,CAACC,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC9B,YAAA,MAAMC,WAAW,IAAI,CAACC,WAAW,CAACK,GAAG,CAACP,IAAAA,CAAAA;YAEtC,IAAI,OAAOC,aAAa,UAAA,EAAY;gBAClC,IAAI,CAACK,UAAU,CAACD,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAS,IAAI,EAAEO,IAAAA,CAAAA,CAAAA;YAC3C,CAAA,MAAO;AACL,gBAAA,IAAI,CAACF,UAAU,CAACD,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAAA;AAC5B,YAAA;AAEA,YAAA,OAAO,IAAI,CAACK,UAAU,CAACC,GAAG,CAACP,IAAAA,CAAAA;AAC7B,QAAA;AAEA,QAAA,MAAM,IAAII,KAAAA,CAAM,CAAC,0BAA0B,EAAEJ,IAAAA,CAAAA,CAAM,CAAA;AACrD,IAAA;;AApCQE,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAIO,GAAAA,EAAAA;AAElBH,QAAAA,IAAAA,CAAAA,UAAAA,GAAa,IAAIG,GAAAA,EAAAA;;AAmC3B;;;;"}
|
package/dist/container.mjs
CHANGED
|
@@ -6,6 +6,9 @@ class Container {
|
|
|
6
6
|
this.registerMap.set(name, resolver);
|
|
7
7
|
return this;
|
|
8
8
|
}
|
|
9
|
+
has(name) {
|
|
10
|
+
return this.registerMap.has(name) || this.serviceMap.has(name);
|
|
11
|
+
}
|
|
9
12
|
get(name, args) {
|
|
10
13
|
// TODO: handle singleton vs instantiation everytime
|
|
11
14
|
if (this.serviceMap.has(name)) {
|
package/dist/container.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.mjs","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":["Container","add","name","resolver","registerMap","has","Error","set","
|
|
1
|
+
{"version":3,"file":"container.mjs","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n has(name: string) {\n return this.registerMap.has(name) || this.serviceMap.has(name);\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":["Container","add","name","resolver","registerMap","has","Error","set","serviceMap","get","args","Map"],"mappings":"AAEO,MAAMA,SAAAA,CAAAA;IAKXC,GAAAA,CAAIC,IAAY,EAAEC,QAAiB,EAAE;AACnC,QAAA,IAAI,IAAI,CAACC,WAAW,CAACC,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC9B,YAAA,MAAM,IAAII,KAAAA,CAAM,CAAC,2CAA2C,EAAEJ,IAAAA,CAAAA,CAAM,CAAA;AACtE,QAAA;AAEA,QAAA,IAAI,CAACE,WAAW,CAACG,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAAA;AAC3B,QAAA,OAAO,IAAI;AACb,IAAA;AAEAE,IAAAA,GAAAA,CAAIH,IAAY,EAAE;AAChB,QAAA,OAAO,IAAI,CAACE,WAAW,CAACC,GAAG,CAACH,IAAAA,CAAAA,IAAS,IAAI,CAACM,UAAU,CAACH,GAAG,CAACH,IAAAA,CAAAA;AAC3D,IAAA;IAEAO,GAAAA,CAAIP,IAAY,EAAEQ,IAAc,EAAE;;AAEhC,QAAA,IAAI,IAAI,CAACF,UAAU,CAACH,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC7B,YAAA,OAAO,IAAI,CAACM,UAAU,CAACC,GAAG,CAACP,IAAAA,CAAAA;AAC7B,QAAA;AAEA,QAAA,IAAI,IAAI,CAACE,WAAW,CAACC,GAAG,CAACH,IAAAA,CAAAA,EAAO;AAC9B,YAAA,MAAMC,WAAW,IAAI,CAACC,WAAW,CAACK,GAAG,CAACP,IAAAA,CAAAA;YAEtC,IAAI,OAAOC,aAAa,UAAA,EAAY;gBAClC,IAAI,CAACK,UAAU,CAACD,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAS,IAAI,EAAEO,IAAAA,CAAAA,CAAAA;YAC3C,CAAA,MAAO;AACL,gBAAA,IAAI,CAACF,UAAU,CAACD,GAAG,CAACL,IAAAA,EAAMC,QAAAA,CAAAA;AAC5B,YAAA;AAEA,YAAA,OAAO,IAAI,CAACK,UAAU,CAACC,GAAG,CAACP,IAAAA,CAAAA;AAC7B,QAAA;AAEA,QAAA,MAAM,IAAII,KAAAA,CAAM,CAAC,0BAA0B,EAAEJ,IAAAA,CAAAA,CAAM,CAAA;AACrD,IAAA;;AApCQE,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAIO,GAAAA,EAAAA;AAElBH,QAAAA,IAAAA,CAAAA,UAAAA,GAAa,IAAIG,GAAAA,EAAAA;;AAmC3B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-type.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/single-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAO,MAAM,eAAe,CAAC;AAE9D,UAAU,OAAO;IACf,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC;CACtC;AAED;;GAEG;AACH,QAAA,MAAM,0BAA0B,GAAI,kBAEjC,OAAO,KAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"single-type.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/single-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAO,MAAM,eAAe,CAAC;AAE9D,UAAU,OAAO;IACf,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC;CACtC;AAED;;GAEG;AACH,QAAA,MAAM,0BAA0B,GAAI,kBAEjC,OAAO,KAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAwDpE,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -22,22 +22,25 @@ var strapiUtils = require('@strapi/utils');
|
|
|
22
22
|
/**
|
|
23
23
|
* create or update single type content.
|
|
24
24
|
*/ async update (ctx) {
|
|
25
|
-
|
|
25
|
+
await this.validateQuery(ctx);
|
|
26
|
+
const sanitizedQuery = await this.sanitizeQuery(ctx);
|
|
27
|
+
const { body = {} } = ctx.request;
|
|
26
28
|
if (!fp.isObject(body.data)) {
|
|
27
29
|
throw new strapiUtils.errors.ValidationError('Missing "data" payload in the request body');
|
|
28
30
|
}
|
|
29
31
|
await this.validateInput(body.data, ctx);
|
|
30
32
|
const sanitizedInputData = await this.sanitizeInput(body.data, ctx);
|
|
31
33
|
const entity = await strapi.service(uid).createOrUpdate({
|
|
32
|
-
...
|
|
34
|
+
...sanitizedQuery,
|
|
33
35
|
data: sanitizedInputData
|
|
34
36
|
});
|
|
35
37
|
const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
|
|
36
38
|
return this.transformResponse(sanitizedEntity);
|
|
37
39
|
},
|
|
38
40
|
async delete (ctx) {
|
|
39
|
-
|
|
40
|
-
await
|
|
41
|
+
await this.validateQuery(ctx);
|
|
42
|
+
const sanitizedQuery = await this.sanitizeQuery(ctx);
|
|
43
|
+
await strapi.service(uid).delete(sanitizedQuery);
|
|
41
44
|
ctx.status = 204;
|
|
42
45
|
}
|
|
43
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-type.js","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Struct, Core, Utils, UID } from '@strapi/types';\n\ninterface Options {\n contentType: Struct.SingleTypeSchema;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.SingleType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n */\n async update(ctx) {\n const {
|
|
1
|
+
{"version":3,"file":"single-type.js","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Struct, Core, Utils, UID } from '@strapi/types';\n\ninterface Options {\n contentType: Struct.SingleTypeSchema;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.SingleType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n */\n async update(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createSingleTypeController };\n"],"names":["createSingleTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","entity","strapi","service","sanitizedEntity","sanitizeOutput","transformResponse","update","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","createOrUpdate","delete","status"],"mappings":";;;;;AAQA;;AAEC,IACD,MAAMA,0BAAAA,GAA6B,CAAC,EAClCC,WAAW,EACH,GAAA;IACR,MAAMC,GAAAA,GAAMD,YAAYC,GAAG;;IAG3B,OAAO;AACL;;;QAIA,MAAMC,MAAKC,GAAG,EAAA;YACZ,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAAA,GAAiB,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKC,IAAI,CAACG,cAAAA,CAAAA;AAE9C,YAAA,MAAMK,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAAA,EAAQJ,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,QAAA,CAAA;AAEA;;QAGA,MAAMG,QAAOV,GAAG,EAAA;YACd,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAAA,GAAiB,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAM,EAAEW,IAAAA,GAAO,EAAS,EAAE,GAAGX,IAAIY,OAAO;AAExC,YAAA,IAAI,CAACC,WAAAA,CAASF,IAAAA,CAAKG,IAAI,CAAA,EAAG;gBACxB,MAAM,IAAIC,kBAAAA,CAAOC,eAAe,CAAC,4CAAA,CAAA;AACnC,YAAA;AAEA,YAAA,MAAM,IAAI,CAACC,aAAa,CAACN,IAAAA,CAAKG,IAAI,EAAEd,GAAAA,CAAAA;YAEpC,MAAMkB,kBAAAA,GAAqB,MAAM,IAAI,CAACC,aAAa,CAACR,IAAAA,CAAKG,IAAI,EAAEd,GAAAA,CAAAA;AAE/D,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKsB,cAAc,CAAC;AACtD,gBAAA,GAAGlB,cAAc;gBACjBY,IAAAA,EAAMI;AACR,aAAA,CAAA;AAEA,YAAA,MAAMX,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAAA,EAAQJ,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,QAAA,CAAA;AAEA,QAAA,MAAMc,QAAOrB,GAAG,EAAA;YACd,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAAA,GAAiB,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAMK,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKuB,MAAM,CAACnB,cAAAA,CAAAA;AAEjCF,YAAAA,GAAAA,CAAIsB,MAAM,GAAG,GAAA;AACf,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -20,22 +20,25 @@ import { errors } from '@strapi/utils';
|
|
|
20
20
|
/**
|
|
21
21
|
* create or update single type content.
|
|
22
22
|
*/ async update (ctx) {
|
|
23
|
-
|
|
23
|
+
await this.validateQuery(ctx);
|
|
24
|
+
const sanitizedQuery = await this.sanitizeQuery(ctx);
|
|
25
|
+
const { body = {} } = ctx.request;
|
|
24
26
|
if (!isObject(body.data)) {
|
|
25
27
|
throw new errors.ValidationError('Missing "data" payload in the request body');
|
|
26
28
|
}
|
|
27
29
|
await this.validateInput(body.data, ctx);
|
|
28
30
|
const sanitizedInputData = await this.sanitizeInput(body.data, ctx);
|
|
29
31
|
const entity = await strapi.service(uid).createOrUpdate({
|
|
30
|
-
...
|
|
32
|
+
...sanitizedQuery,
|
|
31
33
|
data: sanitizedInputData
|
|
32
34
|
});
|
|
33
35
|
const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
|
|
34
36
|
return this.transformResponse(sanitizedEntity);
|
|
35
37
|
},
|
|
36
38
|
async delete (ctx) {
|
|
37
|
-
|
|
38
|
-
await
|
|
39
|
+
await this.validateQuery(ctx);
|
|
40
|
+
const sanitizedQuery = await this.sanitizeQuery(ctx);
|
|
41
|
+
await strapi.service(uid).delete(sanitizedQuery);
|
|
39
42
|
ctx.status = 204;
|
|
40
43
|
}
|
|
41
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-type.mjs","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Struct, Core, Utils, UID } from '@strapi/types';\n\ninterface Options {\n contentType: Struct.SingleTypeSchema;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.SingleType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n */\n async update(ctx) {\n const {
|
|
1
|
+
{"version":3,"file":"single-type.mjs","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Struct, Core, Utils, UID } from '@strapi/types';\n\ninterface Options {\n contentType: Struct.SingleTypeSchema;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.SingleType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n */\n async update(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createSingleTypeController };\n"],"names":["createSingleTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","entity","strapi","service","sanitizedEntity","sanitizeOutput","transformResponse","update","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","createOrUpdate","delete","status"],"mappings":";;;AAQA;;AAEC,IACD,MAAMA,0BAAAA,GAA6B,CAAC,EAClCC,WAAW,EACH,GAAA;IACR,MAAMC,GAAAA,GAAMD,YAAYC,GAAG;;IAG3B,OAAO;AACL;;;QAIA,MAAMC,MAAKC,GAAG,EAAA;YACZ,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAAA,GAAiB,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKC,IAAI,CAACG,cAAAA,CAAAA;AAE9C,YAAA,MAAMK,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAAA,EAAQJ,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,QAAA,CAAA;AAEA;;QAGA,MAAMG,QAAOV,GAAG,EAAA;YACd,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAAA,GAAiB,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAM,EAAEW,IAAAA,GAAO,EAAS,EAAE,GAAGX,IAAIY,OAAO;AAExC,YAAA,IAAI,CAACC,QAAAA,CAASF,IAAAA,CAAKG,IAAI,CAAA,EAAG;gBACxB,MAAM,IAAIC,MAAAA,CAAOC,eAAe,CAAC,4CAAA,CAAA;AACnC,YAAA;AAEA,YAAA,MAAM,IAAI,CAACC,aAAa,CAACN,IAAAA,CAAKG,IAAI,EAAEd,GAAAA,CAAAA;YAEpC,MAAMkB,kBAAAA,GAAqB,MAAM,IAAI,CAACC,aAAa,CAACR,IAAAA,CAAKG,IAAI,EAAEd,GAAAA,CAAAA;AAE/D,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKsB,cAAc,CAAC;AACtD,gBAAA,GAAGlB,cAAc;gBACjBY,IAAAA,EAAMI;AACR,aAAA,CAAA;AAEA,YAAA,MAAMX,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAAA,EAAQJ,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,QAAA,CAAA;AAEA,QAAA,MAAMc,QAAOrB,GAAG,EAAA;YACd,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAAA,GAAiB,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAMK,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKuB,MAAM,CAACnB,cAAAA,CAAAA;AAEjCF,YAAAA,GAAAA,CAAIsB,MAAM,GAAG,GAAA;AACf,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/content-type/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAWF,QAAA,MAAM,iBAAiB,GAAI,KAAK,MAAM,EAAE,YAAY,qBAAqB,oEAqCxE,CAAC;AAwFF,QAAA,MAAM,WAAW,GAAI,QAAQ,MAAM,CAAC,WAAW,EAAE,SAAS,MAAM,WAK/D,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/content-type/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAWF,QAAA,MAAM,iBAAiB,GAAI,KAAK,MAAM,EAAE,YAAY,qBAAqB,oEAqCxE,CAAC;AAwFF,QAAA,MAAM,WAAW,GAAI,QAAQ,MAAM,CAAC,WAAW,EAAE,SAAS,MAAM,WAK/D,CAAC;AAqBF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/domain/content-type/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash/fp';\nimport _ from 'lodash';\nimport { yup, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { validateContentTypeDefinition } from './validator';\n\nexport type ContentTypeDefinition = {\n schema: Schema.ContentType;\n actions: Record<string, unknown>;\n lifecycles: Record<string, unknown>;\n};\n\nconst {\n CREATED_AT_ATTRIBUTE,\n UPDATED_AT_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n FIRST_PUBLISHED_AT_ATTRIBUTE,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n} = contentTypesUtils.constants;\n\nconst createContentType = (uid: string, definition: ContentTypeDefinition) => {\n try {\n validateContentTypeDefinition(definition);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`Content Type Definition is invalid for ${uid}'.\\n${e.errors}`);\n }\n\n throw e;\n }\n\n const { schema, actions, lifecycles } = cloneDeep(definition);\n\n // general info\n Object.assign(schema, {\n uid,\n modelType: 'contentType',\n kind: schema.kind || 'collectionType',\n __schema__: pickSchema(definition.schema),\n modelName: definition.schema.info.singularName,\n actions,\n lifecycles,\n });\n\n addTimestamps(schema);\n\n // Published at is added regardless of draft and publish being enabled\n // In case it is not enabled, value will be always published, and it will not contain a draft\n addDraftAndPublish(schema);\n\n addCreatorFields(schema);\n\n addFirstPublishedAt(schema);\n\n warnDraftAndPublishReservedAttributes(uid, schema);\n\n return schema;\n};\n\nconst warnDraftAndPublishReservedAttributes = (uid: string, schema: Schema.ContentType) => {\n if (schema.options?.draftAndPublish !== true) {\n return;\n }\n\n for (const attributeName of contentTypesUtils.findDraftAndPublishReservedAttributeNames(\n Object.keys(schema.attributes)\n )) {\n strapi.log.warn(\n contentTypesUtils.getDraftAndPublishReservedAttributeWarning(uid, attributeName)\n );\n }\n};\n\nconst addTimestamps = (schema: Schema.ContentType) => {\n // attributes\n Object.assign(schema.attributes, {\n [CREATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n // TODO: handle on edit set to new date\n [UPDATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n });\n};\n\nconst addDraftAndPublish = (schema: Schema.ContentType) => {\n if (!_.has(schema, 'options.draftAndPublish')) {\n _.set(schema, 'options.draftAndPublish', false); // Disabled by default\n }\n\n schema.attributes[PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: true,\n default() {\n return new Date();\n },\n };\n};\n\nconst addFirstPublishedAt = (schema: Schema.ContentType) => {\n const isEnabled = contentTypesUtils.hasFirstPublishedAtField(schema);\n\n // Note: As an expertimental feature, we are okay if this data is deleted if this feature is\n // switched off. Once \"preserve_attributes\" come into play, this will be updated.\n if (isEnabled) {\n strapi.log.warn(`Experimental feature enabled: firstPublishedAt on ${schema.collectionName}`);\n schema.attributes[FIRST_PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: false,\n private: !isEnabled,\n };\n }\n};\n\nconst addCreatorFields = (schema: Schema.ContentType) => {\n const isPrivate = !_.get(schema, 'options.populateCreatorFields', false);\n\n schema.attributes[CREATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n\n schema.attributes[UPDATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n};\n\nconst getGlobalId = (schema: Schema.ContentType, prefix?: string) => {\n const modelName = schema.info.singularName;\n const globalId = prefix ? `${prefix}-${modelName}` : modelName;\n\n return schema.globalId || _.upperFirst(_.camelCase(globalId));\n};\n\nconst pickSchema = (model: Schema.ContentType) => {\n const schema = _.cloneDeep(\n _.pick(model, [\n 'connection',\n 'collectionName',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'kind',\n ])\n );\n\n schema.kind = model.kind || 'collectionType';\n return schema;\n};\n\nexport { createContentType, getGlobalId };\n"],"names":["CREATED_AT_ATTRIBUTE","UPDATED_AT_ATTRIBUTE","PUBLISHED_AT_ATTRIBUTE","FIRST_PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","contentTypesUtils","constants","createContentType","uid","definition","validateContentTypeDefinition","e","yup","ValidationError","Error","errors","schema","actions","lifecycles","cloneDeep","Object","assign","modelType","kind","__schema__","pickSchema","modelName","info","singularName","addTimestamps","addDraftAndPublish","addCreatorFields","addFirstPublishedAt","warnDraftAndPublishReservedAttributes","options","draftAndPublish","attributeName","findDraftAndPublishReservedAttributeNames","keys","attributes","strapi","log","warn","getDraftAndPublishReservedAttributeWarning","type","_","has","set","configurable","writable","visible","default","Date","isEnabled","hasFirstPublishedAtField","collectionName","private","isPrivate","get","relation","target","useJoinTable","getGlobalId","prefix","globalId","upperFirst","camelCase","model","pick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/domain/content-type/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash/fp';\nimport _ from 'lodash';\nimport { yup, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { validateContentTypeDefinition } from './validator';\n\nexport type ContentTypeDefinition = {\n schema: Schema.ContentType;\n actions: Record<string, unknown>;\n lifecycles: Record<string, unknown>;\n};\n\nconst {\n CREATED_AT_ATTRIBUTE,\n UPDATED_AT_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n FIRST_PUBLISHED_AT_ATTRIBUTE,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n} = contentTypesUtils.constants;\n\nconst createContentType = (uid: string, definition: ContentTypeDefinition) => {\n try {\n validateContentTypeDefinition(definition);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`Content Type Definition is invalid for ${uid}'.\\n${e.errors}`);\n }\n\n throw e;\n }\n\n const { schema, actions, lifecycles } = cloneDeep(definition);\n\n // general info\n Object.assign(schema, {\n uid,\n modelType: 'contentType',\n kind: schema.kind || 'collectionType',\n __schema__: pickSchema(definition.schema),\n modelName: definition.schema.info.singularName,\n actions,\n lifecycles,\n });\n\n addTimestamps(schema);\n\n // Published at is added regardless of draft and publish being enabled\n // In case it is not enabled, value will be always published, and it will not contain a draft\n addDraftAndPublish(schema);\n\n addCreatorFields(schema);\n\n addFirstPublishedAt(schema);\n\n warnDraftAndPublishReservedAttributes(uid, schema);\n\n return schema;\n};\n\nconst warnDraftAndPublishReservedAttributes = (uid: string, schema: Schema.ContentType) => {\n if (schema.options?.draftAndPublish !== true) {\n return;\n }\n\n for (const attributeName of contentTypesUtils.findDraftAndPublishReservedAttributeNames(\n Object.keys(schema.attributes)\n )) {\n strapi.log.warn(\n contentTypesUtils.getDraftAndPublishReservedAttributeWarning(uid, attributeName)\n );\n }\n};\n\nconst addTimestamps = (schema: Schema.ContentType) => {\n // attributes\n Object.assign(schema.attributes, {\n [CREATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n // TODO: handle on edit set to new date\n [UPDATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n });\n};\n\nconst addDraftAndPublish = (schema: Schema.ContentType) => {\n if (!_.has(schema, 'options.draftAndPublish')) {\n _.set(schema, 'options.draftAndPublish', false); // Disabled by default\n }\n\n schema.attributes[PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: true,\n default() {\n return new Date();\n },\n };\n};\n\nconst addFirstPublishedAt = (schema: Schema.ContentType) => {\n const isEnabled = contentTypesUtils.hasFirstPublishedAtField(schema);\n\n // Note: As an expertimental feature, we are okay if this data is deleted if this feature is\n // switched off. Once \"preserve_attributes\" come into play, this will be updated.\n if (isEnabled) {\n strapi.log.warn(`Experimental feature enabled: firstPublishedAt on ${schema.collectionName}`);\n schema.attributes[FIRST_PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: false,\n private: !isEnabled,\n };\n }\n};\n\nconst addCreatorFields = (schema: Schema.ContentType) => {\n const isPrivate = !_.get(schema, 'options.populateCreatorFields', false);\n\n schema.attributes[CREATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n\n schema.attributes[UPDATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n};\n\nconst getGlobalId = (schema: Schema.ContentType, prefix?: string) => {\n const modelName = schema.info.singularName;\n const globalId = prefix ? `${prefix}-${modelName}` : modelName;\n\n return schema.globalId || _.upperFirst(_.camelCase(globalId));\n};\n\nconst pickSchema = (model: Schema.ContentType) => {\n const schema = _.cloneDeep(\n _.pick(model, [\n 'connection',\n 'collectionName',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'kind',\n 'indexes',\n 'foreignKeys',\n ])\n );\n\n schema.kind = model.kind || 'collectionType';\n return schema;\n};\n\nexport { createContentType, getGlobalId };\n"],"names":["CREATED_AT_ATTRIBUTE","UPDATED_AT_ATTRIBUTE","PUBLISHED_AT_ATTRIBUTE","FIRST_PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","contentTypesUtils","constants","createContentType","uid","definition","validateContentTypeDefinition","e","yup","ValidationError","Error","errors","schema","actions","lifecycles","cloneDeep","Object","assign","modelType","kind","__schema__","pickSchema","modelName","info","singularName","addTimestamps","addDraftAndPublish","addCreatorFields","addFirstPublishedAt","warnDraftAndPublishReservedAttributes","options","draftAndPublish","attributeName","findDraftAndPublishReservedAttributeNames","keys","attributes","strapi","log","warn","getDraftAndPublishReservedAttributeWarning","type","_","has","set","configurable","writable","visible","default","Date","isEnabled","hasFirstPublishedAtField","collectionName","private","isPrivate","get","relation","target","useJoinTable","getGlobalId","prefix","globalId","upperFirst","camelCase","model","pick"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/domain/content-type/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash/fp';\nimport _ from 'lodash';\nimport { yup, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { validateContentTypeDefinition } from './validator';\n\nexport type ContentTypeDefinition = {\n schema: Schema.ContentType;\n actions: Record<string, unknown>;\n lifecycles: Record<string, unknown>;\n};\n\nconst {\n CREATED_AT_ATTRIBUTE,\n UPDATED_AT_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n FIRST_PUBLISHED_AT_ATTRIBUTE,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n} = contentTypesUtils.constants;\n\nconst createContentType = (uid: string, definition: ContentTypeDefinition) => {\n try {\n validateContentTypeDefinition(definition);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`Content Type Definition is invalid for ${uid}'.\\n${e.errors}`);\n }\n\n throw e;\n }\n\n const { schema, actions, lifecycles } = cloneDeep(definition);\n\n // general info\n Object.assign(schema, {\n uid,\n modelType: 'contentType',\n kind: schema.kind || 'collectionType',\n __schema__: pickSchema(definition.schema),\n modelName: definition.schema.info.singularName,\n actions,\n lifecycles,\n });\n\n addTimestamps(schema);\n\n // Published at is added regardless of draft and publish being enabled\n // In case it is not enabled, value will be always published, and it will not contain a draft\n addDraftAndPublish(schema);\n\n addCreatorFields(schema);\n\n addFirstPublishedAt(schema);\n\n warnDraftAndPublishReservedAttributes(uid, schema);\n\n return schema;\n};\n\nconst warnDraftAndPublishReservedAttributes = (uid: string, schema: Schema.ContentType) => {\n if (schema.options?.draftAndPublish !== true) {\n return;\n }\n\n for (const attributeName of contentTypesUtils.findDraftAndPublishReservedAttributeNames(\n Object.keys(schema.attributes)\n )) {\n strapi.log.warn(\n contentTypesUtils.getDraftAndPublishReservedAttributeWarning(uid, attributeName)\n );\n }\n};\n\nconst addTimestamps = (schema: Schema.ContentType) => {\n // attributes\n Object.assign(schema.attributes, {\n [CREATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n // TODO: handle on edit set to new date\n [UPDATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n });\n};\n\nconst addDraftAndPublish = (schema: Schema.ContentType) => {\n if (!_.has(schema, 'options.draftAndPublish')) {\n _.set(schema, 'options.draftAndPublish', false); // Disabled by default\n }\n\n schema.attributes[PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: true,\n default() {\n return new Date();\n },\n };\n};\n\nconst addFirstPublishedAt = (schema: Schema.ContentType) => {\n const isEnabled = contentTypesUtils.hasFirstPublishedAtField(schema);\n\n // Note: As an expertimental feature, we are okay if this data is deleted if this feature is\n // switched off. Once \"preserve_attributes\" come into play, this will be updated.\n if (isEnabled) {\n strapi.log.warn(`Experimental feature enabled: firstPublishedAt on ${schema.collectionName}`);\n schema.attributes[FIRST_PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: false,\n private: !isEnabled,\n };\n }\n};\n\nconst addCreatorFields = (schema: Schema.ContentType) => {\n const isPrivate = !_.get(schema, 'options.populateCreatorFields', false);\n\n schema.attributes[CREATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n\n schema.attributes[UPDATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n};\n\nconst getGlobalId = (schema: Schema.ContentType, prefix?: string) => {\n const modelName = schema.info.singularName;\n const globalId = prefix ? `${prefix}-${modelName}` : modelName;\n\n return schema.globalId || _.upperFirst(_.camelCase(globalId));\n};\n\nconst pickSchema = (model: Schema.ContentType) => {\n const schema = _.cloneDeep(\n _.pick(model, [\n 'connection',\n 'collectionName',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'kind',\n ])\n );\n\n schema.kind = model.kind || 'collectionType';\n return schema;\n};\n\nexport { createContentType, getGlobalId };\n"],"names":["CREATED_AT_ATTRIBUTE","UPDATED_AT_ATTRIBUTE","PUBLISHED_AT_ATTRIBUTE","FIRST_PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","contentTypesUtils","constants","createContentType","uid","definition","validateContentTypeDefinition","e","yup","ValidationError","Error","errors","schema","actions","lifecycles","cloneDeep","Object","assign","modelType","kind","__schema__","pickSchema","modelName","info","singularName","addTimestamps","addDraftAndPublish","addCreatorFields","addFirstPublishedAt","warnDraftAndPublishReservedAttributes","options","draftAndPublish","attributeName","findDraftAndPublishReservedAttributeNames","keys","attributes","strapi","log","warn","getDraftAndPublishReservedAttributeWarning","type","_","has","set","configurable","writable","visible","default","Date","isEnabled","hasFirstPublishedAtField","collectionName","private","isPrivate","get","relation","target","useJoinTable","getGlobalId","prefix","globalId","upperFirst","camelCase","model","pick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/domain/content-type/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash/fp';\nimport _ from 'lodash';\nimport { yup, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { validateContentTypeDefinition } from './validator';\n\nexport type ContentTypeDefinition = {\n schema: Schema.ContentType;\n actions: Record<string, unknown>;\n lifecycles: Record<string, unknown>;\n};\n\nconst {\n CREATED_AT_ATTRIBUTE,\n UPDATED_AT_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n FIRST_PUBLISHED_AT_ATTRIBUTE,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n} = contentTypesUtils.constants;\n\nconst createContentType = (uid: string, definition: ContentTypeDefinition) => {\n try {\n validateContentTypeDefinition(definition);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`Content Type Definition is invalid for ${uid}'.\\n${e.errors}`);\n }\n\n throw e;\n }\n\n const { schema, actions, lifecycles } = cloneDeep(definition);\n\n // general info\n Object.assign(schema, {\n uid,\n modelType: 'contentType',\n kind: schema.kind || 'collectionType',\n __schema__: pickSchema(definition.schema),\n modelName: definition.schema.info.singularName,\n actions,\n lifecycles,\n });\n\n addTimestamps(schema);\n\n // Published at is added regardless of draft and publish being enabled\n // In case it is not enabled, value will be always published, and it will not contain a draft\n addDraftAndPublish(schema);\n\n addCreatorFields(schema);\n\n addFirstPublishedAt(schema);\n\n warnDraftAndPublishReservedAttributes(uid, schema);\n\n return schema;\n};\n\nconst warnDraftAndPublishReservedAttributes = (uid: string, schema: Schema.ContentType) => {\n if (schema.options?.draftAndPublish !== true) {\n return;\n }\n\n for (const attributeName of contentTypesUtils.findDraftAndPublishReservedAttributeNames(\n Object.keys(schema.attributes)\n )) {\n strapi.log.warn(\n contentTypesUtils.getDraftAndPublishReservedAttributeWarning(uid, attributeName)\n );\n }\n};\n\nconst addTimestamps = (schema: Schema.ContentType) => {\n // attributes\n Object.assign(schema.attributes, {\n [CREATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n // TODO: handle on edit set to new date\n [UPDATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n });\n};\n\nconst addDraftAndPublish = (schema: Schema.ContentType) => {\n if (!_.has(schema, 'options.draftAndPublish')) {\n _.set(schema, 'options.draftAndPublish', false); // Disabled by default\n }\n\n schema.attributes[PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: true,\n default() {\n return new Date();\n },\n };\n};\n\nconst addFirstPublishedAt = (schema: Schema.ContentType) => {\n const isEnabled = contentTypesUtils.hasFirstPublishedAtField(schema);\n\n // Note: As an expertimental feature, we are okay if this data is deleted if this feature is\n // switched off. Once \"preserve_attributes\" come into play, this will be updated.\n if (isEnabled) {\n strapi.log.warn(`Experimental feature enabled: firstPublishedAt on ${schema.collectionName}`);\n schema.attributes[FIRST_PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: false,\n private: !isEnabled,\n };\n }\n};\n\nconst addCreatorFields = (schema: Schema.ContentType) => {\n const isPrivate = !_.get(schema, 'options.populateCreatorFields', false);\n\n schema.attributes[CREATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n\n schema.attributes[UPDATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n};\n\nconst getGlobalId = (schema: Schema.ContentType, prefix?: string) => {\n const modelName = schema.info.singularName;\n const globalId = prefix ? `${prefix}-${modelName}` : modelName;\n\n return schema.globalId || _.upperFirst(_.camelCase(globalId));\n};\n\nconst pickSchema = (model: Schema.ContentType) => {\n const schema = _.cloneDeep(\n _.pick(model, [\n 'connection',\n 'collectionName',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'kind',\n 'indexes',\n 'foreignKeys',\n ])\n );\n\n schema.kind = model.kind || 'collectionType';\n return schema;\n};\n\nexport { createContentType, getGlobalId };\n"],"names":["CREATED_AT_ATTRIBUTE","UPDATED_AT_ATTRIBUTE","PUBLISHED_AT_ATTRIBUTE","FIRST_PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","contentTypesUtils","constants","createContentType","uid","definition","validateContentTypeDefinition","e","yup","ValidationError","Error","errors","schema","actions","lifecycles","cloneDeep","Object","assign","modelType","kind","__schema__","pickSchema","modelName","info","singularName","addTimestamps","addDraftAndPublish","addCreatorFields","addFirstPublishedAt","warnDraftAndPublishReservedAttributes","options","draftAndPublish","attributeName","findDraftAndPublishReservedAttributeNames","keys","attributes","strapi","log","warn","getDraftAndPublishReservedAttributeWarning","type","_","has","set","configurable","writable","visible","default","Date","isEnabled","hasFirstPublishedAtField","collectionName","private","isPrivate","get","relation","target","useJoinTable","getGlobalId","prefix","globalId","upperFirst","camelCase","model","pick"],"mappings":"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"}
|
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 = "5.
|
|
6
|
+
var version = "5.54.0";
|
|
7
7
|
var description = "Core of Strapi";
|
|
8
8
|
var homepage = "https://strapi.io";
|
|
9
9
|
var bugs = {
|
|
@@ -63,17 +63,18 @@ var dependencies = {
|
|
|
63
63
|
"@casl/ability": "6.7.5",
|
|
64
64
|
"@koa/cors": "5.0.0",
|
|
65
65
|
"@koa/router": "12.0.2",
|
|
66
|
-
"@modelcontextprotocol/
|
|
66
|
+
"@modelcontextprotocol/node": "2.0.0",
|
|
67
|
+
"@modelcontextprotocol/server": "2.0.0",
|
|
67
68
|
"@paralleldrive/cuid2": "2.2.2",
|
|
68
|
-
"@strapi/admin": "5.
|
|
69
|
-
"@strapi/database": "5.
|
|
70
|
-
"@strapi/generators": "5.
|
|
71
|
-
"@strapi/logger": "5.
|
|
72
|
-
"@strapi/openapi": "5.
|
|
73
|
-
"@strapi/permissions": "5.
|
|
74
|
-
"@strapi/types": "5.
|
|
75
|
-
"@strapi/typescript-utils": "5.
|
|
76
|
-
"@strapi/utils": "5.
|
|
69
|
+
"@strapi/admin": "5.54.0",
|
|
70
|
+
"@strapi/database": "5.54.0",
|
|
71
|
+
"@strapi/generators": "5.54.0",
|
|
72
|
+
"@strapi/logger": "5.54.0",
|
|
73
|
+
"@strapi/openapi": "5.54.0",
|
|
74
|
+
"@strapi/permissions": "5.54.0",
|
|
75
|
+
"@strapi/types": "5.54.0",
|
|
76
|
+
"@strapi/typescript-utils": "5.54.0",
|
|
77
|
+
"@strapi/utils": "5.54.0",
|
|
77
78
|
"@vercel/stega": "0.1.2",
|
|
78
79
|
bcryptjs: "2.4.3",
|
|
79
80
|
boxen: "5.1.2",
|
|
@@ -82,6 +83,7 @@ var dependencies = {
|
|
|
82
83
|
"cli-table3": "0.6.5",
|
|
83
84
|
commander: "8.3.0",
|
|
84
85
|
configstore: "5.0.1",
|
|
86
|
+
croner: "10.0.1",
|
|
85
87
|
debug: "4.3.4",
|
|
86
88
|
delegates: "1.0.0",
|
|
87
89
|
dotenv: "16.6.1",
|
|
@@ -106,7 +108,6 @@ var dependencies = {
|
|
|
106
108
|
"koa-static": "5.0.0",
|
|
107
109
|
lodash: "4.18.1",
|
|
108
110
|
"mime-types": "2.1.35",
|
|
109
|
-
"node-schedule": "2.1.1",
|
|
110
111
|
open: "8.4.2",
|
|
111
112
|
ora: "5.4.1",
|
|
112
113
|
"package-json": "10.0.1",
|
|
@@ -115,11 +116,12 @@ var dependencies = {
|
|
|
115
116
|
"resolve.exports": "2.0.2",
|
|
116
117
|
semver: "7.7.4",
|
|
117
118
|
typescript: "5.9.3",
|
|
118
|
-
undici: "6.28.
|
|
119
|
+
undici: "6.28.1",
|
|
119
120
|
yup: "0.32.9",
|
|
120
121
|
zod: "4.4.3"
|
|
121
122
|
};
|
|
122
123
|
var devDependencies = {
|
|
124
|
+
"@modelcontextprotocol/client": "2.0.0",
|
|
123
125
|
"@swc/core": "1.13.5",
|
|
124
126
|
"@types/bcryptjs": "2.4.3",
|
|
125
127
|
"@types/configstore": "5.0.1",
|
|
@@ -136,13 +138,14 @@ var devDependencies = {
|
|
|
136
138
|
"@types/lodash": "^4.14.191",
|
|
137
139
|
"@types/mime-types": "2.1.1",
|
|
138
140
|
"@types/node": "20.19.41",
|
|
139
|
-
|
|
140
|
-
"
|
|
141
|
+
ajv: "8.20.0",
|
|
142
|
+
"ajv-formats": "3.0.1",
|
|
143
|
+
"eslint-config-custom": "5.54.0",
|
|
141
144
|
jest: "29.6.0",
|
|
142
145
|
supertest: "7.2.2",
|
|
143
|
-
tsconfig: "5.
|
|
146
|
+
tsconfig: "5.54.0",
|
|
144
147
|
vitest: "catalog:",
|
|
145
|
-
"vitest-config": "5.
|
|
148
|
+
"vitest-config": "5.54.0"
|
|
146
149
|
};
|
|
147
150
|
var engines = {
|
|
148
151
|
node: ">=20.0.0 <=26.x.x",
|
package/dist/package.json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/package.json.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@strapi/core";
|
|
2
|
-
var version = "5.
|
|
2
|
+
var version = "5.54.0";
|
|
3
3
|
var description = "Core of Strapi";
|
|
4
4
|
var homepage = "https://strapi.io";
|
|
5
5
|
var bugs = {
|
|
@@ -59,17 +59,18 @@ var dependencies = {
|
|
|
59
59
|
"@casl/ability": "6.7.5",
|
|
60
60
|
"@koa/cors": "5.0.0",
|
|
61
61
|
"@koa/router": "12.0.2",
|
|
62
|
-
"@modelcontextprotocol/
|
|
62
|
+
"@modelcontextprotocol/node": "2.0.0",
|
|
63
|
+
"@modelcontextprotocol/server": "2.0.0",
|
|
63
64
|
"@paralleldrive/cuid2": "2.2.2",
|
|
64
|
-
"@strapi/admin": "5.
|
|
65
|
-
"@strapi/database": "5.
|
|
66
|
-
"@strapi/generators": "5.
|
|
67
|
-
"@strapi/logger": "5.
|
|
68
|
-
"@strapi/openapi": "5.
|
|
69
|
-
"@strapi/permissions": "5.
|
|
70
|
-
"@strapi/types": "5.
|
|
71
|
-
"@strapi/typescript-utils": "5.
|
|
72
|
-
"@strapi/utils": "5.
|
|
65
|
+
"@strapi/admin": "5.54.0",
|
|
66
|
+
"@strapi/database": "5.54.0",
|
|
67
|
+
"@strapi/generators": "5.54.0",
|
|
68
|
+
"@strapi/logger": "5.54.0",
|
|
69
|
+
"@strapi/openapi": "5.54.0",
|
|
70
|
+
"@strapi/permissions": "5.54.0",
|
|
71
|
+
"@strapi/types": "5.54.0",
|
|
72
|
+
"@strapi/typescript-utils": "5.54.0",
|
|
73
|
+
"@strapi/utils": "5.54.0",
|
|
73
74
|
"@vercel/stega": "0.1.2",
|
|
74
75
|
bcryptjs: "2.4.3",
|
|
75
76
|
boxen: "5.1.2",
|
|
@@ -78,6 +79,7 @@ var dependencies = {
|
|
|
78
79
|
"cli-table3": "0.6.5",
|
|
79
80
|
commander: "8.3.0",
|
|
80
81
|
configstore: "5.0.1",
|
|
82
|
+
croner: "10.0.1",
|
|
81
83
|
debug: "4.3.4",
|
|
82
84
|
delegates: "1.0.0",
|
|
83
85
|
dotenv: "16.6.1",
|
|
@@ -102,7 +104,6 @@ var dependencies = {
|
|
|
102
104
|
"koa-static": "5.0.0",
|
|
103
105
|
lodash: "4.18.1",
|
|
104
106
|
"mime-types": "2.1.35",
|
|
105
|
-
"node-schedule": "2.1.1",
|
|
106
107
|
open: "8.4.2",
|
|
107
108
|
ora: "5.4.1",
|
|
108
109
|
"package-json": "10.0.1",
|
|
@@ -111,11 +112,12 @@ var dependencies = {
|
|
|
111
112
|
"resolve.exports": "2.0.2",
|
|
112
113
|
semver: "7.7.4",
|
|
113
114
|
typescript: "5.9.3",
|
|
114
|
-
undici: "6.28.
|
|
115
|
+
undici: "6.28.1",
|
|
115
116
|
yup: "0.32.9",
|
|
116
117
|
zod: "4.4.3"
|
|
117
118
|
};
|
|
118
119
|
var devDependencies = {
|
|
120
|
+
"@modelcontextprotocol/client": "2.0.0",
|
|
119
121
|
"@swc/core": "1.13.5",
|
|
120
122
|
"@types/bcryptjs": "2.4.3",
|
|
121
123
|
"@types/configstore": "5.0.1",
|
|
@@ -132,13 +134,14 @@ var devDependencies = {
|
|
|
132
134
|
"@types/lodash": "^4.14.191",
|
|
133
135
|
"@types/mime-types": "2.1.1",
|
|
134
136
|
"@types/node": "20.19.41",
|
|
135
|
-
|
|
136
|
-
"
|
|
137
|
+
ajv: "8.20.0",
|
|
138
|
+
"ajv-formats": "3.0.1",
|
|
139
|
+
"eslint-config-custom": "5.54.0",
|
|
137
140
|
jest: "29.6.0",
|
|
138
141
|
supertest: "7.2.2",
|
|
139
|
-
tsconfig: "5.
|
|
142
|
+
tsconfig: "5.54.0",
|
|
140
143
|
vitest: "catalog:",
|
|
141
|
-
"vitest-config": "5.
|
|
144
|
+
"vitest-config": "5.54.0"
|
|
142
145
|
};
|
|
143
146
|
var engines = {
|
|
144
147
|
node: ">=20.0.0 <=26.x.x",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,10 +4,22 @@ interface EncodingInfo {
|
|
|
4
4
|
data: any;
|
|
5
5
|
schema: Struct.Schema;
|
|
6
6
|
}
|
|
7
|
+
type BlocksEncodeMetadata = Omit<FieldContentSourceMap, 'path' | 'type'> & {
|
|
8
|
+
fieldPath: string;
|
|
9
|
+
};
|
|
10
|
+
type EncodeFieldFn = (text: string, metadata: FieldContentSourceMap) => string;
|
|
11
|
+
/**
|
|
12
|
+
* Pure transformation over a blocks AST. Injects one stega marker per visual block
|
|
13
|
+
* (first text leaf, or image alt text) using the blocks field path for all markers.
|
|
14
|
+
* Code blocks are skipped entirely.
|
|
15
|
+
*/
|
|
16
|
+
declare const encodeBlocks: (blocks: unknown, metadata: BlocksEncodeMetadata, encodeField: EncodeFieldFn) => unknown;
|
|
7
17
|
declare const createContentSourceMapsService: (strapi: Core.Strapi) => {
|
|
8
|
-
encodeField(text: string, { kind, model, documentId, type, path, locale }: FieldContentSourceMap): string;
|
|
18
|
+
encodeField(text: string, { kind, model, documentId, type, path, locale, fieldPath }: FieldContentSourceMap): string;
|
|
19
|
+
encodeBlocks(blocks: unknown, metadata: BlocksEncodeMetadata): unknown;
|
|
9
20
|
encodeEntry({ data, schema }: EncodingInfo): Promise<any>;
|
|
10
21
|
encodeSourceMaps({ data, schema }: EncodingInfo): Promise<any>;
|
|
11
22
|
};
|
|
12
|
-
export { createContentSourceMapsService };
|
|
23
|
+
export { createContentSourceMapsService, encodeBlocks };
|
|
24
|
+
export type { BlocksEncodeMetadata, EncodeFieldFn };
|
|
13
25
|
//# 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,EAAO,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;
|
|
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;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AA0CxE,UAAU,YAAY;IACpB,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;CACvB;AAED,KAAK,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,KAAK,MAAM,CAAC;AA4G/E;;;;GAIG;AACH,QAAA,MAAM,YAAY,GAChB,QAAQ,OAAO,EACf,UAAU,oBAAoB,EAC9B,aAAa,aAAa,KACzB,OA0BF,CAAC;AAEF,QAAA,MAAM,8BAA8B,GAAI,QAAQ,IAAI,CAAC,MAAM;sBAG/C,MAAM,8DACgD,qBAAqB;yBAoC9D,OAAO,YAAY,oBAAoB,GAAG,OAAO;kCAIlC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;uCA4DtB,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;CAmBvE,CAAC;AAEF,OAAO,EAAE,8BAA8B,EAAE,YAAY,EAAE,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC"}
|