@strapi/utils 4.11.3 → 4.11.5

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.
Files changed (184) hide show
  1. package/dist/async.d.ts +10 -0
  2. package/dist/async.js +33 -0
  3. package/dist/async.js.map +1 -0
  4. package/dist/code-generator.d.ts +2 -0
  5. package/dist/code-generator.js +11 -0
  6. package/dist/code-generator.js.map +1 -0
  7. package/dist/config.d.ts +8 -0
  8. package/dist/config.js +79 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/content-types.d.ts +60 -0
  11. package/dist/content-types.js +151 -0
  12. package/dist/content-types.js.map +1 -0
  13. package/dist/convert-query-params.d.ts +75 -0
  14. package/dist/convert-query-params.js +476 -0
  15. package/dist/convert-query-params.js.map +1 -0
  16. package/dist/env-helper.d.ts +18 -0
  17. package/dist/env-helper.js +84 -0
  18. package/dist/env-helper.js.map +1 -0
  19. package/dist/errors.d.ts +37 -0
  20. package/dist/errors.js +100 -0
  21. package/dist/errors.js.map +1 -0
  22. package/dist/file.d.ts +16 -0
  23. package/dist/file.js +54 -0
  24. package/dist/file.js.map +1 -0
  25. package/dist/format-yup-error.d.ts +10 -0
  26. package/dist/format-yup-error.js +17 -0
  27. package/dist/format-yup-error.js.map +1 -0
  28. package/dist/hooks.d.ts +63 -0
  29. package/dist/hooks.js +89 -0
  30. package/dist/hooks.js.map +1 -0
  31. package/dist/import-default.d.ts +1 -0
  32. package/dist/import-default.js +9 -0
  33. package/dist/import-default.js.map +1 -0
  34. package/dist/index.d.ts +30 -0
  35. package/dist/index.js +99 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/object-formatting.d.ts +3 -0
  38. package/dist/object-formatting.js +14 -0
  39. package/dist/object-formatting.js.map +1 -0
  40. package/dist/operators.d.ts +2 -0
  41. package/dist/operators.js +69 -0
  42. package/dist/operators.js.map +1 -0
  43. package/dist/pagination.d.ts +14 -0
  44. package/dist/pagination.js +80 -0
  45. package/dist/pagination.js.map +1 -0
  46. package/dist/parse-multipart.d.ts +8 -0
  47. package/dist/parse-multipart.js +36 -0
  48. package/dist/parse-multipart.js.map +1 -0
  49. package/dist/parse-type.d.ts +21 -0
  50. package/dist/parse-type.js +108 -0
  51. package/dist/parse-type.js.map +1 -0
  52. package/dist/policy.d.ts +41 -0
  53. package/dist/policy.js +109 -0
  54. package/dist/policy.js.map +1 -0
  55. package/dist/print-value.d.ts +2 -0
  56. package/dist/print-value.js +50 -0
  57. package/dist/print-value.js.map +1 -0
  58. package/dist/provider-factory.d.ts +29 -0
  59. package/dist/provider-factory.js +80 -0
  60. package/dist/provider-factory.js.map +1 -0
  61. package/dist/relations.d.ts +10 -0
  62. package/dist/relations.js +23 -0
  63. package/dist/relations.js.map +1 -0
  64. package/dist/sanitize/index.d.ts +23 -0
  65. package/dist/sanitize/index.js +135 -0
  66. package/dist/sanitize/index.js.map +1 -0
  67. package/dist/sanitize/sanitizers.d.ts +10 -0
  68. package/dist/sanitize/sanitizers.js +114 -0
  69. package/dist/sanitize/sanitizers.js.map +1 -0
  70. package/dist/sanitize/visitors/allowed-fields.d.ts +3 -0
  71. package/{lib → dist}/sanitize/visitors/allowed-fields.js +17 -32
  72. package/dist/sanitize/visitors/allowed-fields.js.map +1 -0
  73. package/dist/sanitize/visitors/index.d.ts +7 -0
  74. package/dist/sanitize/visitors/index.js +21 -0
  75. package/dist/sanitize/visitors/index.js.map +1 -0
  76. package/dist/sanitize/visitors/remove-dynamic-zones.d.ts +3 -0
  77. package/dist/sanitize/visitors/remove-dynamic-zones.js +10 -0
  78. package/dist/sanitize/visitors/remove-dynamic-zones.js.map +1 -0
  79. package/dist/sanitize/visitors/remove-morph-to-relations.d.ts +3 -0
  80. package/dist/sanitize/visitors/remove-morph-to-relations.js +10 -0
  81. package/dist/sanitize/visitors/remove-morph-to-relations.js.map +1 -0
  82. package/dist/sanitize/visitors/remove-password.d.ts +3 -0
  83. package/dist/sanitize/visitors/remove-password.js +9 -0
  84. package/dist/sanitize/visitors/remove-password.js.map +1 -0
  85. package/dist/sanitize/visitors/remove-private.d.ts +3 -0
  86. package/dist/sanitize/visitors/remove-private.js +14 -0
  87. package/dist/sanitize/visitors/remove-private.js.map +1 -0
  88. package/dist/sanitize/visitors/remove-restricted-relations.d.ts +3 -0
  89. package/dist/sanitize/visitors/remove-restricted-relations.js +88 -0
  90. package/dist/sanitize/visitors/remove-restricted-relations.js.map +1 -0
  91. package/dist/sanitize/visitors/restricted-fields.d.ts +3 -0
  92. package/dist/sanitize/visitors/restricted-fields.js +25 -0
  93. package/dist/sanitize/visitors/restricted-fields.js.map +1 -0
  94. package/dist/set-creator-fields.d.ts +9 -0
  95. package/dist/set-creator-fields.js +39 -0
  96. package/dist/set-creator-fields.js.map +1 -0
  97. package/dist/string-formatting.d.ts +15 -0
  98. package/dist/string-formatting.js +85 -0
  99. package/dist/string-formatting.js.map +1 -0
  100. package/dist/template-configuration.d.ts +5 -0
  101. package/dist/template-configuration.js +30 -0
  102. package/dist/template-configuration.js.map +1 -0
  103. package/dist/template.d.ts +9 -0
  104. package/dist/template.js +20 -0
  105. package/dist/template.js.map +1 -0
  106. package/dist/traverse/factory.d.ts +78 -0
  107. package/dist/traverse/factory.js +127 -0
  108. package/dist/traverse/factory.js.map +1 -0
  109. package/dist/traverse/index.d.ts +5 -0
  110. package/dist/traverse/index.js +17 -0
  111. package/dist/traverse/index.js.map +1 -0
  112. package/dist/traverse/query-fields.d.ts +3 -0
  113. package/dist/traverse/query-fields.js +35 -0
  114. package/dist/traverse/query-fields.js.map +1 -0
  115. package/dist/traverse/query-filters.d.ts +3 -0
  116. package/dist/traverse/query-filters.js +75 -0
  117. package/dist/traverse/query-filters.js.map +1 -0
  118. package/dist/traverse/query-populate.d.ts +3 -0
  119. package/dist/traverse/query-populate.js +144 -0
  120. package/dist/traverse/query-populate.js.map +1 -0
  121. package/dist/traverse/query-sort.d.ts +3 -0
  122. package/dist/traverse/query-sort.js +116 -0
  123. package/dist/traverse/query-sort.js.map +1 -0
  124. package/dist/traverse-entity.d.ts +31 -0
  125. package/dist/traverse-entity.js +134 -0
  126. package/dist/traverse-entity.js.map +1 -0
  127. package/dist/types.d.ts +65 -0
  128. package/dist/types.js +3 -0
  129. package/dist/types.js.map +1 -0
  130. package/dist/validators.d.ts +13 -0
  131. package/dist/validators.js +120 -0
  132. package/dist/validators.js.map +1 -0
  133. package/dist/webhook.d.ts +5 -0
  134. package/dist/webhook.js +27 -0
  135. package/dist/webhook.js.map +1 -0
  136. package/package.json +19 -4
  137. package/.eslintignore +0 -3
  138. package/.eslintrc.js +0 -4
  139. package/index.d.ts +0 -5
  140. package/lib/async.d.ts +0 -21
  141. package/lib/async.js +0 -45
  142. package/lib/build-query.js +0 -208
  143. package/lib/code-generator.js +0 -13
  144. package/lib/config.js +0 -88
  145. package/lib/content-types.js +0 -196
  146. package/lib/convert-query-params.js +0 -586
  147. package/lib/env-helper.js +0 -98
  148. package/lib/errors.js +0 -113
  149. package/lib/file.js +0 -60
  150. package/lib/format-yup-error.js +0 -20
  151. package/lib/hooks.js +0 -110
  152. package/lib/import-default.js +0 -10
  153. package/lib/index.js +0 -99
  154. package/lib/object-formatting.js +0 -15
  155. package/lib/operators.js +0 -74
  156. package/lib/pagination.js +0 -99
  157. package/lib/parse-multipart.js +0 -44
  158. package/lib/parse-type.js +0 -100
  159. package/lib/policy.js +0 -129
  160. package/lib/print-value.js +0 -52
  161. package/lib/provider-factory.js +0 -116
  162. package/lib/relations.js +0 -31
  163. package/lib/sanitize/index.js +0 -143
  164. package/lib/sanitize/sanitizers.js +0 -163
  165. package/lib/sanitize/visitors/index.js +0 -11
  166. package/lib/sanitize/visitors/remove-dynamic-zones.js +0 -9
  167. package/lib/sanitize/visitors/remove-morph-to-relations.js +0 -9
  168. package/lib/sanitize/visitors/remove-password.js +0 -7
  169. package/lib/sanitize/visitors/remove-private.js +0 -15
  170. package/lib/sanitize/visitors/remove-restricted-relations.js +0 -81
  171. package/lib/sanitize/visitors/restricted-fields.js +0 -32
  172. package/lib/set-creator-fields.js +0 -17
  173. package/lib/string-formatting.js +0 -79
  174. package/lib/template-configuration.js +0 -32
  175. package/lib/template.js +0 -28
  176. package/lib/traverse/factory.js +0 -157
  177. package/lib/traverse/index.js +0 -16
  178. package/lib/traverse/query-fields.js +0 -39
  179. package/lib/traverse/query-filters.js +0 -97
  180. package/lib/traverse/query-populate.js +0 -191
  181. package/lib/traverse/query-sort.js +0 -171
  182. package/lib/traverse-entity.js +0 -166
  183. package/lib/validators.js +0 -120
  184. package/lib/webhook.js +0 -30
