@atcute/cbor 2.2.8 → 2.3.1
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/README.md +37 -21
- package/dist/bytes.d.ts +2 -2
- package/dist/bytes.d.ts.map +1 -1
- package/dist/bytes.js.map +1 -1
- package/dist/decode.d.ts +2 -2
- package/dist/decode.d.ts.map +1 -1
- package/dist/decode.js +7 -7
- package/dist/decode.js.map +1 -1
- package/dist/encode.d.ts.map +1 -1
- package/dist/encode.js +78 -38
- package/dist/encode.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/lib/decode.ts +8 -9
- package/lib/encode.ts +102 -46
- package/lib/index.ts +5 -3
- package/package.json +19 -14
package/README.md
CHANGED
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
# @atcute/cbor
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Protocol.
|
|
5
|
-
|
|
6
|
-
the specific profile being implemented is [IPLD DAG-CBOR][ipld-dag-cbor], with some additional notes
|
|
7
|
-
to keep in mind:
|
|
8
|
-
|
|
9
|
-
- `undefined` types are still forbidden, except for when they are in a `map` type, where fields will
|
|
10
|
-
be omitted instead, which makes it easier to construct objects to then pass to the encoder.
|
|
11
|
-
- `byte` and `link` types are represented by atproto's [lex-json][atproto-data-model] interfaces,
|
|
12
|
-
but because these involve string codec and parsing, they are done lazily by `BytesWrapper` and
|
|
13
|
-
`CidLinkWrapper` instances.
|
|
14
|
-
- use `fromBytes` and `fromCidLink` to convert them to Uint8Array or CID interface respectively,
|
|
15
|
-
without hitting the string conversion path.
|
|
16
|
-
- use `toBytes` and `toCidLink` for the other direction.
|
|
17
|
-
- integers can't exceed JavaScript's safe integer range, no bigint conversions will occur as they
|
|
18
|
-
will be thrown instead if encountered.
|
|
3
|
+
deterministic CBOR codec for AT Protocol.
|
|
19
4
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
```sh
|
|
6
|
+
npm install @atcute/cbor
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
this library implements DASL's [DRISL][dasl-drisl] format used by AT Protocol for encoding records
|
|
10
|
+
and repository data.
|
|
11
|
+
|
|
12
|
+
[dasl-drisl]: https://dasl.ing/drisl.html
|
|
13
|
+
|
|
14
|
+
## usage
|
|
15
|
+
|
|
16
|
+
### encoding
|
|
23
17
|
|
|
24
18
|
```ts
|
|
25
19
|
import { encode } from '@atcute/cbor';
|
|
@@ -32,7 +26,29 @@ const record = {
|
|
|
32
26
|
};
|
|
33
27
|
|
|
34
28
|
const cbor = encode(record);
|
|
35
|
-
//
|
|
29
|
+
// -> Uint8Array(90)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### decoding
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { decode, decodeFirst } from '@atcute/cbor';
|
|
36
|
+
|
|
37
|
+
const record = decode(cborBytes);
|
|
38
|
+
// -> { $type: 'app.bsky.feed.post', ... }
|
|
39
|
+
|
|
40
|
+
// decode from a buffer containing multiple values
|
|
41
|
+
const [value, remainder] = decodeFirst(cborBytes);
|
|
36
42
|
```
|
|
37
43
|
|
|
38
|
-
|
|
44
|
+
## notes
|
|
45
|
+
|
|
46
|
+
- `undefined` values are omitted from maps (making it easier to construct objects)
|
|
47
|
+
- bytes and CID links use lazy wrappers (`BytesWrapper`, `CidLinkWrapper`) compatible with atproto's
|
|
48
|
+
[lex-json][atproto-data-model] format
|
|
49
|
+
- use `toBytes`/`fromBytes` and `toCidLink`/`fromCidLink` to convert between lex-json and raw types
|
|
50
|
+
- integers must be within JavaScript's safe integer range (no bigint support)
|
|
51
|
+
|
|
52
|
+
[atproto-data-model]: https://atproto.com/specs/data-model
|
|
53
|
+
|
|
54
|
+
based on [`microcbor`](https://github.com/joeltg/microcbor).
|
package/dist/bytes.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ export declare class BytesWrapper implements Bytes {
|
|
|
8
8
|
toJSON(): Bytes;
|
|
9
9
|
}
|
|
10
10
|
export declare const isBytes: (value: unknown) => value is Bytes;
|
|
11
|
-
export declare const toBytes: (buf: Uint8Array) => Bytes;
|
|
12
|
-
export declare const fromBytes: (bytes: Bytes) => Uint8Array
|
|
11
|
+
export declare const toBytes: (buf: Uint8Array<ArrayBufferLike>) => Bytes;
|
|
12
|
+
export declare const fromBytes: (bytes: Bytes) => Uint8Array<ArrayBufferLike>;
|
|
13
13
|
//# sourceMappingURL=bytes.d.ts.map
|
package/dist/bytes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../lib/bytes.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,KAAK;IACrB,MAAM,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,YAAa,YAAW,KAAK;IAItB,GAAG,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../lib/bytes.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,KAAK;IACrB,MAAM,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,YAAa,YAAW,KAAK;IAItB,GAAG,EAAE,UAAU;IAAlC,YAAmB,GAAG,EAAE,UAAU,EAAI;IAEtC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,MAAM,IAAI,KAAK,CAEd;CACD;AAED,eAAO,MAAM,OAAO,oCAMnB,CAAC;AAEF,eAAO,MAAM,OAAO,6CAEnB,CAAC;AAEF,eAAO,MAAM,SAAS,+CAMrB,CAAC"}
|
package/dist/bytes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../lib/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMzD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAEzD,MAAM,OAAO,YAAY;IAIL;
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../lib/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMzD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAEzD,MAAM,OAAO,YAAY;IAIL,GAAG;IAHtB,gBAAgB;IACP,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IAE/B,YAAmB,GAAe,EAAE;mBAAjB,GAAG;IAAe,CAAC;IAEtC,IAAI,MAAM,GAAW;QACpB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAAA,CAC1B;IAED,MAAM,GAAU;QACf,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CAC/B;CACD;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAkB,EAAE,CAAC;IAC1D,MAAM,GAAG,GAAG,KAAY,CAAC;IAEzB,OAAO,CACN,GAAG,YAAY,YAAY,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAC1G,CAAC;AAAA,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAe,EAAS,EAAE,CAAC;IAClD,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;AAAA,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAc,EAAE,CAAC;IACtD,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAAA,CAChC,CAAC"}
|
package/dist/decode.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const decodeFirst: (buf: Uint8Array) => [value: any, remainder: Uint8Array];
|
|
2
|
-
export declare const decode: (buf: Uint8Array) => any;
|
|
1
|
+
export declare const decodeFirst: (buf: Uint8Array<ArrayBufferLike>) => [value: any, remainder: Uint8Array<ArrayBufferLike>];
|
|
2
|
+
export declare const decode: (buf: Uint8Array<ArrayBufferLike>) => any;
|
|
3
3
|
//# sourceMappingURL=decode.d.ts.map
|
package/dist/decode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"AA0JA,eAAO,MAAM,WAAW,4FA6JvB,CAAC;AAEF,eAAO,MAAM,MAAM,2CAOlB,CAAC"}
|
package/dist/decode.js
CHANGED
|
@@ -85,9 +85,6 @@ const readCid = (state, length) => {
|
|
|
85
85
|
const cid = fromBinary(state.b.subarray(state.p, (state.p += length)));
|
|
86
86
|
return new CidLinkWrapper(cid.bytes);
|
|
87
87
|
};
|
|
88
|
-
const compareKeys = (a, b) => {
|
|
89
|
-
return a.length - b.length || (a < b ? -1 : a > b ? 1 : 0);
|
|
90
|
-
};
|
|
91
88
|
const decodeStringKey = (state) => {
|
|
92
89
|
const prelude = readUint8(state);
|
|
93
90
|
const type = prelude >> 5;
|
|
@@ -95,7 +92,7 @@ const decodeStringKey = (state) => {
|
|
|
95
92
|
throw new TypeError(`expected map to only have string keys; got type ${type}`);
|
|
96
93
|
}
|
|
97
94
|
const info = prelude & 0x1f;
|
|
98
|
-
const length = readArgument(state, info);
|
|
95
|
+
const length = info < 24 ? info : readArgument(state, info);
|
|
99
96
|
return readString(state, length);
|
|
100
97
|
};
|
|
101
98
|
export const decodeFirst = (buf) => {
|
|
@@ -111,7 +108,7 @@ export const decodeFirst = (buf) => {
|
|
|
111
108
|
const prelude = readUint8(state);
|
|
112
109
|
const type = prelude >> 5;
|
|
113
110
|
const info = prelude & 0x1f;
|
|
114
|
-
const arg = type === 7 ? 0 : readArgument(state, info);
|
|
111
|
+
const arg = type === 7 ? 0 : info < 24 ? info : readArgument(state, info);
|
|
115
112
|
switch (type) {
|
|
116
113
|
case 0: {
|
|
117
114
|
value = arg;
|
|
@@ -131,6 +128,7 @@ export const decodeFirst = (buf) => {
|
|
|
131
128
|
}
|
|
132
129
|
case 4: {
|
|
133
130
|
if (arg > 0) {
|
|
131
|
+
// oxlint-disable-next-line no-new-array
|
|
134
132
|
stack = { t: 1, c: (value = new Array(arg)), k: null, r: arg, n: stack };
|
|
135
133
|
continue jump;
|
|
136
134
|
}
|
|
@@ -215,8 +213,10 @@ export const decodeFirst = (buf) => {
|
|
|
215
213
|
if (!stack.t) {
|
|
216
214
|
// Read the key of the next map item
|
|
217
215
|
const prevKey = stack.k;
|
|
218
|
-
|
|
219
|
-
|
|
216
|
+
const key = decodeStringKey(state);
|
|
217
|
+
stack.k = key;
|
|
218
|
+
const cmp = key.length - prevKey.length || (key > prevKey ? 1 : key < prevKey ? -1 : 0);
|
|
219
|
+
if (cmp <= 0) {
|
|
220
220
|
throw new TypeError(`map keys are not in canonical order or contain duplicates`);
|
|
221
221
|
}
|
|
222
222
|
}
|
package/dist/decode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AAQjD,MAAM,YAAY,GAAG,CAAC,KAAY,EAAE,IAAY,EAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"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"}
|
package/dist/encode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../lib/encode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../lib/encode.ts"],"names":[],"mappings":"AA+WA,eAAO,MAAM,MAAM,yCAUlB,CAAC"}
|
package/dist/encode.js
CHANGED
|
@@ -5,7 +5,7 @@ const MAX_TYPE_ARG_LEN = 9;
|
|
|
5
5
|
const CHUNK_SIZE = 1024;
|
|
6
6
|
const _max = Math.max;
|
|
7
7
|
const _isInteger = Number.isInteger;
|
|
8
|
-
const
|
|
8
|
+
const _isFinite = Number.isFinite;
|
|
9
9
|
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;
|
|
10
10
|
const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER;
|
|
11
11
|
const resizeIfNeeded = (state, needed) => {
|
|
@@ -99,8 +99,8 @@ const writeFloat = (state, val) => {
|
|
|
99
99
|
writeFloat64(state, val);
|
|
100
100
|
};
|
|
101
101
|
const writeNumber = (state, val) => {
|
|
102
|
-
if (
|
|
103
|
-
throw new RangeError(`NaN values not supported`);
|
|
102
|
+
if (!_isFinite(val)) {
|
|
103
|
+
throw new RangeError(`NaN and Infinity values not supported`);
|
|
104
104
|
}
|
|
105
105
|
if (val > MAX_SAFE_INTEGER || val < MIN_SAFE_INTEGER) {
|
|
106
106
|
throw new RangeError(`can't encode numbers beyond safe integer range`);
|
|
@@ -115,6 +115,11 @@ const writeNumber = (state, val) => {
|
|
|
115
115
|
};
|
|
116
116
|
const writeString = (state, val) => {
|
|
117
117
|
const strLength = val.length;
|
|
118
|
+
if (strLength === 0) {
|
|
119
|
+
resizeIfNeeded(state, 1);
|
|
120
|
+
writeUint8(state, 0x60);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
118
123
|
// JS strings are UTF-16 (ECMA spec)
|
|
119
124
|
// Therefore, worst case length of UTF-8 is length * 3. (plus 9 bytes of CBOR header)
|
|
120
125
|
// Greatly overshoots in practice, but doesn't matter. (alloc is O(1)+ anyway)
|
|
@@ -122,10 +127,31 @@ const writeString = (state, val) => {
|
|
|
122
127
|
// Optimistic fast encode
|
|
123
128
|
ascii: {
|
|
124
129
|
const ptr = state.p + getTypeInfoLength(strLength);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
130
|
+
const first = val.charCodeAt(0);
|
|
131
|
+
if (first > 0x7f) {
|
|
132
|
+
break ascii;
|
|
133
|
+
}
|
|
134
|
+
state.b[ptr] = first;
|
|
135
|
+
let i = 1;
|
|
136
|
+
// batch-process four characters per iteration to lower charCodeAt/branch overhead.
|
|
137
|
+
for (; i + 3 < strLength; i += 4) {
|
|
138
|
+
const a = val.charCodeAt(i);
|
|
139
|
+
const b = val.charCodeAt(i + 1);
|
|
140
|
+
const c = val.charCodeAt(i + 2);
|
|
141
|
+
const d = val.charCodeAt(i + 3);
|
|
142
|
+
if ((a | b | c | d) & 0x80) {
|
|
128
143
|
break ascii;
|
|
144
|
+
}
|
|
145
|
+
state.b[ptr + i] = a;
|
|
146
|
+
state.b[ptr + i + 1] = b;
|
|
147
|
+
state.b[ptr + i + 2] = c;
|
|
148
|
+
state.b[ptr + i + 3] = d;
|
|
149
|
+
}
|
|
150
|
+
for (; i < strLength; i++) {
|
|
151
|
+
const code = val.charCodeAt(i);
|
|
152
|
+
if (code > 0x7f) {
|
|
153
|
+
break ascii;
|
|
154
|
+
}
|
|
129
155
|
state.b[ptr + i] = code;
|
|
130
156
|
}
|
|
131
157
|
// String was ASCII-only, we're done
|
|
@@ -199,7 +225,37 @@ const writeValue = (state, val) => {
|
|
|
199
225
|
}
|
|
200
226
|
return;
|
|
201
227
|
}
|
|
202
|
-
// case:
|
|
228
|
+
// case: POJO
|
|
229
|
+
if (val.constructor === Object) {
|
|
230
|
+
const keys = getOrderedObjectKeys(val);
|
|
231
|
+
const len = keys.length;
|
|
232
|
+
if (len === 1) {
|
|
233
|
+
const key = keys[0];
|
|
234
|
+
if (key === '$link') {
|
|
235
|
+
if (typeof val.$link === 'string') {
|
|
236
|
+
writeCid(state, val);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
throw new TypeError(`unexpected cid-link value`);
|
|
240
|
+
}
|
|
241
|
+
if (key === '$bytes') {
|
|
242
|
+
if (typeof val.$bytes === 'string') {
|
|
243
|
+
writeBytes(state, val);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
throw new TypeError(`unexpected bytes value`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
resizeIfNeeded(state, MAX_TYPE_ARG_LEN);
|
|
250
|
+
writeTypeAndArgument(state, 5, len);
|
|
251
|
+
for (let idx = 0; idx < len; idx++) {
|
|
252
|
+
const key = keys[idx];
|
|
253
|
+
writeString(state, key);
|
|
254
|
+
writeValue(state, val[key]);
|
|
255
|
+
}
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
// case: cid-link wrappers / odd objects
|
|
203
259
|
if ('$link' in val) {
|
|
204
260
|
if (val instanceof CidLinkWrapper || typeof val.$link === 'string') {
|
|
205
261
|
writeCid(state, val);
|
|
@@ -207,7 +263,7 @@ const writeValue = (state, val) => {
|
|
|
207
263
|
}
|
|
208
264
|
throw new TypeError(`unexpected cid-link value`);
|
|
209
265
|
}
|
|
210
|
-
// case: bytes
|
|
266
|
+
// case: bytes wrappers / odd objects
|
|
211
267
|
if ('$bytes' in val) {
|
|
212
268
|
if (val instanceof BytesWrapper || typeof val.$bytes === 'string') {
|
|
213
269
|
writeBytes(state, val);
|
|
@@ -215,19 +271,6 @@ const writeValue = (state, val) => {
|
|
|
215
271
|
}
|
|
216
272
|
throw new TypeError(`unexpected bytes value`);
|
|
217
273
|
}
|
|
218
|
-
// case: POJO
|
|
219
|
-
if (val.constructor === Object) {
|
|
220
|
-
const keys = getOrderedObjectKeys(val);
|
|
221
|
-
const len = keys.length;
|
|
222
|
-
resizeIfNeeded(state, MAX_TYPE_ARG_LEN);
|
|
223
|
-
writeTypeAndArgument(state, 5, len);
|
|
224
|
-
for (let idx = 0; idx < len; idx++) {
|
|
225
|
-
const key = keys[idx];
|
|
226
|
-
writeString(state, key);
|
|
227
|
-
writeValue(state, val[key]);
|
|
228
|
-
}
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
274
|
}
|
|
232
275
|
}
|
|
233
276
|
throw new TypeError(`unsupported type: ${val}`);
|
|
@@ -253,29 +296,26 @@ export const encode = (value) => {
|
|
|
253
296
|
/** @internal */
|
|
254
297
|
export const getOrderedObjectKeys = (obj) => {
|
|
255
298
|
const keys = Object.keys(obj);
|
|
256
|
-
|
|
299
|
+
let len = 0;
|
|
300
|
+
for (let i = 0; i < keys.length; i++) {
|
|
257
301
|
const valA = keys[i];
|
|
258
|
-
// Tuck in undefined value filtering here to avoid extra iterations.
|
|
259
302
|
if (obj[valA] === undefined) {
|
|
260
|
-
|
|
261
|
-
// - Pull the currently last item in the keys array at the current place
|
|
262
|
-
// - Update saved value of array length
|
|
263
|
-
// - Decrease i by 1
|
|
264
|
-
keys[i--] = keys[--len];
|
|
265
|
-
keys.length = len;
|
|
303
|
+
continue;
|
|
266
304
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
keys[j + 1] = valB;
|
|
305
|
+
const lenA = valA.length;
|
|
306
|
+
let j = len - 1;
|
|
307
|
+
for (; j >= 0; j--) {
|
|
308
|
+
const valB = keys[j];
|
|
309
|
+
// Note: Don't need to check for equality, keys are always distinct.
|
|
310
|
+
if (lenA > valB.length || (lenA === valB.length && valA > valB)) {
|
|
311
|
+
break;
|
|
275
312
|
}
|
|
276
|
-
keys[j + 1] =
|
|
313
|
+
keys[j + 1] = valB;
|
|
277
314
|
}
|
|
315
|
+
keys[j + 1] = valA;
|
|
316
|
+
len++;
|
|
278
317
|
}
|
|
318
|
+
keys.length = len;
|
|
279
319
|
return keys;
|
|
280
320
|
};
|
|
281
321
|
//# sourceMappingURL=encode.js.map
|
package/dist/encode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../lib/encode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../lib/encode.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CidLinkWrapper, fromCidLink, isCidLink, toCidLink, type CidLink } from '@atcute/cid';
|
|
2
|
-
export { BytesWrapper, fromBytes, isBytes, toBytes, type Bytes } from './bytes.
|
|
3
|
-
export { decode, decodeFirst } from './decode.
|
|
4
|
-
export { encode } from './encode.
|
|
2
|
+
export { BytesWrapper, fromBytes, isBytes, toBytes, type Bytes } from './bytes.ts';
|
|
3
|
+
export { decode, decodeFirst } from './decode.ts';
|
|
4
|
+
export { encode } from './encode.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAC;AAE9F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AAEnF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAC;AAE9F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AAEnF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/lib/decode.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CidLinkWrapper, fromBinary, type CidLink } from '@atcute/cid';
|
|
2
2
|
import { decodeUtf8From } from '@atcute/uint8array';
|
|
3
3
|
|
|
4
|
-
import { toBytes, type Bytes } from './bytes.
|
|
4
|
+
import { toBytes, type Bytes } from './bytes.ts';
|
|
5
5
|
|
|
6
6
|
interface State {
|
|
7
7
|
b: Uint8Array;
|
|
@@ -113,10 +113,6 @@ const readCid = (state: State, length: number): CidLink => {
|
|
|
113
113
|
return new CidLinkWrapper(cid.bytes);
|
|
114
114
|
};
|
|
115
115
|
|
|
116
|
-
const compareKeys = (a: string, b: string): number => {
|
|
117
|
-
return a.length - b.length || (a < b ? -1 : a > b ? 1 : 0);
|
|
118
|
-
};
|
|
119
|
-
|
|
120
116
|
const decodeStringKey = (state: State): string => {
|
|
121
117
|
const prelude = readUint8(state);
|
|
122
118
|
|
|
@@ -126,7 +122,7 @@ const decodeStringKey = (state: State): string => {
|
|
|
126
122
|
}
|
|
127
123
|
|
|
128
124
|
const info = prelude & 0x1f;
|
|
129
|
-
const length = readArgument(state, info);
|
|
125
|
+
const length = info < 24 ? info : readArgument(state, info);
|
|
130
126
|
return readString(state, length);
|
|
131
127
|
};
|
|
132
128
|
|
|
@@ -173,7 +169,7 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
173
169
|
|
|
174
170
|
const type = prelude >> 5;
|
|
175
171
|
const info = prelude & 0x1f;
|
|
176
|
-
const arg = type === 7 ? 0 : readArgument(state, info);
|
|
172
|
+
const arg = type === 7 ? 0 : info < 24 ? info : readArgument(state, info);
|
|
177
173
|
|
|
178
174
|
switch (type) {
|
|
179
175
|
case 0: {
|
|
@@ -194,6 +190,7 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
194
190
|
}
|
|
195
191
|
case 4: {
|
|
196
192
|
if (arg > 0) {
|
|
193
|
+
// oxlint-disable-next-line no-new-array
|
|
197
194
|
stack = { t: 1, c: (value = new Array(arg)), k: null, r: arg, n: stack };
|
|
198
195
|
continue jump;
|
|
199
196
|
}
|
|
@@ -291,9 +288,11 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
291
288
|
if (!stack.t) {
|
|
292
289
|
// Read the key of the next map item
|
|
293
290
|
const prevKey = stack.k;
|
|
294
|
-
|
|
291
|
+
const key = decodeStringKey(state);
|
|
292
|
+
stack.k = key;
|
|
295
293
|
|
|
296
|
-
|
|
294
|
+
const cmp = key.length - prevKey.length || (key > prevKey ? 1 : key < prevKey ? -1 : 0);
|
|
295
|
+
if (cmp <= 0) {
|
|
297
296
|
throw new TypeError(`map keys are not in canonical order or contain duplicates`);
|
|
298
297
|
}
|
|
299
298
|
}
|
package/lib/encode.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type CidLink, CidLinkWrapper, fromString } from '@atcute/cid';
|
|
2
2
|
import { allocUnsafe, concat, encodeUtf8Into } from '@atcute/uint8array';
|
|
3
3
|
|
|
4
|
-
import { type Bytes, BytesWrapper, fromBytes } from './bytes.
|
|
4
|
+
import { type Bytes, BytesWrapper, fromBytes } from './bytes.ts';
|
|
5
5
|
|
|
6
6
|
const MAX_TYPE_ARG_LEN = 9;
|
|
7
7
|
const CHUNK_SIZE = 1024;
|
|
@@ -17,7 +17,7 @@ interface State {
|
|
|
17
17
|
const _max = Math.max;
|
|
18
18
|
|
|
19
19
|
const _isInteger = Number.isInteger;
|
|
20
|
-
const
|
|
20
|
+
const _isFinite = Number.isFinite;
|
|
21
21
|
|
|
22
22
|
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;
|
|
23
23
|
const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER;
|
|
@@ -135,8 +135,8 @@ const writeFloat = (state: State, val: number): void => {
|
|
|
135
135
|
};
|
|
136
136
|
|
|
137
137
|
const writeNumber = (state: State, val: number): void => {
|
|
138
|
-
if (
|
|
139
|
-
throw new RangeError(`NaN values not supported`);
|
|
138
|
+
if (!_isFinite(val)) {
|
|
139
|
+
throw new RangeError(`NaN and Infinity values not supported`);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
if (val > MAX_SAFE_INTEGER || val < MIN_SAFE_INTEGER) {
|
|
@@ -154,6 +154,12 @@ const writeNumber = (state: State, val: number): void => {
|
|
|
154
154
|
const writeString = (state: State, val: string): void => {
|
|
155
155
|
const strLength = val.length;
|
|
156
156
|
|
|
157
|
+
if (strLength === 0) {
|
|
158
|
+
resizeIfNeeded(state, 1);
|
|
159
|
+
writeUint8(state, 0x60);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
157
163
|
// JS strings are UTF-16 (ECMA spec)
|
|
158
164
|
// Therefore, worst case length of UTF-8 is length * 3. (plus 9 bytes of CBOR header)
|
|
159
165
|
// Greatly overshoots in practice, but doesn't matter. (alloc is O(1)+ anyway)
|
|
@@ -162,9 +168,37 @@ const writeString = (state: State, val: string): void => {
|
|
|
162
168
|
// Optimistic fast encode
|
|
163
169
|
ascii: {
|
|
164
170
|
const ptr = state.p + getTypeInfoLength(strLength);
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
171
|
+
const first = val.charCodeAt(0);
|
|
172
|
+
if (first > 0x7f) {
|
|
173
|
+
break ascii;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
state.b[ptr] = first;
|
|
177
|
+
let i = 1;
|
|
178
|
+
|
|
179
|
+
// batch-process four characters per iteration to lower charCodeAt/branch overhead.
|
|
180
|
+
for (; i + 3 < strLength; i += 4) {
|
|
181
|
+
const a = val.charCodeAt(i);
|
|
182
|
+
const b = val.charCodeAt(i + 1);
|
|
183
|
+
const c = val.charCodeAt(i + 2);
|
|
184
|
+
const d = val.charCodeAt(i + 3);
|
|
185
|
+
|
|
186
|
+
if ((a | b | c | d) & 0x80) {
|
|
187
|
+
break ascii;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
state.b[ptr + i] = a;
|
|
191
|
+
state.b[ptr + i + 1] = b;
|
|
192
|
+
state.b[ptr + i + 2] = c;
|
|
193
|
+
state.b[ptr + i + 3] = d;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
for (; i < strLength; i++) {
|
|
197
|
+
const code = val.charCodeAt(i);
|
|
198
|
+
if (code > 0x7f) {
|
|
199
|
+
break ascii;
|
|
200
|
+
}
|
|
201
|
+
|
|
168
202
|
state.b[ptr + i] = code;
|
|
169
203
|
}
|
|
170
204
|
|
|
@@ -256,31 +290,33 @@ const writeValue = (state: State, val: any): void => {
|
|
|
256
290
|
return;
|
|
257
291
|
}
|
|
258
292
|
|
|
259
|
-
// case: cid-link
|
|
260
|
-
if ('$link' in val) {
|
|
261
|
-
if (val instanceof CidLinkWrapper || typeof val.$link === 'string') {
|
|
262
|
-
writeCid(state, val);
|
|
263
|
-
return;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
throw new TypeError(`unexpected cid-link value`);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
// case: bytes
|
|
270
|
-
if ('$bytes' in val) {
|
|
271
|
-
if (val instanceof BytesWrapper || typeof val.$bytes === 'string') {
|
|
272
|
-
writeBytes(state, val);
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
throw new TypeError(`unexpected bytes value`);
|
|
277
|
-
}
|
|
278
|
-
|
|
279
293
|
// case: POJO
|
|
280
294
|
if (val.constructor === Object) {
|
|
281
295
|
const keys = getOrderedObjectKeys(val);
|
|
282
296
|
const len = keys.length;
|
|
283
297
|
|
|
298
|
+
if (len === 1) {
|
|
299
|
+
const key = keys[0]!;
|
|
300
|
+
|
|
301
|
+
if (key === '$link') {
|
|
302
|
+
if (typeof val.$link === 'string') {
|
|
303
|
+
writeCid(state, val);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
throw new TypeError(`unexpected cid-link value`);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
if (key === '$bytes') {
|
|
311
|
+
if (typeof val.$bytes === 'string') {
|
|
312
|
+
writeBytes(state, val);
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
throw new TypeError(`unexpected bytes value`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
284
320
|
resizeIfNeeded(state, MAX_TYPE_ARG_LEN);
|
|
285
321
|
writeTypeAndArgument(state, 5, len);
|
|
286
322
|
|
|
@@ -293,6 +329,26 @@ const writeValue = (state: State, val: any): void => {
|
|
|
293
329
|
|
|
294
330
|
return;
|
|
295
331
|
}
|
|
332
|
+
|
|
333
|
+
// case: cid-link wrappers / odd objects
|
|
334
|
+
if ('$link' in val) {
|
|
335
|
+
if (val instanceof CidLinkWrapper || typeof val.$link === 'string') {
|
|
336
|
+
writeCid(state, val);
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
throw new TypeError(`unexpected cid-link value`);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// case: bytes wrappers / odd objects
|
|
344
|
+
if ('$bytes' in val) {
|
|
345
|
+
if (val instanceof BytesWrapper || typeof val.$bytes === 'string') {
|
|
346
|
+
writeBytes(state, val);
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
throw new TypeError(`unexpected bytes value`);
|
|
351
|
+
}
|
|
296
352
|
}
|
|
297
353
|
}
|
|
298
354
|
|
|
@@ -324,31 +380,31 @@ export const encode = (value: any): Uint8Array<ArrayBuffer> => {
|
|
|
324
380
|
/** @internal */
|
|
325
381
|
export const getOrderedObjectKeys = (obj: Record<string, unknown>): string[] => {
|
|
326
382
|
const keys = Object.keys(obj);
|
|
327
|
-
|
|
328
|
-
const valA = keys[i];
|
|
383
|
+
let len = 0;
|
|
329
384
|
|
|
330
|
-
|
|
385
|
+
for (let i = 0; i < keys.length; i++) {
|
|
386
|
+
const valA = keys[i];
|
|
331
387
|
if (obj[valA] === undefined) {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
const cmp = valA.length - valB.length || +(valA > valB);
|
|
344
|
-
if (cmp > 0) break;
|
|
345
|
-
|
|
346
|
-
keys[j + 1] = valB;
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
const lenA = valA.length;
|
|
392
|
+
let j = len - 1;
|
|
393
|
+
for (; j >= 0; j--) {
|
|
394
|
+
const valB = keys[j];
|
|
395
|
+
|
|
396
|
+
// Note: Don't need to check for equality, keys are always distinct.
|
|
397
|
+
if (lenA > valB.length || (lenA === valB.length && valA > valB)) {
|
|
398
|
+
break;
|
|
347
399
|
}
|
|
348
400
|
|
|
349
|
-
keys[j + 1] =
|
|
401
|
+
keys[j + 1] = valB;
|
|
350
402
|
}
|
|
403
|
+
|
|
404
|
+
keys[j + 1] = valA;
|
|
405
|
+
len++;
|
|
351
406
|
}
|
|
352
407
|
|
|
408
|
+
keys.length = len;
|
|
353
409
|
return keys;
|
|
354
410
|
};
|
package/lib/index.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
// implements github:darobin/dasl.ing@cc66c35 (2025-10-20)
|
|
2
|
+
|
|
1
3
|
export { CidLinkWrapper, fromCidLink, isCidLink, toCidLink, type CidLink } from '@atcute/cid';
|
|
2
4
|
|
|
3
|
-
export { BytesWrapper, fromBytes, isBytes, toBytes, type Bytes } from './bytes.
|
|
5
|
+
export { BytesWrapper, fromBytes, isBytes, toBytes, type Bytes } from './bytes.ts';
|
|
4
6
|
|
|
5
|
-
export { decode, decodeFirst } from './decode.
|
|
6
|
-
export { encode } from './encode.
|
|
7
|
+
export { decode, decodeFirst } from './decode.ts';
|
|
8
|
+
export { encode } from './encode.ts';
|
package/package.json
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"type": "module",
|
|
3
2
|
"name": "@atcute/cbor",
|
|
4
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.1",
|
|
5
4
|
"description": "lightweight DASL dCBOR42 codec library for AT Protocol",
|
|
6
5
|
"keywords": [
|
|
7
6
|
"atproto",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
7
|
+
"cbor",
|
|
8
|
+
"dasl"
|
|
10
9
|
],
|
|
11
10
|
"license": "0BSD",
|
|
12
11
|
"repository": {
|
|
@@ -19,24 +18,30 @@
|
|
|
19
18
|
"!lib/**/*.bench.ts",
|
|
20
19
|
"!lib/**/*.test.ts"
|
|
21
20
|
],
|
|
21
|
+
"type": "module",
|
|
22
|
+
"sideEffects": false,
|
|
22
23
|
"exports": {
|
|
23
24
|
".": "./dist/index.js",
|
|
24
25
|
"./bytes": "./dist/bytes.js"
|
|
25
26
|
},
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
"@ipld/dag-cbor": "^9.2.5",
|
|
29
|
-
"@types/bun": "^1.3.1",
|
|
30
|
-
"cbor-x": "^1.6.0"
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
31
29
|
},
|
|
32
30
|
"dependencies": {
|
|
33
|
-
"@atcute/multibase": "^1.1.
|
|
34
|
-
"@atcute/
|
|
35
|
-
"@atcute/
|
|
31
|
+
"@atcute/multibase": "^1.1.7",
|
|
32
|
+
"@atcute/cid": "^2.4.0",
|
|
33
|
+
"@atcute/uint8array": "^1.1.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@ipld/dag-cbor": "^9.2.5",
|
|
37
|
+
"@types/node": "^25.2.1",
|
|
38
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
39
|
+
"cbor-x": "^1.6.0",
|
|
40
|
+
"vitest": "^4.0.18"
|
|
36
41
|
},
|
|
37
42
|
"scripts": {
|
|
38
|
-
"build": "
|
|
39
|
-
"test": "
|
|
43
|
+
"build": "tsgo --project tsconfig.build.json",
|
|
44
|
+
"test": "vitest",
|
|
40
45
|
"prepublish": "rm -rf dist; pnpm run build"
|
|
41
46
|
}
|
|
42
47
|
}
|