@openclaw/whatsapp 2026.9.4 → 2026.9.5
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/assets/activity.svg +40 -0
- package/assets/icon.png +0 -0
- package/dist/{accounts-CiKHiuEe.js → .setup/accounts-D_NGDjCx.mjs} +2 -2
- package/dist/{action-runtime-CRZLhN3f.js → .setup/action-runtime-DZZFamfl.mjs} +3 -3
- package/dist/{active-listener-BEjWsCNM.js → .setup/active-listener-CDjoX9QR.mjs} +2 -2
- package/dist/{agent-tools-login-B-2qZPzc.js → .setup/agent-tools-login-B6MAs75N.mjs} +2 -2
- package/dist/{approval-handler.runtime-DGJEaoqh.js → .setup/approval-handler.runtime-C0hzmMSj.mjs} +12 -12
- package/dist/{approval-reactions-DSFH6Mtx.js → .setup/approval-reactions-BnXw-UZI.mjs} +13 -13
- package/dist/{auth-store-ZWaclAbd.js → .setup/auth-store-Dh8a3cba.mjs} +5 -5
- package/dist/{channel-CzEIEZqG.js → .setup/channel-CSclZYjU.mjs} +20 -29
- package/dist/{channel-react-action-CHeJSG9F.js → .setup/channel-react-action-1iBiEnq7.mjs} +5 -5
- package/dist/.setup/channel.runtime-ddGY37w8.mjs +16 -0
- package/dist/.setup/channel.setup-CqUl8COe.mjs +5 -0
- package/dist/{connection-controller-DNp6U1NN.js → .setup/connection-controller-C60mU7j7.mjs} +5 -5
- package/dist/{connection-controller-runtime-context-DG0tuYuw.js → .setup/connection-controller-runtime-context-hgLJoRc8.mjs} +1 -1
- package/dist/{directory-config-CoWFw1zn.js → .setup/directory-config-BHPoBklt.mjs} +8 -8
- package/dist/{group-session-key-BmVDSPr1.js → .setup/group-session-key-D22hYMdE.mjs} +5 -5
- package/dist/.setup/legacy-session-surface-api-B2szjq4r.mjs +2 -0
- package/dist/{login-6j2iP9nR.js → .setup/login-2dmd1TfE.mjs} +5 -5
- package/dist/{login-qr-DRFgI6k1.js → .setup/login-qr-CgKtO_ef.mjs} +6 -6
- package/dist/{monitor-DaIAK4fT.js → .setup/monitor-BblvzLpX.mjs} +68 -65
- package/dist/.setup/normalize-DdsROMMa.mjs +2 -0
- package/dist/{normalize-target-CugRyONv.js → .setup/normalize-target-BGra1ZnM.mjs} +8 -30
- package/dist/{question-reactions-bbe0Qnjn.js → .setup/question-reactions-D3Zq9Gbn.mjs} +2 -2
- package/dist/{resolve-outbound-target-1GqbT1uX.js → .setup/resolve-outbound-target-C2eUvsTc.mjs} +1 -1
- package/dist/{send-BDDGPxav.js → .setup/send-C6jDmcL9.mjs} +7 -7
- package/dist/{send-api-C_Zn4Ij-.js → .setup/send-api-B4DOt2RJ.mjs} +7 -7
- package/dist/{session.runtime-Nsqaehbd.js → .setup/session.runtime-DcJuO42v.mjs} +1 -1
- package/dist/{setup-finalize-CZ6fHFFU.js → .setup/setup-finalize-BYEgU0hb.mjs} +6 -6
- package/dist/.setup/setup-plugin-api-CXfU-7vN.mjs +3 -0
- package/dist/{setup-surface-CnK_PPiA.js → .setup/setup-surface-Cd3wN5HD.mjs} +4 -4
- package/dist/{shared-CLKLJLgY.js → .setup/shared-C9OEtKgc.mjs} +47 -50
- package/dist/{socket-close-B3X9uerq.js → .setup/socket-close-CCVSFufF.mjs} +4 -4
- package/dist/{text-runtime-DyfmcATV.js → .setup/text-runtime-CHl0iPYe.mjs} +1 -1
- package/dist/action-runtime-api.js +1 -1
- package/dist/action-runtime.runtime.js +1 -1
- package/dist/agent-tools-api.js +4 -4
- package/dist/api.js +15 -15
- package/dist/auth-presence.js +1 -1
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/contract-api.js +5 -5
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +2 -2
- package/dist/legacy-session-surface-api.js +1 -1
- package/dist/light-runtime-api.js +4 -4
- package/dist/login-qr-runtime.js +1 -1
- package/dist/runtime-api.js +13 -13
- package/dist/runtime-setter-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/setup-entry.js +3 -2
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/audio-decode/node_modules/@thi.ng/bitstream/README.md +1 -1
- package/node_modules/audio-decode/node_modules/@thi.ng/bitstream/package.json +5 -5
- package/node_modules/audio-decode/node_modules/@thi.ng/errors/README.md +1 -1
- package/node_modules/audio-decode/node_modules/@thi.ng/errors/package.json +5 -5
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/dist/flac-decoder.min.js +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/dist/flac-decoder.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/src/FLACDecoder.js +6 -6
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/flac/src/FLACDecoderWebWorker.js +2 -2
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/dist/opus-ml-decoder.min.js +11603 -11540
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/dist/opus-ml-decoder.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/src/EmscriptenWasm.js +0 -0
- package/node_modules/audio-decode/node_modules/@wasm-audio-decoders/opus-ml/types.d.ts +1 -5
- package/node_modules/audio-decode/node_modules/audio-type/audio-type.js +156 -2
- package/node_modules/audio-decode/node_modules/audio-type/package.json +23 -2
- package/node_modules/audio-decode/node_modules/audio-type/readme.md +40 -2
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/README.md +1 -1
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.min.js +3 -3
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.opus-ml.min.js +0 -0
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/dist/ogg-opus-decoder.opus-ml.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/package.json +8 -8
- package/node_modules/audio-decode/node_modules/ogg-opus-decoder/src/OggOpusDecoder.js +1 -1
- package/node_modules/audio-decode/node_modules/opus-decoder/README.md +1 -1
- package/node_modules/audio-decode/node_modules/opus-decoder/dist/opus-decoder.min.js +3 -3
- package/node_modules/audio-decode/node_modules/opus-decoder/dist/opus-decoder.min.js.map +1 -1
- package/node_modules/audio-decode/node_modules/opus-decoder/package.json +1 -1
- package/node_modules/audio-decode/node_modules/opus-decoder/types.d.ts +1 -5
- package/node_modules/baileys/node_modules/protobufjs/README.md +24 -17
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js +124 -14
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js +63 -9
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js +133 -18
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.generated.d.ts +7 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.js +24 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.js +14 -4
- package/node_modules/baileys/node_modules/protobufjs/ext/textformat.js +8 -4
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/descriptor.json +20 -1
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/descriptor.proto +14 -1
- package/node_modules/baileys/node_modules/protobufjs/index.d.ts +12 -0
- package/node_modules/baileys/node_modules/protobufjs/package.json +1 -1
- package/node_modules/baileys/node_modules/protobufjs/src/decoder.js +31 -2
- package/node_modules/baileys/node_modules/protobufjs/src/enum.js +10 -0
- package/node_modules/baileys/node_modules/protobufjs/src/object.js +5 -2
- package/node_modules/baileys/node_modules/protobufjs/src/parse.js +9 -4
- package/node_modules/baileys/node_modules/protobufjs/src/reader.js +61 -7
- package/node_modules/baileys/node_modules/protobufjs/src/type.js +10 -0
- package/node_modules/baileys/node_modules/protobufjs/src/wrappers.js +5 -1
- package/node_modules/typebox/build/compile/validator.d.mts +1 -1
- package/node_modules/typebox/build/compile/validator.mjs +1 -1
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
- package/node_modules/typebox/build/format/iri.mjs +5 -1
- package/node_modules/typebox/build/guard/emit.mjs +2 -4
- package/node_modules/typebox/build/guard/guard.mjs +6 -18
- package/node_modules/typebox/build/guard/string.mjs +16 -24
- package/node_modules/typebox/build/schema/build.mjs +2 -2
- package/node_modules/typebox/build/schema/check.mjs +1 -1
- package/node_modules/typebox/build/schema/compile.d.mts +3 -2
- package/node_modules/typebox/build/schema/compile.mjs +8 -8
- package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
- package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
- package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
- package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
- package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
- package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
- package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
- package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
- package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
- package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
- package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
- package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
- package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
- package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
- package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
- package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
- package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
- package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
- package/node_modules/typebox/build/schema/errors.d.mts +2 -2
- package/node_modules/typebox/build/schema/errors.mjs +8 -14
- package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
- package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
- package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
- package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
- package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
- package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
- package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
- package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
- package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
- package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
- package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
- package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
- package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
- package/node_modules/typebox/build/schema/parse.d.mts +1 -0
- package/node_modules/typebox/build/schema/parse.mjs +10 -5
- package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
- package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
- package/node_modules/typebox/build/schema/schema.d.mts +2 -0
- package/node_modules/typebox/build/schema/schema.mjs +2 -0
- package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
- package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +59 -89
- package/openclaw.plugin.json +11 -2
- package/package.json +7 -5
- package/dist/channel.runtime-BFiZ9WhU.js +0 -55
- package/dist/channel.setup-gIWoRLzt.js +0 -14
- package/dist/normalize-C7Hkc_vE.js +0 -2
- /package/dist/{account-ids-CB5SOWjc.js → .setup/account-ids-CB5SOWjc.mjs} +0 -0
- /package/dist/{audio-preflight.runtime-C_glQhZY.js → .setup/audio-preflight.runtime-C_glQhZY.mjs} +0 -0
- /package/dist/{command-policy-BIOSHySD.js → .setup/command-policy-BIOSHySD.mjs} +0 -0
- /package/dist/{config-schema-BYA6e_Ii.js → .setup/config-schema-BYA6e_Ii.mjs} +0 -0
- /package/dist/{constants-C7m81BNe.js → .setup/constants-C7m81BNe.mjs} +0 -0
- /package/dist/{creds-files-Drg3usj1.js → .setup/creds-files-Drg3usj1.mjs} +0 -0
- /package/dist/{doctor-BPb-SjdE.js → .setup/doctor-BPb-SjdE.mjs} +0 -0
- /package/dist/{group-config-path-BGyzT9Lg.js → .setup/group-config-path-BGyzT9Lg.mjs} +0 -0
- /package/dist/{group-session-contract-DDnZSsJ1.js → .setup/group-session-contract-DDnZSsJ1.mjs} +0 -0
- /package/dist/{reply-resolver.runtime-Ded8D58Y.js → .setup/reply-resolver.runtime-Ded8D58Y.mjs} +0 -0
- /package/dist/{rolldown-runtime-D7D4PA-g.js → .setup/rolldown-runtime-D7D4PA-g.mjs} +0 -0
- /package/dist/{runtime-BLlToOi6.js → .setup/runtime-BLlToOi6.mjs} +0 -0
- /package/dist/{runtime-group-policy-DeSRFXEV.js → .setup/runtime-group-policy-DeSRFXEV.mjs} +0 -0
- /package/dist/{security-contract-nAzD945y.js → .setup/security-contract-nAzD945y.mjs} +0 -0
- /package/dist/{session-contract-DMTm6Q_L.js → .setup/session-contract-DMTm6Q_L.mjs} +0 -0
- /package/dist/{session-errors-JuazczrA.js → .setup/session-errors-JuazczrA.mjs} +0 -0
- /package/dist/{targets-runtime-RBjx3pg_.js → .setup/targets-runtime-RBjx3pg_.mjs} +0 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { Arguments } from '../../system/arguments/index.mjs';
|
|
2
|
+
import { Hashing, Memory } from '../../system/index.mjs';
|
|
3
|
+
import * as Schema from '../types/index.mjs';
|
|
4
|
+
import * as Stack from '../engine/_stack.mjs';
|
|
5
|
+
import { Guard } from '../../guard/index.mjs';
|
|
6
|
+
import { Resolve } from '../resolve/index.mjs';
|
|
7
|
+
// ----------------------------------------------------------------
|
|
8
|
+
// UnresolvableRef
|
|
9
|
+
// ----------------------------------------------------------------
|
|
10
|
+
function UnresolvableRef(ref) {
|
|
11
|
+
throw Error(`UnresolvableRef '${ref}'`);
|
|
12
|
+
}
|
|
13
|
+
// ----------------------------------------------------------------
|
|
14
|
+
// HashKey
|
|
15
|
+
// ----------------------------------------------------------------
|
|
16
|
+
function HashKey(schema) {
|
|
17
|
+
return `x-${Hashing.Hash(schema)}`;
|
|
18
|
+
}
|
|
19
|
+
// ----------------------------------------------------------------
|
|
20
|
+
// AdditionalItems
|
|
21
|
+
// ----------------------------------------------------------------
|
|
22
|
+
function FromAdditionalItems(context, schema) {
|
|
23
|
+
return FromSchema(context, schema.additionalItems);
|
|
24
|
+
}
|
|
25
|
+
// ----------------------------------------------------------------
|
|
26
|
+
// AdditionalProperties
|
|
27
|
+
// ----------------------------------------------------------------
|
|
28
|
+
function FromAdditionalProperties(context, schema) {
|
|
29
|
+
return FromSchema(context, schema.additionalProperties);
|
|
30
|
+
}
|
|
31
|
+
// ----------------------------------------------------------------
|
|
32
|
+
// AllOf
|
|
33
|
+
// ----------------------------------------------------------------
|
|
34
|
+
function FromAllOf(context, schema) {
|
|
35
|
+
return schema.allOf.map((inner) => FromSchema(context, inner));
|
|
36
|
+
}
|
|
37
|
+
// ----------------------------------------------------------------
|
|
38
|
+
// AnyOf
|
|
39
|
+
// ----------------------------------------------------------------
|
|
40
|
+
function FromAnyOf(context, schema) {
|
|
41
|
+
return schema.anyOf.map((inner) => FromSchema(context, inner));
|
|
42
|
+
}
|
|
43
|
+
// ----------------------------------------------------------------
|
|
44
|
+
// Contains
|
|
45
|
+
// ----------------------------------------------------------------
|
|
46
|
+
function FromContains(context, schema) {
|
|
47
|
+
return FromSchema(context, schema.contains);
|
|
48
|
+
}
|
|
49
|
+
// ----------------------------------------------------------------
|
|
50
|
+
// DependentSchemas
|
|
51
|
+
// ----------------------------------------------------------------
|
|
52
|
+
function FromDependentSchemas(context, schema) {
|
|
53
|
+
return Guard.Keys(schema.dependentSchemas).reduce((result, key) => ({ ...result, [key]: FromSchema(context, schema.dependentSchemas[key]) }), {});
|
|
54
|
+
}
|
|
55
|
+
// ----------------------------------------------------------------
|
|
56
|
+
// Else
|
|
57
|
+
// ----------------------------------------------------------------
|
|
58
|
+
function FromElse(context, schema) {
|
|
59
|
+
return FromSchema(context, schema.else);
|
|
60
|
+
}
|
|
61
|
+
// ----------------------------------------------------------------
|
|
62
|
+
// If
|
|
63
|
+
// ----------------------------------------------------------------
|
|
64
|
+
function FromIf(context, schema) {
|
|
65
|
+
return FromSchema(context, schema.if);
|
|
66
|
+
}
|
|
67
|
+
// ----------------------------------------------------------------
|
|
68
|
+
// Items
|
|
69
|
+
// ----------------------------------------------------------------
|
|
70
|
+
function FromItems(context, schema) {
|
|
71
|
+
return Schema.IsItemsSized(schema) ? FromItemsSized(context, schema) : FromItemsUnsized(context, schema);
|
|
72
|
+
}
|
|
73
|
+
// ----------------------------------------------------------------
|
|
74
|
+
// ItemsSized
|
|
75
|
+
// ----------------------------------------------------------------
|
|
76
|
+
function FromItemsSized(context, schema) {
|
|
77
|
+
return schema.items.map((inner) => FromSchema(context, inner));
|
|
78
|
+
}
|
|
79
|
+
// ----------------------------------------------------------------
|
|
80
|
+
// ItemsUnsized
|
|
81
|
+
// ----------------------------------------------------------------
|
|
82
|
+
function FromItemsUnsized(context, schema) {
|
|
83
|
+
return FromSchema(context, schema.items);
|
|
84
|
+
}
|
|
85
|
+
// ----------------------------------------------------------------
|
|
86
|
+
// Not
|
|
87
|
+
// ----------------------------------------------------------------
|
|
88
|
+
function FromNot(context, schema) {
|
|
89
|
+
return FromSchema(context, schema.not);
|
|
90
|
+
}
|
|
91
|
+
// ----------------------------------------------------------------
|
|
92
|
+
// OneOf
|
|
93
|
+
// ----------------------------------------------------------------
|
|
94
|
+
function FromOneOf(context, schema) {
|
|
95
|
+
return schema.oneOf.map((inner) => FromSchema(context, inner));
|
|
96
|
+
}
|
|
97
|
+
// ----------------------------------------------------------------
|
|
98
|
+
// PatternProperties
|
|
99
|
+
// ----------------------------------------------------------------
|
|
100
|
+
function FromPatternProperties(context, schema) {
|
|
101
|
+
return Guard.Keys(schema.patternProperties).reduce((result, key) => ({ ...result, [key]: FromSchema(context, schema.patternProperties[key]) }), {});
|
|
102
|
+
}
|
|
103
|
+
// ----------------------------------------------------------------
|
|
104
|
+
// PrefixItems
|
|
105
|
+
// ----------------------------------------------------------------
|
|
106
|
+
function FromPrefixItems(context, schema) {
|
|
107
|
+
return schema.prefixItems.map((inner) => FromSchema(context, inner));
|
|
108
|
+
}
|
|
109
|
+
// ----------------------------------------------------------------
|
|
110
|
+
// Properties
|
|
111
|
+
// ----------------------------------------------------------------
|
|
112
|
+
function FromProperties(context, schema) {
|
|
113
|
+
return Guard.Keys(schema.properties).reduce((result, key) => ({ ...result, [key]: FromSchema(context, schema.properties[key]) }), {});
|
|
114
|
+
}
|
|
115
|
+
// ----------------------------------------------------------------
|
|
116
|
+
// PropertyNames
|
|
117
|
+
// ----------------------------------------------------------------
|
|
118
|
+
function FromPropertyNames(context, schema) {
|
|
119
|
+
return FromSchema(context, schema.propertyNames);
|
|
120
|
+
}
|
|
121
|
+
// ----------------------------------------------------------------
|
|
122
|
+
// Ref
|
|
123
|
+
// ----------------------------------------------------------------
|
|
124
|
+
function ResolveRef(stack, ref) {
|
|
125
|
+
const result = Resolve.Ref(stack, { $ref: ref });
|
|
126
|
+
return { schema: result.schema ?? UnresolvableRef(ref), stack: result.stack };
|
|
127
|
+
}
|
|
128
|
+
// ----------------------------------------------------------------
|
|
129
|
+
// DynamicRef
|
|
130
|
+
// ----------------------------------------------------------------
|
|
131
|
+
function ResolveDynamicRef(stack, schema) {
|
|
132
|
+
return Resolve.DynamicRef(stack, schema) ?? UnresolvableRef(schema.$dynamicRef);
|
|
133
|
+
}
|
|
134
|
+
// ----------------------------------------------------------------
|
|
135
|
+
// RecursiveRef
|
|
136
|
+
// ----------------------------------------------------------------
|
|
137
|
+
function ResolveRecursiveRef(stack, schema) {
|
|
138
|
+
return Resolve.RecursiveRef(stack, schema) ?? UnresolvableRef(schema.$recursiveRef);
|
|
139
|
+
}
|
|
140
|
+
// ----------------------------------------------------------------
|
|
141
|
+
// FromResolvedRef (shared logic for Ref, DynamicRef, RecursiveRef)
|
|
142
|
+
// ----------------------------------------------------------------
|
|
143
|
+
function FromResolvedRef(context, target, nextStack) {
|
|
144
|
+
const nextContext = { ...context, stack: nextStack };
|
|
145
|
+
const resolving = context.resolving.get(target);
|
|
146
|
+
if (Guard.IsUndefined(resolving))
|
|
147
|
+
return FromSchema(nextContext, target);
|
|
148
|
+
// Target is mid-intern, so this is a cycle (point at its reserved placeholder)
|
|
149
|
+
resolving.used = true;
|
|
150
|
+
return { $ref: `#/$defs/${resolving.key}` };
|
|
151
|
+
}
|
|
152
|
+
// ----------------------------------------------------------------
|
|
153
|
+
// FromRef
|
|
154
|
+
// ----------------------------------------------------------------
|
|
155
|
+
function FromRef(context, schema) {
|
|
156
|
+
// Resolve target off the current traversal stack, carrying forward any resource crossing
|
|
157
|
+
const { schema: target, stack } = ResolveRef(context.stack, schema.$ref);
|
|
158
|
+
return FromResolvedRef(context, target, stack);
|
|
159
|
+
}
|
|
160
|
+
// ----------------------------------------------------------------
|
|
161
|
+
// FromDynamicRef
|
|
162
|
+
// ----------------------------------------------------------------
|
|
163
|
+
function FromDynamicRef(context, schema) {
|
|
164
|
+
// Resolve target off the current traversal stack (dynamic scope depends on anchors seen so far)
|
|
165
|
+
const target = ResolveDynamicRef(context.stack, schema);
|
|
166
|
+
return FromResolvedRef(context, target, { ...context.stack, pendingResource: true });
|
|
167
|
+
}
|
|
168
|
+
// ----------------------------------------------------------------
|
|
169
|
+
// FromRecursiveRef
|
|
170
|
+
// ----------------------------------------------------------------
|
|
171
|
+
function FromRecursiveRef(context, schema) {
|
|
172
|
+
// Resolve target off the current traversal stack (recursive scope depends on the path taken so far)
|
|
173
|
+
const target = ResolveRecursiveRef(context.stack, schema);
|
|
174
|
+
return FromResolvedRef(context, target, { ...context.stack, pendingResource: true });
|
|
175
|
+
}
|
|
176
|
+
// ----------------------------------------------------------------
|
|
177
|
+
// Then
|
|
178
|
+
// ----------------------------------------------------------------
|
|
179
|
+
function FromThen(context, schema) {
|
|
180
|
+
return FromSchema(context, schema.then);
|
|
181
|
+
}
|
|
182
|
+
// ----------------------------------------------------------------
|
|
183
|
+
// UnevaluatedItems
|
|
184
|
+
// ----------------------------------------------------------------
|
|
185
|
+
function FromUnevaluatedItems(context, schema) {
|
|
186
|
+
return FromSchema(context, schema.unevaluatedItems);
|
|
187
|
+
}
|
|
188
|
+
// ----------------------------------------------------------------
|
|
189
|
+
// UnevaluatedProperties
|
|
190
|
+
// ----------------------------------------------------------------
|
|
191
|
+
function FromUnevaluatedProperties(context, schema) {
|
|
192
|
+
return FromSchema(context, schema.unevaluatedProperties);
|
|
193
|
+
}
|
|
194
|
+
// ----------------------------------------------------------------
|
|
195
|
+
// SchemaObject
|
|
196
|
+
// ----------------------------------------------------------------
|
|
197
|
+
function FromSchemaObject(context, schema) {
|
|
198
|
+
// Reference-style schemas resolve to another node and cannot contain other keywords
|
|
199
|
+
if (Schema.IsRef(schema))
|
|
200
|
+
return FromRef(context, schema);
|
|
201
|
+
if (Schema.IsDynamicRef(schema))
|
|
202
|
+
return FromDynamicRef(context, schema);
|
|
203
|
+
if (Schema.IsRecursiveRef(schema))
|
|
204
|
+
return FromRecursiveRef(context, schema);
|
|
205
|
+
// Check if the schema has already been resolved
|
|
206
|
+
const existing = resolved.get(schema);
|
|
207
|
+
if (!Guard.IsUndefined(existing))
|
|
208
|
+
return existing;
|
|
209
|
+
// Reserve a placeholder key in case a nested ref cycles back to this schema
|
|
210
|
+
const reservation = { key: `x-ref-${context.resolving.size}`, used: false };
|
|
211
|
+
context.resolving.set(schema, reservation);
|
|
212
|
+
// Intern each subschema
|
|
213
|
+
const remapped = {
|
|
214
|
+
...(Schema.IsRefine(schema) ? { ['~refine']: schema['~refine'] } : {}),
|
|
215
|
+
...(Schema.IsAdditionalItems(schema) ? { additionalItems: FromAdditionalItems(context, schema) } : {}),
|
|
216
|
+
...(Schema.IsAdditionalProperties(schema) ? { additionalProperties: FromAdditionalProperties(context, schema) } : {}),
|
|
217
|
+
...(Schema.IsAllOf(schema) ? { allOf: FromAllOf(context, schema) } : {}),
|
|
218
|
+
...(Schema.IsAnyOf(schema) ? { anyOf: FromAnyOf(context, schema) } : {}),
|
|
219
|
+
...(Schema.IsContains(schema) ? { contains: FromContains(context, schema) } : {}),
|
|
220
|
+
...(Schema.IsDependentSchemas(schema) ? { dependentSchemas: FromDependentSchemas(context, schema) } : {}),
|
|
221
|
+
...(Schema.IsElse(schema) ? { else: FromElse(context, schema) } : {}),
|
|
222
|
+
...(Schema.IsIf(schema) ? { if: FromIf(context, schema) } : {}),
|
|
223
|
+
...(Schema.IsItems(schema) ? { items: FromItems(context, schema) } : {}),
|
|
224
|
+
...(Schema.IsNot(schema) ? { not: FromNot(context, schema) } : {}),
|
|
225
|
+
...(Schema.IsOneOf(schema) ? { oneOf: FromOneOf(context, schema) } : {}),
|
|
226
|
+
...(Schema.IsPatternProperties(schema) ? { patternProperties: FromPatternProperties(context, schema) } : {}),
|
|
227
|
+
...(Schema.IsPrefixItems(schema) ? { prefixItems: FromPrefixItems(context, schema) } : {}),
|
|
228
|
+
...(Schema.IsProperties(schema) ? { properties: FromProperties(context, schema) } : {}),
|
|
229
|
+
...(Schema.IsPropertyNames(schema) ? { propertyNames: FromPropertyNames(context, schema) } : {}),
|
|
230
|
+
...(Schema.IsThen(schema) ? { then: FromThen(context, schema) } : {}),
|
|
231
|
+
...(Schema.IsUnevaluatedItems(schema) ? { unevaluatedItems: FromUnevaluatedItems(context, schema) } : {}),
|
|
232
|
+
...(Schema.IsUnevaluatedProperties(schema) ? { unevaluatedProperties: FromUnevaluatedProperties(context, schema) } : {})
|
|
233
|
+
};
|
|
234
|
+
context.resolving.delete(schema);
|
|
235
|
+
// Discard resolution keywords and finalize the interned schema
|
|
236
|
+
const interned = Memory.Discard(Memory.Assign(schema, remapped), ['$id', '$defs', '$anchor', '$dynamicAnchor', '$recursionAnchor']);
|
|
237
|
+
const key = reservation.used ? reservation.key : HashKey(interned);
|
|
238
|
+
registry.set(key, interned);
|
|
239
|
+
// Result
|
|
240
|
+
const result = { $ref: `#/$defs/${key}` };
|
|
241
|
+
resolved.set(schema, result);
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
// ----------------------------------------------------------------
|
|
245
|
+
// SchemaBoolean
|
|
246
|
+
// ----------------------------------------------------------------
|
|
247
|
+
function FromSchemaBoolean(_context, schema) {
|
|
248
|
+
// Finalize and register the result
|
|
249
|
+
const key = HashKey(schema);
|
|
250
|
+
registry.set(key, schema);
|
|
251
|
+
// Result
|
|
252
|
+
const result = { $ref: `#/$defs/${key}` };
|
|
253
|
+
resolved.set(schema, result);
|
|
254
|
+
return result;
|
|
255
|
+
}
|
|
256
|
+
// ----------------------------------------------------------------
|
|
257
|
+
// Schema
|
|
258
|
+
// ----------------------------------------------------------------
|
|
259
|
+
function FromSchema(context, schema) {
|
|
260
|
+
const next = { ...context, stack: Stack.NextStack(context.stack, schema) };
|
|
261
|
+
return Schema.IsSchemaBoolean(schema) ? FromSchemaBoolean(next, schema) : FromSchemaObject(next, schema);
|
|
262
|
+
}
|
|
263
|
+
// ----------------------------------------------------------------
|
|
264
|
+
// BooleanEntry
|
|
265
|
+
// ----------------------------------------------------------------
|
|
266
|
+
function BooleanEntry(schema) {
|
|
267
|
+
const key = HashKey(schema);
|
|
268
|
+
return { $ref: `#/$defs/${key}`, $defs: { [key]: schema } };
|
|
269
|
+
}
|
|
270
|
+
// ----------------------------------------------------------------
|
|
271
|
+
// Module-level accumulator state
|
|
272
|
+
// ----------------------------------------------------------------
|
|
273
|
+
const registry = new Map();
|
|
274
|
+
const resolved = new Map();
|
|
275
|
+
/** (Experimental) This function restructures the schema such that each distinct sub-schema is stored exactly once in a $defs object and keyed by content hash. */
|
|
276
|
+
export function Intern(...args) {
|
|
277
|
+
const [context, schema] = Arguments.Match(args, {
|
|
278
|
+
2: (context, schema) => [context, schema],
|
|
279
|
+
1: (schema) => [{}, schema]
|
|
280
|
+
});
|
|
281
|
+
registry.clear();
|
|
282
|
+
resolved.clear();
|
|
283
|
+
if (Schema.IsSchemaBoolean(schema))
|
|
284
|
+
return BooleanEntry(schema);
|
|
285
|
+
const defs = Schema.IsDefs(schema) ? schema.$defs : {};
|
|
286
|
+
const rootStack = Stack.Stack({ ...context, ...defs }, schema);
|
|
287
|
+
const { schema: entry, stack } = Schema.IsRef(schema) ? ResolveRef(Stack.NextStack(rootStack, schema), schema.$ref) : { schema, stack: rootStack };
|
|
288
|
+
if (Schema.IsSchemaBoolean(entry))
|
|
289
|
+
return BooleanEntry(entry);
|
|
290
|
+
const ref_context = { stack, resolving: new Map() };
|
|
291
|
+
const result = FromSchema(ref_context, entry);
|
|
292
|
+
return { $ref: result.$ref, $defs: Object.fromEntries(registry) };
|
|
293
|
+
}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
export const Draft_2019_09 = {
|
|
2
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
3
|
+
'$id': 'https://json-schema.org/draft/2019-09/schema',
|
|
4
|
+
'$vocabulary': {
|
|
5
|
+
'https://json-schema.org/draft/2019-09/vocab/core': true,
|
|
6
|
+
'https://json-schema.org/draft/2019-09/vocab/applicator': true,
|
|
7
|
+
'https://json-schema.org/draft/2019-09/vocab/validation': true,
|
|
8
|
+
'https://json-schema.org/draft/2019-09/vocab/meta-data': true,
|
|
9
|
+
'https://json-schema.org/draft/2019-09/vocab/format': false,
|
|
10
|
+
'https://json-schema.org/draft/2019-09/vocab/content': true
|
|
11
|
+
},
|
|
12
|
+
'$recursiveAnchor': true,
|
|
13
|
+
'title': 'Core and Validation specifications meta-schema',
|
|
14
|
+
'allOf': [
|
|
15
|
+
{
|
|
16
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
17
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/core',
|
|
18
|
+
'$recursiveAnchor': true,
|
|
19
|
+
'title': 'Core vocabulary meta-schema',
|
|
20
|
+
'type': ['object', 'boolean'],
|
|
21
|
+
'properties': {
|
|
22
|
+
'$id': {
|
|
23
|
+
'type': 'string',
|
|
24
|
+
'format': 'uri-reference',
|
|
25
|
+
'$comment': 'Non-empty fragments not allowed.',
|
|
26
|
+
'pattern': '^[^#]*#?$'
|
|
27
|
+
},
|
|
28
|
+
'$schema': {
|
|
29
|
+
'type': 'string',
|
|
30
|
+
'format': 'uri'
|
|
31
|
+
},
|
|
32
|
+
'$anchor': {
|
|
33
|
+
'type': 'string',
|
|
34
|
+
'pattern': '^[A-Za-z][-A-Za-z0-9.:_]*$'
|
|
35
|
+
},
|
|
36
|
+
'$ref': {
|
|
37
|
+
'type': 'string',
|
|
38
|
+
'format': 'uri-reference'
|
|
39
|
+
},
|
|
40
|
+
'$recursiveRef': {
|
|
41
|
+
'type': 'string',
|
|
42
|
+
'format': 'uri-reference'
|
|
43
|
+
},
|
|
44
|
+
'$recursiveAnchor': {
|
|
45
|
+
'type': 'boolean',
|
|
46
|
+
'default': false
|
|
47
|
+
},
|
|
48
|
+
'$vocabulary': {
|
|
49
|
+
'type': 'object',
|
|
50
|
+
'propertyNames': {
|
|
51
|
+
'type': 'string',
|
|
52
|
+
'format': 'uri'
|
|
53
|
+
},
|
|
54
|
+
'additionalProperties': {
|
|
55
|
+
'type': 'boolean'
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
'$comment': {
|
|
59
|
+
'type': 'string'
|
|
60
|
+
},
|
|
61
|
+
'$defs': {
|
|
62
|
+
'type': 'object',
|
|
63
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
64
|
+
'default': {}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
70
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/applicator',
|
|
71
|
+
'$recursiveAnchor': true,
|
|
72
|
+
'title': 'Applicator vocabulary meta-schema',
|
|
73
|
+
'type': ['object', 'boolean'],
|
|
74
|
+
'properties': {
|
|
75
|
+
'additionalItems': { '$recursiveRef': '#' },
|
|
76
|
+
'unevaluatedItems': { '$recursiveRef': '#' },
|
|
77
|
+
'items': {
|
|
78
|
+
'anyOf': [
|
|
79
|
+
{ '$recursiveRef': '#' },
|
|
80
|
+
{ '$ref': '#/$defs/schemaArray' }
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
'contains': { '$recursiveRef': '#' },
|
|
84
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
85
|
+
'unevaluatedProperties': { '$recursiveRef': '#' },
|
|
86
|
+
'properties': {
|
|
87
|
+
'type': 'object',
|
|
88
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
89
|
+
'default': {}
|
|
90
|
+
},
|
|
91
|
+
'patternProperties': {
|
|
92
|
+
'type': 'object',
|
|
93
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
94
|
+
'propertyNames': { 'format': 'regex' },
|
|
95
|
+
'default': {}
|
|
96
|
+
},
|
|
97
|
+
'dependentSchemas': {
|
|
98
|
+
'type': 'object',
|
|
99
|
+
'additionalProperties': {
|
|
100
|
+
'$recursiveRef': '#'
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
'propertyNames': { '$recursiveRef': '#' },
|
|
104
|
+
'if': { '$recursiveRef': '#' },
|
|
105
|
+
'then': { '$recursiveRef': '#' },
|
|
106
|
+
'else': { '$recursiveRef': '#' },
|
|
107
|
+
'allOf': { '$ref': '#/$defs/schemaArray' },
|
|
108
|
+
'anyOf': { '$ref': '#/$defs/schemaArray' },
|
|
109
|
+
'oneOf': { '$ref': '#/$defs/schemaArray' },
|
|
110
|
+
'not': { '$recursiveRef': '#' }
|
|
111
|
+
},
|
|
112
|
+
'$defs': {
|
|
113
|
+
'schemaArray': {
|
|
114
|
+
'type': 'array',
|
|
115
|
+
'minItems': 1,
|
|
116
|
+
'items': { '$recursiveRef': '#' }
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
122
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/validation',
|
|
123
|
+
'$recursiveAnchor': true,
|
|
124
|
+
'title': 'Validation vocabulary meta-schema',
|
|
125
|
+
'type': ['object', 'boolean'],
|
|
126
|
+
'properties': {
|
|
127
|
+
'multipleOf': {
|
|
128
|
+
'type': 'number',
|
|
129
|
+
'exclusiveMinimum': 0
|
|
130
|
+
},
|
|
131
|
+
'maximum': {
|
|
132
|
+
'type': 'number'
|
|
133
|
+
},
|
|
134
|
+
'exclusiveMaximum': {
|
|
135
|
+
'type': 'number'
|
|
136
|
+
},
|
|
137
|
+
'minimum': {
|
|
138
|
+
'type': 'number'
|
|
139
|
+
},
|
|
140
|
+
'exclusiveMinimum': {
|
|
141
|
+
'type': 'number'
|
|
142
|
+
},
|
|
143
|
+
'maxLength': { '$ref': '#/$defs/nonNegativeInteger' },
|
|
144
|
+
'minLength': { '$ref': '#/$defs/nonNegativeIntegerDefault0' },
|
|
145
|
+
'pattern': {
|
|
146
|
+
'type': 'string',
|
|
147
|
+
'format': 'regex'
|
|
148
|
+
},
|
|
149
|
+
'maxItems': { '$ref': '#/$defs/nonNegativeInteger' },
|
|
150
|
+
'minItems': { '$ref': '#/$defs/nonNegativeIntegerDefault0' },
|
|
151
|
+
'uniqueItems': {
|
|
152
|
+
'type': 'boolean',
|
|
153
|
+
'default': false
|
|
154
|
+
},
|
|
155
|
+
'maxContains': { '$ref': '#/$defs/nonNegativeInteger' },
|
|
156
|
+
'minContains': {
|
|
157
|
+
'$ref': '#/$defs/nonNegativeInteger',
|
|
158
|
+
'default': 1
|
|
159
|
+
},
|
|
160
|
+
'maxProperties': { '$ref': '#/$defs/nonNegativeInteger' },
|
|
161
|
+
'minProperties': { '$ref': '#/$defs/nonNegativeIntegerDefault0' },
|
|
162
|
+
'required': { '$ref': '#/$defs/stringArray' },
|
|
163
|
+
'dependentRequired': {
|
|
164
|
+
'type': 'object',
|
|
165
|
+
'additionalProperties': {
|
|
166
|
+
'$ref': '#/$defs/stringArray'
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
'const': true,
|
|
170
|
+
'enum': {
|
|
171
|
+
'type': 'array',
|
|
172
|
+
'items': true
|
|
173
|
+
},
|
|
174
|
+
'type': {
|
|
175
|
+
'anyOf': [
|
|
176
|
+
{ '$ref': '#/$defs/simpleTypes' },
|
|
177
|
+
{
|
|
178
|
+
'type': 'array',
|
|
179
|
+
'items': { '$ref': '#/$defs/simpleTypes' },
|
|
180
|
+
'minItems': 1,
|
|
181
|
+
'uniqueItems': true
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
'$defs': {
|
|
187
|
+
'nonNegativeInteger': {
|
|
188
|
+
'type': 'integer',
|
|
189
|
+
'minimum': 0
|
|
190
|
+
},
|
|
191
|
+
'nonNegativeIntegerDefault0': {
|
|
192
|
+
'$ref': '#/$defs/nonNegativeInteger',
|
|
193
|
+
'default': 0
|
|
194
|
+
},
|
|
195
|
+
'simpleTypes': {
|
|
196
|
+
'enum': [
|
|
197
|
+
'array',
|
|
198
|
+
'boolean',
|
|
199
|
+
'integer',
|
|
200
|
+
'null',
|
|
201
|
+
'number',
|
|
202
|
+
'object',
|
|
203
|
+
'string'
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
'stringArray': {
|
|
207
|
+
'type': 'array',
|
|
208
|
+
'items': { 'type': 'string' },
|
|
209
|
+
'uniqueItems': true,
|
|
210
|
+
'default': []
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
216
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/meta-data',
|
|
217
|
+
'$recursiveAnchor': true,
|
|
218
|
+
'title': 'Meta-data vocabulary meta-schema',
|
|
219
|
+
'type': ['object', 'boolean'],
|
|
220
|
+
'properties': {
|
|
221
|
+
'title': {
|
|
222
|
+
'type': 'string'
|
|
223
|
+
},
|
|
224
|
+
'description': {
|
|
225
|
+
'type': 'string'
|
|
226
|
+
},
|
|
227
|
+
'default': true,
|
|
228
|
+
'deprecated': {
|
|
229
|
+
'type': 'boolean',
|
|
230
|
+
'default': false
|
|
231
|
+
},
|
|
232
|
+
'readOnly': {
|
|
233
|
+
'type': 'boolean',
|
|
234
|
+
'default': false
|
|
235
|
+
},
|
|
236
|
+
'writeOnly': {
|
|
237
|
+
'type': 'boolean',
|
|
238
|
+
'default': false
|
|
239
|
+
},
|
|
240
|
+
'examples': {
|
|
241
|
+
'type': 'array',
|
|
242
|
+
'items': true
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
248
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/format',
|
|
249
|
+
'$recursiveAnchor': true,
|
|
250
|
+
'title': 'Format vocabulary meta-schema',
|
|
251
|
+
'type': ['object', 'boolean'],
|
|
252
|
+
'properties': {
|
|
253
|
+
'format': { 'type': 'string' }
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
258
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/content',
|
|
259
|
+
'$recursiveAnchor': true,
|
|
260
|
+
'title': 'Content vocabulary meta-schema',
|
|
261
|
+
'type': ['object', 'boolean'],
|
|
262
|
+
'properties': {
|
|
263
|
+
'contentMediaType': { 'type': 'string' },
|
|
264
|
+
'contentEncoding': { 'type': 'string' },
|
|
265
|
+
'contentSchema': { '$recursiveRef': '#' }
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
],
|
|
269
|
+
'type': ['object', 'boolean'],
|
|
270
|
+
'properties': {
|
|
271
|
+
'definitions': {
|
|
272
|
+
'$comment': 'While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.',
|
|
273
|
+
'type': 'object',
|
|
274
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
275
|
+
'default': {}
|
|
276
|
+
},
|
|
277
|
+
'dependencies': {
|
|
278
|
+
'$comment': '"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"',
|
|
279
|
+
'type': 'object',
|
|
280
|
+
'additionalProperties': {
|
|
281
|
+
'anyOf': [
|
|
282
|
+
{ '$recursiveRef': '#' },
|
|
283
|
+
{ '$ref': 'meta/validation#/$defs/stringArray' }
|
|
284
|
+
]
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
};
|