@jsonjoy.com/json-pack 1.20.0 → 17.59.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/lib/JsonPackExtension.d.ts +8 -0
- package/lib/JsonPackExtension.js +8 -0
- package/lib/JsonPackExtension.js.map +1 -1
- package/lib/JsonPackMpint.d.ts +25 -0
- package/lib/JsonPackMpint.js +31 -1
- package/lib/JsonPackMpint.js.map +1 -1
- package/lib/JsonPackValue.d.ts +10 -0
- package/lib/JsonPackValue.js +10 -0
- package/lib/JsonPackValue.js.map +1 -1
- package/lib/avro/AvroDecoder.d.ts +67 -0
- package/lib/avro/AvroDecoder.js +77 -5
- package/lib/avro/AvroDecoder.js.map +1 -1
- package/lib/avro/AvroEncoder.d.ts +71 -0
- package/lib/avro/AvroEncoder.js +90 -12
- package/lib/avro/AvroEncoder.js.map +1 -1
- package/lib/avro/AvroSchemaDecoder.d.ts +53 -0
- package/lib/avro/AvroSchemaDecoder.js +60 -3
- package/lib/avro/AvroSchemaDecoder.js.map +1 -1
- package/lib/avro/AvroSchemaEncoder.d.ts +65 -0
- package/lib/avro/AvroSchemaEncoder.js +84 -5
- package/lib/avro/AvroSchemaEncoder.js.map +1 -1
- package/lib/avro/AvroSchemaValidator.d.ts +10 -0
- package/lib/avro/AvroSchemaValidator.js +18 -1
- package/lib/avro/AvroSchemaValidator.js.map +1 -1
- package/lib/avro/types.d.ts +31 -0
- package/lib/avro/types.js +4 -0
- package/lib/avro/types.js.map +1 -1
- package/lib/bencode/BencodeDecoder.js +9 -9
- package/lib/bencode/BencodeDecoder.js.map +1 -1
- package/lib/bencode/BencodeEncoder.d.ts +5 -0
- package/lib/bencode/BencodeEncoder.js +25 -20
- package/lib/bencode/BencodeEncoder.js.map +1 -1
- package/lib/bson/BsonDecoder.js +48 -33
- package/lib/bson/BsonDecoder.js.map +1 -1
- package/lib/bson/BsonEncoder.js +11 -3
- package/lib/bson/BsonEncoder.js.map +1 -1
- package/lib/cbor/CborDecoder.d.ts +24 -0
- package/lib/cbor/CborDecoder.js +94 -56
- package/lib/cbor/CborDecoder.js.map +1 -1
- package/lib/cbor/CborDecoderBase.d.ts +1 -0
- package/lib/cbor/CborDecoderBase.js +63 -53
- package/lib/cbor/CborDecoderBase.js.map +1 -1
- package/lib/cbor/CborEncoder.d.ts +5 -0
- package/lib/cbor/CborEncoder.js +9 -3
- package/lib/cbor/CborEncoder.js.map +1 -1
- package/lib/cbor/CborEncoderFast.d.ts +7 -0
- package/lib/cbor/CborEncoderFast.js +22 -14
- package/lib/cbor/CborEncoderFast.js.map +1 -1
- package/lib/cbor/CborEncoderStable.d.ts +1 -0
- package/lib/cbor/CborEncoderStable.js +2 -1
- package/lib/cbor/CborEncoderStable.js.map +1 -1
- package/lib/cbor/shared.d.ts +1 -1
- package/lib/codecs/Codecs.d.ts +1 -1
- package/lib/codecs/cbor.js +1 -1
- package/lib/codecs/cbor.js.map +1 -1
- package/lib/codecs/json.js +1 -1
- package/lib/codecs/json.js.map +1 -1
- package/lib/codecs/msgpack.js +1 -1
- package/lib/codecs/msgpack.js.map +1 -1
- package/lib/ejson/EjsonDecoder.d.ts +5 -0
- package/lib/ejson/EjsonDecoder.js +72 -37
- package/lib/ejson/EjsonDecoder.js.map +1 -1
- package/lib/ejson/EjsonEncoder.d.ts +5 -0
- package/lib/ejson/EjsonEncoder.js +149 -114
- package/lib/ejson/EjsonEncoder.js.map +1 -1
- package/lib/ejson/index.js +1 -0
- package/lib/ejson/index.js.map +1 -1
- package/lib/ion/Import.d.ts +1 -1
- package/lib/ion/Import.js.map +1 -1
- package/lib/ion/IonDecoder.d.ts +0 -1
- package/lib/ion/IonDecoder.js +4 -3
- package/lib/ion/IonDecoder.js.map +1 -1
- package/lib/ion/IonDecoderBase.js +29 -18
- package/lib/ion/IonDecoderBase.js.map +1 -1
- package/lib/ion/IonEncoderFast.d.ts +1 -1
- package/lib/ion/IonEncoderFast.js +30 -30
- package/lib/ion/IonEncoderFast.js.map +1 -1
- package/lib/ion/ast.d.ts +4 -1
- package/lib/ion/symbols.d.ts +1 -1
- package/lib/json/JsonDecoder.js +72 -66
- package/lib/json/JsonDecoder.js.map +1 -1
- package/lib/json/JsonDecoderDag.js +14 -0
- package/lib/json/JsonDecoderDag.js.map +1 -1
- package/lib/json/JsonDecoderPartial.d.ts +22 -0
- package/lib/json/JsonDecoderPartial.js +30 -8
- package/lib/json/JsonDecoderPartial.js.map +1 -1
- package/lib/json/JsonEncoder.d.ts +5 -0
- package/lib/json/JsonEncoder.js +68 -54
- package/lib/json/JsonEncoder.js.map +1 -1
- package/lib/json/JsonEncoderDag.d.ts +17 -0
- package/lib/json/JsonEncoderDag.js +27 -10
- package/lib/json/JsonEncoderDag.js.map +1 -1
- package/lib/json/JsonEncoderStable.js +5 -5
- package/lib/json/JsonEncoderStable.js.map +1 -1
- package/lib/json-binary/codec.d.ts +8 -1
- package/lib/json-binary/codec.js +7 -0
- package/lib/json-binary/codec.js.map +1 -1
- package/lib/msgpack/MsgPackDecoder.d.ts +27 -0
- package/lib/msgpack/MsgPackDecoder.js +55 -23
- package/lib/msgpack/MsgPackDecoder.js.map +1 -1
- package/lib/msgpack/MsgPackDecoderFast.d.ts +8 -0
- package/lib/msgpack/MsgPackDecoderFast.js +14 -5
- package/lib/msgpack/MsgPackDecoderFast.js.map +1 -1
- package/lib/msgpack/MsgPackEncoder.d.ts +3 -0
- package/lib/msgpack/MsgPackEncoder.js +7 -4
- package/lib/msgpack/MsgPackEncoder.js.map +1 -1
- package/lib/msgpack/MsgPackEncoderFast.d.ts +26 -4
- package/lib/msgpack/MsgPackEncoderFast.js +31 -0
- package/lib/msgpack/MsgPackEncoderFast.js.map +1 -1
- package/lib/msgpack/MsgPackEncoderStable.d.ts +3 -0
- package/lib/msgpack/MsgPackEncoderStable.js +3 -0
- package/lib/msgpack/MsgPackEncoderStable.js.map +1 -1
- package/lib/msgpack/MsgPackToJsonConverter.d.ts +30 -4
- package/lib/msgpack/MsgPackToJsonConverter.js +32 -5
- package/lib/msgpack/MsgPackToJsonConverter.js.map +1 -1
- package/lib/msgpack/index.d.ts +29 -0
- package/lib/msgpack/index.js +30 -0
- package/lib/msgpack/index.js.map +1 -1
- package/lib/msgpack/shallow-read.js +7 -7
- package/lib/msgpack/shallow-read.js.map +1 -1
- package/lib/msgpack/types.d.ts +1 -0
- package/lib/msgpack/util.d.ts +1 -1
- package/lib/nfs/v3/FullNfsv3Encoder.d.ts +3 -3
- package/lib/nfs/v3/FullNfsv3Encoder.js +3 -3
- package/lib/nfs/v3/FullNfsv3Encoder.js.map +1 -1
- package/lib/nfs/v3/Nfsv3Decoder.js +51 -50
- package/lib/nfs/v3/Nfsv3Decoder.js.map +1 -1
- package/lib/nfs/v3/Nfsv3Encoder.d.ts +2 -2
- package/lib/nfs/v3/Nfsv3Encoder.js +52 -52
- package/lib/nfs/v3/Nfsv3Encoder.js.map +1 -1
- package/lib/nfs/v3/constants.d.ts +34 -0
- package/lib/nfs/v3/constants.js +4 -0
- package/lib/nfs/v3/constants.js.map +1 -1
- package/lib/nfs/v3/locks/NlmDecoder.js +20 -20
- package/lib/nfs/v3/locks/NlmDecoder.js.map +1 -1
- package/lib/nfs/v3/locks/NlmEncoder.d.ts +2 -2
- package/lib/nfs/v3/locks/NlmEncoder.js +20 -20
- package/lib/nfs/v3/locks/NlmEncoder.js.map +1 -1
- package/lib/nfs/v3/locks/constants.d.ts +9 -0
- package/lib/nfs/v3/locks/messages.d.ts +58 -1
- package/lib/nfs/v3/locks/messages.js +54 -0
- package/lib/nfs/v3/locks/messages.js.map +1 -1
- package/lib/nfs/v3/locks/structs.d.ts +15 -0
- package/lib/nfs/v3/locks/structs.js +15 -0
- package/lib/nfs/v3/locks/structs.js.map +1 -1
- package/lib/nfs/v3/messages.d.ts +249 -0
- package/lib/nfs/v3/messages.js +249 -0
- package/lib/nfs/v3/messages.js.map +1 -1
- package/lib/nfs/v3/mount/MountDecoder.js +12 -12
- package/lib/nfs/v3/mount/MountEncoder.d.ts +2 -2
- package/lib/nfs/v3/mount/MountEncoder.js +13 -13
- package/lib/nfs/v3/mount/MountEncoder.js.map +1 -1
- package/lib/nfs/v3/mount/constants.d.ts +9 -0
- package/lib/nfs/v3/mount/messages.d.ts +31 -1
- package/lib/nfs/v3/mount/messages.js +27 -0
- package/lib/nfs/v3/mount/messages.js.map +1 -1
- package/lib/nfs/v3/mount/structs.d.ts +15 -0
- package/lib/nfs/v3/mount/structs.js +15 -0
- package/lib/nfs/v3/mount/structs.js.map +1 -1
- package/lib/nfs/v3/structs.d.ts +78 -0
- package/lib/nfs/v3/structs.js +78 -0
- package/lib/nfs/v3/structs.js.map +1 -1
- package/lib/nfs/v4/Nfsv4Decoder.d.ts +14 -12
- package/lib/nfs/v4/Nfsv4Decoder.js +241 -165
- package/lib/nfs/v4/Nfsv4Decoder.js.map +1 -1
- package/lib/nfs/v4/Nfsv4Encoder.d.ts +6 -93
- package/lib/nfs/v4/Nfsv4Encoder.js +8 -824
- package/lib/nfs/v4/Nfsv4Encoder.js.map +1 -1
- package/lib/nfs/v4/Nfsv4FullEncoder.d.ts +32 -0
- package/lib/nfs/v4/Nfsv4FullEncoder.js +72 -0
- package/lib/nfs/v4/Nfsv4FullEncoder.js.map +1 -0
- package/lib/nfs/v4/attributes.d.ts +79 -0
- package/lib/nfs/v4/attributes.js +265 -0
- package/lib/nfs/v4/attributes.js.map +1 -0
- package/lib/nfs/v4/builder.d.ts +333 -0
- package/lib/nfs/v4/builder.js +460 -0
- package/lib/nfs/v4/builder.js.map +1 -0
- package/lib/nfs/v4/client/NfsFsDir.d.ts +23 -0
- package/lib/nfs/v4/client/NfsFsDir.js +132 -0
- package/lib/nfs/v4/client/NfsFsDir.js.map +1 -0
- package/lib/nfs/v4/client/NfsFsDirent.d.ts +17 -0
- package/lib/nfs/v4/client/NfsFsDirent.js +35 -0
- package/lib/nfs/v4/client/NfsFsDirent.js.map +1 -0
- package/lib/nfs/v4/client/NfsFsFileHandle.d.ts +35 -0
- package/lib/nfs/v4/client/NfsFsFileHandle.js +271 -0
- package/lib/nfs/v4/client/NfsFsFileHandle.js.map +1 -0
- package/lib/nfs/v4/client/NfsFsStats.d.ts +34 -0
- package/lib/nfs/v4/client/NfsFsStats.js +52 -0
- package/lib/nfs/v4/client/NfsFsStats.js.map +1 -0
- package/lib/nfs/v4/client/Nfsv4FsClient.d.ts +53 -0
- package/lib/nfs/v4/client/Nfsv4FsClient.js +812 -0
- package/lib/nfs/v4/client/Nfsv4FsClient.js.map +1 -0
- package/lib/nfs/v4/client/Nfsv4TcpClient.d.ts +41 -0
- package/lib/nfs/v4/client/Nfsv4TcpClient.js +216 -0
- package/lib/nfs/v4/client/Nfsv4TcpClient.js.map +1 -0
- package/lib/nfs/v4/client/types.d.ts +9 -0
- package/lib/nfs/v4/client/types.js +3 -0
- package/lib/nfs/v4/client/types.js.map +1 -0
- package/lib/nfs/v4/constants.d.ts +80 -0
- package/lib/nfs/v4/constants.js +4 -0
- package/lib/nfs/v4/constants.js.map +1 -1
- package/lib/nfs/v4/format.d.ts +23 -0
- package/lib/nfs/v4/format.js +870 -0
- package/lib/nfs/v4/format.js.map +1 -0
- package/lib/nfs/v4/index.d.ts +3 -1
- package/lib/nfs/v4/index.js +3 -1
- package/lib/nfs/v4/index.js.map +1 -1
- package/lib/nfs/v4/messages.d.ts +208 -90
- package/lib/nfs/v4/messages.js +585 -1
- package/lib/nfs/v4/messages.js.map +1 -1
- package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.d.ts +30 -0
- package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.js +176 -0
- package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.js.map +1 -0
- package/lib/nfs/v4/server/Nfsv4Connection.d.ts +45 -0
- package/lib/nfs/v4/server/Nfsv4Connection.js +163 -0
- package/lib/nfs/v4/server/Nfsv4Connection.js.map +1 -0
- package/lib/nfs/v4/server/Nfsv4TcpServer.d.ts +25 -0
- package/lib/nfs/v4/server/Nfsv4TcpServer.js +92 -0
- package/lib/nfs/v4/server/Nfsv4TcpServer.js.map +1 -0
- package/lib/nfs/v4/server/operations/ByteRangeLock.d.ts +79 -0
- package/lib/nfs/v4/server/operations/ByteRangeLock.js +63 -0
- package/lib/nfs/v4/server/operations/ByteRangeLock.js.map +1 -0
- package/lib/nfs/v4/server/operations/ClientRecord.d.ts +110 -0
- package/lib/nfs/v4/server/operations/ClientRecord.js +70 -0
- package/lib/nfs/v4/server/operations/ClientRecord.js.map +1 -0
- package/lib/nfs/v4/server/operations/FilesystemStats.d.ts +30 -0
- package/lib/nfs/v4/server/operations/FilesystemStats.js +30 -0
- package/lib/nfs/v4/server/operations/FilesystemStats.js.map +1 -0
- package/lib/nfs/v4/server/operations/LockOwnerState.d.ts +82 -0
- package/lib/nfs/v4/server/operations/LockOwnerState.js +57 -0
- package/lib/nfs/v4/server/operations/LockOwnerState.js.map +1 -0
- package/lib/nfs/v4/server/operations/LockStateid.d.ts +64 -0
- package/lib/nfs/v4/server/operations/LockStateid.js +58 -0
- package/lib/nfs/v4/server/operations/LockStateid.js.map +1 -0
- package/lib/nfs/v4/server/operations/Nfsv4Operations.d.ts +45 -0
- package/lib/nfs/v4/server/operations/Nfsv4Operations.js +3 -0
- package/lib/nfs/v4/server/operations/Nfsv4Operations.js.map +1 -0
- package/lib/nfs/v4/server/operations/Nfsv4OperationsNotImpl.d.ts +42 -0
- package/lib/nfs/v4/server/operations/Nfsv4OperationsNotImpl.js +159 -0
- package/lib/nfs/v4/server/operations/Nfsv4OperationsNotImpl.js.map +1 -0
- package/lib/nfs/v4/server/operations/OpenFileState.d.ts +102 -0
- package/lib/nfs/v4/server/operations/OpenFileState.js +68 -0
- package/lib/nfs/v4/server/operations/OpenFileState.js.map +1 -0
- package/lib/nfs/v4/server/operations/OpenOwnerState.d.ts +83 -0
- package/lib/nfs/v4/server/operations/OpenOwnerState.js +58 -0
- package/lib/nfs/v4/server/operations/OpenOwnerState.js.map +1 -0
- package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.d.ts +169 -0
- package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.js +1474 -0
- package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.js.map +1 -0
- package/lib/nfs/v4/server/operations/node/attrs.d.ts +17 -0
- package/lib/nfs/v4/server/operations/node/attrs.js +275 -0
- package/lib/nfs/v4/server/operations/node/attrs.js.map +1 -0
- package/lib/nfs/v4/server/operations/node/fh.d.ts +93 -0
- package/lib/nfs/v4/server/operations/node/fh.js +209 -0
- package/lib/nfs/v4/server/operations/node/fh.js.map +1 -0
- package/lib/nfs/v4/server/operations/node/util.d.ts +4 -0
- package/lib/nfs/v4/server/operations/node/util.js +17 -0
- package/lib/nfs/v4/server/operations/node/util.js.map +1 -0
- package/lib/nfs/v4/server/types.d.ts +4 -0
- package/lib/nfs/v4/server/types.js +3 -0
- package/lib/nfs/v4/server/types.js.map +1 -0
- package/lib/nfs/v4/server/util.d.ts +5 -0
- package/lib/nfs/v4/server/util.js +184 -0
- package/lib/nfs/v4/server/util.js.map +1 -0
- package/lib/nfs/v4/structs.d.ts +243 -56
- package/lib/nfs/v4/structs.js +367 -17
- package/lib/nfs/v4/structs.js.map +1 -1
- package/lib/resp/RespDecoder.d.ts +9 -0
- package/lib/resp/RespDecoder.js +93 -76
- package/lib/resp/RespDecoder.js.map +1 -1
- package/lib/resp/RespEncoder.d.ts +8 -0
- package/lib/resp/RespEncoder.js +107 -89
- package/lib/resp/RespEncoder.js.map +1 -1
- package/lib/resp/RespEncoderLegacy.d.ts +3 -0
- package/lib/resp/RespEncoderLegacy.js +7 -4
- package/lib/resp/RespEncoderLegacy.js.map +1 -1
- package/lib/resp/RespStreamingDecoder.d.ts +48 -0
- package/lib/resp/RespStreamingDecoder.js +48 -0
- package/lib/resp/RespStreamingDecoder.js.map +1 -1
- package/lib/resp/constants.d.ts +19 -19
- package/lib/rm/RmRecordDecoder.js.map +1 -1
- package/lib/rm/RmRecordEncoder.d.ts +17 -1
- package/lib/rm/RmRecordEncoder.js +40 -1
- package/lib/rm/RmRecordEncoder.js.map +1 -1
- package/lib/rpc/RpcMessageDecoder.d.ts +1 -1
- package/lib/rpc/RpcMessageDecoder.js +11 -8
- package/lib/rpc/RpcMessageDecoder.js.map +1 -1
- package/lib/rpc/RpcMessageEncoder.d.ts +2 -2
- package/lib/rpc/RpcMessageEncoder.js +6 -6
- package/lib/rpc/RpcMessageEncoder.js.map +1 -1
- package/lib/rpc/constants.d.ts +76 -28
- package/lib/rpc/constants.js +10 -0
- package/lib/rpc/constants.js.map +1 -1
- package/lib/ssh/SshDecoder.d.ts +47 -1
- package/lib/ssh/SshDecoder.js +52 -2
- package/lib/ssh/SshDecoder.js.map +1 -1
- package/lib/ssh/SshEncoder.d.ts +70 -1
- package/lib/ssh/SshEncoder.js +81 -8
- package/lib/ssh/SshEncoder.js.map +1 -1
- package/lib/ssh/index.d.ts +6 -0
- package/lib/ssh/index.js +6 -0
- package/lib/ssh/index.js.map +1 -1
- package/lib/ubjson/UbjsonDecoder.js +1 -1
- package/lib/ubjson/UbjsonDecoder.js.map +1 -1
- package/lib/ubjson/UbjsonEncoder.js +6 -5
- package/lib/ubjson/UbjsonEncoder.js.map +1 -1
- package/lib/util/CompressionTable.js +4 -4
- package/lib/util/CompressionTable.js.map +1 -1
- package/lib/util/DecompressionTable.js +3 -2
- package/lib/util/DecompressionTable.js.map +1 -1
- package/lib/ws/WsFrameDecoder.d.ts +18 -0
- package/lib/ws/WsFrameDecoder.js +18 -0
- package/lib/ws/WsFrameDecoder.js.map +1 -1
- package/lib/ws/WsFrameEncoder.d.ts +1 -1
- package/lib/ws/WsFrameEncoder.js +3 -3
- package/lib/ws/WsFrameEncoder.js.map +1 -1
- package/lib/ws/constants.js +5 -0
- package/lib/ws/constants.js.map +1 -1
- package/lib/xdr/XdrDecoder.d.ts +62 -0
- package/lib/xdr/XdrDecoder.js +73 -6
- package/lib/xdr/XdrDecoder.js.map +1 -1
- package/lib/xdr/XdrEncoder.d.ts +71 -0
- package/lib/xdr/XdrEncoder.js +88 -13
- package/lib/xdr/XdrEncoder.js.map +1 -1
- package/lib/xdr/XdrSchemaDecoder.d.ts +40 -0
- package/lib/xdr/XdrSchemaDecoder.js +52 -0
- package/lib/xdr/XdrSchemaDecoder.js.map +1 -1
- package/lib/xdr/XdrSchemaEncoder.d.ts +5 -0
- package/lib/xdr/XdrSchemaEncoder.js +9 -0
- package/lib/xdr/XdrSchemaEncoder.js.map +1 -1
- package/lib/xdr/XdrSchemaValidator.d.ts +9 -0
- package/lib/xdr/XdrSchemaValidator.js +42 -11
- package/lib/xdr/XdrSchemaValidator.js.map +1 -1
- package/lib/xdr/XdrUnion.d.ts +5 -0
- package/lib/xdr/XdrUnion.js +5 -0
- package/lib/xdr/XdrUnion.js.map +1 -1
- package/lib/xdr/index.d.ts +14 -0
- package/lib/xdr/index.js +14 -0
- package/lib/xdr/index.js.map +1 -1
- package/lib/xdr/types.d.ts +52 -0
- package/package.json +35 -56
- package/lib/nfs/v4/FullNfsv4Encoder.d.ts +0 -28
- package/lib/nfs/v4/FullNfsv4Encoder.js +0 -73
- package/lib/nfs/v4/FullNfsv4Encoder.js.map +0 -1
package/lib/avro/AvroEncoder.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AvroEncoder = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Apache Avro binary encoder for basic value encoding.
|
|
6
|
+
* Implements the Avro binary encoding specification without schema validation.
|
|
7
|
+
* Based on https://avro.apache.org/docs/1.12.0/specification/
|
|
8
|
+
*/
|
|
4
9
|
class AvroEncoder {
|
|
5
10
|
constructor(writer) {
|
|
6
11
|
this.writer = writer;
|
|
@@ -11,6 +16,9 @@ class AvroEncoder {
|
|
|
11
16
|
this.writeAny(value);
|
|
12
17
|
return writer.flush();
|
|
13
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Called when the encoder encounters a value that it does not know how to encode.
|
|
21
|
+
*/
|
|
14
22
|
writeUnknown(value) {
|
|
15
23
|
this.writeNull();
|
|
16
24
|
}
|
|
@@ -25,8 +33,8 @@ class AvroEncoder {
|
|
|
25
33
|
case 'object': {
|
|
26
34
|
if (value === null)
|
|
27
35
|
return this.writeNull();
|
|
28
|
-
const
|
|
29
|
-
switch (
|
|
36
|
+
const construct = value.constructor;
|
|
37
|
+
switch (construct) {
|
|
30
38
|
case Object:
|
|
31
39
|
return this.writeObj(value);
|
|
32
40
|
case Array:
|
|
@@ -45,14 +53,27 @@ class AvroEncoder {
|
|
|
45
53
|
return this.writeUnknown(value);
|
|
46
54
|
}
|
|
47
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Writes an Avro null value.
|
|
58
|
+
*/
|
|
48
59
|
writeNull() {
|
|
60
|
+
// Null values are encoded as zero bytes
|
|
49
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Writes an Avro boolean value.
|
|
64
|
+
*/
|
|
50
65
|
writeBoolean(bool) {
|
|
51
66
|
this.writer.u8(bool ? 1 : 0);
|
|
52
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Writes an Avro int value using zigzag encoding.
|
|
70
|
+
*/
|
|
53
71
|
writeInt(int) {
|
|
54
72
|
this.writeVarIntSigned(this.encodeZigZag32(Math.trunc(int)));
|
|
55
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Writes an Avro long value using zigzag encoding.
|
|
76
|
+
*/
|
|
56
77
|
writeLong(long) {
|
|
57
78
|
if (typeof long === 'bigint') {
|
|
58
79
|
this.writeVarLong(this.encodeZigZag64(long));
|
|
@@ -61,33 +82,49 @@ class AvroEncoder {
|
|
|
61
82
|
this.writeVarLong(this.encodeZigZag64(BigInt(Math.trunc(long))));
|
|
62
83
|
}
|
|
63
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Writes an Avro float value using IEEE 754 single-precision.
|
|
87
|
+
*/
|
|
64
88
|
writeFloatAvro(float) {
|
|
65
89
|
const writer = this.writer;
|
|
66
90
|
writer.ensureCapacity(4);
|
|
67
|
-
writer.view.setFloat32(writer.x, float, true);
|
|
91
|
+
writer.view.setFloat32(writer.x, float, true); // little-endian
|
|
68
92
|
writer.move(4);
|
|
69
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Writes an Avro double value using IEEE 754 double-precision.
|
|
96
|
+
*/
|
|
70
97
|
writeDouble(double) {
|
|
71
98
|
const writer = this.writer;
|
|
72
99
|
writer.ensureCapacity(8);
|
|
73
|
-
writer.view.setFloat64(writer.x, double, true);
|
|
100
|
+
writer.view.setFloat64(writer.x, double, true); // little-endian
|
|
74
101
|
writer.move(8);
|
|
75
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Writes an Avro bytes value with length-prefixed encoding.
|
|
105
|
+
*/
|
|
76
106
|
writeBin(bytes) {
|
|
77
107
|
this.writeVarIntUnsigned(bytes.length);
|
|
78
108
|
this.writer.buf(bytes, bytes.length);
|
|
79
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Writes an Avro string value with UTF-8 encoding and length prefix.
|
|
112
|
+
*/
|
|
80
113
|
writeStr(str) {
|
|
81
114
|
const writer = this.writer;
|
|
82
|
-
const maxSize = str.length * 4;
|
|
83
|
-
writer.ensureCapacity(5 + maxSize);
|
|
115
|
+
const maxSize = str.length * 4; // Max UTF-8 bytes for string
|
|
116
|
+
writer.ensureCapacity(5 + maxSize); // 5 bytes max for varint length
|
|
117
|
+
// Reserve space for length (we'll come back to fill this)
|
|
84
118
|
const lengthOffset = writer.x;
|
|
85
|
-
writer.x += 5;
|
|
119
|
+
writer.x += 5; // Max varint size
|
|
120
|
+
// Write the string and get actual byte count
|
|
86
121
|
const bytesWritten = writer.utf8(str);
|
|
87
122
|
const endPos = writer.x;
|
|
123
|
+
// Go back to encode the actual length
|
|
88
124
|
writer.x = lengthOffset;
|
|
89
125
|
this.writeVarIntUnsigned(bytesWritten);
|
|
90
126
|
const actualLengthSize = writer.x - lengthOffset;
|
|
127
|
+
// If we reserved more space than needed, shift the string data
|
|
91
128
|
if (actualLengthSize < 5) {
|
|
92
129
|
const stringStart = lengthOffset + 5;
|
|
93
130
|
const stringData = writer.uint8.slice(stringStart, endPos);
|
|
@@ -98,14 +135,20 @@ class AvroEncoder {
|
|
|
98
135
|
writer.x = endPos;
|
|
99
136
|
}
|
|
100
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Writes an Avro array with length-prefixed encoding.
|
|
140
|
+
*/
|
|
101
141
|
writeArr(arr) {
|
|
102
142
|
this.writeVarIntUnsigned(arr.length);
|
|
103
143
|
const length = arr.length;
|
|
104
144
|
for (let i = 0; i < length; i++) {
|
|
105
145
|
this.writeAny(arr[i]);
|
|
106
146
|
}
|
|
107
|
-
this.writeVarIntUnsigned(0);
|
|
147
|
+
this.writeVarIntUnsigned(0); // End of array marker
|
|
108
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Writes an Avro map with length-prefixed encoding.
|
|
151
|
+
*/
|
|
109
152
|
writeObj(obj) {
|
|
110
153
|
const entries = Object.entries(obj);
|
|
111
154
|
const length = entries.length;
|
|
@@ -115,8 +158,12 @@ class AvroEncoder {
|
|
|
115
158
|
this.writeStr(entry[0]);
|
|
116
159
|
this.writeAny(entry[1]);
|
|
117
160
|
}
|
|
118
|
-
this.writeVarIntUnsigned(0);
|
|
161
|
+
this.writeVarIntUnsigned(0); // End of map marker
|
|
119
162
|
}
|
|
163
|
+
// BinaryJsonEncoder interface methods
|
|
164
|
+
/**
|
|
165
|
+
* Generic number writing - determines type based on value
|
|
166
|
+
*/
|
|
120
167
|
writeNumber(num) {
|
|
121
168
|
if (Number.isInteger(num)) {
|
|
122
169
|
if (num >= -2147483648 && num <= 2147483647) {
|
|
@@ -130,44 +177,69 @@ class AvroEncoder {
|
|
|
130
177
|
this.writeDouble(num);
|
|
131
178
|
}
|
|
132
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Writes an integer value
|
|
182
|
+
*/
|
|
133
183
|
writeInteger(int) {
|
|
134
184
|
this.writeInt(int);
|
|
135
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Writes an unsigned integer value
|
|
188
|
+
*/
|
|
136
189
|
writeUInteger(uint) {
|
|
137
190
|
this.writeInt(uint);
|
|
138
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Writes a float value (interface method)
|
|
194
|
+
*/
|
|
139
195
|
writeFloat(float) {
|
|
140
196
|
this.writeFloatValue(float);
|
|
141
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Writes a float value using IEEE 754 single-precision.
|
|
200
|
+
*/
|
|
142
201
|
writeFloatValue(float) {
|
|
143
202
|
const writer = this.writer;
|
|
144
203
|
writer.ensureCapacity(4);
|
|
145
|
-
writer.view.setFloat32(writer.x, float, true);
|
|
204
|
+
writer.view.setFloat32(writer.x, float, true); // little-endian
|
|
146
205
|
writer.move(4);
|
|
147
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Writes an ASCII string (same as regular string in Avro)
|
|
209
|
+
*/
|
|
148
210
|
writeAsciiStr(str) {
|
|
149
211
|
const writer = this.writer;
|
|
150
212
|
this.writeVarIntUnsigned(str.length);
|
|
151
213
|
writer.ascii(str);
|
|
152
214
|
}
|
|
215
|
+
// Utility methods for Avro encoding
|
|
216
|
+
/**
|
|
217
|
+
* Encodes a variable-length integer (for signed values with zigzag)
|
|
218
|
+
*/
|
|
153
219
|
writeVarIntSigned(value) {
|
|
154
220
|
const writer = this.writer;
|
|
155
|
-
let n = value >>> 0;
|
|
221
|
+
let n = value >>> 0; // Convert to unsigned 32-bit
|
|
156
222
|
while (n >= 0x80) {
|
|
157
223
|
writer.u8((n & 0x7f) | 0x80);
|
|
158
224
|
n >>>= 7;
|
|
159
225
|
}
|
|
160
226
|
writer.u8(n & 0x7f);
|
|
161
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Encodes a variable-length integer (for unsigned values like lengths)
|
|
230
|
+
*/
|
|
162
231
|
writeVarIntUnsigned(value) {
|
|
163
232
|
const writer = this.writer;
|
|
164
|
-
let n = value >>> 0;
|
|
233
|
+
let n = value >>> 0; // Convert to unsigned 32-bit
|
|
165
234
|
while (n >= 0x80) {
|
|
166
235
|
writer.u8((n & 0x7f) | 0x80);
|
|
167
236
|
n >>>= 7;
|
|
168
237
|
}
|
|
169
238
|
writer.u8(n & 0x7f);
|
|
170
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Encodes a variable-length long using Avro's encoding
|
|
242
|
+
*/
|
|
171
243
|
writeVarLong(value) {
|
|
172
244
|
const writer = this.writer;
|
|
173
245
|
let n = value;
|
|
@@ -179,9 +251,15 @@ class AvroEncoder {
|
|
|
179
251
|
}
|
|
180
252
|
writer.u8(Number(n & mask));
|
|
181
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Encodes a 32-bit integer using zigzag encoding
|
|
256
|
+
*/
|
|
182
257
|
encodeZigZag32(value) {
|
|
183
258
|
return (value << 1) ^ (value >> 31);
|
|
184
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Encodes a 64-bit integer using zigzag encoding
|
|
262
|
+
*/
|
|
185
263
|
encodeZigZag64(value) {
|
|
186
264
|
return (value << BigInt(1)) ^ (value >> BigInt(63));
|
|
187
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvroEncoder.js","sourceRoot":"","sources":["../../src/avro/AvroEncoder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AvroEncoder.js","sourceRoot":"","sources":["../../src/avro/AvroEncoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,79 @@
|
|
|
1
1
|
import { Reader } from '@jsonjoy.com/buffers/lib/Reader';
|
|
2
2
|
import type { AvroSchema } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Apache Avro binary decoder with schema validation and decoding.
|
|
5
|
+
* Decodes values according to provided Avro schemas with proper validation.
|
|
6
|
+
* Based on https://avro.apache.org/docs/1.12.0/specification/
|
|
7
|
+
*/
|
|
3
8
|
export declare class AvroSchemaDecoder {
|
|
4
9
|
readonly reader: Reader;
|
|
5
10
|
private decoder;
|
|
6
11
|
private validator;
|
|
7
12
|
private namedSchemas;
|
|
8
13
|
constructor(reader?: Reader);
|
|
14
|
+
/**
|
|
15
|
+
* Decodes a value according to the provided schema.
|
|
16
|
+
*/
|
|
9
17
|
decode(data: Uint8Array, schema: AvroSchema): unknown;
|
|
18
|
+
/**
|
|
19
|
+
* Reads a value according to its schema.
|
|
20
|
+
*/
|
|
10
21
|
private readValue;
|
|
22
|
+
/**
|
|
23
|
+
* Reads a record value according to the record schema.
|
|
24
|
+
*/
|
|
11
25
|
private readRecord;
|
|
26
|
+
/**
|
|
27
|
+
* Reads an enum value according to the enum schema.
|
|
28
|
+
*/
|
|
12
29
|
private readEnum;
|
|
30
|
+
/**
|
|
31
|
+
* Reads an array value according to the array schema.
|
|
32
|
+
*/
|
|
13
33
|
private readArray;
|
|
34
|
+
/**
|
|
35
|
+
* Reads a map value according to the map schema.
|
|
36
|
+
*/
|
|
14
37
|
private readMap;
|
|
38
|
+
/**
|
|
39
|
+
* Reads a union value according to the union schema.
|
|
40
|
+
*/
|
|
15
41
|
private readUnion;
|
|
42
|
+
/**
|
|
43
|
+
* Reads a fixed value according to the fixed schema.
|
|
44
|
+
*/
|
|
16
45
|
private readFixed;
|
|
46
|
+
/**
|
|
47
|
+
* Reads a null value with schema validation.
|
|
48
|
+
*/
|
|
17
49
|
readNull(schema: AvroSchema): null;
|
|
50
|
+
/**
|
|
51
|
+
* Reads a boolean value with schema validation.
|
|
52
|
+
*/
|
|
18
53
|
readBoolean(schema: AvroSchema): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Reads an int value with schema validation.
|
|
56
|
+
*/
|
|
19
57
|
readInt(schema: AvroSchema): number;
|
|
58
|
+
/**
|
|
59
|
+
* Reads a long value with schema validation.
|
|
60
|
+
*/
|
|
20
61
|
readLong(schema: AvroSchema): number | bigint;
|
|
62
|
+
/**
|
|
63
|
+
* Reads a float value with schema validation.
|
|
64
|
+
*/
|
|
21
65
|
readFloat(schema: AvroSchema): number;
|
|
66
|
+
/**
|
|
67
|
+
* Reads a double value with schema validation.
|
|
68
|
+
*/
|
|
22
69
|
readDouble(schema: AvroSchema): number;
|
|
70
|
+
/**
|
|
71
|
+
* Reads a bytes value with schema validation.
|
|
72
|
+
*/
|
|
23
73
|
readBytes(schema: AvroSchema): Uint8Array;
|
|
74
|
+
/**
|
|
75
|
+
* Reads a string value with schema validation.
|
|
76
|
+
*/
|
|
24
77
|
readString(schema: AvroSchema): string;
|
|
25
78
|
private validateSchemaType;
|
|
26
79
|
private resolveSchema;
|
|
@@ -4,6 +4,11 @@ exports.AvroSchemaDecoder = void 0;
|
|
|
4
4
|
const Reader_1 = require("@jsonjoy.com/buffers/lib/Reader");
|
|
5
5
|
const AvroDecoder_1 = require("./AvroDecoder");
|
|
6
6
|
const AvroSchemaValidator_1 = require("./AvroSchemaValidator");
|
|
7
|
+
/**
|
|
8
|
+
* Apache Avro binary decoder with schema validation and decoding.
|
|
9
|
+
* Decodes values according to provided Avro schemas with proper validation.
|
|
10
|
+
* Based on https://avro.apache.org/docs/1.12.0/specification/
|
|
11
|
+
*/
|
|
7
12
|
class AvroSchemaDecoder {
|
|
8
13
|
constructor(reader = new Reader_1.Reader()) {
|
|
9
14
|
this.reader = reader;
|
|
@@ -12,15 +17,22 @@ class AvroSchemaDecoder {
|
|
|
12
17
|
this.decoder.reader = reader;
|
|
13
18
|
this.validator = new AvroSchemaValidator_1.AvroSchemaValidator();
|
|
14
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Decodes a value according to the provided schema.
|
|
22
|
+
*/
|
|
15
23
|
decode(data, schema) {
|
|
16
24
|
this.reader.reset(data);
|
|
17
25
|
this.namedSchemas.clear();
|
|
26
|
+
// Validate schema first
|
|
18
27
|
if (!this.validator.validateSchema(schema)) {
|
|
19
28
|
throw new Error('Invalid Avro schema');
|
|
20
29
|
}
|
|
21
30
|
this.collectNamedSchemas(schema);
|
|
22
31
|
return this.readValue(schema);
|
|
23
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Reads a value according to its schema.
|
|
35
|
+
*/
|
|
24
36
|
readValue(schema) {
|
|
25
37
|
const resolvedSchema = this.resolveSchema(schema);
|
|
26
38
|
if (typeof resolvedSchema === 'string') {
|
|
@@ -63,6 +75,9 @@ class AvroSchemaDecoder {
|
|
|
63
75
|
throw new Error(`Unknown schema type: ${resolvedSchema.type}`);
|
|
64
76
|
}
|
|
65
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Reads a record value according to the record schema.
|
|
80
|
+
*/
|
|
66
81
|
readRecord(schema) {
|
|
67
82
|
const result = {};
|
|
68
83
|
for (let i = 0; i < schema.fields.length; i++) {
|
|
@@ -76,6 +91,9 @@ class AvroSchemaDecoder {
|
|
|
76
91
|
}
|
|
77
92
|
return result;
|
|
78
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Reads an enum value according to the enum schema.
|
|
96
|
+
*/
|
|
79
97
|
readEnum(schema) {
|
|
80
98
|
const index = this.decoder.readEnum();
|
|
81
99
|
if (index < 0 || index >= schema.symbols.length) {
|
|
@@ -83,28 +101,49 @@ class AvroSchemaDecoder {
|
|
|
83
101
|
}
|
|
84
102
|
return schema.symbols[index];
|
|
85
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Reads an array value according to the array schema.
|
|
106
|
+
*/
|
|
86
107
|
readArray(schema) {
|
|
87
108
|
return this.decoder.readArray(() => this.readValue(schema.items));
|
|
88
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Reads a map value according to the map schema.
|
|
112
|
+
*/
|
|
89
113
|
readMap(schema) {
|
|
90
114
|
return this.decoder.readMap(() => this.readValue(schema.values));
|
|
91
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Reads a union value according to the union schema.
|
|
118
|
+
*/
|
|
92
119
|
readUnion(schema) {
|
|
93
120
|
const schemaReaders = schema.map((subSchema) => () => this.readValue(subSchema));
|
|
94
121
|
const result = this.decoder.readUnion(schemaReaders);
|
|
95
122
|
return result.value;
|
|
96
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Reads a fixed value according to the fixed schema.
|
|
126
|
+
*/
|
|
97
127
|
readFixed(schema) {
|
|
98
128
|
return this.decoder.readFixed(schema.size);
|
|
99
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Reads a null value with schema validation.
|
|
132
|
+
*/
|
|
100
133
|
readNull(schema) {
|
|
101
134
|
this.validateSchemaType(schema, 'null');
|
|
102
135
|
return this.decoder.readNull();
|
|
103
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Reads a boolean value with schema validation.
|
|
139
|
+
*/
|
|
104
140
|
readBoolean(schema) {
|
|
105
141
|
this.validateSchemaType(schema, 'boolean');
|
|
106
142
|
return this.decoder.readBoolean();
|
|
107
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Reads an int value with schema validation.
|
|
146
|
+
*/
|
|
108
147
|
readInt(schema) {
|
|
109
148
|
this.validateSchemaType(schema, 'int');
|
|
110
149
|
const value = this.decoder.readInt();
|
|
@@ -113,22 +152,37 @@ class AvroSchemaDecoder {
|
|
|
113
152
|
}
|
|
114
153
|
return value;
|
|
115
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Reads a long value with schema validation.
|
|
157
|
+
*/
|
|
116
158
|
readLong(schema) {
|
|
117
159
|
this.validateSchemaType(schema, 'long');
|
|
118
160
|
return this.decoder.readLong();
|
|
119
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Reads a float value with schema validation.
|
|
164
|
+
*/
|
|
120
165
|
readFloat(schema) {
|
|
121
166
|
this.validateSchemaType(schema, 'float');
|
|
122
167
|
return this.decoder.readFloat();
|
|
123
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Reads a double value with schema validation.
|
|
171
|
+
*/
|
|
124
172
|
readDouble(schema) {
|
|
125
173
|
this.validateSchemaType(schema, 'double');
|
|
126
174
|
return this.decoder.readDouble();
|
|
127
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Reads a bytes value with schema validation.
|
|
178
|
+
*/
|
|
128
179
|
readBytes(schema) {
|
|
129
180
|
this.validateSchemaType(schema, 'bytes');
|
|
130
181
|
return this.decoder.readBytes();
|
|
131
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Reads a string value with schema validation.
|
|
185
|
+
*/
|
|
132
186
|
readString(schema) {
|
|
133
187
|
this.validateSchemaType(schema, 'string');
|
|
134
188
|
return this.decoder.readString();
|
|
@@ -157,22 +211,25 @@ class AvroSchemaDecoder {
|
|
|
157
211
|
}
|
|
158
212
|
if (typeof schema === 'object' && schema !== null) {
|
|
159
213
|
switch (schema.type) {
|
|
160
|
-
case 'record':
|
|
214
|
+
case 'record': {
|
|
161
215
|
const recordSchema = schema;
|
|
162
216
|
const recordFullName = this.getFullName(recordSchema.name, recordSchema.namespace);
|
|
163
217
|
this.namedSchemas.set(recordFullName, recordSchema);
|
|
164
218
|
recordSchema.fields.forEach((field) => this.collectNamedSchemas(field.type));
|
|
165
219
|
break;
|
|
166
|
-
|
|
220
|
+
}
|
|
221
|
+
case 'enum': {
|
|
167
222
|
const enumSchema = schema;
|
|
168
223
|
const enumFullName = this.getFullName(enumSchema.name, enumSchema.namespace);
|
|
169
224
|
this.namedSchemas.set(enumFullName, enumSchema);
|
|
170
225
|
break;
|
|
171
|
-
|
|
226
|
+
}
|
|
227
|
+
case 'fixed': {
|
|
172
228
|
const fixedSchema = schema;
|
|
173
229
|
const fixedFullName = this.getFullName(fixedSchema.name, fixedSchema.namespace);
|
|
174
230
|
this.namedSchemas.set(fixedFullName, fixedSchema);
|
|
175
231
|
break;
|
|
232
|
+
}
|
|
176
233
|
case 'array':
|
|
177
234
|
this.collectNamedSchemas(schema.items);
|
|
178
235
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvroSchemaDecoder.js","sourceRoot":"","sources":["../../src/avro/AvroSchemaDecoder.ts"],"names":[],"mappings":";;;AAAA,4DAAuD;AACvD,+CAA0C;AAC1C,+DAA0D;
|
|
1
|
+
{"version":3,"file":"AvroSchemaDecoder.js","sourceRoot":"","sources":["../../src/avro/AvroSchemaDecoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,98 @@
|
|
|
1
1
|
import type { IWriter, IWriterGrowable } from '@jsonjoy.com/buffers/lib';
|
|
2
2
|
import type { AvroSchema, AvroRecordSchema, AvroEnumSchema, AvroArraySchema, AvroMapSchema, AvroUnionSchema, AvroFixedSchema, AvroNullSchema } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Apache Avro binary encoder with schema validation and encoding.
|
|
5
|
+
* Encodes values according to provided Avro schemas with proper validation.
|
|
6
|
+
* Based on https://avro.apache.org/docs/1.12.0/specification/
|
|
7
|
+
*/
|
|
3
8
|
export declare class AvroSchemaEncoder {
|
|
4
9
|
readonly writer: IWriter & IWriterGrowable;
|
|
5
10
|
private encoder;
|
|
6
11
|
private validator;
|
|
7
12
|
private namedSchemas;
|
|
8
13
|
constructor(writer: IWriter & IWriterGrowable);
|
|
14
|
+
/**
|
|
15
|
+
* Encodes a value according to the provided schema.
|
|
16
|
+
*/
|
|
9
17
|
encode(value: unknown, schema: AvroSchema, selectedIndex?: number): Uint8Array;
|
|
18
|
+
/**
|
|
19
|
+
* Writes a null value with schema validation.
|
|
20
|
+
*/
|
|
10
21
|
writeNull(schema: AvroNullSchema | AvroSchema): void;
|
|
22
|
+
/**
|
|
23
|
+
* Writes a boolean value with schema validation.
|
|
24
|
+
*/
|
|
11
25
|
writeBoolean(value: boolean, schema: AvroSchema): void;
|
|
26
|
+
/**
|
|
27
|
+
* Writes an int value with schema validation.
|
|
28
|
+
*/
|
|
12
29
|
writeInt(value: number, schema: AvroSchema): void;
|
|
30
|
+
/**
|
|
31
|
+
* Writes a long value with schema validation.
|
|
32
|
+
*/
|
|
13
33
|
writeLong(value: number | bigint, schema: AvroSchema): void;
|
|
34
|
+
/**
|
|
35
|
+
* Writes a float value with schema validation.
|
|
36
|
+
*/
|
|
14
37
|
writeFloat(value: number, schema: AvroSchema): void;
|
|
38
|
+
/**
|
|
39
|
+
* Writes a double value with schema validation.
|
|
40
|
+
*/
|
|
15
41
|
writeDouble(value: number, schema: AvroSchema): void;
|
|
42
|
+
/**
|
|
43
|
+
* Writes a bytes value with schema validation.
|
|
44
|
+
*/
|
|
16
45
|
writeBytes(value: Uint8Array, schema: AvroSchema): void;
|
|
46
|
+
/**
|
|
47
|
+
* Writes a string value with schema validation.
|
|
48
|
+
*/
|
|
17
49
|
writeString(value: string, schema: AvroSchema): void;
|
|
50
|
+
/**
|
|
51
|
+
* Writes a record value with schema validation.
|
|
52
|
+
*/
|
|
18
53
|
writeRecord(value: Record<string, unknown>, schema: AvroRecordSchema): void;
|
|
54
|
+
/**
|
|
55
|
+
* Writes an enum value with schema validation.
|
|
56
|
+
*/
|
|
19
57
|
writeEnum(value: string, schema: AvroEnumSchema): void;
|
|
58
|
+
/**
|
|
59
|
+
* Writes an array value with schema validation.
|
|
60
|
+
*/
|
|
20
61
|
writeArray(value: unknown[], schema: AvroArraySchema): void;
|
|
62
|
+
/**
|
|
63
|
+
* Writes a map value with schema validation.
|
|
64
|
+
*/
|
|
21
65
|
writeMap(value: Record<string, unknown>, schema: AvroMapSchema): void;
|
|
66
|
+
/**
|
|
67
|
+
* Writes a union value with schema validation.
|
|
68
|
+
*/
|
|
22
69
|
writeUnion(value: unknown, schema: AvroUnionSchema, selectedIndex?: number): void;
|
|
70
|
+
/**
|
|
71
|
+
* Writes a fixed value with schema validation.
|
|
72
|
+
*/
|
|
23
73
|
writeFixed(value: Uint8Array, schema: AvroFixedSchema): void;
|
|
74
|
+
/**
|
|
75
|
+
* Generic number writing with schema validation.
|
|
76
|
+
*/
|
|
24
77
|
writeNumber(value: number, schema: AvroSchema): void;
|
|
78
|
+
/**
|
|
79
|
+
* Writes a value according to its schema.
|
|
80
|
+
*/
|
|
25
81
|
private writeValue;
|
|
26
82
|
private validateSchemaType;
|
|
27
83
|
private resolveSchema;
|
|
28
84
|
private collectNamedSchemas;
|
|
29
85
|
private getFullName;
|
|
86
|
+
/**
|
|
87
|
+
* Writes a variable-length integer using Avro's encoding (for lengths)
|
|
88
|
+
*/
|
|
30
89
|
private writeVarIntUnsigned;
|
|
90
|
+
/**
|
|
91
|
+
* Writes a variable-length integer using Avro's encoding (for signed values with zigzag)
|
|
92
|
+
*/
|
|
31
93
|
private writeVarIntSigned;
|
|
94
|
+
/**
|
|
95
|
+
* Encodes a 32-bit integer using zigzag encoding
|
|
96
|
+
*/
|
|
32
97
|
private encodeZigZag32;
|
|
33
98
|
}
|