@strapi/utils 4.11.2 → 4.11.4

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
package/dist/errors.js ADDED
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /* eslint-disable max-classes-per-file */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NotImplementedError = exports.PolicyError = exports.PayloadTooLargeError = exports.RateLimitError = exports.UnauthorizedError = exports.ForbiddenError = exports.NotFoundError = exports.PaginationError = exports.YupValidationError = exports.ValidationError = exports.ApplicationError = exports.HttpError = void 0;
5
+ const http_errors_1 = require("http-errors");
6
+ Object.defineProperty(exports, "HttpError", { enumerable: true, get: function () { return http_errors_1.HttpError; } });
7
+ const format_yup_error_1 = require("./format-yup-error");
8
+ /* ApplicationError */
9
+ class ApplicationError extends Error {
10
+ constructor(message = 'An application error occured', details = {}) {
11
+ super();
12
+ this.name = 'ApplicationError';
13
+ this.message = message;
14
+ this.details = details;
15
+ }
16
+ }
17
+ exports.ApplicationError = ApplicationError;
18
+ class ValidationError extends ApplicationError {
19
+ constructor(message = 'Validation error', details) {
20
+ super(message, details);
21
+ this.name = 'ValidationError';
22
+ }
23
+ }
24
+ exports.ValidationError = ValidationError;
25
+ class YupValidationError extends ValidationError {
26
+ constructor(yupError, message) {
27
+ super('Validation');
28
+ const { errors, message: yupMessage } = (0, format_yup_error_1.formatYupErrors)(yupError);
29
+ this.message = message || yupMessage;
30
+ this.details = { errors };
31
+ }
32
+ }
33
+ exports.YupValidationError = YupValidationError;
34
+ class PaginationError extends ApplicationError {
35
+ constructor(message = 'Invalid pagination', details) {
36
+ super(message, details);
37
+ this.name = 'PaginationError';
38
+ this.message = message;
39
+ }
40
+ }
41
+ exports.PaginationError = PaginationError;
42
+ class NotFoundError extends ApplicationError {
43
+ constructor(message = 'Entity not found', details) {
44
+ super(message, details);
45
+ this.name = 'NotFoundError';
46
+ this.message = message;
47
+ }
48
+ }
49
+ exports.NotFoundError = NotFoundError;
50
+ class ForbiddenError extends ApplicationError {
51
+ constructor(message = 'Forbidden access', details) {
52
+ super(message, details);
53
+ this.name = 'ForbiddenError';
54
+ this.message = message;
55
+ }
56
+ }
57
+ exports.ForbiddenError = ForbiddenError;
58
+ class UnauthorizedError extends ApplicationError {
59
+ constructor(message = 'Unauthorized', details) {
60
+ super(message, details);
61
+ this.name = 'UnauthorizedError';
62
+ this.message = message;
63
+ }
64
+ }
65
+ exports.UnauthorizedError = UnauthorizedError;
66
+ class RateLimitError extends ApplicationError {
67
+ constructor(message = 'Too many requests, please try again later.', details) {
68
+ super(message, details);
69
+ this.name = 'RateLimitError';
70
+ this.message = message;
71
+ this.details = details || {};
72
+ }
73
+ }
74
+ exports.RateLimitError = RateLimitError;
75
+ class PayloadTooLargeError extends ApplicationError {
76
+ constructor(message = 'Entity too large', details) {
77
+ super(message, details);
78
+ this.name = 'PayloadTooLargeError';
79
+ this.message = message;
80
+ }
81
+ }
82
+ exports.PayloadTooLargeError = PayloadTooLargeError;
83
+ class PolicyError extends ForbiddenError {
84
+ constructor(message = 'Policy Failed', details) {
85
+ super(message, details);
86
+ this.name = 'PolicyError';
87
+ this.message = message;
88
+ this.details = details || {};
89
+ }
90
+ }
91
+ exports.PolicyError = PolicyError;
92
+ class NotImplementedError extends ApplicationError {
93
+ constructor(message = 'This feature is not implemented yet', details) {
94
+ super(message, details);
95
+ this.name = 'NotImplementedError';
96
+ this.message = message;
97
+ }
98
+ }
99
+ exports.NotImplementedError = NotImplementedError;
100
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/file.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * Utils file containing file treatment utils
4
+ */
5
+ import { Readable, Writable, WritableOptions } from 'node:stream';
6
+ declare const kbytesToBytes: (kbytes: number) => number;
7
+ declare const bytesToKbytes: (bytes: number) => number;
8
+ declare const bytesToHumanReadable: (bytes: number) => string;
9
+ declare const streamToBuffer: (stream: Readable) => Promise<unknown>;
10
+ declare const getStreamSize: (stream: Readable) => Promise<unknown>;
11
+ /**
12
+ * Create a writeable Node.js stream that discards received data.
13
+ * Useful for testing, draining a stream of data, etc.
14
+ */
15
+ declare function writableDiscardStream(options: WritableOptions): Writable;
16
+ export { streamToBuffer, bytesToHumanReadable, bytesToKbytes, kbytesToBytes, getStreamSize, writableDiscardStream, };
package/dist/file.js ADDED
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writableDiscardStream = exports.getStreamSize = exports.kbytesToBytes = exports.bytesToKbytes = exports.bytesToHumanReadable = exports.streamToBuffer = void 0;
4
+ /**
5
+ * Utils file containing file treatment utils
6
+ */
7
+ const node_stream_1 = require("node:stream");
8
+ const kbytesToBytes = (kbytes) => kbytes * 1000;
9
+ exports.kbytesToBytes = kbytesToBytes;
10
+ const bytesToKbytes = (bytes) => Math.round((bytes / 1000) * 100) / 100;
11
+ exports.bytesToKbytes = bytesToKbytes;
12
+ const bytesToHumanReadable = (bytes) => {
13
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
14
+ if (bytes === 0)
15
+ return '0 Bytes';
16
+ const i = parseInt(`${Math.floor(Math.log(bytes) / Math.log(1000))}`, 10);
17
+ return `${Math.round(bytes / 1000 ** i)} ${sizes[i]}`;
18
+ };
19
+ exports.bytesToHumanReadable = bytesToHumanReadable;
20
+ const streamToBuffer = (stream) => new Promise((resolve, reject) => {
21
+ const chunks = [];
22
+ stream.on('data', (chunk) => {
23
+ chunks.push(chunk);
24
+ });
25
+ stream.on('end', () => {
26
+ resolve(Buffer.concat(chunks));
27
+ });
28
+ stream.on('error', reject);
29
+ });
30
+ exports.streamToBuffer = streamToBuffer;
31
+ const getStreamSize = (stream) => new Promise((resolve, reject) => {
32
+ let size = 0;
33
+ stream.on('data', (chunk) => {
34
+ size += Buffer.byteLength(chunk);
35
+ });
36
+ stream.on('close', () => resolve(size));
37
+ stream.on('error', reject);
38
+ stream.resume();
39
+ });
40
+ exports.getStreamSize = getStreamSize;
41
+ /**
42
+ * Create a writeable Node.js stream that discards received data.
43
+ * Useful for testing, draining a stream of data, etc.
44
+ */
45
+ function writableDiscardStream(options) {
46
+ return new node_stream_1.Writable({
47
+ ...options,
48
+ write(chunk, encding, callback) {
49
+ setImmediate(callback);
50
+ },
51
+ });
52
+ }
53
+ exports.writableDiscardStream = writableDiscardStream;
54
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,6CAAkE;AAElE,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;AAiDtD,sCAAa;AAhDf,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AA+C9E,sCAAa;AA9Cf,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,EAAE;IAC7C,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AAwCA,oDAAoB;AAtCtB,MAAM,cAAc,GAAG,CAAC,MAAgB,EAAE,EAAE,CAC1C,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AA2BH,wCAAc;AAzBhB,MAAM,aAAa,GAAG,CAAC,MAAgB,EAAE,EAAE,CACzC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1B,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,MAAM,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAoBH,sCAAa;AAlBf;;;GAGG;AACH,SAAS,qBAAqB,CAAC,OAAwB;IACrD,OAAO,IAAI,sBAAQ,CAAC;QAClB,GAAG,OAAO;QACV,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ;YAC5B,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAQC,sDAAqB"}
@@ -0,0 +1,10 @@
1
+ import { ValidationError } from 'yup';
2
+ declare const formatYupErrors: (yupError: ValidationError) => {
3
+ errors: {
4
+ path: string[];
5
+ message: string;
6
+ name: string;
7
+ }[];
8
+ message: string;
9
+ };
10
+ export { formatYupErrors };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatYupErrors = void 0;
4
+ const fp_1 = require("lodash/fp");
5
+ const formatYupInnerError = (yupError) => ({
6
+ path: (0, fp_1.toPath)(yupError.path),
7
+ message: yupError.message,
8
+ name: yupError.name,
9
+ });
10
+ const formatYupErrors = (yupError) => ({
11
+ errors: (0, fp_1.isEmpty)(yupError.inner)
12
+ ? [formatYupInnerError(yupError)]
13
+ : yupError.inner.map(formatYupInnerError),
14
+ message: yupError.message,
15
+ });
16
+ exports.formatYupErrors = formatYupErrors;
17
+ //# sourceMappingURL=format-yup-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-yup-error.js","sourceRoot":"","sources":["../src/format-yup-error.ts"],"names":[],"mappings":";;;AAAA,kCAA4C;AAG5C,MAAM,mBAAmB,GAAG,CAAC,QAAyB,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,EAAE,IAAA,WAAM,EAAC,QAAQ,CAAC,IAAI,CAAC;IAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;IACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;CACpB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,QAAyB,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE,IAAA,YAAO,EAAC,QAAQ,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;CAC1B,CAAC,CAAC;AAEM,0CAAe"}
@@ -0,0 +1,63 @@
1
+ export type Handler = (...args: any[]) => any;
2
+ export interface Hook<T extends Handler = Handler> {
3
+ getHandlers(): Handler[];
4
+ register(handler: T): Hook<T>;
5
+ delete(handler: T): Hook<T>;
6
+ call(...args: any[]): void;
7
+ }
8
+ export interface AsyncSeriesHook extends Hook {
9
+ call(...args: any[]): Promise<void>;
10
+ }
11
+ export interface AsyncSeriesWaterfallHook extends Hook {
12
+ call(...args: any[]): Promise<any>;
13
+ }
14
+ export interface AsyncParallelHook extends Hook {
15
+ call(...args: any[]): Promise<any[]>;
16
+ }
17
+ export interface AsyncBailHook extends Hook {
18
+ call(...args: any[]): Promise<any>;
19
+ }
20
+ /**
21
+ * Create an async series hook.
22
+ * Upon execution, it will execute every handler in order with the same context
23
+ */
24
+ declare const createAsyncSeriesHook: <T extends Handler = Handler>() => {
25
+ call(context: unknown): Promise<void>;
26
+ getHandlers(): Handler[];
27
+ register(handler: T): Hook<T>;
28
+ delete(handler: T): Hook<T>;
29
+ };
30
+ /**
31
+ * Create an async series waterfall hook.
32
+ * Upon execution, it will execute every handler in order and pass the return value of the last handler to the next one
33
+ */
34
+ declare const createAsyncSeriesWaterfallHook: <T extends Handler = Handler>() => {
35
+ call(param: unknown): Promise<unknown>;
36
+ getHandlers(): Handler[];
37
+ register(handler: T): Hook<T>;
38
+ delete(handler: T): Hook<T>;
39
+ };
40
+ /**
41
+ * Create an async parallel hook.
42
+ * Upon execution, it will execute every registered handler in band.
43
+ */
44
+ declare const createAsyncParallelHook: <T extends Handler = Handler>() => {
45
+ call(context: unknown): Promise<any[]>;
46
+ getHandlers(): Handler[];
47
+ register(handler: T): Hook<T>;
48
+ delete(handler: T): Hook<T>;
49
+ };
50
+ /**
51
+ * Create an async parallel hook.
52
+ * Upon execution, it will execute every registered handler in serie and return the first result found.
53
+ */
54
+ declare const createAsyncBailHook: <T extends Handler = Handler>() => {
55
+ call(context: unknown): Promise<any>;
56
+ getHandlers(): Handler[];
57
+ register(handler: T): Hook<T>;
58
+ delete(handler: T): Hook<T>;
59
+ };
60
+ export declare const internals: {
61
+ createHook: <T extends Handler = Handler>() => Hook<T>;
62
+ };
63
+ export { createAsyncSeriesHook, createAsyncSeriesWaterfallHook, createAsyncParallelHook, createAsyncBailHook, };
package/dist/hooks.js ADDED
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAsyncBailHook = exports.createAsyncParallelHook = exports.createAsyncSeriesWaterfallHook = exports.createAsyncSeriesHook = exports.internals = void 0;
4
+ const fp_1 = require("lodash/fp");
5
+ /**
6
+ * Create a default Strapi hook
7
+ */
8
+ const createHook = () => {
9
+ const state = {
10
+ handlers: [],
11
+ };
12
+ return {
13
+ getHandlers() {
14
+ return state.handlers;
15
+ },
16
+ register(handler) {
17
+ state.handlers.push(handler);
18
+ return this;
19
+ },
20
+ delete(handler) {
21
+ state.handlers = (0, fp_1.remove)((0, fp_1.eq)(handler), state.handlers);
22
+ return this;
23
+ },
24
+ call() {
25
+ throw new Error('Method not implemented');
26
+ },
27
+ };
28
+ };
29
+ /**
30
+ * Create an async series hook.
31
+ * Upon execution, it will execute every handler in order with the same context
32
+ */
33
+ const createAsyncSeriesHook = () => ({
34
+ ...createHook(),
35
+ async call(context) {
36
+ for (const handler of this.getHandlers()) {
37
+ await handler(context);
38
+ }
39
+ },
40
+ });
41
+ exports.createAsyncSeriesHook = createAsyncSeriesHook;
42
+ /**
43
+ * Create an async series waterfall hook.
44
+ * Upon execution, it will execute every handler in order and pass the return value of the last handler to the next one
45
+ */
46
+ const createAsyncSeriesWaterfallHook = () => ({
47
+ ...createHook(),
48
+ async call(param) {
49
+ let res = param;
50
+ for (const handler of this.getHandlers()) {
51
+ res = await handler(res);
52
+ }
53
+ return res;
54
+ },
55
+ });
56
+ exports.createAsyncSeriesWaterfallHook = createAsyncSeriesWaterfallHook;
57
+ /**
58
+ * Create an async parallel hook.
59
+ * Upon execution, it will execute every registered handler in band.
60
+ */
61
+ const createAsyncParallelHook = () => ({
62
+ ...createHook(),
63
+ async call(context) {
64
+ const promises = this.getHandlers().map((handler) => handler((0, fp_1.cloneDeep)(context)));
65
+ return Promise.all(promises);
66
+ },
67
+ });
68
+ exports.createAsyncParallelHook = createAsyncParallelHook;
69
+ /**
70
+ * Create an async parallel hook.
71
+ * Upon execution, it will execute every registered handler in serie and return the first result found.
72
+ */
73
+ const createAsyncBailHook = () => ({
74
+ ...createHook(),
75
+ async call(context) {
76
+ for (const handler of this.getHandlers()) {
77
+ const result = await handler(context);
78
+ if (result !== undefined) {
79
+ return result;
80
+ }
81
+ }
82
+ },
83
+ });
84
+ exports.createAsyncBailHook = createAsyncBailHook;
85
+ exports.internals = {
86
+ // Internal utils
87
+ createHook,
88
+ };
89
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":";;;AAAA,kCAAkD;AA0BlD;;GAEG;AACH,MAAM,UAAU,GAAG,GAAyC,EAAE;IAK5D,MAAM,KAAK,GAAU;QACnB,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,OAAO;QACL,WAAW;YACT,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QAED,QAAQ,CAAC,OAAU;YACjB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,OAAU;YACf,KAAK,CAAC,QAAQ,GAAG,IAAA,WAAM,EAAC,IAAA,OAAE,EAAC,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAErD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI;YACF,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,qBAAqB,GAAG,GAAgC,EAAE,CAAC,CAAC;IAChE,GAAG,UAAU,EAAK;IAElB,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACxC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;SACxB;IACH,CAAC;CACF,CAAC,CAAC;AA0DD,sDAAqB;AAxDvB;;;GAGG;AACH,MAAM,8BAA8B,GAAG,GAAgC,EAAE,CAAC,CAAC;IACzE,GAAG,UAAU,EAAK;IAElB,KAAK,CAAC,IAAI,CAAC,KAAc;QACvB,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACxC,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;SAC1B;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC,CAAC;AAyCD,wEAA8B;AAvChC;;;GAGG;AACH,MAAM,uBAAuB,GAAG,GAAgC,EAAE,CAAC,CAAC;IAClE,GAAG,UAAU,EAAK;IAElB,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAA,cAAS,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElF,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC;AA4BD,0DAAuB;AA1BzB;;;GAGG;AACH,MAAM,mBAAmB,GAAG,GAAgC,EAAE,CAAC,CAAC;IAC9D,GAAG,UAAU,EAAK;IAElB,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,OAAO,MAAM,CAAC;aACf;SACF;IACH,CAAC;CACF,CAAC,CAAC;AAWD,kDAAmB;AATR,QAAA,SAAS,GAAG;IACvB,iBAAiB;IACjB,UAAU;CACX,CAAC"}
@@ -0,0 +1 @@
1
+ export default function importDefault(modName: string): any;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-var-requires */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ function importDefault(modName) {
5
+ const mod = require(modName);
6
+ return mod && mod.__esModule ? mod.default : mod;
7
+ }
8
+ exports.default = importDefault;
9
+ //# sourceMappingURL=import-default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-default.js","sourceRoot":"","sources":["../src/import-default.ts"],"names":[],"mappings":";AAAA,uDAAuD;;AAEvD,SAAwB,aAAa,CAAC,OAAe;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,CAAC;AAHD,gCAGC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Export shared utilities
3
+ */
4
+ export { default as parseMultipartData } from './parse-multipart';
5
+ export { default as parseType } from './parse-type';
6
+ export * as policy from './policy';
7
+ export { default as templateConfiguration } from './template-configuration';
8
+ export { yup, handleYupError, validateYupSchema, validateYupSchemaSync } from './validators';
9
+ export * as errors from './errors';
10
+ export { nameToSlug, nameToCollectionName, getCommonBeginning, escapeQuery, stringIncludes, stringEquals, isKebabCase, isCamelCase, toRegressedEnumValue, startsWithANumber, joinBy, toKebabCase, } from './string-formatting';
11
+ export { removeUndefined, keysDeep } from './object-formatting';
12
+ export { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './config';
13
+ export { generateTimestampCode } from './code-generator';
14
+ export * as contentTypes from './content-types';
15
+ export { default as env } from './env-helper';
16
+ export * as relations from './relations';
17
+ export { default as setCreatorFields } from './set-creator-fields';
18
+ export * as hooks from './hooks';
19
+ export { default as providerFactory } from './provider-factory';
20
+ export * as pagination from './pagination';
21
+ export { default as sanitize } from './sanitize';
22
+ export { default as traverseEntity } from './traverse-entity';
23
+ export { pipeAsync, mapAsync, reduceAsync, forEachAsync } from './async';
24
+ export { default as convertQueryParams } from './convert-query-params';
25
+ export { default as importDefault } from './import-default';
26
+ export * as template from './template';
27
+ export * as file from './file';
28
+ export * as traverse from './traverse';
29
+ export { default as webhook } from './webhook';
30
+ export { isOperator, isOperatorOfType } from './operators';
package/dist/index.js ADDED
@@ -0,0 +1,99 @@
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
+ exports.isOperatorOfType = exports.isOperator = exports.webhook = exports.traverse = exports.file = exports.template = exports.importDefault = exports.convertQueryParams = exports.forEachAsync = exports.reduceAsync = exports.mapAsync = exports.pipeAsync = exports.traverseEntity = exports.sanitize = exports.pagination = exports.providerFactory = exports.hooks = exports.setCreatorFields = exports.relations = exports.env = exports.contentTypes = exports.generateTimestampCode = exports.getAbsoluteServerUrl = exports.getAbsoluteAdminUrl = exports.getConfigUrls = exports.keysDeep = exports.removeUndefined = exports.toKebabCase = exports.joinBy = exports.startsWithANumber = exports.toRegressedEnumValue = exports.isCamelCase = exports.isKebabCase = exports.stringEquals = exports.stringIncludes = exports.escapeQuery = exports.getCommonBeginning = exports.nameToCollectionName = exports.nameToSlug = exports.errors = exports.validateYupSchemaSync = exports.validateYupSchema = exports.handleYupError = exports.yup = exports.templateConfiguration = exports.policy = exports.parseType = exports.parseMultipartData = void 0;
30
+ /**
31
+ * Export shared utilities
32
+ */
33
+ var parse_multipart_1 = require("./parse-multipart");
34
+ Object.defineProperty(exports, "parseMultipartData", { enumerable: true, get: function () { return __importDefault(parse_multipart_1).default; } });
35
+ var parse_type_1 = require("./parse-type");
36
+ Object.defineProperty(exports, "parseType", { enumerable: true, get: function () { return __importDefault(parse_type_1).default; } });
37
+ exports.policy = __importStar(require("./policy"));
38
+ var template_configuration_1 = require("./template-configuration");
39
+ Object.defineProperty(exports, "templateConfiguration", { enumerable: true, get: function () { return __importDefault(template_configuration_1).default; } });
40
+ var validators_1 = require("./validators");
41
+ Object.defineProperty(exports, "yup", { enumerable: true, get: function () { return validators_1.yup; } });
42
+ Object.defineProperty(exports, "handleYupError", { enumerable: true, get: function () { return validators_1.handleYupError; } });
43
+ Object.defineProperty(exports, "validateYupSchema", { enumerable: true, get: function () { return validators_1.validateYupSchema; } });
44
+ Object.defineProperty(exports, "validateYupSchemaSync", { enumerable: true, get: function () { return validators_1.validateYupSchemaSync; } });
45
+ exports.errors = __importStar(require("./errors"));
46
+ var string_formatting_1 = require("./string-formatting");
47
+ Object.defineProperty(exports, "nameToSlug", { enumerable: true, get: function () { return string_formatting_1.nameToSlug; } });
48
+ Object.defineProperty(exports, "nameToCollectionName", { enumerable: true, get: function () { return string_formatting_1.nameToCollectionName; } });
49
+ Object.defineProperty(exports, "getCommonBeginning", { enumerable: true, get: function () { return string_formatting_1.getCommonBeginning; } });
50
+ Object.defineProperty(exports, "escapeQuery", { enumerable: true, get: function () { return string_formatting_1.escapeQuery; } });
51
+ Object.defineProperty(exports, "stringIncludes", { enumerable: true, get: function () { return string_formatting_1.stringIncludes; } });
52
+ Object.defineProperty(exports, "stringEquals", { enumerable: true, get: function () { return string_formatting_1.stringEquals; } });
53
+ Object.defineProperty(exports, "isKebabCase", { enumerable: true, get: function () { return string_formatting_1.isKebabCase; } });
54
+ Object.defineProperty(exports, "isCamelCase", { enumerable: true, get: function () { return string_formatting_1.isCamelCase; } });
55
+ Object.defineProperty(exports, "toRegressedEnumValue", { enumerable: true, get: function () { return string_formatting_1.toRegressedEnumValue; } });
56
+ Object.defineProperty(exports, "startsWithANumber", { enumerable: true, get: function () { return string_formatting_1.startsWithANumber; } });
57
+ Object.defineProperty(exports, "joinBy", { enumerable: true, get: function () { return string_formatting_1.joinBy; } });
58
+ Object.defineProperty(exports, "toKebabCase", { enumerable: true, get: function () { return string_formatting_1.toKebabCase; } });
59
+ var object_formatting_1 = require("./object-formatting");
60
+ Object.defineProperty(exports, "removeUndefined", { enumerable: true, get: function () { return object_formatting_1.removeUndefined; } });
61
+ Object.defineProperty(exports, "keysDeep", { enumerable: true, get: function () { return object_formatting_1.keysDeep; } });
62
+ var config_1 = require("./config");
63
+ Object.defineProperty(exports, "getConfigUrls", { enumerable: true, get: function () { return config_1.getConfigUrls; } });
64
+ Object.defineProperty(exports, "getAbsoluteAdminUrl", { enumerable: true, get: function () { return config_1.getAbsoluteAdminUrl; } });
65
+ Object.defineProperty(exports, "getAbsoluteServerUrl", { enumerable: true, get: function () { return config_1.getAbsoluteServerUrl; } });
66
+ var code_generator_1 = require("./code-generator");
67
+ Object.defineProperty(exports, "generateTimestampCode", { enumerable: true, get: function () { return code_generator_1.generateTimestampCode; } });
68
+ exports.contentTypes = __importStar(require("./content-types"));
69
+ var env_helper_1 = require("./env-helper");
70
+ Object.defineProperty(exports, "env", { enumerable: true, get: function () { return __importDefault(env_helper_1).default; } });
71
+ exports.relations = __importStar(require("./relations"));
72
+ var set_creator_fields_1 = require("./set-creator-fields");
73
+ Object.defineProperty(exports, "setCreatorFields", { enumerable: true, get: function () { return __importDefault(set_creator_fields_1).default; } });
74
+ exports.hooks = __importStar(require("./hooks"));
75
+ var provider_factory_1 = require("./provider-factory");
76
+ Object.defineProperty(exports, "providerFactory", { enumerable: true, get: function () { return __importDefault(provider_factory_1).default; } });
77
+ exports.pagination = __importStar(require("./pagination"));
78
+ var sanitize_1 = require("./sanitize");
79
+ Object.defineProperty(exports, "sanitize", { enumerable: true, get: function () { return __importDefault(sanitize_1).default; } });
80
+ var traverse_entity_1 = require("./traverse-entity");
81
+ Object.defineProperty(exports, "traverseEntity", { enumerable: true, get: function () { return __importDefault(traverse_entity_1).default; } });
82
+ var async_1 = require("./async");
83
+ Object.defineProperty(exports, "pipeAsync", { enumerable: true, get: function () { return async_1.pipeAsync; } });
84
+ Object.defineProperty(exports, "mapAsync", { enumerable: true, get: function () { return async_1.mapAsync; } });
85
+ Object.defineProperty(exports, "reduceAsync", { enumerable: true, get: function () { return async_1.reduceAsync; } });
86
+ Object.defineProperty(exports, "forEachAsync", { enumerable: true, get: function () { return async_1.forEachAsync; } });
87
+ var convert_query_params_1 = require("./convert-query-params");
88
+ Object.defineProperty(exports, "convertQueryParams", { enumerable: true, get: function () { return __importDefault(convert_query_params_1).default; } });
89
+ var import_default_1 = require("./import-default");
90
+ Object.defineProperty(exports, "importDefault", { enumerable: true, get: function () { return __importDefault(import_default_1).default; } });
91
+ exports.template = __importStar(require("./template"));
92
+ exports.file = __importStar(require("./file"));
93
+ exports.traverse = __importStar(require("./traverse"));
94
+ var webhook_1 = require("./webhook");
95
+ Object.defineProperty(exports, "webhook", { enumerable: true, get: function () { return __importDefault(webhook_1).default; } });
96
+ var operators_1 = require("./operators");
97
+ Object.defineProperty(exports, "isOperator", { enumerable: true, get: function () { return operators_1.isOperator; } });
98
+ Object.defineProperty(exports, "isOperatorOfType", { enumerable: true, get: function () { return operators_1.isOperatorOfType; } });
99
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,qDAAkE;AAAzD,sIAAA,OAAO,OAAsB;AACtC,2CAAoD;AAA3C,wHAAA,OAAO,OAAa;AAC7B,mDAAmC;AACnC,mEAA4E;AAAnE,gJAAA,OAAO,OAAyB;AACzC,2CAA6F;AAApF,iGAAA,GAAG,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AACtE,mDAAmC;AACnC,yDAa6B;AAZ3B,+GAAA,UAAU,OAAA;AACV,yHAAA,oBAAoB,OAAA;AACpB,uHAAA,kBAAkB,OAAA;AAClB,gHAAA,WAAW,OAAA;AACX,mHAAA,cAAc,OAAA;AACd,iHAAA,YAAY,OAAA;AACZ,gHAAA,WAAW,OAAA;AACX,gHAAA,WAAW,OAAA;AACX,yHAAA,oBAAoB,OAAA;AACpB,sHAAA,iBAAiB,OAAA;AACjB,2GAAA,MAAM,OAAA;AACN,gHAAA,WAAW,OAAA;AAEb,yDAAgE;AAAvD,oHAAA,eAAe,OAAA;AAAE,6GAAA,QAAQ,OAAA;AAClC,mCAAoF;AAA3E,uGAAA,aAAa,OAAA;AAAE,6GAAA,mBAAmB,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AACjE,mDAAyD;AAAhD,uHAAA,qBAAqB,OAAA;AAC9B,gEAAgD;AAChD,2CAA8C;AAArC,kHAAA,OAAO,OAAO;AACvB,yDAAyC;AACzC,2DAAmE;AAA1D,uIAAA,OAAO,OAAoB;AACpC,iDAAiC;AACjC,uDAAgE;AAAvD,oIAAA,OAAO,OAAmB;AACnC,2DAA2C;AAC3C,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,qDAA8D;AAArD,kIAAA,OAAO,OAAkB;AAClC,iCAAyE;AAAhE,kGAAA,SAAS,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,qGAAA,YAAY,OAAA;AACvD,+DAAuE;AAA9D,2IAAA,OAAO,OAAsB;AACtC,mDAA4D;AAAnD,gIAAA,OAAO,OAAiB;AACjC,uDAAuC;AACvC,+CAA+B;AAC/B,uDAAuC;AACvC,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,yCAA2D;AAAlD,uGAAA,UAAU,OAAA;AAAE,6GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,3 @@
1
+ declare const removeUndefined: <T extends object>(obj: T) => Partial<T>;
2
+ declare const keysDeep: (obj: object, path?: string[]) => string[];
3
+ export { removeUndefined, keysDeep };
@@ -0,0 +1,14 @@
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.keysDeep = exports.removeUndefined = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const removeUndefined = (obj) => lodash_1.default.pickBy(obj, (value) => typeof value !== 'undefined');
9
+ exports.removeUndefined = removeUndefined;
10
+ const keysDeep = (obj, path = []) => !lodash_1.default.isObject(obj)
11
+ ? [path.join('.')]
12
+ : lodash_1.default.reduce(obj, (acc, next, key) => lodash_1.default.concat(acc, keysDeep(next, [...path, key])), []);
13
+ exports.keysDeep = keysDeep;
14
+ //# sourceMappingURL=object-formatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-formatting.js","sourceRoot":"","sources":["../src/object-formatting.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAEvB,MAAM,eAAe,GAAG,CAAmB,GAAM,EAAE,EAAE,CACnD,gBAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC;AAWhD,0CAAe;AATxB,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,OAAiB,EAAE,EAAY,EAAE,CAC9D,CAAC,gBAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;IACd,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,gBAAC,CAAC,MAAM,CACN,GAAG,EACH,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAC,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EACjE,EAAc,CACf,CAAC;AAEkB,4BAAQ"}
@@ -0,0 +1,2 @@
1
+ export declare const isOperatorOfType: (type: string, key: string, ignoreCase?: boolean) => boolean;
2
+ export declare const isOperator: (key: string, ignoreCase?: boolean) => boolean;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isOperator = exports.isOperatorOfType = void 0;
4
+ const GROUP_OPERATORS = ['$and', '$or'];
5
+ const WHERE_OPERATORS = [
6
+ '$not',
7
+ '$in',
8
+ '$notIn',
9
+ '$eq',
10
+ '$eqi',
11
+ '$ne',
12
+ '$gt',
13
+ '$gte',
14
+ '$lt',
15
+ '$lte',
16
+ '$null',
17
+ '$notNull',
18
+ '$between',
19
+ '$startsWith',
20
+ '$endsWith',
21
+ '$startsWithi',
22
+ '$endsWithi',
23
+ '$contains',
24
+ '$notContains',
25
+ '$containsi',
26
+ '$notContainsi',
27
+ ];
28
+ const CAST_OPERATORS = [
29
+ '$not',
30
+ '$in',
31
+ '$notIn',
32
+ '$eq',
33
+ '$ne',
34
+ '$gt',
35
+ '$gte',
36
+ '$lt',
37
+ '$lte',
38
+ '$between',
39
+ ];
40
+ const ARRAY_OPERATORS = ['$in', '$notIn', '$between'];
41
+ const OPERATORS = {
42
+ where: WHERE_OPERATORS,
43
+ cast: CAST_OPERATORS,
44
+ group: GROUP_OPERATORS,
45
+ array: ARRAY_OPERATORS,
46
+ };
47
+ // for performance, cache all operators in lowercase
48
+ const OPERATORS_LOWERCASE = Object.fromEntries(Object.entries(OPERATORS).map(([key, values]) => [
49
+ key,
50
+ values.map((value) => value.toLowerCase()),
51
+ ]));
52
+ const isObjKey = (key, obj) => {
53
+ return key in obj;
54
+ };
55
+ const isOperatorOfType = (type, key, ignoreCase = false) => {
56
+ if (ignoreCase) {
57
+ return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;
58
+ }
59
+ if (isObjKey(type, OPERATORS)) {
60
+ return OPERATORS[type]?.includes(key) ?? false;
61
+ }
62
+ return false;
63
+ };
64
+ exports.isOperatorOfType = isOperatorOfType;
65
+ const isOperator = (key, ignoreCase = false) => {
66
+ return Object.keys(OPERATORS).some((type) => (0, exports.isOperatorOfType)(type, key, ignoreCase));
67
+ };
68
+ exports.isOperator = isOperator;
69
+ //# sourceMappingURL=operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":";;;AAAA,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAExC,MAAM,eAAe,GAAG;IACtB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,UAAU;IACV,UAAU;IACV,aAAa;IACb,WAAW;IACX,cAAc;IACd,YAAY;IACZ,WAAW;IACX,cAAc;IACd,YAAY;IACZ,eAAe;CAChB,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,UAAU;CACX,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAEtD,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,eAAe;CACvB,CAAC;AAEF,oDAAoD;AACpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAC5C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IAC/C,GAAG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;CAC3C,CAAC,CACH,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAmB,GAA6B,EAAE,GAAM,EAAkB,EAAE;IAC3F,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE;IAChF,IAAI,UAAU,EAAE;QACd,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC;KACxE;IAED,IAAI,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;QAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;KAChD;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAVW,QAAA,gBAAgB,oBAU3B;AAEK,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE;IAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,wBAAgB,EAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB"}