File tree Expand file tree Collapse file tree 8 files changed +157
-1
lines changed Expand file tree Collapse file tree 8 files changed +157
-1
lines changed Original file line number Diff line number Diff line change 11import type { CliCodec } from './types' ;
22
3- const CODEC_REGEX = / ( \w { 0 , 32 } ) (?: \: ( \w { 0 , 32 } ) ) ? / ;
3+ const CODEC_REGEX = / ( [ \w - ] { 0 , 32 } ) (?: \: ( [ \w - ] { 0 , 32 } ) ) ? / ;
44
55export class CliCodecs {
66 public defaultCodec : string = 'json4' ;
Original file line number Diff line number Diff line change 1+ import { BencodeDecoder } from '@jsonjoy.com/json-pack/lib/bencode/BencodeDecoder' ;
2+ import { BencodeEncoder } from '@jsonjoy.com/json-pack/lib/bencode/BencodeEncoder' ;
3+ import type { Writer } from '@jsonjoy.com/util/lib/buffers/Writer' ;
4+ import type { CliCodec } from '../types' ;
5+
6+ export class CliCodecBencode implements CliCodec < 'bencode' > {
7+ public readonly id = 'bencode' ;
8+ public readonly description = 'Bencode: Bittorrent serialization format' ;
9+ protected readonly encoder : BencodeEncoder ;
10+ protected readonly decoder : BencodeDecoder ;
11+
12+ constructor ( protected readonly writer : Writer ) {
13+ this . encoder = new BencodeEncoder ( writer ) ;
14+ this . decoder = new BencodeDecoder ( ) ;
15+ }
16+
17+ encode ( value : unknown ) : Uint8Array {
18+ return this . encoder . encode ( value ) ;
19+ }
20+
21+ decode ( bytes : Uint8Array ) : unknown {
22+ return this . decoder . read ( bytes ) ;
23+ }
24+ }
Original file line number Diff line number Diff line change 1+ import { BsonDecoder } from '@jsonjoy.com/json-pack/lib/bson/BsonDecoder' ;
2+ import { BsonEncoder } from '@jsonjoy.com/json-pack/lib/bson/BsonEncoder' ;
3+ import type { Writer } from '@jsonjoy.com/util/lib/buffers/Writer' ;
4+ import type { CliCodec } from '../types' ;
5+
6+ export class CliCodecBson implements CliCodec < 'bson' > {
7+ public readonly id = 'bson' ;
8+ public readonly description = 'BSON: MongoDB binary format' ;
9+ protected readonly encoder : BsonEncoder ;
10+ protected readonly decoder : BsonDecoder ;
11+
12+ constructor ( protected readonly writer : Writer ) {
13+ this . encoder = new BsonEncoder ( writer ) ;
14+ this . decoder = new BsonDecoder ( ) ;
15+ }
16+
17+ encode ( value : unknown ) : Uint8Array {
18+ return this . encoder . encode ( value ) ;
19+ }
20+
21+ decode ( bytes : Uint8Array ) : unknown {
22+ return this . decoder . read ( bytes ) ;
23+ }
24+ }
Original file line number Diff line number Diff line change 1+ import { CborDecoderDag } from '@jsonjoy.com/json-pack/lib/cbor/CborDecoderDag' ;
2+ import { CborEncoderDag } from '@jsonjoy.com/json-pack/lib/cbor/CborEncoderDag' ;
3+ import type { Writer } from '@jsonjoy.com/util/lib/buffers/Writer' ;
4+ import type { CliCodec } from '../types' ;
5+
6+ export class CliCodecDagCbor implements CliCodec < 'dag-cbor' > {
7+ public readonly id = 'dag-cbor' ;
8+ public readonly description = 'DAG-CBOR: deterministic CBOR codec' ;
9+ protected readonly encoder : CborEncoderDag ;
10+ protected readonly decoder : CborDecoderDag ;
11+
12+ constructor ( protected readonly writer : Writer ) {
13+ this . encoder = new CborEncoderDag ( writer ) ;
14+ this . decoder = new CborDecoderDag ( ) ;
15+ }
16+
17+ encode ( value : unknown ) : Uint8Array {
18+ return this . encoder . encode ( value ) ;
19+ }
20+
21+ decode ( bytes : Uint8Array ) : unknown {
22+ return this . decoder . read ( bytes ) ;
23+ }
24+ }
Original file line number Diff line number Diff line change 1+ import { JsonDecoderDag } from '@jsonjoy.com/json-pack/lib/json/JsonDecoderDag' ;
2+ import { JsonEncoderDag } from '@jsonjoy.com/json-pack/lib/json/JsonEncoderDag' ;
3+ import type { Writer } from '@jsonjoy.com/util/lib/buffers/Writer' ;
4+ import type { CliCodec } from '../types' ;
5+
6+ export class CliCodecDagJson implements CliCodec < 'dag-json' > {
7+ public readonly id = 'dag-json' ;
8+ public readonly description = 'DAG-JSON: deterministic JSON codec' ;
9+ protected readonly encoder : JsonEncoderDag ;
10+ protected readonly decoder : JsonDecoderDag ;
11+
12+ constructor ( protected readonly writer : Writer ) {
13+ this . encoder = new JsonEncoderDag ( writer ) ;
14+ this . decoder = new JsonDecoderDag ( ) ;
15+ }
16+
17+ encode ( value : unknown ) : Uint8Array {
18+ return this . encoder . encode ( value ) ;
19+ }
20+
21+ decode ( bytes : Uint8Array ) : unknown {
22+ return this . decoder . read ( bytes ) ;
23+ }
24+ }
Original file line number Diff line number Diff line change 1+ import { EjsonDecoder } from '@jsonjoy.com/json-pack/lib/ejson/EjsonDecoder' ;
2+ import { EjsonEncoder } from '@jsonjoy.com/json-pack/lib/ejson/EjsonEncoder' ;
3+ import type { Writer } from '@jsonjoy.com/util/lib/buffers/Writer' ;
4+ import type { CliCodec } from '../types' ;
5+
6+ export class CliCodecEjson implements CliCodec < 'ejson' > {
7+ public readonly id = 'ejson' ;
8+ public readonly description = 'EJSON v2: MongoDB text variant of BSON' ;
9+ protected readonly encoder : EjsonEncoder ;
10+ protected readonly decoder : EjsonDecoder ;
11+
12+ constructor ( protected readonly writer : Writer ) {
13+ this . encoder = new EjsonEncoder ( writer ) ;
14+ this . decoder = new EjsonDecoder ( ) ;
15+ }
16+
17+ encode ( value : unknown ) : Uint8Array {
18+ return this . encoder . encode ( value ) ;
19+ }
20+
21+ decode ( bytes : Uint8Array ) : unknown {
22+ return this . decoder . read ( bytes ) ;
23+ }
24+ }
Original file line number Diff line number Diff line change 1+ import { RespDecoder } from '@jsonjoy.com/json-pack/lib/resp/RespDecoder' ;
2+ import { RespEncoder } from '@jsonjoy.com/json-pack/lib/resp/RespEncoder' ;
3+ import type { Writer } from '@jsonjoy.com/util/lib/buffers/Writer' ;
4+ import type { CliCodec } from '../types' ;
5+
6+ export class CliCodecResp implements CliCodec < 'resp' > {
7+ public readonly id = 'resp' ;
8+ public readonly description = 'RESP3: Redis serialization format' ;
9+ protected readonly encoder : RespEncoder ;
10+ protected readonly decoder : RespDecoder ;
11+
12+ constructor ( protected readonly writer : Writer ) {
13+ this . encoder = new RespEncoder ( writer ) ;
14+ this . decoder = new RespDecoder ( ) ;
15+ }
16+
17+ encode ( value : unknown ) : Uint8Array {
18+ return this . encoder . encode ( value ) ;
19+ }
20+
21+ decode ( bytes : Uint8Array ) : unknown {
22+ return this . decoder . read ( bytes ) ;
23+ }
24+ }
Original file line number Diff line number Diff line change @@ -10,6 +10,12 @@ import {CliCodecText} from './codecs/text';
1010import { CliCodecTree } from './codecs/tree' ;
1111import { CliCodecUbjson } from './codecs/ubjson' ;
1212import { CliCodecHex } from './codecs/hex' ;
13+ import { CliCodecDagJson } from './codecs/dag-json' ;
14+ import { CliCodecDagCbor } from './codecs/dag-cbor' ;
15+ import { CliCodecBencode } from './codecs/bencode' ;
16+ import { CliCodecResp } from './codecs/resp' ;
17+ import { CliCodecBson } from './codecs/bson' ;
18+ import { CliCodecEjson } from './codecs/ejson' ;
1319
1420export const defaultCodecs = new CliCodecs ( ) ;
1521
@@ -24,3 +30,9 @@ defaultCodecs.register(new CliCodecText());
2430defaultCodecs . register ( new CliCodecTree ( ) ) ;
2531defaultCodecs . register ( new CliCodecRaw ( ) ) ;
2632defaultCodecs . register ( new CliCodecHex ( ) ) ;
33+ defaultCodecs . register ( new CliCodecDagJson ( writer ) ) ;
34+ defaultCodecs . register ( new CliCodecDagCbor ( writer ) ) ;
35+ defaultCodecs . register ( new CliCodecBencode ( writer ) ) ;
36+ defaultCodecs . register ( new CliCodecResp ( writer ) ) ;
37+ defaultCodecs . register ( new CliCodecBson ( writer ) ) ;
38+ defaultCodecs . register ( new CliCodecEjson ( writer ) ) ;
You can’t perform that action at this time.
0 commit comments