@strapi/core 0.0.0-experimental.80cf2c74a2003f3c0602abc81888dd9f36dc68a3 → 0.0.0-experimental.9034cc03ac5cf73cd9dcb2ff7c6cadece3f6910d
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/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +6 -2
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +6 -2
- package/dist/Strapi.mjs.map +1 -1
- package/dist/core-api/controller/index.js +5 -5
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +6 -6
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/registries/policies.d.ts +22 -10
- package/dist/registries/policies.d.ts.map +1 -1
- package/dist/registries/policies.js +64 -18
- package/dist/registries/policies.js.map +1 -1
- package/dist/registries/policies.mjs +65 -19
- package/dist/registries/policies.mjs.map +1 -1
- package/dist/services/content-api/index.d.ts +18 -0
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/index.js +27 -1
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs +27 -1
- package/dist/services/content-api/index.mjs.map +1 -1
- package/dist/services/document-service/index.d.ts.map +1 -1
- package/dist/services/document-service/index.js +4 -0
- package/dist/services/document-service/index.js.map +1 -1
- package/dist/services/document-service/index.mjs +4 -0
- package/dist/services/document-service/index.mjs.map +1 -1
- package/dist/services/document-service/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +12 -2
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +13 -3
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/transform/populate.js +1 -1
- package/dist/services/document-service/transform/populate.js.map +1 -1
- package/dist/services/document-service/transform/populate.mjs +1 -1
- package/dist/services/document-service/transform/populate.mjs.map +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 +2 -2
- 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 +2 -2
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.js +1 -1
- 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 +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
- package/dist/services/entity-service/components.d.ts.map +1 -1
- package/dist/services/entity-service/components.js +1 -4
- package/dist/services/entity-service/components.js.map +1 -1
- package/dist/services/entity-service/components.mjs +1 -4
- package/dist/services/entity-service/components.mjs.map +1 -1
- package/dist/services/entity-service/index.d.ts.map +1 -1
- package/dist/services/entity-service/index.js +14 -15
- package/dist/services/entity-service/index.js.map +1 -1
- package/dist/services/entity-service/index.mjs +15 -16
- package/dist/services/entity-service/index.mjs.map +1 -1
- package/dist/services/query-params.d.ts +7 -0
- package/dist/services/query-params.d.ts.map +1 -0
- package/dist/services/query-params.js +12 -0
- package/dist/services/query-params.js.map +1 -0
- package/dist/services/query-params.mjs +13 -0
- package/dist/services/query-params.mjs.map +1 -0
- package/dist/services/server/compose-endpoint.d.ts.map +1 -1
- package/dist/services/server/compose-endpoint.js +1 -2
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +2 -3
- package/dist/services/server/compose-endpoint.mjs.map +1 -1
- package/dist/services/server/policy.d.ts +2 -2
- package/dist/services/server/policy.d.ts.map +1 -1
- package/dist/services/server/policy.js +4 -4
- package/dist/services/server/policy.js.map +1 -1
- package/dist/services/server/policy.mjs +4 -4
- package/dist/services/server/policy.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +15 -15
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +77 -85
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.mjs +77 -85
- package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
- package/package.json +14 -14
|
@@ -1,32 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const _ = require("lodash/fp");
|
|
3
3
|
const namespace = require("./namespace.js");
|
|
4
|
+
const PLUGIN_PREFIX = "plugin::";
|
|
5
|
+
const API_PREFIX = "api::";
|
|
6
|
+
const parsePolicy = (policy) => {
|
|
7
|
+
if (typeof policy === "string") {
|
|
8
|
+
return { policyName: policy, config: {} };
|
|
9
|
+
}
|
|
10
|
+
const { name, config } = policy;
|
|
11
|
+
return { policyName: name, config };
|
|
12
|
+
};
|
|
4
13
|
const policiesRegistry = () => {
|
|
5
|
-
const policies =
|
|
14
|
+
const policies = /* @__PURE__ */ new Map();
|
|
15
|
+
const find = (name, namespaceInfo) => {
|
|
16
|
+
const { pluginName, apiName } = namespaceInfo ?? {};
|
|
17
|
+
const policy = policies.get(name);
|
|
18
|
+
if (policy) {
|
|
19
|
+
return policy;
|
|
20
|
+
}
|
|
21
|
+
if (pluginName) {
|
|
22
|
+
return policies.get(`${PLUGIN_PREFIX}${pluginName}.${name}`);
|
|
23
|
+
}
|
|
24
|
+
if (apiName) {
|
|
25
|
+
return policies.get(`${API_PREFIX}${apiName}.${name}`);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
function resolveHandler(policyConfig, namespaceInfo) {
|
|
29
|
+
if (Array.isArray(policyConfig)) {
|
|
30
|
+
return policyConfig.map((config2) => {
|
|
31
|
+
return resolveHandler(config2, namespaceInfo);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const { policyName, config } = parsePolicy(policyConfig);
|
|
35
|
+
const policy = find(policyName, namespaceInfo);
|
|
36
|
+
if (!policy) {
|
|
37
|
+
throw new Error(`Policy ${policyName} not found.`);
|
|
38
|
+
}
|
|
39
|
+
if (typeof policy === "function") {
|
|
40
|
+
return policy;
|
|
41
|
+
}
|
|
42
|
+
if (policy.validator) {
|
|
43
|
+
policy.validator(config);
|
|
44
|
+
}
|
|
45
|
+
return policy.handler;
|
|
46
|
+
}
|
|
6
47
|
return {
|
|
7
48
|
/**
|
|
8
49
|
* Returns this list of registered policies uids
|
|
9
50
|
*/
|
|
10
51
|
keys() {
|
|
11
|
-
return
|
|
52
|
+
return policies.keys();
|
|
12
53
|
},
|
|
13
54
|
/**
|
|
14
55
|
* Returns the instance of a policy. Instantiate the policy if not already done
|
|
15
56
|
*/
|
|
16
|
-
get(
|
|
17
|
-
return
|
|
57
|
+
get(name, namespaceInfo) {
|
|
58
|
+
return find(name, namespaceInfo);
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* Checks if a policy is registered
|
|
62
|
+
*/
|
|
63
|
+
has(name, namespaceInfo) {
|
|
64
|
+
const res = find(name, namespaceInfo);
|
|
65
|
+
return !!res;
|
|
18
66
|
},
|
|
19
67
|
/**
|
|
20
68
|
* Returns a map with all the policies in a namespace
|
|
21
69
|
*/
|
|
22
70
|
getAll(namespace$1) {
|
|
23
|
-
return _.pickBy((_2, uid) => namespace.hasNamespace(uid, namespace$1))(policies);
|
|
71
|
+
return _.pickBy((_2, uid) => namespace.hasNamespace(uid, namespace$1))(Object.fromEntries(policies));
|
|
24
72
|
},
|
|
25
73
|
/**
|
|
26
74
|
* Registers a policy
|
|
27
75
|
*/
|
|
28
76
|
set(uid, policy) {
|
|
29
|
-
policies
|
|
77
|
+
policies.set(uid, policy);
|
|
30
78
|
return this;
|
|
31
79
|
},
|
|
32
80
|
/**
|
|
@@ -39,22 +87,20 @@ const policiesRegistry = () => {
|
|
|
39
87
|
if (_.has(uid, policies)) {
|
|
40
88
|
throw new Error(`Policy ${uid} has already been registered.`);
|
|
41
89
|
}
|
|
42
|
-
policies
|
|
90
|
+
policies.set(uid, policy);
|
|
43
91
|
}
|
|
44
92
|
},
|
|
45
93
|
/**
|
|
46
|
-
*
|
|
47
|
-
* @param {string} uid
|
|
48
|
-
* @param {(policy: Policy) => Policy} extendFn
|
|
94
|
+
* Resolves a list of policies
|
|
49
95
|
*/
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
96
|
+
resolve(config, namespaceInfo) {
|
|
97
|
+
const { pluginName, apiName } = namespaceInfo ?? {};
|
|
98
|
+
return _.castArray(config).map((policyConfig) => {
|
|
99
|
+
return {
|
|
100
|
+
handler: resolveHandler(policyConfig, { pluginName, apiName }),
|
|
101
|
+
config: typeof policyConfig === "object" && policyConfig.config || {}
|
|
102
|
+
};
|
|
103
|
+
});
|
|
58
104
|
}
|
|
59
105
|
};
|
|
60
106
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.js","sources":["../../src/registries/policies.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Core
|
|
1
|
+
{"version":3,"file":"policies.js","sources":["../../src/registries/policies.ts"],"sourcesContent":["import { pickBy, has, castArray } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { addNamespace, hasNamespace } from './namespace';\n\nconst PLUGIN_PREFIX = 'plugin::';\nconst API_PREFIX = 'api::';\n\ninterface PolicyInfo {\n name: string;\n config: unknown;\n}\n\ntype PolicyConfig = string | PolicyInfo;\n\ninterface NamespaceInfo {\n pluginName?: string;\n apiName?: string;\n}\n\nconst parsePolicy = (policy: string | PolicyInfo) => {\n if (typeof policy === 'string') {\n return { policyName: policy, config: {} };\n }\n\n const { name, config } = policy;\n return { policyName: name, config };\n};\n\nconst policiesRegistry = () => {\n const policies = new Map<string, Core.Policy>();\n\n const find = (name: string, namespaceInfo?: NamespaceInfo) => {\n const { pluginName, apiName } = namespaceInfo ?? {};\n\n // try to resolve a full name to avoid extra prefixing\n const policy = policies.get(name);\n\n if (policy) {\n return policy;\n }\n\n if (pluginName) {\n return policies.get(`${PLUGIN_PREFIX}${pluginName}.${name}`);\n }\n\n if (apiName) {\n return policies.get(`${API_PREFIX}${apiName}.${name}`);\n }\n };\n\n function resolveHandler(policyConfig: PolicyConfig, namespaceInfo?: NamespaceInfo): Core.Policy;\n function resolveHandler(\n policyConfig: PolicyConfig[],\n namespaceInfo?: NamespaceInfo\n ): Core.Policy[];\n function resolveHandler(\n policyConfig: PolicyConfig | PolicyConfig[],\n namespaceInfo?: NamespaceInfo\n ): Core.Policy | Core.Policy[] {\n if (Array.isArray(policyConfig)) {\n return policyConfig.map((config) => {\n return resolveHandler(config, namespaceInfo);\n });\n }\n\n const { policyName, config } = parsePolicy(policyConfig);\n\n const policy = find(policyName, namespaceInfo);\n\n if (!policy) {\n throw new Error(`Policy ${policyName} not found.`);\n }\n\n if (typeof policy === 'function') {\n return policy;\n }\n\n if (policy.validator) {\n policy.validator(config);\n }\n\n return policy.handler;\n }\n\n return {\n /**\n * Returns this list of registered policies uids\n */\n keys() {\n return policies.keys();\n },\n\n /**\n * Returns the instance of a policy. Instantiate the policy if not already done\n */\n get(name: string, namespaceInfo?: NamespaceInfo) {\n return find(name, namespaceInfo);\n },\n /**\n * Checks if a policy is registered\n */\n has(name: string, namespaceInfo?: NamespaceInfo) {\n const res = find(name, namespaceInfo);\n return !!res;\n },\n\n /**\n * Returns a map with all the policies in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(Object.fromEntries(policies));\n },\n\n /**\n * Registers a policy\n */\n set(uid: string, policy: Core.Policy) {\n policies.set(uid, policy);\n return this;\n },\n\n /**\n * Registers a map of policies for a specific namespace\n */\n add(namespace: string, newPolicies: Record<string, Core.Policy>) {\n for (const policyName of Object.keys(newPolicies)) {\n const policy = newPolicies[policyName];\n const uid = addNamespace(policyName, namespace);\n\n if (has(uid, policies)) {\n throw new Error(`Policy ${uid} has already been registered.`);\n }\n\n policies.set(uid, policy);\n }\n },\n\n /**\n * Resolves a list of policies\n */\n resolve(config: PolicyConfig | PolicyConfig[], namespaceInfo?: NamespaceInfo) {\n const { pluginName, apiName } = namespaceInfo ?? {};\n\n return castArray(config).map((policyConfig) => {\n return {\n handler: resolveHandler(policyConfig, { pluginName, apiName }),\n config: (typeof policyConfig === 'object' && policyConfig.config) || {},\n };\n });\n },\n };\n};\n\nexport default policiesRegistry;\n"],"names":["config","namespace","pickBy","_","hasNamespace","addNamespace","has","castArray"],"mappings":";;;AAIA,MAAM,gBAAgB;AACtB,MAAM,aAAa;AAcnB,MAAM,cAAc,CAAC,WAAgC;AAC/C,MAAA,OAAO,WAAW,UAAU;AAC9B,WAAO,EAAE,YAAY,QAAQ,QAAQ,CAAG,EAAA;AAAA,EAC1C;AAEM,QAAA,EAAE,MAAM,OAAW,IAAA;AAClB,SAAA,EAAE,YAAY,MAAM;AAC7B;AAEA,MAAM,mBAAmB,MAAM;AACvB,QAAA,+BAAe;AAEf,QAAA,OAAO,CAAC,MAAc,kBAAkC;AAC5D,UAAM,EAAE,YAAY,YAAY,iBAAiB,CAAA;AAG3C,UAAA,SAAS,SAAS,IAAI,IAAI;AAEhC,QAAI,QAAQ;AACH,aAAA;AAAA,IACT;AAEA,QAAI,YAAY;AACP,aAAA,SAAS,IAAI,GAAG,aAAa,GAAG,UAAU,IAAI,IAAI,EAAE;AAAA,IAC7D;AAEA,QAAI,SAAS;AACJ,aAAA,SAAS,IAAI,GAAG,UAAU,GAAG,OAAO,IAAI,IAAI,EAAE;AAAA,IACvD;AAAA,EAAA;AAQO,WAAA,eACP,cACA,eAC6B;AACzB,QAAA,MAAM,QAAQ,YAAY,GAAG;AACxB,aAAA,aAAa,IAAI,CAACA,YAAW;AAC3B,eAAA,eAAeA,SAAQ,aAAa;AAAA,MAAA,CAC5C;AAAA,IACH;AAEA,UAAM,EAAE,YAAY,OAAO,IAAI,YAAY,YAAY;AAEjD,UAAA,SAAS,KAAK,YAAY,aAAa;AAE7C,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,UAAU,UAAU,aAAa;AAAA,IACnD;AAEI,QAAA,OAAO,WAAW,YAAY;AACzB,aAAA;AAAA,IACT;AAEA,QAAI,OAAO,WAAW;AACpB,aAAO,UAAU,MAAM;AAAA,IACzB;AAEA,WAAO,OAAO;AAAA,EAChB;AAEO,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,SAAS;IAClB;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,MAAc,eAA+B;AACxC,aAAA,KAAK,MAAM,aAAa;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA,IAIA,IAAI,MAAc,eAA+B;AACzC,YAAA,MAAM,KAAK,MAAM,aAAa;AACpC,aAAO,CAAC,CAAC;AAAA,IACX;AAAA;AAAA;AAAA;AAAA,IAKA,OAAOC,aAAmB;AACxB,aAAOC,SAAO,CAACC,IAAG,QAAQC,UAAAA,aAAa,KAAKH,WAAS,CAAC,EAAE,OAAO,YAAY,QAAQ,CAAC;AAAA,IACtF;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAa,QAAqB;AAC3B,eAAA,IAAI,KAAK,MAAM;AACjB,aAAA;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAIA,aAAmB,aAA0C;AAC/D,iBAAW,cAAc,OAAO,KAAK,WAAW,GAAG;AAC3C,cAAA,SAAS,YAAY,UAAU;AAC/B,cAAA,MAAMI,UAAAA,aAAa,YAAYJ,WAAS;AAE1C,YAAAK,EAAA,IAAI,KAAK,QAAQ,GAAG;AACtB,gBAAM,IAAI,MAAM,UAAU,GAAG,+BAA+B;AAAA,QAC9D;AAES,iBAAA,IAAI,KAAK,MAAM;AAAA,MAC1B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,QAAQ,QAAuC,eAA+B;AAC5E,YAAM,EAAE,YAAY,YAAY,iBAAiB,CAAA;AAEjD,aAAOC,EAAU,UAAA,MAAM,EAAE,IAAI,CAAC,iBAAiB;AACtC,eAAA;AAAA,UACL,SAAS,eAAe,cAAc,EAAE,YAAY,SAAS;AAAA,UAC7D,QAAS,OAAO,iBAAiB,YAAY,aAAa,UAAW,CAAC;AAAA,QAAA;AAAA,MACxE,CACD;AAAA,IACH;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1,31 +1,79 @@
|
|
|
1
|
-
import { pickBy, has } from "lodash/fp";
|
|
1
|
+
import { pickBy, has, castArray } from "lodash/fp";
|
|
2
2
|
import { hasNamespace, addNamespace } from "./namespace.mjs";
|
|
3
|
+
const PLUGIN_PREFIX = "plugin::";
|
|
4
|
+
const API_PREFIX = "api::";
|
|
5
|
+
const parsePolicy = (policy) => {
|
|
6
|
+
if (typeof policy === "string") {
|
|
7
|
+
return { policyName: policy, config: {} };
|
|
8
|
+
}
|
|
9
|
+
const { name, config } = policy;
|
|
10
|
+
return { policyName: name, config };
|
|
11
|
+
};
|
|
3
12
|
const policiesRegistry = () => {
|
|
4
|
-
const policies =
|
|
13
|
+
const policies = /* @__PURE__ */ new Map();
|
|
14
|
+
const find = (name, namespaceInfo) => {
|
|
15
|
+
const { pluginName, apiName } = namespaceInfo ?? {};
|
|
16
|
+
const policy = policies.get(name);
|
|
17
|
+
if (policy) {
|
|
18
|
+
return policy;
|
|
19
|
+
}
|
|
20
|
+
if (pluginName) {
|
|
21
|
+
return policies.get(`${PLUGIN_PREFIX}${pluginName}.${name}`);
|
|
22
|
+
}
|
|
23
|
+
if (apiName) {
|
|
24
|
+
return policies.get(`${API_PREFIX}${apiName}.${name}`);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
function resolveHandler(policyConfig, namespaceInfo) {
|
|
28
|
+
if (Array.isArray(policyConfig)) {
|
|
29
|
+
return policyConfig.map((config2) => {
|
|
30
|
+
return resolveHandler(config2, namespaceInfo);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const { policyName, config } = parsePolicy(policyConfig);
|
|
34
|
+
const policy = find(policyName, namespaceInfo);
|
|
35
|
+
if (!policy) {
|
|
36
|
+
throw new Error(`Policy ${policyName} not found.`);
|
|
37
|
+
}
|
|
38
|
+
if (typeof policy === "function") {
|
|
39
|
+
return policy;
|
|
40
|
+
}
|
|
41
|
+
if (policy.validator) {
|
|
42
|
+
policy.validator(config);
|
|
43
|
+
}
|
|
44
|
+
return policy.handler;
|
|
45
|
+
}
|
|
5
46
|
return {
|
|
6
47
|
/**
|
|
7
48
|
* Returns this list of registered policies uids
|
|
8
49
|
*/
|
|
9
50
|
keys() {
|
|
10
|
-
return
|
|
51
|
+
return policies.keys();
|
|
11
52
|
},
|
|
12
53
|
/**
|
|
13
54
|
* Returns the instance of a policy. Instantiate the policy if not already done
|
|
14
55
|
*/
|
|
15
|
-
get(
|
|
16
|
-
return
|
|
56
|
+
get(name, namespaceInfo) {
|
|
57
|
+
return find(name, namespaceInfo);
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* Checks if a policy is registered
|
|
61
|
+
*/
|
|
62
|
+
has(name, namespaceInfo) {
|
|
63
|
+
const res = find(name, namespaceInfo);
|
|
64
|
+
return !!res;
|
|
17
65
|
},
|
|
18
66
|
/**
|
|
19
67
|
* Returns a map with all the policies in a namespace
|
|
20
68
|
*/
|
|
21
69
|
getAll(namespace) {
|
|
22
|
-
return pickBy((_, uid) => hasNamespace(uid, namespace))(policies);
|
|
70
|
+
return pickBy((_, uid) => hasNamespace(uid, namespace))(Object.fromEntries(policies));
|
|
23
71
|
},
|
|
24
72
|
/**
|
|
25
73
|
* Registers a policy
|
|
26
74
|
*/
|
|
27
75
|
set(uid, policy) {
|
|
28
|
-
policies
|
|
76
|
+
policies.set(uid, policy);
|
|
29
77
|
return this;
|
|
30
78
|
},
|
|
31
79
|
/**
|
|
@@ -38,22 +86,20 @@ const policiesRegistry = () => {
|
|
|
38
86
|
if (has(uid, policies)) {
|
|
39
87
|
throw new Error(`Policy ${uid} has already been registered.`);
|
|
40
88
|
}
|
|
41
|
-
policies
|
|
89
|
+
policies.set(uid, policy);
|
|
42
90
|
}
|
|
43
91
|
},
|
|
44
92
|
/**
|
|
45
|
-
*
|
|
46
|
-
* @param {string} uid
|
|
47
|
-
* @param {(policy: Policy) => Policy} extendFn
|
|
93
|
+
* Resolves a list of policies
|
|
48
94
|
*/
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
95
|
+
resolve(config, namespaceInfo) {
|
|
96
|
+
const { pluginName, apiName } = namespaceInfo ?? {};
|
|
97
|
+
return castArray(config).map((policyConfig) => {
|
|
98
|
+
return {
|
|
99
|
+
handler: resolveHandler(policyConfig, { pluginName, apiName }),
|
|
100
|
+
config: typeof policyConfig === "object" && policyConfig.config || {}
|
|
101
|
+
};
|
|
102
|
+
});
|
|
57
103
|
}
|
|
58
104
|
};
|
|
59
105
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.mjs","sources":["../../src/registries/policies.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Core
|
|
1
|
+
{"version":3,"file":"policies.mjs","sources":["../../src/registries/policies.ts"],"sourcesContent":["import { pickBy, has, castArray } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { addNamespace, hasNamespace } from './namespace';\n\nconst PLUGIN_PREFIX = 'plugin::';\nconst API_PREFIX = 'api::';\n\ninterface PolicyInfo {\n name: string;\n config: unknown;\n}\n\ntype PolicyConfig = string | PolicyInfo;\n\ninterface NamespaceInfo {\n pluginName?: string;\n apiName?: string;\n}\n\nconst parsePolicy = (policy: string | PolicyInfo) => {\n if (typeof policy === 'string') {\n return { policyName: policy, config: {} };\n }\n\n const { name, config } = policy;\n return { policyName: name, config };\n};\n\nconst policiesRegistry = () => {\n const policies = new Map<string, Core.Policy>();\n\n const find = (name: string, namespaceInfo?: NamespaceInfo) => {\n const { pluginName, apiName } = namespaceInfo ?? {};\n\n // try to resolve a full name to avoid extra prefixing\n const policy = policies.get(name);\n\n if (policy) {\n return policy;\n }\n\n if (pluginName) {\n return policies.get(`${PLUGIN_PREFIX}${pluginName}.${name}`);\n }\n\n if (apiName) {\n return policies.get(`${API_PREFIX}${apiName}.${name}`);\n }\n };\n\n function resolveHandler(policyConfig: PolicyConfig, namespaceInfo?: NamespaceInfo): Core.Policy;\n function resolveHandler(\n policyConfig: PolicyConfig[],\n namespaceInfo?: NamespaceInfo\n ): Core.Policy[];\n function resolveHandler(\n policyConfig: PolicyConfig | PolicyConfig[],\n namespaceInfo?: NamespaceInfo\n ): Core.Policy | Core.Policy[] {\n if (Array.isArray(policyConfig)) {\n return policyConfig.map((config) => {\n return resolveHandler(config, namespaceInfo);\n });\n }\n\n const { policyName, config } = parsePolicy(policyConfig);\n\n const policy = find(policyName, namespaceInfo);\n\n if (!policy) {\n throw new Error(`Policy ${policyName} not found.`);\n }\n\n if (typeof policy === 'function') {\n return policy;\n }\n\n if (policy.validator) {\n policy.validator(config);\n }\n\n return policy.handler;\n }\n\n return {\n /**\n * Returns this list of registered policies uids\n */\n keys() {\n return policies.keys();\n },\n\n /**\n * Returns the instance of a policy. Instantiate the policy if not already done\n */\n get(name: string, namespaceInfo?: NamespaceInfo) {\n return find(name, namespaceInfo);\n },\n /**\n * Checks if a policy is registered\n */\n has(name: string, namespaceInfo?: NamespaceInfo) {\n const res = find(name, namespaceInfo);\n return !!res;\n },\n\n /**\n * Returns a map with all the policies in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(Object.fromEntries(policies));\n },\n\n /**\n * Registers a policy\n */\n set(uid: string, policy: Core.Policy) {\n policies.set(uid, policy);\n return this;\n },\n\n /**\n * Registers a map of policies for a specific namespace\n */\n add(namespace: string, newPolicies: Record<string, Core.Policy>) {\n for (const policyName of Object.keys(newPolicies)) {\n const policy = newPolicies[policyName];\n const uid = addNamespace(policyName, namespace);\n\n if (has(uid, policies)) {\n throw new Error(`Policy ${uid} has already been registered.`);\n }\n\n policies.set(uid, policy);\n }\n },\n\n /**\n * Resolves a list of policies\n */\n resolve(config: PolicyConfig | PolicyConfig[], namespaceInfo?: NamespaceInfo) {\n const { pluginName, apiName } = namespaceInfo ?? {};\n\n return castArray(config).map((policyConfig) => {\n return {\n handler: resolveHandler(policyConfig, { pluginName, apiName }),\n config: (typeof policyConfig === 'object' && policyConfig.config) || {},\n };\n });\n },\n };\n};\n\nexport default policiesRegistry;\n"],"names":["config"],"mappings":";;AAIA,MAAM,gBAAgB;AACtB,MAAM,aAAa;AAcnB,MAAM,cAAc,CAAC,WAAgC;AAC/C,MAAA,OAAO,WAAW,UAAU;AAC9B,WAAO,EAAE,YAAY,QAAQ,QAAQ,CAAG,EAAA;AAAA,EAC1C;AAEM,QAAA,EAAE,MAAM,OAAW,IAAA;AAClB,SAAA,EAAE,YAAY,MAAM;AAC7B;AAEA,MAAM,mBAAmB,MAAM;AACvB,QAAA,+BAAe;AAEf,QAAA,OAAO,CAAC,MAAc,kBAAkC;AAC5D,UAAM,EAAE,YAAY,YAAY,iBAAiB,CAAA;AAG3C,UAAA,SAAS,SAAS,IAAI,IAAI;AAEhC,QAAI,QAAQ;AACH,aAAA;AAAA,IACT;AAEA,QAAI,YAAY;AACP,aAAA,SAAS,IAAI,GAAG,aAAa,GAAG,UAAU,IAAI,IAAI,EAAE;AAAA,IAC7D;AAEA,QAAI,SAAS;AACJ,aAAA,SAAS,IAAI,GAAG,UAAU,GAAG,OAAO,IAAI,IAAI,EAAE;AAAA,IACvD;AAAA,EAAA;AAQO,WAAA,eACP,cACA,eAC6B;AACzB,QAAA,MAAM,QAAQ,YAAY,GAAG;AACxB,aAAA,aAAa,IAAI,CAACA,YAAW;AAC3B,eAAA,eAAeA,SAAQ,aAAa;AAAA,MAAA,CAC5C;AAAA,IACH;AAEA,UAAM,EAAE,YAAY,OAAO,IAAI,YAAY,YAAY;AAEjD,UAAA,SAAS,KAAK,YAAY,aAAa;AAE7C,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,UAAU,UAAU,aAAa;AAAA,IACnD;AAEI,QAAA,OAAO,WAAW,YAAY;AACzB,aAAA;AAAA,IACT;AAEA,QAAI,OAAO,WAAW;AACpB,aAAO,UAAU,MAAM;AAAA,IACzB;AAEA,WAAO,OAAO;AAAA,EAChB;AAEO,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,SAAS;IAClB;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,MAAc,eAA+B;AACxC,aAAA,KAAK,MAAM,aAAa;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA,IAIA,IAAI,MAAc,eAA+B;AACzC,YAAA,MAAM,KAAK,MAAM,aAAa;AACpC,aAAO,CAAC,CAAC;AAAA,IACX;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAAmB;AACxB,aAAO,OAAO,CAAC,GAAG,QAAQ,aAAa,KAAK,SAAS,CAAC,EAAE,OAAO,YAAY,QAAQ,CAAC;AAAA,IACtF;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAa,QAAqB;AAC3B,eAAA,IAAI,KAAK,MAAM;AACjB,aAAA;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,aAA0C;AAC/D,iBAAW,cAAc,OAAO,KAAK,WAAW,GAAG;AAC3C,cAAA,SAAS,YAAY,UAAU;AAC/B,cAAA,MAAM,aAAa,YAAY,SAAS;AAE1C,YAAA,IAAI,KAAK,QAAQ,GAAG;AACtB,gBAAM,IAAI,MAAM,UAAU,GAAG,+BAA+B;AAAA,QAC9D;AAES,iBAAA,IAAI,KAAK,MAAM;AAAA,MAC1B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,QAAQ,QAAuC,eAA+B;AAC5E,YAAM,EAAE,YAAY,YAAY,iBAAiB,CAAA;AAEjD,aAAO,UAAU,MAAM,EAAE,IAAI,CAAC,iBAAiB;AACtC,eAAA;AAAA,UACL,SAAS,eAAe,cAAc,EAAE,YAAY,SAAS;AAAA,UAC7D,QAAS,OAAO,iBAAiB,YAAY,aAAa,UAAW,CAAC;AAAA,QAAA;AAAA,MACxE,CACD;AAAA,IACH;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sanitize, validate } from '@strapi/utils';
|
|
1
2
|
import type { Core } from '@strapi/types';
|
|
2
3
|
/**
|
|
3
4
|
* Create a content API container that holds logic, tools and utils. (eg: permissions, ...)
|
|
@@ -49,6 +50,23 @@ declare const createContentAPI: (strapi: Core.Strapi) => {
|
|
|
49
50
|
}>;
|
|
50
51
|
};
|
|
51
52
|
getRoutesMap: () => Promise<Record<string, Core.Route[]>>;
|
|
53
|
+
sanitize: {
|
|
54
|
+
input: sanitize.SanitizeFunc;
|
|
55
|
+
output: sanitize.SanitizeFunc;
|
|
56
|
+
query: (query: Record<string, unknown>, schema: import("@strapi/utils/dist/types").Model, { auth }?: sanitize.Options | undefined) => Promise<Record<string, unknown>>;
|
|
57
|
+
filters: sanitize.SanitizeFunc;
|
|
58
|
+
sort: sanitize.SanitizeFunc;
|
|
59
|
+
fields: sanitize.SanitizeFunc;
|
|
60
|
+
populate: sanitize.SanitizeFunc;
|
|
61
|
+
};
|
|
62
|
+
validate: {
|
|
63
|
+
input: validate.ValidateFunc;
|
|
64
|
+
query: (query: Record<string, unknown>, schema: import("@strapi/utils/dist/types").Model, { auth }?: validate.Options | undefined) => Promise<void>;
|
|
65
|
+
filters: validate.ValidateFunc;
|
|
66
|
+
sort: validate.ValidateFunc;
|
|
67
|
+
fields: validate.ValidateFunc;
|
|
68
|
+
populate: validate.ValidateFunc;
|
|
69
|
+
};
|
|
52
70
|
};
|
|
53
71
|
export default createContentAPI;
|
|
54
72
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/content-api/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/content-api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,eAAe,CAAC;AAgB/C;;GAEG;AACH,QAAA,MAAM,gBAAgB,WAAY,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgF5C,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const _ = require("lodash");
|
|
3
|
+
const strapiUtils = require("@strapi/utils");
|
|
3
4
|
const index = require("./permissions/index.js");
|
|
4
5
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
5
6
|
const ___default = /* @__PURE__ */ _interopDefault(_);
|
|
@@ -50,9 +51,34 @@ const createContentAPI = (strapi) => {
|
|
|
50
51
|
});
|
|
51
52
|
return routesMap;
|
|
52
53
|
};
|
|
54
|
+
const sanitizer = strapiUtils.sanitize.createAPISanitizers({
|
|
55
|
+
getModel(uid) {
|
|
56
|
+
return strapi.getModel(uid);
|
|
57
|
+
},
|
|
58
|
+
// NOTE: use lazy access to allow registration of sanitizers after the creation of the container
|
|
59
|
+
get sanitizers() {
|
|
60
|
+
return {
|
|
61
|
+
input: strapi.sanitizers.get("content-api.input"),
|
|
62
|
+
output: strapi.sanitizers.get("content-api.output")
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const validator = strapiUtils.validate.createAPIValidators({
|
|
67
|
+
getModel(uid) {
|
|
68
|
+
return strapi.getModel(uid);
|
|
69
|
+
},
|
|
70
|
+
// NOTE: use lazy access to allow registration of validators after the creation of the container
|
|
71
|
+
get validators() {
|
|
72
|
+
return {
|
|
73
|
+
input: strapi.validators.get("content-api.input")
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
});
|
|
53
77
|
return {
|
|
54
78
|
permissions: index(strapi),
|
|
55
|
-
getRoutesMap
|
|
79
|
+
getRoutesMap,
|
|
80
|
+
sanitize: sanitizer,
|
|
81
|
+
validate: validator
|
|
56
82
|
};
|
|
57
83
|
};
|
|
58
84
|
module.exports = createContentAPI;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\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.api, (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 return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n };\n};\n\nexport default createContentAPI;\n"],"names":["_","instantiatePermissionsUtilities"],"mappings":"
|
|
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.api, (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":["_","sanitize","validate","instantiatePermissionsUtilities"],"mappings":";;;;;;AAOA,MAAM,0BAA0B,CAAC,eAAuB,CAAC,UAAsB;AAC7E,QAAM,SAAS,MAAM,UAAU,MAAM,OAAO;AAC5C,QAAM,OAAO,WAAW,SAAY,GAAG,MAAM,GAAG,MAAM,IAAI,KAAK,IAAI,UAAU,GAAG,MAAM,IAAI;AAEnF,SAAA;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EAAA;AAEJ;AAEA,MAAM,mBAAmB,CAAC,UAAsB,MAAM,KAAK,SAAS;AAK9D,MAAA,mBAAmB,CAAC,WAAwB;AAChD,QAAM,eAAe,YAAY;AAC/B,UAAM,YAA0C,CAAA;AAEhDA,eAAA,QAAE,QAAQ,OAAO,KAAK,CAAC,KAAK,YAAY;AACtC,YAAM,SAASA,WAAAA,QAAE,QAAQ,IAAI,QAAQ,CAAC,UAAU;AAC9C,YAAI,YAAY,OAAO;AACrB,iBAAO,MAAM;AAAA,QACf;AAEO,eAAA;AAAA,MAAA,CACR,EAAE,OAAO,gBAAgB;AAEtB,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,QAAQ,OAAO,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QACpD,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAC/B,EAAA;AAAA,IAAA,CACH;AAEDA,eAAA,QAAE,QAAQ,OAAO,SAAS,CAAC,QAAQ,eAAe;AAC1C,YAAA,kBAAkB,wBAAwB,UAAU;AAE1D,UAAI,MAAM,QAAQ,OAAO,MAAM,GAAG;AAChC,eAAO,OAAO,OAAO,IAAI,eAAe,EAAE,OAAO,gBAAgB;AAAA,MACnE;AAEA,YAAM,SAASA,WAAA,QAAE,QAAQ,OAAO,QAAQ,CAAC,UAAU,MAAM,OAAO,IAAI,eAAe,CAAC,EAAE;AAAA,QACpF;AAAA,MAAA;AAGE,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,WAAW,UAAU,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QAC1D,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAC/B,EAAA;AAAA,IAAA,CACH;AAEM,WAAA;AAAA,EAAA;AAGH,QAAA,YAAYC,qBAAS,oBAAoB;AAAA,IAC7C,SAAS,KAAa;AACb,aAAA,OAAO,SAAS,GAAiB;AAAA,IAC1C;AAAA;AAAA,IAEA,IAAI,aAAa;AACR,aAAA;AAAA,QACL,OAAO,OAAO,WAAW,IAAI,mBAAmB;AAAA,QAChD,QAAQ,OAAO,WAAW,IAAI,oBAAoB;AAAA,MAAA;AAAA,IAEtD;AAAA,EAAA,CACD;AAEK,QAAA,YAAYC,qBAAS,oBAAoB;AAAA,IAC7C,SAAS,KAAa;AACb,aAAA,OAAO,SAAS,GAAiB;AAAA,IAC1C;AAAA;AAAA,IAEA,IAAI,aAAa;AACR,aAAA;AAAA,QACL,OAAO,OAAO,WAAW,IAAI,mBAAmB;AAAA,MAAA;AAAA,IAEpD;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL,aAAaC,MAAgC,MAAM;AAAA,IACnD;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _ from "lodash";
|
|
2
|
+
import { sanitize, validate } from "@strapi/utils";
|
|
2
3
|
import instantiatePermissionsUtilities from "./permissions/index.mjs";
|
|
3
4
|
const transformRoutePrefixFor = (pluginName) => (route) => {
|
|
4
5
|
const prefix = route.config && route.config.prefix;
|
|
@@ -47,9 +48,34 @@ const createContentAPI = (strapi) => {
|
|
|
47
48
|
});
|
|
48
49
|
return routesMap;
|
|
49
50
|
};
|
|
51
|
+
const sanitizer = sanitize.createAPISanitizers({
|
|
52
|
+
getModel(uid) {
|
|
53
|
+
return strapi.getModel(uid);
|
|
54
|
+
},
|
|
55
|
+
// NOTE: use lazy access to allow registration of sanitizers after the creation of the container
|
|
56
|
+
get sanitizers() {
|
|
57
|
+
return {
|
|
58
|
+
input: strapi.sanitizers.get("content-api.input"),
|
|
59
|
+
output: strapi.sanitizers.get("content-api.output")
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const validator = validate.createAPIValidators({
|
|
64
|
+
getModel(uid) {
|
|
65
|
+
return strapi.getModel(uid);
|
|
66
|
+
},
|
|
67
|
+
// NOTE: use lazy access to allow registration of validators after the creation of the container
|
|
68
|
+
get validators() {
|
|
69
|
+
return {
|
|
70
|
+
input: strapi.validators.get("content-api.input")
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
});
|
|
50
74
|
return {
|
|
51
75
|
permissions: instantiatePermissionsUtilities(strapi),
|
|
52
|
-
getRoutesMap
|
|
76
|
+
getRoutesMap,
|
|
77
|
+
sanitize: sanitizer,
|
|
78
|
+
validate: validator
|
|
53
79
|
};
|
|
54
80
|
};
|
|
55
81
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\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.api, (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 return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n };\n};\n\nexport default createContentAPI;\n"],"names":[],"mappings":"
|
|
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.api, (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":[],"mappings":";;;AAOA,MAAM,0BAA0B,CAAC,eAAuB,CAAC,UAAsB;AAC7E,QAAM,SAAS,MAAM,UAAU,MAAM,OAAO;AAC5C,QAAM,OAAO,WAAW,SAAY,GAAG,MAAM,GAAG,MAAM,IAAI,KAAK,IAAI,UAAU,GAAG,MAAM,IAAI;AAEnF,SAAA;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EAAA;AAEJ;AAEA,MAAM,mBAAmB,CAAC,UAAsB,MAAM,KAAK,SAAS;AAK9D,MAAA,mBAAmB,CAAC,WAAwB;AAChD,QAAM,eAAe,YAAY;AAC/B,UAAM,YAA0C,CAAA;AAEhD,MAAE,QAAQ,OAAO,KAAK,CAAC,KAAK,YAAY;AACtC,YAAM,SAAS,EAAE,QAAQ,IAAI,QAAQ,CAAC,UAAU;AAC9C,YAAI,YAAY,OAAO;AACrB,iBAAO,MAAM;AAAA,QACf;AAEO,eAAA;AAAA,MAAA,CACR,EAAE,OAAO,gBAAgB;AAEtB,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,QAAQ,OAAO,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QACpD,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAC/B,EAAA;AAAA,IAAA,CACH;AAED,MAAE,QAAQ,OAAO,SAAS,CAAC,QAAQ,eAAe;AAC1C,YAAA,kBAAkB,wBAAwB,UAAU;AAE1D,UAAI,MAAM,QAAQ,OAAO,MAAM,GAAG;AAChC,eAAO,OAAO,OAAO,IAAI,eAAe,EAAE,OAAO,gBAAgB;AAAA,MACnE;AAEA,YAAM,SAAS,EAAE,QAAQ,OAAO,QAAQ,CAAC,UAAU,MAAM,OAAO,IAAI,eAAe,CAAC,EAAE;AAAA,QACpF;AAAA,MAAA;AAGE,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,WAAW,UAAU,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QAC1D,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAC/B,EAAA;AAAA,IAAA,CACH;AAEM,WAAA;AAAA,EAAA;AAGH,QAAA,YAAY,SAAS,oBAAoB;AAAA,IAC7C,SAAS,KAAa;AACb,aAAA,OAAO,SAAS,GAAiB;AAAA,IAC1C;AAAA;AAAA,IAEA,IAAI,aAAa;AACR,aAAA;AAAA,QACL,OAAO,OAAO,WAAW,IAAI,mBAAmB;AAAA,QAChD,QAAQ,OAAO,WAAW,IAAI,oBAAoB;AAAA,MAAA;AAAA,IAEtD;AAAA,EAAA,CACD;AAEK,QAAA,YAAY,SAAS,oBAAoB;AAAA,IAC7C,SAAS,KAAa;AACb,aAAA,OAAO,SAAS,GAAiB;AAAA,IAC1C;AAAA;AAAA,IAEA,IAAI,aAAa;AACR,aAAA;AAAA,QACL,OAAO,OAAO,WAAW,IAAI,mBAAmB;AAAA,MAAA;AAAA,IAEpD;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL,aAAa,gCAAgC,MAAM;AAAA,IACnD;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAMnD;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,qBAAqB,WAAY,KAAK,MAAM,KAAG,QAAQ,SAAS,CAAC,OAyB7E,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const errors = require("./middlewares/errors.js");
|
|
4
4
|
const middlewareManager = require("./middlewares/middleware-manager.js");
|
|
5
5
|
const repository = require("./repository.js");
|
|
6
|
+
const data = require("./transform/data.js");
|
|
6
7
|
const createDocumentService = (strapi) => {
|
|
7
8
|
const repositories = /* @__PURE__ */ new Map();
|
|
8
9
|
const middlewares = middlewareManager.createMiddlewareManager();
|
|
@@ -17,6 +18,9 @@ const createDocumentService = (strapi) => {
|
|
|
17
18
|
return repository$1;
|
|
18
19
|
};
|
|
19
20
|
return Object.assign(factory, {
|
|
21
|
+
utils: {
|
|
22
|
+
transformData: data.transformData
|
|
23
|
+
},
|
|
20
24
|
use: middlewares.use.bind(middlewares)
|
|
21
25
|
});
|
|
22
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @param options.defaults - Default parameters to apply to all actions\n * @param options.parent - Parent repository, used when creating a new repository with .with()\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\n// TODO: support global document service middleware & per repo middlewares\nexport const createDocumentService = (strapi: Core.Strapi): Modules.Documents.Service => {\n const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n const middlewares = createMiddlewareManager();\n\n middlewares.use(databaseErrorsMiddleware);\n\n const factory = function factory(uid) {\n if (repositories.has(uid)) {\n return repositories.get(uid)!;\n }\n\n const contentType = strapi.contentType(uid);\n const repository = createContentTypeRepository(uid);\n\n repositories.set(uid, middlewares.wrapObject(repository, { contentType }));\n\n return repository;\n } as Modules.Documents.Service;\n\n return Object.assign(factory, {\n use: middlewares.use.bind(middlewares),\n });\n};\n"],"names":["createMiddlewareManager","databaseErrorsMiddleware","factory","repository","createContentTypeRepository"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\nimport { transformData } from './transform/data';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @param options.defaults - Default parameters to apply to all actions\n * @param options.parent - Parent repository, used when creating a new repository with .with()\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\n// TODO: support global document service middleware & per repo middlewares\nexport const createDocumentService = (strapi: Core.Strapi): Modules.Documents.Service => {\n const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n const middlewares = createMiddlewareManager();\n\n middlewares.use(databaseErrorsMiddleware);\n\n const factory = function factory(uid) {\n if (repositories.has(uid)) {\n return repositories.get(uid)!;\n }\n\n const contentType = strapi.contentType(uid);\n const repository = createContentTypeRepository(uid);\n\n repositories.set(uid, middlewares.wrapObject(repository, { contentType }));\n\n return repository;\n } as Modules.Documents.Service;\n\n return Object.assign(factory, {\n utils: {\n transformData,\n },\n use: middlewares.use.bind(middlewares),\n });\n};\n"],"names":["createMiddlewareManager","databaseErrorsMiddleware","factory","repository","createContentTypeRepository","transformData"],"mappings":";;;;;;AAuBa,MAAA,wBAAwB,CAAC,WAAmD;AACjF,QAAA,mCAAmB;AACzB,QAAM,cAAcA,kBAAAA;AAEpB,cAAY,IAAIC,OAAAA,wBAAwB;AAElC,QAAA,UAAU,SAASC,SAAQ,KAAK;AAChC,QAAA,aAAa,IAAI,GAAG,GAAG;AAClB,aAAA,aAAa,IAAI,GAAG;AAAA,IAC7B;AAEM,UAAA,cAAc,OAAO,YAAY,GAAG;AACpC,UAAAC,eAAaC,uCAA4B,GAAG;AAErC,iBAAA,IAAI,KAAK,YAAY,WAAWD,cAAY,EAAE,YAAa,CAAA,CAAC;AAElE,WAAAA;AAAAA,EAAA;AAGF,SAAA,OAAO,OAAO,SAAS;AAAA,IAC5B,OAAO;AAAA,MAAA,eACLE,KAAA;AAAA,IACF;AAAA,IACA,KAAK,YAAY,IAAI,KAAK,WAAW;AAAA,EAAA,CACtC;AACH;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { databaseErrorsMiddleware } from "./middlewares/errors.mjs";
|
|
2
2
|
import { createMiddlewareManager } from "./middlewares/middleware-manager.mjs";
|
|
3
3
|
import { createContentTypeRepository } from "./repository.mjs";
|
|
4
|
+
import { transformData } from "./transform/data.mjs";
|
|
4
5
|
const createDocumentService = (strapi) => {
|
|
5
6
|
const repositories = /* @__PURE__ */ new Map();
|
|
6
7
|
const middlewares = createMiddlewareManager();
|
|
@@ -15,6 +16,9 @@ const createDocumentService = (strapi) => {
|
|
|
15
16
|
return repository;
|
|
16
17
|
};
|
|
17
18
|
return Object.assign(factory, {
|
|
19
|
+
utils: {
|
|
20
|
+
transformData
|
|
21
|
+
},
|
|
18
22
|
use: middlewares.use.bind(middlewares)
|
|
19
23
|
});
|
|
20
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @param options.defaults - Default parameters to apply to all actions\n * @param options.parent - Parent repository, used when creating a new repository with .with()\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\n// TODO: support global document service middleware & per repo middlewares\nexport const createDocumentService = (strapi: Core.Strapi): Modules.Documents.Service => {\n const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n const middlewares = createMiddlewareManager();\n\n middlewares.use(databaseErrorsMiddleware);\n\n const factory = function factory(uid) {\n if (repositories.has(uid)) {\n return repositories.get(uid)!;\n }\n\n const contentType = strapi.contentType(uid);\n const repository = createContentTypeRepository(uid);\n\n repositories.set(uid, middlewares.wrapObject(repository, { contentType }));\n\n return repository;\n } as Modules.Documents.Service;\n\n return Object.assign(factory, {\n use: middlewares.use.bind(middlewares),\n });\n};\n"],"names":["factory"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\nimport { transformData } from './transform/data';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @param options.defaults - Default parameters to apply to all actions\n * @param options.parent - Parent repository, used when creating a new repository with .with()\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\n// TODO: support global document service middleware & per repo middlewares\nexport const createDocumentService = (strapi: Core.Strapi): Modules.Documents.Service => {\n const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n const middlewares = createMiddlewareManager();\n\n middlewares.use(databaseErrorsMiddleware);\n\n const factory = function factory(uid) {\n if (repositories.has(uid)) {\n return repositories.get(uid)!;\n }\n\n const contentType = strapi.contentType(uid);\n const repository = createContentTypeRepository(uid);\n\n repositories.set(uid, middlewares.wrapObject(repository, { contentType }));\n\n return repository;\n } as Modules.Documents.Service;\n\n return Object.assign(factory, {\n utils: {\n transformData,\n },\n use: middlewares.use.bind(middlewares),\n });\n};\n"],"names":["factory"],"mappings":";;;;AAuBa,MAAA,wBAAwB,CAAC,WAAmD;AACjF,QAAA,mCAAmB;AACzB,QAAM,cAAc;AAEpB,cAAY,IAAI,wBAAwB;AAElC,QAAA,UAAU,SAASA,SAAQ,KAAK;AAChC,QAAA,aAAa,IAAI,GAAG,GAAG;AAClB,aAAA,aAAa,IAAI,GAAG;AAAA,IAC7B;AAEM,UAAA,cAAc,OAAO,YAAY,GAAG;AACpC,UAAA,aAAa,4BAA4B,GAAG;AAErC,iBAAA,IAAI,KAAK,YAAY,WAAW,YAAY,EAAE,YAAa,CAAA,CAAC;AAElE,WAAA;AAAA,EAAA;AAGF,SAAA,OAAO,OAAO,SAAS;AAAA,IAC5B,OAAO;AAAA,MACL;AAAA,IACF;AAAA,IACA,KAAK,YAAY,IAAI,KAAK,WAAW;AAAA,EAAA,CACtC;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AA0B3E,eAAO,MAAM,2BAA2B,EAAE,
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AA0B3E,eAAO,MAAM,2BAA2B,EAAE,uBAsWzC,CAAC"}
|
|
@@ -14,7 +14,7 @@ const transformContentTypesToModels = require("../../utils/transform-content-typ
|
|
|
14
14
|
const populate = require("./utils/populate.js");
|
|
15
15
|
const data = require("./transform/data.js");
|
|
16
16
|
const transformParamsToQuery = _.curry((uid, params2) => {
|
|
17
|
-
const query =
|
|
17
|
+
const query = strapi.get("query-params").transform(uid, params2);
|
|
18
18
|
return _.assoc("where", { ...params2?.lookup, ...query.where }, query);
|
|
19
19
|
});
|
|
20
20
|
const createContentTypeRepository = (uid) => {
|
|
@@ -290,7 +290,17 @@ const createContentTypeRepository = (uid) => {
|
|
|
290
290
|
count: common.wrapInTransaction(count),
|
|
291
291
|
publish: hasDraftAndPublish ? common.wrapInTransaction(publish) : void 0,
|
|
292
292
|
unpublish: hasDraftAndPublish ? common.wrapInTransaction(unpublish) : void 0,
|
|
293
|
-
discardDraft: hasDraftAndPublish ? common.wrapInTransaction(discardDraft) : void 0
|
|
293
|
+
discardDraft: hasDraftAndPublish ? common.wrapInTransaction(discardDraft) : void 0,
|
|
294
|
+
/**
|
|
295
|
+
* @internal
|
|
296
|
+
* Exposed for use within document service middlewares
|
|
297
|
+
*/
|
|
298
|
+
updateComponents: components.updateComponents,
|
|
299
|
+
/**
|
|
300
|
+
* @internal
|
|
301
|
+
* Exposed for use within document service middlewares
|
|
302
|
+
*/
|
|
303
|
+
omitComponentData: components.omitComponentData
|
|
294
304
|
};
|
|
295
305
|
};
|
|
296
306
|
exports.createContentTypeRepository = createContentTypeRepository;
|