Skip to content

Commit 1dd5136

Browse files
Copilotstreamich
andcommitted
Update all codec README files with consistent import paths and basic usage
Co-authored-by: streamich <9773803+streamich@users.noreply.github.com>
1 parent 3362286 commit 1dd5136

10 files changed

Lines changed: 153 additions & 73 deletions

File tree

src/bencode/README.md

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,44 @@
1-
# Bencode codecs
1+
# Bencode Codec
22

33
Implements [Bencode][bencode] encoder and decoder.
44

55
[bencode]: https://en.wikipedia.org/wiki/Bencode
66

7-
Type coercion:
7+
## Features
8+
9+
- High-performance Bencode encoding and decoding
10+
- Support for all standard Bencode types
11+
- Extensions for additional JavaScript types
12+
- BitTorrent-compatible implementation
13+
14+
## Basic Usage
15+
16+
```ts
17+
import {BencodeEncoder, BencodeDecoder} from '@jsonjoy.com/json-pack/lib/bencode';
18+
19+
const encoder = new BencodeEncoder();
20+
const decoder = new BencodeDecoder();
21+
22+
const data = {
23+
name: 'example.torrent',
24+
length: 1024,
25+
files: ['file1.txt', 'file2.txt']
26+
};
27+
28+
const encoded = encoder.encode(data);
29+
const decoded = decoder.decode(encoded);
30+
31+
console.log(decoded); // Original data structure
32+
```
33+
34+
## Type Coercion
835

936
- Strings and `Uint8Array` are encoded as Bencode byte strings, decoded as `Uint8Array`.
1037
- `Object` and `Map` are encoded as Bencode dictionaries, decoded as `Object`.
1138
- `Array` and `Set` are encoded as Bencode lists, decoded as `Array`.
1239
- `number` and `bigint` are encoded as Bencode integers, decoded as `number`.
1340
- Float `number` are rounded and encoded as Bencode integers, decoded as `number`.
1441

15-
1642
## Extensions
1743

1844
This codec extends the Bencode specification to support the following types:

src/bson/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ BSON (Binary JSON) is a binary representation of JSON-like documents. It extends
2020
- MongoDB-compatible implementation
2121
- Efficient binary representation
2222

23-
## Usage
23+
## Basic Usage
2424

2525
```ts
26-
import {BsonEncoder, BsonDecoder} from 'json-pack/lib/bson';
26+
import {BsonEncoder, BsonDecoder} from '@jsonjoy.com/json-pack/lib/bson';
2727

2828
const encoder = new BsonEncoder();
2929
const decoder = new BsonDecoder();
@@ -36,6 +36,8 @@ const data = {
3636

3737
const encoded = encoder.encode(data);
3838
const decoded = decoder.decode(encoded);
39+
40+
console.log(decoded); // Original data with BSON types preserved
3941
```
4042

4143

src/cbor/README.md

Lines changed: 25 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,15 @@ and has no external dependencies.
55

66
[cbor]: https://cbor.io/
77

8-
## Getting started
9-
10-
To get started you need to import `CborEncoder` and `CborDecoder` classes like
11-
this:
12-
13-
```ts
14-
import {CborEncoder} from 'json-joy/es2020/json-pack/cbor/CborEncoder';
15-
import {CborDecoder} from 'json-joy/es2020/json-pack/cbor/CborDecoder';
16-
```
17-
18-
The `CborDecoder` implements full decoding feature set including advanced
19-
features like value skipping and decoding one level at-a-time. Those features
20-
are not necessary for most use cases, to save on bundle size you can import
21-
the "base" decoder instead:
8+
## Basic Usage
229

2310
```ts
24-
import {CborDecoderBase} from 'json-joy/es2020/json-pack/cbor/CborDecoderBase';
25-
```
26-
27-
The base decoder implements all CBOR decoding features except for the advanced
28-
shallow decoding features, like skipping, one level at-a-time decoding.
29-
30-
## Usage
11+
import {CborEncoder, CborDecoder} from '@jsonjoy.com/json-pack/lib/cbor';
3112

32-
Encode a JavaScript POJO to CBOR:
33-
34-
```ts
3513
const encoder = new CborEncoder();
14+
const decoder = new CborDecoder();
3615

37-
const pojo = {
16+
const data = {
3817
id: 123,
3918
foo: 'bar',
4019
tags: ['a', 'b', 'c'],
@@ -47,39 +26,34 @@ const pojo = {
4726
},
4827
};
4928

50-
const encoded = encoder.encode(pojo);
51-
console.log(encoded);
52-
// Uint8Array(53) [
53-
// 164, 98, 105, 100, 24, 123, 99, 102, 111, 111,
54-
// 99, 98, 97, 114, 100, 116, 97, 103, 115, 131,
55-
// 97, 97, 97, 98, 97, 99, 120, 6, 110, 101,
56-
// 115, 116, 101, 100, 163, 97, 97, 1, 97, 98,
57-
// 2, 120, 6, 108, 101, 118, 101, 108, 50, 161,
58-
// 97, 99, 3
59-
// ]
29+
const encoded = encoder.encode(data);
30+
const decoded = decoder.decode(encoded);
31+
32+
console.log(decoded); // Original data structure
6033
```
6134

