@strapi/utils 4.14.3 → 4.14.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 (231) hide show
  1. package/dist/async.d.ts +1 -0
  2. package/dist/async.d.ts.map +1 -0
  3. package/dist/code-generator.d.ts +1 -0
  4. package/dist/code-generator.d.ts.map +1 -0
  5. package/dist/config.d.ts +1 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/content-types.d.ts +1 -0
  8. package/dist/content-types.d.ts.map +1 -0
  9. package/dist/convert-query-params.d.ts +1 -0
  10. package/dist/convert-query-params.d.ts.map +1 -0
  11. package/dist/env-helper.d.ts +1 -0
  12. package/dist/env-helper.d.ts.map +1 -0
  13. package/dist/errors.d.ts +1 -0
  14. package/dist/errors.d.ts.map +1 -0
  15. package/dist/file.d.ts +1 -0
  16. package/dist/file.d.ts.map +1 -0
  17. package/dist/format-yup-error.d.ts +1 -0
  18. package/dist/format-yup-error.d.ts.map +1 -0
  19. package/dist/hooks.d.ts +1 -0
  20. package/dist/hooks.d.ts.map +1 -0
  21. package/dist/import-default.d.ts +1 -0
  22. package/dist/import-default.d.ts.map +1 -0
  23. package/dist/index.d.ts +20 -143
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +3046 -104
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +3029 -0
  28. package/dist/index.mjs.map +1 -0
  29. package/dist/object-formatting.d.ts +1 -0
  30. package/dist/object-formatting.d.ts.map +1 -0
  31. package/dist/operators.d.ts +1 -0
  32. package/dist/operators.d.ts.map +1 -0
  33. package/dist/pagination.d.ts +1 -0
  34. package/dist/pagination.d.ts.map +1 -0
  35. package/dist/parse-multipart.d.ts +2 -2
  36. package/dist/parse-multipart.d.ts.map +1 -0
  37. package/dist/parse-type.d.ts +1 -0
  38. package/dist/parse-type.d.ts.map +1 -0
  39. package/dist/policy.d.ts +1 -0
  40. package/dist/policy.d.ts.map +1 -0
  41. package/dist/print-value.d.ts +2 -1
  42. package/dist/print-value.d.ts.map +1 -0
  43. package/dist/provider-factory.d.ts +1 -0
  44. package/dist/provider-factory.d.ts.map +1 -0
  45. package/dist/relations.d.ts +1 -0
  46. package/dist/relations.d.ts.map +1 -0
  47. package/dist/sanitize/index.d.ts +1 -0
  48. package/dist/sanitize/index.d.ts.map +1 -0
  49. package/dist/sanitize/sanitizers.d.ts +1 -0
  50. package/dist/sanitize/sanitizers.d.ts.map +1 -0
  51. package/dist/sanitize/visitors/index.d.ts +1 -0
  52. package/dist/sanitize/visitors/index.d.ts.map +1 -0
  53. package/dist/sanitize/visitors/remove-disallowed-fields.d.ts +1 -0
  54. package/dist/sanitize/visitors/remove-disallowed-fields.d.ts.map +1 -0
  55. package/dist/sanitize/visitors/remove-dynamic-zones.d.ts +1 -0
  56. package/dist/sanitize/visitors/remove-dynamic-zones.d.ts.map +1 -0
  57. package/dist/sanitize/visitors/remove-morph-to-relations.d.ts +1 -0
  58. package/dist/sanitize/visitors/remove-morph-to-relations.d.ts.map +1 -0
  59. package/dist/sanitize/visitors/remove-password.d.ts +1 -0
  60. package/dist/sanitize/visitors/remove-password.d.ts.map +1 -0
  61. package/dist/sanitize/visitors/remove-private.d.ts +1 -0
  62. package/dist/sanitize/visitors/remove-private.d.ts.map +1 -0
  63. package/dist/sanitize/visitors/remove-restricted-fields.d.ts +1 -0
  64. package/dist/sanitize/visitors/remove-restricted-fields.d.ts.map +1 -0
  65. package/dist/sanitize/visitors/remove-restricted-relations.d.ts +1 -0
  66. package/dist/sanitize/visitors/remove-restricted-relations.d.ts.map +1 -0
  67. package/dist/set-creator-fields.d.ts +1 -0
  68. package/dist/set-creator-fields.d.ts.map +1 -0
  69. package/dist/string-formatting.d.ts +1 -0
  70. package/dist/string-formatting.d.ts.map +1 -0
  71. package/dist/template-configuration.d.ts +2 -1
  72. package/dist/template-configuration.d.ts.map +1 -0
  73. package/dist/template.d.ts +1 -0
  74. package/dist/template.d.ts.map +1 -0
  75. package/dist/traverse/factory.d.ts +1 -0
  76. package/dist/traverse/factory.d.ts.map +1 -0
  77. package/dist/traverse/index.d.ts +1 -0
  78. package/dist/traverse/index.d.ts.map +1 -0
  79. package/dist/traverse/query-fields.d.ts +1 -0
  80. package/dist/traverse/query-fields.d.ts.map +1 -0
  81. package/dist/traverse/query-filters.d.ts +1 -0
  82. package/dist/traverse/query-filters.d.ts.map +1 -0
  83. package/dist/traverse/query-populate.d.ts +1 -0
  84. package/dist/traverse/query-populate.d.ts.map +1 -0
  85. package/dist/traverse/query-sort.d.ts +1 -0
  86. package/dist/traverse/query-sort.d.ts.map +1 -0
  87. package/dist/traverse-entity.d.ts +1 -0
  88. package/dist/traverse-entity.d.ts.map +1 -0
  89. package/dist/types.d.ts +2 -1
  90. package/dist/types.d.ts.map +1 -0
  91. package/dist/validate/index.d.ts +1 -0
  92. package/dist/validate/index.d.ts.map +1 -0
  93. package/dist/validate/utils.d.ts +1 -0
  94. package/dist/validate/utils.d.ts.map +1 -0
  95. package/dist/validate/validators.d.ts +1 -0
  96. package/dist/validate/validators.d.ts.map +1 -0
  97. package/dist/validate/visitors/index.d.ts +1 -0
  98. package/dist/validate/visitors/index.d.ts.map +1 -0
  99. package/dist/validate/visitors/throw-disallowed-fields.d.ts +1 -0
  100. package/dist/validate/visitors/throw-disallowed-fields.d.ts.map +1 -0
  101. package/dist/validate/visitors/throw-dynamic-zones.d.ts +1 -0
  102. package/dist/validate/visitors/throw-dynamic-zones.d.ts.map +1 -0
  103. package/dist/validate/visitors/throw-morph-to-relations.d.ts +1 -0
  104. package/dist/validate/visitors/throw-morph-to-relations.d.ts.map +1 -0
  105. package/dist/validate/visitors/throw-password.d.ts +1 -0
  106. package/dist/validate/visitors/throw-password.d.ts.map +1 -0
  107. package/dist/validate/visitors/throw-private.d.ts +1 -0
  108. package/dist/validate/visitors/throw-private.d.ts.map +1 -0
  109. package/dist/validate/visitors/throw-restricted-fields.d.ts +1 -0
  110. package/dist/validate/visitors/throw-restricted-fields.d.ts.map +1 -0
  111. package/dist/validate/visitors/throw-restricted-relations.d.ts +1 -0
  112. package/dist/validate/visitors/throw-restricted-relations.d.ts.map +1 -0
  113. package/dist/validators.d.ts +1 -0
  114. package/dist/validators.d.ts.map +1 -0
  115. package/dist/webhook.d.ts +1 -0
  116. package/dist/webhook.d.ts.map +1 -0
  117. package/dist/yup.d.ts +1 -0
  118. package/dist/yup.d.ts.map +1 -0
  119. package/package.json +12 -12
  120. package/dist/async.js +0 -33
  121. package/dist/async.js.map +0 -1
  122. package/dist/code-generator.js +0 -11
  123. package/dist/code-generator.js.map +0 -1
  124. package/dist/config.js +0 -79
  125. package/dist/config.js.map +0 -1
  126. package/dist/content-types.js +0 -162
  127. package/dist/content-types.js.map +0 -1
  128. package/dist/convert-query-params.js +0 -477
  129. package/dist/convert-query-params.js.map +0 -1
  130. package/dist/env-helper.js +0 -84
  131. package/dist/env-helper.js.map +0 -1
  132. package/dist/errors.js +0 -101
  133. package/dist/errors.js.map +0 -1
  134. package/dist/file.js +0 -54
  135. package/dist/file.js.map +0 -1
  136. package/dist/format-yup-error.js +0 -17
  137. package/dist/format-yup-error.js.map +0 -1
  138. package/dist/hooks.js +0 -89
  139. package/dist/hooks.js.map +0 -1
  140. package/dist/import-default.js +0 -9
  141. package/dist/import-default.js.map +0 -1
  142. package/dist/object-formatting.js +0 -14
  143. package/dist/object-formatting.js.map +0 -1
  144. package/dist/operators.js +0 -72
  145. package/dist/operators.js.map +0 -1
  146. package/dist/pagination.js +0 -80
  147. package/dist/pagination.js.map +0 -1
  148. package/dist/parse-multipart.js +0 -36
  149. package/dist/parse-multipart.js.map +0 -1
  150. package/dist/parse-type.js +0 -108
  151. package/dist/parse-type.js.map +0 -1
  152. package/dist/policy.js +0 -109
  153. package/dist/policy.js.map +0 -1
  154. package/dist/print-value.js +0 -50
  155. package/dist/print-value.js.map +0 -1
  156. package/dist/provider-factory.js +0 -80
  157. package/dist/provider-factory.js.map +0 -1
  158. package/dist/relations.js +0 -23
  159. package/dist/relations.js.map +0 -1
  160. package/dist/sanitize/index.js +0 -156
  161. package/dist/sanitize/index.js.map +0 -1
  162. package/dist/sanitize/sanitizers.js +0 -147
  163. package/dist/sanitize/sanitizers.js.map +0 -1
  164. package/dist/sanitize/visitors/index.js +0 -21
  165. package/dist/sanitize/visitors/index.js.map +0 -1
  166. package/dist/sanitize/visitors/remove-disallowed-fields.js +0 -83
  167. package/dist/sanitize/visitors/remove-disallowed-fields.js.map +0 -1
  168. package/dist/sanitize/visitors/remove-dynamic-zones.js +0 -10
  169. package/dist/sanitize/visitors/remove-dynamic-zones.js.map +0 -1
  170. package/dist/sanitize/visitors/remove-morph-to-relations.js +0 -10
  171. package/dist/sanitize/visitors/remove-morph-to-relations.js.map +0 -1
  172. package/dist/sanitize/visitors/remove-password.js +0 -9
  173. package/dist/sanitize/visitors/remove-password.js.map +0 -1
  174. package/dist/sanitize/visitors/remove-private.js +0 -14
  175. package/dist/sanitize/visitors/remove-private.js.map +0 -1
  176. package/dist/sanitize/visitors/remove-restricted-fields.js +0 -25
  177. package/dist/sanitize/visitors/remove-restricted-fields.js.map +0 -1
  178. package/dist/sanitize/visitors/remove-restricted-relations.js +0 -88
  179. package/dist/sanitize/visitors/remove-restricted-relations.js.map +0 -1
  180. package/dist/set-creator-fields.js +0 -39
  181. package/dist/set-creator-fields.js.map +0 -1
  182. package/dist/string-formatting.js +0 -85
  183. package/dist/string-formatting.js.map +0 -1
  184. package/dist/template-configuration.js +0 -30
  185. package/dist/template-configuration.js.map +0 -1
  186. package/dist/template.js +0 -20
  187. package/dist/template.js.map +0 -1
  188. package/dist/traverse/factory.js +0 -127
  189. package/dist/traverse/factory.js.map +0 -1
  190. package/dist/traverse/index.js +0 -17
  191. package/dist/traverse/index.js.map +0 -1
  192. package/dist/traverse/query-fields.js +0 -35
  193. package/dist/traverse/query-fields.js.map +0 -1
  194. package/dist/traverse/query-filters.js +0 -75
  195. package/dist/traverse/query-filters.js.map +0 -1
  196. package/dist/traverse/query-populate.js +0 -171
  197. package/dist/traverse/query-populate.js.map +0 -1
  198. package/dist/traverse/query-sort.js +0 -117
  199. package/dist/traverse/query-sort.js.map +0 -1
  200. package/dist/traverse-entity.js +0 -134
  201. package/dist/traverse-entity.js.map +0 -1
  202. package/dist/types.js +0 -3
  203. package/dist/types.js.map +0 -1
  204. package/dist/validate/index.js +0 -121
  205. package/dist/validate/index.js.map +0 -1
  206. package/dist/validate/utils.js +0 -9
  207. package/dist/validate/utils.js.map +0 -1
  208. package/dist/validate/validators.js +0 -111
  209. package/dist/validate/validators.js.map +0 -1
  210. package/dist/validate/visitors/index.js +0 -21
  211. package/dist/validate/visitors/index.js.map +0 -1
  212. package/dist/validate/visitors/throw-disallowed-fields.js +0 -84
  213. package/dist/validate/visitors/throw-disallowed-fields.js.map +0 -1
  214. package/dist/validate/visitors/throw-dynamic-zones.js +0 -11
  215. package/dist/validate/visitors/throw-dynamic-zones.js.map +0 -1
  216. package/dist/validate/visitors/throw-morph-to-relations.js +0 -11
  217. package/dist/validate/visitors/throw-morph-to-relations.js.map +0 -1
  218. package/dist/validate/visitors/throw-password.js +0 -10
  219. package/dist/validate/visitors/throw-password.js.map +0 -1
  220. package/dist/validate/visitors/throw-private.js +0 -15
  221. package/dist/validate/visitors/throw-private.js.map +0 -1
  222. package/dist/validate/visitors/throw-restricted-fields.js +0 -24
  223. package/dist/validate/visitors/throw-restricted-fields.js.map +0 -1
  224. package/dist/validate/visitors/throw-restricted-relations.js +0 -81
  225. package/dist/validate/visitors/throw-restricted-relations.js.map +0 -1
  226. package/dist/validators.js +0 -64
  227. package/dist/validators.js.map +0 -1
  228. package/dist/webhook.js +0 -27
  229. package/dist/webhook.js.map +0 -1
  230. package/dist/yup.js +0 -108
  231. package/dist/yup.js.map +0 -1
