@strapi/utils 5.48.1 → 5.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/async.d.ts +2 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +5 -1
- package/dist/async.js.map +1 -1
- package/dist/content-api-router.d.ts.map +1 -1
- package/dist/content-types.d.ts +5 -5
- package/dist/content-types.d.ts.map +1 -1
- package/dist/content-types.js +21 -17
- package/dist/content-types.js.map +1 -1
- package/dist/convert-query-params.d.ts.map +1 -1
- package/dist/convert-query-params.js +23 -19
- package/dist/convert-query-params.js.map +1 -1
- package/dist/convert-query-params.mjs +2 -2
- package/dist/convert-query-params.mjs.map +1 -1
- package/dist/env-helper.js +12 -8
- package/dist/env-helper.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/file.d.ts +0 -10
- package/dist/file.d.ts.map +1 -1
- package/dist/format-yup-error.d.ts.map +1 -1
- package/dist/has-published-version-param.d.ts +1 -1
- package/dist/has-published-version-param.d.ts.map +1 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -1
- package/dist/install-id.d.ts.map +1 -1
- package/dist/install-id.js +6 -2
- package/dist/install-id.js.map +1 -1
- package/dist/model-cache.d.ts.map +1 -1
- package/dist/operators.d.ts.map +1 -1
- package/dist/package-manager.d.ts.map +1 -1
- package/dist/package-manager.js +7 -2
- package/dist/package-manager.js.map +1 -1
- package/dist/pagination.d.ts.map +1 -1
- package/dist/parse-type.d.ts.map +1 -1
- package/dist/parse-type.js +4 -3
- package/dist/parse-type.js.map +1 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/primitives/arrays.d.ts.map +1 -1
- package/dist/primitives/dates.d.ts.map +1 -1
- package/dist/primitives/objects.d.ts.map +1 -1
- package/dist/primitives/objects.js +6 -2
- package/dist/primitives/objects.js.map +1 -1
- package/dist/primitives/strings.d.ts.map +1 -1
- package/dist/primitives/strings.js +10 -5
- package/dist/primitives/strings.js.map +1 -1
- package/dist/provider-factory.d.ts.map +1 -1
- package/dist/publication-filter.d.ts +1 -1
- package/dist/publication-filter.d.ts.map +1 -1
- package/dist/relations.d.ts.map +1 -1
- package/dist/route-serialization.d.ts.map +1 -1
- package/dist/sanitize/index.d.ts.map +1 -1
- package/dist/sanitize/index.js +4 -1
- package/dist/sanitize/index.js.map +1 -1
- package/dist/sanitize/index.mjs +4 -1
- package/dist/sanitize/index.mjs.map +1 -1
- package/dist/sanitize/sanitizers.d.ts +0 -1
- package/dist/sanitize/sanitizers.d.ts.map +1 -1
- package/dist/sanitize/visitors/remove-disallowed-fields.d.ts.map +1 -1
- package/dist/sanitize/visitors/remove-restricted-fields.d.ts.map +1 -1
- package/dist/sanitize/visitors/remove-restricted-relations.d.ts.map +1 -1
- package/dist/security.d.ts +1 -1
- package/dist/security.d.ts.map +1 -1
- package/dist/sessions.d.ts +35 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +46 -0
- package/dist/sessions.js.map +1 -0
- package/dist/sessions.mjs +42 -0
- package/dist/sessions.mjs.map +1 -0
- package/dist/set-creator-fields.d.ts.map +1 -1
- package/dist/sort-query.js +5 -1
- package/dist/sort-query.js.map +1 -1
- package/dist/template.d.ts.map +1 -1
- package/dist/traverse/factory.d.ts +108 -9
- package/dist/traverse/factory.d.ts.map +1 -1
- package/dist/traverse/query-fields.d.ts +0 -1
- package/dist/traverse/query-fields.d.ts.map +1 -1
- package/dist/traverse/query-filters.d.ts +0 -1
- package/dist/traverse/query-filters.d.ts.map +1 -1
- package/dist/traverse/query-populate.d.ts +0 -1
- package/dist/traverse/query-populate.d.ts.map +1 -1
- package/dist/traverse/query-populate.js +24 -0
- package/dist/traverse/query-populate.js.map +1 -1
- package/dist/traverse/query-populate.mjs +24 -0
- package/dist/traverse/query-populate.mjs.map +1 -1
- package/dist/traverse/query-sort.d.ts +0 -1
- package/dist/traverse/query-sort.d.ts.map +1 -1
- package/dist/traverse-entity.d.ts +0 -1
- package/dist/traverse-entity.d.ts.map +1 -1
- package/dist/traverse-entity.js +7 -0
- package/dist/traverse-entity.js.map +1 -1
- package/dist/traverse-entity.mjs +7 -0
- package/dist/traverse-entity.mjs.map +1 -1
- package/dist/types.d.ts +0 -25
- package/dist/types.d.ts.map +1 -1
- package/dist/user-agent.d.ts +23 -0
- package/dist/user-agent.d.ts.map +1 -0
- package/dist/user-agent.js +74 -0
- package/dist/user-agent.js.map +1 -0
- package/dist/user-agent.mjs +71 -0
- package/dist/user-agent.mjs.map +1 -0
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/utils.d.ts.map +1 -1
- package/dist/validate/validators.d.ts +4 -4
- package/dist/validate/validators.d.ts.map +1 -1
- package/dist/validate/validators.js +157 -0
- package/dist/validate/validators.js.map +1 -1
- package/dist/validate/validators.mjs +159 -2
- package/dist/validate/validators.mjs.map +1 -1
- package/dist/validate/visitors/throw-disallowed-fields.d.ts.map +1 -1
- package/dist/validate/visitors/throw-restricted-fields.d.ts.map +1 -1
- package/dist/validate/visitors/throw-restricted-relations.d.ts.map +1 -1
- package/dist/validation/route-validators/query-params.js +3 -2
- package/dist/validation/route-validators/query-params.js.map +1 -1
- package/dist/validation/utilities.d.ts +5 -5
- package/dist/validation/utilities.d.ts.map +1 -1
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +3 -2
- package/dist/validators.js.map +1 -1
- package/dist/yup.d.ts.map +1 -1
- package/dist/yup.js +10 -6
- package/dist/yup.js.map +1 -1
- package/dist/zod.d.ts +1 -1
- package/dist/zod.d.ts.map +1 -1
- package/dist/zod.js +3 -2
- package/dist/zod.js.map +1 -1
- package/package.json +9 -5
package/dist/async.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
type AnyFunc<TA extends any[] = any[], TR = any> = (...args: TA) => TR;
|
|
2
2
|
type MakeProm<T> = Promise<T extends PromiseLike<infer I> ? I : T>;
|
|
3
|
+
type PipedFunc<T extends AnyFunc[]> = PipeReturn<T> extends never ? never : (...args: Parameters<T[0]>) => PipeReturn<T>;
|
|
3
4
|
type PipeReturn<F extends AnyFunc[]> = MakeProm<ReturnType<F[0]>>;
|
|
4
|
-
export declare function pipe<T extends AnyFunc[]>(...fns: PipeReturn<T> extends never ? never : T):
|
|
5
|
+
export declare function pipe<T extends AnyFunc[]>(...fns: PipeReturn<T> extends never ? never : T): PipedFunc<T>;
|
|
5
6
|
export declare const map: (...args: any[]) => any;
|
|
6
7
|
export declare const reduce: (mixedArray: any[]) => <T>(iteratee: AnyFunc, initialValue?: T) => Promise<T | undefined>;
|
|
7
8
|
export {};
|
package/dist/async.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAGA,KAAK,OAAO,CAAC,EAAE,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;AAEvE,KAAK,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAGA,KAAK,OAAO,CAAC,EAAE,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;AAEvE,KAAK,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE,KAAK,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAChC,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;AAErF,KAAK,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElE,wBAAgB,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAWjF,SAAS,CAAC,CAAC,CAAC,CACnB;AAED,eAAO,MAAM,GAAG,yBAAc,CAAC;AAE/B,eAAO,MAAM,MAAM,GAChB,YAAY,GAAG,EAAE,MACX,CAAC,EAAE,UAAU,OAAO,EAAE,eAAe,CAAC,2BAM5C,CAAC"}
|
package/dist/async.js
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
var pMap = require('p-map');
|
|
4
4
|
var fp = require('lodash/fp');
|
|
5
5
|
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var pMap__default = /*#__PURE__*/_interopDefault(pMap);
|
|
9
|
+
|
|
6
10
|
function pipe(...fns) {
|
|
7
11
|
const [firstFn, ...fnRest] = fns;
|
|
8
12
|
return async (...args)=>{
|
|
@@ -13,7 +17,7 @@ function pipe(...fns) {
|
|
|
13
17
|
return res;
|
|
14
18
|
};
|
|
15
19
|
}
|
|
16
|
-
const map = fp.curry(
|
|
20
|
+
const map = fp.curry(pMap__default.default);
|
|
17
21
|
const reduce = (mixedArray)=>async (iteratee, initialValue)=>{
|
|
18
22
|
let acc = initialValue;
|
|
19
23
|
for(let i = 0; i < mixedArray.length; i += 1){
|
package/dist/async.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async.js","sources":["../src/async.ts"],"sourcesContent":["import pMap from 'p-map';\nimport { curry } from 'lodash/fp';\n\ntype AnyFunc<TA extends any[] = any[], TR = any> = (...args: TA) => TR;\n\ntype MakeProm<T> = Promise<T extends PromiseLike<infer I> ? I : T>;\n\ntype PipedFunc<T extends AnyFunc[]> =\n PipeReturn<T> extends never ? never : (...args: Parameters<T[0]>) => PipeReturn<T>;\n\ntype PipeReturn<F extends AnyFunc[]> = MakeProm<ReturnType<F[0]>>;\n\nexport function pipe<T extends AnyFunc[]>(...fns: PipeReturn<T> extends never ? never : T) {\n const [firstFn, ...fnRest] = fns;\n\n return (async (...args: any[]) => {\n let res = await firstFn.apply(firstFn, args);\n\n for (let i = 0; i < fnRest.length; i += 1) {\n res = await fnRest[i](res);\n }\n\n return res;\n }) as PipedFunc<T>;\n}\n\nexport const map = curry(pMap);\n\nexport const reduce =\n (mixedArray: any[]) =>\n async <T>(iteratee: AnyFunc, initialValue?: T) => {\n let acc = initialValue;\n for (let i = 0; i < mixedArray.length; i += 1) {\n acc = await iteratee(acc, await mixedArray[i], i);\n }\n return acc;\n };\n"],"names":["pipe","fns","firstFn","fnRest","args","res","apply","i","length","map","curry","pMap","reduce","mixedArray","iteratee","initialValue","acc"],"mappings":"
|
|
1
|
+
{"version":3,"file":"async.js","sources":["../src/async.ts"],"sourcesContent":["import pMap from 'p-map';\nimport { curry } from 'lodash/fp';\n\ntype AnyFunc<TA extends any[] = any[], TR = any> = (...args: TA) => TR;\n\ntype MakeProm<T> = Promise<T extends PromiseLike<infer I> ? I : T>;\n\ntype PipedFunc<T extends AnyFunc[]> =\n PipeReturn<T> extends never ? never : (...args: Parameters<T[0]>) => PipeReturn<T>;\n\ntype PipeReturn<F extends AnyFunc[]> = MakeProm<ReturnType<F[0]>>;\n\nexport function pipe<T extends AnyFunc[]>(...fns: PipeReturn<T> extends never ? never : T) {\n const [firstFn, ...fnRest] = fns;\n\n return (async (...args: any[]) => {\n let res = await firstFn.apply(firstFn, args);\n\n for (let i = 0; i < fnRest.length; i += 1) {\n res = await fnRest[i](res);\n }\n\n return res;\n }) as PipedFunc<T>;\n}\n\nexport const map = curry(pMap);\n\nexport const reduce =\n (mixedArray: any[]) =>\n async <T>(iteratee: AnyFunc, initialValue?: T) => {\n let acc = initialValue;\n for (let i = 0; i < mixedArray.length; i += 1) {\n acc = await iteratee(acc, await mixedArray[i], i);\n }\n return acc;\n };\n"],"names":["pipe","fns","firstFn","fnRest","args","res","apply","i","length","map","curry","pMap","reduce","mixedArray","iteratee","initialValue","acc"],"mappings":";;;;;;;;;AAYO,SAASA,IAAAA,CAA0B,GAAGC,GAA4C,EAAA;AACvF,IAAA,MAAM,CAACC,OAAAA,EAAS,GAAGC,MAAAA,CAAO,GAAGF,GAAAA;AAE7B,IAAA,OAAQ,OAAO,GAAGG,IAAAA,GAAAA;AAChB,QAAA,IAAIC,GAAAA,GAAM,MAAMH,OAAAA,CAAQI,KAAK,CAACJ,OAAAA,EAASE,IAAAA,CAAAA;QAEvC,IAAK,IAAIG,IAAI,CAAA,EAAGA,CAAAA,GAAIJ,OAAOK,MAAM,EAAED,KAAK,CAAA,CAAG;AACzCF,YAAAA,GAAAA,GAAM,MAAMF,MAAM,CAACI,CAAAA,CAAE,CAACF,GAAAA,CAAAA;AACxB,QAAA;QAEA,OAAOA,GAAAA;AACT,IAAA,CAAA;AACF;AAEO,MAAMI,GAAAA,GAAMC,QAAAA,CAAMC,qBAAAA;AAElB,MAAMC,MAAAA,GACX,CAACC,UAAAA,GACD,OAAUC,QAAAA,EAAmBC,YAAAA,GAAAA;AAC3B,QAAA,IAAIC,GAAAA,GAAMD,YAAAA;QACV,IAAK,IAAIR,IAAI,CAAA,EAAGA,CAAAA,GAAIM,WAAWL,MAAM,EAAED,KAAK,CAAA,CAAG;AAC7CS,YAAAA,GAAAA,GAAM,MAAMF,QAAAA,CAASE,GAAAA,EAAK,MAAMH,UAAU,CAACN,EAAE,EAAEA,CAAAA,CAAAA;AACjD,QAAA;QACA,OAAOS,GAAAA;IACT;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-api-router.d.ts","sourceRoot":"","sources":["../src/content-api-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,
|
|
1
|
+
{"version":3,"file":"content-api-router.d.ts","sourceRoot":"","sources":["../src/content-api-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GAAI,OAAO,EAAE,aAAa,MAAM,OAAO;;;CA2BhF,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,OAAO,IAAI,UAAU,CACvD,OAAO,6BAA6B,CAAC,OAAO,CAAC,CAC9C,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC"}
|
package/dist/content-types.d.ts
CHANGED
|
@@ -32,18 +32,18 @@ declare const getOptions: (model: Model) => {
|
|
|
32
32
|
} | ({
|
|
33
33
|
draftAndPublish: boolean;
|
|
34
34
|
} & {
|
|
35
|
-
populateCreatorFields?: boolean
|
|
36
|
-
draftAndPublish?: boolean
|
|
35
|
+
populateCreatorFields?: boolean;
|
|
36
|
+
draftAndPublish?: boolean;
|
|
37
37
|
});
|
|
38
38
|
declare const hasDraftAndPublish: (model: Model) => boolean;
|
|
39
39
|
declare const hasFirstPublishedAtField: (model: Model) => any;
|
|
40
40
|
declare const isDraft: <T extends object>(data: T, model: Model) => boolean;
|
|
41
41
|
declare const isSchema: (data: unknown) => data is Model;
|
|
42
42
|
declare const isComponentSchema: (data: unknown) => data is Model & {
|
|
43
|
-
modelType:
|
|
43
|
+
modelType: "component";
|
|
44
44
|
};
|
|
45
45
|
declare const isContentTypeSchema: (data: unknown) => data is Model & {
|
|
46
|
-
modelType:
|
|
46
|
+
modelType: "contentType";
|
|
47
47
|
};
|
|
48
48
|
declare const isSingleType: ({ kind }: {
|
|
49
49
|
kind?: string | undefined;
|
|
@@ -77,6 +77,6 @@ declare const isTypedAttribute: (attribute: Attribute, type: string) => boolean;
|
|
|
77
77
|
* @param {object} contentType
|
|
78
78
|
* @returns {string}
|
|
79
79
|
*/
|
|
80
|
-
declare const getContentTypeRoutePrefix: (contentType: WithRequired<Model,
|
|
80
|
+
declare const getContentTypeRoutePrefix: (contentType: WithRequired<Model, "info">) => string;
|
|
81
81
|
export { isSchema, isContentTypeSchema, isComponentSchema, isScalarAttribute, isMediaAttribute, isRelationalAttribute, hasRelationReordering, isComponentAttribute, isDynamicZoneAttribute, isMorphToRelationalAttribute, isTypedAttribute, getPrivateAttributes, isPrivateAttribute, constants, ID_FIELDS, MORPH_TO_KEYS, DYNAMIC_ZONE_KEYS, RELATION_OPERATION_KEYS, getNonWritableAttributes, getComponentAttributes, getMediaAttributes, getScalarAttributes, getRelationalAttributes, getWritableAttributes, isWritableAttribute, getNonVisibleAttributes, getVisibleAttributes, getTimestamps, getCreatorFields, isVisibleAttribute, getOptions, isDraft, hasDraftAndPublish, hasFirstPublishedAtField, isSingleType, isCollectionType, isKind, getContentTypeRoutePrefix, getDoesAttributeRequireValidation, };
|
|
82
82
|
//# sourceMappingURL=content-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-types.d.ts","sourceRoot":"","sources":["../src/content-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,IAAI,EACJ,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACb,MAAM,SAAS,CAAC;AAgBjB,QAAA,MAAM,SAAS;;;;;;;;;;;CAWd,CAAC;AAEF,6GAA6G;AAC7G,QAAA,MAAM,SAAS,EAAE,MAAM,EAAqC,CAAC;AAC7D,gEAAgE;AAChE,QAAA,MAAM,aAAa,EAAE,MAAM,EAAe,CAAC;AAC3C,2EAA2E;AAC3E,QAAA,MAAM,iBAAiB,EAAE,MAAM,EAAoB,CAAC;AACpD,mEAAmE;AACnE,QAAA,MAAM,uBAAuB,EAAE,MAAM,EAAgD,CAAC;AAEtF,QAAA,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"content-types.d.ts","sourceRoot":"","sources":["../src/content-types.ts"],"names":[],"mappings":"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"}
|
package/dist/content-types.js
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
var _ = require('lodash');
|
|
4
4
|
var fp = require('lodash/fp');
|
|
5
5
|
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var ___default = /*#__PURE__*/_interopDefault(_);
|
|
9
|
+
|
|
6
10
|
const SINGLE_TYPE = 'singleType';
|
|
7
11
|
const COLLECTION_TYPE = 'collectionType';
|
|
8
12
|
const ID_ATTRIBUTE = 'id';
|
|
@@ -63,8 +67,8 @@ const getCreatorFields = (model)=>{
|
|
|
63
67
|
};
|
|
64
68
|
const getNonWritableAttributes = (model)=>{
|
|
65
69
|
if (!model) return [];
|
|
66
|
-
const nonWritableAttributes =
|
|
67
|
-
return
|
|
70
|
+
const nonWritableAttributes = ___default.default.reduce(model.attributes, (acc, attr, attrName)=>attr.writable === false ? acc.concat(attrName) : acc, []);
|
|
71
|
+
return ___default.default.uniq([
|
|
68
72
|
ID_ATTRIBUTE,
|
|
69
73
|
DOC_ID_ATTRIBUTE,
|
|
70
74
|
...getTimestamps(model),
|
|
@@ -73,14 +77,14 @@ const getNonWritableAttributes = (model)=>{
|
|
|
73
77
|
};
|
|
74
78
|
const getWritableAttributes = (model)=>{
|
|
75
79
|
if (!model) return [];
|
|
76
|
-
return
|
|
80
|
+
return ___default.default.difference(Object.keys(model.attributes), getNonWritableAttributes(model));
|
|
77
81
|
};
|
|
78
82
|
const isWritableAttribute = (model, attributeName)=>{
|
|
79
83
|
return getWritableAttributes(model).includes(attributeName);
|
|
80
84
|
};
|
|
81
85
|
const getNonVisibleAttributes = (model)=>{
|
|
82
|
-
const nonVisibleAttributes =
|
|
83
|
-
return
|
|
86
|
+
const nonVisibleAttributes = ___default.default.reduce(model.attributes, (acc, attr, attrName)=>attr.visible === false ? acc.concat(attrName) : acc, []);
|
|
87
|
+
return ___default.default.uniq([
|
|
84
88
|
ID_ATTRIBUTE,
|
|
85
89
|
DOC_ID_ATTRIBUTE,
|
|
86
90
|
PUBLISHED_AT_ATTRIBUTE,
|
|
@@ -89,17 +93,17 @@ const getNonVisibleAttributes = (model)=>{
|
|
|
89
93
|
]);
|
|
90
94
|
};
|
|
91
95
|
const getVisibleAttributes = (model)=>{
|
|
92
|
-
return
|
|
96
|
+
return ___default.default.difference(___default.default.keys(model.attributes), getNonVisibleAttributes(model));
|
|
93
97
|
};
|
|
94
98
|
const isVisibleAttribute = (model, attributeName)=>{
|
|
95
99
|
return getVisibleAttributes(model).includes(attributeName);
|
|
96
100
|
};
|
|
97
|
-
const getOptions = (model)=>
|
|
101
|
+
const getOptions = (model)=>___default.default.assign({
|
|
98
102
|
draftAndPublish: false
|
|
99
|
-
},
|
|
100
|
-
const hasDraftAndPublish = (model)=>
|
|
103
|
+
}, ___default.default.get(model, 'options', {}));
|
|
104
|
+
const hasDraftAndPublish = (model)=>___default.default.get(model, 'options.draftAndPublish', false) === true;
|
|
101
105
|
const hasFirstPublishedAtField = (model)=>strapi.config.get('features.future.experimental_firstPublishedAt', false) && hasDraftAndPublish(model);
|
|
102
|
-
const isDraft = (data, model)=>hasDraftAndPublish(model) &&
|
|
106
|
+
const isDraft = (data, model)=>hasDraftAndPublish(model) && ___default.default.get(data, PUBLISHED_AT_ATTRIBUTE) === null;
|
|
103
107
|
const isSchema = (data)=>{
|
|
104
108
|
return typeof data === 'object' && data !== null && 'modelType' in data && typeof data.modelType === 'string' && [
|
|
105
109
|
'component',
|
|
@@ -117,7 +121,7 @@ const isCollectionType = ({ kind = COLLECTION_TYPE })=>kind === COLLECTION_TYPE;
|
|
|
117
121
|
const isKind = (kind)=>(model)=>model.kind === kind;
|
|
118
122
|
const getStoredPrivateAttributes = (model)=>fp.union(strapi?.config?.get('api.responses.privateAttributes', []) ?? [], fp.getOr([], 'options.privateAttributes', model));
|
|
119
123
|
const getPrivateAttributes = (model)=>{
|
|
120
|
-
return
|
|
124
|
+
return ___default.default.union(getStoredPrivateAttributes(model), ___default.default.keys(___default.default.pickBy(model.attributes, (attr)=>!!attr.private)));
|
|
121
125
|
};
|
|
122
126
|
const isPrivateAttribute = (model, attributeName)=>{
|
|
123
127
|
if (model?.attributes?.[attributeName]?.private === true) {
|
|
@@ -153,25 +157,25 @@ const isMorphToRelationalAttribute = (attribute)=>{
|
|
|
153
157
|
return !!attribute && isRelationalAttribute(attribute) && attribute.relation?.startsWith?.('morphTo');
|
|
154
158
|
};
|
|
155
159
|
const getComponentAttributes = (schema)=>{
|
|
156
|
-
return
|
|
160
|
+
return ___default.default.reduce(schema.attributes, (acc, attr, attrName)=>{
|
|
157
161
|
if (isComponentAttribute(attr)) acc.push(attrName);
|
|
158
162
|
return acc;
|
|
159
163
|
}, []);
|
|
160
164
|
};
|
|
161
165
|
const getMediaAttributes = (schema)=>{
|
|
162
|
-
return
|
|
166
|
+
return ___default.default.reduce(schema.attributes, (acc, attr, attrName)=>{
|
|
163
167
|
if (isMediaAttribute(attr)) acc.push(attrName);
|
|
164
168
|
return acc;
|
|
165
169
|
}, []);
|
|
166
170
|
};
|
|
167
171
|
const getScalarAttributes = (schema)=>{
|
|
168
|
-
return
|
|
172
|
+
return ___default.default.reduce(schema.attributes, (acc, attr, attrName)=>{
|
|
169
173
|
if (isScalarAttribute(attr)) acc.push(attrName);
|
|
170
174
|
return acc;
|
|
171
175
|
}, []);
|
|
172
176
|
};
|
|
173
177
|
const getRelationalAttributes = (schema)=>{
|
|
174
|
-
return
|
|
178
|
+
return ___default.default.reduce(schema.attributes, (acc, attr, attrName)=>{
|
|
175
179
|
if (isRelationalAttribute(attr)) acc.push(attrName);
|
|
176
180
|
return acc;
|
|
177
181
|
}, []);
|
|
@@ -181,14 +185,14 @@ const getRelationalAttributes = (schema)=>{
|
|
|
181
185
|
* @param {object} attribute
|
|
182
186
|
* @param {string} type
|
|
183
187
|
*/ const isTypedAttribute = (attribute, type)=>{
|
|
184
|
-
return
|
|
188
|
+
return ___default.default.has(attribute, 'type') && attribute.type === type;
|
|
185
189
|
};
|
|
186
190
|
/**
|
|
187
191
|
* Returns a route prefix for a contentType
|
|
188
192
|
* @param {object} contentType
|
|
189
193
|
* @returns {string}
|
|
190
194
|
*/ const getContentTypeRoutePrefix = (contentType)=>{
|
|
191
|
-
return isSingleType(contentType) ?
|
|
195
|
+
return isSingleType(contentType) ? ___default.default.kebabCase(contentType.info.singularName) : ___default.default.kebabCase(contentType.info.pluralName);
|
|
192
196
|
};
|
|
193
197
|
|
|
194
198
|
exports.DYNAMIC_ZONE_KEYS = DYNAMIC_ZONE_KEYS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-types.js","sources":["../src/content-types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { has, getOr, union } from 'lodash/fp';\nimport type {\n Model,\n Kind,\n Attribute,\n RelationalAttribute,\n ComponentAttribute,\n DynamicZoneAttribute,\n WithRequired,\n} from './types';\n\nconst SINGLE_TYPE = 'singleType';\nconst COLLECTION_TYPE = 'collectionType';\n\nconst ID_ATTRIBUTE = 'id';\nconst DOC_ID_ATTRIBUTE = 'documentId';\n\nconst PUBLISHED_AT_ATTRIBUTE = 'publishedAt';\nconst FIRST_PUBLISHED_AT_ATTRIBUTE = 'firstPublishedAt';\nconst CREATED_BY_ATTRIBUTE = 'createdBy';\nconst UPDATED_BY_ATTRIBUTE = 'updatedBy';\n\nconst CREATED_AT_ATTRIBUTE = 'createdAt';\nconst UPDATED_AT_ATTRIBUTE = 'updatedAt';\n\nconst constants = {\n ID_ATTRIBUTE,\n DOC_ID_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n FIRST_PUBLISHED_AT_ATTRIBUTE,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n CREATED_AT_ATTRIBUTE,\n UPDATED_AT_ATTRIBUTE,\n SINGLE_TYPE,\n COLLECTION_TYPE,\n};\n\n/** ID-like fields accepted at root level and on relations/media/components (validate/sanitize traversal). */\nconst ID_FIELDS: string[] = [ID_ATTRIBUTE, DOC_ID_ATTRIBUTE];\n/** Keys accepted on morphTo relation payloads (e.g. __type). */\nconst MORPH_TO_KEYS: string[] = ['__type'];\n/** Keys accepted on dynamic zone component payloads (e.g. __component). */\nconst DYNAMIC_ZONE_KEYS: string[] = ['__component'];\n/** Relation operation keys (connect, disconnect, set, options). */\nconst RELATION_OPERATION_KEYS: string[] = ['connect', 'disconnect', 'set', 'options'];\n\nconst getTimestamps = (model: Model) => {\n const attributes: string[] = [];\n\n if (has(CREATED_AT_ATTRIBUTE, model.attributes)) {\n attributes.push(CREATED_AT_ATTRIBUTE);\n }\n\n if (has(UPDATED_AT_ATTRIBUTE, model.attributes)) {\n attributes.push(UPDATED_AT_ATTRIBUTE);\n }\n\n return attributes;\n};\n\nconst getCreatorFields = (model: Model) => {\n const attributes: string[] = [];\n\n if (has(CREATED_BY_ATTRIBUTE, model.attributes)) {\n attributes.push(CREATED_BY_ATTRIBUTE);\n }\n\n if (has(UPDATED_BY_ATTRIBUTE, model.attributes)) {\n attributes.push(UPDATED_BY_ATTRIBUTE);\n }\n\n return attributes;\n};\n\nconst getNonWritableAttributes = (model: Model) => {\n if (!model) return [];\n\n const nonWritableAttributes = _.reduce(\n model.attributes,\n (acc, attr, attrName) => (attr.writable === false ? acc.concat(attrName) : acc),\n [] as string[]\n );\n\n return _.uniq([\n ID_ATTRIBUTE,\n DOC_ID_ATTRIBUTE,\n ...getTimestamps(model),\n ...nonWritableAttributes,\n ]);\n};\n\nconst getWritableAttributes = (model: Model) => {\n if (!model) return [];\n\n return _.difference(Object.keys(model.attributes), getNonWritableAttributes(model));\n};\n\nconst isWritableAttribute = (model: Model, attributeName: string) => {\n return getWritableAttributes(model).includes(attributeName);\n};\n\nconst getNonVisibleAttributes = (model: Model) => {\n const nonVisibleAttributes = _.reduce(\n model.attributes,\n (acc, attr, attrName) => (attr.visible === false ? acc.concat(attrName) : acc),\n [] as string[]\n );\n\n return _.uniq([\n ID_ATTRIBUTE,\n DOC_ID_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n ...getTimestamps(model),\n ...nonVisibleAttributes,\n ]);\n};\n\nconst getVisibleAttributes = (model: Model) => {\n return _.difference(_.keys(model.attributes), getNonVisibleAttributes(model));\n};\n\nconst isVisibleAttribute = (model: Model, attributeName: string) => {\n return getVisibleAttributes(model).includes(attributeName);\n};\n\nconst getOptions = (model: Model) =>\n _.assign({ draftAndPublish: false }, _.get(model, 'options', {}));\n\nconst hasDraftAndPublish = (model: Model) =>\n _.get(model, 'options.draftAndPublish', false) === true;\n\nconst hasFirstPublishedAtField = (model: Model) =>\n strapi.config.get('features.future.experimental_firstPublishedAt', false) &&\n hasDraftAndPublish(model);\n\nconst isDraft = <T extends object>(data: T, model: Model) =>\n hasDraftAndPublish(model) && _.get(data, PUBLISHED_AT_ATTRIBUTE) === null;\n\nconst isSchema = (data: unknown): data is Model => {\n return (\n typeof data === 'object' &&\n data !== null &&\n 'modelType' in data &&\n typeof data.modelType === 'string' &&\n ['component', 'contentType'].includes(data.modelType)\n );\n};\n\nconst isComponentSchema = (data: unknown): data is Model & { modelType: 'component' } => {\n return isSchema(data) && data.modelType === 'component';\n};\n\nconst isContentTypeSchema = (data: unknown): data is Model & { modelType: 'contentType' } => {\n return isSchema(data) && data.modelType === 'contentType';\n};\n\nconst isSingleType = ({ kind = COLLECTION_TYPE }) => kind === SINGLE_TYPE;\nconst isCollectionType = ({ kind = COLLECTION_TYPE }) => kind === COLLECTION_TYPE;\nconst isKind = (kind: Kind) => (model: Model) => model.kind === kind;\n\nconst getStoredPrivateAttributes = (model: Model) =>\n union(\n (strapi?.config?.get('api.responses.privateAttributes', []) ?? []) as Array<string>,\n getOr([], 'options.privateAttributes', model)\n );\n\nconst getPrivateAttributes = (model: Model) => {\n return _.union(\n getStoredPrivateAttributes(model),\n _.keys(_.pickBy(model.attributes, (attr) => !!attr.private))\n );\n};\n\nconst isPrivateAttribute = (model: Model, attributeName: string) => {\n if (model?.attributes?.[attributeName]?.private === true) {\n return true;\n }\n return getStoredPrivateAttributes(model).includes(attributeName);\n};\n\nconst isScalarAttribute = (attribute?: Attribute) => {\n return attribute && !['media', 'component', 'relation', 'dynamiczone'].includes(attribute.type);\n};\n\nconst getDoesAttributeRequireValidation = (attribute: Attribute) => {\n return (\n attribute.required ||\n attribute.unique ||\n Object.prototype.hasOwnProperty.call(attribute, 'max') ||\n Object.prototype.hasOwnProperty.call(attribute, 'min') ||\n Object.prototype.hasOwnProperty.call(attribute, 'maxLength') ||\n Object.prototype.hasOwnProperty.call(attribute, 'minLength')\n );\n};\nconst isMediaAttribute = (attribute?: Attribute) => attribute?.type === 'media';\nconst isRelationalAttribute = (attribute?: Attribute): attribute is RelationalAttribute =>\n attribute?.type === 'relation';\n\nconst HAS_RELATION_REORDERING = ['manyToMany', 'manyToOne', 'oneToMany'];\nconst hasRelationReordering = (attribute?: Attribute) =>\n isRelationalAttribute(attribute) && HAS_RELATION_REORDERING.includes(attribute.relation);\n\nconst isComponentAttribute = (\n attribute?: Attribute\n): attribute is ComponentAttribute | DynamicZoneAttribute =>\n !!attribute && ['component', 'dynamiczone'].includes(attribute.type);\n\nconst isDynamicZoneAttribute = (attribute?: Attribute): attribute is DynamicZoneAttribute =>\n !!attribute && attribute.type === 'dynamiczone';\nconst isMorphToRelationalAttribute = (attribute?: Attribute) => {\n return (\n !!attribute && isRelationalAttribute(attribute) && attribute.relation?.startsWith?.('morphTo')\n );\n};\n\nconst getComponentAttributes = (schema: Model) => {\n return _.reduce(\n schema.attributes,\n (acc, attr, attrName) => {\n if (isComponentAttribute(attr)) acc.push(attrName);\n return acc;\n },\n [] as string[]\n );\n};\n\nconst getMediaAttributes = (schema: Model) => {\n return _.reduce(\n schema.attributes,\n (acc, attr, attrName) => {\n if (isMediaAttribute(attr)) acc.push(attrName);\n return acc;\n },\n [] as string[]\n );\n};\n\nconst getScalarAttributes = (schema: Model) => {\n return _.reduce(\n schema.attributes,\n (acc, attr, attrName) => {\n if (isScalarAttribute(attr)) acc.push(attrName);\n return acc;\n },\n [] as string[]\n );\n};\n\nconst getRelationalAttributes = (schema: Model) => {\n return _.reduce(\n schema.attributes,\n (acc, attr, attrName) => {\n if (isRelationalAttribute(attr)) acc.push(attrName);\n return acc;\n },\n [] as string[]\n );\n};\n\n/**\n * Checks if an attribute is of type `type`\n * @param {object} attribute\n * @param {string} type\n */\nconst isTypedAttribute = (attribute: Attribute, type: string) => {\n return _.has(attribute, 'type') && attribute.type === type;\n};\n\n/**\n * Returns a route prefix for a contentType\n * @param {object} contentType\n * @returns {string}\n */\nconst getContentTypeRoutePrefix = (contentType: WithRequired<Model, 'info'>) => {\n return isSingleType(contentType)\n ? _.kebabCase(contentType.info.singularName)\n : _.kebabCase(contentType.info.pluralName);\n};\n\nexport {\n isSchema,\n isContentTypeSchema,\n isComponentSchema,\n isScalarAttribute,\n isMediaAttribute,\n isRelationalAttribute,\n hasRelationReordering,\n isComponentAttribute,\n isDynamicZoneAttribute,\n isMorphToRelationalAttribute,\n isTypedAttribute,\n getPrivateAttributes,\n isPrivateAttribute,\n constants,\n ID_FIELDS,\n MORPH_TO_KEYS,\n DYNAMIC_ZONE_KEYS,\n RELATION_OPERATION_KEYS,\n getNonWritableAttributes,\n getComponentAttributes,\n getMediaAttributes,\n getScalarAttributes,\n getRelationalAttributes,\n getWritableAttributes,\n isWritableAttribute,\n getNonVisibleAttributes,\n getVisibleAttributes,\n getTimestamps,\n getCreatorFields,\n isVisibleAttribute,\n getOptions,\n isDraft,\n hasDraftAndPublish,\n hasFirstPublishedAtField,\n isSingleType,\n isCollectionType,\n isKind,\n getContentTypeRoutePrefix,\n getDoesAttributeRequireValidation,\n};\n"],"names":["SINGLE_TYPE","COLLECTION_TYPE","ID_ATTRIBUTE","DOC_ID_ATTRIBUTE","PUBLISHED_AT_ATTRIBUTE","FIRST_PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","CREATED_AT_ATTRIBUTE","UPDATED_AT_ATTRIBUTE","constants","ID_FIELDS","MORPH_TO_KEYS","DYNAMIC_ZONE_KEYS","RELATION_OPERATION_KEYS","getTimestamps","model","attributes","has","push","getCreatorFields","getNonWritableAttributes","nonWritableAttributes","_","reduce","acc","attr","attrName","writable","concat","uniq","getWritableAttributes","difference","Object","keys","isWritableAttribute","attributeName","includes","getNonVisibleAttributes","nonVisibleAttributes","visible","getVisibleAttributes","isVisibleAttribute","getOptions","assign","draftAndPublish","get","hasDraftAndPublish","hasFirstPublishedAtField","strapi","config","isDraft","data","isSchema","modelType","isComponentSchema","isContentTypeSchema","isSingleType","kind","isCollectionType","isKind","getStoredPrivateAttributes","union","getOr","getPrivateAttributes","pickBy","private","isPrivateAttribute","isScalarAttribute","attribute","type","getDoesAttributeRequireValidation","required","unique","prototype","hasOwnProperty","call","isMediaAttribute","isRelationalAttribute","HAS_RELATION_REORDERING","hasRelationReordering","relation","isComponentAttribute","isDynamicZoneAttribute","isMorphToRelationalAttribute","startsWith","getComponentAttributes","schema","getMediaAttributes","getScalarAttributes","getRelationalAttributes","isTypedAttribute","getContentTypeRoutePrefix","contentType","kebabCase","info","singularName","pluralName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content-types.js","sources":["../src/content-types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { has, getOr, union } from 'lodash/fp';\nimport type {\n Model,\n Kind,\n Attribute,\n RelationalAttribute,\n ComponentAttribute,\n DynamicZoneAttribute,\n WithRequired,\n} from './types';\n\nconst SINGLE_TYPE = 'singleType';\nconst COLLECTION_TYPE = 'collectionType';\n\nconst ID_ATTRIBUTE = 'id';\nconst DOC_ID_ATTRIBUTE = 'documentId';\n\nconst PUBLISHED_AT_ATTRIBUTE = 'publishedAt';\nconst FIRST_PUBLISHED_AT_ATTRIBUTE = 'firstPublishedAt';\nconst CREATED_BY_ATTRIBUTE = 'createdBy';\nconst UPDATED_BY_ATTRIBUTE = 'updatedBy';\n\nconst CREATED_AT_ATTRIBUTE = 'createdAt';\nconst UPDATED_AT_ATTRIBUTE = 'updatedAt';\n\nconst constants = {\n ID_ATTRIBUTE,\n DOC_ID_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n FIRST_PUBLISHED_AT_ATTRIBUTE,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n CREATED_AT_ATTRIBUTE,\n UPDATED_AT_ATTRIBUTE,\n SINGLE_TYPE,\n COLLECTION_TYPE,\n};\n\n/** ID-like fields accepted at root level and on relations/media/components (validate/sanitize traversal). */\nconst ID_FIELDS: string[] = [ID_ATTRIBUTE, DOC_ID_ATTRIBUTE];\n/** Keys accepted on morphTo relation payloads (e.g. __type). */\nconst MORPH_TO_KEYS: string[] = ['__type'];\n/** Keys accepted on dynamic zone component payloads (e.g. __component). */\nconst DYNAMIC_ZONE_KEYS: string[] = ['__component'];\n/** Relation operation keys (connect, disconnect, set, options). */\nconst RELATION_OPERATION_KEYS: string[] = ['connect', 'disconnect', 'set', 'options'];\n\nconst getTimestamps = (model: Model) => {\n const attributes: string[] = [];\n\n if (has(CREATED_AT_ATTRIBUTE, model.attributes)) {\n attributes.push(CREATED_AT_ATTRIBUTE);\n }\n\n if (has(UPDATED_AT_ATTRIBUTE, model.attributes)) {\n attributes.push(UPDATED_AT_ATTRIBUTE);\n }\n\n return attributes;\n};\n\nconst getCreatorFields = (model: Model) => {\n const attributes: string[] = [];\n\n if (has(CREATED_BY_ATTRIBUTE, model.attributes)) {\n attributes.push(CREATED_BY_ATTRIBUTE);\n }\n\n if (has(UPDATED_BY_ATTRIBUTE, model.attributes)) {\n attributes.push(UPDATED_BY_ATTRIBUTE);\n }\n\n return attributes;\n};\n\nconst getNonWritableAttributes = (model: Model) => {\n if (!model) return [];\n\n const nonWritableAttributes = _.reduce(\n model.attributes,\n (acc, attr, attrName) => (attr.writable === false ? acc.concat(attrName) : acc),\n [] as string[]\n );\n\n return _.uniq([\n ID_ATTRIBUTE,\n DOC_ID_ATTRIBUTE,\n ...getTimestamps(model),\n ...nonWritableAttributes,\n ]);\n};\n\nconst getWritableAttributes = (model: Model) => {\n if (!model) return [];\n\n return _.difference(Object.keys(model.attributes), getNonWritableAttributes(model));\n};\n\nconst isWritableAttribute = (model: Model, attributeName: string) => {\n return getWritableAttributes(model).includes(attributeName);\n};\n\nconst getNonVisibleAttributes = (model: Model) => {\n const nonVisibleAttributes = _.reduce(\n model.attributes,\n (acc, attr, attrName) => (attr.visible === false ? acc.concat(attrName) : acc),\n [] as string[]\n );\n\n return _.uniq([\n ID_ATTRIBUTE,\n DOC_ID_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n ...getTimestamps(model),\n ...nonVisibleAttributes,\n ]);\n};\n\nconst getVisibleAttributes = (model: Model) => {\n return _.difference(_.keys(model.attributes), getNonVisibleAttributes(model));\n};\n\nconst isVisibleAttribute = (model: Model, attributeName: string) => {\n return getVisibleAttributes(model).includes(attributeName);\n};\n\nconst getOptions = (model: Model) =>\n _.assign({ draftAndPublish: false }, _.get(model, 'options', {}));\n\nconst hasDraftAndPublish = (model: Model) =>\n _.get(model, 'options.draftAndPublish', false) === true;\n\nconst hasFirstPublishedAtField = (model: Model) =>\n strapi.config.get('features.future.experimental_firstPublishedAt', false) &&\n hasDraftAndPublish(model);\n\nconst isDraft = <T extends object>(data: T, model: Model) =>\n hasDraftAndPublish(model) && _.get(data, PUBLISHED_AT_ATTRIBUTE) === null;\n\nconst isSchema = (data: unknown): data is Model => {\n return (\n typeof data === 'object' &&\n data !== null &&\n 'modelType' in data &&\n typeof data.modelType === 'string' &&\n ['component', 'contentType'].includes(data.modelType)\n );\n};\n\nconst isComponentSchema = (data: unknown): data is Model & { modelType: 'component' } => {\n return isSchema(data) && data.modelType === 'component';\n};\n\nconst isContentTypeSchema = (data: unknown): data is Model & { modelType: 'contentType' } => {\n return isSchema(data) && data.modelType === 'contentType';\n};\n\nconst isSingleType = ({ kind = COLLECTION_TYPE }) => kind === SINGLE_TYPE;\nconst isCollectionType = ({ kind = COLLECTION_TYPE }) => kind === COLLECTION_TYPE;\nconst isKind = (kind: Kind) => (model: Model) => model.kind === kind;\n\nconst getStoredPrivateAttributes = (model: Model) =>\n union(\n (strapi?.config?.get('api.responses.privateAttributes', []) ?? []) as Array<string>,\n getOr([], 'options.privateAttributes', model)\n );\n\nconst getPrivateAttributes = (model: Model) => {\n return _.union(\n getStoredPrivateAttributes(model),\n _.keys(_.pickBy(model.attributes, (attr) => !!attr.private))\n );\n};\n\nconst isPrivateAttribute = (model: Model, attributeName: string) => {\n if (model?.attributes?.[attributeName]?.private === true) {\n return true;\n }\n return getStoredPrivateAttributes(model).includes(attributeName);\n};\n\nconst isScalarAttribute = (attribute?: Attribute) => {\n return attribute && !['media', 'component', 'relation', 'dynamiczone'].includes(attribute.type);\n};\n\nconst getDoesAttributeRequireValidation = (attribute: Attribute) => {\n return (\n attribute.required ||\n attribute.unique ||\n Object.prototype.hasOwnProperty.call(attribute, 'max') ||\n Object.prototype.hasOwnProperty.call(attribute, 'min') ||\n Object.prototype.hasOwnProperty.call(attribute, 'maxLength') ||\n Object.prototype.hasOwnProperty.call(attribute, 'minLength')\n );\n};\nconst isMediaAttribute = (attribute?: Attribute) => attribute?.type === 'media';\nconst isRelationalAttribute = (attribute?: Attribute): attribute is RelationalAttribute =>\n attribute?.type === 'relation';\n\nconst HAS_RELATION_REORDERING = ['manyToMany', 'manyToOne', 'oneToMany'];\nconst hasRelationReordering = (attribute?: Attribute) =>\n isRelationalAttribute(attribute) && HAS_RELATION_REORDERING.includes(attribute.relation);\n\nconst isComponentAttribute = (\n attribute?: Attribute\n): attribute is ComponentAttribute | DynamicZoneAttribute =>\n !!attribute && ['component', 'dynamiczone'].includes(attribute.type);\n\nconst isDynamicZoneAttribute = (attribute?: Attribute): attribute is DynamicZoneAttribute =>\n !!attribute && attribute.type === 'dynamiczone';\nconst isMorphToRelationalAttribute = (attribute?: Attribute) => {\n return (\n !!attribute && isRelationalAttribute(attribute) && attribute.relation?.startsWith?.('morphTo')\n );\n};\n\nconst getComponentAttributes = (schema: Model) => {\n return _.reduce(\n schema.attributes,\n (acc, attr, attrName) => {\n if (isComponentAttribute(attr)) acc.push(attrName);\n return acc;\n },\n [] as string[]\n );\n};\n\nconst getMediaAttributes = (schema: Model) => {\n return _.reduce(\n schema.attributes,\n (acc, attr, attrName) => {\n if (isMediaAttribute(attr)) acc.push(attrName);\n return acc;\n },\n [] as string[]\n );\n};\n\nconst getScalarAttributes = (schema: Model) => {\n return _.reduce(\n schema.attributes,\n (acc, attr, attrName) => {\n if (isScalarAttribute(attr)) acc.push(attrName);\n return acc;\n },\n [] as string[]\n );\n};\n\nconst getRelationalAttributes = (schema: Model) => {\n return _.reduce(\n schema.attributes,\n (acc, attr, attrName) => {\n if (isRelationalAttribute(attr)) acc.push(attrName);\n return acc;\n },\n [] as string[]\n );\n};\n\n/**\n * Checks if an attribute is of type `type`\n * @param {object} attribute\n * @param {string} type\n */\nconst isTypedAttribute = (attribute: Attribute, type: string) => {\n return _.has(attribute, 'type') && attribute.type === type;\n};\n\n/**\n * Returns a route prefix for a contentType\n * @param {object} contentType\n * @returns {string}\n */\nconst getContentTypeRoutePrefix = (contentType: WithRequired<Model, 'info'>) => {\n return isSingleType(contentType)\n ? _.kebabCase(contentType.info.singularName)\n : _.kebabCase(contentType.info.pluralName);\n};\n\nexport {\n isSchema,\n isContentTypeSchema,\n isComponentSchema,\n isScalarAttribute,\n isMediaAttribute,\n isRelationalAttribute,\n hasRelationReordering,\n isComponentAttribute,\n isDynamicZoneAttribute,\n isMorphToRelationalAttribute,\n isTypedAttribute,\n getPrivateAttributes,\n isPrivateAttribute,\n constants,\n ID_FIELDS,\n MORPH_TO_KEYS,\n DYNAMIC_ZONE_KEYS,\n RELATION_OPERATION_KEYS,\n getNonWritableAttributes,\n getComponentAttributes,\n getMediaAttributes,\n getScalarAttributes,\n getRelationalAttributes,\n getWritableAttributes,\n isWritableAttribute,\n getNonVisibleAttributes,\n getVisibleAttributes,\n getTimestamps,\n getCreatorFields,\n isVisibleAttribute,\n getOptions,\n isDraft,\n hasDraftAndPublish,\n hasFirstPublishedAtField,\n isSingleType,\n isCollectionType,\n isKind,\n getContentTypeRoutePrefix,\n getDoesAttributeRequireValidation,\n};\n"],"names":["SINGLE_TYPE","COLLECTION_TYPE","ID_ATTRIBUTE","DOC_ID_ATTRIBUTE","PUBLISHED_AT_ATTRIBUTE","FIRST_PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","CREATED_AT_ATTRIBUTE","UPDATED_AT_ATTRIBUTE","constants","ID_FIELDS","MORPH_TO_KEYS","DYNAMIC_ZONE_KEYS","RELATION_OPERATION_KEYS","getTimestamps","model","attributes","has","push","getCreatorFields","getNonWritableAttributes","nonWritableAttributes","_","reduce","acc","attr","attrName","writable","concat","uniq","getWritableAttributes","difference","Object","keys","isWritableAttribute","attributeName","includes","getNonVisibleAttributes","nonVisibleAttributes","visible","getVisibleAttributes","isVisibleAttribute","getOptions","assign","draftAndPublish","get","hasDraftAndPublish","hasFirstPublishedAtField","strapi","config","isDraft","data","isSchema","modelType","isComponentSchema","isContentTypeSchema","isSingleType","kind","isCollectionType","isKind","getStoredPrivateAttributes","union","getOr","getPrivateAttributes","pickBy","private","isPrivateAttribute","isScalarAttribute","attribute","type","getDoesAttributeRequireValidation","required","unique","prototype","hasOwnProperty","call","isMediaAttribute","isRelationalAttribute","HAS_RELATION_REORDERING","hasRelationReordering","relation","isComponentAttribute","isDynamicZoneAttribute","isMorphToRelationalAttribute","startsWith","getComponentAttributes","schema","getMediaAttributes","getScalarAttributes","getRelationalAttributes","isTypedAttribute","getContentTypeRoutePrefix","contentType","kebabCase","info","singularName","pluralName"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-query-params.d.ts","sourceRoot":"","sources":["../src/convert-query-params.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"convert-query-params.d.ts","sourceRoot":"","sources":["../src/convert-query-params.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,12 @@ var operators = require('./operators.js');
|
|
|
8
8
|
var parseType = require('./parse-type.js');
|
|
9
9
|
var sortQuery = require('./sort-query.js');
|
|
10
10
|
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var ___default = /*#__PURE__*/_interopDefault(_);
|
|
14
|
+
|
|
11
15
|
const { ID_ATTRIBUTE, DOC_ID_ATTRIBUTE, PUBLISHED_AT_ATTRIBUTE } = contentTypes.constants;
|
|
12
|
-
const isPlainObject = (value)=>
|
|
16
|
+
const isPlainObject = (value)=>___default.default.isPlainObject(value);
|
|
13
17
|
function isEmptySortMap(sortMap) {
|
|
14
18
|
const keys = Object.keys(sortMap);
|
|
15
19
|
if (keys.length === 0) {
|
|
@@ -100,7 +104,7 @@ const createTransformer = ({ getModel })=>{
|
|
|
100
104
|
}
|
|
101
105
|
validateOrder(order.trim());
|
|
102
106
|
// TODO: field should be a valid path on an object model
|
|
103
|
-
return
|
|
107
|
+
return ___default.default.set({}, field, order.trim());
|
|
104
108
|
};
|
|
105
109
|
const convertNestedSortQueryParam = (sortQuery)=>{
|
|
106
110
|
const transformedSort = {};
|
|
@@ -137,7 +141,7 @@ const createTransformer = ({ getModel })=>{
|
|
|
137
141
|
* Start query parser
|
|
138
142
|
*/ const convertStartQueryParams = (startQuery)=>{
|
|
139
143
|
const startAsANumber = fp.toNumber(startQuery);
|
|
140
|
-
if (!
|
|
144
|
+
if (!___default.default.isInteger(startAsANumber) || startAsANumber < 0) {
|
|
141
145
|
throw new errors.ValidationError(`convertStartQueryParams expected a positive integer got ${startAsANumber}`);
|
|
142
146
|
}
|
|
143
147
|
return startAsANumber;
|
|
@@ -146,7 +150,7 @@ const createTransformer = ({ getModel })=>{
|
|
|
146
150
|
* Limit query parser
|
|
147
151
|
*/ const convertLimitQueryParams = (limitQuery)=>{
|
|
148
152
|
const limitAsANumber = fp.toNumber(limitQuery);
|
|
149
|
-
if (!
|
|
153
|
+
if (!___default.default.isInteger(limitAsANumber) || limitAsANumber !== -1 && limitAsANumber < 0) {
|
|
150
154
|
throw new errors.ValidationError(`convertLimitQueryParams expected a positive integer got ${limitAsANumber}`);
|
|
151
155
|
}
|
|
152
156
|
if (limitAsANumber === -1) {
|
|
@@ -188,18 +192,18 @@ const createTransformer = ({ getModel })=>{
|
|
|
188
192
|
return true;
|
|
189
193
|
}
|
|
190
194
|
if (typeof populate === 'string') {
|
|
191
|
-
return populate.split(',').map((value)=>
|
|
195
|
+
return populate.split(',').map((value)=>___default.default.trim(value));
|
|
192
196
|
}
|
|
193
197
|
if (Array.isArray(populate)) {
|
|
194
198
|
// map convert
|
|
195
|
-
return
|
|
199
|
+
return ___default.default.uniq(populate.flatMap((value)=>{
|
|
196
200
|
if (typeof value !== 'string') {
|
|
197
201
|
throw new InvalidPopulateError();
|
|
198
202
|
}
|
|
199
|
-
return value.split(',').map((value)=>
|
|
203
|
+
return value.split(',').map((value)=>___default.default.trim(value));
|
|
200
204
|
}));
|
|
201
205
|
}
|
|
202
|
-
if (
|
|
206
|
+
if (___default.default.isPlainObject(populate)) {
|
|
203
207
|
return convertPopulateObject(populate, schema);
|
|
204
208
|
}
|
|
205
209
|
throw new InvalidPopulateError();
|
|
@@ -217,7 +221,7 @@ const createTransformer = ({ getModel })=>{
|
|
|
217
221
|
const { attributes } = schema;
|
|
218
222
|
return Object.entries(populate).reduce((acc, [key, subPopulate])=>{
|
|
219
223
|
// Try converting strings to regular booleans if possible
|
|
220
|
-
if (
|
|
224
|
+
if (___default.default.isString(subPopulate)) {
|
|
221
225
|
try {
|
|
222
226
|
const subPopulateAsBoolean = parseType({
|
|
223
227
|
type: 'boolean',
|
|
@@ -232,7 +236,7 @@ const createTransformer = ({ getModel })=>{
|
|
|
232
236
|
// ignore
|
|
233
237
|
}
|
|
234
238
|
}
|
|
235
|
-
if (
|
|
239
|
+
if (___default.default.isBoolean(subPopulate)) {
|
|
236
240
|
// Only true is accepted as a boolean populate value
|
|
237
241
|
return subPopulate === true ? {
|
|
238
242
|
...acc,
|
|
@@ -258,13 +262,13 @@ const createTransformer = ({ getModel })=>{
|
|
|
258
262
|
* Validate nested population queries in the context of a polymorphic attribute (dynamic zone, morph relation).
|
|
259
263
|
*
|
|
260
264
|
* If 'populate' exists in subPopulate, its value should be constrained to a wildcard ('*').
|
|
261
|
-
*/ if ('populate' in subPopulate && subPopulate.populate !== '*') {
|
|
265
|
+
*/ if ('populate' in subPopulate && !fp.isNil(subPopulate.populate) && subPopulate.populate !== '*') {
|
|
262
266
|
throw new errors.ValidationError(`Invalid nested population query detected. When using 'populate' within polymorphic structures, ` + `its value must be '*' to indicate all second level links. Specific field targeting is not supported here. ` + `Consider using the fragment API for more granular population control.`);
|
|
263
267
|
}
|
|
264
268
|
// TODO: Remove the possibility to have multiple properties at the same time (on/count/populate)
|
|
265
269
|
const newSubPopulate = {};
|
|
266
270
|
// case: { populate: '*' }
|
|
267
|
-
if ('populate' in subPopulate) {
|
|
271
|
+
if ('populate' in subPopulate && subPopulate.populate === '*') {
|
|
268
272
|
Object.assign(newSubPopulate, {
|
|
269
273
|
populate: true
|
|
270
274
|
});
|
|
@@ -324,14 +328,14 @@ const createTransformer = ({ getModel })=>{
|
|
|
324
328
|
}, {});
|
|
325
329
|
};
|
|
326
330
|
const convertNestedPopulate = (subPopulate, schema)=>{
|
|
327
|
-
if (
|
|
331
|
+
if (___default.default.isString(subPopulate)) {
|
|
328
332
|
return parseType({
|
|
329
333
|
type: 'boolean',
|
|
330
334
|
value: subPopulate,
|
|
331
335
|
forceCast: true
|
|
332
336
|
});
|
|
333
337
|
}
|
|
334
|
-
if (
|
|
338
|
+
if (___default.default.isBoolean(subPopulate)) {
|
|
335
339
|
return subPopulate;
|
|
336
340
|
}
|
|
337
341
|
if (!isPlainObject(subPopulate)) {
|
|
@@ -376,16 +380,16 @@ const createTransformer = ({ getModel })=>{
|
|
|
376
380
|
return undefined;
|
|
377
381
|
}
|
|
378
382
|
if (typeof fields === 'string') {
|
|
379
|
-
const fieldsValues = fields.split(',').map((value)=>
|
|
383
|
+
const fieldsValues = fields.split(',').map((value)=>___default.default.trim(value));
|
|
380
384
|
// NOTE: Only include the doc id if it's a content type
|
|
381
385
|
if (schema?.modelType === 'contentType') {
|
|
382
|
-
return
|
|
386
|
+
return ___default.default.uniq([
|
|
383
387
|
ID_ATTRIBUTE,
|
|
384
388
|
DOC_ID_ATTRIBUTE,
|
|
385
389
|
...fieldsValues
|
|
386
390
|
]);
|
|
387
391
|
}
|
|
388
|
-
return
|
|
392
|
+
return ___default.default.uniq([
|
|
389
393
|
ID_ATTRIBUTE,
|
|
390
394
|
...fieldsValues
|
|
391
395
|
]);
|
|
@@ -395,13 +399,13 @@ const createTransformer = ({ getModel })=>{
|
|
|
395
399
|
const fieldsValues = fields.flatMap((value)=>convertFieldsQueryParams(value, schema, depth + 1)).filter((v)=>!fp.isNil(v));
|
|
396
400
|
// NOTE: Only include the doc id if it's a content type
|
|
397
401
|
if (schema?.modelType === 'contentType') {
|
|
398
|
-
return
|
|
402
|
+
return ___default.default.uniq([
|
|
399
403
|
ID_ATTRIBUTE,
|
|
400
404
|
DOC_ID_ATTRIBUTE,
|
|
401
405
|
...fieldsValues
|
|
402
406
|
]);
|
|
403
407
|
}
|
|
404
|
-
return
|
|
408
|
+
return ___default.default.uniq([
|
|
405
409
|
ID_ATTRIBUTE,
|
|
406
410
|
...fieldsValues
|
|
407
411
|
]);
|