@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,5 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
jml, toStringTag, mimeStandardTypes, mimeOtherTypes
|
|
3
|
+
} from '../vendor-imports.js';
|
|
2
4
|
import {$e} from '../utils/templateUtils.js';
|
|
5
|
+
import {schemaLabel} from '../utils/schemaMeta.js';
|
|
3
6
|
import {visualize, getUserMedia, startScreenCapture} from '../utils/media.js';
|
|
4
7
|
import dialogs from '../utils/dialogs.js';
|
|
5
8
|
|
|
@@ -14,6 +17,68 @@ import dialogs from '../utils/dialogs.js';
|
|
|
14
17
|
* @typedef {(file: FileInfo) => void} SetValue
|
|
15
18
|
*/
|
|
16
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @typedef {HTMLButtonElement & {
|
|
22
|
+
* $value?: File,
|
|
23
|
+
* $min?: number,
|
|
24
|
+
* $max?: number,
|
|
25
|
+
* $mime?: string[]
|
|
26
|
+
* }} FileButton
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
const commonMimeTypes = [...new Set([
|
|
30
|
+
...Object.keys(mimeStandardTypes),
|
|
31
|
+
...Object.keys(mimeOtherTypes)
|
|
32
|
+
])].toSorted((a, b) => {
|
|
33
|
+
return a.localeCompare(b);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
let fileContentTypeListId = 0;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @param {number} size
|
|
40
|
+
* @param {number} [min]
|
|
41
|
+
* @param {number} [max]
|
|
42
|
+
* @returns {string|null}
|
|
43
|
+
*/
|
|
44
|
+
function checkFileSize (size, min, max) {
|
|
45
|
+
if (min !== undefined && size < min) {
|
|
46
|
+
return `File size (${size} bytes) is below the minimum of ${min} bytes`;
|
|
47
|
+
}
|
|
48
|
+
if (max !== undefined && size > max) {
|
|
49
|
+
return `File size (${size} bytes) exceeds the maximum of ${max} bytes`;
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @param {string} type
|
|
56
|
+
* @param {string[]} [mime]
|
|
57
|
+
* @returns {string|null}
|
|
58
|
+
*/
|
|
59
|
+
function checkFileMimeType (type, mime) {
|
|
60
|
+
if (mime && mime.length > 0 && !mime.includes(type)) {
|
|
61
|
+
return `File type (${type || '(none)'}) is not among the allowed ` +
|
|
62
|
+
`MIME types: ${mime.join(', ')}`;
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @param {File|undefined} file
|
|
69
|
+
* @param {number} [min]
|
|
70
|
+
* @param {number} [max]
|
|
71
|
+
* @param {string[]} [mime]
|
|
72
|
+
* @returns {string|null}
|
|
73
|
+
*/
|
|
74
|
+
function checkFile (file, min, max, mime) {
|
|
75
|
+
if (!file) {
|
|
76
|
+
return 'File data is required';
|
|
77
|
+
}
|
|
78
|
+
return checkFileSize(file.size, min, max) ??
|
|
79
|
+
checkFileMimeType(file.type, mime);
|
|
80
|
+
}
|
|
81
|
+
|
|
17
82
|
/**
|
|
18
83
|
* @param {number} timestamp
|
|
19
84
|
* @returns {string}
|
|
@@ -36,9 +101,9 @@ function getDateString (timestamp) {
|
|
|
36
101
|
* type?: string,
|
|
37
102
|
* lastModified?: number
|
|
38
103
|
* }} value
|
|
39
|
-
* @returns {
|
|
104
|
+
* @returns {File}
|
|
40
105
|
*/
|
|
41
|
-
function
|
|
106
|
+
function createFileForBinary (viewBinary, value) {
|
|
42
107
|
const oldFile = /** @type {File|undefined} */ (
|
|
43
108
|
viewBinary.$value
|
|
44
109
|
);
|
|
@@ -73,33 +138,55 @@ function newFileForBinary (viewBinary, value) {
|
|
|
73
138
|
: value.lastModified
|
|
74
139
|
}
|
|
75
140
|
);
|
|
141
|
+
return file;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @param {HTMLButtonElement & {$value: File}} viewBinary
|
|
146
|
+
* @param {Parameters<typeof createFileForBinary>[1]} value
|
|
147
|
+
* @returns {File}
|
|
148
|
+
*/
|
|
149
|
+
function newFileForBinary (viewBinary, value) {
|
|
150
|
+
const file = createFileForBinary(viewBinary, value);
|
|
76
151
|
viewBinary.$value = file;
|
|
152
|
+
return file;
|
|
77
153
|
}
|
|
78
154
|
|
|
79
155
|
/**
|
|
80
156
|
* @param {File} value
|
|
81
157
|
* @param {boolean} [editable]
|
|
158
|
+
* @param {number} [min]
|
|
159
|
+
* @param {number} [max]
|
|
160
|
+
* @param {string[]} [mime]
|
|
161
|
+
* @param {(message: string) => string|null|undefined} [getValidationMessage]
|
|
82
162
|
* @returns {import('jamilih').JamilihArray}
|
|
83
163
|
*/
|
|
84
|
-
function binaryButton (
|
|
85
|
-
|
|
86
|
-
|
|
164
|
+
function binaryButton (
|
|
165
|
+
value, editable, min, max, mime, getValidationMessage
|
|
166
|
+
) {
|
|
167
|
+
return ['button', {
|
|
87
168
|
class: 'viewBinary',
|
|
88
169
|
$custom: {
|
|
89
|
-
$value: value
|
|
170
|
+
$value: value,
|
|
171
|
+
$min: min,
|
|
172
|
+
$max: max,
|
|
173
|
+
$mime: mime
|
|
90
174
|
},
|
|
91
175
|
$on: {
|
|
92
176
|
/**
|
|
93
|
-
* @this {HTMLButtonElement & {$value: File}}
|
|
94
177
|
* @param {Event} e
|
|
95
178
|
*/
|
|
96
179
|
click (e) {
|
|
97
180
|
// eslint-disable-next-line consistent-this -- Clarity
|
|
98
|
-
const viewBinary =
|
|
181
|
+
const viewBinary = /** @type {HTMLButtonElement & {$value: File}} */ (
|
|
182
|
+
this
|
|
183
|
+
);
|
|
99
184
|
e.preventDefault();
|
|
100
185
|
if (
|
|
101
|
-
!
|
|
102
|
-
Object.prototype.toString.call(
|
|
186
|
+
!viewBinary.$value ||
|
|
187
|
+
Object.prototype.toString.call(
|
|
188
|
+
viewBinary.$value
|
|
189
|
+
).slice(8, -1) !== 'File'
|
|
103
190
|
) {
|
|
104
191
|
// Non-editable shouldn't be empty
|
|
105
192
|
// if (!editable) {
|
|
@@ -119,14 +206,27 @@ function binaryButton (value, editable) {
|
|
|
119
206
|
const textarea = /** @type {HTMLTextAreaElement} */ (
|
|
120
207
|
$e(dialog, '.view-binary')
|
|
121
208
|
);
|
|
122
|
-
|
|
209
|
+
const file = createFileForBinary(viewBinary, {
|
|
123
210
|
stringContents: textarea.value
|
|
124
211
|
});
|
|
212
|
+
const message = checkFile(file, min, max, mime);
|
|
213
|
+
if (message) {
|
|
214
|
+
dialogs.alert(getValidationMessage?.(message) ?? message);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
/** @type {HTMLFieldSetElement & {$setValue: SetValue}} */ (
|
|
218
|
+
$e(
|
|
219
|
+
/** @type {HTMLDivElement} */ (
|
|
220
|
+
viewBinary.closest('[data-type="file"]')
|
|
221
|
+
),
|
|
222
|
+
'fieldset.fileMetaData'
|
|
223
|
+
)
|
|
224
|
+
).$setValue(file);
|
|
125
225
|
dialog.close();
|
|
126
226
|
},
|
|
127
227
|
// @ts-expect-error TS bug
|
|
128
228
|
children: [
|
|
129
|
-
['div',
|
|
229
|
+
['div', [
|
|
130
230
|
'Binary source',
|
|
131
231
|
['br'],
|
|
132
232
|
['textarea', {
|
|
@@ -135,7 +235,7 @@ function binaryButton (value, editable) {
|
|
|
135
235
|
/* istanbul ignore next */
|
|
136
236
|
/** @type {string|null} */ (reader.result) ?? ''
|
|
137
237
|
]]
|
|
138
|
-
]
|
|
238
|
+
]]
|
|
139
239
|
]
|
|
140
240
|
});
|
|
141
241
|
});
|
|
@@ -152,10 +252,10 @@ function binaryButton (value, editable) {
|
|
|
152
252
|
));
|
|
153
253
|
}
|
|
154
254
|
);
|
|
155
|
-
reader.readAsBinaryString(
|
|
255
|
+
reader.readAsBinaryString(viewBinary.$value);
|
|
156
256
|
}
|
|
157
257
|
}
|
|
158
|
-
}
|
|
258
|
+
}, [
|
|
159
259
|
editable
|
|
160
260
|
? 'Edit binary data'
|
|
161
261
|
: 'View binary data'
|
|
@@ -171,6 +271,16 @@ const fileType = {
|
|
|
171
271
|
valueMatch (x) {
|
|
172
272
|
return toStringTag(x) === 'File';
|
|
173
273
|
},
|
|
274
|
+
validate ({root}) {
|
|
275
|
+
const viewBinary = /** @type {FileButton} */ (this.getInput({root}));
|
|
276
|
+
const message = checkFile(
|
|
277
|
+
viewBinary.$value,
|
|
278
|
+
viewBinary.$min,
|
|
279
|
+
viewBinary.$max,
|
|
280
|
+
viewBinary.$mime
|
|
281
|
+
);
|
|
282
|
+
return {valid: !message, message: message ?? undefined};
|
|
283
|
+
},
|
|
174
284
|
toValue (s) {
|
|
175
285
|
const obj = JSON.parse(s);
|
|
176
286
|
return {value: new File([obj.stringContents], obj.name, {
|
|
@@ -196,9 +306,9 @@ const fileType = {
|
|
|
196
306
|
return ['div', {dataset: {type: 'file'}}, [
|
|
197
307
|
['b', {
|
|
198
308
|
class: 'emphasis',
|
|
199
|
-
title: specificSchemaObject
|
|
309
|
+
title: schemaLabel(specificSchemaObject) ? '(a File)' : undefined
|
|
200
310
|
}, [
|
|
201
|
-
specificSchemaObject
|
|
311
|
+
schemaLabel(specificSchemaObject) ?? 'File'
|
|
202
312
|
]],
|
|
203
313
|
['br'],
|
|
204
314
|
['br'],
|
|
@@ -376,26 +486,49 @@ const fileType = {
|
|
|
376
486
|
})()
|
|
377
487
|
: '',
|
|
378
488
|
value.type.startsWith('image/')
|
|
379
|
-
|
|
380
|
-
? ['img', /** @type {import('jamilih').JamilihAttributes} */ ({
|
|
489
|
+
? ['img', {
|
|
381
490
|
class: 'imageView',
|
|
382
491
|
src: URL.createObjectURL(value),
|
|
383
492
|
$on: {
|
|
384
|
-
/** @this {HTMLImageElement} */
|
|
385
493
|
load () {
|
|
386
|
-
URL.revokeObjectURL(
|
|
494
|
+
URL.revokeObjectURL(
|
|
495
|
+
/** @type {HTMLImageElement} */ (this).src
|
|
496
|
+
);
|
|
387
497
|
}
|
|
388
498
|
}
|
|
389
|
-
}
|
|
499
|
+
}]
|
|
390
500
|
: ''
|
|
391
501
|
]];
|
|
392
502
|
},
|
|
393
|
-
editUI ({typeNamespace, specificSchemaObject, value = {}}) {
|
|
503
|
+
editUI ({typeNamespace, specificSchemaObject, types, value = {}}) {
|
|
394
504
|
// Todo: Could add way to preview file in edit mode (whether
|
|
395
505
|
// recorded or uploaded)
|
|
506
|
+
const fileSchemaObject = /** @type {import('zodexy').SzFile} */ (
|
|
507
|
+
specificSchemaObject
|
|
508
|
+
);
|
|
509
|
+
const {min, max, mime} = fileSchemaObject ?? {};
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* @param {string|null|undefined} message
|
|
513
|
+
* @returns {string|null|undefined}
|
|
514
|
+
*/
|
|
515
|
+
const getValidationMessage = (message) => {
|
|
516
|
+
return types.getValidationMessage({
|
|
517
|
+
message,
|
|
518
|
+
schema: specificSchemaObject,
|
|
519
|
+
typeSpecific: true
|
|
520
|
+
});
|
|
521
|
+
};
|
|
522
|
+
|
|
523
|
+
fileContentTypeListId++;
|
|
524
|
+
const contentTypeListId = `fileContentTypes-${fileContentTypeListId}`;
|
|
525
|
+
const contentTypeOptions = mime && mime.length > 0
|
|
526
|
+
? mime
|
|
527
|
+
: commonMimeTypes;
|
|
528
|
+
|
|
396
529
|
return ['div', {
|
|
397
530
|
dataset: {type: 'file'},
|
|
398
|
-
title: specificSchemaObject
|
|
531
|
+
title: schemaLabel(specificSchemaObject) ?? 'File'
|
|
399
532
|
}, [
|
|
400
533
|
['fieldset', {
|
|
401
534
|
class: 'fileMetaData',
|
|
@@ -417,10 +550,14 @@ const fileType = {
|
|
|
417
550
|
'.size'
|
|
418
551
|
)).value = String(file.size);
|
|
419
552
|
|
|
420
|
-
/** @type {HTMLInputElement} */ ($e(
|
|
553
|
+
const contentTypeInput = /** @type {HTMLInputElement} */ ($e(
|
|
421
554
|
metadataFieldset,
|
|
422
555
|
'.contentType'
|
|
423
|
-
))
|
|
556
|
+
));
|
|
557
|
+
contentTypeInput.value = file.type;
|
|
558
|
+
contentTypeInput.setCustomValidity(
|
|
559
|
+
getValidationMessage(checkFileMimeType(file.type, mime)) ?? ''
|
|
560
|
+
);
|
|
424
561
|
|
|
425
562
|
/** @type {HTMLInputElement} */ ($e(
|
|
426
563
|
metadataFieldset,
|
|
@@ -429,12 +566,20 @@ const fileType = {
|
|
|
429
566
|
? getDateString(file.lastModified)
|
|
430
567
|
: '';
|
|
431
568
|
|
|
432
|
-
/** @type {
|
|
569
|
+
const viewBinary = /** @type {FileButton} */ ($e(
|
|
433
570
|
metadataFieldset,
|
|
434
571
|
'button.viewBinary'
|
|
435
|
-
))
|
|
572
|
+
));
|
|
573
|
+
viewBinary.$value = typeof file.lastModified === 'number'
|
|
436
574
|
? /** @type {File} */ (file)
|
|
437
575
|
: undefined;
|
|
576
|
+
const message = checkFile(
|
|
577
|
+
viewBinary.$value,
|
|
578
|
+
viewBinary.$min,
|
|
579
|
+
viewBinary.$max,
|
|
580
|
+
viewBinary.$mime
|
|
581
|
+
);
|
|
582
|
+
viewBinary.setCustomValidity(getValidationMessage(message) ?? '');
|
|
438
583
|
}
|
|
439
584
|
}
|
|
440
585
|
}, [
|
|
@@ -465,7 +610,11 @@ const fileType = {
|
|
|
465
610
|
]],
|
|
466
611
|
['br'],
|
|
467
612
|
['label', [
|
|
468
|
-
|
|
613
|
+
`Size (in bytes)${
|
|
614
|
+
min !== undefined || max !== undefined
|
|
615
|
+
? ` (min: ${min ?? 0}${max === undefined ? '' : `, max: ${max}`})`
|
|
616
|
+
: ''
|
|
617
|
+
} `,
|
|
469
618
|
['input', {
|
|
470
619
|
type: 'number', step: '1', disabled: true, class: 'size',
|
|
471
620
|
value: String(value.size)
|
|
@@ -473,11 +622,16 @@ const fileType = {
|
|
|
473
622
|
]],
|
|
474
623
|
['br'],
|
|
475
624
|
['label', [
|
|
476
|
-
|
|
625
|
+
`Content type${
|
|
626
|
+
mime && mime.length > 0 ? ` (allowed: ${mime.join(', ')})` : ''
|
|
627
|
+
} `,
|
|
477
628
|
['input', {
|
|
478
629
|
class: 'contentType', value: value.type ?? '',
|
|
630
|
+
list: contentTypeListId,
|
|
479
631
|
$on: {
|
|
480
632
|
change () {
|
|
633
|
+
// eslint-disable-next-line consistent-this -- Clarity
|
|
634
|
+
const input = /** @type {HTMLInputElement} */ (this);
|
|
481
635
|
const viewBinary =
|
|
482
636
|
/**
|
|
483
637
|
* @type {HTMLButtonElement & {$value: File}}
|
|
@@ -489,15 +643,29 @@ const fileType = {
|
|
|
489
643
|
)
|
|
490
644
|
);
|
|
491
645
|
|
|
492
|
-
const newContentType =
|
|
493
|
-
|
|
494
|
-
newFileForBinary(viewBinary, {
|
|
646
|
+
const newContentType = input.value;
|
|
647
|
+
const file = createFileForBinary(viewBinary, {
|
|
495
648
|
type: newContentType
|
|
496
649
|
});
|
|
650
|
+
const message = checkFile(file, min, max, mime);
|
|
651
|
+
const validationMessage = getValidationMessage(message);
|
|
652
|
+
input.setCustomValidity(validationMessage ?? '');
|
|
653
|
+
if (message) {
|
|
654
|
+
dialogs.alert(validationMessage ?? message);
|
|
655
|
+
input.reportValidity();
|
|
656
|
+
return;
|
|
657
|
+
}
|
|
658
|
+
newFileForBinary(viewBinary, {type: newContentType});
|
|
497
659
|
}
|
|
498
660
|
}
|
|
499
661
|
}]
|
|
500
662
|
]],
|
|
663
|
+
['datalist', {
|
|
664
|
+
id: contentTypeListId,
|
|
665
|
+
class: 'contentTypeOptions'
|
|
666
|
+
}, contentTypeOptions.map((mimeType) => {
|
|
667
|
+
return ['option', [mimeType]];
|
|
668
|
+
})],
|
|
501
669
|
['br'],
|
|
502
670
|
['label', [
|
|
503
671
|
'Last modified date ',
|
|
@@ -530,7 +698,7 @@ const fileType = {
|
|
|
530
698
|
}]
|
|
531
699
|
]],
|
|
532
700
|
['br'],
|
|
533
|
-
binaryButton(value, true),
|
|
701
|
+
binaryButton(value, true, min, max, mime, getValidationMessage),
|
|
534
702
|
['button', {
|
|
535
703
|
class: 'clearData',
|
|
536
704
|
$on: {
|
|
@@ -554,18 +722,23 @@ const fileType = {
|
|
|
554
722
|
['legend', ['Supply file through upload']],
|
|
555
723
|
['label', [
|
|
556
724
|
'File ',
|
|
557
|
-
|
|
558
|
-
['input', /** @type {import('jamilih').JamilihAttributes} */ ({
|
|
725
|
+
['input', {
|
|
559
726
|
$on: {
|
|
560
|
-
/**
|
|
561
|
-
* @this {HTMLInputElement}
|
|
562
|
-
*/
|
|
563
727
|
change () {
|
|
728
|
+
// eslint-disable-next-line consistent-this -- Clarity
|
|
729
|
+
const input = /** @type {HTMLInputElement} */ (this);
|
|
564
730
|
/* istanbul ignore if -- TS */
|
|
565
|
-
if (!
|
|
731
|
+
if (!input.files) {
|
|
732
|
+
return;
|
|
733
|
+
}
|
|
734
|
+
const file = input.files[0];
|
|
735
|
+
|
|
736
|
+
const message = checkFile(file, min, max, mime);
|
|
737
|
+
if (message) {
|
|
738
|
+
dialogs.alert(getValidationMessage(message) ?? message);
|
|
739
|
+
input.value = '';
|
|
566
740
|
return;
|
|
567
741
|
}
|
|
568
|
-
const file = this.files[0];
|
|
569
742
|
|
|
570
743
|
const metadataFieldset =
|
|
571
744
|
/**
|
|
@@ -578,8 +751,9 @@ const fileType = {
|
|
|
578
751
|
metadataFieldset.$setValue(file);
|
|
579
752
|
}
|
|
580
753
|
},
|
|
754
|
+
accept: mime?.join(','),
|
|
581
755
|
name: `${typeNamespace}-file`, type: 'file'
|
|
582
|
-
}
|
|
756
|
+
}]
|
|
583
757
|
]]
|
|
584
758
|
]],
|
|
585
759
|
['fieldset', [
|
|
@@ -819,15 +993,11 @@ const fileType = {
|
|
|
819
993
|
})(),
|
|
820
994
|
' ',
|
|
821
995
|
['div', [
|
|
822
|
-
|
|
823
|
-
['button', /** @type {import('jamilih').JamilihAttributes} */ ({
|
|
996
|
+
['button', {
|
|
824
997
|
class: 'recordMedia',
|
|
825
998
|
$on: {
|
|
826
999
|
/**
|
|
827
1000
|
* @param {Event} e
|
|
828
|
-
* @this {HTMLButtonElement & {
|
|
829
|
-
* $mediaRecorder: MediaRecorder
|
|
830
|
-
* }}
|
|
831
1001
|
*/
|
|
832
1002
|
click (e) {
|
|
833
1003
|
e.preventDefault();
|
|
@@ -910,6 +1080,13 @@ const fileType = {
|
|
|
910
1080
|
);
|
|
911
1081
|
console.log('file', file);
|
|
912
1082
|
|
|
1083
|
+
const message = checkFile(file, min, max, mime);
|
|
1084
|
+
if (message) {
|
|
1085
|
+
dialogs.alert(getValidationMessage(message) ?? message);
|
|
1086
|
+
chunks = [];
|
|
1087
|
+
return;
|
|
1088
|
+
}
|
|
1089
|
+
|
|
913
1090
|
const root = /** @type {HTMLDivElement} */
|
|
914
1091
|
(this.closest('[data-type="file"]'));
|
|
915
1092
|
/**
|
|
@@ -923,13 +1100,16 @@ const fileType = {
|
|
|
923
1100
|
chunks = [];
|
|
924
1101
|
});
|
|
925
1102
|
|
|
926
|
-
|
|
1103
|
+
(
|
|
1104
|
+
/** @type {HTMLButtonElement & {$mediaRecorder: MediaRecorder}} */
|
|
1105
|
+
(this)
|
|
1106
|
+
).$mediaRecorder = mediaRecorder;
|
|
927
1107
|
|
|
928
1108
|
// Todo: Could make option for front/back
|
|
929
1109
|
// camera ("user"/"environment") and bringIntoFocus
|
|
930
1110
|
}
|
|
931
1111
|
}
|
|
932
|
-
}
|
|
1112
|
+
}, [
|
|
933
1113
|
'Record media'
|
|
934
1114
|
]],
|
|
935
1115
|
['button', {
|
|
@@ -1037,6 +1217,12 @@ const fileType = {
|
|
|
1037
1217
|
);
|
|
1038
1218
|
console.log('file', file);
|
|
1039
1219
|
|
|
1220
|
+
const message = checkFile(file, min, max, mime);
|
|
1221
|
+
if (message) {
|
|
1222
|
+
dialogs.alert(getValidationMessage(message) ?? message);
|
|
1223
|
+
return;
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1040
1226
|
const root = /** @type {HTMLDivElement} */
|
|
1041
1227
|
(this.closest('[data-type="file"]'));
|
|
1042
1228
|
/**
|
|
@@ -1067,7 +1253,7 @@ const fileType = {
|
|
|
1067
1253
|
[
|
|
1068
1254
|
'div',
|
|
1069
1255
|
{class: 'recordedMedia'},
|
|
1070
|
-
|
|
1256
|
+
[
|
|
1071
1257
|
...(() => {
|
|
1072
1258
|
const recordedMedia = jml(
|
|
1073
1259
|
'video', {class: 'recordedMedia'}
|
|
@@ -1112,7 +1298,7 @@ const fileType = {
|
|
|
1112
1298
|
])
|
|
1113
1299
|
];
|
|
1114
1300
|
})()
|
|
1115
|
-
]
|
|
1301
|
+
]
|
|
1116
1302
|
]
|
|
1117
1303
|
]]
|
|
1118
1304
|
]]
|