package/dist/template.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLooseInterpolationRegExp = exports.createStrictInterpolationRegExp = void 0;
4
- /**
5
- * Create a strict interpolation RegExp based on the given variables' name
6
- */
7
- const createStrictInterpolationRegExp = (allowedVariableNames, flags) => {
8
- const oneOfVariables = allowedVariableNames.join('|');
9
- // 1. We need to match the delimiters: <%= ... %>
10
- // 2. We accept any number of whitespaces characters before and/or after the variable name: \s* ... \s*
11
- // 3. We only accept values from the variable list as interpolation variables' name: : (${oneOfVariables})
12
- return new RegExp(`<%=\\s*(${oneOfVariables})\\s*%>`, flags);
13
- };
14
- exports.createStrictInterpolationRegExp = createStrictInterpolationRegExp;
15
- /**
16
- * Create a loose interpolation RegExp to match as many groups as possible
17
- */
18
- const createLooseInterpolationRegExp = (flags) => new RegExp(/<%=([\s\S]+?)%>/, flags);
19
- exports.createLooseInterpolationRegExp = createLooseInterpolationRegExp;
20
- //# sourceMappingURL=template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAM,+BAA+B,GAAG,CAAC,oBAA8B,EAAE,KAAa,EAAE,EAAE;IACxF,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtD,iDAAiD;IACjD,uGAAuG;IACvG,0GAA0G;IAC1G,OAAO,IAAI,MAAM,CAAC,WAAW,cAAc,SAAS,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC,CAAC;AAOO,0EAA+B;AALxC;;GAEG;AACH,MAAM,8BAA8B,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAErD,wEAA8B"}
@@ -1,127 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable @typescript-eslint/no-loop-func */
4
- const fp_1 = require("lodash/fp");
5
- const DEFAULT_PATH = { raw: null, attribute: null };
6
- exports.default = () => {
7
- const state = {
8
- parsers: [],
9
- interceptors: [],
10
- ignore: [],
11
- handlers: {
12
- attributes: [],
13
- common: [],
14
- },
15
- };
16
- const traverse = async (visitor, options, data) => {
17
- const { path = DEFAULT_PATH, schema } = options ?? {};
18
- // interceptors
19
- for (const { predicate, handler } of state.interceptors) {
20
- if (predicate(data)) {
21
- return handler(visitor, options, data, { recurse: traverse });
22
- }
23
- }
24
- // parsers
25
- const parser = state.parsers.find((parser) => parser.predicate(data))?.parser;
26
- const utils = parser?.(data);
27
- // Return the data untouched if we don't know how to traverse it
28
- if (!utils) {
29
- return data;
30
- }
31
- // main loop
32
- let out = utils.transform(data);
33
- const keys = utils.keys(out);
34
- for (const key of keys) {
35
- const attribute = schema?.attributes?.[key] ??
36
- // FIX: Needed to not break existing behavior on the API.
37
- // It looks for the attribute in the DB metadata when the key is in snake_case
38
- schema?.attributes?.[strapi.db.metadata.get(schema?.uid).columnToAttribute[key]];
39
- const newPath = { ...path };
40
- newPath.raw = (0, fp_1.isNil)(path.raw) ? key : `${path.raw}.${key}`;
41
- if (!(0, fp_1.isNil)(attribute)) {
42
- newPath.attribute = (0, fp_1.isNil)(path.attribute) ? key : `${path.attribute}.${key}`;
43
- }
44
- // visitors
45
- const visitorOptions = {
46
- key,
47
- value: utils.get(key, out),
48
- attribute,
49
- schema,
50
- path: newPath,
51
- data: out,
52
- };
53
- const transformUtils = {
54
- remove(key) {
55
- out = utils.remove(key, out);
56
- },
57
- set(key, value) {
58
- out = utils.set(key, value, out);
59
- },
60
- recurse: traverse,
61
- };
62
- await visitor(visitorOptions, (0, fp_1.pick)(['remove', 'set'], transformUtils));
63
- const value = utils.get(key, out);
64
- const createContext = () => ({
65
- key,
66
- value,
67
- attribute,
68
- schema,
69
- path: newPath,
70
- data: out,
71
- visitor,
72
- });
73
- // ignore
74
- const ignoreCtx = createContext();
75
- const shouldIgnore = state.ignore.some((predicate) => predicate(ignoreCtx));
76
- if (shouldIgnore) {
77
- continue;
78
- }
79
- // handlers
80
- const handlers = [...state.handlers.common, ...state.handlers.attributes];
81
- for await (const handler of handlers) {
82
- const ctx = createContext();
83
- const pass = await handler.predicate(ctx);
84
- if (pass) {
85
- await handler.handler(ctx, (0, fp_1.pick)(['recurse', 'set'], transformUtils));
86
- }
87
- }
88
- }
89
- return out;
90
- };
91
- return {
92
- traverse,
93
- intercept(predicate, handler) {
94
- state.interceptors.push({ predicate, handler });
95
- return this;
96
- },
97
- parse(predicate, parser) {
98
- state.parsers.push({ predicate, parser });
99
- return this;
100
- },
101
- ignore(predicate) {
102
- state.ignore.push(predicate);
103
- return this;
104
- },
105
- on(predicate, handler) {
106
- state.handlers.common.push({ predicate, handler });
107
- return this;
108
- },
109
- onAttribute(predicate, handler) {
110
- state.handlers.attributes.push({ predicate, handler });
111
- return this;
112
- },
113
- onRelation(handler) {
114
- return this.onAttribute(({ attribute }) => attribute?.type === 'relation', handler);
115
- },
116
- onMedia(handler) {
117
- return this.onAttribute(({ attribute }) => attribute?.type === 'media', handler);
118
- },
119
- onComponent(handler) {
120
- return this.onAttribute(({ attribute }) => attribute?.type === 'component', handler);
121
- },
122
- onDynamicZone(handler) {
123
- return this.onAttribute(({ attribute }) => attribute?.type === 'dynamiczone', handler);
124
- },
125
- };
126
- };
127
- //# sourceMappingURL=factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/traverse/factory.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
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.traverseQueryFields = exports.traverseQueryPopulate = exports.traverseQuerySort = exports.traverseQueryFilters = exports.factory = void 0;
7
- var factory_1 = require("./factory");
8
- Object.defineProperty(exports, "factory", { enumerable: true, get: function () { return __importDefault(factory_1).default; } });
9
- var query_filters_1 = require("./query-filters");
10
- Object.defineProperty(exports, "traverseQueryFilters", { enumerable: true, get: function () { return __importDefault(query_filters_1).default; } });
11
- var query_sort_1 = require("./query-sort");
12
- Object.defineProperty(exports, "traverseQuerySort", { enumerable: true, get: function () { return __importDefault(query_sort_1).default; } });
13
- var query_populate_1 = require("./query-populate");
14
- Object.defineProperty(exports, "traverseQueryPopulate", { enumerable: true, get: function () { return __importDefault(query_populate_1).default; } });
15
- var query_fields_1 = require("./query-fields");
16
- Object.defineProperty(exports, "traverseQueryFields", { enumerable: true, get: function () { return __importDefault(query_fields_1).default; } });
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/traverse/index.ts"],"names":[],"mappings":";;;;;;AAAA,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,iDAAkE;AAAzD,sIAAA,OAAO,OAAwB;AACxC,2CAA4D;AAAnD,gIAAA,OAAO,OAAqB;AACrC,mDAAoE;AAA3D,wIAAA,OAAO,OAAyB;AACzC,+CAAgE;AAAvD,oIAAA,OAAO,OAAuB"}
@@ -1,35 +0,0 @@
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
- const fp_1 = require("lodash/fp");
7
- const factory_1 = __importDefault(require("./factory"));
8
- const isStringArray = (value) => (0, fp_1.isArray)(value) && value.every(fp_1.isString);
9
- const fields = (0, factory_1.default)()
10
- // Interecept array of strings
11
- .intercept(isStringArray, async (visitor, options, fields, { recurse }) => {
12
- return Promise.all(fields.map((field) => recurse(visitor, options, field)));
13
- })
14
- // Return wildcards as is
15
- .intercept((value) => (0, fp_1.eq)('*', value), (0, fp_1.constant)('*'))
16
- // Parse string values
17
- // Since we're parsing strings only, each value should be an attribute name (and it's value, undefined),
18
- // thus it shouldn't be possible to set a new value, and get should return the whole data if key === data
19
- .parse(fp_1.isString, () => ({
20
- transform: fp_1.trim,
21
- remove(key, data) {
22
- return data === key ? undefined : data;
23
- },
24
- set(_key, _value, data) {
25
- return data;
26
- },
27
- keys(data) {
28
- return [data];
29
- },
30
- get(key, data) {
31
- return key === data ? data : undefined;
32
- },
33
- }));
34
- exports.default = (0, fp_1.curry)(fields.traverse);
35
- //# sourceMappingURL=query-fields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-fields.js","sourceRoot":"","sources":["../../src/traverse/query-fields.ts"],"names":[],"mappings":";;;;;AAAA,kCAAyE;AAEzE,wDAAwC;AAExC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAqB,EAAE,CAC1D,IAAA,YAAO,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,aAAQ,CAAC,CAAC;AAE1C,MAAM,MAAM,GAAG,IAAA,iBAAe,GAAE;IAC9B,8BAA8B;KAC7B,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACxE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC;IACF,yBAAyB;KACxB,SAAS,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,IAAA,OAAE,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE,IAAA,aAAQ,EAAC,GAAG,CAAC,CAAC;IACrE,sBAAsB;IACtB,wGAAwG;IACxG,yGAAyG;KACxG,KAAK,CAAC,aAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACtB,SAAS,EAAE,SAAI;IAEf,MAAM,CAAC,GAAG,EAAE,IAAI;QACd,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAI;QACP,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,GAAG,EAAE,IAAI;QACX,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACzC,CAAC;CACF,CAAC,CAAC,CAAC;AAEN,kBAAe,IAAA,UAAK,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC"}
@@ -1,75 +0,0 @@
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
- const fp_1 = require("lodash/fp");
7
- const factory_1 = __importDefault(require("./factory"));
8
- const isObj = (value) => (0, fp_1.isObject)(value);
9
- const filters = (0, factory_1.default)()
10
- .intercept(
11
- // Intercept filters arrays and apply the traversal to each one individually
12
- fp_1.isArray, async (visitor, options, filters, { recurse }) => {
13
- return Promise.all(filters.map((filter, i) => {
14
- // In filters, only operators such as $and, $in, $notIn or $or and implicit operators like [...]
15
- // can have a value array, thus we can update the raw path but not the attribute one
16
- const newPath = options.path
17
- ? { ...options.path, raw: `${options.path.raw}[${i}]` }
18
- : options.path;
19
- return recurse(visitor, { ...options, path: newPath }, filter);
20
- })
21
- // todo: move that to the visitors
22
- ).then((res) => res.filter((val) => !((0, fp_1.isObject)(val) && (0, fp_1.isEmpty)(val))));
23
- })
24
- .intercept(
25
- // Ignore non object filters and return the value as-is
26
- (filters) => !(0, fp_1.isObject)(filters), (_, __, filters) => {
27
- return filters;
28
- })
29
- // Parse object values
30
- .parse(isObj, () => ({
31
- transform: fp_1.cloneDeep,
32
- remove(key, data) {
33
- return (0, fp_1.omit)(key, data);
34
- },
35
- set(key, value, data) {
36
- return { ...data, [key]: value };
37
- },
38
- keys(data) {
39
- return Object.keys(data);
40
- },
41
- get(key, data) {
42
- return data[key];
43
- },
44
- }))
45
- // Ignore null or undefined values
46
- .ignore(({ value }) => (0, fp_1.isNil)(value))
47
- // Recursion on operators (non attributes)
48
- .on(({ attribute }) => (0, fp_1.isNil)(attribute), async ({ key, visitor, path, value, schema }, { set, recurse }) => {
49
- set(key, await recurse(visitor, { schema, path }, value));
50
- })
51
- // Handle relation recursion
52
- .onRelation(async ({ key, attribute, visitor, path, value }, { set, recurse }) => {
53
- const isMorphRelation = attribute.relation.toLowerCase().startsWith('morph');
54
- if (isMorphRelation) {
55
- return;
56
- }
57
- const targetSchemaUID = attribute.target;
58
- const targetSchema = strapi.getModel(targetSchemaUID);
59
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
60
- set(key, newValue);
61
- })
62
- .onComponent(async ({ key, attribute, visitor, path, value }, { set, recurse }) => {
63
- const targetSchema = strapi.getModel(attribute.component);
64
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
65
- set(key, newValue);
66
- })
67
- // Handle media recursion
68
- .onMedia(async ({ key, visitor, path, value }, { set, recurse }) => {
69
- const targetSchemaUID = 'plugin::upload.file';
70
- const targetSchema = strapi.getModel(targetSchemaUID);
71
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
72
- set(key, newValue);
73
- });
74
- exports.default = (0, fp_1.curry)(filters.traverse);
75
- //# sourceMappingURL=query-filters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-filters.js","sourceRoot":"","sources":["../../src/traverse/query-filters.ts"],"names":[],"mappings":"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"}
@@ -1,171 +0,0 @@
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
- const fp_1 = require("lodash/fp");
7
- const factory_1 = __importDefault(require("./factory"));
8
- const content_types_1 = require("../content-types");
9
- const isKeyword = (keyword) => {
10
- return ({ key, attribute }) => {
11
- return !attribute && keyword === key;
12
- };
13
- };
14
- const isStringArray = (value) => (0, fp_1.isArray)(value) && value.every(fp_1.isString);
15
- const isWildCardConstant = (value) => value === '*';
16
- const isObj = (value) => (0, fp_1.isObject)(value);
17
- const populate = (0, factory_1.default)()
18
- // Array of strings ['foo', 'foo.bar'] => map(recurse), then filter out empty items
19
- .intercept(isStringArray, async (visitor, options, populate, { recurse }) => {
20
- const visitedPopulate = await Promise.all(populate.map((nestedPopulate) => recurse(visitor, options, nestedPopulate)));
21
- return visitedPopulate.filter((item) => !(0, fp_1.isNil)(item));
22
- })
23
- // Transform wildcard populate to an exhaustive list of attributes to populate.
24
- .intercept(isWildCardConstant, (visitor, options, _data, { recurse }) => {
25
- const attributes = options.schema?.attributes;
26
- // This should never happen, but adding the check in
27
- // case this method is called with wrong parameters
28
- if (!attributes) {
29
- return '*';
30
- }
31
- const parsedPopulate = Object.entries(attributes)
32
- // Get the list of all attributes that can be populated
33
- .filter(([, value]) => ['relation', 'component', 'dynamiczone', 'media'].includes(value.type))
34
- // Only keep the attributes key
35
- .reduce((acc, [key]) => ({ ...acc, [key]: true }), {});
36
- return recurse(visitor, options, parsedPopulate);
37
- })
38
- // Parse string values
39
- .parse(fp_1.isString, () => {
40
- const tokenize = (0, fp_1.split)('.');
41
- const recompose = (0, fp_1.join)('.');
42
- return {
43
- transform: fp_1.trim,
44
- remove(key, data) {
45
- const [root] = tokenize(data);
46
- return root === key ? undefined : data;
47
- },
48
- set(key, value, data) {
49
- const [root] = tokenize(data);
50
- if (root !== key) {
51
- return data;
52
- }
53
- return (0, fp_1.isNil)(value) || (0, fp_1.isEmpty)(value) ? root : `${root}.${value}`;
54
- },
55
- keys(data) {
56
- const v = (0, fp_1.first)(tokenize(data));
57
- return v ? [v] : [];
58
- },
59
- get(key, data) {
60
- const [root, ...rest] = tokenize(data);
61
- return key === root ? recompose(rest) : undefined;
62
- },
63
- };
64
- })
65
- // Parse object values
66
- .parse(isObj, () => ({
67
- transform: fp_1.cloneDeep,
68
- remove(key, data) {
69
- // eslint-disable-next-line no-unused-vars
70
- const { [key]: ignored, ...rest } = data;
71
- return rest;
72
- },
73
- set(key, value, data) {
74
- return { ...data, [key]: value };
75
- },
76
- keys(data) {
77
- return Object.keys(data);
78
- },
79
- get(key, data) {
80
- return data[key];
81
- },
82
- }))
83
- .ignore(({ key, attribute }) => {
84
- return ['sort', 'filters', 'fields'].includes(key) && !attribute;
85
- })
86
- .on(
87
- // Handle recursion on populate."populate"
88
- isKeyword('populate'), async ({ key, visitor, path, value, schema }, { set, recurse }) => {
89
- const newValue = await recurse(visitor, { schema, path }, value);
90
- set(key, newValue);
91
- })
92
- .on(isKeyword('on'), async ({ key, visitor, path, value }, { set, recurse }) => {
93
- const newOn = {};
94
- if (!isObj(value)) {
95
- return;
96
- }
97
- for (const [uid, subPopulate] of Object.entries(value)) {
98
- const model = strapi.getModel(uid);
99
- const newPath = { ...path, raw: `${path.raw}[${uid}]` };
100
- newOn[uid] = await recurse(visitor, { schema: model, path: newPath }, subPopulate);
101
- }
102
- set(key, newOn);
103
- })
104
- // Handle populate on relation
105
- .onRelation(async ({ key, value, attribute, visitor, path, schema }, { set, recurse }) => {
106
- if ((0, fp_1.isNil)(value)) {
107
- return;
108
- }
109
- if ((0, content_types_1.isMorphToRelationalAttribute)(attribute)) {
110
- // Don't traverse values that cannot be parsed
111
- if (!(0, fp_1.isObject)(value) || !('on' in value && (0, fp_1.isObject)(value?.on))) {
112
- return;
113
- }
114
- // If there is a populate fragment defined, traverse it
115
- const newValue = await recurse(visitor, { schema, path }, { on: value?.on });
116
- set(key, { on: newValue });
117
- }
118
- const targetSchemaUID = attribute.target;
119
- const targetSchema = strapi.getModel(targetSchemaUID);
120
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
121
- set(key, newValue);
122
- })
123
- // Handle populate on media
124
- .onMedia(async ({ key, path, visitor, value }, { recurse, set }) => {
125
- if ((0, fp_1.isNil)(value)) {
126
- return;
127
- }
128
- const targetSchemaUID = 'plugin::upload.file';
129
- const targetSchema = strapi.getModel(targetSchemaUID);
130
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
131
- set(key, newValue);
132
- })
133
- // Handle populate on components
134
- .onComponent(async ({ key, value, visitor, path, attribute }, { recurse, set }) => {
135
- if ((0, fp_1.isNil)(value)) {
136
- return;
137
- }
138
- const targetSchema = strapi.getModel(attribute.component);
139
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
140
- set(key, newValue);
141
- })
142
- // Handle populate on dynamic zones
143
- .onDynamicZone(async ({ key, value, attribute, schema, visitor, path }, { set, recurse }) => {
144
- if ((0, fp_1.isNil)(value)) {
145
- return;
146
- }
147
- if ((0, fp_1.isObject)(value)) {
148
- const { components } = attribute;
149
- const newValue = {};
150
- // Handle legacy DZ params
151
- let newProperties = (0, fp_1.omit)('on', value);
152
- for (const componentUID of components) {
153
- const componentSchema = strapi.getModel(componentUID);
154
- newProperties = await recurse(visitor, { schema: componentSchema, path }, newProperties);
155
- }
156
- Object.assign(newValue, newProperties);
157
- // Handle new morph fragment syntax
158
- if ('on' in value && value.on) {
159
- const newOn = await recurse(visitor, { schema, path }, { on: value.on });
160
- // Recompose both syntaxes
161
- Object.assign(newValue, newOn);
162
- }
163
- set(key, newValue);
164
- }
165
- else {
166
- const newValue = await recurse(visitor, { schema, path }, value);
167
- set(key, newValue);
168
- }
169
- });
170
- exports.default = (0, fp_1.curry)(populate.traverse);
171
- //# sourceMappingURL=query-populate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-populate.js","sourceRoot":"","sources":["../../src/traverse/query-populate.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
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
- const fp_1 = require("lodash/fp");
7
- const factory_1 = __importDefault(require("./factory"));
8
- const ORDERS = { asc: 'asc', desc: 'desc' };
9
- const ORDER_VALUES = Object.values(ORDERS);
10
- const isSortOrder = (value) => ORDER_VALUES.includes(value.toLowerCase());
11
- const isStringArray = (value) => Array.isArray(value) && value.every(fp_1.isString);
12
- const isObjectArray = (value) => Array.isArray(value) && value.every(fp_1.isObject);
13
- const isNestedSorts = (value) => (0, fp_1.isString)(value) && value.split(',').length > 1;
14
- const isObj = (value) => (0, fp_1.isObject)(value);
15
- const sort = (0, factory_1.default)()
16
- .intercept(
17
- // String with chained sorts (foo,bar,foobar) => split, map(recurse), then recompose
18
- isNestedSorts, async (visitor, options, sort, { recurse }) => {
19
- return Promise.all(sort
20
- .split(',')
21
- .map(fp_1.trim)
22
- .map((nestedSort) => recurse(visitor, options, nestedSort))).then((res) => res.filter((part) => !(0, fp_1.isEmpty)(part)).join(','));
23
- })
24
- .intercept(
25
- // Array of strings ['foo', 'foo,bar'] => map(recurse), then filter out empty items
26
- isStringArray, async (visitor, options, sort, { recurse }) => {
27
- return Promise.all(sort.map((nestedSort) => recurse(visitor, options, nestedSort))).then((res) => res.filter((nestedSort) => !(0, fp_1.isEmpty)(nestedSort)));
28
- })
29
- .intercept(
30
- // Array of objects [{ foo: 'asc' }, { bar: 'desc', baz: 'asc' }] => map(recurse), then filter out empty items
31
- isObjectArray, async (visitor, options, sort, { recurse }) => {
32
- return Promise.all(sort.map((nestedSort) => recurse(visitor, options, nestedSort))).then((res) => res.filter((nestedSort) => !(0, fp_1.isEmpty)(nestedSort)));
33
- })
34
- // Parse string values
35
- .parse(fp_1.isString, () => {
36
- const tokenize = (0, fp_1.pipe)((0, fp_1.split)('.'), (0, fp_1.map)((0, fp_1.split)(':')), fp_1.flatten);
37
- const recompose = (parts) => {
38
- if (parts.length === 0) {
39
- return undefined;
40
- }
41
- return parts.reduce((acc, part) => {
42
- if ((0, fp_1.isEmpty)(part)) {
43
- return acc;
44
- }
45
- if (acc === '') {
46
- return part;
47
- }
48
- return isSortOrder(part) ? `${acc}:${part}` : `${acc}.${part}`;
49
- }, '');
50
- };
51
- return {
52
- transform: fp_1.trim,
53
- remove(key, data) {
54
- const [root] = tokenize(data);
55
- return root === key ? undefined : data;
56
- },
57
- set(key, value, data) {
58
- const [root] = tokenize(data);
59
- if (root !== key) {
60
- return data;
61
- }
62
- return (0, fp_1.isNil)(value) ? root : `${root}.${value}`;
63
- },
64
- keys(data) {
65
- const v = (0, fp_1.first)(tokenize(data));
66
- return v ? [v] : [];
67
- },
68
- get(key, data) {
69
- const [root, ...rest] = tokenize(data);
70
- return key === root ? recompose(rest) : undefined;
71
- },
72
- };
73
- })
74
- // Parse object values
75
- .parse(isObj, () => ({
76
- transform: fp_1.cloneDeep,
77
- remove(key, data) {
78
- // eslint-disable-next-line no-unused-vars
79
- const { [key]: ignored, ...rest } = data;
80
- return rest;
81
- },
82
- set(key, value, data) {
83
- return { ...data, [key]: value };
84
- },
85
- keys(data) {
86
- return Object.keys(data);
87
- },
88
- get(key, data) {
89
- return data[key];
90
- },
91
- }))
92
- // Handle deep sort on relation
93
- .onRelation(async ({ key, value, attribute, visitor, path }, { set, recurse }) => {
94
- const isMorphRelation = attribute.relation.toLowerCase().startsWith('morph');
95
- if (isMorphRelation) {
96
- return;
97
- }
98
- const targetSchemaUID = attribute.target;
99
- const targetSchema = strapi.getModel(targetSchemaUID);
100
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
101
- set(key, newValue);
102
- })
103
- // Handle deep sort on media
104
- .onMedia(async ({ key, path, visitor, value }, { recurse, set }) => {
105
- const targetSchemaUID = 'plugin::upload.file';
106
- const targetSchema = strapi.getModel(targetSchemaUID);
107
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
108
- set(key, newValue);
109
- })
110
- // Handle deep sort on components
111
- .onComponent(async ({ key, value, visitor, path, attribute }, { recurse, set }) => {
112
- const targetSchema = strapi.getModel(attribute.component);
113
- const newValue = await recurse(visitor, { schema: targetSchema, path }, value);
114
- set(key, newValue);
115
- });
116
- exports.default = (0, fp_1.curry)(sort.traverse);
117
- //# sourceMappingURL=query-sort.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-sort.js","sourceRoot":"","sources":["../../src/traverse/query-sort.ts"],"names":[],"mappings":"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"}