@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-multipart.js","sourceRoot":"","sources":["../src/parse-multipart.ts"],"names":[],"mappings":";;;;AAAA,oDAAuB;AAGvB,iBAAS,CAAC,GAAgB,EAAE,EAAE;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;QACxB,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KAC9C;IAED,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IAE9C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACd,OAAO,GAAG,CAAC,UAAU,CACnB,sFAAsF,CACvF,CAAC;KACH;IAED,IAAI,IAAI,CAAC;IACT,IAAI;QACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,GAAG,CAAC,UAAU,CAAC,sDAAsD,CAAC,CAAC;KAC/E;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,gBAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YACnD,OAAO,GAAG,CAAC,UAAU,CACnB;gGACwF,CACzF,CAAC;SACH;QAED,MAAM,IAAI,GAAG,gBAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAuC,CAAC,CAAC;IAE5C,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const _ = require("lodash");
4
- const dates = require("date-fns");
5
- const timeRegex = /^(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]{1,3})?$/;
6
- const isDate = (v) => {
7
- return dates.isDate(v);
8
- };
9
- const parseTime = (value) => {
10
- if (isDate(value)) {
11
- return dates.format(value, 'HH:mm:ss.SSS');
12
- }
13
- if (typeof value !== 'string') {
14
- throw new Error(`Expected a string, got a ${typeof value}`);
15
- }
16
- const result = value.match(timeRegex);
17
- if (result === null) {
18
- throw new Error('Invalid time format, expected HH:mm:ss.SSS');
19
- }
20
- const [, hours, minutes, seconds, fraction = '.000'] = result;
21
- const fractionPart = _.padEnd(fraction.slice(1), 3, '0');
22
- return `${hours}:${minutes}:${seconds}.${fractionPart}`;
23
- };
24
- const parseDate = (value) => {
25
- if (isDate(value)) {
26
- return dates.format(value, 'yyyy-MM-dd');
27
- }
28
- if (typeof value !== 'string') {
29
- throw new Error(`Expected a string, got a ${typeof value}`);
30
- }
31
- try {
32
- const date = dates.parseISO(value);
33
- if (dates.isValid(date))
34
- return dates.format(date, 'yyyy-MM-dd');
35
- throw new Error(`Invalid format, expected an ISO compatible date`);
36
- }
37
- catch (error) {
38
- throw new Error(`Invalid format, expected an ISO compatible date`);
39
- }
40
- };
41
- const parseDateTimeOrTimestamp = (value) => {
42
- if (isDate(value)) {
43
- return value;
44
- }
45
- if (typeof value !== 'string') {
46
- throw new Error(`Expected a string, got a ${typeof value}`);
47
- }
48
- try {
49
- const date = dates.parseISO(value);
50
- if (dates.isValid(date))
51
- return date;
52
- const milliUnixDate = dates.parse(value, 'T', new Date());
53
- if (dates.isValid(milliUnixDate))
54
- return milliUnixDate;
55
- throw new Error(`Invalid format, expected a timestamp or an ISO date`);
56
- }
57
- catch (error) {
58
- throw new Error(`Invalid format, expected a timestamp or an ISO date`);
59
- }
60
- };
61
- const parseBoolean = (value, options) => {
62
- const { forceCast = false } = options;
63
- if (typeof value === 'boolean') {
64
- return value;
65
- }
66
- if (typeof value === 'string' || typeof value === 'number') {
67
- if (['true', 't', '1', 1].includes(value)) {
68
- return true;
69
- }
70
- if (['false', 'f', '0', 0].includes(value)) {
71
- return false;
72
- }
73
- }
74
- if (forceCast) {
75
- return Boolean(value);
76
- }
77
- throw new Error('Invalid boolean input. Expected "t","1","true","false","0","f"');
78
- };
79
- /**
80
- * Cast basic values based on attribute type
81
- */
82
- const parseType = (options) => {
83
- const { type, value, forceCast } = options;
84
- switch (type) {
85
- case 'boolean':
86
- return parseBoolean(value, { forceCast });
87
- case 'integer':
88
- case 'biginteger':
89
- case 'float':
90
- case 'decimal': {
91
- return _.toNumber(value);
92
- }
93
- case 'time': {
94
- return parseTime(value);
95
- }
96
- case 'date': {
97
- return parseDate(value);
98
- }
99
- case 'timestamp':
100
- case 'datetime': {
101
- return parseDateTimeOrTimestamp(value);
102
- }
103
- default:
104
- return value;
105
- }
106
- };
107
- exports.default = parseType;
108
- //# sourceMappingURL=parse-type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-type.js","sourceRoot":"","sources":["../src/parse-type.ts"],"names":[],"mappings":"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"}
package/dist/policy.js DELETED
@@ -1,109 +0,0 @@
1
- "use strict";
2
- /**
3
- * Policies util
4
- */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.createPolicyContext = exports.createPolicy = exports.globalPolicy = exports.resolve = exports.get = void 0;
10
- const lodash_1 = __importDefault(require("lodash"));
11
- const fp_1 = require("lodash/fp");
12
- const PLUGIN_PREFIX = 'plugin::';
13
- const API_PREFIX = 'api::';
14
- const parsePolicy = (policy) => {
15
- if (typeof policy === 'string') {
16
- return { policyName: policy, config: {} };
17
- }
18
- const { name, config } = policy;
19
- return { policyName: name, config };
20
- };
21
- const searchLocalPolicy = (policyName, policyContext) => {
22
- const { pluginName, apiName } = policyContext ?? {};
23
- if (pluginName) {
24
- return strapi.policy(`${PLUGIN_PREFIX}${pluginName}.${policyName}`);
25
- }
26
- if (apiName) {
27
- return strapi.policy(`${API_PREFIX}${apiName}.${policyName}`);
28
- }
29
- };
30
- const globalPolicy = ({ method, endpoint, controller, action, plugin }) => {
31
- return async (ctx, next) => {
32
- ctx.request.route = {
33
- endpoint: `${method} ${endpoint}`,
34
- controller: lodash_1.default.toLower(controller),
35
- action: lodash_1.default.toLower(action),
36
- verb: lodash_1.default.toLower(method),
37
- plugin,
38
- };
39
- await next();
40
- };
41
- };
42
- exports.globalPolicy = globalPolicy;
43
- const resolvePolicies = (config, policyContext) => {
44
- const { pluginName, apiName } = policyContext ?? {};
45
- return config.map((policyConfig) => {
46
- return {
47
- handler: getPolicy(policyConfig, { pluginName, apiName }),
48
- config: (typeof policyConfig === 'object' && policyConfig.config) || {},
49
- };
50
- });
51
- };
52
- exports.resolve = resolvePolicies;
53
- const findPolicy = (name, policyContext) => {
54
- const { pluginName, apiName } = policyContext ?? {};
55
- const resolvedPolicy = strapi.policy(name);
56
- if (resolvedPolicy !== undefined) {
57
- return resolvedPolicy;
58
- }
59
- const localPolicy = searchLocalPolicy(name, { pluginName, apiName });
60
- if (localPolicy !== undefined) {
61
- return localPolicy;
62
- }
63
- throw new Error(`Could not find policy "${name}"`);
64
- };
65
- const getPolicy = (policyConfig, policyContext) => {
66
- const { pluginName, apiName } = policyContext ?? {};
67
- if (typeof policyConfig === 'function') {
68
- return policyConfig;
69
- }
70
- const { policyName, config } = parsePolicy(policyConfig);
71
- const policy = findPolicy(policyName, { pluginName, apiName });
72
- if (typeof policy === 'function') {
73
- return policy;
74
- }
75
- if (policy.validator) {
76
- policy.validator(config);
77
- }
78
- return policy.handler;
79
- };
80
- exports.get = getPolicy;
81
- const createPolicy = (options) => {
82
- const { name = 'unnamed', validator, handler } = options;
83
- const wrappedValidator = (config) => {
84
- if (validator) {
85
- try {
86
- validator(config);
87
- }
88
- catch (e) {
89
- throw new Error(`Invalid config passed to "${name}" policy.`);
90
- }
91
- }
92
- };
93
- return {
94
- name,
95
- validator: wrappedValidator,
96
- handler,
97
- };
98
- };
99
- exports.createPolicy = createPolicy;
100
- const createPolicyContext = (type, ctx) => {
101
- return Object.assign({
102
- is: (0, fp_1.eq)(type),
103
- get type() {
104
- return type;
105
- },
106
- }, ctx);
107
- };
108
- exports.createPolicyContext = createPolicyContext;
109
- //# sourceMappingURL=policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- // Code copied from the yup library (https://github.com/jquense/yup)
3
- // https://github.com/jquense/yup/blob/2778b88bdacd5260d593c6468793da2e77daf21f/src/util/printValue.ts
4
- const { toString } = Object.prototype;
5
- const errorToString = Error.prototype.toString;
6
- const regExpToString = RegExp.prototype.toString;
7
- const symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';
8
- const SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/;
9
- function printNumber(val) {
10
- // eslint-disable-next-line eqeqeq
11
- if (val != +val)
12
- return 'NaN';
13
- const isNegativeZero = val === 0 && 1 / val < 0;
14
- return isNegativeZero ? '-0' : `${val}`;
15
- }
16
- function printSimpleValue(val, quoteStrings = false) {
17
- if (val == null || val === true || val === false)
18
- return `${val}`;
19
- if (typeof val === 'number')
20
- return printNumber(val);
21
- if (typeof val === 'string')
22
- return quoteStrings ? `"${val}"` : val;
23
- if (typeof val === 'function')
24
- return `[Function ${val.name || 'anonymous'}]`;
25
- if (typeof val === 'symbol')
26
- return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');
27
- const tag = toString.call(val).slice(8, -1);
28
- if (tag === 'Date') {
29
- const v = val;
30
- return Number.isNaN(v.getTime()) ? `${v}` : v.toISOString();
31
- }
32
- if (tag === 'Error' || val instanceof Error)
33
- return `[${errorToString.call(val)}]`;
34
- if (tag === 'RegExp')
35
- return regExpToString.call(val);
36
- return null;
37
- }
38
- function printValue(value, quoteStrings) {
39
- const result = printSimpleValue(value, quoteStrings);
40
- if (result !== null)
41
- return result;
42
- return JSON.stringify(value, function replacer(key, value) {
43
- const result = printSimpleValue(this[key], quoteStrings);
44
- if (result !== null)
45
- return result;
46
- return value;
47
- }, 2);
48
- }
49
- module.exports = printValue;
50
- //# sourceMappingURL=print-value.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print-value.js","sourceRoot":"","sources":["../src/print-value.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,sGAAsG;AAEtG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;AACtC,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjD,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AAE5F,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAE7C,SAAS,WAAW,CAAC,GAAW;IAC9B,kCAAkC;IAClC,IAAI,GAAG,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,cAAc,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAChD,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,YAAY,GAAG,KAAK;IAC1D,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,GAAG,GAAG,EAAE,CAAC;IAElE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACpE,IAAI,OAAO,GAAG,KAAK,UAAU;QAAE,OAAO,aAAa,GAAG,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;IAC9E,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAElG,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,GAAG,KAAK,MAAM,EAAE;QAClB,MAAM,CAAC,GAAG,GAAW,CAAC;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC7D;IACD,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACnF,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,YAAqB;IACvD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAEnC,OAAO,IAAI,CAAC,SAAS,CACnB,KAAK,EACL,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC,EACD,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iBAAS,UAAU,CAAC"}
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fp_1 = require("lodash/fp");
4
- const hooks_1 = require("./hooks");
5
- /**
6
- * Creates a new object containing various hooks used by the providers
7
- */
8
- const createProviderHooksMap = () => ({
9
- // Register events
10
- willRegister: (0, hooks_1.createAsyncSeriesHook)(),
11
- didRegister: (0, hooks_1.createAsyncParallelHook)(),
12
- // Delete events
13
- willDelete: (0, hooks_1.createAsyncParallelHook)(),
14
- didDelete: (0, hooks_1.createAsyncParallelHook)(),
15
- });
16
- /**
17
- * A Provider factory
18
- */
19
- const providerFactory = (options = {}) => {
20
- const { throwOnDuplicates = true } = options;
21
- const state = {
22
- hooks: createProviderHooksMap(),
23
- registry: new Map(),
24
- };
25
- return {
26
- hooks: state.hooks,
27
- async register(key, item) {
28
- if (throwOnDuplicates && this.has(key)) {
29
- throw new Error(`Duplicated item key: ${key}`);
30
- }
31
- await state.hooks.willRegister.call({ key, value: item });
32
- state.registry.set(key, item);
33
- await state.hooks.didRegister.call({ key, value: (0, fp_1.cloneDeep)(item) });
34
- return this;
35
- },
36
- async delete(key) {
37
- if (this.has(key)) {
38
- const item = this.get(key);
39
- await state.hooks.willDelete.call({ key, value: (0, fp_1.cloneDeep)(item) });
40
- state.registry.delete(key);
41
- await state.hooks.didDelete.call({ key, value: (0, fp_1.cloneDeep)(item) });
42
- }
43
- return this;
44
- },
45
- get(key) {
46
- return state.registry.get(key);
47
- },
48
- getWhere(filters = {}) {
49
- const items = this.values();
50
- const filtersEntries = Object.entries(filters);
51
- if (filtersEntries.length === 0) {
52
- return items;
53
- }
54
- return items.filter((item) => {
55
- return filtersEntries.every(([key, value]) => item[key] === value);
56
- });
57
- },
58
- values() {
59
- return Array.from(state.registry.values());
60
- },
61
- keys() {
62
- return Array.from(state.registry.keys());
63
- },
64
- has(key) {
65
- return state.registry.has(key);
66
- },
67
- size() {
68
- return state.registry.size;
69
- },
70
- async clear() {
71
- const keys = this.keys();
72
- for (const key of keys) {
73
- await this.delete(key);
74
- }
75
- return this;
76
- },
77
- };
78
- };
79
- exports.default = providerFactory;
80
- //# sourceMappingURL=provider-factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../src/provider-factory.ts"],"names":[],"mappings":"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"}
package/dist/relations.js DELETED
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAnyToMany = exports.isAnyToOne = exports.isManyToAny = exports.isOneToAny = exports.getRelationalFields = exports.constants = void 0;
4
- const content_types_1 = require("./content-types");
5
- const MANY_RELATIONS = ['oneToMany', 'manyToMany'];
6
- const getRelationalFields = (contentType) => {
7
- return Object.keys(contentType.attributes).filter((attributeName) => {
8
- return contentType.attributes[attributeName].type === 'relation';
9
- });
10
- };
11
- exports.getRelationalFields = getRelationalFields;
12
- const isOneToAny = (attribute) => (0, content_types_1.isRelationalAttribute)(attribute) && ['oneToOne', 'oneToMany'].includes(attribute.relation);
13
- exports.isOneToAny = isOneToAny;
14
- const isManyToAny = (attribute) => (0, content_types_1.isRelationalAttribute)(attribute) && ['manyToMany', 'manyToOne'].includes(attribute.relation);
15
- exports.isManyToAny = isManyToAny;
16
- const isAnyToOne = (attribute) => (0, content_types_1.isRelationalAttribute)(attribute) && ['oneToOne', 'manyToOne'].includes(attribute.relation);
17
- exports.isAnyToOne = isAnyToOne;
18
- const isAnyToMany = (attribute) => (0, content_types_1.isRelationalAttribute)(attribute) && ['oneToMany', 'manyToMany'].includes(attribute.relation);
19
- exports.isAnyToMany = isAnyToMany;
20
- exports.constants = {
21
- MANY_RELATIONS,
22
- };
23
- //# sourceMappingURL=relations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relations.js","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":";;;AAEA,mDAAwD;AAExD,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAEnD,MAAM,mBAAmB,GAAG,CAAC,WAAkB,EAAE,EAAE;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE;QAClE,OAAO,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAeO,kDAAmB;AAb5B,MAAM,UAAU,GAAG,CAAC,SAAoB,EAAE,EAAE,CAC1C,IAAA,qCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAY/D,gCAAU;AAXxC,MAAM,WAAW,GAAG,CAAC,SAAoB,EAAE,EAAE,CAC3C,IAAA,qCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAUrD,kCAAW;AATrD,MAAM,UAAU,GAAG,CAAC,SAAoB,EAAE,EAAE,CAC1C,IAAA,qCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAQtC,gCAAU;AAPjE,MAAM,WAAW,GAAG,CAAC,SAAoB,EAAE,EAAE,CAC3C,IAAA,qCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAM5B,kCAAW;AAJjE,QAAA,SAAS,GAAG;IACvB,cAAc;CACf,CAAC"}
@@ -1,156 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const fp_1 = require("lodash/fp");
30
- const content_types_1 = require("../content-types");
31
- const async_1 = require("../async");
32
- const visitors = __importStar(require("./visitors"));
33
- const sanitizers = __importStar(require("./sanitizers"));
34
- const traverse_entity_1 = __importDefault(require("../traverse-entity"));
35
- const traverse_1 = require("../traverse");
36
- const createContentAPISanitizers = () => {
37
- const sanitizeInput = (data, schema, { auth } = {}) => {
38
- if (!schema) {
39
- throw new Error('Missing schema in sanitizeInput');
40
- }
41
- if ((0, fp_1.isArray)(data)) {
42
- return Promise.all(data.map((entry) => sanitizeInput(entry, schema, { auth })));
43
- }
44
- const nonWritableAttributes = (0, content_types_1.getNonWritableAttributes)(schema);
45
- const transforms = [
46
- // Remove non writable attributes
47
- (0, traverse_entity_1.default)(visitors.removeRestrictedFields(nonWritableAttributes), { schema }),
48
- ];
49
- if (auth) {
50
- // Remove restricted relations
51
- transforms.push((0, traverse_entity_1.default)(visitors.removeRestrictedRelations(auth), { schema }));
52
- }
53
- // Apply sanitizers from registry if exists
54
- strapi.sanitizers
55
- .get('content-api.input')
56
- .forEach((sanitizer) => transforms.push(sanitizer(schema)));
57
- return (0, async_1.pipeAsync)(...transforms)(data);
58
- };
59
- const sanitizeOutput = async (data, schema, { auth } = {}) => {
60
- if (!schema) {
61
- throw new Error('Missing schema in sanitizeOutput');
62
- }
63
- if ((0, fp_1.isArray)(data)) {
64
- const res = new Array(data.length);
65
- for (let i = 0; i < data.length; i += 1) {
66
- res[i] = await sanitizeOutput(data[i], schema, { auth });
67
- }
68
- return res;
69
- }
70
- const transforms = [(data) => sanitizers.defaultSanitizeOutput(schema, data)];
71
- if (auth) {
72
- transforms.push((0, traverse_entity_1.default)(visitors.removeRestrictedRelations(auth), { schema }));
73
- }
74
- // Apply sanitizers from registry if exists
75
- strapi.sanitizers
76
- .get('content-api.output')
77
- .forEach((sanitizer) => transforms.push(sanitizer(schema)));
78
- return (0, async_1.pipeAsync)(...transforms)(data);
79
- };
80
- const sanitizeQuery = async (query, schema, { auth } = {}) => {
81
- if (!schema) {
82
- throw new Error('Missing schema in sanitizeQuery');
83
- }
84
- const { filters, sort, fields, populate } = query;
85
- const sanitizedQuery = (0, fp_1.cloneDeep)(query);
86
- if (filters) {
87
- Object.assign(sanitizedQuery, { filters: await sanitizeFilters(filters, schema, { auth }) });
88
- }
89
- if (sort) {
90
- Object.assign(sanitizedQuery, { sort: await sanitizeSort(sort, schema, { auth }) });
91
- }
92
- if (fields) {
93
- Object.assign(sanitizedQuery, { fields: await sanitizeFields(fields, schema) });
94
- }
95
- if (populate) {
96
- Object.assign(sanitizedQuery, { populate: await sanitizePopulate(populate, schema) });
97
- }
98
- return sanitizedQuery;
99
- };
100
- const sanitizeFilters = (filters, schema, { auth } = {}) => {
101
- if (!schema) {
102
- throw new Error('Missing schema in sanitizeFilters');
103
- }
104
- if ((0, fp_1.isArray)(filters)) {
105
- return Promise.all(filters.map((filter) => sanitizeFilters(filter, schema, { auth })));
106
- }
107
- const transforms = [sanitizers.defaultSanitizeFilters(schema)];
108
- if (auth) {
109
- transforms.push((0, traverse_1.traverseQueryFilters)(visitors.removeRestrictedRelations(auth), { schema }));
110
- }
111
- return (0, async_1.pipeAsync)(...transforms)(filters);
112
- };
113
- const sanitizeSort = (sort, schema, { auth } = {}) => {
114
- if (!schema) {
115
- throw new Error('Missing schema in sanitizeSort');
116
- }
117
- const transforms = [sanitizers.defaultSanitizeSort(schema)];
118
- if (auth) {
119
- transforms.push((0, traverse_1.traverseQuerySort)(visitors.removeRestrictedRelations(auth), { schema }));
120
- }
121
- return (0, async_1.pipeAsync)(...transforms)(sort);
122
- };
123
- const sanitizeFields = (fields, schema) => {
124
- if (!schema) {
125
- throw new Error('Missing schema in sanitizeFields');
126
- }
127
- const transforms = [sanitizers.defaultSanitizeFields(schema)];
128
- return (0, async_1.pipeAsync)(...transforms)(fields);
129
- };
130
- const sanitizePopulate = (populate, schema, { auth } = {}) => {
131
- if (!schema) {
132
- throw new Error('Missing schema in sanitizePopulate');
133
- }
134
- const transforms = [sanitizers.defaultSanitizePopulate(schema)];
135
- if (auth) {
136
- transforms.push((0, traverse_1.traverseQueryPopulate)(visitors.removeRestrictedRelations(auth), { schema }));
137
- }
138
- return (0, async_1.pipeAsync)(...transforms)(populate);
139
- };
140
- return {
141
- input: sanitizeInput,
142
- output: sanitizeOutput,
143
- query: sanitizeQuery,
144
- filters: sanitizeFilters,
145
- sort: sanitizeSort,
146
- fields: sanitizeFields,
147
- populate: sanitizePopulate,
148
- };
149
- };
150
- const contentAPI = createContentAPISanitizers();
151
- exports.default = {
152
- contentAPI,
153
- sanitizers,
154
- visitors,
155
- };
156
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sanitize/index.ts"],"names":[],"mappings":"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"}