@strapi/utils 5.12.1 → 5.12.3

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 (233) hide show
  1. package/dist/async.js +28 -0
  2. package/dist/async.js.map +1 -0
  3. package/dist/async.mjs +24 -0
  4. package/dist/async.mjs.map +1 -0
  5. package/dist/content-types.js +201 -0
  6. package/dist/content-types.js.map +1 -0
  7. package/dist/content-types.mjs +167 -0
  8. package/dist/content-types.mjs.map +1 -0
  9. package/dist/convert-query-params.js +512 -0
  10. package/dist/convert-query-params.js.map +1 -0
  11. package/dist/convert-query-params.mjs +510 -0
  12. package/dist/convert-query-params.mjs.map +1 -0
  13. package/dist/env-helper.js +81 -0
  14. package/dist/env-helper.js.map +1 -0
  15. package/dist/env-helper.mjs +79 -0
  16. package/dist/env-helper.mjs.map +1 -0
  17. package/dist/errors.js +104 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/errors.mjs +88 -0
  20. package/dist/errors.mjs.map +1 -0
  21. package/dist/file.js +57 -0
  22. package/dist/file.js.map +1 -0
  23. package/dist/file.mjs +50 -0
  24. package/dist/file.mjs.map +1 -0
  25. package/dist/format-yup-error.js +19 -0
  26. package/dist/format-yup-error.js.map +1 -0
  27. package/dist/format-yup-error.mjs +17 -0
  28. package/dist/format-yup-error.mjs.map +1 -0
  29. package/dist/hooks.js +86 -0
  30. package/dist/hooks.js.map +1 -0
  31. package/dist/hooks.mjs +80 -0
  32. package/dist/hooks.mjs.map +1 -0
  33. package/dist/import-default.js +9 -0
  34. package/dist/import-default.js.map +1 -0
  35. package/dist/import-default.mjs +7 -0
  36. package/dist/import-default.mjs.map +1 -0
  37. package/dist/index.js +54 -4358
  38. package/dist/index.js.map +1 -1
  39. package/dist/index.mjs +48 -4317
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/machine-id.js +17 -0
  42. package/dist/machine-id.js.map +1 -0
  43. package/dist/machine-id.mjs +15 -0
  44. package/dist/machine-id.mjs.map +1 -0
  45. package/dist/operators.js +79 -0
  46. package/dist/operators.js.map +1 -0
  47. package/dist/operators.mjs +76 -0
  48. package/dist/operators.mjs.map +1 -0
  49. package/dist/package-manager.js +36 -0
  50. package/dist/package-manager.js.map +1 -0
  51. package/dist/package-manager.mjs +33 -0
  52. package/dist/package-manager.mjs.map +1 -0
  53. package/dist/pagination.js +163 -0
  54. package/dist/pagination.js.map +1 -0
  55. package/dist/pagination.mjs +159 -0
  56. package/dist/pagination.mjs.map +1 -0
  57. package/dist/parse-type.js +140 -0
  58. package/dist/parse-type.js.map +1 -0
  59. package/dist/parse-type.mjs +118 -0
  60. package/dist/parse-type.mjs.map +1 -0
  61. package/dist/policy.js +33 -0
  62. package/dist/policy.js.map +1 -0
  63. package/dist/policy.mjs +30 -0
  64. package/dist/policy.mjs.map +1 -0
  65. package/dist/primitives/arrays.js +7 -0
  66. package/dist/primitives/arrays.js.map +1 -0
  67. package/dist/primitives/arrays.mjs +5 -0
  68. package/dist/primitives/arrays.mjs.map +1 -0
  69. package/dist/primitives/dates.js +11 -0
  70. package/dist/primitives/dates.js.map +1 -0
  71. package/dist/primitives/dates.mjs +9 -0
  72. package/dist/primitives/dates.mjs.map +1 -0
  73. package/dist/primitives/objects.js +13 -0
  74. package/dist/primitives/objects.js.map +1 -0
  75. package/dist/primitives/objects.mjs +11 -0
  76. package/dist/primitives/objects.mjs.map +1 -0
  77. package/dist/primitives/strings.js +49 -0
  78. package/dist/primitives/strings.js.map +1 -0
  79. package/dist/primitives/strings.mjs +38 -0
  80. package/dist/primitives/strings.mjs.map +1 -0
  81. package/dist/print-value.js +42 -0
  82. package/dist/print-value.js.map +1 -0
  83. package/dist/print-value.mjs +40 -0
  84. package/dist/print-value.mjs.map +1 -0
  85. package/dist/provider-factory.js +82 -0
  86. package/dist/provider-factory.js.map +1 -0
  87. package/dist/provider-factory.mjs +80 -0
  88. package/dist/provider-factory.mjs.map +1 -0
  89. package/dist/relations.js +54 -0
  90. package/dist/relations.js.map +1 -0
  91. package/dist/relations.mjs +45 -0
  92. package/dist/relations.mjs.map +1 -0
  93. package/dist/sanitize/index.js +195 -0
  94. package/dist/sanitize/index.js.map +1 -0
  95. package/dist/sanitize/index.mjs +194 -0
  96. package/dist/sanitize/index.mjs.map +1 -0
  97. package/dist/sanitize/sanitizers.js +173 -0
  98. package/dist/sanitize/sanitizers.js.map +1 -0
  99. package/dist/sanitize/sanitizers.mjs +166 -0
  100. package/dist/sanitize/sanitizers.mjs.map +1 -0
  101. package/dist/sanitize/visitors/expand-wildcard-populate.js +20 -0
  102. package/dist/sanitize/visitors/expand-wildcard-populate.js.map +1 -0
  103. package/dist/sanitize/visitors/expand-wildcard-populate.mjs +18 -0
  104. package/dist/sanitize/visitors/expand-wildcard-populate.mjs.map +1 -0
  105. package/dist/sanitize/visitors/index.js +22 -0
  106. package/dist/sanitize/visitors/index.js.map +1 -0
  107. package/dist/sanitize/visitors/index.mjs +9 -0
  108. package/dist/sanitize/visitors/index.mjs.map +1 -0
  109. package/dist/sanitize/visitors/remove-disallowed-fields.js +87 -0
  110. package/dist/sanitize/visitors/remove-disallowed-fields.js.map +1 -0
  111. package/dist/sanitize/visitors/remove-disallowed-fields.mjs +85 -0
  112. package/dist/sanitize/visitors/remove-disallowed-fields.mjs.map +1 -0
  113. package/dist/sanitize/visitors/remove-dynamic-zones.js +12 -0
  114. package/dist/sanitize/visitors/remove-dynamic-zones.js.map +1 -0
  115. package/dist/sanitize/visitors/remove-dynamic-zones.mjs +10 -0
  116. package/dist/sanitize/visitors/remove-dynamic-zones.mjs.map +1 -0
  117. package/dist/sanitize/visitors/remove-morph-to-relations.js +12 -0
  118. package/dist/sanitize/visitors/remove-morph-to-relations.js.map +1 -0
  119. package/dist/sanitize/visitors/remove-morph-to-relations.mjs +10 -0
  120. package/dist/sanitize/visitors/remove-morph-to-relations.mjs.map +1 -0
  121. package/dist/sanitize/visitors/remove-password.js +10 -0
  122. package/dist/sanitize/visitors/remove-password.js.map +1 -0
  123. package/dist/sanitize/visitors/remove-password.mjs +8 -0
  124. package/dist/sanitize/visitors/remove-password.mjs.map +1 -0
  125. package/dist/sanitize/visitors/remove-private.js +16 -0
  126. package/dist/sanitize/visitors/remove-private.js.map +1 -0
  127. package/dist/sanitize/visitors/remove-private.mjs +14 -0
  128. package/dist/sanitize/visitors/remove-private.mjs.map +1 -0
  129. package/dist/sanitize/visitors/remove-restricted-fields.js +28 -0
  130. package/dist/sanitize/visitors/remove-restricted-fields.js.map +1 -0
  131. package/dist/sanitize/visitors/remove-restricted-fields.mjs +26 -0
  132. package/dist/sanitize/visitors/remove-restricted-fields.mjs.map +1 -0
  133. package/dist/sanitize/visitors/remove-restricted-relations.js +116 -0
  134. package/dist/sanitize/visitors/remove-restricted-relations.js.map +1 -0
  135. package/dist/sanitize/visitors/remove-restricted-relations.mjs +114 -0
  136. package/dist/sanitize/visitors/remove-restricted-relations.mjs.map +1 -0
  137. package/dist/set-creator-fields.js +18 -0
  138. package/dist/set-creator-fields.js.map +1 -0
  139. package/dist/set-creator-fields.mjs +16 -0
  140. package/dist/set-creator-fields.mjs.map +1 -0
  141. package/dist/template.js +18 -0
  142. package/dist/template.js.map +1 -0
  143. package/dist/template.mjs +15 -0
  144. package/dist/template.mjs.map +1 -0
  145. package/dist/traverse/factory.js +158 -0
  146. package/dist/traverse/factory.js.map +1 -0
  147. package/dist/traverse/factory.mjs +156 -0
  148. package/dist/traverse/factory.mjs.map +1 -0
  149. package/dist/traverse/index.js +14 -0
  150. package/dist/traverse/index.js.map +1 -0
  151. package/dist/traverse/index.mjs +5 -0
  152. package/dist/traverse/index.mjs.map +1 -0
  153. package/dist/traverse/query-fields.js +41 -0
  154. package/dist/traverse/query-fields.js.map +1 -0
  155. package/dist/traverse/query-fields.mjs +39 -0
  156. package/dist/traverse/query-fields.mjs.map +1 -0
  157. package/dist/traverse/query-filters.js +114 -0
  158. package/dist/traverse/query-filters.js.map +1 -0
  159. package/dist/traverse/query-filters.mjs +112 -0
  160. package/dist/traverse/query-filters.mjs.map +1 -0
  161. package/dist/traverse/query-populate.js +280 -0
  162. package/dist/traverse/query-populate.js.map +1 -0
  163. package/dist/traverse/query-populate.mjs +278 -0
  164. package/dist/traverse/query-populate.mjs.map +1 -0
  165. package/dist/traverse/query-sort.js +144 -0
  166. package/dist/traverse/query-sort.js.map +1 -0
  167. package/dist/traverse/query-sort.mjs +142 -0
  168. package/dist/traverse/query-sort.mjs.map +1 -0
  169. package/dist/traverse-entity.js +170 -0
  170. package/dist/traverse-entity.js.map +1 -0
  171. package/dist/traverse-entity.mjs +168 -0
  172. package/dist/traverse-entity.mjs.map +1 -0
  173. package/dist/validate/index.js +218 -0
  174. package/dist/validate/index.js.map +1 -0
  175. package/dist/validate/index.mjs +217 -0
  176. package/dist/validate/index.mjs.map +1 -0
  177. package/dist/validate/utils.js +27 -0
  178. package/dist/validate/utils.js.map +1 -0
  179. package/dist/validate/utils.mjs +24 -0
  180. package/dist/validate/utils.mjs.map +1 -0
  181. package/dist/validate/validators.js +369 -0
  182. package/dist/validate/validators.js.map +1 -0
  183. package/dist/validate/validators.mjs +356 -0
  184. package/dist/validate/validators.mjs.map +1 -0
  185. package/dist/validate/visitors/index.js +22 -0
  186. package/dist/validate/visitors/index.js.map +1 -0
  187. package/dist/validate/visitors/index.mjs +9 -0
  188. package/dist/validate/visitors/index.mjs.map +1 -0
  189. package/dist/validate/visitors/throw-disallowed-fields.js +91 -0
  190. package/dist/validate/visitors/throw-disallowed-fields.js.map +1 -0
  191. package/dist/validate/visitors/throw-disallowed-fields.mjs +89 -0
  192. package/dist/validate/visitors/throw-disallowed-fields.mjs.map +1 -0
  193. package/dist/validate/visitors/throw-dynamic-zones.js +16 -0
  194. package/dist/validate/visitors/throw-dynamic-zones.js.map +1 -0
  195. package/dist/validate/visitors/throw-dynamic-zones.mjs +14 -0
  196. package/dist/validate/visitors/throw-dynamic-zones.mjs.map +1 -0
  197. package/dist/validate/visitors/throw-morph-to-relations.js +16 -0
  198. package/dist/validate/visitors/throw-morph-to-relations.js.map +1 -0
  199. package/dist/validate/visitors/throw-morph-to-relations.mjs +14 -0
  200. package/dist/validate/visitors/throw-morph-to-relations.mjs.map +1 -0
  201. package/dist/validate/visitors/throw-password.js +15 -0
  202. package/dist/validate/visitors/throw-password.js.map +1 -0
  203. package/dist/validate/visitors/throw-password.mjs +13 -0
  204. package/dist/validate/visitors/throw-password.mjs.map +1 -0
  205. package/dist/validate/visitors/throw-private.js +20 -0
  206. package/dist/validate/visitors/throw-private.js.map +1 -0
  207. package/dist/validate/visitors/throw-private.mjs +18 -0
  208. package/dist/validate/visitors/throw-private.mjs.map +1 -0
  209. package/dist/validate/visitors/throw-restricted-fields.js +36 -0
  210. package/dist/validate/visitors/throw-restricted-fields.js.map +1 -0
  211. package/dist/validate/visitors/throw-restricted-fields.mjs +34 -0
  212. package/dist/validate/visitors/throw-restricted-fields.mjs.map +1 -0
  213. package/dist/validate/visitors/throw-restricted-relations.js +125 -0
  214. package/dist/validate/visitors/throw-restricted-relations.js.map +1 -0
  215. package/dist/validate/visitors/throw-restricted-relations.mjs +123 -0
  216. package/dist/validate/visitors/throw-restricted-relations.mjs.map +1 -0
  217. package/dist/validate/visitors/throw-unrecognized-fields.js +66 -0
  218. package/dist/validate/visitors/throw-unrecognized-fields.js.map +1 -0
  219. package/dist/validate/visitors/throw-unrecognized-fields.mjs +64 -0
  220. package/dist/validate/visitors/throw-unrecognized-fields.mjs.map +1 -0
  221. package/dist/validators.js +60 -0
  222. package/dist/validators.js.map +1 -0
  223. package/dist/validators.mjs +37 -0
  224. package/dist/validators.mjs.map +1 -0
  225. package/dist/yup.js +101 -0
  226. package/dist/yup.js.map +1 -0
  227. package/dist/yup.mjs +74 -0
  228. package/dist/yup.mjs.map +1 -0
  229. package/dist/zod.js +31 -0
  230. package/dist/zod.js.map +1 -0
  231. package/dist/zod.mjs +29 -0
  232. package/dist/zod.mjs.map +1 -0
  233. package/package.json +3 -3
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var crypto = require('crypto');
4
+ var nodeMachineId = require('node-machine-id');
5
+
6
+ var machineId = (()=>{
7
+ try {
8
+ const deviceId = nodeMachineId.machineIdSync();
9
+ return deviceId;
10
+ } catch (error) {
11
+ const deviceId = crypto.randomUUID();
12
+ return deviceId;
13
+ }
14
+ });
15
+
16
+ module.exports = machineId;
17
+ //# sourceMappingURL=machine-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.js","sources":["../src/machine-id.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport default () => {\n try {\n const deviceId = machineIdSync();\n return deviceId;\n } catch (error) {\n const deviceId = randomUUID();\n return deviceId;\n }\n};\n"],"names":["deviceId","machineIdSync","error","randomUUID"],"mappings":";;;;;AAGA,gBAAe,CAAA,IAAA;IACb,IAAI;AACF,QAAA,MAAMA,QAAWC,GAAAA,2BAAAA,EAAAA;QACjB,OAAOD,QAAAA;AACT,KAAA,CAAE,OAAOE,KAAO,EAAA;AACd,QAAA,MAAMF,QAAWG,GAAAA,iBAAAA,EAAAA;QACjB,OAAOH,QAAAA;AACT;AACF,CAAA;;;;"}
@@ -0,0 +1,15 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { machineIdSync } from 'node-machine-id';
3
+
4
+ var machineId = (()=>{
5
+ try {
6
+ const deviceId = machineIdSync();
7
+ return deviceId;
8
+ } catch (error) {
9
+ const deviceId = randomUUID();
10
+ return deviceId;
11
+ }
12
+ });
13
+
14
+ export { machineId as default };
15
+ //# sourceMappingURL=machine-id.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.mjs","sources":["../src/machine-id.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport default () => {\n try {\n const deviceId = machineIdSync();\n return deviceId;\n } catch (error) {\n const deviceId = randomUUID();\n return deviceId;\n }\n};\n"],"names":["deviceId","machineIdSync","error","randomUUID"],"mappings":";;;AAGA,gBAAe,CAAA,IAAA;IACb,IAAI;AACF,QAAA,MAAMA,QAAWC,GAAAA,aAAAA,EAAAA;QACjB,OAAOD,QAAAA;AACT,KAAA,CAAE,OAAOE,KAAO,EAAA;AACd,QAAA,MAAMF,QAAWG,GAAAA,UAAAA,EAAAA;QACjB,OAAOH,QAAAA;AACT;AACF,CAAA;;;;"}
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ const GROUP_OPERATORS = [
4
+ '$and',
5
+ '$or'
6
+ ];
7
+ const WHERE_OPERATORS = [
8
+ '$not',
9
+ '$in',
10
+ '$notIn',
11
+ '$eq',
12
+ '$eqi',
13
+ '$ne',
14
+ '$nei',
15
+ '$gt',
16
+ '$gte',
17
+ '$lt',
18
+ '$lte',
19
+ '$null',
20
+ '$notNull',
21
+ '$between',
22
+ '$startsWith',
23
+ '$endsWith',
24
+ '$startsWithi',
25
+ '$endsWithi',
26
+ '$contains',
27
+ '$notContains',
28
+ '$containsi',
29
+ '$notContainsi',
30
+ // Experimental, only for internal use
31
+ '$jsonSupersetOf'
32
+ ];
33
+ const CAST_OPERATORS = [
34
+ '$not',
35
+ '$in',
36
+ '$notIn',
37
+ '$eq',
38
+ '$ne',
39
+ '$gt',
40
+ '$gte',
41
+ '$lt',
42
+ '$lte',
43
+ '$between'
44
+ ];
45
+ const ARRAY_OPERATORS = [
46
+ '$in',
47
+ '$notIn',
48
+ '$between'
49
+ ];
50
+ const OPERATORS = {
51
+ where: WHERE_OPERATORS,
52
+ cast: CAST_OPERATORS,
53
+ group: GROUP_OPERATORS,
54
+ array: ARRAY_OPERATORS
55
+ };
56
+ // for performance, cache all operators in lowercase
57
+ const OPERATORS_LOWERCASE = Object.fromEntries(Object.entries(OPERATORS).map(([key, values])=>[
58
+ key,
59
+ values.map((value)=>value.toLowerCase())
60
+ ]));
61
+ const isObjKey = (key, obj)=>{
62
+ return key in obj;
63
+ };
64
+ const isOperatorOfType = (type, key, ignoreCase = false)=>{
65
+ if (ignoreCase) {
66
+ return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;
67
+ }
68
+ if (isObjKey(type, OPERATORS)) {
69
+ return OPERATORS[type]?.includes(key) ?? false;
70
+ }
71
+ return false;
72
+ };
73
+ const isOperator = (key, ignoreCase = false)=>{
74
+ return Object.keys(OPERATORS).some((type)=>isOperatorOfType(type, key, ignoreCase));
75
+ };
76
+
77
+ exports.isOperator = isOperator;
78
+ exports.isOperatorOfType = isOperatorOfType;
79
+ //# sourceMappingURL=operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.js","sources":["../src/operators.ts"],"sourcesContent":["const GROUP_OPERATORS = ['$and', '$or'];\n\nconst WHERE_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$eqi',\n '$ne',\n '$nei',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$null',\n '$notNull',\n '$between',\n '$startsWith',\n '$endsWith',\n '$startsWithi',\n '$endsWithi',\n '$contains',\n '$notContains',\n '$containsi',\n '$notContainsi',\n // Experimental, only for internal use\n '$jsonSupersetOf',\n];\n\nconst CAST_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$ne',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$between',\n];\n\nconst ARRAY_OPERATORS = ['$in', '$notIn', '$between'];\n\nconst OPERATORS = {\n where: WHERE_OPERATORS,\n cast: CAST_OPERATORS,\n group: GROUP_OPERATORS,\n array: ARRAY_OPERATORS,\n};\n\n// for performance, cache all operators in lowercase\nconst OPERATORS_LOWERCASE = Object.fromEntries(\n Object.entries(OPERATORS).map(([key, values]) => [\n key,\n values.map((value) => value.toLowerCase()),\n ])\n);\n\nconst isObjKey = <T extends object>(key: string | symbol | number, obj: T): key is keyof T => {\n return key in obj;\n};\n\nexport const isOperatorOfType = (type: string, key: string, ignoreCase = false) => {\n if (ignoreCase) {\n return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;\n }\n\n if (isObjKey(type, OPERATORS)) {\n return OPERATORS[type]?.includes(key) ?? false;\n }\n\n return false;\n};\n\nexport const isOperator = (key: string, ignoreCase = false) => {\n return Object.keys(OPERATORS).some((type) => isOperatorOfType(type, key, ignoreCase));\n};\n"],"names":["GROUP_OPERATORS","WHERE_OPERATORS","CAST_OPERATORS","ARRAY_OPERATORS","OPERATORS","where","cast","group","array","OPERATORS_LOWERCASE","Object","fromEntries","entries","map","key","values","value","toLowerCase","isObjKey","obj","isOperatorOfType","type","ignoreCase","includes","isOperator","keys","some"],"mappings":";;AAAA,MAAMA,eAAkB,GAAA;AAAC,IAAA,MAAA;AAAQ,IAAA;AAAM,CAAA;AAEvC,MAAMC,eAAkB,GAAA;AACtB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;;AAEA,IAAA;AACD,CAAA;AAED,MAAMC,cAAiB,GAAA;AACrB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,eAAkB,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA;AAAW,CAAA;AAErD,MAAMC,SAAY,GAAA;IAChBC,KAAOJ,EAAAA,eAAAA;IACPK,IAAMJ,EAAAA,cAAAA;IACNK,KAAOP,EAAAA,eAAAA;IACPQ,KAAOL,EAAAA;AACT,CAAA;AAEA;AACA,MAAMM,mBAAsBC,GAAAA,MAAAA,CAAOC,WAAW,CAC5CD,OAAOE,OAAO,CAACR,SAAWS,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACC,GAAAA,EAAKC,OAAO,GAAK;AAC/CD,QAAAA,GAAAA;AACAC,QAAAA,MAAAA,CAAOF,GAAG,CAAC,CAACG,KAAAA,GAAUA,MAAMC,WAAW,EAAA;AACxC,KAAA,CAAA,CAAA;AAGH,MAAMC,QAAAA,GAAW,CAAmBJ,GAA+BK,EAAAA,GAAAA,GAAAA;AACjE,IAAA,OAAOL,GAAOK,IAAAA,GAAAA;AAChB,CAAA;MAEaC,gBAAmB,GAAA,CAACC,IAAcP,EAAAA,GAAAA,EAAaQ,aAAa,KAAK,GAAA;AAC5E,IAAA,IAAIA,UAAY,EAAA;AACd,QAAA,OAAOb,mBAAmB,CAACY,IAAAA,CAAK,EAAEE,QAAST,CAAAA,GAAAA,CAAIG,WAAW,EAAO,CAAA,IAAA,KAAA;AACnE;IAEA,IAAIC,QAAAA,CAASG,MAAMjB,SAAY,CAAA,EAAA;AAC7B,QAAA,OAAOA,SAAS,CAACiB,IAAK,CAAA,EAAEE,SAAST,GAAQ,CAAA,IAAA,KAAA;AAC3C;IAEA,OAAO,KAAA;AACT;AAEaU,MAAAA,UAAAA,GAAa,CAACV,GAAAA,EAAaQ,aAAa,KAAK,GAAA;IACxD,OAAOZ,MAAAA,CAAOe,IAAI,CAACrB,SAAWsB,CAAAA,CAAAA,IAAI,CAAC,CAACL,IAAAA,GAASD,gBAAiBC,CAAAA,IAAAA,EAAMP,GAAKQ,EAAAA,UAAAA,CAAAA,CAAAA;AAC3E;;;;;"}
@@ -0,0 +1,76 @@
1
+ const GROUP_OPERATORS = [
2
+ '$and',
3
+ '$or'
4
+ ];
5
+ const WHERE_OPERATORS = [
6
+ '$not',
7
+ '$in',
8
+ '$notIn',
9
+ '$eq',
10
+ '$eqi',
11
+ '$ne',
12
+ '$nei',
13
+ '$gt',
14
+ '$gte',
15
+ '$lt',
16
+ '$lte',
17
+ '$null',
18
+ '$notNull',
19
+ '$between',
20
+ '$startsWith',
21
+ '$endsWith',
22
+ '$startsWithi',
23
+ '$endsWithi',
24
+ '$contains',
25
+ '$notContains',
26
+ '$containsi',
27
+ '$notContainsi',
28
+ // Experimental, only for internal use
29
+ '$jsonSupersetOf'
30
+ ];
31
+ const CAST_OPERATORS = [
32
+ '$not',
33
+ '$in',
34
+ '$notIn',
35
+ '$eq',
36
+ '$ne',
37
+ '$gt',
38
+ '$gte',
39
+ '$lt',
40
+ '$lte',
41
+ '$between'
42
+ ];
43
+ const ARRAY_OPERATORS = [
44
+ '$in',
45
+ '$notIn',
46
+ '$between'
47
+ ];
48
+ const OPERATORS = {
49
+ where: WHERE_OPERATORS,
50
+ cast: CAST_OPERATORS,
51
+ group: GROUP_OPERATORS,
52
+ array: ARRAY_OPERATORS
53
+ };
54
+ // for performance, cache all operators in lowercase
55
+ const OPERATORS_LOWERCASE = Object.fromEntries(Object.entries(OPERATORS).map(([key, values])=>[
56
+ key,
57
+ values.map((value)=>value.toLowerCase())
58
+ ]));
59
+ const isObjKey = (key, obj)=>{
60
+ return key in obj;
61
+ };
62
+ const isOperatorOfType = (type, key, ignoreCase = false)=>{
63
+ if (ignoreCase) {
64
+ return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;
65
+ }
66
+ if (isObjKey(type, OPERATORS)) {
67
+ return OPERATORS[type]?.includes(key) ?? false;
68
+ }
69
+ return false;
70
+ };
71
+ const isOperator = (key, ignoreCase = false)=>{
72
+ return Object.keys(OPERATORS).some((type)=>isOperatorOfType(type, key, ignoreCase));
73
+ };
74
+
75
+ export { isOperator, isOperatorOfType };
76
+ //# sourceMappingURL=operators.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.mjs","sources":["../src/operators.ts"],"sourcesContent":["const GROUP_OPERATORS = ['$and', '$or'];\n\nconst WHERE_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$eqi',\n '$ne',\n '$nei',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$null',\n '$notNull',\n '$between',\n '$startsWith',\n '$endsWith',\n '$startsWithi',\n '$endsWithi',\n '$contains',\n '$notContains',\n '$containsi',\n '$notContainsi',\n // Experimental, only for internal use\n '$jsonSupersetOf',\n];\n\nconst CAST_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$ne',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$between',\n];\n\nconst ARRAY_OPERATORS = ['$in', '$notIn', '$between'];\n\nconst OPERATORS = {\n where: WHERE_OPERATORS,\n cast: CAST_OPERATORS,\n group: GROUP_OPERATORS,\n array: ARRAY_OPERATORS,\n};\n\n// for performance, cache all operators in lowercase\nconst OPERATORS_LOWERCASE = Object.fromEntries(\n Object.entries(OPERATORS).map(([key, values]) => [\n key,\n values.map((value) => value.toLowerCase()),\n ])\n);\n\nconst isObjKey = <T extends object>(key: string | symbol | number, obj: T): key is keyof T => {\n return key in obj;\n};\n\nexport const isOperatorOfType = (type: string, key: string, ignoreCase = false) => {\n if (ignoreCase) {\n return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;\n }\n\n if (isObjKey(type, OPERATORS)) {\n return OPERATORS[type]?.includes(key) ?? false;\n }\n\n return false;\n};\n\nexport const isOperator = (key: string, ignoreCase = false) => {\n return Object.keys(OPERATORS).some((type) => isOperatorOfType(type, key, ignoreCase));\n};\n"],"names":["GROUP_OPERATORS","WHERE_OPERATORS","CAST_OPERATORS","ARRAY_OPERATORS","OPERATORS","where","cast","group","array","OPERATORS_LOWERCASE","Object","fromEntries","entries","map","key","values","value","toLowerCase","isObjKey","obj","isOperatorOfType","type","ignoreCase","includes","isOperator","keys","some"],"mappings":"AAAA,MAAMA,eAAkB,GAAA;AAAC,IAAA,MAAA;AAAQ,IAAA;AAAM,CAAA;AAEvC,MAAMC,eAAkB,GAAA;AACtB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;;AAEA,IAAA;AACD,CAAA;AAED,MAAMC,cAAiB,GAAA;AACrB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,eAAkB,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA;AAAW,CAAA;AAErD,MAAMC,SAAY,GAAA;IAChBC,KAAOJ,EAAAA,eAAAA;IACPK,IAAMJ,EAAAA,cAAAA;IACNK,KAAOP,EAAAA,eAAAA;IACPQ,KAAOL,EAAAA;AACT,CAAA;AAEA;AACA,MAAMM,mBAAsBC,GAAAA,MAAAA,CAAOC,WAAW,CAC5CD,OAAOE,OAAO,CAACR,SAAWS,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACC,GAAAA,EAAKC,OAAO,GAAK;AAC/CD,QAAAA,GAAAA;AACAC,QAAAA,MAAAA,CAAOF,GAAG,CAAC,CAACG,KAAAA,GAAUA,MAAMC,WAAW,EAAA;AACxC,KAAA,CAAA,CAAA;AAGH,MAAMC,QAAAA,GAAW,CAAmBJ,GAA+BK,EAAAA,GAAAA,GAAAA;AACjE,IAAA,OAAOL,GAAOK,IAAAA,GAAAA;AAChB,CAAA;MAEaC,gBAAmB,GAAA,CAACC,IAAcP,EAAAA,GAAAA,EAAaQ,aAAa,KAAK,GAAA;AAC5E,IAAA,IAAIA,UAAY,EAAA;AACd,QAAA,OAAOb,mBAAmB,CAACY,IAAAA,CAAK,EAAEE,QAAST,CAAAA,GAAAA,CAAIG,WAAW,EAAO,CAAA,IAAA,KAAA;AACnE;IAEA,IAAIC,QAAAA,CAASG,MAAMjB,SAAY,CAAA,EAAA;AAC7B,QAAA,OAAOA,SAAS,CAACiB,IAAK,CAAA,EAAEE,SAAST,GAAQ,CAAA,IAAA,KAAA;AAC3C;IAEA,OAAO,KAAA;AACT;AAEaU,MAAAA,UAAAA,GAAa,CAACV,GAAAA,EAAaQ,aAAa,KAAK,GAAA;IACxD,OAAOZ,MAAAA,CAAOe,IAAI,CAACrB,SAAWsB,CAAAA,CAAAA,IAAI,CAAC,CAACL,IAAAA,GAASD,gBAAiBC,CAAAA,IAAAA,EAAMP,GAAKQ,EAAAA,UAAAA,CAAAA,CAAAA;AAC3E;;;;"}
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var execa = require('execa');
4
+ var preferredPM = require('preferred-pm');
5
+
6
+ const SUPPORTED_PACKAGE_MANAGERS = [
7
+ 'npm',
8
+ 'yarn'
9
+ ];
10
+ const DEFAULT_PACKAGE_MANAGER = 'npm';
11
+ const getPreferred = async (pkgPath)=>{
12
+ const pm = await preferredPM(pkgPath);
13
+ const hasPackageManager = pm !== undefined;
14
+ if (!hasPackageManager) {
15
+ throw new Error(`Couldn't find a package manager in your project.`);
16
+ }
17
+ const isPackageManagerSupported = SUPPORTED_PACKAGE_MANAGERS.includes(pm.name);
18
+ if (!isPackageManagerSupported) {
19
+ process.emitWarning(`We detected your package manager (${pm.name} v${pm.version}), but it's not officially supported by Strapi yet. Defaulting to npm instead.`);
20
+ return DEFAULT_PACKAGE_MANAGER;
21
+ }
22
+ return pm.name;
23
+ };
24
+ const installDependencies = (path, packageManager, options = {})=>{
25
+ return execa(packageManager, [
26
+ 'install'
27
+ ], {
28
+ ...options,
29
+ cwd: path,
30
+ stdin: 'ignore'
31
+ });
32
+ };
33
+
34
+ exports.getPreferred = getPreferred;
35
+ exports.installDependencies = installDependencies;
36
+ //# sourceMappingURL=package-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.js","sources":["../src/package-manager.ts"],"sourcesContent":["import execa from 'execa';\nimport preferredPM from 'preferred-pm';\n\nimport type { Options as ProcessOptions } from 'execa';\n\nconst SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn'];\nconst DEFAULT_PACKAGE_MANAGER = 'npm' as const;\n\ntype SupportedPackageManagerName = 'npm' | 'yarn';\n\nexport const getPreferred = async (pkgPath: string): Promise<SupportedPackageManagerName> => {\n const pm = await preferredPM(pkgPath);\n\n const hasPackageManager = pm !== undefined;\n if (!hasPackageManager) {\n throw new Error(`Couldn't find a package manager in your project.`);\n }\n\n const isPackageManagerSupported = SUPPORTED_PACKAGE_MANAGERS.includes(pm.name);\n if (!isPackageManagerSupported) {\n process.emitWarning(\n `We detected your package manager (${pm.name} v${pm.version}), but it's not officially supported by Strapi yet. Defaulting to npm instead.`\n );\n\n return DEFAULT_PACKAGE_MANAGER;\n }\n\n return pm.name as SupportedPackageManagerName;\n};\n\nexport const installDependencies = (\n path: string,\n packageManager: SupportedPackageManagerName,\n options: ProcessOptions<string> = {}\n) => {\n return execa(packageManager, ['install'], { ...options, cwd: path, stdin: 'ignore' });\n};\n"],"names":["SUPPORTED_PACKAGE_MANAGERS","DEFAULT_PACKAGE_MANAGER","getPreferred","pkgPath","pm","preferredPM","hasPackageManager","undefined","Error","isPackageManagerSupported","includes","name","process","emitWarning","version","installDependencies","path","packageManager","options","execa","cwd","stdin"],"mappings":";;;;;AAKA,MAAMA,0BAA6B,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA;AAAO,CAAA;AAClD,MAAMC,uBAA0B,GAAA,KAAA;AAIzB,MAAMC,eAAe,OAAOC,OAAAA,GAAAA;IACjC,MAAMC,EAAAA,GAAK,MAAMC,WAAYF,CAAAA,OAAAA,CAAAA;AAE7B,IAAA,MAAMG,oBAAoBF,EAAOG,KAAAA,SAAAA;AACjC,IAAA,IAAI,CAACD,iBAAmB,EAAA;AACtB,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,gDAAgD,CAAC,CAAA;AACpE;AAEA,IAAA,MAAMC,yBAA4BT,GAAAA,0BAAAA,CAA2BU,QAAQ,CAACN,GAAGO,IAAI,CAAA;AAC7E,IAAA,IAAI,CAACF,yBAA2B,EAAA;AAC9BG,QAAAA,OAAAA,CAAQC,WAAW,CACjB,CAAC,kCAAkC,EAAET,EAAGO,CAAAA,IAAI,CAAC,EAAE,EAAEP,EAAAA,CAAGU,OAAO,CAAC,8EAA8E,CAAC,CAAA;QAG7I,OAAOb,uBAAAA;AACT;AAEA,IAAA,OAAOG,GAAGO,IAAI;AAChB;MAEaI,mBAAsB,GAAA,CACjCC,MACAC,cACAC,EAAAA,OAAAA,GAAkC,EAAE,GAAA;AAEpC,IAAA,OAAOC,MAAMF,cAAgB,EAAA;AAAC,QAAA;KAAU,EAAE;AAAE,QAAA,GAAGC,OAAO;QAAEE,GAAKJ,EAAAA,IAAAA;QAAMK,KAAO,EAAA;AAAS,KAAA,CAAA;AACrF;;;;;"}
@@ -0,0 +1,33 @@
1
+ import execa from 'execa';
2
+ import preferredPM from 'preferred-pm';
3
+
4
+ const SUPPORTED_PACKAGE_MANAGERS = [
5
+ 'npm',
6
+ 'yarn'
7
+ ];
8
+ const DEFAULT_PACKAGE_MANAGER = 'npm';
9
+ const getPreferred = async (pkgPath)=>{
10
+ const pm = await preferredPM(pkgPath);
11
+ const hasPackageManager = pm !== undefined;
12
+ if (!hasPackageManager) {
13
+ throw new Error(`Couldn't find a package manager in your project.`);
14
+ }
15
+ const isPackageManagerSupported = SUPPORTED_PACKAGE_MANAGERS.includes(pm.name);
16
+ if (!isPackageManagerSupported) {
17
+ process.emitWarning(`We detected your package manager (${pm.name} v${pm.version}), but it's not officially supported by Strapi yet. Defaulting to npm instead.`);
18
+ return DEFAULT_PACKAGE_MANAGER;
19
+ }
20
+ return pm.name;
21
+ };
22
+ const installDependencies = (path, packageManager, options = {})=>{
23
+ return execa(packageManager, [
24
+ 'install'
25
+ ], {
26
+ ...options,
27
+ cwd: path,
28
+ stdin: 'ignore'
29
+ });
30
+ };
31
+
32
+ export { getPreferred, installDependencies };
33
+ //# sourceMappingURL=package-manager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.mjs","sources":["../src/package-manager.ts"],"sourcesContent":["import execa from 'execa';\nimport preferredPM from 'preferred-pm';\n\nimport type { Options as ProcessOptions } from 'execa';\n\nconst SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn'];\nconst DEFAULT_PACKAGE_MANAGER = 'npm' as const;\n\ntype SupportedPackageManagerName = 'npm' | 'yarn';\n\nexport const getPreferred = async (pkgPath: string): Promise<SupportedPackageManagerName> => {\n const pm = await preferredPM(pkgPath);\n\n const hasPackageManager = pm !== undefined;\n if (!hasPackageManager) {\n throw new Error(`Couldn't find a package manager in your project.`);\n }\n\n const isPackageManagerSupported = SUPPORTED_PACKAGE_MANAGERS.includes(pm.name);\n if (!isPackageManagerSupported) {\n process.emitWarning(\n `We detected your package manager (${pm.name} v${pm.version}), but it's not officially supported by Strapi yet. Defaulting to npm instead.`\n );\n\n return DEFAULT_PACKAGE_MANAGER;\n }\n\n return pm.name as SupportedPackageManagerName;\n};\n\nexport const installDependencies = (\n path: string,\n packageManager: SupportedPackageManagerName,\n options: ProcessOptions<string> = {}\n) => {\n return execa(packageManager, ['install'], { ...options, cwd: path, stdin: 'ignore' });\n};\n"],"names":["SUPPORTED_PACKAGE_MANAGERS","DEFAULT_PACKAGE_MANAGER","getPreferred","pkgPath","pm","preferredPM","hasPackageManager","undefined","Error","isPackageManagerSupported","includes","name","process","emitWarning","version","installDependencies","path","packageManager","options","execa","cwd","stdin"],"mappings":";;;AAKA,MAAMA,0BAA6B,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA;AAAO,CAAA;AAClD,MAAMC,uBAA0B,GAAA,KAAA;AAIzB,MAAMC,eAAe,OAAOC,OAAAA,GAAAA;IACjC,MAAMC,EAAAA,GAAK,MAAMC,WAAYF,CAAAA,OAAAA,CAAAA;AAE7B,IAAA,MAAMG,oBAAoBF,EAAOG,KAAAA,SAAAA;AACjC,IAAA,IAAI,CAACD,iBAAmB,EAAA;AACtB,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,gDAAgD,CAAC,CAAA;AACpE;AAEA,IAAA,MAAMC,yBAA4BT,GAAAA,0BAAAA,CAA2BU,QAAQ,CAACN,GAAGO,IAAI,CAAA;AAC7E,IAAA,IAAI,CAACF,yBAA2B,EAAA;AAC9BG,QAAAA,OAAAA,CAAQC,WAAW,CACjB,CAAC,kCAAkC,EAAET,EAAGO,CAAAA,IAAI,CAAC,EAAE,EAAEP,EAAAA,CAAGU,OAAO,CAAC,8EAA8E,CAAC,CAAA;QAG7I,OAAOb,uBAAAA;AACT;AAEA,IAAA,OAAOG,GAAGO,IAAI;AAChB;MAEaI,mBAAsB,GAAA,CACjCC,MACAC,cACAC,EAAAA,OAAAA,GAAkC,EAAE,GAAA;AAEpC,IAAA,OAAOC,MAAMF,cAAgB,EAAA;AAAC,QAAA;KAAU,EAAE;AAAE,QAAA,GAAGC,OAAO;QAAEE,GAAKJ,EAAAA,IAAAA;QAAMK,KAAO,EAAA;AAAS,KAAA,CAAA;AACrF;;;;"}
@@ -0,0 +1,163 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var errors = require('./errors.js');
5
+
6
+ const STRAPI_DEFAULTS = {
7
+ offset: {
8
+ start: 0,
9
+ limit: 10
10
+ },
11
+ page: {
12
+ page: 1,
13
+ pageSize: 10
14
+ }
15
+ };
16
+ const paginationAttributes = [
17
+ 'start',
18
+ 'limit',
19
+ 'page',
20
+ 'pageSize'
21
+ ];
22
+ const withMaxLimit = (limit, maxLimit = -1)=>{
23
+ if (maxLimit === -1 || limit < maxLimit) {
24
+ return limit;
25
+ }
26
+ return maxLimit;
27
+ };
28
+ // Ensure minimum page & pageSize values (page >= 1, pageSize >= 0, start >= 0, limit >= 0)
29
+ const ensureMinValues = ({ start, limit })=>({
30
+ start: Math.max(start, 0),
31
+ limit: limit === -1 ? limit : Math.max(limit, 1)
32
+ });
33
+ const ensureMaxValues = (maxLimit = -1)=>({ start, limit })=>({
34
+ start,
35
+ limit: withMaxLimit(limit, maxLimit)
36
+ });
37
+ // Apply maxLimit as the limit when limit is -1
38
+ const withNoLimit = (pagination, maxLimit = -1)=>({
39
+ ...pagination,
40
+ limit: pagination.limit === -1 ? maxLimit : pagination.limit
41
+ });
42
+ const withDefaultPagination = (args, { defaults = {}, maxLimit = -1 } = {})=>{
43
+ const defaultValues = fp.merge(STRAPI_DEFAULTS, defaults);
44
+ const usePagePagination = !fp.isNil(args.page) || !fp.isNil(args.pageSize);
45
+ const useOffsetPagination = !fp.isNil(args.start) || !fp.isNil(args.limit);
46
+ const ensureValidValues = fp.pipe(ensureMinValues, ensureMaxValues(maxLimit));
47
+ // If there is no pagination attribute, don't modify the payload
48
+ if (!usePagePagination && !useOffsetPagination) {
49
+ return fp.merge(args, ensureValidValues(defaultValues.offset));
50
+ }
51
+ // If there is page & offset pagination attributes, throw an error
52
+ if (usePagePagination && useOffsetPagination) {
53
+ throw new errors.PaginationError('Cannot use both page & offset pagination in the same query');
54
+ }
55
+ const pagination = {
56
+ start: 0,
57
+ limit: 0
58
+ };
59
+ // Start / Limit
60
+ if (useOffsetPagination) {
61
+ const { start, limit } = fp.merge(defaultValues.offset, args);
62
+ Object.assign(pagination, {
63
+ start,
64
+ limit
65
+ });
66
+ }
67
+ // Page / PageSize
68
+ if (usePagePagination) {
69
+ const { page, pageSize } = fp.merge(defaultValues.page, {
70
+ ...args,
71
+ pageSize: Math.max(1, args.pageSize ?? 0)
72
+ });
73
+ Object.assign(pagination, {
74
+ start: (page - 1) * pageSize,
75
+ limit: pageSize
76
+ });
77
+ }
78
+ // Handle -1 limit
79
+ Object.assign(pagination, withNoLimit(pagination, maxLimit));
80
+ const replacePaginationAttributes = fp.pipe(// Remove pagination attributes
81
+ fp.omit(paginationAttributes), // Merge the object with the new pagination + ensure minimum & maximum values
82
+ fp.merge(ensureValidValues(pagination)));
83
+ return replacePaginationAttributes(args);
84
+ };
85
+ /**
86
+ * Transform pagination information into a paginated response:
87
+ * {
88
+ * page: number,
89
+ * pageSize: number,
90
+ * pageCount: number,
91
+ * total: number
92
+ * }
93
+ */ const transformPagedPaginationInfo = (paginationInfo, total)=>{
94
+ if (!fp.isNil(paginationInfo.page)) {
95
+ const page = paginationInfo.page;
96
+ const pageSize = paginationInfo.pageSize ?? total;
97
+ return {
98
+ page,
99
+ pageSize,
100
+ pageCount: pageSize > 0 ? Math.ceil(total / pageSize) : 0,
101
+ total
102
+ };
103
+ }
104
+ if (!fp.isNil(paginationInfo.start)) {
105
+ const start = paginationInfo.start;
106
+ const limit = paginationInfo.limit ?? total;
107
+ // Start limit to page page size
108
+ return {
109
+ page: Math.floor(start / limit) + 1,
110
+ pageSize: limit,
111
+ pageCount: limit > 0 ? Math.ceil(total / limit) : 0,
112
+ total
113
+ };
114
+ }
115
+ // Default pagination
116
+ return {
117
+ ...paginationInfo,
118
+ page: 1,
119
+ pageSize: 10,
120
+ pageCount: 1,
121
+ total
122
+ };
123
+ };
124
+ /**
125
+ * Transform pagination information into a offset response:
126
+ * {
127
+ * start: number,
128
+ * limit: number,
129
+ * total: number
130
+ * }
131
+ */ const transformOffsetPaginationInfo = (paginationInfo, total)=>{
132
+ if (!fp.isNil(paginationInfo.page)) {
133
+ const limit = paginationInfo.pageSize ?? total;
134
+ const start = (paginationInfo.page - 1) * limit;
135
+ return {
136
+ start,
137
+ limit,
138
+ total
139
+ };
140
+ }
141
+ if (!fp.isNil(paginationInfo.start)) {
142
+ const start = paginationInfo.start;
143
+ const limit = paginationInfo.limit ?? total;
144
+ // Start limit to page page size
145
+ return {
146
+ start,
147
+ limit,
148
+ total
149
+ };
150
+ }
151
+ // Default pagination
152
+ return {
153
+ ...paginationInfo,
154
+ start: 0,
155
+ limit: 10,
156
+ total
157
+ };
158
+ };
159
+
160
+ exports.transformOffsetPaginationInfo = transformOffsetPaginationInfo;
161
+ exports.transformPagedPaginationInfo = transformPagedPaginationInfo;
162
+ exports.withDefaultPagination = withDefaultPagination;
163
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sources":["../src/pagination.ts"],"sourcesContent":["import { merge, pipe, omit, isNil } from 'lodash/fp';\nimport { PaginationError } from './errors';\n\ninterface PaginationArgs {\n page: number;\n pageSize: number;\n start: number;\n limit: number;\n}\n\nexport interface Pagination {\n start: number;\n limit: number;\n}\n\nexport interface PagePatinationInformation {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n}\n\nexport interface OffsetPaginationInformation {\n start: number;\n limit: number;\n total: number;\n}\n\nconst STRAPI_DEFAULTS = {\n offset: {\n start: 0,\n limit: 10,\n },\n page: {\n page: 1,\n pageSize: 10,\n },\n};\n\nconst paginationAttributes = ['start', 'limit', 'page', 'pageSize'];\n\nconst withMaxLimit = (limit: number, maxLimit = -1) => {\n if (maxLimit === -1 || limit < maxLimit) {\n return limit;\n }\n\n return maxLimit;\n};\n\n// Ensure minimum page & pageSize values (page >= 1, pageSize >= 0, start >= 0, limit >= 0)\nconst ensureMinValues = ({ start, limit }: Pagination) => ({\n start: Math.max(start, 0),\n limit: limit === -1 ? limit : Math.max(limit, 1),\n});\n\nconst ensureMaxValues =\n (maxLimit = -1) =>\n ({ start, limit }: { start: number; limit: number }) => ({\n start,\n limit: withMaxLimit(limit, maxLimit),\n });\n\n// Apply maxLimit as the limit when limit is -1\nconst withNoLimit = (pagination: Pagination, maxLimit = -1) => ({\n ...pagination,\n limit: pagination.limit === -1 ? maxLimit : pagination.limit,\n});\n\nconst withDefaultPagination = <T extends Partial<PaginationArgs>>(\n args: T,\n { defaults = {}, maxLimit = -1 } = {}\n) => {\n const defaultValues = merge(STRAPI_DEFAULTS, defaults);\n\n const usePagePagination = !isNil(args.page) || !isNil(args.pageSize);\n const useOffsetPagination = !isNil(args.start) || !isNil(args.limit);\n\n const ensureValidValues = pipe(ensureMinValues, ensureMaxValues(maxLimit));\n\n // If there is no pagination attribute, don't modify the payload\n if (!usePagePagination && !useOffsetPagination) {\n return merge(args, ensureValidValues(defaultValues.offset));\n }\n\n // If there is page & offset pagination attributes, throw an error\n if (usePagePagination && useOffsetPagination) {\n throw new PaginationError('Cannot use both page & offset pagination in the same query');\n }\n\n const pagination: Pagination = {\n start: 0,\n limit: 0,\n };\n\n // Start / Limit\n if (useOffsetPagination) {\n const { start, limit } = merge(defaultValues.offset, args);\n\n Object.assign(pagination, { start, limit });\n }\n\n // Page / PageSize\n if (usePagePagination) {\n const { page, pageSize } = merge(defaultValues.page, {\n ...args,\n pageSize: Math.max(1, args.pageSize ?? 0),\n });\n\n Object.assign(pagination, {\n start: (page - 1) * pageSize,\n limit: pageSize,\n });\n }\n\n // Handle -1 limit\n Object.assign(pagination, withNoLimit(pagination, maxLimit));\n\n const replacePaginationAttributes = pipe(\n // Remove pagination attributes\n omit(paginationAttributes),\n // Merge the object with the new pagination + ensure minimum & maximum values\n merge(ensureValidValues(pagination))\n );\n\n return replacePaginationAttributes(args);\n};\n\n/**\n * Transform pagination information into a paginated response:\n * {\n * page: number,\n * pageSize: number,\n * pageCount: number,\n * total: number\n * }\n */\nconst transformPagedPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): PagePatinationInformation => {\n if (!isNil(paginationInfo.page)) {\n const page = paginationInfo.page;\n const pageSize = paginationInfo.pageSize ?? total;\n\n return {\n page,\n pageSize,\n pageCount: pageSize > 0 ? Math.ceil(total / pageSize) : 0,\n total,\n };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return {\n page: Math.floor(start / limit) + 1,\n pageSize: limit,\n pageCount: limit > 0 ? Math.ceil(total / limit) : 0,\n total,\n };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n page: 1,\n pageSize: 10,\n pageCount: 1,\n total,\n };\n};\n\n/**\n * Transform pagination information into a offset response:\n * {\n * start: number,\n * limit: number,\n * total: number\n * }\n */\nconst transformOffsetPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): OffsetPaginationInformation => {\n if (!isNil(paginationInfo.page)) {\n const limit = paginationInfo.pageSize ?? total;\n const start = (paginationInfo.page - 1) * limit;\n\n return { start, limit, total };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return { start, limit, total };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n start: 0,\n limit: 10,\n total,\n };\n};\n\nexport { withDefaultPagination, transformPagedPaginationInfo, transformOffsetPaginationInfo };\n"],"names":["STRAPI_DEFAULTS","offset","start","limit","page","pageSize","paginationAttributes","withMaxLimit","maxLimit","ensureMinValues","Math","max","ensureMaxValues","withNoLimit","pagination","withDefaultPagination","args","defaults","defaultValues","merge","usePagePagination","isNil","useOffsetPagination","ensureValidValues","pipe","PaginationError","Object","assign","replacePaginationAttributes","omit","transformPagedPaginationInfo","paginationInfo","total","pageCount","ceil","floor","transformOffsetPaginationInfo"],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ import { merge, isNil, pipe, omit } from 'lodash/fp';
2
+ import { PaginationError } from './errors.mjs';
3
+
4
+ const STRAPI_DEFAULTS = {
5
+ offset: {
6
+ start: 0,
7
+ limit: 10
8
+ },
9
+ page: {
10
+ page: 1,
11
+ pageSize: 10
12
+ }
13
+ };
14
+ const paginationAttributes = [
15
+ 'start',
16
+ 'limit',
17
+ 'page',
18
+ 'pageSize'
19
+ ];
20
+ const withMaxLimit = (limit, maxLimit = -1)=>{
21
+ if (maxLimit === -1 || limit < maxLimit) {
22
+ return limit;
23
+ }
24
+ return maxLimit;
25
+ };
26
+ // Ensure minimum page & pageSize values (page >= 1, pageSize >= 0, start >= 0, limit >= 0)
27
+ const ensureMinValues = ({ start, limit })=>({
28
+ start: Math.max(start, 0),
29
+ limit: limit === -1 ? limit : Math.max(limit, 1)
30
+ });
31
+ const ensureMaxValues = (maxLimit = -1)=>({ start, limit })=>({
32
+ start,
33
+ limit: withMaxLimit(limit, maxLimit)
34
+ });
35
+ // Apply maxLimit as the limit when limit is -1
36
+ const withNoLimit = (pagination, maxLimit = -1)=>({
37
+ ...pagination,
38
+ limit: pagination.limit === -1 ? maxLimit : pagination.limit
39
+ });
40
+ const withDefaultPagination = (args, { defaults = {}, maxLimit = -1 } = {})=>{
41
+ const defaultValues = merge(STRAPI_DEFAULTS, defaults);
42
+ const usePagePagination = !isNil(args.page) || !isNil(args.pageSize);
43
+ const useOffsetPagination = !isNil(args.start) || !isNil(args.limit);
44
+ const ensureValidValues = pipe(ensureMinValues, ensureMaxValues(maxLimit));
45
+ // If there is no pagination attribute, don't modify the payload
46
+ if (!usePagePagination && !useOffsetPagination) {
47
+ return merge(args, ensureValidValues(defaultValues.offset));
48
+ }
49
+ // If there is page & offset pagination attributes, throw an error
50
+ if (usePagePagination && useOffsetPagination) {
51
+ throw new PaginationError('Cannot use both page & offset pagination in the same query');
52
+ }
53
+ const pagination = {
54
+ start: 0,
55
+ limit: 0
56
+ };
57
+ // Start / Limit
58
+ if (useOffsetPagination) {
59
+ const { start, limit } = merge(defaultValues.offset, args);
60
+ Object.assign(pagination, {
61
+ start,
62
+ limit
63
+ });
64
+ }
65
+ // Page / PageSize
66
+ if (usePagePagination) {
67
+ const { page, pageSize } = merge(defaultValues.page, {
68
+ ...args,
69
+ pageSize: Math.max(1, args.pageSize ?? 0)
70
+ });
71
+ Object.assign(pagination, {
72
+ start: (page - 1) * pageSize,
73
+ limit: pageSize
74
+ });
75
+ }
76
+ // Handle -1 limit
77
+ Object.assign(pagination, withNoLimit(pagination, maxLimit));
78
+ const replacePaginationAttributes = pipe(// Remove pagination attributes
79
+ omit(paginationAttributes), // Merge the object with the new pagination + ensure minimum & maximum values
80
+ merge(ensureValidValues(pagination)));
81
+ return replacePaginationAttributes(args);
82
+ };
83
+ /**
84
+ * Transform pagination information into a paginated response:
85
+ * {
86
+ * page: number,
87
+ * pageSize: number,
88
+ * pageCount: number,
89
+ * total: number
90
+ * }
91
+ */ const transformPagedPaginationInfo = (paginationInfo, total)=>{
92
+ if (!isNil(paginationInfo.page)) {
93
+ const page = paginationInfo.page;
94
+ const pageSize = paginationInfo.pageSize ?? total;
95
+ return {
96
+ page,
97
+ pageSize,
98
+ pageCount: pageSize > 0 ? Math.ceil(total / pageSize) : 0,
99
+ total
100
+ };
101
+ }
102
+ if (!isNil(paginationInfo.start)) {
103
+ const start = paginationInfo.start;
104
+ const limit = paginationInfo.limit ?? total;
105
+ // Start limit to page page size
106
+ return {
107
+ page: Math.floor(start / limit) + 1,
108
+ pageSize: limit,
109
+ pageCount: limit > 0 ? Math.ceil(total / limit) : 0,
110
+ total
111
+ };
112
+ }
113
+ // Default pagination
114
+ return {
115
+ ...paginationInfo,
116
+ page: 1,
117
+ pageSize: 10,
118
+ pageCount: 1,
119
+ total
120
+ };
121
+ };
122
+ /**
123
+ * Transform pagination information into a offset response:
124
+ * {
125
+ * start: number,
126
+ * limit: number,
127
+ * total: number
128
+ * }
129
+ */ const transformOffsetPaginationInfo = (paginationInfo, total)=>{
130
+ if (!isNil(paginationInfo.page)) {
131
+ const limit = paginationInfo.pageSize ?? total;
132
+ const start = (paginationInfo.page - 1) * limit;
133
+ return {
134
+ start,
135
+ limit,
136
+ total
137
+ };
138
+ }
139
+ if (!isNil(paginationInfo.start)) {
140
+ const start = paginationInfo.start;
141
+ const limit = paginationInfo.limit ?? total;
142
+ // Start limit to page page size
143
+ return {
144
+ start,
145
+ limit,
146
+ total
147
+ };
148
+ }
149
+ // Default pagination
150
+ return {
151
+ ...paginationInfo,
152
+ start: 0,
153
+ limit: 10,
154
+ total
155
+ };
156
+ };
157
+
158
+ export { transformOffsetPaginationInfo, transformPagedPaginationInfo, withDefaultPagination };
159
+ //# sourceMappingURL=pagination.mjs.map