@atcute/cbor 2.3.0 → 2.3.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"AA8JA,eAAO,MAAM,WAAW,4FA2JvB,CAAC;AAEF,eAAO,MAAM,MAAM,2CAOlB,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;
@@ -216,8 +213,10 @@ export const decodeFirst = (buf) => {
216
213
  if (!stack.t) {
217
214
  // Read the key of the next map item
218
215
  const prevKey = stack.k;
219
- stack.k = decodeStringKey(state);
220
- 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) {
221
220
  throw new TypeError(`map keys are not in canonical order or contain duplicates`);
222
221
  }
223
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,yCAUlB,CAAC"}
1
+ {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../lib/encode.ts"],"names":[],"mappings":"AAiXA,eAAO,MAAM,MAAM,yCAUlB,CAAC"}
package/dist/encode.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { CidLinkWrapper, fromString } from '@atcute/cid';
2
2
  import { allocUnsafe, concat, encodeUtf8Into } from '@atcute/uint8array';
3
+ import { IS_NODE_RUNTIME } from '#runtime';
3
4
  import { BytesWrapper, fromBytes } from './bytes.js';
4
5
  const MAX_TYPE_ARG_LEN = 9;
5
6
  const CHUNK_SIZE = 1024;
@@ -115,17 +116,43 @@ const writeNumber = (state, val) => {
115
116
  };
116
117
  const writeString = (state, val) => {
117
118
  const strLength = val.length;
119
+ if (strLength === 0) {
120
+ resizeIfNeeded(state, 1);
121
+ writeUint8(state, 0x60);
122
+ return;
123
+ }
118
124
  // JS strings are UTF-16 (ECMA spec)
119
125
  // Therefore, worst case length of UTF-8 is length * 3. (plus 9 bytes of CBOR header)
120
126
  // Greatly overshoots in practice, but doesn't matter. (alloc is O(1)+ anyway)
121
127
  resizeIfNeeded(state, strLength * 3 + MAX_TYPE_ARG_LEN);
122
128
  // Optimistic fast encode
123
- ascii: {
129
+ ascii: if (!IS_NODE_RUNTIME || strLength < 24) {
124
130
  const ptr = state.p + getTypeInfoLength(strLength);
125
- for (let i = 0; i < strLength; i++) {
126
- let code = val.charCodeAt(i);
127
- if (code > 0x7f)
131
+ const first = val.charCodeAt(0);
132
+ if (first > 0x7f) {
133
+ break ascii;
134
+ }
135
+ state.b[ptr] = first;
136
+ let i = 1;
137
+ // batch-process four characters per iteration to lower charCodeAt/branch overhead.
138
+ for (; i + 3 < strLength; i += 4) {
139
+ const a = val.charCodeAt(i);
140
+ const b = val.charCodeAt(i + 1);
141
+ const c = val.charCodeAt(i + 2);
142
+ const d = val.charCodeAt(i + 3);
143
+ if ((a | b | c | d) & 0x80) {
128
144
  break ascii;
145
+ }
146
+ state.b[ptr + i] = a;
147
+ state.b[ptr + i + 1] = b;
148
+ state.b[ptr + i + 2] = c;
149
+ state.b[ptr + i + 3] = d;
150
+ }
151
+ for (; i < strLength; i++) {
152
+ const code = val.charCodeAt(i);
153
+ if (code > 0x7f) {
154
+ break ascii;
155
+ }
129
156
  state.b[ptr + i] = code;
130
157
  }
131
158
  // String was ASCII-only, we're done
@@ -199,7 +226,37 @@ const writeValue = (state, val) => {
199
226
  }
200
227
  return;
201
228
  }
202
- // case: cid-link
229
+ // case: POJO
230
+ if (val.constructor === Object) {
231
+ const keys = getOrderedObjectKeys(val);
232
+ const len = keys.length;
233
+ if (len === 1) {
234
+ const key = keys[0];
235
+ if (key === '$link') {
236
+ if (typeof val.$link === 'string') {
237
+ writeCid(state, val);
238
+ return;
239
+ }
240
+ throw new TypeError(`unexpected cid-link value`);
241
+ }
242
+ if (key === '$bytes') {
243
+ if (typeof val.$bytes === 'string') {
244
+ writeBytes(state, val);
245
+ return;
246
+ }
247
+ throw new TypeError(`unexpected bytes value`);
248
+ }
249
+ }
250
+ resizeIfNeeded(state, MAX_TYPE_ARG_LEN);
251
+ writeTypeAndArgument(state, 5, len);
252
+ for (let idx = 0; idx < len; idx++) {
253
+ const key = keys[idx];
254
+ writeString(state, key);
255
+ writeValue(state, val[key]);
256
+ }
257
+ return;
258
+ }
259
+ // case: cid-link wrappers / odd objects
203
260
  if ('$link' in val) {
204
261
  if (val instanceof CidLinkWrapper || typeof val.$link === 'string') {
205
262
  writeCid(state, val);
@@ -207,7 +264,7 @@ const writeValue = (state, val) => {
207
264
  }
208
265
  throw new TypeError(`unexpected cid-link value`);
209
266
  }
210
- // case: bytes
267
+ // case: bytes wrappers / odd objects
211
268
  if ('$bytes' in val) {
212
269
  if (val instanceof BytesWrapper || typeof val.$bytes === 'string') {
213
270
  writeBytes(state, val);
@@ -215,19 +272,6 @@ const writeValue = (state, val) => {
215
272
  }
216
273
  throw new TypeError(`unexpected bytes value`);
217
274
  }
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
275
  }
232
276
  }
233
277
  throw new TypeError(`unsupported type: ${val}`);
@@ -253,29 +297,26 @@ export const encode = (value) => {
253
297
  /** @internal */
254
298
  export const getOrderedObjectKeys = (obj) => {
255
299
  const keys = Object.keys(obj);
256
- for (let i = 1, len = keys.length, j = 0; i < len; j = i++) {
300
+ let len = 0;
301
+ for (let i = 0; i < keys.length; i++) {
257
302
  const valA = keys[i];
258
- // Tuck in undefined value filtering here to avoid extra iterations.
259
303
  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;
304
+ continue;
266
305
  }
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;
306
+ const lenA = valA.length;
307
+ let j = len - 1;
308
+ for (; j >= 0; j--) {
309
+ const valB = keys[j];
310
+ // Note: Don't need to check for equality, keys are always distinct.
311
+ if (lenA > valB.length || (lenA === valB.length && valA > valB)) {
312
+ break;
275
313
  }
276
- keys[j + 1] = valA;
314
+ keys[j + 1] = valB;
277
315
  }
316
+ keys[j + 1] = valA;
317
+ len++;
278
318
  }
319
+ keys.length = len;
279
320
  return keys;
280
321
  };
281
322
  //# 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
@@ -0,0 +1,2 @@
1
+ export declare const IS_NODE_RUNTIME = false;
2
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../lib/runtime.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const IS_NODE_RUNTIME = false;
2
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../lib/runtime.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const IS_NODE_RUNTIME = true;
2
+ //# sourceMappingURL=runtime.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.node.d.ts","sourceRoot":"","sources":["../lib/runtime.node.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,OAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const IS_NODE_RUNTIME = true;
2
+ //# sourceMappingURL=runtime.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.node.js","sourceRoot":"","sources":["../lib/runtime.node.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,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: {
@@ -292,9 +288,11 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
292
288
  if (!stack.t) {
293
289
  // Read the key of the next map item
294
290
  const prevKey = stack.k;
295
- stack.k = decodeStringKey(state);
291
+ const key = decodeStringKey(state);
292
+ stack.k = key;
296
293
 
297
- if (compareKeys(stack.k, prevKey) <= 0) {
294
+ const cmp = key.length - prevKey.length || (key > prevKey ? 1 : key < prevKey ? -1 : 0);
295
+ if (cmp <= 0) {
298
296
  throw new TypeError(`map keys are not in canonical order or contain duplicates`);
299
297
  }
300
298
  }
package/lib/encode.ts CHANGED
@@ -1,7 +1,9 @@
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 { IS_NODE_RUNTIME } from '#runtime';
5
+
6
+ import { type Bytes, BytesWrapper, fromBytes } from './bytes.ts';
5
7
 
6
8
  const MAX_TYPE_ARG_LEN = 9;
7
9
  const CHUNK_SIZE = 1024;
@@ -154,17 +156,51 @@ const writeNumber = (state: State, val: number): void => {
154
156
  const writeString = (state: State, val: string): void => {
155
157
  const strLength = val.length;
156
158
 
159
+ if (strLength === 0) {
160
+ resizeIfNeeded(state, 1);
161
+ writeUint8(state, 0x60);
162
+ return;
163
+ }
164
+
157
165
  // JS strings are UTF-16 (ECMA spec)
158
166
  // Therefore, worst case length of UTF-8 is length * 3. (plus 9 bytes of CBOR header)
159
167
  // Greatly overshoots in practice, but doesn't matter. (alloc is O(1)+ anyway)
160
168
  resizeIfNeeded(state, strLength * 3 + MAX_TYPE_ARG_LEN);
161
169
 
162
170
  // Optimistic fast encode
163
- ascii: {
171
+ ascii: if (!IS_NODE_RUNTIME || strLength < 24) {
164
172
  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;
173
+ const first = val.charCodeAt(0);
174
+ if (first > 0x7f) {
175
+ break ascii;
176
+ }
177
+
178
+ state.b[ptr] = first;
179
+ let i = 1;
180
+
181
+ // batch-process four characters per iteration to lower charCodeAt/branch overhead.
182
+ for (; i + 3 < strLength; i += 4) {
183
+ const a = val.charCodeAt(i);
184
+ const b = val.charCodeAt(i + 1);
185
+ const c = val.charCodeAt(i + 2);
186
+ const d = val.charCodeAt(i + 3);
187
+
188
+ if ((a | b | c | d) & 0x80) {
189
+ break ascii;
190
+ }
191
+
192
+ state.b[ptr + i] = a;
193
+ state.b[ptr + i + 1] = b;
194
+ state.b[ptr + i + 2] = c;
195
+ state.b[ptr + i + 3] = d;
196
+ }
197
+
198
+ for (; i < strLength; i++) {
199
+ const code = val.charCodeAt(i);
200
+ if (code > 0x7f) {
201
+ break ascii;
202
+ }
203
+
168
204
  state.b[ptr + i] = code;
169
205
  }
170
206
 
@@ -256,31 +292,33 @@ const writeValue = (state: State, val: any): void => {
256
292
  return;
257
293
  }
258
294
 
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
295
  // case: POJO
280
296
  if (val.constructor === Object) {
281
297
  const keys = getOrderedObjectKeys(val);
282
298
  const len = keys.length;
283
299
 
300
+ if (len === 1) {
301
+ const key = keys[0]!;
302
+
303
+ if (key === '$link') {
304
+ if (typeof val.$link === 'string') {
305
+ writeCid(state, val);
306
+ return;
307
+ }
308
+
309
+ throw new TypeError(`unexpected cid-link value`);
310
+ }
311
+
312
+ if (key === '$bytes') {
313
+ if (typeof val.$bytes === 'string') {
314
+ writeBytes(state, val);
315
+ return;
316
+ }
317
+
318
+ throw new TypeError(`unexpected bytes value`);
319
+ }
320
+ }
321
+
284
322
  resizeIfNeeded(state, MAX_TYPE_ARG_LEN);
285
323
  writeTypeAndArgument(state, 5, len);
286
324
 
@@ -293,6 +331,26 @@ const writeValue = (state: State, val: any): void => {
293
331
 
294
332
  return;
295
333
  }
334
+
335
+ // case: cid-link wrappers / odd objects
336
+ if ('$link' in val) {
337
+ if (val instanceof CidLinkWrapper || typeof val.$link === 'string') {
338
+ writeCid(state, val);
339
+ return;
340
+ }
341
+
342
+ throw new TypeError(`unexpected cid-link value`);
343
+ }
344
+
345
+ // case: bytes wrappers / odd objects
346
+ if ('$bytes' in val) {
347
+ if (val instanceof BytesWrapper || typeof val.$bytes === 'string') {
348
+ writeBytes(state, val);
349
+ return;
350
+ }
351
+
352
+ throw new TypeError(`unexpected bytes value`);
353
+ }
296
354
  }
297
355
  }
298
356
 
@@ -324,31 +382,31 @@ export const encode = (value: any): Uint8Array<ArrayBuffer> => {
324
382
  /** @internal */
325
383
  export const getOrderedObjectKeys = (obj: Record<string, unknown>): string[] => {
326
384
  const keys = Object.keys(obj);
327
- for (let i = 1, len = keys.length, j = 0; i < len; j = i++) {
328
- const valA = keys[i];
385
+ let len = 0;
329
386
 
330
- // Tuck in undefined value filtering here to avoid extra iterations.
387
+ for (let i = 0; i < keys.length; i++) {
388
+ const valA = keys[i];
331
389
  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;
390
+ continue;
391
+ }
392
+
393
+ const lenA = valA.length;
394
+ let j = len - 1;
395
+ for (; j >= 0; j--) {
396
+ const valB = keys[j];
397
+
398
+ // Note: Don't need to check for equality, keys are always distinct.
399
+ if (lenA > valB.length || (lenA === valB.length && valA > valB)) {
400
+ break;
347
401
  }
348
402
 
349
- keys[j + 1] = valA;
403
+ keys[j + 1] = valB;
350
404
  }
405
+
406
+ keys[j + 1] = valA;
407
+ len++;
351
408
  }
352
409
 
410
+ keys.length = len;
353
411
  return keys;
354
412
  };
package/lib/index.ts CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  export { CidLinkWrapper, fromCidLink, isCidLink, toCidLink, type CidLink } from '@atcute/cid';
4
4
 
5
- export { BytesWrapper, fromBytes, isBytes, toBytes, type Bytes } from './bytes.js';
5
+ export { BytesWrapper, fromBytes, isBytes, toBytes, type Bytes } from './bytes.ts';
6
6
 
7
- export { decode, decodeFirst } from './decode.js';
8
- export { encode } from './encode.js';
7
+ export { decode, decodeFirst } from './decode.ts';
8
+ export { encode } from './encode.ts';
@@ -0,0 +1 @@
1
+ export const IS_NODE_RUNTIME = true;
package/lib/runtime.ts ADDED
@@ -0,0 +1 @@
1
+ export const IS_NODE_RUNTIME = false;
package/package.json CHANGED
@@ -1,43 +1,50 @@
1
1
  {
2
- "type": "module",
3
2
  "name": "@atcute/cbor",
4
- "version": "2.3.0",
3
+ "version": "2.3.2",
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": {
13
12
  "url": "https://github.com/mary-ext/atcute",
14
13
  "directory": "packages/utilities/cbor"
15
14
  },
16
- "publishConfig": {
17
- "access": "public"
18
- },
19
15
  "files": [
20
16
  "dist/",
21
17
  "lib/",
22
18
  "!lib/**/*.bench.ts",
23
19
  "!lib/**/*.test.ts"
24
20
  ],
21
+ "type": "module",
22
+ "sideEffects": false,
23
+ "imports": {
24
+ "#runtime": {
25
+ "workerd": "./dist/runtime.js",
26
+ "node": "./dist/runtime.node.js",
27
+ "default": "./dist/runtime.js"
28
+ }
29
+ },
25
30
  "exports": {
26
31
  ".": "./dist/index.js",
27
32
  "./bytes": "./dist/bytes.js"
28
33
  },
29
- "sideEffects": false,
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "dependencies": {
38
+ "@atcute/cid": "^2.4.1",
39
+ "@atcute/uint8array": "^1.1.1",
40
+ "@atcute/multibase": "^1.1.8"
41
+ },
30
42
  "devDependencies": {
31
43
  "@ipld/dag-cbor": "^9.2.5",
32
- "@types/node": "^22.19.3",
33
- "@vitest/coverage-v8": "^4.0.16",
44
+ "@types/node": "^25.2.3",
45
+ "@vitest/coverage-v8": "^4.0.18",
34
46
  "cbor-x": "^1.6.0",
35
- "vitest": "^4.0.16"
36
- },
37
- "dependencies": {
38
- "@atcute/cid": "^2.4.0",
39
- "@atcute/multibase": "^1.1.6",
40
- "@atcute/uint8array": "^1.0.6"
47
+ "vitest": "^4.0.18"
41
48
  },
42
49
  "scripts": {
43
50
  "build": "tsgo --project tsconfig.build.json",