Skip to content

Commit 1cdf9b5

Browse files
authored
docs: update READMEs
Update all README.md files with consistent import paths and working usage examples
2 parents 77b5acf + 0d85ee1 commit 1cdf9b5

File tree

11 files changed

+237
-73
lines changed

11 files changed

+237
-73
lines changed

src/bencode/README.md

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,63 @@
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+
## Usage
15+
16+
Note: BencodeEncoder requires a Writer instance from the `@jsonjoy.com/util` package. Make sure to install it as a peer dependency:
17+
18+
```bash
19+
npm install @jsonjoy.com/util
20+
```
21+
22+
### Basic Usage
23+
24+
```ts
25+
import {BencodeEncoder, BencodeDecoder} from '@jsonjoy.com/json-pack/lib/bencode';
26+
import {Writer} from '@jsonjoy.com/util/lib/buffers/Writer';
27+
28+
const writer = new Writer();
29+
const encoder = new BencodeEncoder(writer);
30+
const decoder = new BencodeDecoder();
31+
32+
const data = {
33+
name: 'example.torrent',
34+
length: 1024,
35+
files: ['file1.txt', 'file2.txt']
36+
};
37+
38+
const encoded = encoder.encode(data);
39+
const decoded = decoder.decode(encoded);
40+
41+
console.log(decoded); // Original data structure
42+
```
43+
44+
### Alternative: Use simpler codecs
45+
46+
For easier usage without external dependencies, consider using MessagePack or CBOR codecs instead:
47+
48+
```ts
49+
import {MessagePackEncoder, MessagePackDecoder} from '@jsonjoy.com/json-pack/lib/msgpack';
50+
// ... simpler usage
51+
```
52+
53+
## Type Coercion
854

955
- Strings and `Uint8Array` are encoded as Bencode byte strings, decoded as `Uint8Array`.
1056
- `Object` and `Map` are encoded as Bencode dictionaries, decoded as `Object`.
1157
- `Array` and `Set` are encoded as Bencode lists, decoded as `Array`.
1258
- `number` and `bigint` are encoded as Bencode integers, decoded as `number`.
1359
- Float `number` are rounded and encoded as Bencode integers, decoded as `number`.
1460

15-
1661
## Extensions
1762

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

src/bson/README.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,20 @@ BSON (Binary JSON) is a binary representation of JSON-like documents. It extends
2222

2323
## Usage
2424

25+
Note: BsonEncoder requires a Writer instance from the `@jsonjoy.com/util` package. Make sure to install it as a peer dependency:
26+
27+
```bash
28+
npm install @jsonjoy.com/util
29+
```
30+
31+
### Basic Usage
32+
2533
```ts
26-
import {BsonEncoder, BsonDecoder} from 'json-pack/lib/bson';
34+
import {BsonEncoder, BsonDecoder} from '@jsonjoy.com/json-pack/lib/bson';
35+
import {Writer} from '@jsonjoy.com/util/lib/buffers/Writer';
2736

28-
const encoder = new BsonEncoder();
37+
const writer = new Writer();
38+
const encoder = new BsonEncoder(writer);
2939
const decoder = new BsonDecoder();
3040

3141
const data = {
@@ -36,6 +46,17 @@ const data = {
3646

3747
const encoded = encoder.encode(data);
3848
const decoded = decoder.decode(encoded);
49+
50+
console.log(decoded); // Original data with BSON types preserved
51+
```
52+
53+
### Alternative: Use simpler codecs
54+
55+
For easier usage without external dependencies, consider using MessagePack or CBOR codecs instead:
56+
57+
```ts
58+
import {MessagePackEncoder, MessagePackDecoder} from '@jsonjoy.com/json-pack/lib/msgpack';
59+
// ... simpler usage
3960
```
4061

4162

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: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,39 @@ Enhanced JSON implementation with high-performance encoding and decoding capabil
1212

1313
## Usage
1414

15+
Note: JsonEncoder requires a Writer instance from the `@jsonjoy.com/util` package. Make sure to install it as a peer dependency:
16+
17+
```bash
18+
npm install @jsonjoy.com/util
19+
```
20+
21+
### Basic Usage
22+
1523
```ts
16-
import {JsonEncoder, JsonDecoder} from 'json-pack/lib/json';
24+
import {JsonEncoder, JsonDecoder} from '@jsonjoy.com/json-pack/lib/json';
25+
import {Writer} from '@jsonjoy.com/util/lib/buffers/Writer';
1726

18-
const encoder = new JsonEncoder();
27+
const writer = new Writer();
28+
const encoder = new JsonEncoder(writer);
1929
const decoder = new JsonDecoder();
2030

2131
const data = {hello: 'world', numbers: [1, 2, 3]};
2232
const encoded = encoder.encode(data);
2333
const decoded = decoder.decode(encoded);
34+
35+
console.log(decoded); // {hello: 'world', numbers: [1, 2, 3]}
36+
```
37+
38+
### Alternative: Use simpler codecs
39+
40+
For easier usage without external dependencies, consider using MessagePack or CBOR codecs instead:
41+
42+
```ts
43+
import {MessagePackEncoder, MessagePackDecoder} from '@jsonjoy.com/json-pack/lib/msgpack';
44+
45+
const encoder = new MessagePackEncoder();
46+
const decoder = new MessagePackDecoder();
47+
// ... simpler usage
2448
```
2549

2650
## Performance

0 commit comments

Comments
 (0)