@es-joy/jsoe 0.24.3 → 0.25.1
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 +51 -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 +399 -54
- 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,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Typeson, unescapeKeyPathComponent,
|
|
2
|
+
Typeson, unescapeKeyPathComponent, structuredCloningForStorage,
|
|
3
3
|
resurrectable as noneditable, symbol, promise, toStringTag
|
|
4
4
|
} from '../vendor-imports.js';
|
|
5
5
|
|
|
@@ -7,9 +7,58 @@ import {buildTypeChoices} from '../typeChoices.js';
|
|
|
7
7
|
import {
|
|
8
8
|
typesonPathToJSONPointer
|
|
9
9
|
} from '../utils/jsonPointer.js';
|
|
10
|
+
import {tick} from '../utils/timing.js';
|
|
10
11
|
|
|
11
12
|
import json from './json.js';
|
|
12
13
|
|
|
14
|
+
/** @type {import('typeson').TypeSpecSet} */
|
|
15
|
+
export const functionSpec = {
|
|
16
|
+
function: {
|
|
17
|
+
test (x) {
|
|
18
|
+
return typeof x === 'function';
|
|
19
|
+
},
|
|
20
|
+
replace (funcType) {
|
|
21
|
+
return '(' + funcType.toString() + ')';
|
|
22
|
+
},
|
|
23
|
+
revive (o) {
|
|
24
|
+
// eslint-disable-next-line no-eval -- User opted in
|
|
25
|
+
return eval(o);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const structuredCloningJsoe = structuredCloningForStorage.filter(
|
|
31
|
+
(typeSpecSet) => {
|
|
32
|
+
return [
|
|
33
|
+
// Not yet supported within JSOE
|
|
34
|
+
'imagedata',
|
|
35
|
+
'imagebitmap',
|
|
36
|
+
'domquad',
|
|
37
|
+
'quotaexceedederror',
|
|
38
|
+
'webtransporterror',
|
|
39
|
+
'cryptokey',
|
|
40
|
+
'audiodata',
|
|
41
|
+
'encodedaudiochunk',
|
|
42
|
+
'encodedvideochunk',
|
|
43
|
+
'videoframe'
|
|
44
|
+
].every((prop) => {
|
|
45
|
+
return !Object.hasOwn(typeSpecSet, prop);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* A deferred child build registers its own element in `parents` only once its
|
|
52
|
+
* own build has run. A deeper node's build can wake on the same tick and find
|
|
53
|
+
* its parent not yet registered (async-replaced parents such as `file`,
|
|
54
|
+
* `promise` or `blob` also push their builds out of depth order). Rather than
|
|
55
|
+
* dropping such a node, its build re-checks `parents` across this many ticks
|
|
56
|
+
* before concluding the parent genuinely does not exist (e.g. a value that was
|
|
57
|
+
* promoted to the root UI).
|
|
58
|
+
* @type {number}
|
|
59
|
+
*/
|
|
60
|
+
const MAX_PARENT_WAIT_TICKS = 50;
|
|
61
|
+
|
|
13
62
|
// We modify resurrectable in hopes an including application doesn't need it
|
|
14
63
|
/** @type {import('typeson').TypeSpecSet} */ (
|
|
15
64
|
noneditable.resurrectable
|
|
@@ -53,6 +102,11 @@ const encapsulateObserver = (stateObj) => {
|
|
|
53
102
|
|
|
54
103
|
const format = /** @type {import('../formats.js').AvailableFormat} */ (frmt);
|
|
55
104
|
|
|
105
|
+
// Collects each deferred per-node UI build. `iterate` does not await these
|
|
106
|
+
// (see the comment there); a caller that needs the fully-populated tree
|
|
107
|
+
// awaits `stateObj.whenBuilt` after it has attached `rootUI`.
|
|
108
|
+
const pendingBuilds = (stateObj.pendingBuilds ||= []);
|
|
109
|
+
|
|
56
110
|
/**
|
|
57
111
|
* Matches keypaths to the HTML UI Element.
|
|
58
112
|
* @type {{[key: string]: HTMLElement & {
|
|
@@ -63,7 +117,10 @@ const encapsulateObserver = (stateObj) => {
|
|
|
63
117
|
|
|
64
118
|
/**
|
|
65
119
|
* @type {{
|
|
66
|
-
* [key: string]: [
|
|
120
|
+
* [key: string]: [
|
|
121
|
+
* import('zodexy').SzType,
|
|
122
|
+
* number|undefined
|
|
123
|
+
* ]|undefined
|
|
67
124
|
* }}
|
|
68
125
|
*/
|
|
69
126
|
const schemaParents = {};
|
|
@@ -71,6 +128,9 @@ const encapsulateObserver = (stateObj) => {
|
|
|
71
128
|
/** @type {string[]} */
|
|
72
129
|
const mapPaths = [];
|
|
73
130
|
|
|
131
|
+
/** @type {string[]} */
|
|
132
|
+
const atomicPaths = [];
|
|
133
|
+
|
|
74
134
|
return (observerObj) => {
|
|
75
135
|
const {
|
|
76
136
|
type,
|
|
@@ -84,6 +144,13 @@ const encapsulateObserver = (stateObj) => {
|
|
|
84
144
|
endIterateUnsetNumeric,
|
|
85
145
|
clone
|
|
86
146
|
} = observerObj;
|
|
147
|
+
if (atomicPaths.some((atomicPath) => {
|
|
148
|
+
return atomicPath === ''
|
|
149
|
+
? keypath !== ''
|
|
150
|
+
: keypath.startsWith(`${atomicPath}.`);
|
|
151
|
+
})) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
87
154
|
if ('replaced' in observerObj) {
|
|
88
155
|
return;
|
|
89
156
|
}
|
|
@@ -104,7 +171,7 @@ const encapsulateObserver = (stateObj) => {
|
|
|
104
171
|
|
|
105
172
|
// What other situations is this firing twice, and it
|
|
106
173
|
// shouldn't reach here?
|
|
107
|
-
if (
|
|
174
|
+
if (type === 'negativeZero' && observerObj.replacing) {
|
|
108
175
|
return;
|
|
109
176
|
}
|
|
110
177
|
|
|
@@ -172,17 +239,20 @@ const encapsulateObserver = (stateObj) => {
|
|
|
172
239
|
// console.log('VVVV2',
|
|
173
240
|
// JSON.stringify(stateObj.schemaContent, null, 2));
|
|
174
241
|
} catch (err) {
|
|
175
|
-
console.log('err', type, err);
|
|
242
|
+
console.log('err', type, err, value);
|
|
176
243
|
stateObj.error = /** @type {Error} */ (err);
|
|
177
244
|
return;
|
|
178
245
|
}
|
|
179
246
|
}
|
|
180
247
|
|
|
181
248
|
const hasChildren = [
|
|
182
|
-
'array', 'object', 'set', 'map', '
|
|
249
|
+
'array', 'object', 'set', 'map', 'filelist',
|
|
183
250
|
// 'sparseArrays',
|
|
184
251
|
'arrayNonindexKeys'
|
|
185
252
|
].includes(newType);
|
|
253
|
+
if (type === 'symbol' || type === 'file') {
|
|
254
|
+
atomicPaths.push(keypath);
|
|
255
|
+
}
|
|
186
256
|
|
|
187
257
|
// Maps are followed up by arrays which we don't want as such;
|
|
188
258
|
// we track the paths to avoid reporting these child arrays
|
|
@@ -222,9 +292,9 @@ const encapsulateObserver = (stateObj) => {
|
|
|
222
292
|
replaced
|
|
223
293
|
});
|
|
224
294
|
parents[''] = /**
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
295
|
+
* @type {HTMLElement &
|
|
296
|
+
* {$addAndSetArrayElement: AddAndSetArrayElement}}
|
|
297
|
+
*/ (stateObj.rootUI);
|
|
228
298
|
|
|
229
299
|
if (schema) {
|
|
230
300
|
schemaParents[''] = [schema, schemaIdx];
|
|
@@ -236,9 +306,9 @@ const encapsulateObserver = (stateObj) => {
|
|
|
236
306
|
if (mapType) {
|
|
237
307
|
/** @type {Map<any, any>} */ [...value].forEach((_, i) => {
|
|
238
308
|
parents[i] = /**
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
309
|
+
* @type {HTMLElement &
|
|
310
|
+
* {$addAndSetArrayElement: AddAndSetArrayElement}}
|
|
311
|
+
*/ (stateObj.rootUI);
|
|
242
312
|
});
|
|
243
313
|
}
|
|
244
314
|
return;
|
|
@@ -252,20 +322,47 @@ const encapsulateObserver = (stateObj) => {
|
|
|
252
322
|
// schema, schemaParents
|
|
253
323
|
// );
|
|
254
324
|
|
|
255
|
-
// Todo (low): If could be async, use async encapsulate method
|
|
256
325
|
// Todo (low): Handle `awaitingTypesonPromise` with place-holder
|
|
257
326
|
// Todo (low): Handle `resolvingTypesonPromise` to replace place-holder
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
//
|
|
267
|
-
//
|
|
327
|
+
//
|
|
328
|
+
// Each node's UI build is deferred a tick (the parent element is not yet in
|
|
329
|
+
// the document when the observer fires). The build now awaits its own
|
|
330
|
+
// `setValue` before `validate` (previously `validate` ran synchronously
|
|
331
|
+
// against a half-built DOM and threw). Each build promise is collected on
|
|
332
|
+
// `stateObj.pendingBuilds` for a caller that wants to await the fully
|
|
333
|
+
// populated tree; `iterate` itself does not await them (see below).
|
|
334
|
+
pendingBuilds.push((async () => {
|
|
335
|
+
// Defer one tick so the caller has attached `rootUI` (connection-dependent
|
|
336
|
+
// init such as `blobHTML`/SCEditor relies on being in the document).
|
|
337
|
+
await tick();
|
|
338
|
+
// Then wait for this node's parent UI to be registered in `parents`. A
|
|
339
|
+
// parent registers itself only after its own build runs, and
|
|
340
|
+
// async-replaced parents (`file`/`promise`/`blob`) push their builds out
|
|
341
|
+
// of depth order, so a child can still arrive first; re-check across
|
|
342
|
+
// ticks instead of dropping the node on the first miss.
|
|
343
|
+
// A parent that is genuinely absent (e.g. a converted value promoted to
|
|
344
|
+
// the root UI, as for `regexp`/`blobHTML` at root) never appears; after
|
|
345
|
+
// the bound we give up and record it below rather than hang.
|
|
346
|
+
let ui = parents[parentPath];
|
|
347
|
+
for (
|
|
348
|
+
let waited = 0;
|
|
349
|
+
(!ui || !('$addAndSetArrayElement' in ui)) &&
|
|
350
|
+
waited < MAX_PARENT_WAIT_TICKS;
|
|
351
|
+
waited++
|
|
352
|
+
) {
|
|
353
|
+
// eslint-disable-next-line no-await-in-loop -- Sequential by design
|
|
354
|
+
await tick();
|
|
355
|
+
ui = parents[parentPath];
|
|
356
|
+
}
|
|
268
357
|
if (!ui || !('$addAndSetArrayElement' in ui)) {
|
|
358
|
+
if (!stateObj.buildWarnings) {
|
|
359
|
+
stateObj.buildWarnings = [];
|
|
360
|
+
}
|
|
361
|
+
stateObj.buildWarnings.push({
|
|
362
|
+
keypath,
|
|
363
|
+
type: newType,
|
|
364
|
+
reason: 'no parent UI registered'
|
|
365
|
+
});
|
|
269
366
|
return;
|
|
270
367
|
}
|
|
271
368
|
|
|
@@ -300,28 +397,14 @@ const encapsulateObserver = (stateObj) => {
|
|
|
300
397
|
return;
|
|
301
398
|
}
|
|
302
399
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
// eslint-disable-next-line object-shorthand -- TS
|
|
307
|
-
root: /** @type {HTMLDivElement} */ (root),
|
|
308
|
-
value: newValue
|
|
309
|
-
});
|
|
310
|
-
types?.validate({
|
|
311
|
-
type: newType,
|
|
312
|
-
// eslint-disable-next-line object-shorthand -- TS
|
|
313
|
-
root: /** @type {HTMLDivElement} */ (root),
|
|
314
|
-
topRoot: /** @type {HTMLDivElement} */ (stateObj.rootUI),
|
|
315
|
-
// We don't want focus when values auto-added
|
|
316
|
-
avoidReport: true
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
|
|
400
|
+
// Register this node as a parent for its descendants *before* awaiting
|
|
401
|
+
// `setValue`, so child builds (already past their own `tick`) can find
|
|
402
|
+
// it in `parents`.
|
|
320
403
|
if (hasChildren) {
|
|
321
404
|
parents[keypath] = /**
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
405
|
+
* @type {HTMLElement &
|
|
406
|
+
* {$addAndSetArrayElement: AddAndSetArrayElement}}
|
|
407
|
+
*/ (
|
|
325
408
|
root
|
|
326
409
|
);
|
|
327
410
|
|
|
@@ -331,13 +414,44 @@ const encapsulateObserver = (stateObj) => {
|
|
|
331
414
|
if (mapType) {
|
|
332
415
|
/** @type {Map<any, any>} */ [...value].forEach((_, i) => {
|
|
333
416
|
parents[`${keypath}.${i}`] = /**
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
417
|
+
* @type {HTMLElement &
|
|
418
|
+
* {$addAndSetArrayElement: AddAndSetArrayElement}}
|
|
419
|
+
*/ (root);
|
|
337
420
|
});
|
|
338
421
|
}
|
|
339
422
|
}
|
|
340
|
-
|
|
423
|
+
|
|
424
|
+
if (!readonly) {
|
|
425
|
+
await types?.setValue({
|
|
426
|
+
type: newType,
|
|
427
|
+
root: /** @type {HTMLDivElement} */ (root),
|
|
428
|
+
value: newValue
|
|
429
|
+
});
|
|
430
|
+
types?.validate({
|
|
431
|
+
type: newType,
|
|
432
|
+
root: /** @type {HTMLDivElement} */ (root),
|
|
433
|
+
topRoot: /** @type {HTMLDivElement} */ (stateObj.rootUI),
|
|
434
|
+
// We don't want focus when values auto-added
|
|
435
|
+
avoidReport: true
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
// eslint-disable-next-line promise/prefer-await-to-then, promise/prefer-await-to-callbacks -- Convenient
|
|
439
|
+
})().catch((err) => {
|
|
440
|
+
// Auto-population is best-effort: a node whose deferred UI is still
|
|
441
|
+
// settling (its guard throws `'Not yet instantiated'`) or a transient
|
|
442
|
+
// build hiccup must not surface as an unhandled rejection. Genuine
|
|
443
|
+
// schema/type errors are still reported via `stateObj.error`. Record
|
|
444
|
+
// what was dropped so a caller (or test) can assert the tree built
|
|
445
|
+
// fully instead of the failure being wholly invisible.
|
|
446
|
+
if (!stateObj.buildWarnings) {
|
|
447
|
+
stateObj.buildWarnings = [];
|
|
448
|
+
}
|
|
449
|
+
stateObj.buildWarnings.push({
|
|
450
|
+
keypath,
|
|
451
|
+
type: newType,
|
|
452
|
+
reason: /** @type {Error} */ (err)?.message ?? String(err)
|
|
453
|
+
});
|
|
454
|
+
}));
|
|
341
455
|
};
|
|
342
456
|
};
|
|
343
457
|
|
|
@@ -368,13 +482,16 @@ const replaceTypes = (originTypes, replacements) => {
|
|
|
368
482
|
* @param {import('../formats.js').StructuredCloneValue} v The value being
|
|
369
483
|
* checked.
|
|
370
484
|
* @param {string} arrayOrObjectPropertyName
|
|
371
|
-
* @param {[
|
|
485
|
+
* @param {[
|
|
486
|
+
* import('zodexy').SzType,
|
|
487
|
+
* number|undefined
|
|
488
|
+
* ]|undefined} parentSchema
|
|
372
489
|
* @param {import('../types.js').StateObject} stateObj The schema content
|
|
373
490
|
* being checked.
|
|
374
491
|
* @throws {Error} May throw if data found to be invalid.
|
|
375
492
|
* @returns {{
|
|
376
493
|
* newType: import('../types.js').AvailableArbitraryType,
|
|
377
|
-
* schema?: import('
|
|
494
|
+
* schema?: import('zodexy').SzType|undefined,
|
|
378
495
|
* mustBeOptional?: boolean,
|
|
379
496
|
* schemaIdx?: number
|
|
380
497
|
* }} Schema and type info.
|
|
@@ -392,6 +509,9 @@ const canonicalTypeToAvailableTypeAndSchema = (
|
|
|
392
509
|
if (!allowableTypes) {
|
|
393
510
|
throw new Error('Unexpected undefined type for state');
|
|
394
511
|
}
|
|
512
|
+
if (valType === 'array' && allowableTypes.includes('arrayNonindexKeys')) {
|
|
513
|
+
valType = 'arrayNonindexKeys';
|
|
514
|
+
}
|
|
395
515
|
|
|
396
516
|
/**
|
|
397
517
|
* @type {import('../types.js').AvailableArbitraryType|undefined}
|
|
@@ -472,7 +592,7 @@ const canonicalTypeToAvailableTypeAndSchema = (
|
|
|
472
592
|
return false;
|
|
473
593
|
});
|
|
474
594
|
if (ret === undefined) {
|
|
475
|
-
console.log('AALLLowableTypes', state, allowableTypes, '::', valType);
|
|
595
|
+
console.log('AALLLowableTypes', state, allowableTypes, '::', valType, v);
|
|
476
596
|
return isInvalid(valType);
|
|
477
597
|
}
|
|
478
598
|
}
|
|
@@ -490,20 +610,7 @@ const structuredCloning = {
|
|
|
490
610
|
stateObj.format = 'structuredCloning';
|
|
491
611
|
}
|
|
492
612
|
|
|
493
|
-
|
|
494
|
-
(typeSpecSet) => {
|
|
495
|
-
return ![
|
|
496
|
-
// Not yet supported within JSOE
|
|
497
|
-
'imagedata',
|
|
498
|
-
'imagebitmap',
|
|
499
|
-
'cryptokey',
|
|
500
|
-
'domquad'
|
|
501
|
-
].some((prop) => {
|
|
502
|
-
return Object.hasOwn(typeSpecSet, prop);
|
|
503
|
-
});
|
|
504
|
-
}
|
|
505
|
-
);
|
|
506
|
-
structuredCloningFixed.splice(
|
|
613
|
+
structuredCloningJsoe.splice(
|
|
507
614
|
// Add after userObjects
|
|
508
615
|
1,
|
|
509
616
|
0,
|
|
@@ -520,31 +627,34 @@ const structuredCloning = {
|
|
|
520
627
|
// to regular demo and test; add tests
|
|
521
628
|
stateObj.format === 'schema'
|
|
522
629
|
? [
|
|
523
|
-
...
|
|
630
|
+
...structuredCloningJsoe,
|
|
524
631
|
symbol,
|
|
525
632
|
promise,
|
|
526
|
-
|
|
527
|
-
function: {
|
|
528
|
-
test (x) {
|
|
529
|
-
return typeof x === 'function';
|
|
530
|
-
},
|
|
531
|
-
replace (funcType) {
|
|
532
|
-
return '(' + funcType.toString() + ')';
|
|
533
|
-
},
|
|
534
|
-
revive (o) {
|
|
535
|
-
// eslint-disable-next-line no-eval -- User opted in
|
|
536
|
-
return eval(o);
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
}
|
|
633
|
+
functionSpec
|
|
540
634
|
]
|
|
541
|
-
:
|
|
635
|
+
: structuredCloningJsoe
|
|
542
636
|
);
|
|
543
637
|
|
|
544
638
|
await typeson.encapsulateAsync(records, null, {
|
|
545
639
|
throwOnBadSyncType: false
|
|
546
640
|
});
|
|
547
641
|
|
|
642
|
+
// The per-node builds run themselves (each is a self-executing async IIFE)
|
|
643
|
+
// a tick later, once the caller has connected `rootUI`; the race that
|
|
644
|
+
// used to crash — a node's synchronous `validate` running before its
|
|
645
|
+
// asynchronous `setValue` had built the DOM — is fixed inside each build,
|
|
646
|
+
// which now awaits `setValue` before `validate`, and a build no longer
|
|
647
|
+
// drops itself when its parent is a tick behind (it re-checks `parents`
|
|
648
|
+
// up to `MAX_PARENT_WAIT_TICKS`). We deliberately do not await the builds
|
|
649
|
+
// here: blocking the return re-orders deferred, connection-dependent init
|
|
650
|
+
// (e.g. `blobHTML`/SCEditor) ahead of the caller attaching `rootUI`.
|
|
651
|
+
// Instead `stateObj.whenBuilt` resolves once every build has settled, for
|
|
652
|
+
// a caller (or test) that needs the fully-populated tree; anything a
|
|
653
|
+
// build could not attach is listed on `stateObj.buildWarnings`.
|
|
654
|
+
stateObj.whenBuilt = (async () => {
|
|
655
|
+
await Promise.allSettled(stateObj.pendingBuilds ?? []);
|
|
656
|
+
})();
|
|
657
|
+
|
|
548
658
|
if (stateObj.error) {
|
|
549
659
|
throw stateObj.error;
|
|
550
660
|
}
|
package/src/formats.js
CHANGED
|
@@ -24,15 +24,15 @@ import schema from './formats/schema.js';
|
|
|
24
24
|
/* schema:
|
|
25
25
|
export const getTypeForFormatStateAndValue = ({format, state, value}) => {
|
|
26
26
|
const valType = new Typeson().register(
|
|
27
|
-
|
|
27
|
+
structuredCloningForStorage
|
|
28
28
|
).rootTypeName(value);
|
|
29
29
|
return canonicalToAvailableType(format, state, valType, value);
|
|
30
30
|
};
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* @typedef {"indexedDBKey"|"json"|"structuredCloning"
|
|
35
|
-
* "arbitraryJS"|"schema"} AvailableFormat
|
|
34
|
+
* @typedef {"indexedDBKey"|"json"|"structuredCloning"
|
|
35
|
+
* |"arbitraryJS"|"schema"} AvailableFormat
|
|
36
36
|
*/
|
|
37
37
|
|
|
38
38
|
/**
|
|
@@ -77,14 +77,26 @@ export const getTypeForFormatStateAndValue = ({format, state, value}) => {
|
|
|
77
77
|
* types: import('./types.js').default,
|
|
78
78
|
* v?: import('./formats.js').StructuredCloneValue,
|
|
79
79
|
* arrayOrObjectPropertyName?: string,
|
|
80
|
-
* parentSchema?: [
|
|
80
|
+
* parentSchema?: [
|
|
81
|
+
* import('zodexy').SzType,
|
|
82
|
+
* number|undefined
|
|
83
|
+
* ]|undefined,
|
|
81
84
|
* stateObj?: import('./types.js').StateObject,
|
|
82
85
|
* ) => {
|
|
83
86
|
* type: import('./types.js').AvailableArbitraryType|undefined
|
|
84
|
-
* schema?: import('
|
|
87
|
+
* schema?: import('zodexy').SzType|undefined,
|
|
85
88
|
* mustBeOptional?: boolean,
|
|
86
89
|
* schemaIdx?: number
|
|
87
90
|
* }} [convertFromTypeson]
|
|
91
|
+
* @property {(
|
|
92
|
+
* types: import('./types.js').default,
|
|
93
|
+
* schemaObject: import('./formatAndTypeChoices.js').ZodexSchema,
|
|
94
|
+
* value: StructuredCloneValue
|
|
95
|
+
* ) => {valid: boolean, message?: string,
|
|
96
|
+
* schema?: import('./formats/schema.js').ZodexSchema}} [validateValue]
|
|
97
|
+
* @property {(
|
|
98
|
+
* schemaObject: import('./formats/schema.js').ZodexSchema
|
|
99
|
+
* ) => boolean} [isValueValidationRequired]
|
|
88
100
|
*/
|
|
89
101
|
|
|
90
102
|
/**
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {toStringTag} from '../vendor-imports.js';
|
|
2
2
|
import {$e, $$e} from '../utils/templateUtils.js';
|
|
3
|
+
import {schemaLabel} from '../utils/schemaMeta.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* @type {import('../types.js').TypeObject & {ct: number}}
|
|
@@ -12,7 +13,6 @@ const BooleanObjectType = {
|
|
|
12
13
|
},
|
|
13
14
|
toValue (s) {
|
|
14
15
|
return {
|
|
15
|
-
// eslint-disable-next-line @stylistic/max-len -- Long
|
|
16
16
|
// eslint-disable-next-line no-new-wrappers, unicorn/new-for-builtins -- Deliberate creation here
|
|
17
17
|
value: new Boolean(s === 'true')
|
|
18
18
|
};
|
|
@@ -35,19 +35,18 @@ const BooleanObjectType = {
|
|
|
35
35
|
viewUI ({value, specificSchemaObject}) {
|
|
36
36
|
return ['i', {
|
|
37
37
|
dataset: {type: 'BooleanObject'},
|
|
38
|
-
title: specificSchemaObject
|
|
39
|
-
}, [specificSchemaObject ?
|
|
38
|
+
title: schemaLabel(specificSchemaObject) ?? '(a Boolean Object)'
|
|
39
|
+
}, [specificSchemaObject ? String(value) : `Boolean(${value})`]];
|
|
40
40
|
},
|
|
41
41
|
ct: 0,
|
|
42
42
|
editUI ({
|
|
43
|
-
// eslint-disable-next-line @stylistic/max-len -- Long
|
|
44
43
|
// eslint-disable-next-line no-new-wrappers, unicorn/new-for-builtins -- Deliberate creation here
|
|
45
44
|
typeNamespace, specificSchemaObject, value = new Boolean(true)
|
|
46
45
|
}) {
|
|
47
46
|
this.ct++;
|
|
48
47
|
return ['div', {
|
|
49
48
|
dataset: {type: 'BooleanObject'},
|
|
50
|
-
title: specificSchemaObject
|
|
49
|
+
title: schemaLabel(specificSchemaObject) ?? 'Boolean object'
|
|
51
50
|
}, [
|
|
52
51
|
['label', [
|
|
53
52
|
'True',
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {toStringTag} from '../vendor-imports.js';
|
|
2
2
|
import {$e} from '../utils/templateUtils.js';
|
|
3
|
+
import {schemaLabel} from '../utils/schemaMeta.js';
|
|
3
4
|
import numberType from './numberType.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -12,7 +13,6 @@ const NumberObjectType = {
|
|
|
12
13
|
return toStringTag(x) === 'Number' && typeof x === 'object';
|
|
13
14
|
},
|
|
14
15
|
toValue (s) {
|
|
15
|
-
// eslint-disable-next-line @stylistic/max-len -- Long
|
|
16
16
|
// eslint-disable-next-line no-new-wrappers, unicorn/new-for-builtins -- Deliberate creation here
|
|
17
17
|
return {value: new Number(s)};
|
|
18
18
|
},
|
|
@@ -35,15 +35,15 @@ const NumberObjectType = {
|
|
|
35
35
|
viewUI ({value, specificSchemaObject}) {
|
|
36
36
|
return ['i', {
|
|
37
37
|
dataset: {type: 'NumberObject'},
|
|
38
|
-
title: specificSchemaObject
|
|
38
|
+
title: schemaLabel(specificSchemaObject) ?? '(a Number Object)'
|
|
39
39
|
}, [
|
|
40
|
-
specificSchemaObject ?
|
|
40
|
+
specificSchemaObject ? String(value) : `Number(${value})`
|
|
41
41
|
]];
|
|
42
42
|
},
|
|
43
43
|
editUI ({typeNamespace, specificSchemaObject, value}) {
|
|
44
44
|
return ['div', {
|
|
45
45
|
dataset: {type: 'NumberObject'},
|
|
46
|
-
title: specificSchemaObject
|
|
46
|
+
title: schemaLabel(specificSchemaObject) ?? 'Number object'
|
|
47
47
|
}, [
|
|
48
48
|
['input', {
|
|
49
49
|
name: `${typeNamespace}-NumberObject`,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {toStringTag} from '../vendor-imports.js';
|
|
2
2
|
import {$e} from '../utils/templateUtils.js';
|
|
3
|
+
import {schemaLabel} from '../utils/schemaMeta.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* @type {import('../types.js').TypeObject}
|
|
@@ -10,10 +11,8 @@ const StringObjectType = {
|
|
|
10
11
|
return toStringTag(x) === 'String' && typeof x === 'object';
|
|
11
12
|
},
|
|
12
13
|
toValue (s) {
|
|
13
|
-
// eslint-disable-next-line @stylistic/max-len -- Long
|
|
14
14
|
/* eslint-disable no-new-wrappers, unicorn/new-for-builtins -- Deliberate creation here */
|
|
15
15
|
return {value: new String(s)};
|
|
16
|
-
// eslint-disable-next-line @stylistic/max-len -- Long
|
|
17
16
|
/* eslint-enable no-new-wrappers, unicorn/new-for-builtins -- Deliberate creation here */
|
|
18
17
|
},
|
|
19
18
|
option: ['StringObject'],
|
|
@@ -31,7 +30,7 @@ const StringObjectType = {
|
|
|
31
30
|
viewUI ({value, specificSchemaObject}) {
|
|
32
31
|
return ['span', {
|
|
33
32
|
dataset: {type: 'StringObject'},
|
|
34
|
-
title: specificSchemaObject
|
|
33
|
+
title: schemaLabel(specificSchemaObject) ?? '(a String Object)'
|
|
35
34
|
}, [
|
|
36
35
|
specificSchemaObject ? '' : ['i', ['String(']],
|
|
37
36
|
['span', [value.valueOf()]],
|
|
@@ -41,7 +40,7 @@ const StringObjectType = {
|
|
|
41
40
|
editUI ({typeNamespace, specificSchemaObject, value = ''}) {
|
|
42
41
|
return ['div', {
|
|
43
42
|
dataset: {type: 'StringObject'},
|
|
44
|
-
title: specificSchemaObject
|
|
43
|
+
title: schemaLabel(specificSchemaObject) ?? 'String object'
|
|
45
44
|
}, [
|
|
46
45
|
['textarea', {name: `${typeNamespace}-StringObject`}, [value]]
|
|
47
46
|
]];
|
|
@@ -47,7 +47,6 @@ const arrayReferenceType = {
|
|
|
47
47
|
},
|
|
48
48
|
getValue ({root, stateObj, currentPath}) {
|
|
49
49
|
const referentPath = this.getInput({root}).value;
|
|
50
|
-
// eslint-disable-next-line @stylistic/max-len -- Long
|
|
51
50
|
/* istanbul ignore else -- ArrayRef will not be a root, so should have stateObj */
|
|
52
51
|
if (stateObj) {
|
|
53
52
|
if (!stateObj.paths) {
|
|
@@ -186,7 +185,6 @@ const arrayReferenceType = {
|
|
|
186
185
|
$$e(topRoot, `div[data-type="${type}"]`).forEach((root) => {
|
|
187
186
|
types.validate({
|
|
188
187
|
type,
|
|
189
|
-
// eslint-disable-next-line object-shorthand -- TS
|
|
190
188
|
root: /** @type {HTMLDivElement} */ (root),
|
|
191
189
|
topRoot
|
|
192
190
|
});
|