@jsonjoy.com/json-pack 1.21.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 +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,7 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.XdrSchemaValidator = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* XDR schema validator for validating XDR schemas and values according to RFC 4506.
|
|
6
|
+
*/
|
|
4
7
|
class XdrSchemaValidator {
|
|
8
|
+
/**
|
|
9
|
+
* Validates an XDR schema structure.
|
|
10
|
+
*/
|
|
5
11
|
validateSchema(schema) {
|
|
6
12
|
try {
|
|
7
13
|
return this.validateSchemaInternal(schema);
|
|
@@ -10,6 +16,9 @@ class XdrSchemaValidator {
|
|
|
10
16
|
return false;
|
|
11
17
|
}
|
|
12
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Validates if a value conforms to the given XDR schema.
|
|
21
|
+
*/
|
|
13
22
|
validateValue(value, schema) {
|
|
14
23
|
try {
|
|
15
24
|
return this.validateValueInternal(value, schema);
|
|
@@ -23,6 +32,7 @@ class XdrSchemaValidator {
|
|
|
23
32
|
return false;
|
|
24
33
|
}
|
|
25
34
|
switch (schema.type) {
|
|
35
|
+
// Primitive types
|
|
26
36
|
case 'void':
|
|
27
37
|
case 'int':
|
|
28
38
|
case 'unsigned_int':
|
|
@@ -35,12 +45,14 @@ class XdrSchemaValidator {
|
|
|
35
45
|
return true;
|
|
36
46
|
case 'enum':
|
|
37
47
|
return this.validateEnumSchema(schema);
|
|
48
|
+
// Wide primitive types
|
|
38
49
|
case 'opaque':
|
|
39
50
|
return this.validateOpaqueSchema(schema);
|
|
40
51
|
case 'vopaque':
|
|
41
52
|
return this.validateVarlenOpaqueSchema(schema);
|
|
42
53
|
case 'string':
|
|
43
54
|
return this.validateStringSchema(schema);
|
|
55
|
+
// Composite types
|
|
44
56
|
case 'array':
|
|
45
57
|
return this.validateArraySchema(schema);
|
|
46
58
|
case 'varray':
|
|
@@ -63,9 +75,11 @@ class XdrSchemaValidator {
|
|
|
63
75
|
}
|
|
64
76
|
const values = Object.values(schema.values);
|
|
65
77
|
const uniqueValues = new Set(values);
|
|
78
|
+
// Check for duplicate values
|
|
66
79
|
if (values.length !== uniqueValues.size) {
|
|
67
80
|
return false;
|
|
68
81
|
}
|
|
82
|
+
// Check that all values are integers
|
|
69
83
|
return values.every((value) => Number.isInteger(value));
|
|
70
84
|
}
|
|
71
85
|
validateOpaqueSchema(schema) {
|
|
@@ -108,7 +122,7 @@ class XdrSchemaValidator {
|
|
|
108
122
|
return false;
|
|
109
123
|
}
|
|
110
124
|
if (fieldNames.has(fieldName)) {
|
|
111
|
-
return false;
|
|
125
|
+
return false; // Duplicate field name
|
|
112
126
|
}
|
|
113
127
|
fieldNames.add(fieldName);
|
|
114
128
|
if (!this.validateSchemaInternal(fieldSchema)) {
|
|
@@ -127,10 +141,12 @@ class XdrSchemaValidator {
|
|
|
127
141
|
return false;
|
|
128
142
|
}
|
|
129
143
|
const [discriminant, armSchema] = arm;
|
|
144
|
+
// Check for duplicate discriminants
|
|
130
145
|
if (discriminants.has(discriminant)) {
|
|
131
146
|
return false;
|
|
132
147
|
}
|
|
133
148
|
discriminants.add(discriminant);
|
|
149
|
+
// Validate discriminant type
|
|
134
150
|
if (typeof discriminant !== 'number' && typeof discriminant !== 'string' && typeof discriminant !== 'boolean') {
|
|
135
151
|
return false;
|
|
136
152
|
}
|
|
@@ -138,6 +154,7 @@ class XdrSchemaValidator {
|
|
|
138
154
|
return false;
|
|
139
155
|
}
|
|
140
156
|
}
|
|
157
|
+
// Validate default schema if present
|
|
141
158
|
if (schema.default && !this.validateSchemaInternal(schema.default)) {
|
|
142
159
|
return false;
|
|
143
160
|
}
|
|
@@ -174,45 +191,59 @@ class XdrSchemaValidator {
|
|
|
174
191
|
case 'double':
|
|
175
192
|
case 'quadruple':
|
|
176
193
|
return typeof value === 'number';
|
|
177
|
-
case 'enum':
|
|
194
|
+
case 'enum': {
|
|
178
195
|
const enumSchema = schema;
|
|
179
196
|
return typeof value === 'string' && value in enumSchema.values;
|
|
180
|
-
|
|
197
|
+
}
|
|
198
|
+
case 'opaque': {
|
|
181
199
|
const opaqueSchema = schema;
|
|
182
200
|
return value instanceof Uint8Array && value.length === opaqueSchema.size;
|
|
183
|
-
|
|
201
|
+
}
|
|
202
|
+
case 'vopaque': {
|
|
184
203
|
const vopaqueSchema = schema;
|
|
185
204
|
return value instanceof Uint8Array && (!vopaqueSchema.size || value.length <= vopaqueSchema.size);
|
|
186
|
-
|
|
205
|
+
}
|
|
206
|
+
case 'string': {
|
|
187
207
|
const stringSchema = schema;
|
|
188
208
|
return typeof value === 'string' && (!stringSchema.size || value.length <= stringSchema.size);
|
|
189
|
-
|
|
209
|
+
}
|
|
210
|
+
case 'array': {
|
|
190
211
|
const arraySchema = schema;
|
|
191
212
|
return (Array.isArray(value) &&
|
|
192
213
|
value.length === arraySchema.size &&
|
|
193
214
|
value.every((item) => this.validateValueInternal(item, arraySchema.elements)));
|
|
194
|
-
|
|
215
|
+
}
|
|
216
|
+
case 'varray': {
|
|
195
217
|
const varraySchema = schema;
|
|
196
218
|
return (Array.isArray(value) &&
|
|
197
219
|
(!varraySchema.size || value.length <= varraySchema.size) &&
|
|
198
220
|
value.every((item) => this.validateValueInternal(item, varraySchema.elements)));
|
|
199
|
-
|
|
221
|
+
}
|
|
222
|
+
case 'struct': {
|
|
200
223
|
const structSchema = schema;
|
|
201
224
|
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
202
225
|
return false;
|
|
203
226
|
}
|
|
204
227
|
const valueObj = value;
|
|
205
228
|
return structSchema.fields.every(([fieldSchema, fieldName]) => fieldName in valueObj && this.validateValueInternal(valueObj[fieldName], fieldSchema));
|
|
206
|
-
|
|
229
|
+
}
|
|
230
|
+
case 'union': {
|
|
207
231
|
const unionSchema = schema;
|
|
232
|
+
// For union validation, we need additional context about which arm is selected
|
|
233
|
+
// This is a simplified validation - in practice, the discriminant would be known
|
|
208
234
|
const matchesArm = unionSchema.arms.some(([, armSchema]) => this.validateValueInternal(value, armSchema));
|
|
209
235
|
const matchesDefault = unionSchema.default ? this.validateValueInternal(value, unionSchema.default) : false;
|
|
210
236
|
return matchesArm || matchesDefault;
|
|
211
|
-
|
|
237
|
+
}
|
|
238
|
+
case 'optional': {
|
|
212
239
|
const optionalSchema = schema;
|
|
240
|
+
// Optional values can be null/undefined or match the element schema
|
|
213
241
|
return value === null || value === undefined || this.validateValueInternal(value, optionalSchema.element);
|
|
214
|
-
|
|
242
|
+
}
|
|
243
|
+
case 'const': {
|
|
244
|
+
// Constants have no runtime value validation
|
|
215
245
|
return true;
|
|
246
|
+
}
|
|
216
247
|
default:
|
|
217
248
|
return false;
|
|
218
249
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XdrSchemaValidator.js","sourceRoot":"","sources":["../../src/xdr/XdrSchemaValidator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"XdrSchemaValidator.js","sourceRoot":"","sources":["../../src/xdr/XdrSchemaValidator.ts"],"names":[],"mappings":"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"}
|
package/lib/xdr/XdrUnion.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XDR Union data type that contains a discriminant and value.
|
|
3
|
+
* Used for encoding XDR union types where the discriminant determines
|
|
4
|
+
* which arm of the union is active.
|
|
5
|
+
*/
|
|
1
6
|
export declare class XdrUnion<T = unknown> {
|
|
2
7
|
readonly discriminant: number | string | boolean;
|
|
3
8
|
readonly value: T;
|
package/lib/xdr/XdrUnion.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.XdrUnion = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* XDR Union data type that contains a discriminant and value.
|
|
6
|
+
* Used for encoding XDR union types where the discriminant determines
|
|
7
|
+
* which arm of the union is active.
|
|
8
|
+
*/
|
|
4
9
|
class XdrUnion {
|
|
5
10
|
constructor(discriminant, value) {
|
|
6
11
|
this.discriminant = discriminant;
|
package/lib/xdr/XdrUnion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XdrUnion.js","sourceRoot":"","sources":["../../src/xdr/XdrUnion.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"XdrUnion.js","sourceRoot":"","sources":["../../src/xdr/XdrUnion.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAa,QAAQ;IACnB,YACkB,YAAuC,EACvC,KAAQ;QADR,iBAAY,GAAZ,YAAY,CAA2B;QACvC,UAAK,GAAL,KAAK,CAAG;IACvB,CAAC;CACL;AALD,4BAKC"}
|
package/lib/xdr/index.d.ts
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XDR (External Data Representation Standard) module
|
|
3
|
+
*
|
|
4
|
+
* Fully compliant with:
|
|
5
|
+
* - RFC 4506 (May 2006) - Current standard with IANA and security considerations
|
|
6
|
+
* - RFC 1832 (August 1995) - Enhanced standard with quadruple floats and optional-data
|
|
7
|
+
* - RFC 1014 (June 1987) - Original standard
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - All XDR data types (int, hyper, float, double, string, opaque, arrays, structs, unions, optional-data)
|
|
11
|
+
* - Big-endian byte order with 4-byte alignment
|
|
12
|
+
* - Schema-based encoding/decoding with validation
|
|
13
|
+
* - TypeScript definitions
|
|
14
|
+
*/
|
|
1
15
|
export * from './types';
|
|
2
16
|
export * from './XdrEncoder';
|
|
3
17
|
export * from './XdrDecoder';
|
package/lib/xdr/index.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* XDR (External Data Representation Standard) module
|
|
4
|
+
*
|
|
5
|
+
* Fully compliant with:
|
|
6
|
+
* - RFC 4506 (May 2006) - Current standard with IANA and security considerations
|
|
7
|
+
* - RFC 1832 (August 1995) - Enhanced standard with quadruple floats and optional-data
|
|
8
|
+
* - RFC 1014 (June 1987) - Original standard
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - All XDR data types (int, hyper, float, double, string, opaque, arrays, structs, unions, optional-data)
|
|
12
|
+
* - Big-endian byte order with 4-byte alignment
|
|
13
|
+
* - Schema-based encoding/decoding with validation
|
|
14
|
+
* - TypeScript definitions
|
|
15
|
+
*/
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
17
|
const tslib_1 = require("tslib");
|
|
4
18
|
tslib_1.__exportStar(require("./types"), exports);
|
package/lib/xdr/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/xdr/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/xdr/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,kDAAwB;AACxB,uDAA6B;AAC7B,uDAA6B;AAC7B,6DAAmC;AACnC,6DAAmC;AACnC,+DAAqC;AACrC,qDAA2B"}
|
package/lib/xdr/types.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { XdrDecoder } from './XdrDecoder';
|
|
2
2
|
import type { XdrEncoder } from './XdrEncoder';
|
|
3
|
+
/**
|
|
4
|
+
* XDR (External Data Representation Standard) schema type definitions
|
|
5
|
+
* based on RFC 4506 (May 2006), which obsoletes RFC 1832 (August 1995)
|
|
6
|
+
* and RFC 1014 (June 1987).
|
|
7
|
+
*
|
|
8
|
+
* This implementation supports all three RFC versions:
|
|
9
|
+
* - RFC 1014: Original XDR standard
|
|
10
|
+
* - RFC 1832: Added quadruple-precision floats, enhanced optional-data
|
|
11
|
+
* - RFC 4506: Added IANA considerations and security guidance (no protocol changes)
|
|
12
|
+
*
|
|
13
|
+
* Specification: https://datatracker.ietf.org/doc/html/rfc4506
|
|
14
|
+
*/
|
|
3
15
|
export type XdrSchema = XdrPrimitiveSchema | XdrWidePrimitiveSchema | XdrCompositeSchema | XdrOptionalSchema;
|
|
4
16
|
export type XdrPrimitiveSchema = XdrVoidSchema | XdrIntSchema | XdrUnsignedIntSchema | XdrEnumSchema | XdrBooleanSchema | XdrHyperSchema | XdrUnsignedHyperSchema | XdrFloatSchema | XdrDoubleSchema | XdrQuadrupleSchema;
|
|
5
17
|
export type XdrVoidSchema = XdrBaseSchema<'void'>;
|
|
@@ -26,28 +38,62 @@ export interface XdrStringSchema extends XdrBaseSchema<'string'> {
|
|
|
26
38
|
}
|
|
27
39
|
export type XdrCompositeSchema = XdrArraySchema | XdrVarlenArraySchema | XdrStructSchema | XdrUnionSchema | XdrOptionalSchema | XdrConstantSchema;
|
|
28
40
|
export interface XdrArraySchema extends XdrBaseSchema<'array'> {
|
|
41
|
+
/** Schema of array elements */
|
|
29
42
|
elements: XdrSchema;
|
|
43
|
+
/** Fixed number of elements */
|
|
30
44
|
size: number;
|
|
31
45
|
}
|
|
32
46
|
export interface XdrVarlenArraySchema extends XdrBaseSchema<'varray'> {
|
|
47
|
+
/** Schema of array elements */
|
|
33
48
|
elements: XdrSchema;
|
|
49
|
+
/** Optional maximum length constraint */
|
|
34
50
|
size?: number;
|
|
35
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* The components of the structure are encoded in the order of their
|
|
54
|
+
* declaration in the structure. Each component's size is a multiple of
|
|
55
|
+
* four bytes, though the components may be different sizes.
|
|
56
|
+
*/
|
|
36
57
|
export interface XdrStructSchema extends XdrBaseSchema<'struct'> {
|
|
58
|
+
/** Array of field definitions */
|
|
37
59
|
fields: [schema: XdrSchema, name: string][];
|
|
38
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* A discriminated union is a type composed of a discriminant followed
|
|
63
|
+
* by a type selected from a set of prearranged types according to the
|
|
64
|
+
* value of the discriminant. The type of discriminant is either "int",
|
|
65
|
+
* "unsigned int", or an enumerated type, such as "bool". The component
|
|
66
|
+
* types are called "arms" of the union and are preceded by the value of
|
|
67
|
+
* the discriminant that implies their encoding.
|
|
68
|
+
*/
|
|
39
69
|
export interface XdrUnionSchema extends XdrBaseSchema<'union'> {
|
|
40
70
|
type: 'union';
|
|
41
71
|
arms: [discriminant: number | string | boolean, schema: XdrSchema][];
|
|
42
72
|
default?: XdrSchema;
|
|
43
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Optional-data is a special case introduced in RFC 1832.
|
|
76
|
+
* It is syntactic sugar for a union with a boolean discriminant:
|
|
77
|
+
* type *identifier;
|
|
78
|
+
* is equivalent to:
|
|
79
|
+
* union switch (bool opted) {
|
|
80
|
+
* case TRUE: type element;
|
|
81
|
+
* case FALSE: void;
|
|
82
|
+
* }
|
|
83
|
+
*/
|
|
44
84
|
export interface XdrOptionalSchema extends XdrBaseSchema<'optional'> {
|
|
85
|
+
/** Schema of the optional element */
|
|
45
86
|
element: XdrSchema;
|
|
46
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Constant definition (RFC 4506 Section 4.17).
|
|
90
|
+
* Constants are used to define symbolic names for numeric values.
|
|
91
|
+
*/
|
|
47
92
|
export interface XdrConstantSchema extends XdrBaseSchema<'const'> {
|
|
48
93
|
value: number;
|
|
49
94
|
}
|
|
50
95
|
export interface XdrBaseSchema<Type extends string> {
|
|
96
|
+
/** The schema type */
|
|
51
97
|
type: Type;
|
|
52
98
|
}
|
|
53
99
|
export type XdrTypeDecoder<T extends XdrType> = (xdr: XdrDecoder) => T;
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsonjoy.com/json-pack",
|
|
3
|
-
"
|
|
3
|
+
"publishConfig": {
|
|
4
|
+
"access": "public"
|
|
5
|
+
},
|
|
6
|
+
"version": "17.59.0",
|
|
4
7
|
"description": "High-performance JSON serialization library",
|
|
5
8
|
"author": {
|
|
6
9
|
"name": "streamich",
|
|
@@ -44,10 +47,6 @@
|
|
|
44
47
|
"lib/"
|
|
45
48
|
],
|
|
46
49
|
"scripts": {
|
|
47
|
-
"prettier": "prettier --ignore-path .gitignore --write \"src/**/*.{ts,tsx,js,jsx}\"",
|
|
48
|
-
"prettier:check": "prettier --ignore-path .gitignore --list-different 'src/**/*.{ts,tsx,js,jsx}'",
|
|
49
|
-
"lint": "yarn tslint",
|
|
50
|
-
"tslint": "tslint 'src/**/*.{js,jsx,ts,tsx}' -t verbose --project .",
|
|
51
50
|
"clean": "rimraf lib typedocs coverage gh-pages yarn-error.log",
|
|
52
51
|
"build": "tsc --project tsconfig.build.json --module commonjs --target es2020 --outDir lib",
|
|
53
52
|
"jest": "node -r ts-node/register ./node_modules/.bin/jest",
|
|
@@ -57,17 +56,38 @@
|
|
|
57
56
|
"typedoc": "typedoc",
|
|
58
57
|
"build:pages": "rimraf gh-pages && mkdir -p gh-pages && cp -r typedocs/* gh-pages && cp -r coverage gh-pages/coverage",
|
|
59
58
|
"deploy:pages": "gh-pages -d gh-pages",
|
|
60
|
-
"publish-coverage-and-typedocs": "yarn typedoc && yarn coverage && yarn build:pages && yarn deploy:pages"
|
|
59
|
+
"publish-coverage-and-typedocs": "yarn typedoc && yarn coverage && yarn build:pages && yarn deploy:pages",
|
|
60
|
+
"typecheck": "tsc -p ."
|
|
61
|
+
},
|
|
62
|
+
"jest": {
|
|
63
|
+
"preset": "ts-jest",
|
|
64
|
+
"testEnvironment": "node",
|
|
65
|
+
"moduleFileExtensions": [
|
|
66
|
+
"ts",
|
|
67
|
+
"js",
|
|
68
|
+
"tsx"
|
|
69
|
+
],
|
|
70
|
+
"transform": {
|
|
71
|
+
"^.+\\.tsx?$": "ts-jest"
|
|
72
|
+
},
|
|
73
|
+
"transformIgnorePatterns": [
|
|
74
|
+
".*/node_modules/.*"
|
|
75
|
+
],
|
|
76
|
+
"testRegex": ".*/(__tests__|__jest__|demo)/.*\\.(test|spec)\\.tsx?$",
|
|
77
|
+
"rootDir": ".",
|
|
78
|
+
"testPathIgnorePatterns": [
|
|
79
|
+
"node_modules"
|
|
80
|
+
]
|
|
61
81
|
},
|
|
62
82
|
"peerDependencies": {
|
|
63
83
|
"tslib": "2"
|
|
64
84
|
},
|
|
65
85
|
"dependencies": {
|
|
66
|
-
"@jsonjoy.com/base64": "
|
|
67
|
-
"@jsonjoy.com/buffers": "
|
|
68
|
-
"@jsonjoy.com/codegen": "
|
|
69
|
-
"@jsonjoy.com/json-pointer": "
|
|
70
|
-
"@jsonjoy.com/util": "
|
|
86
|
+
"@jsonjoy.com/base64": "17.59.0",
|
|
87
|
+
"@jsonjoy.com/buffers": "17.59.0",
|
|
88
|
+
"@jsonjoy.com/codegen": "17.59.0",
|
|
89
|
+
"@jsonjoy.com/json-pointer": "17.59.0",
|
|
90
|
+
"@jsonjoy.com/util": "17.59.0",
|
|
71
91
|
"hyperdyperid": "^1.2.0",
|
|
72
92
|
"thingies": "^2.5.0",
|
|
73
93
|
"tree-dump": "^1.1.0"
|
|
@@ -76,12 +96,9 @@
|
|
|
76
96
|
"@msgpack/msgpack": "^3.0.0-beta2",
|
|
77
97
|
"@redis/client": "^1.5.12",
|
|
78
98
|
"@shelacek/ubjson": "^1.1.1",
|
|
79
|
-
"@types/benchmark": "^2.1.2",
|
|
80
|
-
"@types/jest": "^29.5.12",
|
|
81
99
|
"app-root-path": "^3.1.0",
|
|
82
100
|
"axios": "^1.3.5",
|
|
83
101
|
"base64-js": "^1.5.1",
|
|
84
|
-
"benchmark": "^2.1.4",
|
|
85
102
|
"bson": "^5.4.0",
|
|
86
103
|
"cbor": "^9.0.2",
|
|
87
104
|
"cbor-js": "^0.1.0",
|
|
@@ -91,9 +108,7 @@
|
|
|
91
108
|
"fast-safe-stringify": "^2.1.1",
|
|
92
109
|
"fast-stable-stringify": "^1.0.0",
|
|
93
110
|
"fastest-stable-stringify": "^2.0.2",
|
|
94
|
-
"gh-pages": "^5.0.0",
|
|
95
111
|
"ion-js": "^4.3.0",
|
|
96
|
-
"jest": "^29.7.0",
|
|
97
112
|
"js-base64": "^3.7.2",
|
|
98
113
|
"jsbi": "^4.3.0",
|
|
99
114
|
"json-pack-napi": "^0.0.2",
|
|
@@ -103,49 +118,11 @@
|
|
|
103
118
|
"msgpack5": "^6.0.2",
|
|
104
119
|
"msgpackr": "^1.6.0",
|
|
105
120
|
"pako": "^2.0.4",
|
|
106
|
-
"prettier": "^3.2.5",
|
|
107
|
-
"pretty-quick": "^3.1.3",
|
|
108
121
|
"redis-parser": "^3.0.0",
|
|
109
|
-
"rimraf": "^5.0.0",
|
|
110
122
|
"safe-stable-stringify": "^2.3.1",
|
|
111
123
|
"secure-json-parse": "^2.4.0",
|
|
112
124
|
"tinybench": "^2.4.0",
|
|
113
|
-
"ts-jest": "^29.1.2",
|
|
114
|
-
"ts-loader": "^9.5.1",
|
|
115
|
-
"ts-node": "^10.9.2",
|
|
116
125
|
"tslib": "^2.6.2",
|
|
117
|
-
"tslint": "^6.1.3",
|
|
118
|
-
"tslint-config-common": "^1.6.2",
|
|
119
|
-
"typedoc": "^0.25.12",
|
|
120
|
-
"typescript": "^5.3.3",
|
|
121
126
|
"websocket": "^1.0.35"
|
|
122
|
-
},
|
|
123
|
-
"jest": {
|
|
124
|
-
"verbose": true,
|
|
125
|
-
"testEnvironmentOptions": {
|
|
126
|
-
"url": "http://localhost/"
|
|
127
|
-
},
|
|
128
|
-
"setupFiles": [
|
|
129
|
-
"<rootDir>/src/__tests__/setup.js"
|
|
130
|
-
],
|
|
131
|
-
"moduleFileExtensions": [
|
|
132
|
-
"ts",
|
|
133
|
-
"js"
|
|
134
|
-
],
|
|
135
|
-
"transform": {
|
|
136
|
-
"^.+\\.ts$": "ts-jest"
|
|
137
|
-
},
|
|
138
|
-
"transformIgnorePatterns": [],
|
|
139
|
-
"testRegex": ".*/(__tests__|__jest__|demo)/.*\\.(test|spec)\\.ts$"
|
|
140
|
-
},
|
|
141
|
-
"prettier": {
|
|
142
|
-
"arrowParens": "always",
|
|
143
|
-
"printWidth": 120,
|
|
144
|
-
"tabWidth": 2,
|
|
145
|
-
"useTabs": false,
|
|
146
|
-
"semi": true,
|
|
147
|
-
"singleQuote": true,
|
|
148
|
-
"trailingComma": "all",
|
|
149
|
-
"bracketSpacing": false
|
|
150
127
|
}
|
|
151
|
-
}
|
|
128
|
+
}
|