@strapi/core 0.0.0-experimental.fb442e5e12dd3f611303691bf85a249520ba348b → 0.0.0-experimental.fed75ee8e64c57dbed0b670b25ef026b69baab10
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/core-api/service/collection-type.d.ts +2 -2
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js +5 -2
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.mjs +5 -2
- package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/loaders/plugins/index.d.ts.map +1 -1
- package/dist/loaders/plugins/index.js +28 -1
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/loaders/plugins/index.mjs +9 -1
- package/dist/loaders/plugins/index.mjs.map +1 -1
- package/dist/middlewares/query.js.map +1 -1
- package/dist/middlewares/query.mjs.map +1 -1
- package/dist/middlewares/security.d.ts.map +1 -1
- package/dist/middlewares/security.js +1 -1
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs +1 -1
- package/dist/middlewares/security.mjs.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts +12 -9
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.js +55 -11
- package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.mjs +56 -12
- package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
- package/dist/migrations/draft-publish.d.ts +1 -1
- package/dist/migrations/draft-publish.d.ts.map +1 -1
- package/dist/migrations/draft-publish.js.map +1 -1
- package/dist/migrations/draft-publish.mjs.map +1 -1
- package/dist/migrations/i18n.d.ts +5 -0
- package/dist/migrations/i18n.d.ts.map +1 -0
- package/dist/migrations/i18n.js +54 -0
- package/dist/migrations/i18n.js.map +1 -0
- package/dist/migrations/i18n.mjs +54 -0
- package/dist/migrations/i18n.mjs.map +1 -0
- package/dist/migrations/index.d.ts +5 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +15 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/index.mjs +15 -0
- package/dist/migrations/index.mjs.map +1 -0
- package/dist/providers/admin.d.ts.map +1 -1
- package/dist/providers/admin.js.map +1 -1
- package/dist/providers/admin.mjs.map +1 -1
- package/dist/providers/registries.js +3 -3
- package/dist/providers/registries.js.map +1 -1
- package/dist/providers/registries.mjs +3 -3
- package/dist/providers/registries.mjs.map +1 -1
- package/dist/registries/policies.d.ts +1 -1
- package/dist/registries/policies.d.ts.map +1 -1
- package/dist/registries/policies.js +1 -1
- package/dist/registries/policies.js.map +1 -1
- package/dist/registries/policies.mjs +1 -1
- package/dist/registries/policies.mjs.map +1 -1
- package/dist/services/content-api/index.d.ts +10 -12
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/permissions/index.d.ts +10 -12
- package/dist/services/content-api/permissions/index.d.ts.map +1 -1
- package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
- package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
- package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
- package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
- package/dist/services/cron.d.ts +3 -3
- package/dist/services/cron.d.ts.map +1 -1
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs.map +1 -1
- package/dist/services/document-service/entries.d.ts.map +1 -1
- package/dist/services/document-service/entries.js.map +1 -1
- package/dist/services/document-service/entries.mjs.map +1 -1
- package/dist/services/document-service/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +50 -6
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +51 -7
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/utils/populate.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.js +3 -1
- package/dist/services/document-service/utils/populate.js.map +1 -1
- package/dist/services/document-service/utils/populate.mjs +3 -1
- package/dist/services/document-service/utils/populate.mjs.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
- package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
- package/dist/services/document-service/utils/unidirectional-relations.js +59 -0
- package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
- package/dist/services/document-service/utils/unidirectional-relations.mjs +59 -0
- package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +6 -2
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +6 -2
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.js +18 -14
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs +18 -14
- package/dist/services/entity-validator/validators.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +2 -2
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +2 -1
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.mjs +2 -1
- package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
- package/package.json +16 -16
@@ -49,7 +49,7 @@ const policiesRegistry = () => {
|
|
49
49
|
* Returns this list of registered policies uids
|
50
50
|
*/
|
51
51
|
keys() {
|
52
|
-
return policies.keys();
|
52
|
+
return Array.from(policies.keys());
|
53
53
|
},
|
54
54
|
/**
|
55
55
|
* Returns the instance of a policy. Instantiate the policy if not already done
|
@@ -1 +1 @@
|
|
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;
|
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 an array so format stays the same as controllers, services, etc\n return Array.from(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":"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"}
|
@@ -48,7 +48,7 @@ const policiesRegistry = () => {
|
|
48
48
|
* Returns this list of registered policies uids
|
49
49
|
*/
|
50
50
|
keys() {
|
51
|
-
return policies.keys();
|
51
|
+
return Array.from(policies.keys());
|
52
52
|
},
|
53
53
|
/**
|
54
54
|
* Returns the instance of a policy. Instantiate the policy if not already done
|
@@ -1 +1 @@
|
|
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;
|
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 an array so format stays the same as controllers, services, etc\n return Array.from(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;AAEL,aAAO,MAAM,KAAK,SAAS,KAAM,CAAA;AAAA,IACnC;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;"}
|
@@ -8,40 +8,38 @@ declare const createContentAPI: (strapi: Core.Strapi) => {
|
|
8
8
|
engine: import("@strapi/permissions/dist/engine").Engine;
|
9
9
|
providers: {
|
10
10
|
action: {
|
11
|
-
register(action: string, payload: Record<string, unknown>): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
11
|
+
register(action: string, payload: Record<string, unknown>): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
12
12
|
hooks: import("@strapi/utils/dist/provider-factory").ProviderHooksMap;
|
13
|
-
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
13
|
+
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
14
14
|
get(key: string): {
|
15
15
|
[x: string]: unknown;
|
16
16
|
} | undefined;
|
17
|
-
getWhere(filters?: Record<string, unknown> | undefined): {
|
18
|
-
[x: string]: unknown;
|
19
|
-
}[];
|
20
17
|
values(): {
|
21
18
|
[x: string]: unknown;
|
22
19
|
}[];
|
23
20
|
keys(): string[];
|
24
21
|
has(key: string): boolean;
|
25
22
|
size(): number;
|
26
|
-
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
23
|
+
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider<{
|
24
|
+
[x: string]: unknown;
|
25
|
+
}>>;
|
27
26
|
};
|
28
27
|
condition: {
|
29
|
-
register(condition: import("./permissions/providers/condition").Condition): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
28
|
+
register(condition: import("./permissions/providers/condition").Condition): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
30
29
|
hooks: import("@strapi/utils/dist/provider-factory").ProviderHooksMap;
|
31
|
-
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
30
|
+
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
32
31
|
get(key: string): {
|
33
32
|
[x: string]: unknown;
|
34
33
|
} | undefined;
|
35
|
-
getWhere(filters?: Record<string, unknown> | undefined): {
|
36
|
-
[x: string]: unknown;
|
37
|
-
}[];
|
38
34
|
values(): {
|
39
35
|
[x: string]: unknown;
|
40
36
|
}[];
|
41
37
|
keys(): string[];
|
42
38
|
has(key: string): boolean;
|
43
39
|
size(): number;
|
44
|
-
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
40
|
+
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider<{
|
41
|
+
[x: string]: unknown;
|
42
|
+
}>>;
|
45
43
|
};
|
46
44
|
};
|
47
45
|
registerActions: () => Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/content-api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,eAAe,CAAC;AAgB/C;;GAEG;AACH,QAAA,MAAM,gBAAgB,WAAY,KAAK,MAAM
|
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"}
|
@@ -7,40 +7,38 @@ declare const _default: (strapi: Core.Strapi) => {
|
|
7
7
|
engine: import("@strapi/permissions/dist/engine").Engine;
|
8
8
|
providers: {
|
9
9
|
action: {
|
10
|
-
register(action: string, payload: Record<string, unknown>): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
10
|
+
register(action: string, payload: Record<string, unknown>): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
11
11
|
hooks: import("@strapi/utils/dist/provider-factory").ProviderHooksMap;
|
12
|
-
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
12
|
+
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
13
13
|
get(key: string): {
|
14
14
|
[x: string]: unknown;
|
15
15
|
} | undefined;
|
16
|
-
getWhere(filters?: Record<string, unknown> | undefined): {
|
17
|
-
[x: string]: unknown;
|
18
|
-
}[];
|
19
16
|
values(): {
|
20
17
|
[x: string]: unknown;
|
21
18
|
}[];
|
22
19
|
keys(): string[];
|
23
20
|
has(key: string): boolean;
|
24
21
|
size(): number;
|
25
|
-
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
22
|
+
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider<{
|
23
|
+
[x: string]: unknown;
|
24
|
+
}>>;
|
26
25
|
};
|
27
26
|
condition: {
|
28
|
-
register(condition: import("./providers/condition").Condition): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
27
|
+
register(condition: import("./providers/condition").Condition): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
29
28
|
hooks: import("@strapi/utils/dist/provider-factory").ProviderHooksMap;
|
30
|
-
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
29
|
+
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
31
30
|
get(key: string): {
|
32
31
|
[x: string]: unknown;
|
33
32
|
} | undefined;
|
34
|
-
getWhere(filters?: Record<string, unknown> | undefined): {
|
35
|
-
[x: string]: unknown;
|
36
|
-
}[];
|
37
33
|
values(): {
|
38
34
|
[x: string]: unknown;
|
39
35
|
}[];
|
40
36
|
keys(): string[];
|
41
37
|
has(key: string): boolean;
|
42
38
|
size(): number;
|
43
|
-
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
39
|
+
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider<{
|
40
|
+
[x: string]: unknown;
|
41
|
+
}>>;
|
44
42
|
};
|
45
43
|
};
|
46
44
|
registerActions: () => Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/content-api/permissions/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA8B1C;;;GAGG;iCACqB,KAAK,MAAM
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/content-api/permissions/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA8B1C;;;GAGG;iCACqB,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAkBd,OAAO,MAAM,EAAE,MAAM,EAAE,CAAC;;;AAlB7C,wBAmHE"}
|
@@ -1,20 +1,19 @@
|
|
1
1
|
declare const _default: (options?: {}) => {
|
2
|
-
register(action: string, payload: Record<string, unknown>): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
2
|
+
register(action: string, payload: Record<string, unknown>): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
3
3
|
hooks: import("@strapi/utils/dist/provider-factory").ProviderHooksMap;
|
4
|
-
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
4
|
+
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
5
5
|
get(key: string): {
|
6
6
|
[x: string]: unknown;
|
7
7
|
} | undefined;
|
8
|
-
getWhere(filters?: Record<string, unknown> | undefined): {
|
9
|
-
[x: string]: unknown;
|
10
|
-
}[];
|
11
8
|
values(): {
|
12
9
|
[x: string]: unknown;
|
13
10
|
}[];
|
14
11
|
keys(): string[];
|
15
12
|
has(key: string): boolean;
|
16
13
|
size(): number;
|
17
|
-
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
14
|
+
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider<{
|
15
|
+
[x: string]: unknown;
|
16
|
+
}>>;
|
18
17
|
};
|
19
18
|
export default _default;
|
20
19
|
//# sourceMappingURL=action.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/services/content-api/permissions/providers/action.ts"],"names":[],"mappings":";qBAQ2B,MAAM,WAAW,OAAO,MAAM,EAAE,OAAO,CAAC
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/services/content-api/permissions/providers/action.ts"],"names":[],"mappings":";qBAQ2B,MAAM,WAAW,OAAO,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;AANnE,wBAcE"}
|
@@ -3,22 +3,21 @@ export interface Condition {
|
|
3
3
|
[key: string]: unknown;
|
4
4
|
}
|
5
5
|
declare const _default: (options?: {}) => {
|
6
|
-
register(condition: Condition): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
6
|
+
register(condition: Condition): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
7
7
|
hooks: import("@strapi/utils/dist/provider-factory").ProviderHooksMap;
|
8
|
-
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
8
|
+
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider<unknown>>;
|
9
9
|
get(key: string): {
|
10
10
|
[x: string]: unknown;
|
11
11
|
} | undefined;
|
12
|
-
getWhere(filters?: Record<string, unknown> | undefined): {
|
13
|
-
[x: string]: unknown;
|
14
|
-
}[];
|
15
12
|
values(): {
|
16
13
|
[x: string]: unknown;
|
17
14
|
}[];
|
18
15
|
keys(): string[];
|
19
16
|
has(key: string): boolean;
|
20
17
|
size(): number;
|
21
|
-
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider
|
18
|
+
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider<{
|
19
|
+
[x: string]: unknown;
|
20
|
+
}>>;
|
22
21
|
};
|
23
22
|
export default _default;
|
24
23
|
//# sourceMappingURL=condition.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../../../src/services/content-api/permissions/providers/condition.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;;wBAQ6B,SAAS
|
1
|
+
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../../../src/services/content-api/permissions/providers/condition.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;;wBAQ6B,SAAS;;;;;;;;;;;;;;;;AANvC,wBAcE"}
|
package/dist/services/cron.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
import { Job } from 'node-schedule';
|
1
|
+
import { Job, Spec } from 'node-schedule';
|
2
2
|
import type { Core } from '@strapi/types';
|
3
3
|
interface JobSpec {
|
4
4
|
job: Job;
|
5
|
-
options:
|
5
|
+
options: Spec;
|
6
6
|
name: string | null;
|
7
7
|
}
|
8
8
|
type TaskFn = ({ strapi }: {
|
@@ -10,7 +10,7 @@ type TaskFn = ({ strapi }: {
|
|
10
10
|
}, ...args: unknown[]) => Promise<unknown>;
|
11
11
|
type Task = TaskFn | {
|
12
12
|
task: TaskFn;
|
13
|
-
options:
|
13
|
+
options: Spec;
|
14
14
|
};
|
15
15
|
interface Tasks {
|
16
16
|
[key: string]: Task;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/services/cron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/services/cron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,UAAU,OAAO;IACf,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,KAAK,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE5F,KAAK,IAAI,GACL,MAAM,GACN;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEN,UAAU,KAAK;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,iBAAiB;gBAKR,KAAK;iBAoCH,MAAM;;;;;CAgCtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cron.js","sources":["../../src/services/cron.ts"],"sourcesContent":["import { Job } from 'node-schedule';\nimport { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\ninterface JobSpec {\n job: Job;\n options:
|
1
|
+
{"version":3,"file":"cron.js","sources":["../../src/services/cron.ts"],"sourcesContent":["import { Job, Spec } from 'node-schedule';\nimport { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\ninterface JobSpec {\n job: Job;\n options: Spec;\n name: string | null;\n}\n\ntype TaskFn = ({ strapi }: { strapi: Core.Strapi }, ...args: unknown[]) => Promise<unknown>;\n\ntype Task =\n | TaskFn\n | {\n task: TaskFn;\n options: Spec;\n };\n\ninterface Tasks {\n [key: string]: Task;\n}\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: Spec;\n let taskName: string | null;\n if (isFunction(taskValue)) {\n // don't use task name if key is the rule\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (isFunction(taskValue.task)) {\n // set task name if key is not the rule\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const fnWithStrapi = (...args: unknown[]) => fn({ strapi }, ...args);\n\n // const job = new Job(null, fnWithStrapi);\n const job = new Job(fnWithStrapi);\n jobsSpecs.push({ job, options, name: taskName });\n\n if (running) {\n job.schedule(options);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) {\n throw new Error('You must provide a name to remove a cron job.');\n }\n\n jobsSpecs\n .filter(({ name: jobSpecName }) => jobSpecName === name)\n .forEach(({ job }) => job.cancel());\n\n jobsSpecs = jobsSpecs.filter(({ name: jobSpecName }) => jobSpecName !== name);\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job, options }) => job.schedule(options));\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.cancel());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs = [];\n return this;\n },\n jobs: jobsSpecs,\n };\n};\n\nexport default createCronService;\n"],"names":["isFunction","Job"],"mappings":";;;AAuBA,MAAM,oBAAoB,MAAM;AAC9B,MAAI,YAAuB,CAAA;AAC3B,MAAI,UAAU;AAEP,SAAA;AAAA,IACL,IAAI,QAAe,IAAI;AACrB,iBAAW,kBAAkB,OAAO,KAAK,KAAK,GAAG;AACzC,cAAA,YAAY,MAAM,cAAc;AAElC,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAAA,GAAAA,WAAW,SAAS,GAAG;AAEd,qBAAA;AACN,eAAA,UAAU,KAAK,KAAK;AACf,oBAAA;AAAA,QACD,WAAAA,GAAA,WAAW,UAAU,IAAI,GAAG;AAE1B,qBAAA;AACN,eAAA,UAAU,KAAK,KAAK,SAAS;AAClC,oBAAU,UAAU;AAAA,QAAA,OACf;AACL,gBAAM,IAAI;AAAA,YACR,sCAAsC,cAAc;AAAA,UAAA;AAAA,QAExD;AAEM,cAAA,eAAe,IAAI,SAAoB,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI;AAG7D,cAAA,MAAM,IAAIC,iBAAI,YAAY;AAChC,kBAAU,KAAK,EAAE,KAAK,SAAS,MAAM,UAAU;AAE/C,YAAI,SAAS;AACX,cAAI,SAAS,OAAO;AAAA,QACtB;AAAA,MACF;AACO,aAAA;AAAA,IACT;AAAA,IAEA,OAAO,MAAc;AACnB,UAAI,CAAC,MAAM;AACH,cAAA,IAAI,MAAM,+CAA+C;AAAA,MACjE;AAEA,gBACG,OAAO,CAAC,EAAE,MAAM,YAAA,MAAkB,gBAAgB,IAAI,EACtD,QAAQ,CAAC,EAAE,IAAA,MAAU,IAAI,OAAQ,CAAA;AAExB,kBAAA,UAAU,OAAO,CAAC,EAAE,MAAM,YAAY,MAAM,gBAAgB,IAAI;AACrE,aAAA;AAAA,IACT;AAAA,IAEA,QAAQ;AACI,gBAAA,QAAQ,CAAC,EAAE,KAAK,QAAc,MAAA,IAAI,SAAS,OAAO,CAAC;AACnD,gBAAA;AACH,aAAA;AAAA,IACT;AAAA,IAEA,OAAO;AACL,gBAAU,QAAQ,CAAC,EAAE,IAAU,MAAA,IAAI,QAAQ;AACjC,gBAAA;AACH,aAAA;AAAA,IACT;AAAA,IAEA,UAAU;AACR,WAAK,KAAK;AACV,kBAAY,CAAA;AACL,aAAA;AAAA,IACT;AAAA,IACA,MAAM;AAAA,EAAA;AAEV;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cron.mjs","sources":["../../src/services/cron.ts"],"sourcesContent":["import { Job } from 'node-schedule';\nimport { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\ninterface JobSpec {\n job: Job;\n options:
|
1
|
+
{"version":3,"file":"cron.mjs","sources":["../../src/services/cron.ts"],"sourcesContent":["import { Job, Spec } from 'node-schedule';\nimport { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\ninterface JobSpec {\n job: Job;\n options: Spec;\n name: string | null;\n}\n\ntype TaskFn = ({ strapi }: { strapi: Core.Strapi }, ...args: unknown[]) => Promise<unknown>;\n\ntype Task =\n | TaskFn\n | {\n task: TaskFn;\n options: Spec;\n };\n\ninterface Tasks {\n [key: string]: Task;\n}\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: Spec;\n let taskName: string | null;\n if (isFunction(taskValue)) {\n // don't use task name if key is the rule\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (isFunction(taskValue.task)) {\n // set task name if key is not the rule\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const fnWithStrapi = (...args: unknown[]) => fn({ strapi }, ...args);\n\n // const job = new Job(null, fnWithStrapi);\n const job = new Job(fnWithStrapi);\n jobsSpecs.push({ job, options, name: taskName });\n\n if (running) {\n job.schedule(options);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) {\n throw new Error('You must provide a name to remove a cron job.');\n }\n\n jobsSpecs\n .filter(({ name: jobSpecName }) => jobSpecName === name)\n .forEach(({ job }) => job.cancel());\n\n jobsSpecs = jobsSpecs.filter(({ name: jobSpecName }) => jobSpecName !== name);\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job, options }) => job.schedule(options));\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.cancel());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs = [];\n return this;\n },\n jobs: jobsSpecs,\n };\n};\n\nexport default createCronService;\n"],"names":[],"mappings":";;AAuBA,MAAM,oBAAoB,MAAM;AAC9B,MAAI,YAAuB,CAAA;AAC3B,MAAI,UAAU;AAEP,SAAA;AAAA,IACL,IAAI,QAAe,IAAI;AACrB,iBAAW,kBAAkB,OAAO,KAAK,KAAK,GAAG;AACzC,cAAA,YAAY,MAAM,cAAc;AAElC,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA,WAAW,SAAS,GAAG;AAEd,qBAAA;AACN,eAAA,UAAU,KAAK,KAAK;AACf,oBAAA;AAAA,QACD,WAAA,WAAW,UAAU,IAAI,GAAG;AAE1B,qBAAA;AACN,eAAA,UAAU,KAAK,KAAK,SAAS;AAClC,oBAAU,UAAU;AAAA,QAAA,OACf;AACL,gBAAM,IAAI;AAAA,YACR,sCAAsC,cAAc;AAAA,UAAA;AAAA,QAExD;AAEM,cAAA,eAAe,IAAI,SAAoB,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI;AAG7D,cAAA,MAAM,IAAI,IAAI,YAAY;AAChC,kBAAU,KAAK,EAAE,KAAK,SAAS,MAAM,UAAU;AAE/C,YAAI,SAAS;AACX,cAAI,SAAS,OAAO;AAAA,QACtB;AAAA,MACF;AACO,aAAA;AAAA,IACT;AAAA,IAEA,OAAO,MAAc;AACnB,UAAI,CAAC,MAAM;AACH,cAAA,IAAI,MAAM,+CAA+C;AAAA,MACjE;AAEA,gBACG,OAAO,CAAC,EAAE,MAAM,YAAA,MAAkB,gBAAgB,IAAI,EACtD,QAAQ,CAAC,EAAE,IAAA,MAAU,IAAI,OAAQ,CAAA;AAExB,kBAAA,UAAU,OAAO,CAAC,EAAE,MAAM,YAAY,MAAM,gBAAgB,IAAI;AACrE,aAAA;AAAA,IACT;AAAA,IAEA,QAAQ;AACI,gBAAA,QAAQ,CAAC,EAAE,KAAK,QAAc,MAAA,IAAI,SAAS,OAAO,CAAC;AACnD,gBAAA;AACH,aAAA;AAAA,IACT;AAAA,IAEA,OAAO;AACL,gBAAU,QAAQ,CAAC,EAAE,IAAU,MAAA,IAAI,QAAQ;AACjC,gBAAA;AACH,aAAA;AAAA,IACT;AAAA,IAEA,UAAU;AACR,WAAK,KAAK;AACV,kBAAY,CAAA;AACL,aAAA;AAAA,IACT;AAAA,IACA,MAAM;AAAA,EAAA;AAEV;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAazC,QAAA,MAAM,oBAAoB,QAAS,IAAI,WAAW;;
|
1
|
+
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAazC,QAAA,MAAM,oBAAoB,QAAS,IAAI,WAAW;;iBAiCjB,MAAM;4BAUK,GAAG;qBA4BV,GAAG;0BAaE,GAAG;CAoB5C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"entries.js","sources":["../../../src/services/document-service/entries.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\nimport { async } from '@strapi/utils';\nimport { assoc, omit } from 'lodash/fp';\n\nimport * as components from './components';\n\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { transformParamsToQuery } from './transform/query';\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\nimport { transformData } from './transform/data';\nimport entityValidator from '../entity-validator';\n\nconst createEntriesService = (uid: UID.ContentType) => {\n const contentType = strapi.contentType(uid);\n\n async function createEntry(params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n
|
1
|
+
{"version":3,"file":"entries.js","sources":["../../../src/services/document-service/entries.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\nimport { async } from '@strapi/utils';\nimport { assoc, omit } from 'lodash/fp';\n\nimport * as components from './components';\n\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { transformParamsToQuery } from './transform/query';\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\nimport { transformData } from './transform/data';\nimport entityValidator from '../entity-validator';\n\nconst createEntriesService = (uid: UID.ContentType) => {\n const contentType = strapi.contentType(uid);\n\n async function createEntry(params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n // Validation\n if (!data) {\n throw new Error('Create requires data attribute');\n }\n\n const validData = await entityValidator.validateEntityCreation(contentType, data, {\n // Note: publishedAt value will always be set when DP is disabled\n isDraft: !params?.data?.publishedAt,\n locale: params?.locale,\n });\n\n // Component handling\n const componentData = await components.createComponents(uid, validData);\n const dataWithComponents = components.assignComponentData(\n contentType,\n componentData,\n validData\n );\n\n const entryData = applyTransforms(contentType, dataWithComponents);\n\n const doc = await strapi.db.query(uid).create({ ...query, data: entryData });\n\n return doc;\n }\n\n async function deleteEntry(id: number) {\n const componentsToDelete = await components.getComponents(uid, { id });\n\n const deletedEntry = await strapi.db.query(uid).delete({ where: { id } });\n\n await components.deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n\n return deletedEntry;\n }\n\n async function updateEntry(entryToUpdate: any, params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n const validData = await entityValidator.validateEntityUpdate(\n contentType,\n data,\n {\n isDraft: !params?.data?.publishedAt, // Always update the draft version\n locale: params?.locale,\n },\n entryToUpdate\n );\n // Component handling\n const componentData = await components.updateComponents(uid, entryToUpdate, validData as any);\n const dataWithComponents = components.assignComponentData(\n contentType,\n componentData,\n validData\n );\n\n const entryData = applyTransforms(contentType, dataWithComponents);\n\n return strapi.db\n .query(uid)\n .update({ ...query, where: { id: entryToUpdate.id }, data: entryData });\n }\n\n async function publishEntry(entry: any, params = {} as any) {\n return async.pipe(\n omit('id'),\n assoc('publishedAt', new Date()),\n (draft) => {\n const opts = { uid, locale: draft.locale, status: 'published', allowMissingId: true };\n return transformData(draft, opts);\n },\n // Create the published entry\n (draft) => createEntry({ ...params, data: draft, locale: draft.locale, status: 'published' })\n )(entry);\n }\n\n async function discardDraftEntry(entry: any, params = {} as any) {\n return async.pipe(\n omit('id'),\n assoc('publishedAt', null),\n (entry) => {\n const opts = { uid, locale: entry.locale, status: 'draft', allowMissingId: true };\n return transformData(entry, opts);\n },\n // Create the draft entry\n (data) => createEntry({ ...params, locale: data.locale, data, status: 'draft' })\n )(entry);\n }\n\n return {\n create: createEntry,\n delete: deleteEntry,\n update: updateEntry,\n publish: publishEntry,\n discardDraft: discardDraftEntry,\n };\n};\n\nexport { createEntriesService };\n"],"names":["params","data","transformParamsDocumentId","query","transformParamsToQuery","pickSelectionParams","entityValidator","components.createComponents","components.assignComponentData","applyTransforms","components.getComponents","components.deleteComponents","components.updateComponents","async","omit","assoc","transformData","entry"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"entries.mjs","sources":["../../../src/services/document-service/entries.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\nimport { async } from '@strapi/utils';\nimport { assoc, omit } from 'lodash/fp';\n\nimport * as components from './components';\n\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { transformParamsToQuery } from './transform/query';\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\nimport { transformData } from './transform/data';\nimport entityValidator from '../entity-validator';\n\nconst createEntriesService = (uid: UID.ContentType) => {\n const contentType = strapi.contentType(uid);\n\n async function createEntry(params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n
|
1
|
+
{"version":3,"file":"entries.mjs","sources":["../../../src/services/document-service/entries.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\nimport { async } from '@strapi/utils';\nimport { assoc, omit } from 'lodash/fp';\n\nimport * as components from './components';\n\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { transformParamsToQuery } from './transform/query';\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\nimport { transformData } from './transform/data';\nimport entityValidator from '../entity-validator';\n\nconst createEntriesService = (uid: UID.ContentType) => {\n const contentType = strapi.contentType(uid);\n\n async function createEntry(params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n // Validation\n if (!data) {\n throw new Error('Create requires data attribute');\n }\n\n const validData = await entityValidator.validateEntityCreation(contentType, data, {\n // Note: publishedAt value will always be set when DP is disabled\n isDraft: !params?.data?.publishedAt,\n locale: params?.locale,\n });\n\n // Component handling\n const componentData = await components.createComponents(uid, validData);\n const dataWithComponents = components.assignComponentData(\n contentType,\n componentData,\n validData\n );\n\n const entryData = applyTransforms(contentType, dataWithComponents);\n\n const doc = await strapi.db.query(uid).create({ ...query, data: entryData });\n\n return doc;\n }\n\n async function deleteEntry(id: number) {\n const componentsToDelete = await components.getComponents(uid, { id });\n\n const deletedEntry = await strapi.db.query(uid).delete({ where: { id } });\n\n await components.deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n\n return deletedEntry;\n }\n\n async function updateEntry(entryToUpdate: any, params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n const validData = await entityValidator.validateEntityUpdate(\n contentType,\n data,\n {\n isDraft: !params?.data?.publishedAt, // Always update the draft version\n locale: params?.locale,\n },\n entryToUpdate\n );\n // Component handling\n const componentData = await components.updateComponents(uid, entryToUpdate, validData as any);\n const dataWithComponents = components.assignComponentData(\n contentType,\n componentData,\n validData\n );\n\n const entryData = applyTransforms(contentType, dataWithComponents);\n\n return strapi.db\n .query(uid)\n .update({ ...query, where: { id: entryToUpdate.id }, data: entryData });\n }\n\n async function publishEntry(entry: any, params = {} as any) {\n return async.pipe(\n omit('id'),\n assoc('publishedAt', new Date()),\n (draft) => {\n const opts = { uid, locale: draft.locale, status: 'published', allowMissingId: true };\n return transformData(draft, opts);\n },\n // Create the published entry\n (draft) => createEntry({ ...params, data: draft, locale: draft.locale, status: 'published' })\n )(entry);\n }\n\n async function discardDraftEntry(entry: any, params = {} as any) {\n return async.pipe(\n omit('id'),\n assoc('publishedAt', null),\n (entry) => {\n const opts = { uid, locale: entry.locale, status: 'draft', allowMissingId: true };\n return transformData(entry, opts);\n },\n // Create the draft entry\n (data) => createEntry({ ...params, locale: data.locale, data, status: 'draft' })\n )(entry);\n }\n\n return {\n create: createEntry,\n delete: deleteEntry,\n update: updateEntry,\n publish: publishEntry,\n discardDraft: discardDraftEntry,\n };\n};\n\nexport { createEntriesService };\n"],"names":["transformParamsDocumentId","components.createComponents","components.assignComponentData","components.getComponents","components.deleteComponents","components.updateComponents","entry"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"
|
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;AAmB3E,eAAO,MAAM,2BAA2B,EAAE,uBAkYzC,CAAC"}
|
@@ -13,14 +13,35 @@ const populate = require("./utils/populate.js");
|
|
13
13
|
const query = require("./transform/query.js");
|
14
14
|
const idTransform = require("./transform/id-transform.js");
|
15
15
|
const events = require("./events.js");
|
16
|
+
const unidirectionalRelations = require("./utils/unidirectional-relations.js");
|
17
|
+
const { validators } = strapiUtils.validate;
|
18
|
+
const getModel = (schema) => strapi.getModel(schema);
|
16
19
|
const createContentTypeRepository = (uid) => {
|
17
20
|
const contentType = strapi.contentType(uid);
|
18
21
|
const hasDraftAndPublish = strapiUtils.contentTypes.hasDraftAndPublish(contentType);
|
22
|
+
const sortValidations = ["nonAttributesOperators", "dynamicZones", "morphRelations"];
|
23
|
+
const fieldValidations = ["scalarAttributes"];
|
24
|
+
const filtersValidations = ["nonAttributesOperators", "dynamicZones", "morphRelations"];
|
25
|
+
const populateValidations = {
|
26
|
+
sort: sortValidations,
|
27
|
+
field: fieldValidations,
|
28
|
+
filters: filtersValidations,
|
29
|
+
populate: ["nonAttributesOperators"]
|
30
|
+
};
|
31
|
+
const validateParams = async (params2) => {
|
32
|
+
const ctx = { schema: contentType, getModel };
|
33
|
+
await validators.validateFilters(ctx, params2.filters, filtersValidations);
|
34
|
+
await validators.validateSort(ctx, params2.sort, sortValidations);
|
35
|
+
await validators.validateFields(ctx, params2.fields, fieldValidations);
|
36
|
+
await validators.validatePopulate(ctx, params2.populate, populateValidations);
|
37
|
+
return params2;
|
38
|
+
};
|
19
39
|
const entries$1 = entries.createEntriesService(uid);
|
20
40
|
const eventManager = events.createEventManager(strapi, uid);
|
21
41
|
const emitEvent = fp.curry(eventManager.emitEvent);
|
22
42
|
async function findMany(params2 = {}) {
|
23
43
|
const query$1 = await strapiUtils.async.pipe(
|
44
|
+
validateParams,
|
24
45
|
draftAndPublish.defaultToDraft,
|
25
46
|
draftAndPublish.statusToLookup(contentType),
|
26
47
|
internationalization.defaultLocale(contentType),
|
@@ -32,6 +53,7 @@ const createContentTypeRepository = (uid) => {
|
|
32
53
|
}
|
33
54
|
async function findFirst(params2 = {}) {
|
34
55
|
const query$1 = await strapiUtils.async.pipe(
|
56
|
+
validateParams,
|
35
57
|
draftAndPublish.defaultToDraft,
|
36
58
|
draftAndPublish.statusToLookup(contentType),
|
37
59
|
internationalization.defaultLocale(contentType),
|
@@ -44,6 +66,7 @@ const createContentTypeRepository = (uid) => {
|
|
44
66
|
async function findOne(opts = {}) {
|
45
67
|
const { documentId, ...params2 } = opts;
|
46
68
|
const query$1 = await strapiUtils.async.pipe(
|
69
|
+
validateParams,
|
47
70
|
draftAndPublish.defaultToDraft,
|
48
71
|
draftAndPublish.statusToLookup(contentType),
|
49
72
|
internationalization.defaultLocale(contentType),
|
@@ -57,6 +80,7 @@ const createContentTypeRepository = (uid) => {
|
|
57
80
|
async function deleteDocument(opts = {}) {
|
58
81
|
const { documentId, ...params2 } = opts;
|
59
82
|
const query$1 = await strapiUtils.async.pipe(
|
83
|
+
validateParams,
|
60
84
|
fp.omit("status"),
|
61
85
|
internationalization.defaultLocale(contentType),
|
62
86
|
internationalization.multiLocaleToLookup(contentType),
|
@@ -77,6 +101,7 @@ const createContentTypeRepository = (uid) => {
|
|
77
101
|
async function create(opts = {}) {
|
78
102
|
const { documentId, ...params2 } = opts;
|
79
103
|
const queryParams = await strapiUtils.async.pipe(
|
104
|
+
validateParams,
|
80
105
|
draftAndPublish.filterDataPublishedAt,
|
81
106
|
draftAndPublish.setStatusToDraft(contentType),
|
82
107
|
draftAndPublish.statusToData(contentType),
|
@@ -96,6 +121,7 @@ const createContentTypeRepository = (uid) => {
|
|
96
121
|
async function clone(opts = {}) {
|
97
122
|
const { documentId, ...params2 } = opts;
|
98
123
|
const queryParams = await strapiUtils.async.pipe(
|
124
|
+
validateParams,
|
99
125
|
draftAndPublish.filterDataPublishedAt,
|
100
126
|
internationalization.defaultLocale(contentType),
|
101
127
|
internationalization.multiLocaleToLookup(contentType)
|
@@ -113,6 +139,7 @@ const createContentTypeRepository = (uid) => {
|
|
113
139
|
const clonedEntries = await strapiUtils.async.map(
|
114
140
|
entriesToClone,
|
115
141
|
strapiUtils.async.pipe(
|
142
|
+
validateParams,
|
116
143
|
fp.omit("id"),
|
117
144
|
// assign new documentId
|
118
145
|
fp.assoc("documentId", transformContentTypesToModels.createDocumentId()),
|
@@ -127,6 +154,7 @@ const createContentTypeRepository = (uid) => {
|
|
127
154
|
async function update(opts = {}) {
|
128
155
|
const { documentId, ...params$1 } = opts;
|
129
156
|
const queryParams = await strapiUtils.async.pipe(
|
157
|
+
validateParams,
|
130
158
|
draftAndPublish.filterDataPublishedAt,
|
131
159
|
draftAndPublish.setStatusToDraft(contentType),
|
132
160
|
draftAndPublish.statusToLookup(contentType),
|
@@ -164,6 +192,7 @@ const createContentTypeRepository = (uid) => {
|
|
164
192
|
}
|
165
193
|
async function count(params2 = {}) {
|
166
194
|
const query$1 = await strapiUtils.async.pipe(
|
195
|
+
validateParams,
|
167
196
|
draftAndPublish.defaultStatus(contentType),
|
168
197
|
draftAndPublish.statusToLookup(contentType),
|
169
198
|
internationalization.defaultLocale(contentType),
|
@@ -175,10 +204,11 @@ const createContentTypeRepository = (uid) => {
|
|
175
204
|
async function publish(opts = {}) {
|
176
205
|
const { documentId, ...params2 } = opts;
|
177
206
|
const queryParams = await strapiUtils.async.pipe(
|
207
|
+
validateParams,
|
178
208
|
internationalization.defaultLocale(contentType),
|
179
209
|
internationalization.multiLocaleToLookup(contentType)
|
180
210
|
)(params2);
|
181
|
-
const [draftsToPublish,
|
211
|
+
const [draftsToPublish, oldPublishedVersions] = await Promise.all([
|
182
212
|
strapi.db.query(uid).findMany({
|
183
213
|
where: {
|
184
214
|
...queryParams?.lookup,
|
@@ -195,20 +225,31 @@ const createContentTypeRepository = (uid) => {
|
|
195
225
|
documentId,
|
196
226
|
publishedAt: { $ne: null }
|
197
227
|
},
|
198
|
-
select: ["id"]
|
228
|
+
select: ["id", "locale"]
|
199
229
|
})
|
200
230
|
]);
|
201
|
-
|
231
|
+
const relationsToSync = await unidirectionalRelations.load(
|
232
|
+
uid,
|
233
|
+
oldPublishedVersions,
|
234
|
+
draftsToPublish
|
235
|
+
);
|
236
|
+
await strapiUtils.async.map(oldPublishedVersions, (entry) => entries$1.delete(entry.id));
|
202
237
|
const publishedEntries = await strapiUtils.async.map(
|
203
238
|
draftsToPublish,
|
204
239
|
(draft) => entries$1.publish(draft, queryParams)
|
205
240
|
);
|
241
|
+
await unidirectionalRelations.sync(
|
242
|
+
[...oldPublishedVersions, ...draftsToPublish],
|
243
|
+
publishedEntries,
|
244
|
+
relationsToSync
|
245
|
+
);
|
206
246
|
publishedEntries.forEach(emitEvent("entry.publish"));
|
207
247
|
return { documentId, entries: publishedEntries };
|
208
248
|
}
|
209
249
|
async function unpublish(opts = {}) {
|
210
250
|
const { documentId, ...params2 } = opts;
|
211
251
|
const query$1 = await strapiUtils.async.pipe(
|
252
|
+
validateParams,
|
212
253
|
internationalization.defaultLocale(contentType),
|
213
254
|
internationalization.multiLocaleToLookup(contentType),
|
214
255
|
query.transformParamsToQuery(uid),
|
@@ -222,10 +263,11 @@ const createContentTypeRepository = (uid) => {
|
|
222
263
|
async function discardDraft(opts = {}) {
|
223
264
|
const { documentId, ...params2 } = opts;
|
224
265
|
const queryParams = await strapiUtils.async.pipe(
|
266
|
+
validateParams,
|
225
267
|
internationalization.defaultLocale(contentType),
|
226
268
|
internationalization.multiLocaleToLookup(contentType)
|
227
269
|
)(params2);
|
228
|
-
const [versionsToDraft,
|
270
|
+
const [versionsToDraft, oldDrafts] = await Promise.all([
|
229
271
|
strapi.db.query(uid).findMany({
|
230
272
|
where: {
|
231
273
|
...queryParams?.lookup,
|
@@ -241,14 +283,16 @@ const createContentTypeRepository = (uid) => {
|
|
241
283
|
documentId,
|
242
284
|
publishedAt: null
|
243
285
|
},
|
244
|
-
select: ["id"]
|
286
|
+
select: ["id", "locale"]
|
245
287
|
})
|
246
288
|
]);
|
247
|
-
await
|
289
|
+
const relationsToSync = await unidirectionalRelations.load(uid, oldDrafts, []);
|
290
|
+
await strapiUtils.async.map(oldDrafts, (entry) => entries$1.delete(entry.id));
|
248
291
|
const draftEntries = await strapiUtils.async.map(
|
249
292
|
versionsToDraft,
|
250
293
|
(entry) => entries$1.discardDraft(entry, queryParams)
|
251
294
|
);
|
295
|
+
await unidirectionalRelations.sync(oldDrafts, draftEntries, relationsToSync);
|
252
296
|
draftEntries.forEach(emitEvent("entry.draft-discard"));
|
253
297
|
return { documentId, entries: draftEntries };
|
254
298
|
}
|