@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
|
@@ -35,6 +35,7 @@ class DecompressionTable {
|
|
|
35
35
|
}
|
|
36
36
|
getLiteral(index) {
|
|
37
37
|
const table = this.table;
|
|
38
|
+
// if (index < 0 || index >= table.length) throw new Error('OUT_OF_BOUNDS');
|
|
38
39
|
return table[index];
|
|
39
40
|
}
|
|
40
41
|
decompress(value) {
|
|
@@ -45,8 +46,8 @@ class DecompressionTable {
|
|
|
45
46
|
case 'object': {
|
|
46
47
|
if (!value)
|
|
47
48
|
return null;
|
|
48
|
-
const
|
|
49
|
-
switch (
|
|
49
|
+
const construct = value.constructor;
|
|
50
|
+
switch (construct) {
|
|
50
51
|
case Object: {
|
|
51
52
|
const obj = value;
|
|
52
53
|
const newObj = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecompressionTable.js","sourceRoot":"","sources":["../../src/util/DecompressionTable.ts"],"names":[],"mappings":";;;AAAA,4DAAuD;AAEvD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAE3C,MAAa,kBAAkB;IAA/B;QACqB,UAAK,GAAc,EAAE,CAAC;IAmF3C,CAAC;IAjFQ,WAAW,CAAC,QAAmB;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,IAAI,GAAmB,KAAK,CAAC;YACjC,IAAI,KAAc,CAAC;YACnB,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;gBAClB,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,IAAI,GAAG,IAAI,GAAW,KAAK,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjB,CAAC,EAAE,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;IAEM,UAAU,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"DecompressionTable.js","sourceRoot":"","sources":["../../src/util/DecompressionTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,25 @@ export declare class WsFrameDecoder {
|
|
|
4
4
|
readonly reader: StreamingOctetReader;
|
|
5
5
|
push(uint8: Uint8Array): void;
|
|
6
6
|
readFrameHeader(): WsFrameHeader | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Read application data of a frame and copy it to the destination buffer.
|
|
9
|
+
* Receives the frame header and the number of bytes that still need to be
|
|
10
|
+
* copied, returns back the number of bytes that still need to be copied in
|
|
11
|
+
* subsequent calls.
|
|
12
|
+
*
|
|
13
|
+
* @param frame Frame header.
|
|
14
|
+
* @param remaining How many bytes are remaining to be copied.
|
|
15
|
+
* @param dst The destination buffer to write to.
|
|
16
|
+
* @param pos Position in the destination buffer to start writing to.
|
|
17
|
+
* @returns The number of bytes that still need to be copied in the next call.
|
|
18
|
+
*/
|
|
7
19
|
readFrameData(frame: WsFrameHeader, remaining: number, dst: Uint8Array, pos: number): number;
|
|
8
20
|
copyFrameData(frame: WsFrameHeader, dst: Uint8Array, pos: number): void;
|
|
21
|
+
/**
|
|
22
|
+
* Reads application data of the CLOSE frame and sets the code and reason
|
|
23
|
+
* properties of the frame.
|
|
24
|
+
*
|
|
25
|
+
* @param frame Close frame.
|
|
26
|
+
*/
|
|
9
27
|
readCloseFrameData(frame: WsCloseFrame): void;
|
|
10
28
|
}
|
package/lib/ws/WsFrameDecoder.js
CHANGED
|
@@ -70,6 +70,18 @@ class WsFrameDecoder {
|
|
|
70
70
|
throw err;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Read application data of a frame and copy it to the destination buffer.
|
|
75
|
+
* Receives the frame header and the number of bytes that still need to be
|
|
76
|
+
* copied, returns back the number of bytes that still need to be copied in
|
|
77
|
+
* subsequent calls.
|
|
78
|
+
*
|
|
79
|
+
* @param frame Frame header.
|
|
80
|
+
* @param remaining How many bytes are remaining to be copied.
|
|
81
|
+
* @param dst The destination buffer to write to.
|
|
82
|
+
* @param pos Position in the destination buffer to start writing to.
|
|
83
|
+
* @returns The number of bytes that still need to be copied in the next call.
|
|
84
|
+
*/
|
|
73
85
|
readFrameData(frame, remaining, dst, pos) {
|
|
74
86
|
const reader = this.reader;
|
|
75
87
|
const mask = frame.mask;
|
|
@@ -91,6 +103,12 @@ class WsFrameDecoder {
|
|
|
91
103
|
else
|
|
92
104
|
reader.copyXor(readSize, dst, pos, mask, 0);
|
|
93
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Reads application data of the CLOSE frame and sets the code and reason
|
|
108
|
+
* properties of the frame.
|
|
109
|
+
*
|
|
110
|
+
* @param frame Close frame.
|
|
111
|
+
*/
|
|
94
112
|
readCloseFrameData(frame) {
|
|
95
113
|
let length = frame.length;
|
|
96
114
|
if (length > 125)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WsFrameDecoder.js","sourceRoot":"","sources":["../../src/ws/WsFrameDecoder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WsFrameDecoder.js","sourceRoot":"","sources":["../../src/ws/WsFrameDecoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WsFrameOpcode } from './constants';
|
|
2
|
-
import type { IWriter, IWriterGrowable } from '@jsonjoy.com/
|
|
2
|
+
import type { IWriter, IWriterGrowable } from '@jsonjoy.com/buffers';
|
|
3
3
|
export declare class WsFrameEncoder<W extends IWriter & IWriterGrowable = IWriter & IWriterGrowable> {
|
|
4
4
|
readonly writer: W;
|
|
5
5
|
constructor(writer?: W);
|
package/lib/ws/WsFrameEncoder.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WsFrameEncoder = void 0;
|
|
4
|
-
const Writer_1 = require("@jsonjoy.com/
|
|
4
|
+
const Writer_1 = require("@jsonjoy.com/buffers/lib/Writer");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
const errors_1 = require("./errors");
|
|
7
7
|
const maskBuf = new Uint8Array(4);
|
|
@@ -55,8 +55,8 @@ class WsFrameEncoder {
|
|
|
55
55
|
const reasonLength = reason.length;
|
|
56
56
|
const length = 2 + reasonLength;
|
|
57
57
|
const writer = this.writer;
|
|
58
|
-
writer.ensureCapacity(2 +
|
|
59
|
-
2 +
|
|
58
|
+
writer.ensureCapacity(2 + // Frame header
|
|
59
|
+
2 + // Close code 2 bytes
|
|
60
60
|
reasonLength * 4);
|
|
61
61
|
const lengthX = writer.x + 1;
|
|
62
62
|
this.writeHdr(1, constants_1.WsFrameOpcode.CLOSE, length, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WsFrameEncoder.js","sourceRoot":"","sources":["../../src/ws/WsFrameEncoder.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"WsFrameEncoder.js","sourceRoot":"","sources":["../../src/ws/WsFrameEncoder.ts"],"names":[],"mappings":"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"}
|
package/lib/ws/constants.js
CHANGED
|
@@ -3,10 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WsFrameOpcode = void 0;
|
|
4
4
|
var WsFrameOpcode;
|
|
5
5
|
(function (WsFrameOpcode) {
|
|
6
|
+
// Continuation fragment of a data frame
|
|
6
7
|
WsFrameOpcode[WsFrameOpcode["CONTINUE"] = 0] = "CONTINUE";
|
|
8
|
+
// Data frames
|
|
7
9
|
WsFrameOpcode[WsFrameOpcode["TEXT"] = 1] = "TEXT";
|
|
8
10
|
WsFrameOpcode[WsFrameOpcode["BINARY"] = 2] = "BINARY";
|
|
11
|
+
// Control frames
|
|
12
|
+
// eslint-disable-next-line
|
|
9
13
|
WsFrameOpcode[WsFrameOpcode["MIN_CONTROL_OPCODE"] = 8] = "MIN_CONTROL_OPCODE";
|
|
14
|
+
// eslint-disable-next-line
|
|
10
15
|
WsFrameOpcode[WsFrameOpcode["CLOSE"] = 8] = "CLOSE";
|
|
11
16
|
WsFrameOpcode[WsFrameOpcode["PING"] = 9] = "PING";
|
|
12
17
|
WsFrameOpcode[WsFrameOpcode["PONG"] = 10] = "PONG";
|
package/lib/ws/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/ws/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAeX;AAfD,WAAY,aAAa;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/ws/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAeX;AAfD,WAAY,aAAa;IACvB,wCAAwC;IACxC,yDAAY,CAAA;IAEZ,cAAc;IACd,iDAAQ,CAAA;IACR,qDAAU,CAAA;IAEV,iBAAiB;IACjB,2BAA2B;IAC3B,6EAAsB,CAAA;IACtB,2BAA2B;IAC3B,mDAAS,CAAA;IACT,iDAAQ,CAAA;IACR,kDAAS,CAAA;AACX,CAAC,EAfW,aAAa,6BAAb,aAAa,QAexB"}
|
package/lib/xdr/XdrDecoder.d.ts
CHANGED
|
@@ -1,24 +1,86 @@
|
|
|
1
1
|
import type { IReader, IReaderResettable } from '@jsonjoy.com/buffers/lib';
|
|
2
2
|
import type { BinaryJsonDecoder } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* XDR (External Data Representation) binary decoder for basic value decoding.
|
|
5
|
+
* Implements XDR binary decoding according to RFC 4506.
|
|
6
|
+
*
|
|
7
|
+
* Key XDR decoding principles:
|
|
8
|
+
* - All data types are aligned to 4-byte boundaries
|
|
9
|
+
* - Multi-byte quantities are transmitted in big-endian byte order
|
|
10
|
+
* - Strings and opaque data are padded to 4-byte boundaries
|
|
11
|
+
* - Variable-length arrays and strings are preceded by their length
|
|
12
|
+
*/
|
|
3
13
|
export declare class XdrDecoder<R extends IReader & IReaderResettable = IReader & IReaderResettable> implements BinaryJsonDecoder {
|
|
4
14
|
reader: R;
|
|
5
15
|
constructor(reader?: R);
|
|
6
16
|
read(uint8: Uint8Array): unknown;
|
|
7
17
|
decode(uint8: Uint8Array): unknown;
|
|
8
18
|
readAny(): unknown;
|
|
19
|
+
/**
|
|
20
|
+
* Reads an XDR void value (no data is actually read).
|
|
21
|
+
*/
|
|
9
22
|
readVoid(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Reads an XDR boolean value as a 4-byte integer.
|
|
25
|
+
* Returns true for non-zero values, false for zero.
|
|
26
|
+
*/
|
|
10
27
|
readBoolean(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Reads an XDR signed 32-bit integer in big-endian format.
|
|
30
|
+
*/
|
|
11
31
|
readInt(): number;
|
|
32
|
+
/**
|
|
33
|
+
* Reads an XDR unsigned 32-bit integer in big-endian format.
|
|
34
|
+
*/
|
|
12
35
|
readUnsignedInt(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Reads an XDR signed 64-bit integer (hyper) in big-endian format.
|
|
38
|
+
*/
|
|
13
39
|
readHyper(): bigint;
|
|
40
|
+
/**
|
|
41
|
+
* Reads an XDR unsigned 64-bit integer (unsigned hyper) in big-endian format.
|
|
42
|
+
*/
|
|
14
43
|
readUnsignedHyper(): bigint;
|
|
44
|
+
/**
|
|
45
|
+
* Reads an XDR float value using IEEE 754 single-precision in big-endian format.
|
|
46
|
+
*/
|
|
15
47
|
readFloat(): number;
|
|
48
|
+
/**
|
|
49
|
+
* Reads an XDR double value using IEEE 754 double-precision in big-endian format.
|
|
50
|
+
*/
|
|
16
51
|
readDouble(): number;
|
|
52
|
+
/**
|
|
53
|
+
* Reads an XDR quadruple value (128-bit float).
|
|
54
|
+
* Note: JavaScript doesn't have native 128-bit float support.
|
|
55
|
+
*/
|
|
17
56
|
readQuadruple(): number;
|
|
57
|
+
/**
|
|
58
|
+
* Reads XDR opaque data with known fixed length.
|
|
59
|
+
* Data is padded to 4-byte boundary but only the actual data is returned.
|
|
60
|
+
*/
|
|
18
61
|
readOpaque(size: number): Uint8Array;
|
|
62
|
+
/**
|
|
63
|
+
* Reads XDR variable-length opaque data.
|
|
64
|
+
* Length is read first, followed by data padded to 4-byte boundary.
|
|
65
|
+
*/
|
|
19
66
|
readVarlenOpaque(): Uint8Array;
|
|
67
|
+
/**
|
|
68
|
+
* Reads an XDR string with UTF-8 encoding.
|
|
69
|
+
* Length is read first, followed by UTF-8 bytes padded to 4-byte boundary.
|
|
70
|
+
*/
|
|
20
71
|
readString(): string;
|
|
72
|
+
/**
|
|
73
|
+
* Reads an XDR enum value as an unsigned integer.
|
|
74
|
+
*/
|
|
21
75
|
readEnum(): number;
|
|
76
|
+
/**
|
|
77
|
+
* Reads a fixed-size array of elements.
|
|
78
|
+
* Caller must provide the decode function for each element.
|
|
79
|
+
*/
|
|
22
80
|
readArray<T>(size: number, elementReader: () => T): T[];
|
|
81
|
+
/**
|
|
82
|
+
* Reads a variable-length array of elements.
|
|
83
|
+
* Length is read first, followed by elements.
|
|
84
|
+
*/
|
|
23
85
|
readVarlenArray<T>(elementReader: () => T): T[];
|
|
24
86
|
}
|
package/lib/xdr/XdrDecoder.js
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.XdrDecoder = void 0;
|
|
4
4
|
const Reader_1 = require("@jsonjoy.com/buffers/lib/Reader");
|
|
5
|
+
/**
|
|
6
|
+
* XDR (External Data Representation) binary decoder for basic value decoding.
|
|
7
|
+
* Implements XDR binary decoding according to RFC 4506.
|
|
8
|
+
*
|
|
9
|
+
* Key XDR decoding principles:
|
|
10
|
+
* - All data types are aligned to 4-byte boundaries
|
|
11
|
+
* - Multi-byte quantities are transmitted in big-endian byte order
|
|
12
|
+
* - Strings and opaque data are padded to 4-byte boundaries
|
|
13
|
+
* - Variable-length arrays and strings are preceded by their length
|
|
14
|
+
*/
|
|
5
15
|
class XdrDecoder {
|
|
6
16
|
constructor(reader = new Reader_1.Reader()) {
|
|
7
17
|
this.reader = reader;
|
|
@@ -15,80 +25,137 @@ class XdrDecoder {
|
|
|
15
25
|
return this.readAny();
|
|
16
26
|
}
|
|
17
27
|
readAny() {
|
|
28
|
+
// Basic implementation - in practice this would need schema info
|
|
29
|
+
// For now, we'll throw as this should be used with schema decoder
|
|
18
30
|
throw new Error('not implemented');
|
|
19
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Reads an XDR void value (no data is actually read).
|
|
34
|
+
*/
|
|
20
35
|
readVoid() {
|
|
36
|
+
// Void values have no representation in XDR
|
|
21
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Reads an XDR boolean value as a 4-byte integer.
|
|
40
|
+
* Returns true for non-zero values, false for zero.
|
|
41
|
+
*/
|
|
22
42
|
readBoolean() {
|
|
23
43
|
return this.readInt() !== 0;
|
|
24
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Reads an XDR signed 32-bit integer in big-endian format.
|
|
47
|
+
*/
|
|
25
48
|
readInt() {
|
|
26
49
|
const reader = this.reader;
|
|
27
|
-
const value = reader.view.getInt32(reader.x, false);
|
|
50
|
+
const value = reader.view.getInt32(reader.x, false); // false = big-endian
|
|
28
51
|
reader.x += 4;
|
|
29
52
|
return value;
|
|
30
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Reads an XDR unsigned 32-bit integer in big-endian format.
|
|
56
|
+
*/
|
|
31
57
|
readUnsignedInt() {
|
|
32
58
|
const reader = this.reader;
|
|
33
|
-
const value = reader.view.getUint32(reader.x, false);
|
|
59
|
+
const value = reader.view.getUint32(reader.x, false); // false = big-endian
|
|
34
60
|
reader.x += 4;
|
|
35
61
|
return value;
|
|
36
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Reads an XDR signed 64-bit integer (hyper) in big-endian format.
|
|
65
|
+
*/
|
|
37
66
|
readHyper() {
|
|
38
67
|
const reader = this.reader;
|
|
39
|
-
const value = reader.view.getBigInt64(reader.x, false);
|
|
68
|
+
const value = reader.view.getBigInt64(reader.x, false); // false = big-endian
|
|
40
69
|
reader.x += 8;
|
|
41
70
|
return value;
|
|
42
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Reads an XDR unsigned 64-bit integer (unsigned hyper) in big-endian format.
|
|
74
|
+
*/
|
|
43
75
|
readUnsignedHyper() {
|
|
44
76
|
const reader = this.reader;
|
|
45
|
-
const value = reader.view.getBigUint64(reader.x, false);
|
|
77
|
+
const value = reader.view.getBigUint64(reader.x, false); // false = big-endian
|
|
46
78
|
reader.x += 8;
|
|
47
79
|
return value;
|
|
48
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Reads an XDR float value using IEEE 754 single-precision in big-endian format.
|
|
83
|
+
*/
|
|
49
84
|
readFloat() {
|
|
50
85
|
const reader = this.reader;
|
|
51
|
-
const value = reader.view.getFloat32(reader.x, false);
|
|
86
|
+
const value = reader.view.getFloat32(reader.x, false); // false = big-endian
|
|
52
87
|
reader.x += 4;
|
|
53
88
|
return value;
|
|
54
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Reads an XDR double value using IEEE 754 double-precision in big-endian format.
|
|
92
|
+
*/
|
|
55
93
|
readDouble() {
|
|
56
94
|
const reader = this.reader;
|
|
57
|
-
const value = reader.view.getFloat64(reader.x, false);
|
|
95
|
+
const value = reader.view.getFloat64(reader.x, false); // false = big-endian
|
|
58
96
|
reader.x += 8;
|
|
59
97
|
return value;
|
|
60
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Reads an XDR quadruple value (128-bit float).
|
|
101
|
+
* Note: JavaScript doesn't have native 128-bit float support.
|
|
102
|
+
*/
|
|
61
103
|
readQuadruple() {
|
|
62
104
|
throw new Error('not implemented');
|
|
63
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Reads XDR opaque data with known fixed length.
|
|
108
|
+
* Data is padded to 4-byte boundary but only the actual data is returned.
|
|
109
|
+
*/
|
|
64
110
|
readOpaque(size) {
|
|
65
111
|
const reader = this.reader;
|
|
66
112
|
const data = reader.buf(size);
|
|
113
|
+
// Skip padding bytes to reach 4-byte boundary
|
|
67
114
|
const paddedSize = size % 4 === 0 ? size : size + (4 - (size % 4));
|
|
68
115
|
reader.skip(paddedSize - size);
|
|
69
116
|
return data;
|
|
70
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Reads XDR variable-length opaque data.
|
|
120
|
+
* Length is read first, followed by data padded to 4-byte boundary.
|
|
121
|
+
*/
|
|
71
122
|
readVarlenOpaque() {
|
|
72
123
|
const size = this.readUnsignedInt();
|
|
73
124
|
return this.readOpaque(size);
|
|
74
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Reads an XDR string with UTF-8 encoding.
|
|
128
|
+
* Length is read first, followed by UTF-8 bytes padded to 4-byte boundary.
|
|
129
|
+
*/
|
|
75
130
|
readString() {
|
|
76
131
|
const size = this.readUnsignedInt();
|
|
77
132
|
const reader = this.reader;
|
|
78
133
|
const text = reader.utf8(size);
|
|
134
|
+
// Skip padding bytes to reach 4-byte boundary
|
|
79
135
|
const paddedSize = size % 4 === 0 ? size : size + (4 - (size % 4));
|
|
80
136
|
reader.skip(paddedSize - size);
|
|
81
137
|
return text;
|
|
82
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Reads an XDR enum value as an unsigned integer.
|
|
141
|
+
*/
|
|
83
142
|
readEnum() {
|
|
84
143
|
return this.readInt();
|
|
85
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Reads a fixed-size array of elements.
|
|
147
|
+
* Caller must provide the decode function for each element.
|
|
148
|
+
*/
|
|
86
149
|
readArray(size, elementReader) {
|
|
87
150
|
const array = [];
|
|
88
151
|
for (let i = 0; i < size; i++)
|
|
89
152
|
array.push(elementReader());
|
|
90
153
|
return array;
|
|
91
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Reads a variable-length array of elements.
|
|
157
|
+
* Length is read first, followed by elements.
|
|
158
|
+
*/
|
|
92
159
|
readVarlenArray(elementReader) {
|
|
93
160
|
const size = this.readUnsignedInt();
|
|
94
161
|
return this.readArray(size, elementReader);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XdrDecoder.js","sourceRoot":"","sources":["../../src/xdr/XdrDecoder.ts"],"names":[],"mappings":";;;AAAA,4DAAuD;
|
|
1
|
+
{"version":3,"file":"XdrDecoder.js","sourceRoot":"","sources":["../../src/xdr/XdrDecoder.ts"],"names":[],"mappings":"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"}
|
package/lib/xdr/XdrEncoder.d.ts
CHANGED
|
@@ -1,29 +1,100 @@
|
|
|
1
1
|
import type { IWriter, IWriterGrowable } from '@jsonjoy.com/buffers/lib';
|
|
2
2
|
import type { BinaryJsonEncoder } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* XDR (External Data Representation) binary encoder for basic value encoding.
|
|
5
|
+
* Implements XDR binary encoding according to RFC 4506.
|
|
6
|
+
*
|
|
7
|
+
* Key XDR encoding principles:
|
|
8
|
+
* - All data types are aligned to 4-byte boundaries
|
|
9
|
+
* - Multi-byte quantities are transmitted in big-endian byte order
|
|
10
|
+
* - Strings and opaque data are padded to 4-byte boundaries
|
|
11
|
+
* - Variable-length arrays and strings are preceded by their length
|
|
12
|
+
*/
|
|
3
13
|
export declare class XdrEncoder implements BinaryJsonEncoder {
|
|
4
14
|
readonly writer: IWriter & IWriterGrowable;
|
|
5
15
|
constructor(writer: IWriter & IWriterGrowable);
|
|
6
16
|
encode(value: unknown): Uint8Array;
|
|
17
|
+
/**
|
|
18
|
+
* Called when the encoder encounters a value that it does not know how to encode.
|
|
19
|
+
*/
|
|
7
20
|
writeUnknown(value: unknown): void;
|
|
8
21
|
writeAny(value: unknown): void;
|
|
22
|
+
/**
|
|
23
|
+
* Writes an XDR void value (no data is actually written).
|
|
24
|
+
*/
|
|
9
25
|
writeVoid(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Writes an XDR null value (for interface compatibility).
|
|
28
|
+
*/
|
|
10
29
|
writeNull(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Writes an XDR boolean value as a 4-byte integer.
|
|
32
|
+
*/
|
|
11
33
|
writeBoolean(bool: boolean): void;
|
|
34
|
+
/**
|
|
35
|
+
* Writes an XDR signed 32-bit integer in big-endian format.
|
|
36
|
+
*/
|
|
12
37
|
writeInt(int: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* Writes an XDR unsigned 32-bit integer in big-endian format.
|
|
40
|
+
*/
|
|
13
41
|
writeUnsignedInt(uint: number): void;
|
|
42
|
+
/**
|
|
43
|
+
* Writes an XDR signed 64-bit integer (hyper) in big-endian format.
|
|
44
|
+
*/
|
|
14
45
|
writeHyper(hyper: number | bigint): void;
|
|
46
|
+
/**
|
|
47
|
+
* Writes an XDR unsigned 64-bit integer (unsigned hyper) in big-endian format.
|
|
48
|
+
*/
|
|
15
49
|
writeUnsignedHyper(uhyper: number | bigint): void;
|
|
50
|
+
/**
|
|
51
|
+
* Writes an XDR float value using IEEE 754 single-precision in big-endian format.
|
|
52
|
+
*/
|
|
16
53
|
writeFloat(float: number): void;
|
|
54
|
+
/**
|
|
55
|
+
* Writes an XDR double value using IEEE 754 double-precision in big-endian format.
|
|
56
|
+
*/
|
|
17
57
|
writeDouble(double: number): void;
|
|
58
|
+
/**
|
|
59
|
+
* Writes an XDR quadruple value (128-bit float).
|
|
60
|
+
* Note: JavaScript doesn't have native 128-bit float support.
|
|
61
|
+
*/
|
|
18
62
|
writeQuadruple(quad: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* Writes XDR opaque data with fixed length.
|
|
65
|
+
* Data is padded to 4-byte boundary.
|
|
66
|
+
*/
|
|
19
67
|
writeOpaque(data: Uint8Array): void;
|
|
68
|
+
/**
|
|
69
|
+
* Writes XDR variable-length opaque data.
|
|
70
|
+
* Length is written first, followed by data padded to 4-byte boundary.
|
|
71
|
+
*/
|
|
20
72
|
writeVarlenOpaque(data: Uint8Array): void;
|
|
73
|
+
/**
|
|
74
|
+
* Writes an XDR string with UTF-8 encoding.
|
|
75
|
+
* Length is written first, followed by UTF-8 bytes padded to 4-byte boundary.
|
|
76
|
+
*/
|
|
21
77
|
writeStr(str: string): void;
|
|
22
78
|
writeArr(arr: unknown[]): void;
|
|
23
79
|
writeObj(obj: Record<string, unknown>): void;
|
|
80
|
+
/**
|
|
81
|
+
* Generic number writing - determines type based on value
|
|
82
|
+
*/
|
|
24
83
|
writeNumber(num: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* Writes an integer value
|
|
86
|
+
*/
|
|
25
87
|
writeInteger(int: number): void;
|
|
88
|
+
/**
|
|
89
|
+
* Writes an unsigned integer value
|
|
90
|
+
*/
|
|
26
91
|
writeUInteger(uint: number): void;
|
|
92
|
+
/**
|
|
93
|
+
* Writes binary data
|
|
94
|
+
*/
|
|
27
95
|
writeBin(buf: Uint8Array): void;
|
|
96
|
+
/**
|
|
97
|
+
* Writes an ASCII string (same as regular string in XDR)
|
|
98
|
+
*/
|
|
28
99
|
writeAsciiStr(str: string): void;
|
|
29
100
|
}
|