62-
Decode CBOR back to JavaScript POJO:
35+
## Advanced Usage
36+
37+
To get started you need to import `CborEncoder` and `CborDecoder` classes like
38+
this:
6339

6440
```ts
65-
const decoderBase = new CborDecoderBase();
66-
const decoded = decoderBase.read(encoded);
41+
import {CborEncoder} from '@jsonjoy.com/json-pack/lib/cbor/CborEncoder';
42+
import {CborDecoder} from '@jsonjoy.com/json-pack/lib/cbor/CborDecoder';
43+
```
44+
45+
The `CborDecoder` implements full decoding feature set including advanced
46+
features like value skipping and decoding one level at-a-time. Those features
47+
are not necessary for most use cases, to save on bundle size you can import
48+
the "base" decoder instead:
6749

68-
console.log(decoded);
69-
// {
70-
// id: 123,
71-
// foo: 'bar',
72-
// tags: ['a', 'b', 'c'],
73-
// nested: {
74-
// a: 1,
75-
// b: 2,
76-
// level2: {
77-
// c: 3,
78-
// }
79-
// },
80-
// }
50+
```ts
51+
import {CborDecoderBase} from '@jsonjoy.com/json-pack/lib/cbor/CborDecoderBase';
8152
```
8253

54+
The base decoder implements all CBOR decoding features except for the advanced
55+
shallow decoding features, like skipping, one level at-a-time decoding.
56+
8357
## Implementation details
8458

8559
- Map keys are treated as strings.

src/ejson/README.md

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,32 @@ This directory contains the implementation of MongoDB Extended JSON v2 codec, pr
1717
- Throws descriptive errors for malformed input
1818
- Supports both canonical and relaxed format parsing
1919

20-
## API
20+
## Basic Usage
21+
22+
```ts
23+
import {EjsonEncoder, EjsonDecoder} from '@jsonjoy.com/json-pack/lib/ejson';
24+
25+
const encoder = new EjsonEncoder();
26+
const decoder = new EjsonDecoder();
27+
28+
const data = {
29+
_id: new BsonObjectId(0x507f1f77, 0xbcf86cd799, 0x439011),
30+
count: new BsonInt64(9223372036854775807),
31+
created: new Date('2023-01-15T10:30:00.000Z')
32+
};
33+
34+
const encoded = encoder.encode(data);
35+
const decoded = decoder.decode(encoded);
36+
37+
console.log(decoded); // Original data with BSON types preserved
38+
```
39+
40+
## Advanced Usage
2141

2242
### Binary-First API (Recommended for Performance)
43+
2344
```typescript
24-
import {EjsonEncoder, EjsonDecoder} from '@jsonjoy.com/json-pack/ejson2';
45+
import {EjsonEncoder, EjsonDecoder} from '@jsonjoy.com/json-pack/lib/ejson';
2546
import {Writer} from '@jsonjoy.com/util/lib/buffers/Writer';
2647

2748
const writer = new Writer();
@@ -36,8 +57,9 @@ const result = decoder.decode(bytes);
3657
```
3758

3859
### String API (For Compatibility)
60+
3961
```typescript
40-
import {createEjsonEncoder, createEjsonDecoder} from '@jsonjoy.com/json-pack/ejson2';
62+
import {createEjsonEncoder, createEjsonDecoder} from '@jsonjoy.com/json-pack/lib/ejson';
4163

4264
const encoder = createEjsonEncoder({ canonical: true });
4365
const decoder = createEjsonDecoder();

src/ion/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
This library provides high-performance Amazon Ion binary format encoding and decoding capabilities.
44

5-
## Usage
5+
## Basic Usage
66

77
```typescript
88
import {IonEncoderFast, IonDecoder} from '@jsonjoy.com/json-pack/lib/ion';
@@ -13,6 +13,8 @@ const decoder = new IonDecoder();
1313
const data = {users: [{name: 'Alice', age: 30}], count: 1};
1414
const encoded = encoder.encode(data);
1515
const decoded = decoder.decode(encoded);
16+
17+
console.log(decoded); // Original data structure
1618
```
1719

1820
## Important Usage Notes

src/json-binary/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
A JSON serializer and parser which supports `Uint8Array` binary data.
44
Encodes binary data as Base64 encoded data URI strings.
55

6+
## Basic Usage
7+
68
```ts
7-
import * as JSONB from 'json-pack/lib/json-binary';
9+
import * as JSONB from '@jsonjoy.com/json-pack/lib/json-binary';
810

