fullstacked 0.12.1-1359 → 0.12.1-1364
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/fullstacked_modules/@fullstacked/ai-agent/ai-agent.js +55352 -53576
- package/fullstacked_modules/@fullstacked/ai-agent/index.ts +0 -1
- package/fullstacked_modules/@fullstacked/ai-agent/lock.json +157 -152
- package/fullstacked_modules/@fullstacked/ai-agent/package.json +13 -13
- package/fullstacked_modules/@fullstacked/ai-agent/src/providers/ollama.ts +2 -2
- package/fullstacked_modules/@fullstacked/ui/index.js +6 -1
- package/fullstacked_modules/zod/README.md +4 -4
- package/fullstacked_modules/zod/index.cjs +2 -2
- package/fullstacked_modules/zod/index.d.cts +2 -2
- package/fullstacked_modules/zod/index.d.ts +2 -2
- package/fullstacked_modules/zod/index.js +2 -2
- package/fullstacked_modules/zod/locales/index.cjs +17 -0
- package/fullstacked_modules/zod/locales/index.d.cts +1 -0
- package/fullstacked_modules/zod/locales/index.d.ts +1 -0
- package/fullstacked_modules/zod/locales/index.js +1 -0
- package/fullstacked_modules/zod/locales/package.json +6 -0
- package/fullstacked_modules/zod/mini/index.cjs +17 -0
- package/fullstacked_modules/zod/mini/index.d.cts +1 -0
- package/fullstacked_modules/zod/mini/index.d.ts +1 -0
- package/fullstacked_modules/zod/mini/index.js +1 -0
- package/fullstacked_modules/zod/mini/package.json +6 -0
- package/fullstacked_modules/zod/package.json +29 -12
- package/fullstacked_modules/zod/src/index.ts +2 -2
- package/fullstacked_modules/zod/src/locales/index.ts +1 -0
- package/fullstacked_modules/zod/src/mini/index.ts +1 -0
- package/fullstacked_modules/zod/src/v3/ZodError.ts +1 -1
- package/fullstacked_modules/zod/src/v3/tests/object.test.ts +2 -2
- package/fullstacked_modules/zod/src/v3/tests/string.test.ts +2 -2
- package/fullstacked_modules/zod/src/v3/types.ts +3 -1
- package/fullstacked_modules/zod/src/v4/classic/checks.ts +1 -0
- package/fullstacked_modules/zod/src/v4/classic/compat.ts +4 -0
- package/fullstacked_modules/zod/src/v4/classic/errors.ts +9 -2
- package/fullstacked_modules/zod/src/v4/classic/external.ts +1 -1
- package/fullstacked_modules/zod/src/v4/classic/parse.ts +49 -0
- package/fullstacked_modules/zod/src/v4/classic/schemas.ts +224 -81
- package/fullstacked_modules/zod/src/v4/classic/tests/array.test.ts +6 -6
- package/fullstacked_modules/zod/src/v4/classic/tests/catch.test.ts +29 -5
- package/fullstacked_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/continuability.test.ts +1 -1
- package/fullstacked_modules/zod/src/v4/classic/tests/datetime.test.ts +6 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/default.test.ts +52 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +42 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/error-utils.test.ts +70 -2
- package/fullstacked_modules/zod/src/v4/classic/tests/file.test.ts +9 -4
- package/fullstacked_modules/zod/src/v4/classic/tests/firstparty.test.ts +4 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/function.test.ts +71 -31
- package/fullstacked_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/index.test.ts +15 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/literal.test.ts +25 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/nonoptional.test.ts +15 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/number.test.ts +23 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/object.test.ts +48 -2
- package/fullstacked_modules/zod/src/v4/classic/tests/optional.test.ts +13 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/partial.test.ts +193 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/pickomit.test.ts +5 -5
- package/fullstacked_modules/zod/src/v4/classic/tests/pipe.test.ts +25 -5
- package/fullstacked_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/preprocess.test.ts +5 -21
- package/fullstacked_modules/zod/src/v4/classic/tests/record.test.ts +15 -1
- package/fullstacked_modules/zod/src/v4/classic/tests/recursive-types.test.ts +226 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/refine.test.ts +78 -5
- package/fullstacked_modules/zod/src/v4/classic/tests/set.test.ts +5 -3
- package/fullstacked_modules/zod/src/v4/classic/tests/string-formats.test.ts +16 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/string.test.ts +204 -5
- package/fullstacked_modules/zod/src/v4/classic/tests/stringbool.test.ts +40 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/template-literal.test.ts +14 -9
- package/fullstacked_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +315 -7
- package/fullstacked_modules/zod/src/v4/classic/tests/transform.test.ts +111 -0
- package/fullstacked_modules/zod/src/v4/classic/tests/tuple.test.ts +2 -2
- package/fullstacked_modules/zod/src/v4/classic/tests/union.test.ts +90 -3
- package/fullstacked_modules/zod/src/v4/core/api.ts +160 -133
- package/fullstacked_modules/zod/src/v4/core/checks.ts +6 -2
- package/fullstacked_modules/zod/src/v4/core/core.ts +9 -28
- package/fullstacked_modules/zod/src/v4/core/doc.ts +2 -2
- package/fullstacked_modules/zod/src/v4/core/errors.ts +49 -60
- package/fullstacked_modules/zod/src/v4/core/index.ts +0 -1
- package/fullstacked_modules/zod/src/v4/core/json-schema.ts +7 -3
- package/fullstacked_modules/zod/src/v4/core/parse.ts +101 -0
- package/fullstacked_modules/zod/src/v4/core/regexes.ts +56 -14
- package/fullstacked_modules/zod/src/v4/core/registries.ts +5 -4
- package/fullstacked_modules/zod/src/v4/core/schemas.ts +705 -230
- package/fullstacked_modules/zod/src/v4/core/tests/extend.test.ts +18 -0
- package/fullstacked_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
- package/fullstacked_modules/zod/src/v4/core/to-json-schema.ts +100 -33
- package/fullstacked_modules/zod/src/v4/core/util.ts +237 -102
- package/fullstacked_modules/zod/src/v4/core/versions.ts +2 -2
- package/fullstacked_modules/zod/src/v4/locales/bg.ts +136 -0
- package/fullstacked_modules/zod/src/v4/locales/da.ts +141 -0
- package/fullstacked_modules/zod/src/v4/locales/es.ts +44 -10
- package/fullstacked_modules/zod/src/v4/locales/index.ts +8 -0
- package/fullstacked_modules/zod/src/v4/locales/is.ts +127 -0
- package/fullstacked_modules/zod/src/v4/locales/ka.ts +138 -0
- package/fullstacked_modules/zod/src/v4/locales/kh.ts +3 -122
- package/fullstacked_modules/zod/src/v4/locales/km.ts +126 -0
- package/fullstacked_modules/zod/src/v4/locales/lt.ts +265 -0
- package/fullstacked_modules/zod/src/v4/locales/ua.ts +3 -122
- package/fullstacked_modules/zod/src/v4/locales/uk.ts +126 -0
- package/fullstacked_modules/zod/src/v4/locales/yo.ts +131 -0
- package/fullstacked_modules/zod/src/v4/mini/external.ts +1 -1
- package/fullstacked_modules/zod/src/v4/mini/parse.ts +14 -1
- package/fullstacked_modules/zod/src/v4/mini/schemas.ts +186 -40
- package/fullstacked_modules/zod/src/v4/mini/tests/assignability.test.ts +1 -1
- package/fullstacked_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
- package/fullstacked_modules/zod/src/v4/mini/tests/computed.test.ts +1 -1
- package/fullstacked_modules/zod/src/v4/mini/tests/error.test.ts +1 -1
- package/fullstacked_modules/zod/src/v4/mini/tests/index.test.ts +29 -1
- package/fullstacked_modules/zod/src/v4/mini/tests/number.test.ts +1 -1
- package/fullstacked_modules/zod/src/v4/mini/tests/object.test.ts +16 -1
- package/fullstacked_modules/zod/src/v4/mini/tests/prototypes.test.ts +1 -1
- package/fullstacked_modules/zod/src/v4/mini/tests/recursive-types.test.ts +1 -1
- package/fullstacked_modules/zod/src/v4/mini/tests/string.test.ts +17 -1
- package/fullstacked_modules/zod/v3/ZodError.cjs +1 -1
- package/fullstacked_modules/zod/v3/ZodError.d.cts +6 -6
- package/fullstacked_modules/zod/v3/ZodError.d.ts +6 -6
- package/fullstacked_modules/zod/v3/ZodError.js +1 -1
- package/fullstacked_modules/zod/v3/locales/en.cjs +1 -0
- package/fullstacked_modules/zod/v3/locales/en.d.cts +1 -1
- package/fullstacked_modules/zod/v3/package.json +6 -0
- package/fullstacked_modules/zod/v3/types.cjs +2 -0
- package/fullstacked_modules/zod/v3/types.d.cts +4 -1
- package/fullstacked_modules/zod/v3/types.d.ts +4 -1
- package/fullstacked_modules/zod/v3/types.js +2 -0
- package/fullstacked_modules/zod/v4/classic/checks.d.cts +1 -1
- package/fullstacked_modules/zod/v4/classic/checks.d.ts +1 -1
- package/fullstacked_modules/zod/v4/classic/compat.cjs +5 -1
- package/fullstacked_modules/zod/v4/classic/compat.d.cts +4 -0
- package/fullstacked_modules/zod/v4/classic/compat.d.ts +4 -0
- package/fullstacked_modules/zod/v4/classic/compat.js +4 -0
- package/fullstacked_modules/zod/v4/classic/errors.cjs +9 -2
- package/fullstacked_modules/zod/v4/classic/errors.js +9 -2
- package/fullstacked_modules/zod/v4/classic/external.cjs +2 -2
- package/fullstacked_modules/zod/v4/classic/external.d.cts +1 -1
- package/fullstacked_modules/zod/v4/classic/external.d.ts +1 -1
- package/fullstacked_modules/zod/v4/classic/external.js +1 -1
- package/fullstacked_modules/zod/v4/classic/package.json +6 -0
- package/fullstacked_modules/zod/v4/classic/parse.cjs +10 -1
- package/fullstacked_modules/zod/v4/classic/parse.d.cts +8 -0
- package/fullstacked_modules/zod/v4/classic/parse.d.ts +8 -0
- package/fullstacked_modules/zod/v4/classic/parse.js +9 -0
- package/fullstacked_modules/zod/v4/classic/schemas.cjs +90 -48
- package/fullstacked_modules/zod/v4/classic/schemas.d.cts +70 -27
- package/fullstacked_modules/zod/v4/classic/schemas.d.ts +70 -27
- package/fullstacked_modules/zod/v4/classic/schemas.js +81 -47
- package/fullstacked_modules/zod/v4/core/api.cjs +52 -31
- package/fullstacked_modules/zod/v4/core/api.d.cts +87 -76
- package/fullstacked_modules/zod/v4/core/api.d.ts +87 -76
- package/fullstacked_modules/zod/v4/core/api.js +50 -31
- package/fullstacked_modules/zod/v4/core/checks.cjs +4 -0
- package/fullstacked_modules/zod/v4/core/checks.d.cts +2 -2
- package/fullstacked_modules/zod/v4/core/checks.d.ts +2 -2
- package/fullstacked_modules/zod/v4/core/checks.js +4 -0
- package/fullstacked_modules/zod/v4/core/core.cjs +8 -1
- package/fullstacked_modules/zod/v4/core/core.d.cts +5 -2
- package/fullstacked_modules/zod/v4/core/core.d.ts +5 -2
- package/fullstacked_modules/zod/v4/core/core.js +6 -0
- package/fullstacked_modules/zod/v4/core/doc.d.cts +1 -1
- package/fullstacked_modules/zod/v4/core/doc.d.ts +1 -1
- package/fullstacked_modules/zod/v4/core/errors.cjs +6 -19
- package/fullstacked_modules/zod/v4/core/errors.d.cts +24 -22
- package/fullstacked_modules/zod/v4/core/errors.d.ts +24 -22
- package/fullstacked_modules/zod/v4/core/errors.js +6 -19
- package/fullstacked_modules/zod/v4/core/index.cjs +0 -1
- package/fullstacked_modules/zod/v4/core/index.d.cts +0 -1
- package/fullstacked_modules/zod/v4/core/index.d.ts +0 -1
- package/fullstacked_modules/zod/v4/core/index.js +0 -1
- package/fullstacked_modules/zod/v4/core/json-schema.d.cts +4 -3
- package/fullstacked_modules/zod/v4/core/json-schema.d.ts +4 -3
- package/fullstacked_modules/zod/v4/core/package.json +6 -0
- package/fullstacked_modules/zod/v4/core/parse.cjs +45 -1
- package/fullstacked_modules/zod/v4/core/parse.d.cts +24 -0
- package/fullstacked_modules/zod/v4/core/parse.d.ts +24 -0
- package/fullstacked_modules/zod/v4/core/parse.js +36 -0
- package/fullstacked_modules/zod/v4/core/regexes.cjs +49 -16
- package/fullstacked_modules/zod/v4/core/regexes.d.cts +18 -2
- package/fullstacked_modules/zod/v4/core/regexes.d.ts +18 -2
- package/fullstacked_modules/zod/v4/core/regexes.js +46 -14
- package/fullstacked_modules/zod/v4/core/registries.cjs +4 -3
- package/fullstacked_modules/zod/v4/core/registries.d.cts +2 -2
- package/fullstacked_modules/zod/v4/core/registries.d.ts +2 -2
- package/fullstacked_modules/zod/v4/core/registries.js +4 -3
- package/fullstacked_modules/zod/v4/core/schemas.cjs +409 -171
- package/fullstacked_modules/zod/v4/core/schemas.d.cts +88 -16
- package/fullstacked_modules/zod/v4/core/schemas.d.ts +88 -16
- package/fullstacked_modules/zod/v4/core/schemas.js +408 -170
- package/fullstacked_modules/zod/v4/core/to-json-schema.cjs +97 -31
- package/fullstacked_modules/zod/v4/core/to-json-schema.d.cts +5 -3
- package/fullstacked_modules/zod/v4/core/to-json-schema.d.ts +5 -3
- package/fullstacked_modules/zod/v4/core/to-json-schema.js +97 -31
- package/fullstacked_modules/zod/v4/core/util.cjs +220 -101
- package/fullstacked_modules/zod/v4/core/util.d.cts +14 -0
- package/fullstacked_modules/zod/v4/core/util.d.ts +14 -0
- package/fullstacked_modules/zod/v4/core/util.js +209 -101
- package/fullstacked_modules/zod/v4/core/versions.cjs +2 -2
- package/fullstacked_modules/zod/v4/core/versions.d.cts +1 -1
- package/fullstacked_modules/zod/v4/core/versions.d.ts +1 -1
- package/fullstacked_modules/zod/v4/core/versions.js +2 -2
- package/fullstacked_modules/zod/v4/locales/ar.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ar.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/az.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/az.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/be.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/be.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/bg.cjs +156 -0
- package/fullstacked_modules/zod/v4/locales/bg.d.cts +5 -0
- package/fullstacked_modules/zod/v4/locales/bg.d.ts +5 -0
- package/fullstacked_modules/zod/v4/locales/bg.js +128 -0
- package/fullstacked_modules/zod/v4/locales/ca.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ca.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/cs.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/cs.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/da.cjs +158 -0
- package/fullstacked_modules/zod/v4/locales/da.d.cts +5 -0
- package/fullstacked_modules/zod/v4/locales/da.d.ts +4 -0
- package/fullstacked_modules/zod/v4/locales/da.js +131 -0
- package/fullstacked_modules/zod/v4/locales/de.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/de.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/es.cjs +43 -10
- package/fullstacked_modules/zod/v4/locales/es.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/es.js +42 -10
- package/fullstacked_modules/zod/v4/locales/fa.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/fa.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/fi.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/fi.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/fr-CA.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/fr-CA.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/fr.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/fr.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/he.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/he.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/hu.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/hu.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/id.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/id.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/index.cjs +17 -1
- package/fullstacked_modules/zod/v4/locales/index.d.cts +8 -0
- package/fullstacked_modules/zod/v4/locales/index.d.ts +8 -0
- package/fullstacked_modules/zod/v4/locales/index.js +8 -0
- package/fullstacked_modules/zod/v4/locales/is.cjs +145 -0
- package/fullstacked_modules/zod/v4/locales/is.d.cts +5 -0
- package/fullstacked_modules/zod/v4/locales/is.d.ts +5 -0
- package/fullstacked_modules/zod/v4/locales/is.js +117 -0
- package/fullstacked_modules/zod/v4/locales/it.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/it.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ja.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ja.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ka.cjs +153 -0
- package/fullstacked_modules/zod/v4/locales/ka.d.cts +5 -0
- package/fullstacked_modules/zod/v4/locales/ka.d.ts +5 -0
- package/fullstacked_modules/zod/v4/locales/ka.js +125 -0
- package/fullstacked_modules/zod/v4/locales/kh.cjs +6 -137
- package/fullstacked_modules/zod/v4/locales/kh.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/kh.d.ts +1 -0
- package/fullstacked_modules/zod/v4/locales/kh.js +3 -115
- package/fullstacked_modules/zod/v4/locales/km.cjs +144 -0
- package/fullstacked_modules/zod/v4/locales/km.d.cts +5 -0
- package/fullstacked_modules/zod/v4/locales/km.d.ts +4 -0
- package/fullstacked_modules/zod/v4/locales/km.js +117 -0
- package/fullstacked_modules/zod/v4/locales/ko.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ko.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/lt.cjs +258 -0
- package/fullstacked_modules/zod/v4/locales/lt.d.cts +5 -0
- package/fullstacked_modules/zod/v4/locales/lt.d.ts +5 -0
- package/fullstacked_modules/zod/v4/locales/lt.js +230 -0
- package/fullstacked_modules/zod/v4/locales/mk.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/mk.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ms.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ms.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/nl.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/nl.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/no.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/no.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ota.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ota.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/package.json +6 -0
- package/fullstacked_modules/zod/v4/locales/pl.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/pl.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ps.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ps.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/pt.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/pt.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ru.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ru.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/sl.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/sl.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/sv.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/sv.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ta.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ta.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/th.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/th.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ua.cjs +6 -137
- package/fullstacked_modules/zod/v4/locales/ua.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/ua.d.ts +1 -0
- package/fullstacked_modules/zod/v4/locales/ua.js +3 -115
- package/fullstacked_modules/zod/v4/locales/uk.cjs +144 -0
- package/fullstacked_modules/zod/v4/locales/uk.d.cts +5 -0
- package/fullstacked_modules/zod/v4/locales/uk.d.ts +4 -0
- package/fullstacked_modules/zod/v4/locales/uk.js +117 -0
- package/fullstacked_modules/zod/v4/locales/ur.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/ur.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/vi.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/vi.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/yo.cjs +142 -0
- package/fullstacked_modules/zod/v4/locales/yo.d.cts +5 -0
- package/fullstacked_modules/zod/v4/locales/yo.d.ts +4 -0
- package/fullstacked_modules/zod/v4/locales/yo.js +115 -0
- package/fullstacked_modules/zod/v4/locales/zh-CN.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/zh-CN.d.cts +2 -1
- package/fullstacked_modules/zod/v4/locales/zh-TW.cjs +1 -0
- package/fullstacked_modules/zod/v4/locales/zh-TW.d.cts +2 -1
- package/fullstacked_modules/zod/v4/mini/external.cjs +2 -2
- package/fullstacked_modules/zod/v4/mini/external.d.cts +1 -1
- package/fullstacked_modules/zod/v4/mini/external.d.ts +1 -1
- package/fullstacked_modules/zod/v4/mini/external.js +1 -1
- package/fullstacked_modules/zod/v4/mini/package.json +6 -0
- package/fullstacked_modules/zod/v4/mini/parse.cjs +9 -1
- package/fullstacked_modules/zod/v4/mini/parse.d.cts +1 -1
- package/fullstacked_modules/zod/v4/mini/parse.d.ts +1 -1
- package/fullstacked_modules/zod/v4/mini/parse.js +1 -1
- package/fullstacked_modules/zod/v4/mini/schemas.cjs +77 -24
- package/fullstacked_modules/zod/v4/mini/schemas.d.cts +56 -5
- package/fullstacked_modules/zod/v4/mini/schemas.d.ts +56 -5
- package/fullstacked_modules/zod/v4/mini/schemas.js +66 -23
- package/fullstacked_modules/zod/v4/package.json +6 -0
- package/fullstacked_modules/zod/v4-mini/package.json +6 -0
- package/index.js +1 -1
- package/package.json +1 -1
- package/fullstacked_modules/@fullstacked/ai-agent/story.txt +0 -7
- package/fullstacked_modules/@fullstacked/ai-agent/summary.txt +0 -7
- package/fullstacked_modules/zod/src/v4/core/function.ts +0 -176
- package/fullstacked_modules/zod/v4/core/function.cjs +0 -102
- package/fullstacked_modules/zod/v4/core/function.d.cts +0 -52
- package/fullstacked_modules/zod/v4/core/function.d.ts +0 -52
- package/fullstacked_modules/zod/v4/core/function.js +0 -75
|
@@ -83,7 +83,9 @@ class JSONSchemaGenerator {
|
|
|
83
83
|
else if (regexes.length > 1) {
|
|
84
84
|
result.schema.allOf = [
|
|
85
85
|
...regexes.map((regex) => ({
|
|
86
|
-
...(this.target === "draft-7"
|
|
86
|
+
...(this.target === "draft-7" || this.target === "draft-4" || this.target === "openapi-3.0"
|
|
87
|
+
? { type: "string" }
|
|
88
|
+
: {}),
|
|
87
89
|
pattern: regex.source,
|
|
88
90
|
})),
|
|
89
91
|
];
|
|
@@ -98,22 +100,36 @@ class JSONSchemaGenerator {
|
|
|
98
100
|
json.type = "integer";
|
|
99
101
|
else
|
|
100
102
|
json.type = "number";
|
|
101
|
-
if (typeof exclusiveMinimum === "number")
|
|
102
|
-
|
|
103
|
+
if (typeof exclusiveMinimum === "number") {
|
|
104
|
+
if (this.target === "draft-4" || this.target === "openapi-3.0") {
|
|
105
|
+
json.minimum = exclusiveMinimum;
|
|
106
|
+
json.exclusiveMinimum = true;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
json.exclusiveMinimum = exclusiveMinimum;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
103
112
|
if (typeof minimum === "number") {
|
|
104
113
|
json.minimum = minimum;
|
|
105
|
-
if (typeof exclusiveMinimum === "number") {
|
|
114
|
+
if (typeof exclusiveMinimum === "number" && this.target !== "draft-4") {
|
|
106
115
|
if (exclusiveMinimum >= minimum)
|
|
107
116
|
delete json.minimum;
|
|
108
117
|
else
|
|
109
118
|
delete json.exclusiveMinimum;
|
|
110
119
|
}
|
|
111
120
|
}
|
|
112
|
-
if (typeof exclusiveMaximum === "number")
|
|
113
|
-
|
|
121
|
+
if (typeof exclusiveMaximum === "number") {
|
|
122
|
+
if (this.target === "draft-4" || this.target === "openapi-3.0") {
|
|
123
|
+
json.maximum = exclusiveMaximum;
|
|
124
|
+
json.exclusiveMaximum = true;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
json.exclusiveMaximum = exclusiveMaximum;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
114
130
|
if (typeof maximum === "number") {
|
|
115
131
|
json.maximum = maximum;
|
|
116
|
-
if (typeof exclusiveMaximum === "number") {
|
|
132
|
+
if (typeof exclusiveMaximum === "number" && this.target !== "draft-4") {
|
|
117
133
|
if (exclusiveMaximum <= maximum)
|
|
118
134
|
delete json.maximum;
|
|
119
135
|
else
|
|
@@ -142,7 +158,13 @@ class JSONSchemaGenerator {
|
|
|
142
158
|
break;
|
|
143
159
|
}
|
|
144
160
|
case "null": {
|
|
145
|
-
|
|
161
|
+
if (this.target === "openapi-3.0") {
|
|
162
|
+
_json.type = "string";
|
|
163
|
+
_json.nullable = true;
|
|
164
|
+
_json.enum = [null];
|
|
165
|
+
}
|
|
166
|
+
else
|
|
167
|
+
_json.type = "null";
|
|
146
168
|
break;
|
|
147
169
|
}
|
|
148
170
|
case "any": {
|
|
@@ -230,10 +252,11 @@ class JSONSchemaGenerator {
|
|
|
230
252
|
}
|
|
231
253
|
case "union": {
|
|
232
254
|
const json = _json;
|
|
233
|
-
|
|
255
|
+
const options = def.options.map((x, i) => this.process(x, {
|
|
234
256
|
...params,
|
|
235
257
|
path: [...params.path, "anyOf", i],
|
|
236
258
|
}));
|
|
259
|
+
json.anyOf = options;
|
|
237
260
|
break;
|
|
238
261
|
}
|
|
239
262
|
case "intersection": {
|
|
@@ -257,32 +280,42 @@ class JSONSchemaGenerator {
|
|
|
257
280
|
case "tuple": {
|
|
258
281
|
const json = _json;
|
|
259
282
|
json.type = "array";
|
|
260
|
-
const
|
|
283
|
+
const prefixPath = this.target === "draft-2020-12" ? "prefixItems" : "items";
|
|
284
|
+
const restPath = this.target === "draft-2020-12" ? "items" : this.target === "openapi-3.0" ? "items" : "additionalItems";
|
|
285
|
+
const prefixItems = def.items.map((x, i) => this.process(x, {
|
|
286
|
+
...params,
|
|
287
|
+
path: [...params.path, prefixPath, i],
|
|
288
|
+
}));
|
|
289
|
+
const rest = def.rest
|
|
290
|
+
? this.process(def.rest, {
|
|
291
|
+
...params,
|
|
292
|
+
path: [...params.path, restPath, ...(this.target === "openapi-3.0" ? [def.items.length] : [])],
|
|
293
|
+
})
|
|
294
|
+
: null;
|
|
261
295
|
if (this.target === "draft-2020-12") {
|
|
262
296
|
json.prefixItems = prefixItems;
|
|
297
|
+
if (rest) {
|
|
298
|
+
json.items = rest;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else if (this.target === "openapi-3.0") {
|
|
302
|
+
json.items = {
|
|
303
|
+
anyOf: prefixItems,
|
|
304
|
+
};
|
|
305
|
+
if (rest) {
|
|
306
|
+
json.items.anyOf.push(rest);
|
|
307
|
+
}
|
|
308
|
+
json.minItems = prefixItems.length;
|
|
309
|
+
if (!rest) {
|
|
310
|
+
json.maxItems = prefixItems.length;
|
|
311
|
+
}
|
|
263
312
|
}
|
|
264
313
|
else {
|
|
265
314
|
json.items = prefixItems;
|
|
266
|
-
|
|
267
|
-
if (def.rest) {
|
|
268
|
-
const rest = this.process(def.rest, {
|
|
269
|
-
...params,
|
|
270
|
-
path: [...params.path, "items"],
|
|
271
|
-
});
|
|
272
|
-
if (this.target === "draft-2020-12") {
|
|
273
|
-
json.items = rest;
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
315
|
+
if (rest) {
|
|
276
316
|
json.additionalItems = rest;
|
|
277
317
|
}
|
|
278
318
|
}
|
|
279
|
-
// additionalItems
|
|
280
|
-
if (def.rest) {
|
|
281
|
-
json.items = this.process(def.rest, {
|
|
282
|
-
...params,
|
|
283
|
-
path: [...params.path, "items"],
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
319
|
// length
|
|
287
320
|
const { minimum, maximum } = schema._zod.bag;
|
|
288
321
|
if (typeof minimum === "number")
|
|
@@ -294,7 +327,12 @@ class JSONSchemaGenerator {
|
|
|
294
327
|
case "record": {
|
|
295
328
|
const json = _json;
|
|
296
329
|
json.type = "object";
|
|
297
|
-
|
|
330
|
+
if (this.target === "draft-7" || this.target === "draft-2020-12") {
|
|
331
|
+
json.propertyNames = this.process(def.keyType, {
|
|
332
|
+
...params,
|
|
333
|
+
path: [...params.path, "propertyNames"],
|
|
334
|
+
});
|
|
335
|
+
}
|
|
298
336
|
json.additionalProperties = this.process(def.valueType, {
|
|
299
337
|
...params,
|
|
300
338
|
path: [...params.path, "additionalProperties"],
|
|
@@ -354,7 +392,12 @@ class JSONSchemaGenerator {
|
|
|
354
392
|
else if (vals.length === 1) {
|
|
355
393
|
const val = vals[0];
|
|
356
394
|
json.type = val === null ? "null" : typeof val;
|
|
357
|
-
|
|
395
|
+
if (this.target === "draft-4" || this.target === "openapi-3.0") {
|
|
396
|
+
json.enum = [val];
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
json.const = val;
|
|
400
|
+
}
|
|
358
401
|
}
|
|
359
402
|
else {
|
|
360
403
|
if (vals.every((v) => typeof v === "number"))
|
|
@@ -409,7 +452,13 @@ class JSONSchemaGenerator {
|
|
|
409
452
|
}
|
|
410
453
|
case "nullable": {
|
|
411
454
|
const inner = this.process(def.innerType, params);
|
|
412
|
-
|
|
455
|
+
if (this.target === "openapi-3.0") {
|
|
456
|
+
result.ref = def.innerType;
|
|
457
|
+
_json.nullable = true;
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
_json.anyOf = [inner, { type: "null" }];
|
|
461
|
+
}
|
|
413
462
|
break;
|
|
414
463
|
}
|
|
415
464
|
case "nonoptional": {
|
|
@@ -499,6 +548,12 @@ class JSONSchemaGenerator {
|
|
|
499
548
|
}
|
|
500
549
|
break;
|
|
501
550
|
}
|
|
551
|
+
case "function": {
|
|
552
|
+
if (this.unrepresentable === "throw") {
|
|
553
|
+
throw new Error("Function types cannot be represented in JSON Schema");
|
|
554
|
+
}
|
|
555
|
+
break;
|
|
556
|
+
}
|
|
502
557
|
default: {
|
|
503
558
|
def;
|
|
504
559
|
}
|
|
@@ -650,7 +705,8 @@ class JSONSchemaGenerator {
|
|
|
650
705
|
flattenRef(ref, params);
|
|
651
706
|
// merge referenced schema into current
|
|
652
707
|
const refSchema = this.seen.get(ref).schema;
|
|
653
|
-
if (refSchema.$ref &&
|
|
708
|
+
if (refSchema.$ref &&
|
|
709
|
+
(params.target === "draft-7" || params.target === "draft-4" || params.target === "openapi-3.0")) {
|
|
654
710
|
schema.allOf = schema.allOf ?? [];
|
|
655
711
|
schema.allOf.push(refSchema);
|
|
656
712
|
}
|
|
@@ -677,7 +733,14 @@ class JSONSchemaGenerator {
|
|
|
677
733
|
else if (this.target === "draft-7") {
|
|
678
734
|
result.$schema = "http://json-schema.org/draft-07/schema#";
|
|
679
735
|
}
|
|
736
|
+
else if (this.target === "draft-4") {
|
|
737
|
+
result.$schema = "http://json-schema.org/draft-04/schema#";
|
|
738
|
+
}
|
|
739
|
+
else if (this.target === "openapi-3.0") {
|
|
740
|
+
// OpenAPI 3.0 schema objects should not include a $schema property
|
|
741
|
+
}
|
|
680
742
|
else {
|
|
743
|
+
// @ts-ignore
|
|
681
744
|
console.warn(`Invalid target: ${this.target}`);
|
|
682
745
|
}
|
|
683
746
|
if (params.external?.uri) {
|
|
@@ -847,6 +910,9 @@ function isTransforming(_schema, _ctx) {
|
|
|
847
910
|
case "catch": {
|
|
848
911
|
return false;
|
|
849
912
|
}
|
|
913
|
+
case "function": {
|
|
914
|
+
return false;
|
|
915
|
+
}
|
|
850
916
|
default:
|
|
851
917
|
def;
|
|
852
918
|
}
|
|
@@ -7,8 +7,10 @@ interface JSONSchemaGeneratorParams {
|
|
|
7
7
|
metadata?: $ZodRegistry<Record<string, any>>;
|
|
8
8
|
/** The JSON Schema version to target.
|
|
9
9
|
* - `"draft-2020-12"` — Default. JSON Schema Draft 2020-12
|
|
10
|
-
* - `"draft-7"` — JSON Schema Draft 7
|
|
11
|
-
|
|
10
|
+
* - `"draft-7"` — JSON Schema Draft 7
|
|
11
|
+
* - `"draft-4"` — JSON Schema Draft 4
|
|
12
|
+
* - `"openapi-3.0"` — OpenAPI 3.0 Schema Object */
|
|
13
|
+
target?: "draft-4" | "draft-7" | "draft-2020-12" | "openapi-3.0";
|
|
12
14
|
/** How to handle unrepresentable types.
|
|
13
15
|
* - `"throw"` — Default. Unrepresentable types throw an error
|
|
14
16
|
* - `"any"` — Unrepresentable types become `{}` */
|
|
@@ -60,7 +62,7 @@ interface Seen {
|
|
|
60
62
|
}
|
|
61
63
|
export declare class JSONSchemaGenerator {
|
|
62
64
|
metadataRegistry: $ZodRegistry<Record<string, any>>;
|
|
63
|
-
target: "draft-7" | "draft-2020-12";
|
|
65
|
+
target: "draft-4" | "draft-7" | "draft-2020-12" | "openapi-3.0";
|
|
64
66
|
unrepresentable: "throw" | "any";
|
|
65
67
|
override: (ctx: {
|
|
66
68
|
zodSchema: schemas.$ZodTypes;
|
|
@@ -7,8 +7,10 @@ interface JSONSchemaGeneratorParams {
|
|
|
7
7
|
metadata?: $ZodRegistry<Record<string, any>>;
|
|
8
8
|
/** The JSON Schema version to target.
|
|
9
9
|
* - `"draft-2020-12"` — Default. JSON Schema Draft 2020-12
|
|
10
|
-
* - `"draft-7"` — JSON Schema Draft 7
|
|
11
|
-
|
|
10
|
+
* - `"draft-7"` — JSON Schema Draft 7
|
|
11
|
+
* - `"draft-4"` — JSON Schema Draft 4
|
|
12
|
+
* - `"openapi-3.0"` — OpenAPI 3.0 Schema Object */
|
|
13
|
+
target?: "draft-4" | "draft-7" | "draft-2020-12" | "openapi-3.0";
|
|
12
14
|
/** How to handle unrepresentable types.
|
|
13
15
|
* - `"throw"` — Default. Unrepresentable types throw an error
|
|
14
16
|
* - `"any"` — Unrepresentable types become `{}` */
|
|
@@ -60,7 +62,7 @@ interface Seen {
|
|
|
60
62
|
}
|
|
61
63
|
export declare class JSONSchemaGenerator {
|
|
62
64
|
metadataRegistry: $ZodRegistry<Record<string, any>>;
|
|
63
|
-
target: "draft-7" | "draft-2020-12";
|
|
65
|
+
target: "draft-4" | "draft-7" | "draft-2020-12" | "openapi-3.0";
|
|
64
66
|
unrepresentable: "throw" | "any";
|
|
65
67
|
override: (ctx: {
|
|
66
68
|
zodSchema: schemas.$ZodTypes;
|
|
@@ -79,7 +79,9 @@ export class JSONSchemaGenerator {
|
|
|
79
79
|
else if (regexes.length > 1) {
|
|
80
80
|
result.schema.allOf = [
|
|
81
81
|
...regexes.map((regex) => ({
|
|
82
|
-
...(this.target === "draft-7"
|
|
82
|
+
...(this.target === "draft-7" || this.target === "draft-4" || this.target === "openapi-3.0"
|
|
83
|
+
? { type: "string" }
|
|
84
|
+
: {}),
|
|
83
85
|
pattern: regex.source,
|
|
84
86
|
})),
|
|
85
87
|
];
|
|
@@ -94,22 +96,36 @@ export class JSONSchemaGenerator {
|
|
|
94
96
|
json.type = "integer";
|
|
95
97
|
else
|
|
96
98
|
json.type = "number";
|
|
97
|
-
if (typeof exclusiveMinimum === "number")
|
|
98
|
-
|
|
99
|
+
if (typeof exclusiveMinimum === "number") {
|
|
100
|
+
if (this.target === "draft-4" || this.target === "openapi-3.0") {
|
|
101
|
+
json.minimum = exclusiveMinimum;
|
|
102
|
+
json.exclusiveMinimum = true;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
json.exclusiveMinimum = exclusiveMinimum;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
99
108
|
if (typeof minimum === "number") {
|
|
100
109
|
json.minimum = minimum;
|
|
101
|
-
if (typeof exclusiveMinimum === "number") {
|
|
110
|
+
if (typeof exclusiveMinimum === "number" && this.target !== "draft-4") {
|
|
102
111
|
if (exclusiveMinimum >= minimum)
|
|
103
112
|
delete json.minimum;
|
|
104
113
|
else
|
|
105
114
|
delete json.exclusiveMinimum;
|
|
106
115
|
}
|
|
107
116
|
}
|
|
108
|
-
if (typeof exclusiveMaximum === "number")
|
|
109
|
-
|
|
117
|
+
if (typeof exclusiveMaximum === "number") {
|
|
118
|
+
if (this.target === "draft-4" || this.target === "openapi-3.0") {
|
|
119
|
+
json.maximum = exclusiveMaximum;
|
|
120
|
+
json.exclusiveMaximum = true;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
json.exclusiveMaximum = exclusiveMaximum;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
110
126
|
if (typeof maximum === "number") {
|
|
111
127
|
json.maximum = maximum;
|
|
112
|
-
if (typeof exclusiveMaximum === "number") {
|
|
128
|
+
if (typeof exclusiveMaximum === "number" && this.target !== "draft-4") {
|
|
113
129
|
if (exclusiveMaximum <= maximum)
|
|
114
130
|
delete json.maximum;
|
|
115
131
|
else
|
|
@@ -138,7 +154,13 @@ export class JSONSchemaGenerator {
|
|
|
138
154
|
break;
|
|
139
155
|
}
|
|
140
156
|
case "null": {
|
|
141
|
-
|
|
157
|
+
if (this.target === "openapi-3.0") {
|
|
158
|
+
_json.type = "string";
|
|
159
|
+
_json.nullable = true;
|
|
160
|
+
_json.enum = [null];
|
|
161
|
+
}
|
|
162
|
+
else
|
|
163
|
+
_json.type = "null";
|
|
142
164
|
break;
|
|
143
165
|
}
|
|
144
166
|
case "any": {
|
|
@@ -226,10 +248,11 @@ export class JSONSchemaGenerator {
|
|
|
226
248
|
}
|
|
227
249
|
case "union": {
|
|
228
250
|
const json = _json;
|
|
229
|
-
|
|
251
|
+
const options = def.options.map((x, i) => this.process(x, {
|
|
230
252
|
...params,
|
|
231
253
|
path: [...params.path, "anyOf", i],
|
|
232
254
|
}));
|
|
255
|
+
json.anyOf = options;
|
|
233
256
|
break;
|
|
234
257
|
}
|
|
235
258
|
case "intersection": {
|
|
@@ -253,32 +276,42 @@ export class JSONSchemaGenerator {
|
|
|
253
276
|
case "tuple": {
|
|
254
277
|
const json = _json;
|
|
255
278
|
json.type = "array";
|
|
256
|
-
const
|
|
279
|
+
const prefixPath = this.target === "draft-2020-12" ? "prefixItems" : "items";
|
|
280
|
+
const restPath = this.target === "draft-2020-12" ? "items" : this.target === "openapi-3.0" ? "items" : "additionalItems";
|
|
281
|
+
const prefixItems = def.items.map((x, i) => this.process(x, {
|
|
282
|
+
...params,
|
|
283
|
+
path: [...params.path, prefixPath, i],
|
|
284
|
+
}));
|
|
285
|
+
const rest = def.rest
|
|
286
|
+
? this.process(def.rest, {
|
|
287
|
+
...params,
|
|
288
|
+
path: [...params.path, restPath, ...(this.target === "openapi-3.0" ? [def.items.length] : [])],
|
|
289
|
+
})
|
|
290
|
+
: null;
|
|
257
291
|
if (this.target === "draft-2020-12") {
|
|
258
292
|
json.prefixItems = prefixItems;
|
|
293
|
+
if (rest) {
|
|
294
|
+
json.items = rest;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
else if (this.target === "openapi-3.0") {
|
|
298
|
+
json.items = {
|
|
299
|
+
anyOf: prefixItems,
|
|
300
|
+
};
|
|
301
|
+
if (rest) {
|
|
302
|
+
json.items.anyOf.push(rest);
|
|
303
|
+
}
|
|
304
|
+
json.minItems = prefixItems.length;
|
|
305
|
+
if (!rest) {
|
|
306
|
+
json.maxItems = prefixItems.length;
|
|
307
|
+
}
|
|
259
308
|
}
|
|
260
309
|
else {
|
|
261
310
|
json.items = prefixItems;
|
|
262
|
-
|
|
263
|
-
if (def.rest) {
|
|
264
|
-
const rest = this.process(def.rest, {
|
|
265
|
-
...params,
|
|
266
|
-
path: [...params.path, "items"],
|
|
267
|
-
});
|
|
268
|
-
if (this.target === "draft-2020-12") {
|
|
269
|
-
json.items = rest;
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
311
|
+
if (rest) {
|
|
272
312
|
json.additionalItems = rest;
|
|
273
313
|
}
|
|
274
314
|
}
|
|
275
|
-
// additionalItems
|
|
276
|
-
if (def.rest) {
|
|
277
|
-
json.items = this.process(def.rest, {
|
|
278
|
-
...params,
|
|
279
|
-
path: [...params.path, "items"],
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
315
|
// length
|
|
283
316
|
const { minimum, maximum } = schema._zod.bag;
|
|
284
317
|
if (typeof minimum === "number")
|
|
@@ -290,7 +323,12 @@ export class JSONSchemaGenerator {
|
|
|
290
323
|
case "record": {
|
|
291
324
|
const json = _json;
|
|
292
325
|
json.type = "object";
|
|
293
|
-
|
|
326
|
+
if (this.target === "draft-7" || this.target === "draft-2020-12") {
|
|
327
|
+
json.propertyNames = this.process(def.keyType, {
|
|
328
|
+
...params,
|
|
329
|
+
path: [...params.path, "propertyNames"],
|
|
330
|
+
});
|
|
331
|
+
}
|
|
294
332
|
json.additionalProperties = this.process(def.valueType, {
|
|
295
333
|
...params,
|
|
296
334
|
path: [...params.path, "additionalProperties"],
|
|
@@ -350,7 +388,12 @@ export class JSONSchemaGenerator {
|
|
|
350
388
|
else if (vals.length === 1) {
|
|
351
389
|
const val = vals[0];
|
|
352
390
|
json.type = val === null ? "null" : typeof val;
|
|
353
|
-
|
|
391
|
+
if (this.target === "draft-4" || this.target === "openapi-3.0") {
|
|
392
|
+
json.enum = [val];
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
json.const = val;
|
|
396
|
+
}
|
|
354
397
|
}
|
|
355
398
|
else {
|
|
356
399
|
if (vals.every((v) => typeof v === "number"))
|
|
@@ -405,7 +448,13 @@ export class JSONSchemaGenerator {
|
|
|
405
448
|
}
|
|
406
449
|
case "nullable": {
|
|
407
450
|
const inner = this.process(def.innerType, params);
|
|
408
|
-
|
|
451
|
+
if (this.target === "openapi-3.0") {
|
|
452
|
+
result.ref = def.innerType;
|
|
453
|
+
_json.nullable = true;
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
_json.anyOf = [inner, { type: "null" }];
|
|
457
|
+
}
|
|
409
458
|
break;
|
|
410
459
|
}
|
|
411
460
|
case "nonoptional": {
|
|
@@ -495,6 +544,12 @@ export class JSONSchemaGenerator {
|
|
|
495
544
|
}
|
|
496
545
|
break;
|
|
497
546
|
}
|
|
547
|
+
case "function": {
|
|
548
|
+
if (this.unrepresentable === "throw") {
|
|
549
|
+
throw new Error("Function types cannot be represented in JSON Schema");
|
|
550
|
+
}
|
|
551
|
+
break;
|
|
552
|
+
}
|
|
498
553
|
default: {
|
|
499
554
|
def;
|
|
500
555
|
}
|
|
@@ -646,7 +701,8 @@ export class JSONSchemaGenerator {
|
|
|
646
701
|
flattenRef(ref, params);
|
|
647
702
|
// merge referenced schema into current
|
|
648
703
|
const refSchema = this.seen.get(ref).schema;
|
|
649
|
-
if (refSchema.$ref &&
|
|
704
|
+
if (refSchema.$ref &&
|
|
705
|
+
(params.target === "draft-7" || params.target === "draft-4" || params.target === "openapi-3.0")) {
|
|
650
706
|
schema.allOf = schema.allOf ?? [];
|
|
651
707
|
schema.allOf.push(refSchema);
|
|
652
708
|
}
|
|
@@ -673,7 +729,14 @@ export class JSONSchemaGenerator {
|
|
|
673
729
|
else if (this.target === "draft-7") {
|
|
674
730
|
result.$schema = "http://json-schema.org/draft-07/schema#";
|
|
675
731
|
}
|
|
732
|
+
else if (this.target === "draft-4") {
|
|
733
|
+
result.$schema = "http://json-schema.org/draft-04/schema#";
|
|
734
|
+
}
|
|
735
|
+
else if (this.target === "openapi-3.0") {
|
|
736
|
+
// OpenAPI 3.0 schema objects should not include a $schema property
|
|
737
|
+
}
|
|
676
738
|
else {
|
|
739
|
+
// @ts-ignore
|
|
677
740
|
console.warn(`Invalid target: ${this.target}`);
|
|
678
741
|
}
|
|
679
742
|
if (params.external?.uri) {
|
|
@@ -842,6 +905,9 @@ function isTransforming(_schema, _ctx) {
|
|
|
842
905
|
case "catch": {
|
|
843
906
|
return false;
|
|
844
907
|
}
|
|
908
|
+
case "function": {
|
|
909
|
+
return false;
|
|
910
|
+
}
|
|
845
911
|
default:
|
|
846
912
|
def;
|
|
847
913
|
}
|