@@ -0,0 +1,10 @@
1
+ import pMap from 'p-map';
2
+ type AnyFunc = (...args: any) => any;
3
+ type PipeArgs<F extends AnyFunc[], PrevReturn = Parameters<F[0]>[0]> = F extends [
4
+ (arg: any) => infer B
5
+ ] ? [(arg: PrevReturn) => B] : F extends [(arg: any) => infer B, ...infer Tail] ? Tail extends AnyFunc[] ? [(arg: PrevReturn) => B, ...PipeArgs<Tail, B>] : [] : [];
6
+ export declare function pipeAsync<F extends AnyFunc[], FirstFn extends F[0]>(...fns: PipeArgs<F> extends F ? F : PipeArgs<F>): (...args: Parameters<FirstFn>) => Promise<F extends [...AnyFunc[], (...arg: any) => infer R] ? R extends Promise<infer InnerType> ? InnerType : R : never>;
7
+ export declare const mapAsync: (...args: any[]) => any;
8
+ export declare const reduceAsync: (mixedArray: any[]) => <T>(iteratee: AnyFunc, initialValue?: T | undefined) => Promise<T | undefined>;
9
+ export declare const forEachAsync: <T, R>(array: T[], func: pMap.Mapper<T, R>, options: pMap.Options) => Promise<void>;
10
+ export {};
package/dist/async.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.forEachAsync = exports.reduceAsync = exports.mapAsync = exports.pipeAsync = void 0;
7
+ const p_map_1 = __importDefault(require("p-map"));
8
+ const fp_1 = require("lodash/fp");
9
+ function pipeAsync(...fns) {
10
+ const [firstFn, ...fnRest] = fns;
11
+ return async (...args) => {
12
+ let res = await firstFn.apply(firstFn, args);
13
+ for (let i = 0; i < fnRest.length; i += 1) {
14
+ res = await fnRest[i](res);
15
+ }
16
+ return res;
17
+ };
18
+ }
19
+ exports.pipeAsync = pipeAsync;
20
+ exports.mapAsync = (0, fp_1.curry)(p_map_1.default);
21
+ const reduceAsync = (mixedArray) => async (iteratee, initialValue) => {
22
+ let acc = initialValue;
23
+ for (let i = 0; i < mixedArray.length; i += 1) {
24
+ acc = await iteratee(acc, await mixedArray[i], i);
25
+ }
26
+ return acc;
27
+ };
28
+ exports.reduceAsync = reduceAsync;
29
+ const forEachAsync = async (array, func, options) => {
30
+ await (0, p_map_1.default)(array, func, options);
31
+ };
32
+ exports.forEachAsync = forEachAsync;
33
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,kCAAkC;AAkBlC,SAAgB,SAAS,CACvB,GAAG,GAA4C;IAS/C,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;IAEjC,OAAO,KAAK,EAAE,GAAG,IAAU,EAAoB,EAAE;QAC/C,IAAI,GAAG,GAAY,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACzC,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC5B;QAED,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AArBD,8BAqBC;AAEY,QAAA,QAAQ,GAAG,IAAA,UAAK,EAAC,eAAI,CAAC,CAAC;AAE7B,MAAM,WAAW,GACtB,CAAC,UAAiB,EAAE,EAAE,CACtB,KAAK,EAAK,QAAiB,EAAE,YAAgB,EAAE,EAAE;IAC/C,IAAI,GAAG,GAAG,YAAY,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC7C,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACnD;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AARS,QAAA,WAAW,eAQpB;AAEG,MAAM,YAAY,GAAG,KAAK,EAC/B,KAAU,EACV,IAAuB,EACvB,OAAqB,EACrB,EAAE;IACF,MAAM,IAAA,eAAI,EAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC;AANW,QAAA,YAAY,gBAMvB"}
@@ -0,0 +1,2 @@
1
+ declare const generateTimestampCode: (date: Date) => string;
2
+ export { generateTimestampCode };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTimestampCode = void 0;
4
+ // Using timestamp (milliseconds) to be sure it is unique
5
+ // + converting timestamp to base 36 for better readibility
6
+ const generateTimestampCode = (date) => {
7
+ const referDate = date || new Date();
8
+ return referDate.getTime().toString(36);
9
+ };
10
+ exports.generateTimestampCode = generateTimestampCode;
11
+ //# sourceMappingURL=code-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../src/code-generator.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AACzD,2DAA2D;AAC3D,MAAM,qBAAqB,GAAG,CAAC,IAAU,EAAE,EAAE;IAC3C,MAAM,SAAS,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IAErC,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEO,sDAAqB"}
@@ -0,0 +1,8 @@
1
+ import type { Config } from './types';
2
+ export declare const getConfigUrls: (config: Config, forAdminBuild?: boolean) => {
3
+ serverUrl: string;
4
+ adminUrl: any;
5
+ adminPath: any;
6
+ };
7
+ export declare const getAbsoluteAdminUrl: (config: Config, forAdminBuild?: boolean) => any;
8
+ export declare const getAbsoluteServerUrl: (config: Config, forAdminBuild?: boolean) => any;
package/dist/config.js ADDED
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getAbsoluteServerUrl = exports.getAbsoluteAdminUrl = exports.getConfigUrls = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const string_formatting_1 = require("./string-formatting");
9
+ const getConfigUrls = (config, forAdminBuild = false) => {
10
+ const serverConfig = config.get('server');
11
+ const adminConfig = config.get('admin');
12
+ // Defines serverUrl value
13
+ let serverUrl = lodash_1.default.get(serverConfig, 'url', '');
14
+ serverUrl = lodash_1.default.trim(serverUrl, '/ ');
15
+ if (typeof serverUrl !== 'string') {
16
+ throw new Error('Invalid server url config. Make sure the url is a string.');
17
+ }
18
+ if (serverUrl.startsWith('http')) {
19
+ try {
20
+ serverUrl = lodash_1.default.trim(new URL(serverConfig.url).toString(), '/');
21
+ }
22
+ catch (e) {
23
+ throw new Error('Invalid server url config. Make sure the url defined in server.js is valid.');
24
+ }
25
+ }
26
+ else if (serverUrl !== '') {
27
+ serverUrl = `/${serverUrl}`;
28
+ }
29
+ // Defines adminUrl value
30
+ let adminUrl = lodash_1.default.get(adminConfig, 'url', '/admin');
31
+ adminUrl = lodash_1.default.trim(adminUrl, '/ ');
32
+ if (typeof adminUrl !== 'string') {
33
+ throw new Error('Invalid admin url config. Make sure the url is a non-empty string.');
34
+ }
35
+ if (adminUrl.startsWith('http')) {
36
+ try {
37
+ adminUrl = lodash_1.default.trim(new URL(adminUrl).toString(), '/');
38
+ }
39
+ catch (e) {
40
+ throw new Error('Invalid admin url config. Make sure the url defined in server.js is valid.');
41
+ }
42
+ }
43
+ else {
44
+ adminUrl = `${serverUrl}/${adminUrl}`;
45
+ }
46
+ // Defines adminPath value
47
+ let adminPath = adminUrl;
48
+ if (serverUrl.startsWith('http') &&
49
+ adminUrl.startsWith('http') &&
50
+ new URL(adminUrl).origin === new URL(serverUrl).origin &&
51
+ !forAdminBuild) {
52
+ adminPath = adminUrl.replace((0, string_formatting_1.getCommonPath)(serverUrl, adminUrl), '');
53
+ adminPath = `/${lodash_1.default.trim(adminPath, '/')}`;
54
+ }
55
+ else if (adminUrl.startsWith('http')) {
56
+ adminPath = new URL(adminUrl).pathname;
57
+ }
58
+ return {
59
+ serverUrl,
60
+ adminUrl,
61
+ adminPath,
62
+ };
63
+ };
64
+ exports.getConfigUrls = getConfigUrls;
65
+ const getAbsoluteUrl = (adminOrServer) => (config, forAdminBuild = false) => {
66
+ const { serverUrl, adminUrl } = (0, exports.getConfigUrls)(config, forAdminBuild);
67
+ const url = adminOrServer === 'server' ? serverUrl : adminUrl;
68
+ if (url.startsWith('http')) {
69
+ return url;
70
+ }
71
+ const hostname = config.get('environment') === 'development' &&
72
+ ['127.0.0.1', '0.0.0.0'].includes(config.get('server.host'))
73
+ ? 'localhost'
74
+ : config.get('server.host');
75
+ return `http://${hostname}:${config.get('server.port')}${url}`;
76
+ };
77
+ exports.getAbsoluteAdminUrl = getAbsoluteUrl('admin');
78
+ exports.getAbsoluteServerUrl = getAbsoluteUrl('server');
79
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { Model, Kind, Attribute, RelationalAttribute, ComponentAttribute, DynamicZoneAttribute } from './types';
2
+ declare const constants: {
3
+ ID_ATTRIBUTE: string;
4
+ PUBLISHED_AT_ATTRIBUTE: string;
5
+ CREATED_BY_ATTRIBUTE: string;
6
+ UPDATED_BY_ATTRIBUTE: string;
7
+ CREATED_AT_ATTRIBUTE: string;
8
+ UPDATED_AT_ATTRIBUTE: string;
9
+ DP_PUB_STATES: string[];
10
+ DP_PUB_STATE_LIVE: string;
11
+ DP_PUB_STATE_PREVIEW: string;
12
+ SINGLE_TYPE: string;
13
+ COLLECTION_TYPE: string;
14
+ };
15
+ declare const getTimestamps: (model: Model) => string[];
16
+ declare const getNonWritableAttributes: (model: Model) => string[];
17
+ declare const getWritableAttributes: (model: Model) => string[];
18
+ declare const isWritableAttribute: (model: Model, attributeName: string) => boolean;
19
+ declare const getNonVisibleAttributes: (model: Model) => string[];
20
+ declare const getVisibleAttributes: (model: Model) => string[];
21
+ declare const isVisibleAttribute: (model: Model, attributeName: string) => boolean;
22
+ declare const getOptions: (model: Model) => {
23
+ draftAndPublish: boolean;
24
+ } | ({
25
+ draftAndPublish: boolean;
26
+ } & {
27
+ populateCreatorFields: boolean;
28
+ });
29
+ declare const hasDraftAndPublish: (model: Model) => boolean;
30
+ declare const isDraft: <T extends object>(data: T, model: Model) => boolean;
31
+ declare const isSingleType: ({ kind }: {
32
+ kind?: string | undefined;
33
+ }) => boolean;
34
+ declare const isCollectionType: ({ kind }: {
35
+ kind?: string | undefined;
36
+ }) => boolean;
37
+ declare const isKind: (kind: Kind) => (model: Model) => boolean;
38
+ declare const getPrivateAttributes: (model: Model) => string[];
39
+ declare const isPrivateAttribute: (model: Model, attributeName: string) => boolean;
40
+ declare const isScalarAttribute: (attribute: Attribute) => boolean;
41
+ declare const isMediaAttribute: (attribute: Attribute) => boolean;
42
+ declare const isRelationalAttribute: (attribute: Attribute) => attribute is RelationalAttribute;
43
+ declare const isComponentAttribute: (attribute: Attribute) => attribute is ComponentAttribute;
44
+ declare const isDynamicZoneAttribute: (attribute: Attribute) => attribute is DynamicZoneAttribute;
45
+ declare const isMorphToRelationalAttribute: (attribute: Attribute) => boolean;
46
+ declare const getComponentAttributes: (schema: Model) => string[];
47
+ declare const getScalarAttributes: (schema: Model) => string[];
48
+ /**
49
+ * Checks if an attribute is of type `type`
50
+ * @param {object} attribute
51
+ * @param {string} type
52
+ */
53
+ declare const isTypedAttribute: (attribute: Attribute, type: string) => boolean;
54
+ /**
55
+ * Returns a route prefix for a contentType
56
+ * @param {object} contentType
57
+ * @returns {string}
58
+ */
59
+ declare const getContentTypeRoutePrefix: (contentType: Model) => string;
60
+ export { isScalarAttribute, isMediaAttribute, isRelationalAttribute, isComponentAttribute, isDynamicZoneAttribute, isMorphToRelationalAttribute, isTypedAttribute, getPrivateAttributes, isPrivateAttribute, constants, getNonWritableAttributes, getComponentAttributes, getScalarAttributes, getWritableAttributes, isWritableAttribute, getNonVisibleAttributes, getVisibleAttributes, getTimestamps, isVisibleAttribute, hasDraftAndPublish, getOptions, isDraft, isSingleType, isCollectionType, isKind, getContentTypeRoutePrefix, };
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getContentTypeRoutePrefix = exports.isKind = exports.isCollectionType = exports.isSingleType = exports.isDraft = exports.getOptions = exports.hasDraftAndPublish = exports.isVisibleAttribute = exports.getTimestamps = exports.getVisibleAttributes = exports.getNonVisibleAttributes = exports.isWritableAttribute = exports.getWritableAttributes = exports.getScalarAttributes = exports.getComponentAttributes = exports.getNonWritableAttributes = exports.constants = exports.isPrivateAttribute = exports.getPrivateAttributes = exports.isTypedAttribute = exports.isMorphToRelationalAttribute = exports.isDynamicZoneAttribute = exports.isComponentAttribute = exports.isRelationalAttribute = exports.isMediaAttribute = exports.isScalarAttribute = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const fp_1 = require("lodash/fp");
9
+ const SINGLE_TYPE = 'singleType';
10
+ const COLLECTION_TYPE = 'collectionType';
11
+ const ID_ATTRIBUTE = 'id';
12
+ const PUBLISHED_AT_ATTRIBUTE = 'publishedAt';
13
+ const CREATED_BY_ATTRIBUTE = 'createdBy';
14
+ const UPDATED_BY_ATTRIBUTE = 'updatedBy';
15
+ const CREATED_AT_ATTRIBUTE = 'createdAt';
16
+ const UPDATED_AT_ATTRIBUTE = 'updatedAt';
17
+ const DP_PUB_STATE_LIVE = 'live';
18
+ const DP_PUB_STATE_PREVIEW = 'preview';
19
+ const DP_PUB_STATES = [DP_PUB_STATE_LIVE, DP_PUB_STATE_PREVIEW];
20
+ const constants = {
21
+ ID_ATTRIBUTE,
22
+ PUBLISHED_AT_ATTRIBUTE,
23
+ CREATED_BY_ATTRIBUTE,
24
+ UPDATED_BY_ATTRIBUTE,
25
+ CREATED_AT_ATTRIBUTE,
26
+ UPDATED_AT_ATTRIBUTE,
27
+ DP_PUB_STATES,
28
+ DP_PUB_STATE_LIVE,
29
+ DP_PUB_STATE_PREVIEW,
30
+ SINGLE_TYPE,
31
+ COLLECTION_TYPE,
32
+ };
33
+ exports.constants = constants;
34
+ const getTimestamps = (model) => {
35
+ const attributes = [];
36
+ if ((0, fp_1.has)(CREATED_AT_ATTRIBUTE, model.attributes)) {
37
+ attributes.push(CREATED_AT_ATTRIBUTE);
38
+ }
39
+ if ((0, fp_1.has)(UPDATED_AT_ATTRIBUTE, model.attributes)) {
40
+ attributes.push(UPDATED_AT_ATTRIBUTE);
41
+ }
42
+ return attributes;
43
+ };
44
+ exports.getTimestamps = getTimestamps;
45
+ const getNonWritableAttributes = (model) => {
46
+ if (!model)
47
+ return [];
48
+ const nonWritableAttributes = lodash_1.default.reduce(model.attributes, (acc, attr, attrName) => (attr.writable === false ? acc.concat(attrName) : acc), []);
49
+ return lodash_1.default.uniq([ID_ATTRIBUTE, ...getTimestamps(model), ...nonWritableAttributes]);
50
+ };
51
+ exports.getNonWritableAttributes = getNonWritableAttributes;
52
+ const getWritableAttributes = (model) => {
53
+ if (!model)
54
+ return [];
55
+ return lodash_1.default.difference(Object.keys(model.attributes), getNonWritableAttributes(model));
56
+ };
57
+ exports.getWritableAttributes = getWritableAttributes;
58
+ const isWritableAttribute = (model, attributeName) => {
59
+ return getWritableAttributes(model).includes(attributeName);
60
+ };
61
+ exports.isWritableAttribute = isWritableAttribute;
62
+ const getNonVisibleAttributes = (model) => {
63
+ const nonVisibleAttributes = lodash_1.default.reduce(model.attributes, (acc, attr, attrName) => (attr.visible === false ? acc.concat(attrName) : acc), []);
64
+ return lodash_1.default.uniq([ID_ATTRIBUTE, ...getTimestamps(model), ...nonVisibleAttributes]);
65
+ };
66
+ exports.getNonVisibleAttributes = getNonVisibleAttributes;
67
+ const getVisibleAttributes = (model) => {
68
+ return lodash_1.default.difference(lodash_1.default.keys(model.attributes), getNonVisibleAttributes(model));
69
+ };
70
+ exports.getVisibleAttributes = getVisibleAttributes;
71
+ const isVisibleAttribute = (model, attributeName) => {
72
+ return getVisibleAttributes(model).includes(attributeName);
73
+ };
74
+ exports.isVisibleAttribute = isVisibleAttribute;
75
+ const getOptions = (model) => lodash_1.default.assign({ draftAndPublish: false }, lodash_1.default.get(model, 'options', {}));
76
+ exports.getOptions = getOptions;
77
+ const hasDraftAndPublish = (model) => lodash_1.default.get(model, 'options.draftAndPublish', false) === true;
78
+ exports.hasDraftAndPublish = hasDraftAndPublish;
79
+ const isDraft = (data, model) => hasDraftAndPublish(model) && lodash_1.default.get(data, PUBLISHED_AT_ATTRIBUTE) === null;
80
+ exports.isDraft = isDraft;
81
+ const isSingleType = ({ kind = COLLECTION_TYPE }) => kind === SINGLE_TYPE;
82
+ exports.isSingleType = isSingleType;
83
+ const isCollectionType = ({ kind = COLLECTION_TYPE }) => kind === COLLECTION_TYPE;
84
+ exports.isCollectionType = isCollectionType;
85
+ const isKind = (kind) => (model) => model.kind === kind;
86
+ exports.isKind = isKind;
87
+ const getStoredPrivateAttributes = (model) => (0, fp_1.union)((strapi?.config?.get('api.responses.privateAttributes', []) ?? []), (0, fp_1.getOr)([], 'options.privateAttributes', model));
88
+ const getPrivateAttributes = (model) => {
89
+ return lodash_1.default.union(getStoredPrivateAttributes(model), lodash_1.default.keys(lodash_1.default.pickBy(model.attributes, (attr) => !!attr.private)));
90
+ };
91
+ exports.getPrivateAttributes = getPrivateAttributes;
92
+ const isPrivateAttribute = (model, attributeName) => {
93
+ if (model?.attributes?.[attributeName]?.private === true) {
94
+ return true;
95
+ }
96
+ return getStoredPrivateAttributes(model).includes(attributeName);
97
+ };
98
+ exports.isPrivateAttribute = isPrivateAttribute;
99
+ const isScalarAttribute = (attribute) => {
100
+ return !['media', 'component', 'relation', 'dynamiczone'].includes(attribute?.type);
101
+ };
102
+ exports.isScalarAttribute = isScalarAttribute;
103
+ const isMediaAttribute = (attribute) => attribute?.type === 'media';
104
+ exports.isMediaAttribute = isMediaAttribute;
105
+ const isRelationalAttribute = (attribute) => attribute?.type === 'relation';
106
+ exports.isRelationalAttribute = isRelationalAttribute;
107
+ const isComponentAttribute = (attribute) => ['component', 'dynamiczone'].includes(attribute?.type);
108
+ exports.isComponentAttribute = isComponentAttribute;
109
+ const isDynamicZoneAttribute = (attribute) => attribute?.type === 'dynamiczone';
110
+ exports.isDynamicZoneAttribute = isDynamicZoneAttribute;
111
+ const isMorphToRelationalAttribute = (attribute) => {
112
+ return isRelationalAttribute(attribute) && attribute?.relation?.startsWith?.('morphTo');
113
+ };
114
+ exports.isMorphToRelationalAttribute = isMorphToRelationalAttribute;
115
+ const getComponentAttributes = (schema) => {
116
+ return lodash_1.default.reduce(schema.attributes, (acc, attr, attrName) => {
117
+ if (isComponentAttribute(attr))
118
+ acc.push(attrName);
119
+ return acc;
120
+ }, []);
121
+ };
122
+ exports.getComponentAttributes = getComponentAttributes;
123
+ const getScalarAttributes = (schema) => {
124
+ return lodash_1.default.reduce(schema.attributes, (acc, attr, attrName) => {
125
+ if (isScalarAttribute(attr))
126
+ acc.push(attrName);
127
+ return acc;
128
+ }, []);
129
+ };
130
+ exports.getScalarAttributes = getScalarAttributes;
131
+ /**
132
+ * Checks if an attribute is of type `type`
133
+ * @param {object} attribute
134
+ * @param {string} type
135
+ */
136
+ const isTypedAttribute = (attribute, type) => {
137
+ return lodash_1.default.has(attribute, 'type') && attribute.type === type;
138
+ };
139
+ exports.isTypedAttribute = isTypedAttribute;
140
+ /**
141
+ * Returns a route prefix for a contentType
142
+ * @param {object} contentType
143
+ * @returns {string}
144
+ */
145
+ const getContentTypeRoutePrefix = (contentType) => {
146
+ return isSingleType(contentType)
147
+ ? lodash_1.default.kebabCase(contentType.info.singularName)
148
+ : lodash_1.default.kebabCase(contentType.info.pluralName);
149
+ };
150
+ exports.getContentTypeRoutePrefix = getContentTypeRoutePrefix;
151
+ //# sourceMappingURL=content-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-types.js","sourceRoot":"","sources":["../src/content-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { Model } from './types';
2
+ type SortOrder = 'asc' | 'desc';
3
+ export interface SortMap {
4
+ [key: string]: SortOrder | SortMap;
5
+ }
6
+ interface SortParamsObject {
7
+ [key: string]: SortOrder | SortParamsObject;
8
+ }
9
+ type SortParams = string | string[] | SortParamsObject | SortParamsObject[];
10
+ type FieldsParams = string | string[];
11
+ type FiltersParams = unknown;
12
+ export interface PopulateAttributesParams {
13
+ [key: string]: PopulateObjectParams;
14
+ }
15
+ export interface PopulateObjectParams {
16
+ sort?: SortParams;
17
+ fields?: FieldsParams;
18
+ filters?: FiltersParams;
19
+ populate?: PopulateParams;
20
+ publicationState?: 'live' | 'preview';
21
+ on: PopulateAttributesParams;
22
+ }
23
+ type PopulateParams = string | string[] | PopulateAttributesParams;
24
+ export interface Params {
25
+ sort?: SortParams;
26
+ fields?: FieldsParams;
27
+ filters?: FiltersParams;
28
+ populate?: PopulateParams;
29
+ count: boolean;
30
+ ordering: unknown;
31
+ _q?: string;
32
+ limit?: number | string;
33
+ start?: number | string;
34
+ page?: number | string;
35
+ pageSize?: number | string;
36
+ publicationState?: 'live' | 'preview';
37
+ }
38
+ type FiltersQuery = (options: {
39
+ meta: Model;
40
+ }) => WhereQuery | undefined;
41
+ type OrderByQuery = SortMap | SortMap[];
42
+ type SelectQuery = string | string[];
43
+ export interface WhereQuery {
44
+ [key: string]: any;
45
+ }
46
+ type PopulateQuery = boolean | string[] | {
47
+ [key: string]: PopulateQuery;
48
+ };
49
+ export interface Query {
50
+ orderBy?: OrderByQuery;
51
+ select?: SelectQuery;
52
+ where?: WhereQuery;
53
+ filters?: FiltersQuery;
54
+ populate?: PopulateQuery;
55
+ count?: boolean;
56
+ ordering?: unknown;
57
+ _q?: string;
58
+ limit?: number;
59
+ offset?: number;
60
+ page?: number;
61
+ pageSize?: number;
62
+ }
63
+ declare const _default: {
64
+ convertSortQueryParams: (sortQuery: SortParams) => OrderByQuery;
65
+ convertStartQueryParams: (startQuery: unknown) => number;
66
+ convertLimitQueryParams: (limitQuery: unknown) => number | undefined;
67
+ convertPopulateQueryParams: (populate: PopulateParams, schema: Model, depth?: number) => PopulateQuery;
68
+ convertFiltersQueryParams: (filters: unknown, schema: Model) => WhereQuery;
69
+ convertFieldsQueryParams: (fields: FieldsParams, depth?: number) => SelectQuery | undefined;
70
+ convertPublicationStateParams: (schema: Model, params?: {
71
+ publicationState?: "live" | "preview" | undefined;
72
+ }, query?: Query) => void;
73
+ transformParamsToQuery: (uid: string, params: Params) => Query;
74
+ };
75
+ export default _default;