@strapi/utils 5.48.1 → 5.50.0

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 (131) hide show
  1. package/dist/async.d.ts +2 -1
  2. package/dist/async.d.ts.map +1 -1
  3. package/dist/async.js +5 -1
  4. package/dist/async.js.map +1 -1
  5. package/dist/content-api-router.d.ts.map +1 -1
  6. package/dist/content-types.d.ts +5 -5
  7. package/dist/content-types.d.ts.map +1 -1
  8. package/dist/content-types.js +21 -17
  9. package/dist/content-types.js.map +1 -1
  10. package/dist/convert-query-params.d.ts.map +1 -1
  11. package/dist/convert-query-params.js +23 -19
  12. package/dist/convert-query-params.js.map +1 -1
  13. package/dist/convert-query-params.mjs +2 -2
  14. package/dist/convert-query-params.mjs.map +1 -1
  15. package/dist/env-helper.js +12 -8
  16. package/dist/env-helper.js.map +1 -1
  17. package/dist/errors.d.ts.map +1 -1
  18. package/dist/file.d.ts +0 -10
  19. package/dist/file.d.ts.map +1 -1
  20. package/dist/format-yup-error.d.ts.map +1 -1
  21. package/dist/has-published-version-param.d.ts +1 -1
  22. package/dist/has-published-version-param.d.ts.map +1 -1
  23. package/dist/hooks.d.ts.map +1 -1
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +12 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +3 -0
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/install-id.d.ts.map +1 -1
  31. package/dist/install-id.js +6 -2
  32. package/dist/install-id.js.map +1 -1
  33. package/dist/model-cache.d.ts.map +1 -1
  34. package/dist/operators.d.ts.map +1 -1
  35. package/dist/package-manager.d.ts.map +1 -1
  36. package/dist/package-manager.js +7 -2
  37. package/dist/package-manager.js.map +1 -1
  38. package/dist/pagination.d.ts.map +1 -1
  39. package/dist/parse-type.d.ts.map +1 -1
  40. package/dist/parse-type.js +4 -3
  41. package/dist/parse-type.js.map +1 -1
  42. package/dist/policy.d.ts.map +1 -1
  43. package/dist/primitives/arrays.d.ts.map +1 -1
  44. package/dist/primitives/dates.d.ts.map +1 -1
  45. package/dist/primitives/objects.d.ts.map +1 -1
  46. package/dist/primitives/objects.js +6 -2
  47. package/dist/primitives/objects.js.map +1 -1
  48. package/dist/primitives/strings.d.ts.map +1 -1
  49. package/dist/primitives/strings.js +10 -5
  50. package/dist/primitives/strings.js.map +1 -1
  51. package/dist/provider-factory.d.ts.map +1 -1
  52. package/dist/publication-filter.d.ts +1 -1
  53. package/dist/publication-filter.d.ts.map +1 -1
  54. package/dist/relations.d.ts.map +1 -1
  55. package/dist/route-serialization.d.ts.map +1 -1
  56. package/dist/sanitize/index.d.ts.map +1 -1
  57. package/dist/sanitize/index.js +4 -1
  58. package/dist/sanitize/index.js.map +1 -1
  59. package/dist/sanitize/index.mjs +4 -1
  60. package/dist/sanitize/index.mjs.map +1 -1
  61. package/dist/sanitize/sanitizers.d.ts +0 -1
  62. package/dist/sanitize/sanitizers.d.ts.map +1 -1
  63. package/dist/sanitize/visitors/remove-disallowed-fields.d.ts.map +1 -1
  64. package/dist/sanitize/visitors/remove-restricted-fields.d.ts.map +1 -1
  65. package/dist/sanitize/visitors/remove-restricted-relations.d.ts.map +1 -1
  66. package/dist/security.d.ts +1 -1
  67. package/dist/security.d.ts.map +1 -1
  68. package/dist/sessions.d.ts +35 -0
  69. package/dist/sessions.d.ts.map +1 -0
  70. package/dist/sessions.js +46 -0
  71. package/dist/sessions.js.map +1 -0
  72. package/dist/sessions.mjs +42 -0
  73. package/dist/sessions.mjs.map +1 -0
  74. package/dist/set-creator-fields.d.ts.map +1 -1
  75. package/dist/sort-query.js +5 -1
  76. package/dist/sort-query.js.map +1 -1
  77. package/dist/template.d.ts.map +1 -1
  78. package/dist/traverse/factory.d.ts +108 -9
  79. package/dist/traverse/factory.d.ts.map +1 -1
  80. package/dist/traverse/query-fields.d.ts +0 -1
  81. package/dist/traverse/query-fields.d.ts.map +1 -1
  82. package/dist/traverse/query-filters.d.ts +0 -1
  83. package/dist/traverse/query-filters.d.ts.map +1 -1
  84. package/dist/traverse/query-populate.d.ts +0 -1
  85. package/dist/traverse/query-populate.d.ts.map +1 -1
  86. package/dist/traverse/query-populate.js +24 -0
  87. package/dist/traverse/query-populate.js.map +1 -1
  88. package/dist/traverse/query-populate.mjs +24 -0
  89. package/dist/traverse/query-populate.mjs.map +1 -1
  90. package/dist/traverse/query-sort.d.ts +0 -1
  91. package/dist/traverse/query-sort.d.ts.map +1 -1
  92. package/dist/traverse-entity.d.ts +0 -1
  93. package/dist/traverse-entity.d.ts.map +1 -1
  94. package/dist/traverse-entity.js +7 -0
  95. package/dist/traverse-entity.js.map +1 -1
  96. package/dist/traverse-entity.mjs +7 -0
  97. package/dist/traverse-entity.mjs.map +1 -1
  98. package/dist/types.d.ts +0 -25
  99. package/dist/types.d.ts.map +1 -1
  100. package/dist/user-agent.d.ts +23 -0
  101. package/dist/user-agent.d.ts.map +1 -0
  102. package/dist/user-agent.js +74 -0
  103. package/dist/user-agent.js.map +1 -0
  104. package/dist/user-agent.mjs +71 -0
  105. package/dist/user-agent.mjs.map +1 -0
  106. package/dist/validate/index.d.ts.map +1 -1
  107. package/dist/validate/utils.d.ts.map +1 -1
  108. package/dist/validate/validators.d.ts +4 -4
  109. package/dist/validate/validators.d.ts.map +1 -1
  110. package/dist/validate/validators.js +157 -0
  111. package/dist/validate/validators.js.map +1 -1
  112. package/dist/validate/validators.mjs +159 -2
  113. package/dist/validate/validators.mjs.map +1 -1
  114. package/dist/validate/visitors/throw-disallowed-fields.d.ts.map +1 -1
  115. package/dist/validate/visitors/throw-restricted-fields.d.ts.map +1 -1
  116. package/dist/validate/visitors/throw-restricted-relations.d.ts.map +1 -1
  117. package/dist/validation/route-validators/query-params.js +3 -2
  118. package/dist/validation/route-validators/query-params.js.map +1 -1
  119. package/dist/validation/utilities.d.ts +5 -5
  120. package/dist/validation/utilities.d.ts.map +1 -1
  121. package/dist/validators.d.ts.map +1 -1
  122. package/dist/validators.js +3 -2
  123. package/dist/validators.js.map +1 -1
  124. package/dist/yup.d.ts.map +1 -1
  125. package/dist/yup.js +10 -6
  126. package/dist/yup.js.map +1 -1
  127. package/dist/zod.d.ts +1 -1
  128. package/dist/zod.d.ts.map +1 -1
  129. package/dist/zod.js +3 -2
  130. package/dist/zod.js.map +1 -1
  131. package/package.json +9 -5
