@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 CHANGED
@@ -1,25 +1,19 @@
1
1
  # @atcute/cbor
2
2
 
3
- lightweight [DASL dCBOR42 (deterministic CBOR with tag 42)][dasl-dcbor42] codec library for AT
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
- [atproto-data-model]: https://atproto.com/specs/data-model
21
- [dasl-dcbor42]: https://dasl.ing/dcbor42.html
22
- [ipld-dag-cbor]: https://ipld.io/specs/codecs/dag-cbor/spec
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
- // ^? Uint8Array(90) [ ... ]
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
- Implementation based on the excellent [`microcbor` library](https://github.com/joeltg/microcbor).
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
@@ -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;gBAAf,GAAG,EAAE,UAAU;IAElC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,MAAM,IAAI,KAAK;CAGf;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAMjD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,UAAU,KAAG,KAEzC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,KAAG,UAMxC,CAAC"}
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;IAHnB,gBAAgB;IACP,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IAE/B,YAAmB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;IAAG,CAAC;IAEtC,IAAI,MAAM;QACT,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM;QACL,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;CACD;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAkB,EAAE;IACzD,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;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAe,EAAS,EAAE;IACjD,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAc,EAAE;IACrD,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"AA8JA,eAAO,MAAM,WAAW,GAAI,KAAK,UAAU,KAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,CA0J/E,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,KAAK,UAAU,KAAG,GAOxC,CAAC"}
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
- stack.k = decodeStringKey(state);
219
- if (compareKeys(stack.k, prevKey) <= 0) {
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decode.js","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../lib/encode.ts"],"names":[],"mappings":"AAuTA,eAAO,MAAM,MAAM,GAAI,OAAO,GAAG,KAAG,UAAU,CAAC,WAAW,CAUzD,CAAC"}
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 _isNaN = Number.isNaN;
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 (_isNaN(val)) {
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
- for (let i = 0; i < strLength; i++) {
126
- let code = val.charCodeAt(i);
127
- if (code > 0x7f)
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: cid-link
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
- for (let i = 1, len = keys.length, j = 0; i < len; j = i++) {
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
- // A lot of things are tucked in here xd
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
- else {
268
- for (; j >= 0; j--) {
269
- const valB = keys[j];
270
- // Note: Don't need to check for equality, keys are always distinct.
271
- const cmp = valA.length - valB.length || +(valA > valB);
272
- if (cmp > 0)
273
- break;
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] = valA;
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
@@ -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.js';
3
- export { decode, decodeFirst } from './decode.js';
4
- export { encode } from './encode.js';
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,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"}
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
@@ -1,3 +1,4 @@
1
+ // implements github:darobin/dasl.ing@cc66c35 (2025-10-20)
1
2
  export { CidLinkWrapper, fromCidLink, isCidLink, toCidLink } from '@atcute/cid';
2
3
  export { BytesWrapper, fromBytes, isBytes, toBytes } from './bytes.js';
3
4
  export { decode, decodeFirst } from './decode.js';
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.js';
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
- stack.k = decodeStringKey(state);
291
+ const key = decodeStringKey(state);
292
+ stack.k = key;
295
293
 
296
- if (compareKeys(stack.k, prevKey) <= 0) {
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.js';
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 _isNaN = Number.isNaN;
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 (_isNaN(val)) {
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
- for (let i = 0; i < strLength; i++) {
166
- let code = val.charCodeAt(i);
167
- if (code > 0x7f) break ascii;
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
- for (let i = 1, len = keys.length, j = 0; i < len; j = i++) {
328
- const valA = keys[i];
383
+ let len = 0;
329
384
 
330
- // Tuck in undefined value filtering here to avoid extra iterations.
385
+ for (let i = 0; i < keys.length; i++) {
386
+ const valA = keys[i];
331
387
  if (obj[valA] === undefined) {
332
- // A lot of things are tucked in here xd
333
- // - Pull the currently last item in the keys array at the current place
334
- // - Update saved value of array length
335
- // - Decrease i by 1
336
- keys[i--] = keys[--len];
337
- keys.length = len;
338
- } else {
339
- for (; j >= 0; j--) {
340
- const valB = keys[j];
341
-
342
- // Note: Don't need to check for equality, keys are always distinct.
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] = valA;
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.js';
5
+ export { BytesWrapper, fromBytes, isBytes, toBytes, type Bytes } from './bytes.ts';
4
6
 
5
- export { decode, decodeFirst } from './decode.js';
6
- export { encode } from './encode.js';
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.2.8",
3
+ "version": "2.3.1",
5
4
  "description": "lightweight DASL dCBOR42 codec library for AT Protocol",
6
5
  "keywords": [
7
6
  "atproto",
8
- "dasl",
9
- "cbor"
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
- "sideEffects": false,
27
- "devDependencies": {
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.6",
34
- "@atcute/uint8array": "^1.0.5",
35
- "@atcute/cid": "^2.2.6"
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": "tsc --project tsconfig.build.json",
39
- "test": "bun test --coverage",
43
+ "build": "tsgo --project tsconfig.build.json",
44
+ "test": "vitest",
40
45
  "prepublish": "rm -rf dist; pnpm run build"
41
46
  }
42
47
  }