@jsonjoy.com/json-pack 1.21.0 → 17.60.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 +59 -51
- 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 +0 -2
- package/lib/nfs/v4/Nfsv4Decoder.js +96 -102
- package/lib/nfs/v4/Nfsv4Decoder.js.map +1 -1
- package/lib/nfs/v4/Nfsv4Encoder.d.ts +2 -2
- package/lib/nfs/v4/Nfsv4Encoder.js +1 -1
- package/lib/nfs/v4/Nfsv4Encoder.js.map +1 -1
- package/lib/nfs/v4/Nfsv4FullEncoder.d.ts +4 -4
- package/lib/nfs/v4/Nfsv4FullEncoder.js +4 -4
- package/lib/nfs/v4/Nfsv4FullEncoder.js.map +1 -1
- package/lib/nfs/v4/attributes.d.ts +62 -0
- package/lib/nfs/v4/attributes.js +209 -147
- package/lib/nfs/v4/attributes.js.map +1 -1
- package/lib/nfs/v4/builder.d.ts +274 -1
- package/lib/nfs/v4/builder.js +283 -10
- package/lib/nfs/v4/builder.js.map +1 -1
- package/lib/nfs/v4/client/NfsFsDir.d.ts +4 -1
- package/lib/nfs/v4/client/NfsFsDir.js +8 -5
- package/lib/nfs/v4/client/NfsFsDir.js.map +1 -1
- package/lib/nfs/v4/client/NfsFsDirent.d.ts +3 -0
- package/lib/nfs/v4/client/NfsFsDirent.js +10 -7
- package/lib/nfs/v4/client/NfsFsDirent.js.map +1 -1
- package/lib/nfs/v4/client/NfsFsFileHandle.d.ts +4 -3
- package/lib/nfs/v4/client/NfsFsFileHandle.js +13 -10
- package/lib/nfs/v4/client/NfsFsFileHandle.js.map +1 -1
- package/lib/nfs/v4/client/NfsFsStats.d.ts +3 -0
- package/lib/nfs/v4/client/NfsFsStats.js +10 -7
- package/lib/nfs/v4/client/NfsFsStats.js.map +1 -1
- package/lib/nfs/v4/client/Nfsv4FsClient.d.ts +2 -3
- package/lib/nfs/v4/client/Nfsv4FsClient.js +92 -92
- package/lib/nfs/v4/client/Nfsv4FsClient.js.map +1 -1
- package/lib/nfs/v4/client/Nfsv4TcpClient.d.ts +6 -6
- package/lib/nfs/v4/client/Nfsv4TcpClient.js +3 -3
- package/lib/nfs/v4/client/Nfsv4TcpClient.js.map +1 -1
- package/lib/nfs/v4/client/types.d.ts +1 -1
- package/lib/nfs/v4/constants.d.ts +78 -1
- package/lib/nfs/v4/format.d.ts +1 -1
- package/lib/nfs/v4/format.js +229 -229
- package/lib/nfs/v4/format.js.map +1 -1
- package/lib/nfs/v4/messages.js +101 -101
- package/lib/nfs/v4/messages.js.map +1 -1
- package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.d.ts +20 -1
- package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.js +29 -8
- package/lib/nfs/v4/server/Nfsv4CompoundProcCtx.js.map +1 -1
- package/lib/nfs/v4/server/Nfsv4Connection.d.ts +6 -3
- package/lib/nfs/v4/server/Nfsv4Connection.js +11 -8
- package/lib/nfs/v4/server/Nfsv4Connection.js.map +1 -1
- package/lib/nfs/v4/server/Nfsv4TcpServer.d.ts +2 -3
- package/lib/nfs/v4/server/Nfsv4TcpServer.js +1 -0
- package/lib/nfs/v4/server/Nfsv4TcpServer.js.map +1 -1
- package/lib/nfs/v4/server/operations/ByteRangeLock.d.ts +69 -1
- package/lib/nfs/v4/server/operations/ByteRangeLock.js +43 -1
- package/lib/nfs/v4/server/operations/ByteRangeLock.js.map +1 -1
- package/lib/nfs/v4/server/operations/ClientRecord.d.ts +98 -1
- package/lib/nfs/v4/server/operations/ClientRecord.js +54 -1
- package/lib/nfs/v4/server/operations/ClientRecord.js.map +1 -1
- package/lib/nfs/v4/server/operations/FilesystemStats.d.ts +22 -1
- package/lib/nfs/v4/server/operations/FilesystemStats.js +16 -1
- package/lib/nfs/v4/server/operations/FilesystemStats.js.map +1 -1
- package/lib/nfs/v4/server/operations/LockOwnerState.d.ts +75 -2
- package/lib/nfs/v4/server/operations/LockOwnerState.js +43 -1
- package/lib/nfs/v4/server/operations/LockOwnerState.js.map +1 -1
- package/lib/nfs/v4/server/operations/LockStateid.d.ts +55 -1
- package/lib/nfs/v4/server/operations/LockStateid.js +37 -1
- package/lib/nfs/v4/server/operations/LockStateid.js.map +1 -1
- package/lib/nfs/v4/server/operations/Nfsv4Operations.d.ts +2 -1
- package/lib/nfs/v4/server/operations/Nfsv4OperationsNotImpl.d.ts +2 -2
- package/lib/nfs/v4/server/operations/OpenFileState.d.ts +90 -2
- package/lib/nfs/v4/server/operations/OpenFileState.js +52 -1
- package/lib/nfs/v4/server/operations/OpenFileState.js.map +1 -1
- package/lib/nfs/v4/server/operations/OpenOwnerState.d.ts +76 -2
- package/lib/nfs/v4/server/operations/OpenOwnerState.js +44 -1
- package/lib/nfs/v4/server/operations/OpenOwnerState.js.map +1 -1
- package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.d.ts +73 -3
- package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.js +261 -187
- package/lib/nfs/v4/server/operations/node/Nfsv4OperationsNode.js.map +1 -1
- package/lib/nfs/v4/server/operations/node/attrs.d.ts +13 -1
- package/lib/nfs/v4/server/operations/node/attrs.js +75 -62
- package/lib/nfs/v4/server/operations/node/attrs.js.map +1 -1
- package/lib/nfs/v4/server/operations/node/fh.d.ts +67 -2
- package/lib/nfs/v4/server/operations/node/fh.js +83 -21
- package/lib/nfs/v4/server/operations/node/fh.js.map +1 -1
- package/lib/nfs/v4/server/operations/node/util.js +4 -4
- package/lib/nfs/v4/server/operations/node/util.js.map +1 -1
- package/lib/nfs/v4/server/util.d.ts +0 -1
- package/lib/nfs/v4/server/util.js +40 -40
- package/lib/nfs/v4/structs.d.ts +136 -4
- package/lib/nfs/v4/structs.js +129 -0
- 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/RmRecordEncoder.d.ts +15 -1
- package/lib/rm/RmRecordEncoder.js +15 -1
- package/lib/rm/RmRecordEncoder.js.map +1 -1
- package/lib/rpc/RpcMessageDecoder.d.ts +1 -1
- package/lib/rpc/RpcMessageDecoder.js +8 -7
- 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 +46 -0
- package/lib/ssh/SshDecoder.js +52 -2
- package/lib/ssh/SshDecoder.js.map +1 -1
- package/lib/ssh/SshEncoder.d.ts +69 -0
- 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 +46 -0
- package/package.json +32 -55
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wrapping for MessagePack extension or CBOR tag value. When encoder
|
|
3
|
+
* encounters {@link JsonPackExtension} it will encode it as a MessagePack
|
|
4
|
+
* extension or CBOR tag. Likewise, the decoder will
|
|
5
|
+
* decode extensions into {@link JsonPackExtension}.
|
|
6
|
+
*
|
|
7
|
+
* @category Value
|
|
8
|
+
*/
|
|
1
9
|
export declare class JsonPackExtension<T = Uint8Array> {
|
|
2
10
|
readonly tag: number;
|
|
3
11
|
readonly val: T;
|
package/lib/JsonPackExtension.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JsonPackExtension = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A wrapping for MessagePack extension or CBOR tag value. When encoder
|
|
6
|
+
* encounters {@link JsonPackExtension} it will encode it as a MessagePack
|
|
7
|
+
* extension or CBOR tag. Likewise, the decoder will
|
|
8
|
+
* decode extensions into {@link JsonPackExtension}.
|
|
9
|
+
*
|
|
10
|
+
* @category Value
|
|
11
|
+
*/
|
|
4
12
|
class JsonPackExtension {
|
|
5
13
|
constructor(tag, val) {
|
|
6
14
|
this.tag = tag;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonPackExtension.js","sourceRoot":"","sources":["../src/JsonPackExtension.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"JsonPackExtension.js","sourceRoot":"","sources":["../src/JsonPackExtension.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,MAAa,iBAAiB;IAC5B,YACkB,GAAW,EACX,GAAM;QADN,QAAG,GAAH,GAAG,CAAQ;QACX,QAAG,GAAH,GAAG,CAAG;IACrB,CAAC;CACL;AALD,8CAKC"}
|
package/lib/JsonPackMpint.d.ts
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents an SSH multiprecision integer (mpint).
|
|
3
|
+
*
|
|
4
|
+
* An mpint is stored in two's complement format, 8 bits per byte, MSB first.
|
|
5
|
+
* According to RFC 4251:
|
|
6
|
+
* - Negative numbers have the value 1 as the most significant bit of the first byte
|
|
7
|
+
* - If the most significant bit would be set for a positive number, the number MUST be preceded by a zero byte
|
|
8
|
+
* - Unnecessary leading bytes with the value 0 or 255 MUST NOT be included
|
|
9
|
+
* - The value zero MUST be stored as a string with zero bytes of data
|
|
10
|
+
*/
|
|
1
11
|
export declare class JsonPackMpint {
|
|
12
|
+
/**
|
|
13
|
+
* The raw bytes representing the mpint in two's complement format, MSB first.
|
|
14
|
+
*/
|
|
2
15
|
readonly data: Uint8Array;
|
|
3
16
|
constructor(data: Uint8Array);
|
|
17
|
+
/**
|
|
18
|
+
* Create an mpint from a BigInt value.
|
|
19
|
+
*/
|
|
4
20
|
static fromBigInt(value: bigint): JsonPackMpint;
|
|
21
|
+
/**
|
|
22
|
+
* Convert the mpint to a BigInt value.
|
|
23
|
+
*/
|
|
5
24
|
toBigInt(): bigint;
|
|
25
|
+
/**
|
|
26
|
+
* Create an mpint from a number (limited to safe integer range).
|
|
27
|
+
*/
|
|
6
28
|
static fromNumber(value: number): JsonPackMpint;
|
|
29
|
+
/**
|
|
30
|
+
* Convert the mpint to a number (throws if out of safe integer range).
|
|
31
|
+
*/
|
|
7
32
|
toNumber(): number;
|
|
8
33
|
}
|
package/lib/JsonPackMpint.js
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JsonPackMpint = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Represents an SSH multiprecision integer (mpint).
|
|
6
|
+
*
|
|
7
|
+
* An mpint is stored in two's complement format, 8 bits per byte, MSB first.
|
|
8
|
+
* According to RFC 4251:
|
|
9
|
+
* - Negative numbers have the value 1 as the most significant bit of the first byte
|
|
10
|
+
* - If the most significant bit would be set for a positive number, the number MUST be preceded by a zero byte
|
|
11
|
+
* - Unnecessary leading bytes with the value 0 or 255 MUST NOT be included
|
|
12
|
+
* - The value zero MUST be stored as a string with zero bytes of data
|
|
13
|
+
*/
|
|
4
14
|
class JsonPackMpint {
|
|
5
15
|
constructor(data) {
|
|
6
16
|
this.data = data;
|
|
7
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Create an mpint from a BigInt value.
|
|
20
|
+
*/
|
|
8
21
|
static fromBigInt(value) {
|
|
9
22
|
if (value === BigInt(0)) {
|
|
10
23
|
return new JsonPackMpint(new Uint8Array(0));
|
|
@@ -12,43 +25,54 @@ class JsonPackMpint {
|
|
|
12
25
|
const negative = value < BigInt(0);
|
|
13
26
|
const bytes = [];
|
|
14
27
|
if (negative) {
|
|
28
|
+
// For negative numbers, work with two's complement
|
|
15
29
|
const absValue = -value;
|
|
16
30
|
const bitLength = absValue.toString(2).length;
|
|
17
|
-
const byteLength = Math.ceil((bitLength + 1) / 8);
|
|
31
|
+
const byteLength = Math.ceil((bitLength + 1) / 8); // +1 for sign bit
|
|
32
|
+
// Calculate two's complement
|
|
18
33
|
const twoComplement = (BigInt(1) << BigInt(byteLength * 8)) + value;
|
|
19
34
|
for (let i = byteLength - 1; i >= 0; i--) {
|
|
20
35
|
bytes.push(Number((twoComplement >> BigInt(i * 8)) & BigInt(0xff)));
|
|
21
36
|
}
|
|
37
|
+
// Ensure MSB is 1 for negative numbers
|
|
22
38
|
while (bytes.length > 0 && bytes[0] === 0xff && bytes.length > 1 && (bytes[1] & 0x80) !== 0) {
|
|
23
39
|
bytes.shift();
|
|
24
40
|
}
|
|
25
41
|
}
|
|
26
42
|
else {
|
|
43
|
+
// For positive numbers
|
|
27
44
|
let tempValue = value;
|
|
28
45
|
while (tempValue > BigInt(0)) {
|
|
29
46
|
bytes.unshift(Number(tempValue & BigInt(0xff)));
|
|
30
47
|
tempValue >>= BigInt(8);
|
|
31
48
|
}
|
|
49
|
+
// Add leading zero if MSB is set (to indicate positive number)
|
|
32
50
|
if (bytes[0] & 0x80) {
|
|
33
51
|
bytes.unshift(0);
|
|
34
52
|
}
|
|
35
53
|
}
|
|
36
54
|
return new JsonPackMpint(new Uint8Array(bytes));
|
|
37
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Convert the mpint to a BigInt value.
|
|
58
|
+
*/
|
|
38
59
|
toBigInt() {
|
|
39
60
|
if (this.data.length === 0) {
|
|
40
61
|
return BigInt(0);
|
|
41
62
|
}
|
|
42
63
|
const negative = (this.data[0] & 0x80) !== 0;
|
|
43
64
|
if (negative) {
|
|
65
|
+
// Two's complement for negative numbers
|
|
44
66
|
let value = BigInt(0);
|
|
45
67
|
for (let i = 0; i < this.data.length; i++) {
|
|
46
68
|
value = (value << BigInt(8)) | BigInt(this.data[i]);
|
|
47
69
|
}
|
|
70
|
+
// Convert from two's complement
|
|
48
71
|
const bitLength = this.data.length * 8;
|
|
49
72
|
return value - (BigInt(1) << BigInt(bitLength));
|
|
50
73
|
}
|
|
51
74
|
else {
|
|
75
|
+
// Positive number
|
|
52
76
|
let value = BigInt(0);
|
|
53
77
|
for (let i = 0; i < this.data.length; i++) {
|
|
54
78
|
value = (value << BigInt(8)) | BigInt(this.data[i]);
|
|
@@ -56,12 +80,18 @@ class JsonPackMpint {
|
|
|
56
80
|
return value;
|
|
57
81
|
}
|
|
58
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Create an mpint from a number (limited to safe integer range).
|
|
85
|
+
*/
|
|
59
86
|
static fromNumber(value) {
|
|
60
87
|
if (!Number.isInteger(value)) {
|
|
61
88
|
throw new Error('Value must be an integer');
|
|
62
89
|
}
|
|
63
90
|
return JsonPackMpint.fromBigInt(BigInt(value));
|
|
64
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Convert the mpint to a number (throws if out of safe integer range).
|
|
94
|
+
*/
|
|
65
95
|
toNumber() {
|
|
66
96
|
const bigIntValue = this.toBigInt();
|
|
67
97
|
if (bigIntValue > BigInt(Number.MAX_SAFE_INTEGER) || bigIntValue < BigInt(Number.MIN_SAFE_INTEGER)) {
|
package/lib/JsonPackMpint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonPackMpint.js","sourceRoot":"","sources":["../src/JsonPackMpint.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"JsonPackMpint.js","sourceRoot":"","sources":["../src/JsonPackMpint.ts"],"names":[],"mappings":"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"}
|
package/lib/JsonPackValue.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use this wrapper is you have a pre-encoded MessagePack or CBOR value and you would
|
|
3
|
+
* like to dump it into a the document as-is. The contents of `buf` will
|
|
4
|
+
* be written as is to the document.
|
|
5
|
+
*
|
|
6
|
+
* It also serves as CBOR simple value container. In which case the type of value
|
|
7
|
+
* `val` field is "number".
|
|
8
|
+
*
|
|
9
|
+
* @category Value
|
|
10
|
+
*/
|
|
1
11
|
export declare class JsonPackValue<T = Uint8Array> {
|
|
2
12
|
readonly val: T;
|
|
3
13
|
constructor(val: T);
|
package/lib/JsonPackValue.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JsonPackValue = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Use this wrapper is you have a pre-encoded MessagePack or CBOR value and you would
|
|
6
|
+
* like to dump it into a the document as-is. The contents of `buf` will
|
|
7
|
+
* be written as is to the document.
|
|
8
|
+
*
|
|
9
|
+
* It also serves as CBOR simple value container. In which case the type of value
|
|
10
|
+
* `val` field is "number".
|
|
11
|
+
*
|
|
12
|
+
* @category Value
|
|
13
|
+
*/
|
|
4
14
|
class JsonPackValue {
|
|
5
15
|
constructor(val) {
|
|
6
16
|
this.val = val;
|
package/lib/JsonPackValue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonPackValue.js","sourceRoot":"","sources":["../src/JsonPackValue.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"JsonPackValue.js","sourceRoot":"","sources":["../src/JsonPackValue.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,MAAa,aAAa;IACxB,YAA4B,GAAM;QAAN,QAAG,GAAH,GAAG,CAAG;IAAG,CAAC;CACvC;AAFD,sCAEC"}
|
|
@@ -1,29 +1,96 @@
|
|
|
1
1
|
import { Reader } from '@jsonjoy.com/buffers/lib/Reader';
|
|
2
2
|
import type { BinaryJsonDecoder } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Apache Avro binary decoder for basic value decoding.
|
|
5
|
+
* Implements the Avro binary decoding specification without schema validation.
|
|
6
|
+
* Based on https://avro.apache.org/docs/1.12.0/specification/
|
|
7
|
+
*/
|
|
3
8
|
export declare class AvroDecoder implements BinaryJsonDecoder {
|
|
4
9
|
reader: Reader;
|
|
5
10
|
read(uint8: Uint8Array): unknown;
|
|
6
11
|
decode(uint8: Uint8Array): unknown;
|
|
12
|
+
/**
|
|
13
|
+
* Generic method to read any value - typically used when schema type is unknown
|
|
14
|
+
*/
|
|
7
15
|
readAny(): unknown;
|
|
16
|
+
/**
|
|
17
|
+
* Reads an Avro null value.
|
|
18
|
+
*/
|
|
8
19
|
readNull(): null;
|
|
20
|
+
/**
|
|
21
|
+
* Reads an Avro boolean value.
|
|
22
|
+
*/
|
|
9
23
|
readBoolean(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Reads an Avro int value using zigzag decoding.
|
|
26
|
+
*/
|
|
10
27
|
readInt(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Reads an Avro long value using zigzag decoding.
|
|
30
|
+
*/
|
|
11
31
|
readLong(): number | bigint;
|
|
32
|
+
/**
|
|
33
|
+
* Reads an Avro float value using IEEE 754 single-precision.
|
|
34
|
+
*/
|
|
12
35
|
readFloat(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Reads an Avro double value using IEEE 754 double-precision.
|
|
38
|
+
*/
|
|
13
39
|
readDouble(): number;
|
|
40
|
+
/**
|
|
41
|
+
* Reads an Avro bytes value with length-prefixed encoding.
|
|
42
|
+
*/
|
|
14
43
|
readBytes(): Uint8Array;
|
|
44
|
+
/**
|
|
45
|
+
* Reads an Avro string value with UTF-8 encoding and length prefix.
|
|
46
|
+
*/
|
|
15
47
|
readString(): string;
|
|
48
|
+
/**
|
|
49
|
+
* Reads an Avro array with length-prefixed encoding.
|
|
50
|
+
* The itemReader function is called for each array item.
|
|
51
|
+
*/
|
|
16
52
|
readArray<T>(itemReader: () => T): T[];
|
|
53
|
+
/**
|
|
54
|
+
* Reads an Avro map with length-prefixed encoding.
|
|
55
|
+
* The valueReader function is called for each map value.
|
|
56
|
+
*/
|
|
17
57
|
readMap<T>(valueReader: () => T): Record<string, T>;
|
|
58
|
+
/**
|
|
59
|
+
* Reads an Avro union value.
|
|
60
|
+
* Returns an object with index and value.
|
|
61
|
+
*/
|
|
18
62
|
readUnion<T>(schemaReaders: Array<() => T>): {
|
|
19
63
|
index: number;
|
|
20
64
|
value: T;
|
|
21
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* Reads an Avro enum value.
|
|
68
|
+
* Returns the symbol index.
|
|
69
|
+
*/
|
|
22
70
|
readEnum(): number;
|
|
71
|
+
/**
|
|
72
|
+
* Reads an Avro fixed value with specified length.
|
|
73
|
+
*/
|
|
23
74
|
readFixed(size: number): Uint8Array;
|
|
75
|
+
/**
|
|
76
|
+
* Reads an Avro record.
|
|
77
|
+
* The fieldReaders array contains functions to read each field in order.
|
|
78
|
+
*/
|
|
24
79
|
readRecord<T>(fieldReaders: Array<() => any>): T;
|
|
80
|
+
/**
|
|
81
|
+
* Reads a variable-length integer (for unsigned values like lengths)
|
|
82
|
+
*/
|
|
25
83
|
private readVarIntUnsigned;
|
|
84
|
+
/**
|
|
85
|
+
* Reads a variable-length long
|
|
86
|
+
*/
|
|
26
87
|
private readVarLong;
|
|
88
|
+
/**
|
|
89
|
+
* Decodes a 32-bit integer using zigzag decoding
|
|
90
|
+
*/
|
|
27
91
|
private decodeZigZag32;
|
|
92
|
+
/**
|
|
93
|
+
* Decodes a 64-bit integer using zigzag decoding
|
|
94
|
+
*/
|
|
28
95
|
private decodeZigZag64;
|
|
29
96
|
}
|
package/lib/avro/AvroDecoder.js
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AvroDecoder = void 0;
|
|
4
4
|
const Reader_1 = require("@jsonjoy.com/buffers/lib/Reader");
|
|
5
|
+
/**
|
|
6
|
+
* Apache Avro binary decoder for basic value decoding.
|
|
7
|
+
* Implements the Avro binary decoding specification without schema validation.
|
|
8
|
+
* Based on https://avro.apache.org/docs/1.12.0/specification/
|
|
9
|
+
*/
|
|
5
10
|
class AvroDecoder {
|
|
6
11
|
constructor() {
|
|
7
12
|
this.reader = new Reader_1.Reader();
|
|
@@ -14,66 +19,103 @@ class AvroDecoder {
|
|
|
14
19
|
this.reader.reset(uint8);
|
|
15
20
|
return this.readAny();
|
|
16
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Generic method to read any value - typically used when schema type is unknown
|
|
24
|
+
*/
|
|
17
25
|
readAny() {
|
|
18
26
|
throw new Error('readAny() requires schema information. Use readNull, readBoolean, etc. directly.');
|
|
19
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Reads an Avro null value.
|
|
30
|
+
*/
|
|
20
31
|
readNull() {
|
|
32
|
+
// Null values are encoded as zero bytes
|
|
21
33
|
return null;
|
|
22
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Reads an Avro boolean value.
|
|
37
|
+
*/
|
|
23
38
|
readBoolean() {
|
|
24
39
|
return this.reader.u8() === 1;
|
|
25
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Reads an Avro int value using zigzag decoding.
|
|
43
|
+
*/
|
|
26
44
|
readInt() {
|
|
27
45
|
const zigzag = this.readVarIntUnsigned();
|
|
28
46
|
return this.decodeZigZag32(zigzag);
|
|
29
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Reads an Avro long value using zigzag decoding.
|
|
50
|
+
*/
|
|
30
51
|
readLong() {
|
|
31
52
|
const zigzag = this.readVarLong();
|
|
32
53
|
const decoded = this.decodeZigZag64(zigzag);
|
|
54
|
+
// Return number if it fits in safe integer range, otherwise bigint
|
|
33
55
|
if (decoded >= BigInt(Number.MIN_SAFE_INTEGER) && decoded <= BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
34
56
|
return Number(decoded);
|
|
35
57
|
}
|
|
36
58
|
return decoded;
|
|
37
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Reads an Avro float value using IEEE 754 single-precision.
|
|
62
|
+
*/
|
|
38
63
|
readFloat() {
|
|
39
64
|
const reader = this.reader;
|
|
40
|
-
const value = reader.view.getFloat32(reader.x, true);
|
|
65
|
+
const value = reader.view.getFloat32(reader.x, true); // little-endian
|
|
41
66
|
reader.x += 4;
|
|
42
67
|
return value;
|
|
43
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Reads an Avro double value using IEEE 754 double-precision.
|
|
71
|
+
*/
|
|
44
72
|
readDouble() {
|
|
45
73
|
const reader = this.reader;
|
|
46
|
-
const value = reader.view.getFloat64(reader.x, true);
|
|
74
|
+
const value = reader.view.getFloat64(reader.x, true); // little-endian
|
|
47
75
|
reader.x += 8;
|
|
48
76
|
return value;
|
|
49
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Reads an Avro bytes value with length-prefixed encoding.
|
|
80
|
+
*/
|
|
50
81
|
readBytes() {
|
|
51
82
|
const length = this.readVarIntUnsigned();
|
|
52
83
|
return this.reader.buf(length);
|
|
53
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Reads an Avro string value with UTF-8 encoding and length prefix.
|
|
87
|
+
*/
|
|
54
88
|
readString() {
|
|
55
89
|
const length = this.readVarIntUnsigned();
|
|
56
90
|
const bytes = this.reader.buf(length);
|
|
57
91
|
return new TextDecoder().decode(bytes);
|
|
58
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Reads an Avro array with length-prefixed encoding.
|
|
95
|
+
* The itemReader function is called for each array item.
|
|
96
|
+
*/
|
|
59
97
|
readArray(itemReader) {
|
|
60
98
|
const result = [];
|
|
61
99
|
while (true) {
|
|
62
100
|
const count = this.readVarIntUnsigned();
|
|
63
101
|
if (count === 0)
|
|
64
|
-
break;
|
|
102
|
+
break; // End of array marker
|
|
65
103
|
for (let i = 0; i < count; i++) {
|
|
66
104
|
result.push(itemReader());
|
|
67
105
|
}
|
|
68
106
|
}
|
|
69
107
|
return result;
|
|
70
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Reads an Avro map with length-prefixed encoding.
|
|
111
|
+
* The valueReader function is called for each map value.
|
|
112
|
+
*/
|
|
71
113
|
readMap(valueReader) {
|
|
72
114
|
const result = {};
|
|
73
115
|
while (true) {
|
|
74
116
|
const count = this.readVarIntUnsigned();
|
|
75
117
|
if (count === 0)
|
|
76
|
-
break;
|
|
118
|
+
break; // End of map marker
|
|
77
119
|
for (let i = 0; i < count; i++) {
|
|
78
120
|
const key = this.readString();
|
|
79
121
|
if (key === '__proto__')
|
|
@@ -83,6 +125,10 @@ class AvroDecoder {
|
|
|
83
125
|
}
|
|
84
126
|
return result;
|
|
85
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Reads an Avro union value.
|
|
130
|
+
* Returns an object with index and value.
|
|
131
|
+
*/
|
|
86
132
|
readUnion(schemaReaders) {
|
|
87
133
|
const index = this.decodeZigZag32(this.readVarIntUnsigned());
|
|
88
134
|
if (index < 0 || index >= schemaReaders.length) {
|
|
@@ -91,20 +137,37 @@ class AvroDecoder {
|
|
|
91
137
|
const value = schemaReaders[index]();
|
|
92
138
|
return { index, value };
|
|
93
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Reads an Avro enum value.
|
|
142
|
+
* Returns the symbol index.
|
|
143
|
+
*/
|
|
94
144
|
readEnum() {
|
|
95
145
|
return this.decodeZigZag32(this.readVarIntUnsigned());
|
|
96
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Reads an Avro fixed value with specified length.
|
|
149
|
+
*/
|
|
97
150
|
readFixed(size) {
|
|
98
151
|
return this.reader.buf(size);
|
|
99
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Reads an Avro record.
|
|
155
|
+
* The fieldReaders array contains functions to read each field in order.
|
|
156
|
+
*/
|
|
100
157
|
readRecord(fieldReaders) {
|
|
101
158
|
const result = {};
|
|
102
159
|
for (let i = 0; i < fieldReaders.length; i++) {
|
|
103
160
|
const fieldValue = fieldReaders[i]();
|
|
161
|
+
// Note: This generic record reader doesn't know field names
|
|
162
|
+
// The schema-aware decoder will handle proper field mapping
|
|
104
163
|
result[`field${i}`] = fieldValue;
|
|
105
164
|
}
|
|
106
165
|
return result;
|
|
107
166
|
}
|
|
167
|
+
// Utility methods for Avro decoding
|
|
168
|
+
/**
|
|
169
|
+
* Reads a variable-length integer (for unsigned values like lengths)
|
|
170
|
+
*/
|
|
108
171
|
readVarIntUnsigned() {
|
|
109
172
|
const reader = this.reader;
|
|
110
173
|
let result = 0;
|
|
@@ -119,8 +182,11 @@ class AvroDecoder {
|
|
|
119
182
|
throw new Error('Variable-length integer is too long');
|
|
120
183
|
}
|
|
121
184
|
}
|
|
122
|
-
return result >>> 0;
|
|
185
|
+
return result >>> 0; // Convert to unsigned 32-bit
|
|
123
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Reads a variable-length long
|
|
189
|
+
*/
|
|
124
190
|
readVarLong() {
|
|
125
191
|
const reader = this.reader;
|
|
126
192
|
let result = BigInt(0);
|
|
@@ -137,9 +203,15 @@ class AvroDecoder {
|
|
|
137
203
|
}
|
|
138
204
|
return result;
|
|
139
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Decodes a 32-bit integer using zigzag decoding
|
|
208
|
+
*/
|
|
140
209
|
decodeZigZag32(value) {
|
|
141
210
|
return (value >>> 1) ^ -(value & 1);
|
|
142
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Decodes a 64-bit integer using zigzag decoding
|
|
214
|
+
*/
|
|
143
215
|
decodeZigZag64(value) {
|
|
144
216
|
return (value >> BigInt(1)) ^ -(value & BigInt(1));
|
|
145
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvroDecoder.js","sourceRoot":"","sources":["../../src/avro/AvroDecoder.ts"],"names":[],"mappings":";;;AAAA,4DAAuD;
|
|
1
|
+
{"version":3,"file":"AvroDecoder.js","sourceRoot":"","sources":["../../src/avro/AvroDecoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,101 @@
|
|
|
1
1
|
import type { IWriter, IWriterGrowable } from '@jsonjoy.com/buffers/lib';
|
|
2
2
|
import type { BinaryJsonEncoder } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Apache Avro binary encoder for basic value encoding.
|
|
5
|
+
* Implements the Avro binary encoding specification without schema validation.
|
|
6
|
+
* Based on https://avro.apache.org/docs/1.12.0/specification/
|
|
7
|
+
*/
|
|
3
8
|
export declare class AvroEncoder implements BinaryJsonEncoder {
|
|
4
9
|
readonly writer: IWriter & IWriterGrowable;
|
|
5
10
|
constructor(writer: IWriter & IWriterGrowable);
|
|
6
11
|
encode(value: unknown): Uint8Array;
|
|
12
|
+
/**
|
|
13
|
+
* Called when the encoder encounters a value that it does not know how to encode.
|
|
14
|
+
*/
|
|
7
15
|
writeUnknown(value: unknown): void;
|
|
8
16
|
writeAny(value: unknown): void;
|
|
17
|
+
/**
|
|
18
|
+
* Writes an Avro null value.
|
|
19
|
+
*/
|
|
9
20
|
writeNull(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Writes an Avro boolean value.
|
|
23
|
+
*/
|
|
10
24
|
writeBoolean(bool: boolean): void;
|
|
25
|
+
/**
|
|
26
|
+
* Writes an Avro int value using zigzag encoding.
|
|
27
|
+
*/
|
|
11
28
|
writeInt(int: number): void;
|
|
29
|
+
/**
|
|
30
|
+
* Writes an Avro long value using zigzag encoding.
|
|
31
|
+
*/
|
|
12
32
|
writeLong(long: number | bigint): void;
|
|
33
|
+
/**
|
|
34
|
+
* Writes an Avro float value using IEEE 754 single-precision.
|
|
35
|
+
*/
|
|
13
36
|
writeFloatAvro(float: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Writes an Avro double value using IEEE 754 double-precision.
|
|
39
|
+
*/
|
|
14
40
|
writeDouble(double: number): void;
|
|
41
|
+
/**
|
|
42
|
+
* Writes an Avro bytes value with length-prefixed encoding.
|
|
43
|
+
*/
|
|
15
44
|
writeBin(bytes: Uint8Array): void;
|
|
45
|
+
/**
|
|
46
|
+
* Writes an Avro string value with UTF-8 encoding and length prefix.
|
|
47
|
+
*/
|
|
16
48
|
writeStr(str: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Writes an Avro array with length-prefixed encoding.
|
|
51
|
+
*/
|
|
17
52
|
writeArr(arr: unknown[]): void;
|
|
53
|
+
/**
|
|
54
|
+
* Writes an Avro map with length-prefixed encoding.
|
|
55
|
+
*/
|
|
18
56
|
writeObj(obj: Record<string, unknown>): void;
|
|
57
|
+
/**
|
|
58
|
+
* Generic number writing - determines type based on value
|
|
59
|
+
*/
|
|
19
60
|
writeNumber(num: number): void;
|
|
61
|
+
/**
|
|
62
|
+
* Writes an integer value
|
|
63
|
+
*/
|
|
20
64
|
writeInteger(int: number): void;
|
|
65
|
+
/**
|
|
66
|
+
* Writes an unsigned integer value
|
|
67
|
+
*/
|
|
21
68
|
writeUInteger(uint: number): void;
|
|
69
|
+
/**
|
|
70
|
+
* Writes a float value (interface method)
|
|
71
|
+
*/
|
|
22
72
|
writeFloat(float: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Writes a float value using IEEE 754 single-precision.
|
|
75
|
+
*/
|
|
23
76
|
private writeFloatValue;
|
|
77
|
+
/**
|
|
78
|
+
* Writes an ASCII string (same as regular string in Avro)
|
|
79
|
+
*/
|
|
24
80
|
writeAsciiStr(str: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* Encodes a variable-length integer (for signed values with zigzag)
|
|
83
|
+
*/
|
|
25
84
|
private writeVarIntSigned;
|
|
85
|
+
/**
|
|
86
|
+
* Encodes a variable-length integer (for unsigned values like lengths)
|
|
87
|
+
*/
|
|
26
88
|
private writeVarIntUnsigned;
|
|
89
|
+
/**
|
|
90
|
+
* Encodes a variable-length long using Avro's encoding
|
|
91
|
+
*/
|
|
27
92
|
private writeVarLong;
|
|
93
|
+
/**
|
|
94
|
+
* Encodes a 32-bit integer using zigzag encoding
|
|
95
|
+
*/
|
|
28
96
|
private encodeZigZag32;
|
|
97
|
+
/**
|
|
98
|
+
* Encodes a 64-bit integer using zigzag encoding
|
|
99
|
+
*/
|
|
29
100
|
private encodeZigZag64;
|
|
30
101
|
}
|