package/dist/zod.js CHANGED
@@ -3,7 +3,8 @@
3
3
  var z = require('zod/v4');
4
4
  var errors = require('./errors.js');
5
5
 
6
- function _interopNamespaceDefault(e) {
6
+ function _interopNamespace(e) {
7
+ if (e && e.__esModule) return e;
7
8
  var n = Object.create(null);
8
9
  if (e) {
9
10
  Object.keys(e).forEach(function (k) {
@@ -20,7 +21,7 @@ function _interopNamespaceDefault(e) {
20
21
  return Object.freeze(n);
21
22
  }
22
23
 
23
- var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
24
+ var z__namespace = /*#__PURE__*/_interopNamespace(z);
24
25
 
25
26
  const validateZodSchema = (schema)=>(data, errorMessage)=>{
26
27
  try {
package/dist/zod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"zod.js","sources":["../src/zod.ts"],"sourcesContent":["import * as z from 'zod/v4';\n\nimport { ValidationError } from './errors';\n\n/**\n * Re-export of the Zod v4 schema builder from the same version Strapi uses\n * internally. Use this for building schemas passed to content API param\n * registration (addQueryParams / addInputParams) so your code stays compatible\n * across Strapi minor/patch updates.\n *\n * @example\n * import { z } from '@strapi/utils';\n * strapi.contentAPI.addQueryParams({\n * search: {\n * schema: z.string().max(200).optional(),\n * matchRoute: (route) => route.path.includes('articles'),\n * },\n * });\n */\nexport { z };\n\nexport const validateZodSchema =\n <T extends z.Schema>(schema: T) =>\n (data: unknown, errorMessage?: string): z.infer<T> => {\n try {\n return schema.parse(data);\n } catch (error) {\n if (error instanceof z.ZodError) {\n const { message, errors } = formatZodErrors(error);\n throw new ValidationError(errorMessage || message, { errors });\n }\n\n throw error;\n }\n };\n\nconst formatZodErrors = (zodError: z.ZodError) => ({\n errors: zodError.issues.map((issue) => {\n return {\n path: issue.path.map(String),\n message: issue.message,\n name: 'ValidationError',\n value: undefined,\n };\n }),\n message: zodError.issues[0]?.message ?? 'Validation error',\n});\n\ntype FormErrors = Record<string, string>;\n\n/**\n * Converts a ZodError into form-compatible errors matching\n * getYupValidationErrors from @strapi/admin Form component.\n *\n * Returns a flat object with dot-path keys and string error messages.\n * Only the first error per path is kept (matches Yup behavior).\n * Root-level errors (path = []) are stored under the empty string key ''.\n */\nexport const getZodValidationErrors = (error: z.ZodError): FormErrors => {\n const errors: FormErrors = {};\n\n for (const issue of error.issues) {\n const path = issue.path.join('.');\n if (!(path in errors)) {\n errors[path] = issue.message;\n }\n }\n\n return errors;\n};\n"],"names":["validateZodSchema","schema","data","errorMessage","parse","error","z","ZodError","message","errors","formatZodErrors","ValidationError","zodError","issues","map","issue","path","String","name","value","undefined","getZodValidationErrors","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAMA,iBAAAA,GACX,CAAqBC,MAAAA,GACrB,CAACC,IAAAA,EAAeC,YAAAA,GAAAA;QACd,IAAI;YACF,OAAOF,MAAAA,CAAOG,KAAK,CAACF,IAAAA,CAAAA;AACtB,QAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;YACd,IAAIA,KAAAA,YAAiBC,YAAAA,CAAEC,QAAQ,EAAE;AAC/B,gBAAA,MAAM,EAAEC,OAAO,UAAEC,QAAM,EAAE,GAAGC,eAAAA,CAAgBL,KAAAA,CAAAA;gBAC5C,MAAM,IAAIM,sBAAAA,CAAgBR,YAAAA,IAAgBK,OAAAA,EAAS;AAAEC,4BAAAA;AAAO,iBAAA,CAAA;AAC9D,YAAA;YAEA,MAAMJ,KAAAA;AACR,QAAA;IACF;AAEF,MAAMK,eAAAA,GAAkB,CAACE,QAAAA,IAA0B;AACjDH,QAAAA,MAAAA,EAAQG,QAAAA,CAASC,MAAM,CAACC,GAAG,CAAC,CAACC,KAAAA,GAAAA;YAC3B,OAAO;AACLC,gBAAAA,IAAAA,EAAMD,KAAAA,CAAMC,IAAI,CAACF,GAAG,CAACG,MAAAA,CAAAA;AACrBT,gBAAAA,OAAAA,EAASO,MAAMP,OAAO;gBACtBU,IAAAA,EAAM,iBAAA;gBACNC,KAAAA,EAAOC;AACT,aAAA;AACF,QAAA,CAAA,CAAA;AACAZ,QAAAA,OAAAA,EAASI,QAAAA,CAASC,MAAM,CAAC,CAAA,CAAE,EAAEL,OAAAA,IAAW;KAC1C,CAAA;AAIA;;;;;;;IAQO,MAAMa,sBAAAA,GAAyB,CAAChB,KAAAA,GAAAA;AACrC,IAAA,MAAMI,SAAqB,EAAC;AAE5B,IAAA,KAAK,MAAMM,KAAAA,IAASV,KAAAA,CAAMQ,MAAM,CAAE;AAChC,QAAA,MAAMG,IAAAA,GAAOD,KAAAA,CAAMC,IAAI,CAACM,IAAI,CAAC,GAAA,CAAA;AAC7B,QAAA,IAAI,EAAEN,IAAAA,IAAQP,MAAK,CAAA,EAAI;AACrBA,YAAAA,MAAM,CAACO,IAAAA,CAAK,GAAGD,KAAAA,CAAMP,OAAO;AAC9B,QAAA;AACF,IAAA;IAEA,OAAOC,MAAAA;AACT;;;;;;"}
1
+ {"version":3,"file":"zod.js","sources":["../src/zod.ts"],"sourcesContent":["import * as z from 'zod/v4';\n\nimport { ValidationError } from './errors';\n\n/**\n * Re-export of the Zod v4 schema builder from the same version Strapi uses\n * internally. Use this for building schemas passed to content API param\n * registration (addQueryParams / addInputParams) so your code stays compatible\n * across Strapi minor/patch updates.\n *\n * @example\n * import { z } from '@strapi/utils';\n * strapi.contentAPI.addQueryParams({\n * search: {\n * schema: z.string().max(200).optional(),\n * matchRoute: (route) => route.path.includes('articles'),\n * },\n * });\n */\nexport { z };\n\nexport const validateZodSchema =\n <T extends z.Schema>(schema: T) =>\n (data: unknown, errorMessage?: string): z.infer<T> => {\n try {\n return schema.parse(data);\n } catch (error) {\n if (error instanceof z.ZodError) {\n const { message, errors } = formatZodErrors(error);\n throw new ValidationError(errorMessage || message, { errors });\n }\n\n throw error;\n }\n };\n\nconst formatZodErrors = (zodError: z.ZodError) => ({\n errors: zodError.issues.map((issue) => {\n return {\n path: issue.path.map(String),\n message: issue.message,\n name: 'ValidationError',\n value: undefined,\n };\n }),\n message: zodError.issues[0]?.message ?? 'Validation error',\n});\n\ntype FormErrors = Record<string, string>;\n\n/**\n * Converts a ZodError into form-compatible errors matching\n * getYupValidationErrors from @strapi/admin Form component.\n *\n * Returns a flat object with dot-path keys and string error messages.\n * Only the first error per path is kept (matches Yup behavior).\n * Root-level errors (path = []) are stored under the empty string key ''.\n */\nexport const getZodValidationErrors = (error: z.ZodError): FormErrors => {\n const errors: FormErrors = {};\n\n for (const issue of error.issues) {\n const path = issue.path.join('.');\n if (!(path in errors)) {\n errors[path] = issue.message;\n }\n }\n\n return errors;\n};\n"],"names":["validateZodSchema","schema","data","errorMessage","parse","error","z","ZodError","message","errors","formatZodErrors","ValidationError","zodError","issues","map","issue","path","String","name","value","undefined","getZodValidationErrors","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAMA,iBAAAA,GACX,CAAqBC,MAAAA,GACrB,CAACC,IAAAA,EAAeC,YAAAA,GAAAA;QACd,IAAI;YACF,OAAOF,MAAAA,CAAOG,KAAK,CAACF,IAAAA,CAAAA;AACtB,QAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;YACd,IAAIA,KAAAA,YAAiBC,YAAAA,CAAEC,QAAQ,EAAE;AAC/B,gBAAA,MAAM,EAAEC,OAAO,UAAEC,QAAM,EAAE,GAAGC,eAAAA,CAAgBL,KAAAA,CAAAA;gBAC5C,MAAM,IAAIM,sBAAAA,CAAgBR,YAAAA,IAAgBK,OAAAA,EAAS;AAAEC,4BAAAA;AAAO,iBAAA,CAAA;AAC9D,YAAA;YAEA,MAAMJ,KAAAA;AACR,QAAA;IACF;AAEF,MAAMK,eAAAA,GAAkB,CAACE,QAAAA,IAA0B;AACjDH,QAAAA,MAAAA,EAAQG,QAAAA,CAASC,MAAM,CAACC,GAAG,CAAC,CAACC,KAAAA,GAAAA;YAC3B,OAAO;AACLC,gBAAAA,IAAAA,EAAMD,KAAAA,CAAMC,IAAI,CAACF,GAAG,CAACG,MAAAA,CAAAA;AACrBT,gBAAAA,OAAAA,EAASO,MAAMP,OAAO;gBACtBU,IAAAA,EAAM,iBAAA;gBACNC,KAAAA,EAAOC;AACT,aAAA;AACF,QAAA,CAAA,CAAA;AACAZ,QAAAA,OAAAA,EAASI,QAAAA,CAASC,MAAM,CAAC,CAAA,CAAE,EAAEL,OAAAA,IAAW;KAC1C,CAAA;AAIA;;;;;;;IAQO,MAAMa,sBAAAA,GAAyB,CAAChB,KAAAA,GAAAA;AACrC,IAAA,MAAMI,SAAqB,EAAC;AAE5B,IAAA,KAAK,MAAMM,KAAAA,IAASV,KAAAA,CAAMQ,MAAM,CAAE;AAChC,QAAA,MAAMG,IAAAA,GAAOD,KAAAA,CAAMC,IAAI,CAACM,IAAI,CAAC,GAAA,CAAA;AAC7B,QAAA,IAAI,EAAEN,IAAAA,IAAQP,MAAK,CAAA,EAAI;AACrBA,YAAAA,MAAM,CAACO,IAAAA,CAAK,GAAGD,KAAAA,CAAMP,OAAO;AAC9B,QAAA;AACF,IAAA;IAEA,OAAOC,MAAAA;AACT;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/utils",
3
- "version": "5.48.1",
3
+ "version": "5.50.0",
4
4
  "description": "Shared utilities for the Strapi packages",
5
5
  "keywords": [
6
6
  "strapi",
@@ -44,6 +44,8 @@
44
44
  "test:ts": "run -T tsc --noEmit",
45
45
  "test:unit": "run -T jest",
46
46
  "test:unit:watch": "run -T jest --watch",
47
+ "test:unit:vitest": "vitest run",
48
+ "test:unit:vitest:watch": "vitest --watch",
47
49
  "watch": "run -T rollup -c -w"
48
50
  },
49
51
  "dependencies": {
@@ -60,12 +62,14 @@
60
62
  },
61
63
  "devDependencies": {
62
64
  "@types/http-errors": "2.0.4",
63
- "@types/koa": "2.13.4",
64
- "@types/node": "24.10.0",
65
- "eslint-config-custom": "5.48.1",
65
+ "@types/koa": "2.15.2",
66
+ "@types/node": "20.19.41",
67
+ "eslint-config-custom": "5.50.0",
66
68
  "koa": "2.16.4",
67
69
  "koa-body": "6.0.1",
68
- "tsconfig": "5.48.1"
70
+ "tsconfig": "5.50.0",
71
+ "vitest": "catalog:",
72
+ "vitest-config": "5.50.0"
69
73
  },
70
74
  "engines": {
71
75
  "node": ">=20.0.0 <=26.x.x",