911
const data = {
1012
foo: new Uint8Array([1, 2, 3]),
@@ -15,4 +17,6 @@ const json = JSONB.stringify(data);
1517

1618
const data2 = JSONB.parse(json);
1719
// { foo: Uint8Array { 1, 2, 3 } }
20+
21+
console.log(data2.foo instanceof Uint8Array); // true
1822
```

src/json/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,19 @@ Enhanced JSON implementation with high-performance encoding and decoding capabil
1010
- Binary-safe encoding/decoding
1111
- Optimized for repeated encoding operations
1212

13-
## Usage
13+
## Basic Usage
1414

1515
```ts
16-
import {JsonEncoder, JsonDecoder} from 'json-pack/lib/json';
16+
import {JsonEncoder, JsonDecoder} from '@jsonjoy.com/json-pack/lib/json';
1717

1818
const encoder = new JsonEncoder();
1919
const decoder = new JsonDecoder();
2020

2121
const data = {hello: 'world', numbers: [1, 2, 3]};
2222
const encoded = encoder.encode(data);
2323
const decoded = decoder.decode(encoded);
24+
25+
console.log(decoded); // {hello: 'world', numbers: [1, 2, 3]}
2426
```
2527

2628
## Performance

src/msgpack/README.md

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,31 @@ messagepack x 2,740 ops/sec ±10.15% (49 runs sampled), 364983 ns/op
4444
```
4545

4646

47-
## Usage
47+
## Basic Usage
48+
49+
Use `MessagePackEncoder` and `MessagePackDecoder` to encode plain JSON values:
50+
51+
```ts
52+
import {MessagePackEncoder, MessagePackDecoder} from '@jsonjoy.com/json-pack/lib/msgpack';
53+
54+
const encoder = new MessagePackEncoder();
55+
const decoder = new MessagePackDecoder();
56+
57+
const data = {foo: 'bar'};
58+
const buffer = encoder.encode(data);
59+
const obj = decoder.decode(buffer);
60+
61+
console.log(obj); // { foo: 'bar' }
62+
```
63+
64+
## Advanced Usage
4865

4966
### Basic usage
5067

5168
Use `Encoder` to encode plain JSON values.
5269

5370
```ts
54-
import {Encoder, Decoder} from '{lib,es6,esm}/json-pack';
71+
import {Encoder, Decoder} from '@jsonjoy.com/json-pack/lib/msgpack';
5572

5673
const encoder = new Encoder();
5774
const decoder = new Decoder();
@@ -65,7 +82,7 @@ Use `EncoderFull` to encode data that is more complex than plain JSON. For
6582
example, encode binary data using `ArrayBuffer`:
6683

6784
```ts
68-
import {EncoderFull, Decoder} from '{lib,es6,esm}/json-pack';
85+
import {EncoderFull, Decoder} from '@jsonjoy.com/json-pack/lib/msgpack';
6986

7087
const encoder = new EncoderFull();
7188
const decoder = new Decoder();
@@ -81,13 +98,13 @@ You might have already encoded MessagePack value, to insert it into a bigger
8198
MessagePack object as-is use `JsonPackValue` wrapper.
8299

83100
```ts
84-
import {EncoderFull, Decoder, JsonPackValue} from '{lib,es6,esm}/json-pack';
101+
import {EncoderFull, Decoder, JsonPackValue} from '@jsonjoy.com/json-pack/lib/msgpack';
85102

86103
const encoder = new EncoderFull();
87104
const decoder = new Decoder();
88105
const buffer = encoder.encode({foo: 'bar'});
89106
const value = new JsonPackValue(buffer);
90-
const buffer2 = encode({baz: value});
107+
const buffer2 = encoder.encode({baz: value});
91108

92109
const obj = decoder.decode(buffer2);
93110
console.log(obj); // { baz: { foo: 'bar' } }
@@ -98,14 +115,14 @@ console.log(obj); // { baz: { foo: 'bar' } }
98115
Use `JsonPackExtension` wrapper to encode extensions.
99116

100117
```ts
101-
import {EncoderFull, Decoder, JsonPackExtension} from '{lib,es6,esm}/json-pack';
118+
import {EncoderFull, Decoder, JsonPackExtension} from '@jsonjoy.com/json-pack/lib/msgpack';
102119

103120
const ext = new JsonPackExtension(1, new Uint8Array(8));
104121
const encoder = new EncoderFull();
105122
const decoder = new Decoder();
106123
const buffer = encoder.encode({foo: ext});
107124

108-
const obj = decoder.decode(buffe2);
125+
const obj = decoder.decode(buffer);
109126
console.log(obj); // { foo: JsonPackExtension }
110127
```
111128

@@ -132,7 +149,7 @@ result in different MessagePack blobs. Use `EncoderStable` to get stable
132149
MessagePack blobs.
133150

134151
```ts
135-
import {EncoderStable} from '{lib,es6,esm}/json-pack';
152+
import {EncoderStable} from '@jsonjoy.com/json-pack/lib/msgpack';
136153

137154
const encoder = new EncoderStable();
138155

src/resp/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ RESP is the protocol used by Redis to communicate between clients and servers. T
3535
- Bulk strings
3636
- Arrays
3737

38-
## Usage
38+
## Basic Usage
3939

4040
```ts
41-
import {RespEncoder, RespDecoder} from 'json-pack/lib/resp';
41+
import {RespEncoder, RespDecoder} from '@jsonjoy.com/json-pack/lib/resp';
4242

4343
const encoder = new RespEncoder();
4444
const decoder = new RespDecoder();

0 commit comments

Comments
 (0)