@es-joy/jsoe 0.24.3 → 0.25.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/.claude/settings.local.json +9 -0
- package/.ncurc.cjs +2 -2
- package/CHANGES.md +47 -0
- package/README.md +23 -13
- package/badges/coverage-badge.svg +1 -1
- package/dist/eslint.config.d.ts +3 -0
- package/dist/eslint.config.d.ts.map +1 -0
- package/dist/formatAndTypeChoices.d.ts +28 -30
- package/dist/formatAndTypeChoices.d.ts.map +1 -1
- package/dist/formats/indexedDBKey.d.ts.map +1 -1
- package/dist/formats/schema.d.ts +46 -3
- package/dist/formats/schema.d.ts.map +1 -1
- package/dist/formats/structuredCloning.d.ts +3 -0
- package/dist/formats/structuredCloning.d.ts.map +1 -1
- package/dist/formats.d.ts +24 -6
- package/dist/formats.d.ts.map +1 -1
- package/dist/fundamentalTypes/BooleanObjectType.d.ts.map +1 -1
- package/dist/fundamentalTypes/NumberObjectType.d.ts.map +1 -1
- package/dist/fundamentalTypes/StringObjectType.d.ts.map +1 -1
- package/dist/fundamentalTypes/arrayReferenceType.d.ts.map +1 -1
- package/dist/fundamentalTypes/arrayType.d.ts +7 -0
- package/dist/fundamentalTypes/arrayType.d.ts.map +1 -1
- package/dist/fundamentalTypes/bigintObjectType.d.ts.map +1 -1
- package/dist/fundamentalTypes/bigintType.d.ts +10 -0
- package/dist/fundamentalTypes/bigintType.d.ts.map +1 -1
- package/dist/fundamentalTypes/blobType.d.ts.map +1 -1
- package/dist/fundamentalTypes/booleanType.d.ts.map +1 -1
- package/dist/fundamentalTypes/catchType.d.ts +2 -2
- package/dist/fundamentalTypes/catchType.d.ts.map +1 -1
- package/dist/fundamentalTypes/dateType.d.ts.map +1 -1
- package/dist/fundamentalTypes/domexceptionType.d.ts.map +1 -1
- package/dist/fundamentalTypes/enumType.d.ts +2 -2
- package/dist/fundamentalTypes/enumType.d.ts.map +1 -1
- package/dist/fundamentalTypes/errorType.d.ts.map +1 -1
- package/dist/fundamentalTypes/fileType.d.ts +6 -0
- package/dist/fundamentalTypes/fileType.d.ts.map +1 -1
- package/dist/fundamentalTypes/functionType.d.ts.map +1 -1
- package/dist/fundamentalTypes/literalType.d.ts +3 -2
- package/dist/fundamentalTypes/literalType.d.ts.map +1 -1
- package/dist/fundamentalTypes/looseRecordType.d.ts +6 -0
- package/dist/fundamentalTypes/looseRecordType.d.ts.map +1 -0
- package/dist/fundamentalTypes/nanType.d.ts.map +1 -1
- package/dist/fundamentalTypes/neverType.d.ts +2 -2
- package/dist/fundamentalTypes/neverType.d.ts.map +1 -1
- package/dist/fundamentalTypes/noneditableType.d.ts.map +1 -1
- package/dist/fundamentalTypes/nullType.d.ts.map +1 -1
- package/dist/fundamentalTypes/numberType.d.ts.map +1 -1
- package/dist/fundamentalTypes/promiseType.d.ts.map +1 -1
- package/dist/fundamentalTypes/regexpType.d.ts.map +1 -1
- package/dist/fundamentalTypes/stringType.d.ts.map +1 -1
- package/dist/fundamentalTypes/symbolType.d.ts.map +1 -1
- package/dist/fundamentalTypes/undefinedType.d.ts.map +1 -1
- package/dist/fundamentalTypes/voidType.d.ts +2 -2
- package/dist/fundamentalTypes/voidType.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/rollup.config.d.ts +30 -0
- package/dist/rollup.config.d.ts.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/src/formatAndTypeChoices.d.ts +108 -0
- package/dist/src/formatAndTypeChoices.d.ts.map +1 -0
- package/dist/src/formats/arbitraryJS.d.ts +4 -0
- package/dist/src/formats/arbitraryJS.d.ts.map +1 -0
- package/dist/src/formats/indexedDBKey.d.ts +4 -0
- package/dist/src/formats/indexedDBKey.d.ts.map +1 -0
- package/dist/src/formats/json.d.ts +4 -0
- package/dist/src/formats/json.d.ts.map +1 -0
- package/dist/src/formats/schema.d.ts +17 -0
- package/dist/src/formats/schema.d.ts.map +1 -0
- package/dist/src/formats/structuredCloning.d.ts +19 -0
- package/dist/src/formats/structuredCloning.d.ts.map +1 -0
- package/dist/src/formats.d.ts +135 -0
- package/dist/src/formats.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/BooleanObjectType.d.ts +8 -0
- package/dist/src/fundamentalTypes/BooleanObjectType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/NumberObjectType.d.ts +6 -0
- package/dist/src/fundamentalTypes/NumberObjectType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/StringObjectType.d.ts +6 -0
- package/dist/src/fundamentalTypes/StringObjectType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/arrayReferenceType.d.ts +8 -0
- package/dist/src/fundamentalTypes/arrayReferenceType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/arrayType.d.ts +29 -0
- package/dist/src/fundamentalTypes/arrayType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/bigintObjectType.d.ts +6 -0
- package/dist/src/fundamentalTypes/bigintObjectType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/bigintType.d.ts +6 -0
- package/dist/src/fundamentalTypes/bigintType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/blobType.d.ts +11 -0
- package/dist/src/fundamentalTypes/blobType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/booleanType.d.ts +8 -0
- package/dist/src/fundamentalTypes/booleanType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/catchType.d.ts +6 -0
- package/dist/src/fundamentalTypes/catchType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/dateType.d.ts +26 -0
- package/dist/src/fundamentalTypes/dateType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/domexceptionType.d.ts +6 -0
- package/dist/src/fundamentalTypes/domexceptionType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/enumType.d.ts +6 -0
- package/dist/src/fundamentalTypes/enumType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/errorType.d.ts +6 -0
- package/dist/src/fundamentalTypes/errorType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/fileType.d.ts +13 -0
- package/dist/src/fundamentalTypes/fileType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/filelistType.d.ts +6 -0
- package/dist/src/fundamentalTypes/filelistType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/functionType.d.ts +7 -0
- package/dist/src/fundamentalTypes/functionType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/literalType.d.ts +6 -0
- package/dist/src/fundamentalTypes/literalType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/mapType.d.ts +6 -0
- package/dist/src/fundamentalTypes/mapType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/nanType.d.ts +6 -0
- package/dist/src/fundamentalTypes/nanType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/neverType.d.ts +6 -0
- package/dist/src/fundamentalTypes/neverType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/noneditableType.d.ts +6 -0
- package/dist/src/fundamentalTypes/noneditableType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/nullType.d.ts +6 -0
- package/dist/src/fundamentalTypes/nullType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/numberType.d.ts +6 -0
- package/dist/src/fundamentalTypes/numberType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/objectReferenceType.d.ts +8 -0
- package/dist/src/fundamentalTypes/objectReferenceType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/objectType.d.ts +6 -0
- package/dist/src/fundamentalTypes/objectType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/promiseType.d.ts +6 -0
- package/dist/src/fundamentalTypes/promiseType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/recordType.d.ts +6 -0
- package/dist/src/fundamentalTypes/recordType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/regexpType.d.ts +8 -0
- package/dist/src/fundamentalTypes/regexpType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/setType.d.ts +6 -0
- package/dist/src/fundamentalTypes/setType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/sparseUndefinedType.d.ts +6 -0
- package/dist/src/fundamentalTypes/sparseUndefinedType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/stringType.d.ts +6 -0
- package/dist/src/fundamentalTypes/stringType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/symbolType.d.ts +8 -0
- package/dist/src/fundamentalTypes/symbolType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/tupleType.d.ts +6 -0
- package/dist/src/fundamentalTypes/tupleType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/undefinedType.d.ts +6 -0
- package/dist/src/fundamentalTypes/undefinedType.d.ts.map +1 -0
- package/dist/src/fundamentalTypes/voidType.d.ts +6 -0
- package/dist/src/fundamentalTypes/voidType.d.ts.map +1 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/subTypes/blobHTMLType.d.ts +20 -0
- package/dist/src/subTypes/blobHTMLType.d.ts.map +1 -0
- package/dist/src/subTypes/falseType.d.ts +8 -0
- package/dist/src/subTypes/falseType.d.ts.map +1 -0
- package/dist/src/subTypes/trueType.d.ts +8 -0
- package/dist/src/subTypes/trueType.d.ts.map +1 -0
- package/dist/src/superTypes/SpecialNumberType.d.ts +6 -0
- package/dist/src/superTypes/SpecialNumberType.d.ts.map +1 -0
- package/dist/src/superTypes/SpecialRealNumberType.d.ts +6 -0
- package/dist/src/superTypes/SpecialRealNumberType.d.ts.map +1 -0
- package/dist/src/superTypes/buffersourceType.d.ts +8 -0
- package/dist/src/superTypes/buffersourceType.d.ts.map +1 -0
- package/dist/src/superTypes/dommatrixType.d.ts +6 -0
- package/dist/src/superTypes/dommatrixType.d.ts.map +1 -0
- package/dist/src/superTypes/dompointType.d.ts +6 -0
- package/dist/src/superTypes/dompointType.d.ts.map +1 -0
- package/dist/src/superTypes/domrectType.d.ts +6 -0
- package/dist/src/superTypes/domrectType.d.ts.map +1 -0
- package/dist/src/superTypes/errorsSpecialType.d.ts +8 -0
- package/dist/src/superTypes/errorsSpecialType.d.ts.map +1 -0
- package/dist/src/typeChoices.d.ts +140 -0
- package/dist/src/typeChoices.d.ts.map +1 -0
- package/dist/src/types.d.ts +758 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils/FileList.d.ts +26 -0
- package/dist/src/utils/FileList.d.ts.map +1 -0
- package/dist/src/utils/dialogs.d.ts +111 -0
- package/dist/src/utils/dialogs.d.ts.map +1 -0
- package/dist/src/utils/jsonPointer.d.ts +46 -0
- package/dist/src/utils/jsonPointer.d.ts.map +1 -0
- package/dist/src/utils/media.d.ts +18 -0
- package/dist/src/utils/media.d.ts.map +1 -0
- package/dist/src/utils/objects.d.ts +16 -0
- package/dist/src/utils/objects.d.ts.map +1 -0
- package/dist/src/utils/templateUtils.d.ts +59 -0
- package/dist/src/utils/templateUtils.d.ts.map +1 -0
- package/dist/src/utils/types.d.ts +2 -0
- package/dist/src/utils/types.d.ts.map +1 -0
- package/dist/src/vendor-imports.d.ts +4 -0
- package/dist/src/vendor-imports.d.ts.map +1 -0
- package/dist/subTypes/blobHTMLType.d.ts.map +1 -1
- package/dist/superTypes/SpecialRealNumberType.d.ts.map +1 -1
- package/dist/superTypes/buffersourceType.d.ts.map +1 -1
- package/dist/superTypes/dommatrixType.d.ts.map +1 -1
- package/dist/superTypes/dompointType.d.ts.map +1 -1
- package/dist/superTypes/domrectType.d.ts.map +1 -1
- package/dist/superTypes/errorsSpecialType.d.ts.map +1 -1
- package/dist/typeChoices.d.ts +21 -87
- package/dist/typeChoices.d.ts.map +1 -1
- package/dist/types.d.ts +90 -64
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/FileList.d.ts +4 -3
- package/dist/utils/FileList.d.ts.map +1 -1
- package/dist/utils/dialogs.d.ts +4 -4
- package/dist/utils/dialogs.d.ts.map +1 -1
- package/dist/utils/media.d.ts.map +1 -1
- package/dist/utils/schemaMeta.d.ts +92 -0
- package/dist/utils/schemaMeta.d.ts.map +1 -0
- package/dist/utils/templateUtils.d.ts +3 -3
- package/dist/utils/templateUtils.d.ts.map +1 -1
- package/dist/utils/timing.d.ts +2 -0
- package/dist/utils/timing.d.ts.map +1 -0
- package/dist/utils/types.d.ts +1 -0
- package/dist/utils/types.d.ts.map +1 -1
- package/dist/vendor-imports.d.ts +3 -1
- package/docs/proposals/schema-meta.md +233 -0
- package/eslint.config.js +51 -4
- package/licenseInfo.json +1 -1
- package/package.json +52 -42
- package/pnpm-workspace.yaml +57 -0
- package/rollup.config.js +20 -18
- package/server.js +3 -3
- package/src/deepEqual.js.map +1 -1
- package/src/formatAndTypeChoices.js +62 -58
- package/src/formats/indexedDBKey.js +3 -4
- package/src/formats/schema.js +824 -475
- package/src/formats/structuredCloning.js +189 -79
- package/src/formats.js +17 -5
- package/src/fundamentalTypes/BooleanObjectType.js +4 -5
- package/src/fundamentalTypes/NumberObjectType.js +4 -4
- package/src/fundamentalTypes/StringObjectType.js +3 -4
- package/src/fundamentalTypes/arrayReferenceType.js +0 -2
- package/src/fundamentalTypes/arrayType.js +624 -389
- package/src/fundamentalTypes/bigintObjectType.js +3 -2
- package/src/fundamentalTypes/bigintType.js +79 -17
- package/src/fundamentalTypes/blobType.js +35 -35
- package/src/fundamentalTypes/booleanType.js +16 -8
- package/src/fundamentalTypes/dateType.js +6 -8
- package/src/fundamentalTypes/domexceptionType.js +5 -4
- package/src/fundamentalTypes/errorType.js +39 -32
- package/src/fundamentalTypes/fileType.js +238 -52
- package/src/fundamentalTypes/functionType.js +61 -41
- package/src/fundamentalTypes/nanType.js +5 -4
- package/src/fundamentalTypes/noneditableType.js +4 -3
- package/src/fundamentalTypes/nullType.js +3 -2
- package/src/fundamentalTypes/numberType.js +72 -20
- package/src/fundamentalTypes/promiseType.js +16 -40
- package/src/fundamentalTypes/regexpType.js +7 -13
- package/src/fundamentalTypes/stringType.js +176 -110
- package/src/fundamentalTypes/symbolType.js +3 -2
- package/src/fundamentalTypes/undefinedType.js +3 -2
- package/src/index.js +6 -5
- package/src/jsoe.css +107 -8
- package/src/subTypes/blobHTMLType.js +23 -10
- package/src/superTypes/SpecialNumberType.js +6 -6
- package/src/superTypes/SpecialRealNumberType.js +10 -9
- package/src/superTypes/buffersourceType.js +86 -75
- package/src/superTypes/dommatrixType.js +6 -5
- package/src/superTypes/dompointType.js +6 -5
- package/src/superTypes/domrectType.js +6 -5
- package/src/superTypes/errorsSpecialType.js +54 -35
- package/src/typeChoices.js +373 -53
- package/src/types.js +157 -97
- package/src/utils/FileList.js +3 -3
- package/src/utils/dialogs.js +5 -7
- package/src/utils/jsonPointer.js +1 -1
- package/src/utils/media.js +1 -0
- package/src/utils/schemaMeta.js +257 -0
- package/src/utils/templateUtils.js +3 -3
- package/src/utils/timing.js +12 -0
- package/src/utils/types.js +19 -0
- package/src/vendor-imports.js +10 -2
- package/tsconfig.json +2 -0
- package/vendor/acorn/dist/acorn.d.mts +46 -5
- package/vendor/acorn/dist/acorn.d.ts +46 -5
- package/vendor/acorn/dist/acorn.js +394 -117
- package/vendor/acorn/dist/acorn.mjs +394 -117
- package/vendor/acorn/dist/bin.js +1 -1
- package/vendor/jamilih/dist/{jml-es.js → jml.mjs} +590 -312
- package/vendor/jamilih/package.json +1 -1
- package/vendor/mime/dist/types/other.js +719 -0
- package/vendor/mime/dist/types/standard.js +366 -0
- package/vendor/typeson-registry/dist/index.js +519 -99
- package/vendor/zod/classic/checks.d.ts +1 -0
- package/vendor/zod/classic/checks.js +1 -0
- package/vendor/zod/classic/coerce.d.ts +17 -0
- package/vendor/zod/classic/coerce.js +17 -0
- package/vendor/zod/classic/compat.d.ts +48 -0
- package/vendor/zod/classic/compat.js +31 -0
- package/vendor/zod/classic/deep-partial.d.ts +14 -0
- package/vendor/zod/classic/deep-partial.js +13 -0
- package/vendor/zod/classic/errors.d.ts +29 -0
- package/vendor/zod/classic/errors.js +57 -0
- package/vendor/zod/classic/external.d.ts +19 -0
- package/vendor/zod/classic/external.js +17 -0
- package/vendor/zod/classic/from-json-schema.d.ts +12 -0
- package/vendor/zod/classic/from-json-schema.js +660 -0
- package/vendor/zod/classic/in-out.d.ts +8 -0
- package/vendor/zod/classic/in-out.js +36 -0
- package/vendor/zod/classic/index.d.ts +3 -0
- package/vendor/zod/classic/index.js +4 -0
- package/vendor/zod/classic/iso.d.ts +7 -0
- package/vendor/zod/classic/iso.js +15 -0
- package/vendor/zod/classic/package.json +7 -0
- package/vendor/zod/classic/parse.d.ts +44 -0
- package/vendor/zod/classic/parse.js +16 -0
- package/vendor/zod/classic/schemas.d.ts +802 -0
- package/vendor/zod/classic/schemas.js +1491 -0
- package/vendor/zod/core/api.d.ts +329 -0
- package/vendor/zod/core/api.js +1104 -0
- package/vendor/zod/core/checks.d.ts +278 -0
- package/vendor/zod/core/checks.js +581 -0
- package/vendor/zod/core/compile.d.ts +51 -0
- package/vendor/zod/core/compile.js +1783 -0
- package/vendor/zod/core/core.d.ts +82 -0
- package/vendor/zod/core/core.js +141 -0
- package/vendor/zod/core/doc.d.ts +16 -0
- package/vendor/zod/core/doc.js +33 -0
- package/vendor/zod/core/errors.d.ts +225 -0
- package/vendor/zod/core/errors.js +270 -0
- package/vendor/zod/core/index.d.ts +19 -0
- package/vendor/zod/core/index.js +19 -0
- package/vendor/zod/core/json-schema-generator.d.ts +65 -0
- package/vendor/zod/core/json-schema-generator.js +99 -0
- package/vendor/zod/core/json-schema-processors.d.ts +49 -0
- package/vendor/zod/core/json-schema-processors.js +747 -0
- package/vendor/zod/core/json-schema.d.ts +89 -0
- package/vendor/zod/core/memoizer.d.ts +15 -0
- package/vendor/zod/core/memoizer.js +265 -0
- package/vendor/zod/core/package.json +7 -0
- package/vendor/zod/core/parse.d.ts +52 -0
- package/vendor/zod/core/parse.js +154 -0
- package/vendor/zod/core/regexes.d.ts +87 -0
- package/vendor/zod/core/regexes.js +150 -0
- package/vendor/zod/core/registries.d.ts +35 -0
- package/vendor/zod/core/registries.js +51 -0
- package/vendor/zod/core/schemas.d.ts +1253 -0
- package/vendor/zod/core/schemas.js +2440 -0
- package/vendor/zod/core/standard-schema.d.ts +126 -0
- package/vendor/zod/core/to-json-schema.d.ts +153 -0
- package/vendor/zod/core/to-json-schema.js +650 -0
- package/vendor/zod/core/util.d.ts +257 -0
- package/vendor/zod/core/util.js +846 -0
- package/vendor/zod/core/versions.d.ts +5 -0
- package/vendor/zod/core/versions.js +5 -0
- package/vendor/zod/core/visit.d.ts +30 -0
- package/vendor/zod/core/visit.js +169 -0
- package/vendor/zod/index.d.ts +3 -0
- package/vendor/zod/index.js +4 -0
- package/vendor/zod/locales/ar.d.ts +4 -0
- package/vendor/zod/locales/ar.js +109 -0
- package/vendor/zod/locales/az.d.ts +4 -0
- package/vendor/zod/locales/az.js +108 -0
- package/vendor/zod/locales/be.d.ts +4 -0
- package/vendor/zod/locales/be.js +166 -0
- package/vendor/zod/locales/bg.d.ts +4 -0
- package/vendor/zod/locales/bg.js +123 -0
- package/vendor/zod/locales/bn.d.ts +4 -0
- package/vendor/zod/locales/bn.js +111 -0
- package/vendor/zod/locales/ca.d.ts +4 -0
- package/vendor/zod/locales/ca.js +110 -0
- package/vendor/zod/locales/ckb.d.ts +4 -0
- package/vendor/zod/locales/ckb.js +131 -0
- package/vendor/zod/locales/cs.d.ts +4 -0
- package/vendor/zod/locales/cs.js +114 -0
- package/vendor/zod/locales/da.d.ts +4 -0
- package/vendor/zod/locales/da.js +118 -0
- package/vendor/zod/locales/de.d.ts +4 -0
- package/vendor/zod/locales/de.js +111 -0
- package/vendor/zod/locales/el.d.ts +4 -0
- package/vendor/zod/locales/el.js +110 -0
- package/vendor/zod/locales/en.d.ts +4 -0
- package/vendor/zod/locales/en.js +123 -0
- package/vendor/zod/locales/eo.d.ts +4 -0
- package/vendor/zod/locales/eo.js +112 -0
- package/vendor/zod/locales/es.d.ts +4 -0
- package/vendor/zod/locales/es.js +134 -0
- package/vendor/zod/locales/fa.d.ts +4 -0
- package/vendor/zod/locales/fa.js +117 -0
- package/vendor/zod/locales/fi.d.ts +4 -0
- package/vendor/zod/locales/fi.js +115 -0
- package/vendor/zod/locales/fr-CA.d.ts +4 -0
- package/vendor/zod/locales/fr-CA.js +110 -0
- package/vendor/zod/locales/fr.d.ts +4 -0
- package/vendor/zod/locales/fr.js +127 -0
- package/vendor/zod/locales/gu.d.ts +4 -0
- package/vendor/zod/locales/gu.js +111 -0
- package/vendor/zod/locales/he.d.ts +4 -0
- package/vendor/zod/locales/he.js +219 -0
- package/vendor/zod/locales/hi.d.ts +4 -0
- package/vendor/zod/locales/hi.js +109 -0
- package/vendor/zod/locales/hr.d.ts +4 -0
- package/vendor/zod/locales/hr.js +124 -0
- package/vendor/zod/locales/hu.d.ts +4 -0
- package/vendor/zod/locales/hu.js +111 -0
- package/vendor/zod/locales/hy.d.ts +4 -0
- package/vendor/zod/locales/hy.js +156 -0
- package/vendor/zod/locales/id.d.ts +4 -0
- package/vendor/zod/locales/id.js +109 -0
- package/vendor/zod/locales/index.d.ts +62 -0
- package/vendor/zod/locales/index.js +62 -0
- package/vendor/zod/locales/is.d.ts +4 -0
- package/vendor/zod/locales/is.js +112 -0
- package/vendor/zod/locales/it.d.ts +4 -0
- package/vendor/zod/locales/it.js +111 -0
- package/vendor/zod/locales/ja.d.ts +4 -0
- package/vendor/zod/locales/ja.js +110 -0
- package/vendor/zod/locales/ka.d.ts +4 -0
- package/vendor/zod/locales/ka.js +115 -0
- package/vendor/zod/locales/kh.d.ts +5 -0
- package/vendor/zod/locales/kh.js +5 -0
- package/vendor/zod/locales/km.d.ts +4 -0
- package/vendor/zod/locales/km.js +113 -0
- package/vendor/zod/locales/kn.d.ts +4 -0
- package/vendor/zod/locales/kn.js +114 -0
- package/vendor/zod/locales/ko.d.ts +4 -0
- package/vendor/zod/locales/ko.js +114 -0
- package/vendor/zod/locales/lt.d.ts +4 -0
- package/vendor/zod/locales/lt.js +205 -0
- package/vendor/zod/locales/mk.d.ts +4 -0
- package/vendor/zod/locales/mk.js +112 -0
- package/vendor/zod/locales/ms.d.ts +4 -0
- package/vendor/zod/locales/ms.js +110 -0
- package/vendor/zod/locales/ne.d.ts +4 -0
- package/vendor/zod/locales/ne.js +109 -0
- package/vendor/zod/locales/nl.d.ts +4 -0
- package/vendor/zod/locales/nl.js +113 -0
- package/vendor/zod/locales/nn.d.ts +4 -0
- package/vendor/zod/locales/nn.js +111 -0
- package/vendor/zod/locales/no.d.ts +4 -0
- package/vendor/zod/locales/no.js +111 -0
- package/vendor/zod/locales/ota.d.ts +4 -0
- package/vendor/zod/locales/ota.js +112 -0
- package/vendor/zod/locales/package.json +7 -0
- package/vendor/zod/locales/pl.d.ts +4 -0
- package/vendor/zod/locales/pl.js +112 -0
- package/vendor/zod/locales/ps.d.ts +4 -0
- package/vendor/zod/locales/ps.js +117 -0
- package/vendor/zod/locales/pt-BR.d.ts +4 -0
- package/vendor/zod/locales/pt-BR.js +141 -0
- package/vendor/zod/locales/pt.d.ts +4 -0
- package/vendor/zod/locales/pt.js +140 -0
- package/vendor/zod/locales/ro.d.ts +4 -0
- package/vendor/zod/locales/ro.js +120 -0
- package/vendor/zod/locales/ru.d.ts +4 -0
- package/vendor/zod/locales/ru.js +166 -0
- package/vendor/zod/locales/sk.d.ts +4 -0
- package/vendor/zod/locales/sk.js +114 -0
- package/vendor/zod/locales/sl.d.ts +4 -0
- package/vendor/zod/locales/sl.js +112 -0
- package/vendor/zod/locales/sv.d.ts +4 -0
- package/vendor/zod/locales/sv.js +113 -0
- package/vendor/zod/locales/ta.d.ts +4 -0
- package/vendor/zod/locales/ta.js +113 -0
- package/vendor/zod/locales/th.d.ts +4 -0
- package/vendor/zod/locales/th.js +113 -0
- package/vendor/zod/locales/tk.d.ts +4 -0
- package/vendor/zod/locales/tk.js +105 -0
- package/vendor/zod/locales/tr.d.ts +4 -0
- package/vendor/zod/locales/tr.js +108 -0
- package/vendor/zod/locales/ua.d.ts +5 -0
- package/vendor/zod/locales/ua.js +5 -0
- package/vendor/zod/locales/uk.d.ts +4 -0
- package/vendor/zod/locales/uk.js +111 -0
- package/vendor/zod/locales/ur.d.ts +4 -0
- package/vendor/zod/locales/ur.js +113 -0
- package/vendor/zod/locales/uz.d.ts +4 -0
- package/vendor/zod/locales/uz.js +111 -0
- package/vendor/zod/locales/vi.d.ts +4 -0
- package/vendor/zod/locales/vi.js +111 -0
- package/vendor/zod/locales/yo.d.ts +4 -0
- package/vendor/zod/locales/yo.js +110 -0
- package/vendor/zod/locales/zh-CN.d.ts +4 -0
- package/vendor/zod/locales/zh-CN.js +112 -0
- package/vendor/zod/locales/zh-TW.d.ts +4 -0
- package/vendor/zod/locales/zh-TW.js +110 -0
- package/vendor/zod/mini/checks.d.ts +1 -0
- package/vendor/zod/mini/checks.js +1 -0
- package/vendor/zod/mini/coerce.d.ts +7 -0
- package/vendor/zod/mini/coerce.js +22 -0
- package/vendor/zod/mini/deep-partial.d.ts +14 -0
- package/vendor/zod/mini/deep-partial.js +13 -0
- package/vendor/zod/mini/external.d.ts +16 -0
- package/vendor/zod/mini/external.js +16 -0
- package/vendor/zod/mini/in-out.d.ts +8 -0
- package/vendor/zod/mini/in-out.js +36 -0
- package/vendor/zod/mini/index.d.ts +3 -0
- package/vendor/zod/mini/index.js +3 -0
- package/vendor/zod/mini/iso.d.ts +22 -0
- package/vendor/zod/mini/iso.js +34 -0
- package/vendor/zod/mini/package.json +7 -0
- package/vendor/zod/mini/parse.d.ts +1 -0
- package/vendor/zod/mini/parse.js +1 -0
- package/vendor/zod/mini/schemas.d.ts +475 -0
- package/vendor/zod/mini/schemas.js +987 -0
- package/vendor/zod/package.json +7 -0
- package/vendor/zodexy/dist/esm/index.js +1274 -0
- package/vendor/zodexy/dist/index.js +1088 -0
- package/vendor/zodexy/dist/schema.zodexy.json +1036 -0
- package/dist/fundamentalTypes/nativeEnumType.d.ts +0 -6
- package/dist/fundamentalTypes/nativeEnumType.d.ts.map +0 -1
- package/src/fundamentalTypes/catchType.js +0 -140
- package/src/fundamentalTypes/enumType.js +0 -52
- package/src/fundamentalTypes/literalType.js +0 -81
- package/src/fundamentalTypes/nativeEnumType.js +0 -157
- package/src/fundamentalTypes/neverType.js +0 -49
- package/src/fundamentalTypes/recordType.js +0 -42
- package/src/fundamentalTypes/tupleType.js +0 -39
- package/src/fundamentalTypes/voidType.js +0 -48
- package/vendor/zod/lib/index.mjs +0 -4236
- package/vendor/zodex/dist/esm/dezerialize.d.ts +0 -26
- package/vendor/zodex/dist/esm/dezerialize.js +0 -393
- package/vendor/zodex/dist/esm/index.d.ts +0 -9
- package/vendor/zodex/dist/esm/index.js +0 -4
- package/vendor/zodex/dist/esm/infer.d.ts +0 -29
- package/vendor/zodex/dist/esm/package.json +0 -1
- package/vendor/zodex/dist/esm/types.d.ts +0 -201
- package/vendor/zodex/dist/esm/types.js +0 -13
- package/vendor/zodex/dist/esm/ui.d.ts +0 -23
- package/vendor/zodex/dist/esm/ui.js +0 -10
- package/vendor/zodex/dist/esm/zerialize.d.ts +0 -50
- package/vendor/zodex/dist/esm/zerialize.js +0 -417
- package/vendor/zodex/dist/esm/zod-types.d.ts +0 -11
- /package/vendor/{zodex/dist/esm/infer.js → zod/core/json-schema.js} +0 -0
- /package/vendor/{zodex/dist/esm/zod-types.js → zod/core/standard-schema.js} +0 -0
|
@@ -1,55 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {regexes, z} from 'zod';
|
|
2
2
|
import {$e} from '../utils/templateUtils.js';
|
|
3
|
+
import {schemaLabel} from '../utils/schemaMeta.js';
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
const ipv4Regex =
|
|
6
|
-
/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/u;
|
|
7
|
-
const ipv6Regex =
|
|
8
|
-
/^(([a-f\d]{1,4}:){7}|::([a-f\d]{1,4}:){0,6}|([a-f\d]{1,4}:):([a-f\d]{1,4}:){0,5}|([a-f\d]{1,4}:){2}:([a-f\d]{1,4}:){0,4}|([a-f\d]{1,4}:){3}:([a-f\d]{1,4}:){0,3}|([a-f\d]{1,4}:){4}:([a-f\d]{1,4}:){0,2}|([a-f\d]{1,4}:){5}:([a-f\d]{1,4}:)?)([a-f\d]{1,4}|(((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d{1,2}))\.){3}((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d{1,2})))$/u;
|
|
9
|
-
// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript
|
|
10
|
-
const base64Regex =
|
|
11
|
-
/^([\da-zA-Z+/]{4})*(([\da-zA-Z+/]{2}==)|([\da-zA-Z+/]{3}=))?$/u;
|
|
12
|
-
// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression
|
|
13
|
-
const emojiRegexStr = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;
|
|
14
|
-
const emojiRegex = new RegExp(emojiRegexStr, 'u');
|
|
15
|
-
const cuidRegex = /^c[^\s-]{8,}$/iu;
|
|
16
|
-
const cuid2Regex = /^[\da-z]+$/u;
|
|
17
|
-
const ulidRegex = /^[\dA-HJKMNP-TV-Z]{26}$/iu;
|
|
18
|
-
const uuidRegex =
|
|
19
|
-
/^[\da-f]{8}\b-[\da-f]{4}\b-[\da-f]{4}\b-[\da-f]{4}\b-[\da-f]{12}$/iu;
|
|
20
|
-
const nanoidRegex = /^[a-z\d_-]{21}$/iu;
|
|
21
|
-
const durationRegex =
|
|
22
|
-
// eslint-disable-next-line sonarjs/no-empty-after-reluctant -- Ok
|
|
23
|
-
/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/u;
|
|
24
|
-
// End adapted from Zod
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @param {{precision?: number|null}} args
|
|
28
|
-
* @returns {string}
|
|
29
|
-
*/
|
|
30
|
-
function timeRegexSource (args) {
|
|
31
|
-
// let regex = `\\d{2}:\\d{2}:\\d{2}`;
|
|
32
|
-
let regex = `([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`;
|
|
33
|
-
|
|
34
|
-
if (args.precision) {
|
|
35
|
-
regex = `${regex}\\.\\d{${args.precision}}`;
|
|
36
|
-
} else if (args.precision === null || args.precision === undefined) {
|
|
37
|
-
regex = `${regex}(\\.\\d+)?`;
|
|
38
|
-
}
|
|
39
|
-
return regex;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @param {{
|
|
44
|
-
* offset?: boolean;
|
|
45
|
-
* local?: boolean;
|
|
46
|
-
* precision?: number|null;
|
|
47
|
-
* }} args
|
|
48
|
-
* @returns {RegExp}
|
|
49
|
-
*/
|
|
50
|
-
function timeRegex (args) {
|
|
51
|
-
return new RegExp(`^${timeRegexSource(args)}$`, 'u');
|
|
52
|
-
}
|
|
5
|
+
const cidrv6Schema = z.cidrv6();
|
|
53
6
|
|
|
54
7
|
/**
|
|
55
8
|
* @type {import('../types.js').TypeObject}
|
|
@@ -65,7 +18,7 @@ const stringType = {
|
|
|
65
18
|
},
|
|
66
19
|
getInput ({root}) {
|
|
67
20
|
return /** @type {HTMLTextAreaElement} */ (
|
|
68
|
-
$e(root, '[data-type="string"] > textarea,input')
|
|
21
|
+
$e(root, '[data-type="string"] > textarea,input,select')
|
|
69
22
|
);
|
|
70
23
|
},
|
|
71
24
|
setValue ({root, value}) {
|
|
@@ -75,27 +28,31 @@ const stringType = {
|
|
|
75
28
|
return this.getInput({root}).value;
|
|
76
29
|
},
|
|
77
30
|
viewUI ({value, specificSchemaObject}) {
|
|
78
|
-
const kind =
|
|
79
|
-
specificSchemaObject
|
|
80
|
-
//
|
|
81
|
-
)
|
|
31
|
+
const kind = specificSchemaObject && 'kind' in specificSchemaObject &&
|
|
32
|
+
specificSchemaObject.kind;
|
|
33
|
+
// `z.stringbool()` serializes as a string -> boolean `pipe` carrying
|
|
34
|
+
// `truthy`/`falsy` token arrays; jsoe edits its encoded (string) side.
|
|
35
|
+
const isStringbool = specificSchemaObject &&
|
|
36
|
+
'truthy' in specificSchemaObject && 'falsy' in specificSchemaObject;
|
|
82
37
|
return ['span', {
|
|
83
38
|
dataset: {type: 'string'},
|
|
84
|
-
title: specificSchemaObject
|
|
85
|
-
(
|
|
86
|
-
?
|
|
87
|
-
: kind
|
|
88
|
-
? `(
|
|
89
|
-
:
|
|
39
|
+
title: schemaLabel(specificSchemaObject) ??
|
|
40
|
+
(isStringbool
|
|
41
|
+
? '(a string boolean)'
|
|
42
|
+
: kind === 'email'
|
|
43
|
+
? `(an ${kind} string)`
|
|
44
|
+
: kind
|
|
45
|
+
? `(a ${kind} string)` // url, date
|
|
46
|
+
: '(a string)')
|
|
90
47
|
}, [value]];
|
|
91
48
|
},
|
|
92
|
-
editUI ({typeNamespace, specificSchemaObject, value}) {
|
|
93
|
-
const stringSchemaObject = /** @type {import('
|
|
94
|
-
specificSchemaObject
|
|
49
|
+
editUI ({typeNamespace, specificSchemaObject, types, value}) {
|
|
50
|
+
const stringSchemaObject = /** @type {import('zodexy').SzString} */ (
|
|
51
|
+
specificSchemaObject ?? {type: 'string'}
|
|
95
52
|
);
|
|
96
|
-
|
|
97
|
-
const
|
|
98
|
-
|
|
53
|
+
const kind = 'kind' in stringSchemaObject ? stringSchemaObject.kind : null;
|
|
54
|
+
const isConstrained = specificSchemaObject?.type === 'literal' ||
|
|
55
|
+
specificSchemaObject?.type === 'enum';
|
|
99
56
|
const minlength = stringSchemaObject?.min ?? stringSchemaObject?.length;
|
|
100
57
|
const maxlength = stringSchemaObject?.max ?? stringSchemaObject?.length;
|
|
101
58
|
|
|
@@ -106,20 +63,48 @@ const stringType = {
|
|
|
106
63
|
const toUpperCase = stringSchemaObject?.toUpperCase;
|
|
107
64
|
const trim = stringSchemaObject?.trim;
|
|
108
65
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
66
|
+
const includes = 'includes' in stringSchemaObject &&
|
|
67
|
+
stringSchemaObject.includes;
|
|
68
|
+
const position = 'position' in stringSchemaObject
|
|
69
|
+
? stringSchemaObject.position
|
|
70
|
+
: undefined;
|
|
113
71
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
72
|
+
const regex = 'regex' in stringSchemaObject &&
|
|
73
|
+
stringSchemaObject.regex;
|
|
74
|
+
const pattern = kind === 'email' && 'pattern' in stringSchemaObject
|
|
75
|
+
? stringSchemaObject.pattern
|
|
76
|
+
: undefined;
|
|
77
|
+
const flags = 'flags' in stringSchemaObject
|
|
78
|
+
? stringSchemaObject.flags
|
|
79
|
+
: undefined;
|
|
80
|
+
|
|
81
|
+
// A `z.stringbool()` codec serializes as a string -> boolean `pipe` that
|
|
82
|
+
// carries `truthy`/`falsy` token arrays (and an optional `case`). jsoe
|
|
83
|
+
// edits the encoded (string) side, so it is handled here as a String
|
|
84
|
+
// whose value must be one of those recognized tokens.
|
|
85
|
+
const stringbool = /** @type {{truthy?: string[], falsy?: string[], case?: string}} */ (
|
|
86
|
+
stringSchemaObject
|
|
87
|
+
);
|
|
88
|
+
const stringboolTokens = Array.isArray(stringbool.truthy) &&
|
|
89
|
+
Array.isArray(stringbool.falsy)
|
|
90
|
+
? [...stringbool.truthy, ...stringbool.falsy]
|
|
91
|
+
: null;
|
|
118
92
|
|
|
119
93
|
/**
|
|
120
94
|
* @param {string} value
|
|
121
95
|
*/
|
|
122
96
|
const checkValue = (value) => {
|
|
97
|
+
if (stringboolTokens) {
|
|
98
|
+
const sensitive = stringbool.case === 'sensitive';
|
|
99
|
+
const compare = sensitive ? value : value.toLowerCase();
|
|
100
|
+
const matched = stringboolTokens.some((token) => {
|
|
101
|
+
return (sensitive ? token : token.toLowerCase()) === compare;
|
|
102
|
+
});
|
|
103
|
+
if (!matched) {
|
|
104
|
+
return `Value is not a recognized string boolean; expected one ` +
|
|
105
|
+
`of: ${stringboolTokens.join(', ')}`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
123
108
|
if (startsWith && !value.startsWith(startsWith)) {
|
|
124
109
|
return `Value doesn't start with expected: ${startsWith}`;
|
|
125
110
|
}
|
|
@@ -136,74 +121,136 @@ const stringType = {
|
|
|
136
121
|
flags ? ` with flags: ${flags}` : ''
|
|
137
122
|
}`;
|
|
138
123
|
}
|
|
124
|
+
if (pattern && !(new RegExp(pattern, flags ?? '')).test(value)) {
|
|
125
|
+
return `Value doesn't match email pattern: ${pattern}${
|
|
126
|
+
flags ? ` with flags: ${flags}` : ''
|
|
127
|
+
}`;
|
|
128
|
+
}
|
|
139
129
|
if (kind) {
|
|
140
130
|
switch (kind) {
|
|
131
|
+
case 'credit_card':
|
|
132
|
+
if (!regexes.creditCard.test(value)) {
|
|
133
|
+
return `Value doesn't match credit card pattern.`;
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
141
136
|
case 'ip':
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
switch ('version' in stringSchemaObject &&
|
|
138
|
+
stringSchemaObject.version) {
|
|
144
139
|
case 'v4':
|
|
145
|
-
if (!
|
|
140
|
+
if (!regexes.ipv4.test(value)) {
|
|
146
141
|
return `Value doesn't match IP v4 pattern.`;
|
|
147
142
|
}
|
|
148
143
|
break;
|
|
149
144
|
default:
|
|
150
|
-
if (!
|
|
145
|
+
if (!regexes.ipv6.test(value)) {
|
|
151
146
|
return `Value doesn't match IP v6 pattern.`;
|
|
152
147
|
}
|
|
153
148
|
}
|
|
154
149
|
break;
|
|
155
150
|
case 'time':
|
|
156
151
|
// @ts-expect-error It is present
|
|
157
|
-
if (!
|
|
152
|
+
if (!regexes.time(stringSchemaObject).test(value)) {
|
|
158
153
|
return `Value does not match time/precision.`;
|
|
159
154
|
}
|
|
160
155
|
break;
|
|
161
156
|
case 'datetime':
|
|
162
157
|
// @ts-expect-error It is present
|
|
163
|
-
if (!
|
|
158
|
+
if (!regexes.datetime(stringSchemaObject).test(value)) {
|
|
164
159
|
return `Value does not match datetime/precision/offset/local`;
|
|
165
160
|
}
|
|
166
161
|
break;
|
|
167
162
|
case 'emoji':
|
|
168
|
-
if (!
|
|
163
|
+
if (!regexes.emoji().test(value)) {
|
|
169
164
|
return `Value does not match emoji pattern`;
|
|
170
165
|
}
|
|
171
166
|
break;
|
|
172
167
|
case 'uuid':
|
|
173
|
-
if (!
|
|
168
|
+
if (!regexes.uuid(
|
|
169
|
+
'version' in stringSchemaObject && stringSchemaObject.version
|
|
170
|
+
? Number(stringSchemaObject.version.slice(1))
|
|
171
|
+
: undefined
|
|
172
|
+
).test(value)) {
|
|
174
173
|
return `Value does not match uuid pattern`;
|
|
175
174
|
}
|
|
176
175
|
break;
|
|
176
|
+
case 'jwt':
|
|
177
|
+
if (!z.jwt(
|
|
178
|
+
'algorithm' in stringSchemaObject
|
|
179
|
+
? {alg: stringSchemaObject.algorithm}
|
|
180
|
+
: undefined
|
|
181
|
+
).safeParse(value).success) {
|
|
182
|
+
return `Value does not match jwt pattern`;
|
|
183
|
+
}
|
|
184
|
+
break;
|
|
185
|
+
case 'e164':
|
|
186
|
+
case 'xid':
|
|
187
|
+
case 'guid':
|
|
188
|
+
case 'ksuid':
|
|
189
|
+
if (!regexes[kind].test(value)) {
|
|
190
|
+
return `Value does not match ${kind} pattern`;
|
|
191
|
+
}
|
|
192
|
+
break;
|
|
177
193
|
case 'nanoid':
|
|
178
|
-
if (
|
|
194
|
+
if ('length' in stringSchemaObject && stringSchemaObject.length) {
|
|
195
|
+
if (value.length !== stringSchemaObject.length) {
|
|
196
|
+
return `Nanoid value is not of the expected length: ${
|
|
197
|
+
stringSchemaObject.length
|
|
198
|
+
}`;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (!regexes.nanoidOfLength(15).test(value)) {
|
|
202
|
+
return `Value does not match nanoid pattern`;
|
|
203
|
+
}
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
if (!regexes.nanoid.test(value)) {
|
|
179
207
|
return `Value does not match nanoid pattern`;
|
|
180
208
|
}
|
|
181
209
|
break;
|
|
182
210
|
case 'cuid':
|
|
183
|
-
if (!
|
|
211
|
+
if (!regexes.cuid.test(value)) {
|
|
184
212
|
return `Value does not match cuid pattern`;
|
|
185
213
|
}
|
|
186
214
|
break;
|
|
187
215
|
case 'cuid2':
|
|
188
|
-
if (!
|
|
216
|
+
if (!regexes.cuid2.test(value)) {
|
|
189
217
|
return `Value does not match cuid2 pattern`;
|
|
190
218
|
}
|
|
191
219
|
break;
|
|
192
220
|
case 'ulid':
|
|
193
|
-
if (!
|
|
221
|
+
if (!regexes.ulid.test(value)) {
|
|
194
222
|
return `Value does not match ulid pattern`;
|
|
195
223
|
}
|
|
196
224
|
break;
|
|
197
225
|
case 'duration':
|
|
198
|
-
if (!
|
|
226
|
+
if (!regexes.duration.test(value)) {
|
|
199
227
|
return `Value does not match duration pattern`;
|
|
200
228
|
}
|
|
201
229
|
break;
|
|
202
230
|
case 'base64':
|
|
203
|
-
if (!
|
|
231
|
+
if (!regexes.base64.test(value)) {
|
|
204
232
|
return `Value does not match base64 pattern`;
|
|
205
233
|
}
|
|
206
234
|
break;
|
|
235
|
+
case 'base64url':
|
|
236
|
+
if (!regexes.base64url.test(value)) {
|
|
237
|
+
return `Value does not match base64url pattern`;
|
|
238
|
+
}
|
|
239
|
+
break;
|
|
240
|
+
case 'cidr':
|
|
241
|
+
switch ('version' in stringSchemaObject &&
|
|
242
|
+
stringSchemaObject.version) {
|
|
243
|
+
case 'v4':
|
|
244
|
+
if (!regexes.cidrv4.test(value)) {
|
|
245
|
+
return `Value doesn't match IP v4 cidr pattern.`;
|
|
246
|
+
}
|
|
247
|
+
break;
|
|
248
|
+
default:
|
|
249
|
+
if (!cidrv6Schema.safeParse(value).success) {
|
|
250
|
+
return `Value doesn't match IP v6 cidr pattern.`;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
207
254
|
default:
|
|
208
255
|
// 'email'|'url'|'date' should already be handled by the input element
|
|
209
256
|
break;
|
|
@@ -230,9 +277,9 @@ const stringType = {
|
|
|
230
277
|
|
|
231
278
|
return ['div', {
|
|
232
279
|
dataset: {type: 'string'},
|
|
233
|
-
title: specificSchemaObject
|
|
280
|
+
title: schemaLabel(specificSchemaObject) ?? 'String'
|
|
234
281
|
}, [
|
|
235
|
-
[
|
|
282
|
+
kind && [
|
|
236
283
|
// There is a `time` and `datetime-local` but they don't
|
|
237
284
|
// support milliseconds
|
|
238
285
|
'email', 'url', 'date'
|
|
@@ -243,7 +290,11 @@ const stringType = {
|
|
|
243
290
|
const that = /** @type {HTMLInputElement} */ (this);
|
|
244
291
|
that.value = transform(that.value);
|
|
245
292
|
const message = checkValue(that.value);
|
|
246
|
-
that.setCustomValidity(
|
|
293
|
+
that.setCustomValidity(types.getValidationMessage({
|
|
294
|
+
message,
|
|
295
|
+
schema: specificSchemaObject,
|
|
296
|
+
typeSpecific: true
|
|
297
|
+
}) ?? '');
|
|
247
298
|
that.reportValidity();
|
|
248
299
|
}
|
|
249
300
|
},
|
|
@@ -255,24 +306,39 @@ const stringType = {
|
|
|
255
306
|
minlength: kind === 'date' ? undefined : minlength,
|
|
256
307
|
maxlength: kind === 'date' ? undefined : maxlength
|
|
257
308
|
}]
|
|
258
|
-
:
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
309
|
+
: isConstrained
|
|
310
|
+
? ['select', {
|
|
311
|
+
name: `${typeNamespace}-string`
|
|
312
|
+
}, Object.values(specificSchemaObject.values).filter((
|
|
313
|
+
/** @type {string} */ val
|
|
314
|
+
) => {
|
|
315
|
+
return typeof val === 'string';
|
|
316
|
+
}).map((
|
|
317
|
+
/** @type {string} */ val
|
|
318
|
+
) => {
|
|
319
|
+
return ['option', {
|
|
320
|
+
selected: val === (value ?? specificSchemaObject.defaultValue)
|
|
321
|
+
}, [val]];
|
|
322
|
+
})]
|
|
323
|
+
: ['textarea', {
|
|
324
|
+
$on: {
|
|
325
|
+
change () {
|
|
326
|
+
const that = /** @type {HTMLTextAreaElement} */ (this);
|
|
327
|
+
that.value = transform(that.value);
|
|
328
|
+
const message = checkValue(that.value);
|
|
329
|
+
that.setCustomValidity(types.getValidationMessage({
|
|
330
|
+
message,
|
|
331
|
+
schema: specificSchemaObject,
|
|
332
|
+
typeSpecific: true
|
|
333
|
+
}) ?? '');
|
|
334
|
+
that.reportValidity();
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
name: `${typeNamespace}-string`,
|
|
338
|
+
minlength, maxlength
|
|
339
|
+
}, [
|
|
340
|
+
(value ?? specificSchemaObject?.defaultValue ?? '')
|
|
341
|
+
]]
|
|
276
342
|
]];
|
|
277
343
|
}
|
|
278
344
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {$e} from '../utils/templateUtils.js';
|
|
2
|
+
import {schemaLabel} from '../utils/schemaMeta.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* @type {import('../types.js').TypeObject & {ct: number}}
|
|
@@ -49,7 +50,7 @@ const symbolType = {
|
|
|
49
50
|
viewUI ({value, specificSchemaObject}) {
|
|
50
51
|
return ['span', {
|
|
51
52
|
dataset: {type: 'symbol'},
|
|
52
|
-
title: specificSchemaObject
|
|
53
|
+
title: schemaLabel(specificSchemaObject) ?? '(a Symbol)'
|
|
53
54
|
}, [
|
|
54
55
|
Symbol.keyFor(value) === undefined ? '' : ['b', ['Global: ']],
|
|
55
56
|
String(value).slice(7, -1)
|
|
@@ -59,7 +60,7 @@ const symbolType = {
|
|
|
59
60
|
this.ct++;
|
|
60
61
|
return ['div', {
|
|
61
62
|
dataset: {type: 'symbol'},
|
|
62
|
-
title: specificSchemaObject
|
|
63
|
+
title: schemaLabel(specificSchemaObject) ?? '(a Symbol)'
|
|
63
64
|
}, [
|
|
64
65
|
['label', [
|
|
65
66
|
'Symbol()',
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {$e} from '../utils/templateUtils.js';
|
|
2
|
+
import {schemaLabel} from '../utils/schemaMeta.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* @type {import('../types.js').TypeObject}
|
|
@@ -20,7 +21,7 @@ const undefinedType = {
|
|
|
20
21
|
viewUI ({specificSchemaObject}) {
|
|
21
22
|
return ['i', {
|
|
22
23
|
dataset: {type: 'undef'},
|
|
23
|
-
title: specificSchemaObject
|
|
24
|
+
title: schemaLabel(specificSchemaObject) ?? '(an `undefined`)'
|
|
24
25
|
}, ['undefined']];
|
|
25
26
|
},
|
|
26
27
|
/* istanbul ignore next -- No dupe keys, array refs, or validation */
|
|
@@ -30,7 +31,7 @@ const undefinedType = {
|
|
|
30
31
|
editUI ({typeNamespace, specificSchemaObject}) {
|
|
31
32
|
return ['div', {
|
|
32
33
|
dataset: {type: 'undef'},
|
|
33
|
-
title: specificSchemaObject
|
|
34
|
+
title: schemaLabel(specificSchemaObject) ?? 'Undefined'
|
|
34
35
|
}, [
|
|
35
36
|
['label', [
|
|
36
37
|
'Undefined',
|
package/src/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
/* eslint-disable unicorn/no-barrel-files -- Has own typedefs */
|
|
1
2
|
/**
|
|
2
3
|
* @typedef {import('./formatAndTypeChoices.js').TypeRootGetter} TypeRootGetter
|
|
3
4
|
*/
|
|
4
5
|
/**
|
|
5
6
|
* @typedef {(cfg: {
|
|
6
|
-
* type: string,
|
|
7
|
-
* baseValue?: import('./formats.js').StructuredCloneValue,
|
|
8
|
-
* bringIntoFocus?: boolean
|
|
9
|
-
* }) => void} SetType
|
|
10
|
-
*/
|
|
7
|
+
* type: string,
|
|
8
|
+
* baseValue?: import('./formats.js').StructuredCloneValue,
|
|
9
|
+
* bringIntoFocus?: boolean
|
|
10
|
+
* }) => void} SetType
|
|
11
|
+
*/
|
|
11
12
|
|
|
12
13
|
export {default as Types} from './types.js';
|
|
13
14
|
|
package/src/jsoe.css
CHANGED
|
@@ -2,6 +2,110 @@ input:invalid {
|
|
|
2
2
|
background-color: pink;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
+
.schema-meta {
|
|
6
|
+
display: inline-block;
|
|
7
|
+
margin-inline-start: 0.25em;
|
|
8
|
+
}
|
|
9
|
+
.schema-meta-toggle {
|
|
10
|
+
border: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
background: none;
|
|
13
|
+
cursor: help;
|
|
14
|
+
font-size: 0.85em;
|
|
15
|
+
line-height: 1;
|
|
16
|
+
color: #555;
|
|
17
|
+
}
|
|
18
|
+
.schema-meta-toggle::before {
|
|
19
|
+
content: "\24D8"; /* ⓘ */
|
|
20
|
+
}
|
|
21
|
+
.schema-meta-table {
|
|
22
|
+
border-collapse: collapse;
|
|
23
|
+
margin-block-start: 0.25em;
|
|
24
|
+
font-size: 0.85em;
|
|
25
|
+
}
|
|
26
|
+
.schema-meta-table th,
|
|
27
|
+
.schema-meta-table td {
|
|
28
|
+
border: 1px solid #ccc;
|
|
29
|
+
padding: 1px 4px;
|
|
30
|
+
text-align: start;
|
|
31
|
+
vertical-align: top;
|
|
32
|
+
}
|
|
33
|
+
.schema-meta-table th {
|
|
34
|
+
font-weight: bold;
|
|
35
|
+
white-space: nowrap;
|
|
36
|
+
}
|
|
37
|
+
/* Deprecation. `.schema-deprecated` lands on the type root, whose element and
|
|
38
|
+
internal label placement vary too much for a reliable CSS strike-through, so
|
|
39
|
+
the consistent signal is on the always-present metadata toggle: a muted-red
|
|
40
|
+
glyph with a "deprecated" tag. Where the root itself is an inline label
|
|
41
|
+
element, also strike it. */
|
|
42
|
+
.schema-deprecated > .schema-meta .schema-meta-toggle {
|
|
43
|
+
color: #b00020;
|
|
44
|
+
}
|
|
45
|
+
.schema-deprecated > .schema-meta .schema-meta-toggle::after {
|
|
46
|
+
content: " deprecated";
|
|
47
|
+
font-size: 0.85em;
|
|
48
|
+
font-style: italic;
|
|
49
|
+
}
|
|
50
|
+
/* Struck through where the class lands on an element that is itself a label:
|
|
51
|
+
an inline type root (viewUI leaf) or a property/item `<legend>` (editUI). */
|
|
52
|
+
span.schema-deprecated,
|
|
53
|
+
b.schema-deprecated,
|
|
54
|
+
i.schema-deprecated,
|
|
55
|
+
legend.schema-deprecated {
|
|
56
|
+
text-decoration: line-through;
|
|
57
|
+
}
|
|
58
|
+
.schema-deprecated > .schema-meta {
|
|
59
|
+
text-decoration: none;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* `xor` (exclusive union) type choices: a "choose exactly one" radio list */
|
|
63
|
+
fieldset.xorTypeChoices {
|
|
64
|
+
display: inline-block;
|
|
65
|
+
margin: 0;
|
|
66
|
+
margin-top: .5em;
|
|
67
|
+
margin-bottom: .5em;
|
|
68
|
+
padding: 0.3em 0.6em 0.4em;
|
|
69
|
+
border: 1px solid #ccc;
|
|
70
|
+
border-radius: 4px;
|
|
71
|
+
vertical-align: top;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
fieldset.xorTypeChoices > legend.xorTypeChoicesLegend {
|
|
75
|
+
padding: 0 0.3em;
|
|
76
|
+
font-size: 0.8em;
|
|
77
|
+
text-transform: uppercase;
|
|
78
|
+
letter-spacing: 0.05em;
|
|
79
|
+
color: white;
|
|
80
|
+
background-color: gray;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
fieldset.xorTypeChoices label.xorTypeChoice {
|
|
84
|
+
display: flex;
|
|
85
|
+
align-items: baseline;
|
|
86
|
+
gap: 0.4em;
|
|
87
|
+
padding: 0.15em 0;
|
|
88
|
+
cursor: pointer;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
fieldset.xorTypeChoices label.xorTypeChoice > input {
|
|
92
|
+
flex: none;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* Live "N of M branches match" indicator; `xor` needs exactly one */
|
|
96
|
+
fieldset.xorTypeChoices .xorMatchStatus {
|
|
97
|
+
margin-top: 0.3em;
|
|
98
|
+
font-size: 0.85em;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
fieldset.xorTypeChoices .xorMatchStatus.xorMatchOk {
|
|
102
|
+
color: #2e7d32;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
fieldset.xorTypeChoices .xorMatchStatus.xorMatchErr {
|
|
106
|
+
color: #c62828;
|
|
107
|
+
}
|
|
108
|
+
|
|
5
109
|
b.emphasis {
|
|
6
110
|
text-decoration: underline;
|
|
7
111
|
}
|
|
@@ -43,7 +147,7 @@ video.recordedMedia {
|
|
|
43
147
|
background-color: 1px solid pink !important;
|
|
44
148
|
}
|
|
45
149
|
|
|
46
|
-
[data-type="undef"]
|
|
150
|
+
[data-type="undef"] {
|
|
47
151
|
background-color: green;
|
|
48
152
|
}
|
|
49
153
|
[data-type="null"] {
|
|
@@ -76,10 +180,6 @@ video.recordedMedia {
|
|
|
76
180
|
background-color: orange;
|
|
77
181
|
}
|
|
78
182
|
|
|
79
|
-
[data-type="literal"] {
|
|
80
|
-
background-color: lightblue;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
183
|
[data-type="symbol"] {
|
|
84
184
|
background-color: lightgreen;
|
|
85
185
|
}
|
|
@@ -139,11 +239,10 @@ video.recordedMedia {
|
|
|
139
239
|
|
|
140
240
|
[data-type="map"], [data-type="set"],
|
|
141
241
|
[data-type="bigint"], [data-type="bigintObject"],
|
|
142
|
-
[data-type="
|
|
242
|
+
[data-type="domexception"],
|
|
143
243
|
[data-type="resurrectable"], /* i.e., `noneditable` */
|
|
144
244
|
[data-type="domrect"], [data-type="dompoint"],
|
|
145
|
-
[data-type="dommatrix"]
|
|
146
|
-
[data-type="catch"], [data-type="enum"], [data-type="nativeEnum"] {
|
|
245
|
+
[data-type="dommatrix"] {
|
|
147
246
|
background-color: lightgray;
|
|
148
247
|
}
|
|
149
248
|
|