moonflower 1.2.0 → 1.3.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.
- package/dist/errors/UserFacingErrors.cjs +1 -1
- package/dist/errors/UserFacingErrors.cjs.map +1 -1
- package/dist/errors/UserFacingErrors.d.ts +27 -0
- package/dist/errors/UserFacingErrors.d.ts.map +1 -1
- package/dist/errors/UserFacingErrors.mjs +67 -13
- package/dist/errors/UserFacingErrors.mjs.map +1 -1
- package/dist/hooks/usePathParams.cjs +1 -1
- package/dist/hooks/usePathParams.cjs.map +1 -1
- package/dist/hooks/usePathParams.d.ts.map +1 -1
- package/dist/hooks/usePathParams.mjs +20 -27
- package/dist/hooks/usePathParams.mjs.map +1 -1
- package/dist/hooks/useQueryParams.cjs +1 -1
- package/dist/hooks/useQueryParams.cjs.map +1 -1
- package/dist/hooks/useQueryParams.d.ts +4 -3
- package/dist/hooks/useQueryParams.d.ts.map +1 -1
- package/dist/hooks/useQueryParams.mjs +24 -33
- package/dist/hooks/useQueryParams.mjs.map +1 -1
- package/dist/hooks/useRequestBody.cjs +1 -1
- package/dist/hooks/useRequestBody.cjs.map +1 -1
- package/dist/hooks/useRequestBody.d.ts +4 -3
- package/dist/hooks/useRequestBody.d.ts.map +1 -1
- package/dist/hooks/useRequestBody.mjs +23 -34
- package/dist/hooks/useRequestBody.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +64 -55
- package/dist/node_modules/zod/index.cjs +2 -0
- package/dist/node_modules/zod/index.cjs.map +1 -0
- package/dist/node_modules/zod/index.mjs +6 -0
- package/dist/node_modules/zod/index.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/checks.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/checks.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/checks.mjs +34 -0
- package/dist/node_modules/zod/v4/classic/checks.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/coerce.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/coerce.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/coerce.mjs +26 -0
- package/dist/node_modules/zod/v4/classic/coerce.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/compat.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/compat.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/compat.mjs +35 -0
- package/dist/node_modules/zod/v4/classic/compat.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.mjs +41 -0
- package/dist/node_modules/zod/v4/classic/errors.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/external.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/external.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/external.mjs +260 -0
- package/dist/node_modules/zod/v4/classic/external.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/from-json-schema.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/from-json-schema.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/from-json-schema.mjs +287 -0
- package/dist/node_modules/zod/v4/classic/from-json-schema.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.mjs +40 -0
- package/dist/node_modules/zod/v4/classic/iso.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.mjs +19 -0
- package/dist/node_modules/zod/v4/classic/parse.mjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs +2 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.mjs +912 -0
- package/dist/node_modules/zod/v4/classic/schemas.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/api.cjs +2 -0
- package/dist/node_modules/zod/v4/core/api.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/api.mjs +1110 -0
- package/dist/node_modules/zod/v4/core/api.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.cjs +2 -0
- package/dist/node_modules/zod/v4/core/checks.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.mjs +421 -0
- package/dist/node_modules/zod/v4/core/checks.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/core.cjs +2 -0
- package/dist/node_modules/zod/v4/core/core.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/core.mjs +62 -0
- package/dist/node_modules/zod/v4/core/core.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.cjs +4 -0
- package/dist/node_modules/zod/v4/core/doc.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.mjs +27 -0
- package/dist/node_modules/zod/v4/core/doc.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.cjs +3 -0
- package/dist/node_modules/zod/v4/core/errors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.mjs +89 -0
- package/dist/node_modules/zod/v4/core/errors.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/index.cjs +2 -0
- package/dist/node_modules/zod/v4/core/index.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/index.mjs +293 -0
- package/dist/node_modules/zod/v4/core/index.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-generator.cjs +2 -0
- package/dist/node_modules/zod/v4/core/json-schema-generator.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-generator.mjs +66 -0
- package/dist/node_modules/zod/v4/core/json-schema-generator.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs +2 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.mjs +346 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/dist/node_modules/zod/v4/core/json-schema.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema.mjs +2 -0
- package/dist/node_modules/zod/v4/core/json-schema.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.cjs +2 -0
- package/dist/node_modules/zod/v4/core/parse.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.mjs +75 -0
- package/dist/node_modules/zod/v4/core/parse.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs +2 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.mjs +94 -0
- package/dist/node_modules/zod/v4/core/regexes.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.cjs +2 -0
- package/dist/node_modules/zod/v4/core/registries.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.mjs +44 -0
- package/dist/node_modules/zod/v4/core/registries.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs +36 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.mjs +1319 -0
- package/dist/node_modules/zod/v4/core/schemas.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs +4 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.mjs +244 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/util.cjs +2 -0
- package/dist/node_modules/zod/v4/core/util.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/util.mjs +523 -0
- package/dist/node_modules/zod/v4/core/util.mjs.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.cjs +2 -0
- package/dist/node_modules/zod/v4/core/versions.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.mjs +9 -0
- package/dist/node_modules/zod/v4/core/versions.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ar.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ar.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ar.mjs +87 -0
- package/dist/node_modules/zod/v4/locales/ar.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/az.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/az.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/az.mjs +87 -0
- package/dist/node_modules/zod/v4/locales/az.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/be.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/be.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/be.mjs +129 -0
- package/dist/node_modules/zod/v4/locales/be.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/bg.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/bg.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/bg.mjs +98 -0
- package/dist/node_modules/zod/v4/locales/bg.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ca.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ca.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ca.mjs +88 -0
- package/dist/node_modules/zod/v4/locales/ca.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/cs.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/cs.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/cs.mjs +91 -0
- package/dist/node_modules/zod/v4/locales/cs.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/da.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/da.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/da.mjs +94 -0
- package/dist/node_modules/zod/v4/locales/da.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/de.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/de.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/de.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/de.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/en.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/en.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/en.mjs +91 -0
- package/dist/node_modules/zod/v4/locales/en.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/eo.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/eo.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/eo.mjs +90 -0
- package/dist/node_modules/zod/v4/locales/eo.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/es.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/es.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/es.mjs +111 -0
- package/dist/node_modules/zod/v4/locales/es.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/fa.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/fa.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/fa.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/fa.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/fi.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/fi.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/fi.mjs +91 -0
- package/dist/node_modules/zod/v4/locales/fi.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/fr-CA.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/fr-CA.mjs +87 -0
- package/dist/node_modules/zod/v4/locales/fr-CA.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/fr.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/fr.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/fr.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/fr.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/he.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/he.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/he.mjs +152 -0
- package/dist/node_modules/zod/v4/locales/he.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/hu.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/hu.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/hu.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/hu.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/hy.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/hy.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/hy.mjs +130 -0
- package/dist/node_modules/zod/v4/locales/hy.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/id.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/id.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/id.mjs +87 -0
- package/dist/node_modules/zod/v4/locales/id.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/index.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/index.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/index.mjs +101 -0
- package/dist/node_modules/zod/v4/locales/index.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/is.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/is.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/is.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/is.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/it.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/it.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/it.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/it.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ja.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ja.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ja.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/ja.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ka.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ka.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ka.mjs +92 -0
- package/dist/node_modules/zod/v4/locales/ka.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/kh.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/kh.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/kh.mjs +8 -0
- package/dist/node_modules/zod/v4/locales/kh.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/km.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/km.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/km.mjs +90 -0
- package/dist/node_modules/zod/v4/locales/km.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ko.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ko.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ko.mjs +87 -0
- package/dist/node_modules/zod/v4/locales/ko.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/lt.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/lt.mjs +178 -0
- package/dist/node_modules/zod/v4/locales/lt.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/mk.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/mk.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/mk.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/mk.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ms.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ms.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ms.mjs +88 -0
- package/dist/node_modules/zod/v4/locales/ms.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/nl.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/nl.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/nl.mjs +88 -0
- package/dist/node_modules/zod/v4/locales/nl.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/no.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/no.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/no.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/no.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ota.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ota.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ota.mjs +90 -0
- package/dist/node_modules/zod/v4/locales/ota.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/pl.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/pl.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/pl.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/pl.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ps.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ps.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ps.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/ps.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/pt.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/pt.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/pt.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/pt.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ru.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ru.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ru.mjs +129 -0
- package/dist/node_modules/zod/v4/locales/ru.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/sl.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/sl.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/sl.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/sl.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/sv.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/sv.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/sv.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/sv.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ta.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ta.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ta.mjs +90 -0
- package/dist/node_modules/zod/v4/locales/ta.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/th.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/th.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/th.mjs +90 -0
- package/dist/node_modules/zod/v4/locales/th.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/tr.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/tr.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/tr.mjs +87 -0
- package/dist/node_modules/zod/v4/locales/tr.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ua.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ua.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ua.mjs +8 -0
- package/dist/node_modules/zod/v4/locales/ua.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/uk.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/uk.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/uk.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/uk.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ur.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/ur.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/ur.mjs +90 -0
- package/dist/node_modules/zod/v4/locales/ur.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/uz.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/uz.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/uz.mjs +90 -0
- package/dist/node_modules/zod/v4/locales/uz.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/vi.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/vi.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/vi.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/vi.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/yo.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/yo.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/yo.mjs +89 -0
- package/dist/node_modules/zod/v4/locales/yo.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/zh-CN.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/zh-CN.mjs +90 -0
- package/dist/node_modules/zod/v4/locales/zh-CN.mjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
- package/dist/node_modules/zod/v4/locales/zh-TW.cjs.map +1 -0
- package/dist/node_modules/zod/v4/locales/zh-TW.mjs +87 -0
- package/dist/node_modules/zod/v4/locales/zh-TW.mjs.map +1 -0
- package/dist/openapi/analyzerModule/analyzerModule.cjs +1 -1
- package/dist/openapi/analyzerModule/analyzerModule.cjs.map +1 -1
- package/dist/openapi/analyzerModule/analyzerModule.d.ts.map +1 -1
- package/dist/openapi/analyzerModule/analyzerModule.mjs +42 -42
- package/dist/openapi/analyzerModule/analyzerModule.mjs.map +1 -1
- package/dist/openapi/analyzerModule/nodeParsers.cjs +1 -1
- package/dist/openapi/analyzerModule/nodeParsers.cjs.map +1 -1
- package/dist/openapi/analyzerModule/nodeParsers.d.ts +1 -0
- package/dist/openapi/analyzerModule/nodeParsers.d.ts.map +1 -1
- package/dist/openapi/analyzerModule/nodeParsers.mjs +261 -206
- package/dist/openapi/analyzerModule/nodeParsers.mjs.map +1 -1
- package/dist/openapi/analyzerModule/parseEndpoint.cjs +1 -1
- package/dist/openapi/analyzerModule/parseEndpoint.cjs.map +1 -1
- package/dist/openapi/analyzerModule/parseEndpoint.d.ts.map +1 -1
- package/dist/openapi/analyzerModule/parseEndpoint.mjs +62 -62
- package/dist/openapi/analyzerModule/parseEndpoint.mjs.map +1 -1
- package/dist/openapi/analyzerModule/test/TestCase.d.ts +9 -0
- package/dist/openapi/analyzerModule/test/TestCase.d.ts.map +1 -0
- package/dist/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.d.ts +2 -0
- package/dist/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.d.ts.map +1 -0
- package/dist/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.data.d.ts +2 -0
- package/dist/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.data.d.ts.map +1 -0
- package/dist/utils/getValueAsNullableString.cjs +2 -0
- package/dist/utils/getValueAsNullableString.cjs.map +1 -0
- package/dist/utils/getValueAsNullableString.d.ts +2 -0
- package/dist/utils/getValueAsNullableString.d.ts.map +1 -0
- package/dist/utils/getValueAsNullableString.mjs +7 -0
- package/dist/utils/getValueAsNullableString.mjs.map +1 -0
- package/dist/utils/validationMessages.cjs +1 -1
- package/dist/utils/validationMessages.cjs.map +1 -1
- package/dist/utils/validationMessages.d.ts +1 -1
- package/dist/utils/validationMessages.d.ts.map +1 -1
- package/dist/utils/validationMessages.mjs +8 -8
- package/dist/utils/validationMessages.mjs.map +1 -1
- package/dist/validators/types.d.ts +4 -0
- package/dist/validators/types.d.ts.map +1 -1
- package/dist/validators/validateMissingParams.cjs +2 -0
- package/dist/validators/validateMissingParams.cjs.map +1 -0
- package/dist/validators/validateMissingParams.d.ts +7 -0
- package/dist/validators/validateMissingParams.d.ts.map +1 -0
- package/dist/validators/validateMissingParams.mjs +17 -0
- package/dist/validators/validateMissingParams.mjs.map +1 -0
- package/dist/validators/validateParam.cjs +2 -0
- package/dist/validators/validateParam.cjs.map +1 -0
- package/dist/validators/validateParam.d.ts +8 -0
- package/dist/validators/validateParam.d.ts.map +1 -0
- package/dist/validators/validateParam.mjs +41 -0
- package/dist/validators/validateParam.mjs.map +1 -0
- package/package.json +9 -2
- package/src/errors/UserFacingErrors.ts +54 -0
- package/src/hooks/usePathParams.spec.ts +27 -0
- package/src/hooks/usePathParams.ts +5 -13
- package/src/hooks/useQueryParams.spec.ts +99 -0
- package/src/hooks/useQueryParams.ts +16 -25
- package/src/hooks/useRequestBody.spec.ts +99 -0
- package/src/hooks/useRequestBody.ts +16 -35
- package/src/openapi/analyzerModule/analyzerModule.ts +2 -3
- package/src/openapi/analyzerModule/nodeParsers.ts +113 -8
- package/src/openapi/analyzerModule/parseEndpoint.ts +2 -2
- package/src/openapi/analyzerModule/test/TestCase.ts +8 -0
- package/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.ts +9 -0
- package/src/openapi/analyzerModule/test/openApiAnalyzer.spec.ts +21 -0
- package/src/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.data.ts +87 -0
- package/src/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.ts +178 -0
- package/src/utils/getValueAsNullableString.ts +8 -0
- package/src/utils/validationMessages.ts +4 -0
- package/src/validators/types.ts +5 -0
- package/src/validators/validateMissingParams.ts +27 -0
- package/src/validators/validateParam.ts +69 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { z as valibot } from 'zod'
|
|
3
|
+
|
|
4
|
+
import { usePathParams } from '../../../hooks/usePathParams'
|
|
5
|
+
import { useRequestBody } from '../../../hooks/useRequestBody'
|
|
6
|
+
import { Router } from '../../../router/Router'
|
|
7
|
+
import { TestCase } from './TestCase'
|
|
8
|
+
|
|
9
|
+
const router = new Router()
|
|
10
|
+
|
|
11
|
+
router.post(`/test/${TestCase.parsesInlineZodNumber}/:id`, (ctx) => {
|
|
12
|
+
usePathParams(ctx, {
|
|
13
|
+
id: z.number(),
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
useRequestBody(ctx, {
|
|
17
|
+
data: z.number(),
|
|
18
|
+
})
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
router.post(`/test/${TestCase.parsesInlineZodString}/:id`, (ctx) => {
|
|
22
|
+
usePathParams(ctx, {
|
|
23
|
+
id: z.string(),
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
useRequestBody(ctx, {
|
|
27
|
+
data: z.string(),
|
|
28
|
+
})
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
router.post(`/test/${TestCase.parsesInlineZodObject}/:id`, (ctx) => {
|
|
32
|
+
usePathParams(ctx, {
|
|
33
|
+
id: z.object({
|
|
34
|
+
value: z.number(),
|
|
35
|
+
}),
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
useRequestBody(ctx, {
|
|
39
|
+
data: z.object({
|
|
40
|
+
value: z.number(),
|
|
41
|
+
}),
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
router.post(`/test/${TestCase.parsesInlineZodNumberArray}/:id`, (ctx) => {
|
|
46
|
+
usePathParams(ctx, {
|
|
47
|
+
id: z.array(z.number()),
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
useRequestBody(ctx, {
|
|
51
|
+
data: z.array(z.number()),
|
|
52
|
+
})
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
router.post(`/test/${TestCase.parsesInlineZodObjectArray}/:id`, (ctx) => {
|
|
56
|
+
usePathParams(ctx, {
|
|
57
|
+
id: z.array(
|
|
58
|
+
z.object({
|
|
59
|
+
value: z.number(),
|
|
60
|
+
}),
|
|
61
|
+
),
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
useRequestBody(ctx, {
|
|
65
|
+
data: z.array(
|
|
66
|
+
z.object({
|
|
67
|
+
value: z.number(),
|
|
68
|
+
}),
|
|
69
|
+
),
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
router.post(`/test/${TestCase.parsedAliasedZodSchema}/:id`, (ctx) => {
|
|
74
|
+
const schema = valibot.array(
|
|
75
|
+
valibot.object({
|
|
76
|
+
value: valibot.number(),
|
|
77
|
+
}),
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
usePathParams(ctx, {
|
|
81
|
+
id: schema,
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
useRequestBody(ctx, {
|
|
85
|
+
data: schema,
|
|
86
|
+
})
|
|
87
|
+
})
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { loadTestData } from '../../../utils/loadTestData'
|
|
2
|
+
import { discoverRouters } from '../../discoveryModule/discoverRouters/discoverRouters'
|
|
3
|
+
import { analyzeSourceFileEndpoints } from '../analyzerModule'
|
|
4
|
+
import { TestCase } from './TestCase'
|
|
5
|
+
|
|
6
|
+
describe('OpenApi Analyzer (Zod Validator)', () => {
|
|
7
|
+
describe('when analyzing a test data file', () => {
|
|
8
|
+
const dataFile = loadTestData('openApiAnalyzer.zod.spec.data.ts')
|
|
9
|
+
let analysisResult: ReturnType<typeof analyzeSourceFileEndpoints>
|
|
10
|
+
|
|
11
|
+
const analyzeEndpointById = (id: string) => {
|
|
12
|
+
analysisResult = analyzeSourceFileEndpoints(
|
|
13
|
+
{
|
|
14
|
+
fileName: 'test',
|
|
15
|
+
sourceFile: dataFile,
|
|
16
|
+
routers: discoverRouters(dataFile),
|
|
17
|
+
},
|
|
18
|
+
[`/test/${id}`],
|
|
19
|
+
)
|
|
20
|
+
const endpoint = analysisResult.find((endpoint) => endpoint.path.startsWith(`/test/${id}`))
|
|
21
|
+
if (!endpoint) {
|
|
22
|
+
throw new Error(`No endpoint with id ${id} found!`)
|
|
23
|
+
}
|
|
24
|
+
return endpoint
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
describe('zod validators', () => {
|
|
28
|
+
it('parses inline zod number validators', () => {
|
|
29
|
+
const endpoint = analyzeEndpointById(TestCase.parsesInlineZodNumber)
|
|
30
|
+
|
|
31
|
+
expect(endpoint.requestPathParams[0].identifier).toEqual('id')
|
|
32
|
+
expect(endpoint.requestPathParams[0].signature).toEqual('number')
|
|
33
|
+
expect(endpoint.requestPathParams[0].optional).toEqual(false)
|
|
34
|
+
|
|
35
|
+
expect(endpoint.objectBody[0].identifier).toEqual('data')
|
|
36
|
+
expect(endpoint.objectBody[0].signature).toEqual('number')
|
|
37
|
+
expect(endpoint.objectBody[0].optional).toEqual(false)
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
it('parses inline zod string validators', () => {
|
|
41
|
+
const endpoint = analyzeEndpointById(TestCase.parsesInlineZodString)
|
|
42
|
+
|
|
43
|
+
expect(endpoint.requestPathParams[0].identifier).toEqual('id')
|
|
44
|
+
expect(endpoint.requestPathParams[0].signature).toEqual('string')
|
|
45
|
+
expect(endpoint.requestPathParams[0].optional).toEqual(false)
|
|
46
|
+
|
|
47
|
+
expect(endpoint.objectBody[0].identifier).toEqual('data')
|
|
48
|
+
expect(endpoint.objectBody[0].signature).toEqual('string')
|
|
49
|
+
expect(endpoint.objectBody[0].optional).toEqual(false)
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
it('parses inline zod object validators', () => {
|
|
53
|
+
const endpoint = analyzeEndpointById(TestCase.parsesInlineZodObject)
|
|
54
|
+
|
|
55
|
+
expect(endpoint.requestPathParams[0].identifier).toEqual('id')
|
|
56
|
+
expect(endpoint.requestPathParams[0].signature).toEqual([
|
|
57
|
+
{
|
|
58
|
+
identifier: 'value',
|
|
59
|
+
optional: false,
|
|
60
|
+
role: 'property',
|
|
61
|
+
shape: 'number',
|
|
62
|
+
},
|
|
63
|
+
])
|
|
64
|
+
expect(endpoint.requestPathParams[0].optional).toEqual(false)
|
|
65
|
+
|
|
66
|
+
expect(endpoint.objectBody[0].identifier).toEqual('data')
|
|
67
|
+
expect(endpoint.objectBody[0].signature).toEqual([
|
|
68
|
+
{
|
|
69
|
+
identifier: 'value',
|
|
70
|
+
optional: false,
|
|
71
|
+
role: 'property',
|
|
72
|
+
shape: 'number',
|
|
73
|
+
},
|
|
74
|
+
])
|
|
75
|
+
expect(endpoint.objectBody[0].optional).toEqual(false)
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
it('parses inline zod number array validators', () => {
|
|
79
|
+
const endpoint = analyzeEndpointById(TestCase.parsesInlineZodNumberArray)
|
|
80
|
+
|
|
81
|
+
expect(endpoint.requestPathParams[0].identifier).toEqual('id')
|
|
82
|
+
expect(endpoint.requestPathParams[0].signature).toEqual([
|
|
83
|
+
{
|
|
84
|
+
role: 'array',
|
|
85
|
+
shape: 'number',
|
|
86
|
+
optional: false,
|
|
87
|
+
},
|
|
88
|
+
])
|
|
89
|
+
expect(endpoint.requestPathParams[0].optional).toEqual(false)
|
|
90
|
+
expect(endpoint.objectBody[0].identifier).toEqual('data')
|
|
91
|
+
expect(endpoint.objectBody[0].signature).toEqual([
|
|
92
|
+
{
|
|
93
|
+
role: 'array',
|
|
94
|
+
shape: 'number',
|
|
95
|
+
optional: false,
|
|
96
|
+
},
|
|
97
|
+
])
|
|
98
|
+
expect(endpoint.objectBody[0].optional).toEqual(false)
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
it('parses inline zod object array validators', () => {
|
|
102
|
+
const endpoint = analyzeEndpointById(TestCase.parsesInlineZodObjectArray)
|
|
103
|
+
|
|
104
|
+
expect(endpoint.requestPathParams[0].identifier).toEqual('id')
|
|
105
|
+
expect(endpoint.requestPathParams[0].signature).toEqual([
|
|
106
|
+
{
|
|
107
|
+
role: 'array',
|
|
108
|
+
shape: [
|
|
109
|
+
{
|
|
110
|
+
identifier: 'value',
|
|
111
|
+
optional: false,
|
|
112
|
+
role: 'property',
|
|
113
|
+
shape: 'number',
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
optional: false,
|
|
117
|
+
},
|
|
118
|
+
])
|
|
119
|
+
expect(endpoint.requestPathParams[0].optional).toEqual(false)
|
|
120
|
+
|
|
121
|
+
expect(endpoint.objectBody[0].identifier).toEqual('data')
|
|
122
|
+
expect(endpoint.objectBody[0].signature).toEqual([
|
|
123
|
+
{
|
|
124
|
+
role: 'array',
|
|
125
|
+
shape: [
|
|
126
|
+
{
|
|
127
|
+
identifier: 'value',
|
|
128
|
+
optional: false,
|
|
129
|
+
role: 'property',
|
|
130
|
+
shape: 'number',
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
optional: false,
|
|
134
|
+
},
|
|
135
|
+
])
|
|
136
|
+
expect(endpoint.objectBody[0].optional).toEqual(false)
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
it('parses aliased zod object array validators', () => {
|
|
140
|
+
const endpoint = analyzeEndpointById(TestCase.parsedAliasedZodSchema)
|
|
141
|
+
|
|
142
|
+
expect(endpoint.requestPathParams[0].identifier).toEqual('id')
|
|
143
|
+
expect(endpoint.requestPathParams[0].signature).toEqual([
|
|
144
|
+
{
|
|
145
|
+
role: 'array',
|
|
146
|
+
shape: [
|
|
147
|
+
{
|
|
148
|
+
identifier: 'value',
|
|
149
|
+
optional: false,
|
|
150
|
+
role: 'property',
|
|
151
|
+
shape: 'number',
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
optional: false,
|
|
155
|
+
},
|
|
156
|
+
])
|
|
157
|
+
expect(endpoint.requestPathParams[0].optional).toEqual(false)
|
|
158
|
+
|
|
159
|
+
expect(endpoint.objectBody[0].identifier).toEqual('data')
|
|
160
|
+
expect(endpoint.objectBody[0].signature).toEqual([
|
|
161
|
+
{
|
|
162
|
+
role: 'array',
|
|
163
|
+
shape: [
|
|
164
|
+
{
|
|
165
|
+
identifier: 'value',
|
|
166
|
+
optional: false,
|
|
167
|
+
role: 'property',
|
|
168
|
+
shape: 'number',
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
optional: false,
|
|
172
|
+
},
|
|
173
|
+
])
|
|
174
|
+
expect(endpoint.objectBody[0].optional).toEqual(false)
|
|
175
|
+
})
|
|
176
|
+
})
|
|
177
|
+
})
|
|
178
|
+
})
|
|
@@ -30,10 +30,14 @@ export const getValidationResultMessage = (
|
|
|
30
30
|
originalName: string
|
|
31
31
|
validator: Pick<Validator<unknown>, 'description' | 'errorMessage'>
|
|
32
32
|
},
|
|
33
|
+
exception?: string | null,
|
|
33
34
|
) => {
|
|
34
35
|
const name = 'name' in result ? result.name : result.originalName
|
|
35
36
|
const { description, errorMessage } = result.validator
|
|
36
37
|
|
|
38
|
+
if (exception) {
|
|
39
|
+
return `'${name}' (${exception})`
|
|
40
|
+
}
|
|
37
41
|
if (errorMessage) {
|
|
38
42
|
return `'${name}' (${errorMessage})`
|
|
39
43
|
}
|
package/src/validators/types.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import z from 'zod'
|
|
2
|
+
|
|
1
3
|
type DeepPartial<T> = {
|
|
2
4
|
[P in keyof T]?: T[P] extends Array<infer U>
|
|
3
5
|
? Array<DeepPartial<U>>
|
|
@@ -33,3 +35,6 @@ export type BuiltInValidator<T, DescriptionT extends string, ErrorMessageT exten
|
|
|
33
35
|
description: DescriptionT
|
|
34
36
|
errorMessage: ErrorMessageT
|
|
35
37
|
}
|
|
38
|
+
|
|
39
|
+
export type ValidatorUnion = Omit<Validator<any>, 'optional'> | z.ZodType
|
|
40
|
+
export type MaybeOptionalValidatorUnion = Validator<any> | z.ZodType
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import z from 'zod'
|
|
2
|
+
|
|
3
|
+
import { ValidationError } from '../errors/UserFacingErrors'
|
|
4
|
+
import { getMissingParamMessage } from '../utils/validationMessages'
|
|
5
|
+
import { MaybeOptionalValidatorUnion, Validator } from './types'
|
|
6
|
+
|
|
7
|
+
export function validateMissingParams<ValidatorsT extends Record<string, MaybeOptionalValidatorUnion>>(
|
|
8
|
+
params: { name: string; validator: Pick<Validator<unknown>, 'description' | 'errorMessage'> }[],
|
|
9
|
+
providedParams: Record<string, unknown>,
|
|
10
|
+
validators: ValidatorsT,
|
|
11
|
+
suffix: 'body' | 'query' | 'path',
|
|
12
|
+
) {
|
|
13
|
+
const missingParams = params.filter((param) => {
|
|
14
|
+
let isOptional = validators[param.name].optional
|
|
15
|
+
if (validators[param.name] instanceof z.ZodType) {
|
|
16
|
+
isOptional = (validators[param.name] as z.ZodType).safeParse(undefined).success
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return providedParams[param.name] === undefined && !isOptional
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
if (missingParams.length > 0) {
|
|
23
|
+
throw new ValidationError(
|
|
24
|
+
`Missing ${suffix} params: ${missingParams.map((param) => getMissingParamMessage(param)).join(', ')}`,
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import z, { ZodError } from 'zod'
|
|
2
|
+
|
|
3
|
+
import { getValueAsNullableString } from '../utils/getValueAsNullableString'
|
|
4
|
+
import { ValidatorUnion } from './types'
|
|
5
|
+
|
|
6
|
+
export function validateParam(
|
|
7
|
+
validator: ValidatorUnion,
|
|
8
|
+
value: string | number | boolean | object | null,
|
|
9
|
+
): {
|
|
10
|
+
validated: boolean
|
|
11
|
+
parsedValue: unknown
|
|
12
|
+
exception: string | null
|
|
13
|
+
} {
|
|
14
|
+
try {
|
|
15
|
+
const prevalidatorSuccess = runPrevalidator(validator, value)
|
|
16
|
+
const parsedValue = runParser(validator, value)
|
|
17
|
+
const validatorSuccess = runValidator(validator, parsedValue)
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
validated: prevalidatorSuccess && validatorSuccess,
|
|
21
|
+
parsedValue,
|
|
22
|
+
exception: null,
|
|
23
|
+
}
|
|
24
|
+
} catch (error) {
|
|
25
|
+
const exception = getErrorMessage(error)
|
|
26
|
+
return { validated: false, parsedValue: null, exception }
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function runPrevalidator(validator: ValidatorUnion, value: string | number | boolean | object | null) {
|
|
31
|
+
// Legacy validator
|
|
32
|
+
if ('prevalidate' in validator && typeof validator.prevalidate === 'function') {
|
|
33
|
+
return validator.prevalidate(getValueAsNullableString(value))
|
|
34
|
+
}
|
|
35
|
+
// Zod (skip)
|
|
36
|
+
return true
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function runParser(validator: ValidatorUnion, value: string | number | boolean | object | null) {
|
|
40
|
+
// Zod validator
|
|
41
|
+
if (validator instanceof z.ZodType) {
|
|
42
|
+
const coercedValue = (() => {
|
|
43
|
+
try {
|
|
44
|
+
return typeof value === 'string' ? JSON.parse(value) : value
|
|
45
|
+
} catch {
|
|
46
|
+
return value
|
|
47
|
+
}
|
|
48
|
+
})()
|
|
49
|
+
return validator.parse(coercedValue)
|
|
50
|
+
}
|
|
51
|
+
// Legacy validator
|
|
52
|
+
return validator.parse(getValueAsNullableString(value))
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function runValidator(validator: ValidatorUnion, parsedValue: unknown) {
|
|
56
|
+
// Legacy validator
|
|
57
|
+
if ('validate' in validator && typeof validator.validate === 'function') {
|
|
58
|
+
return validator.validate(parsedValue)
|
|
59
|
+
}
|
|
60
|
+
// Zod (skip)
|
|
61
|
+
return true
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function getErrorMessage(error: unknown) {
|
|
65
|
+
if (error instanceof ZodError) {
|
|
66
|
+
return z.treeifyError(error).errors.join('; ').replace('Invalid input: ', '')
|
|
67
|
+
}
|
|
68
|
+
return 'Validation failed'
|
|
69
|
+
}
|