@marcuspuchalla/nachos 0.1.1 → 0.1.3
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/CHANGELOG.md +32 -0
- package/dist/{chunk-7CFYWHS6.js → chunk-2MTLSQ7E.js} +58 -10
- package/dist/chunk-2MTLSQ7E.js.map +1 -0
- package/dist/{chunk-ZRPJUEIZ.js → chunk-5A5T56JB.js} +170 -22
- package/dist/chunk-5A5T56JB.js.map +1 -0
- package/dist/{chunk-2HBCILJS.cjs → chunk-PTWN7K3Y.cjs} +169 -21
- package/dist/chunk-PTWN7K3Y.cjs.map +1 -0
- package/dist/{chunk-2FUTHZQQ.cjs → chunk-R62CQQNI.cjs} +58 -10
- package/dist/chunk-R62CQQNI.cjs.map +1 -0
- package/dist/encoder/index.cjs +13 -13
- package/dist/encoder/index.js +1 -1
- package/dist/index.cjs +20 -20
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/parser/index.cjs +14 -14
- package/dist/parser/index.d.cts +1 -1
- package/dist/parser/index.d.ts +1 -1
- package/dist/parser/index.js +1 -1
- package/dist/{useCborTag-BfTIV8HM.d.cts → useCborTag-Cs1CZuXZ.d.cts} +2 -2
- package/dist/{useCborTag-B_iaShG6.d.ts → useCborTag-xV2Pz2VY.d.ts} +2 -2
- package/package.json +1 -1
- package/src/__tests__/roundtrip.test.ts +702 -0
- package/src/encoder/__tests__/cbor-collection-encoder.test.ts +26 -0
- package/src/encoder/__tests__/cbor-encoder-errors.test.ts +812 -0
- package/src/encoder/__tests__/cbor-string-encoder.test.ts +14 -0
- package/src/encoder/composables/useCborCollectionEncoder.ts +30 -0
- package/src/encoder/composables/useCborEncoder.ts +6 -1
- package/src/encoder/composables/useCborSimpleEncoder.ts +7 -2
- package/src/encoder/composables/useCborStringEncoder.ts +23 -10
- package/src/parser/__tests__/cbor-float-errors.test.ts +41 -0
- package/src/parser/__tests__/cbor-security-dos-protection.test.ts +2 -2
- package/src/parser/__tests__/cbor-standard-tags.test.ts +29 -0
- package/src/parser/__tests__/cbor-string-errors.test.ts +4 -4
- package/src/parser/__tests__/cbor-tag-errors.test.ts +1 -1
- package/src/parser/composables/useCborFloat.ts +93 -8
- package/src/parser/composables/useCborParser.ts +0 -19
- package/src/parser/composables/useCborString.ts +22 -4
- package/src/parser/composables/useCborTag.ts +104 -16
- package/dist/chunk-2FUTHZQQ.cjs.map +0 -1
- package/dist/chunk-2HBCILJS.cjs.map +0 -1
- package/dist/chunk-7CFYWHS6.js.map +0 -1
- package/dist/chunk-ZRPJUEIZ.js.map +0 -1
- package/src/encoder/composables/#useCborTagEncoder.ts# +0 -158
|
@@ -160,6 +160,9 @@ function useCborStringEncoder(globalOptions) {
|
|
|
160
160
|
const encodeByteString = (data, encodeOptions) => {
|
|
161
161
|
const isIndefinite = isCborByteString(data) && data[chunkPD72MVTX_cjs.INDEFINITE_SYMBOL] === true;
|
|
162
162
|
if (encodeOptions?.indefinite || Array.isArray(data) || isIndefinite) {
|
|
163
|
+
if (options.allowIndefinite === false) {
|
|
164
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
165
|
+
}
|
|
163
166
|
if (options.canonical) {
|
|
164
167
|
throw new Error("Indefinite-length encoding not allowed in canonical mode");
|
|
165
168
|
}
|
|
@@ -170,17 +173,20 @@ function useCborStringEncoder(globalOptions) {
|
|
|
170
173
|
return encodeByteStringIndefinite(Array.isArray(bytes2) ? bytes2 : [bytes2]);
|
|
171
174
|
}
|
|
172
175
|
const bytes = isCborByteString(data) ? data.bytes : data;
|
|
176
|
+
if (bytes.length + 9 > options.maxOutputSize) {
|
|
177
|
+
throw new Error(`Encoded output exceeds maximum size`);
|
|
178
|
+
}
|
|
173
179
|
const header = encodeLengthHeader(2, bytes.length);
|
|
174
180
|
const result = concatenateUint8Arrays([header, bytes]);
|
|
175
|
-
if (result.length > options.maxOutputSize) {
|
|
176
|
-
throw new Error("Encoded output exceeds maximum size");
|
|
177
|
-
}
|
|
178
181
|
return {
|
|
179
182
|
bytes: result,
|
|
180
183
|
hex: bytesToHex(result)
|
|
181
184
|
};
|
|
182
185
|
};
|
|
183
186
|
const encodeByteStringIndefinite = (chunks) => {
|
|
187
|
+
if (options.allowIndefinite === false) {
|
|
188
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
189
|
+
}
|
|
184
190
|
if (options.canonical) {
|
|
185
191
|
throw new Error("Indefinite-length encoding not allowed in canonical mode");
|
|
186
192
|
}
|
|
@@ -200,6 +206,9 @@ function useCborStringEncoder(globalOptions) {
|
|
|
200
206
|
const encodeTextString = (text, encodeOptions) => {
|
|
201
207
|
const isIndefinite = isCborTextString(text) && text[chunkPD72MVTX_cjs.INDEFINITE_SYMBOL] === true;
|
|
202
208
|
if (encodeOptions?.indefinite || isIndefinite) {
|
|
209
|
+
if (options.allowIndefinite === false) {
|
|
210
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
211
|
+
}
|
|
203
212
|
if (options.canonical) {
|
|
204
213
|
throw new Error("Indefinite-length encoding not allowed in canonical mode");
|
|
205
214
|
}
|
|
@@ -212,17 +221,20 @@ function useCborStringEncoder(globalOptions) {
|
|
|
212
221
|
const textStr = isCborTextString(text) ? text.text : text;
|
|
213
222
|
const encoder = new TextEncoder();
|
|
214
223
|
const utf8Bytes = encoder.encode(textStr);
|
|
224
|
+
if (utf8Bytes.length + 9 > options.maxOutputSize) {
|
|
225
|
+
throw new Error(`Encoded output exceeds maximum size`);
|
|
226
|
+
}
|
|
215
227
|
const header = encodeLengthHeader(3, utf8Bytes.length);
|
|
216
228
|
const result = concatenateUint8Arrays([header, utf8Bytes]);
|
|
217
|
-
if (result.length > options.maxOutputSize) {
|
|
218
|
-
throw new Error("Encoded output exceeds maximum size");
|
|
219
|
-
}
|
|
220
229
|
return {
|
|
221
230
|
bytes: result,
|
|
222
231
|
hex: bytesToHex(result)
|
|
223
232
|
};
|
|
224
233
|
};
|
|
225
234
|
const encodeTextStringIndefinite = (chunks) => {
|
|
235
|
+
if (options.allowIndefinite === false) {
|
|
236
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
237
|
+
}
|
|
226
238
|
if (options.canonical) {
|
|
227
239
|
throw new Error("Indefinite-length encoding not allowed in canonical mode");
|
|
228
240
|
}
|
|
@@ -278,6 +290,9 @@ function useCborCollectionEncoder(globalOptions) {
|
|
|
278
290
|
const isIndefinite = value[chunkPD72MVTX_cjs.INDEFINITE_SYMBOL] === true;
|
|
279
291
|
const newCtx = { ...ctx, depth: ctx.depth + 1 };
|
|
280
292
|
if (isIndefinite) {
|
|
293
|
+
if (ctx.options.allowIndefinite === false) {
|
|
294
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
295
|
+
}
|
|
281
296
|
const parts = [new Uint8Array([159])];
|
|
282
297
|
for (const item of value) {
|
|
283
298
|
const encoded = encodeValue(item, newCtx);
|
|
@@ -297,6 +312,9 @@ function useCborCollectionEncoder(globalOptions) {
|
|
|
297
312
|
const isIndefinite = value[chunkPD72MVTX_cjs.INDEFINITE_SYMBOL] === true;
|
|
298
313
|
const newCtx = { ...ctx, depth: ctx.depth + 1 };
|
|
299
314
|
if (isIndefinite) {
|
|
315
|
+
if (ctx.options.allowIndefinite === false) {
|
|
316
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
317
|
+
}
|
|
300
318
|
const entries = value instanceof Map ? Array.from(value.entries()) : Object.entries(value);
|
|
301
319
|
const parts = [new Uint8Array([191])];
|
|
302
320
|
for (const [key, val] of entries) {
|
|
@@ -354,6 +372,9 @@ function useCborCollectionEncoder(globalOptions) {
|
|
|
354
372
|
const encodeArray = (array, encodeOptions) => {
|
|
355
373
|
const isIndefinite = array[chunkPD72MVTX_cjs.INDEFINITE_SYMBOL] === true;
|
|
356
374
|
if (encodeOptions?.indefinite || isIndefinite) {
|
|
375
|
+
if (options.allowIndefinite === false) {
|
|
376
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
377
|
+
}
|
|
357
378
|
if (options.canonical) {
|
|
358
379
|
throw new Error("Indefinite-length encoding not allowed in canonical mode");
|
|
359
380
|
}
|
|
@@ -367,6 +388,9 @@ function useCborCollectionEncoder(globalOptions) {
|
|
|
367
388
|
return encodeArrayInternal(array, ctx);
|
|
368
389
|
};
|
|
369
390
|
const encodeArrayIndefinite = (array) => {
|
|
391
|
+
if (options.allowIndefinite === false) {
|
|
392
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
393
|
+
}
|
|
370
394
|
if (options.canonical) {
|
|
371
395
|
throw new Error("Indefinite-length encoding not allowed in canonical mode");
|
|
372
396
|
}
|
|
@@ -401,6 +425,17 @@ function useCborCollectionEncoder(globalOptions) {
|
|
|
401
425
|
return compareBytes(keyA, keyB);
|
|
402
426
|
});
|
|
403
427
|
}
|
|
428
|
+
if (ctx.options.rejectDuplicateKeys) {
|
|
429
|
+
const seen = /* @__PURE__ */ new Set();
|
|
430
|
+
for (const [key] of entries) {
|
|
431
|
+
const keyBytes = encodeValue(key, { ...ctx, depth: ctx.depth + 1, bytesWritten: 0 });
|
|
432
|
+
const keyHex = bytesToHex(keyBytes);
|
|
433
|
+
if (seen.has(keyHex)) {
|
|
434
|
+
throw new Error("Duplicate map key detected");
|
|
435
|
+
}
|
|
436
|
+
seen.add(keyHex);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
404
439
|
const header = encodeLengthHeader(5, entries.length);
|
|
405
440
|
const parts = [header];
|
|
406
441
|
for (const [key, value] of entries) {
|
|
@@ -422,6 +457,9 @@ function useCborCollectionEncoder(globalOptions) {
|
|
|
422
457
|
const encodeMap = (map, encodeOptions) => {
|
|
423
458
|
const isIndefinite = map[chunkPD72MVTX_cjs.INDEFINITE_SYMBOL] === true;
|
|
424
459
|
if (encodeOptions?.indefinite || isIndefinite) {
|
|
460
|
+
if (options.allowIndefinite === false) {
|
|
461
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
462
|
+
}
|
|
425
463
|
if (options.canonical) {
|
|
426
464
|
throw new Error("Indefinite-length encoding not allowed in canonical mode");
|
|
427
465
|
}
|
|
@@ -435,6 +473,9 @@ function useCborCollectionEncoder(globalOptions) {
|
|
|
435
473
|
return encodeMapInternal(map, ctx);
|
|
436
474
|
};
|
|
437
475
|
const encodeMapIndefinite = (map) => {
|
|
476
|
+
if (options.allowIndefinite === false) {
|
|
477
|
+
throw new Error("Indefinite-length encoding is not allowed");
|
|
478
|
+
}
|
|
438
479
|
if (options.canonical) {
|
|
439
480
|
throw new Error("Indefinite-length encoding not allowed in canonical mode");
|
|
440
481
|
}
|
|
@@ -504,9 +545,13 @@ function useCborSimpleEncoder(_globalOptions) {
|
|
|
504
545
|
const mant64 = Number(bits & 0xfffffffffffffn);
|
|
505
546
|
let exp16;
|
|
506
547
|
let mant16;
|
|
507
|
-
if (exp64 < -
|
|
548
|
+
if (exp64 < -24) {
|
|
508
549
|
exp16 = 0;
|
|
509
550
|
mant16 = 0;
|
|
551
|
+
} else if (exp64 < -14) {
|
|
552
|
+
exp16 = 0;
|
|
553
|
+
const shift = -14 - exp64;
|
|
554
|
+
mant16 = (1 << 10 | mant64 >> 42) + ((1 << shift - 1) - 1) >> shift;
|
|
510
555
|
} else if (exp64 > 15) {
|
|
511
556
|
exp16 = 31;
|
|
512
557
|
mant16 = 0;
|
|
@@ -659,6 +704,9 @@ function useCborTagEncoder() {
|
|
|
659
704
|
// src/encoder/composables/useCborEncoder.ts
|
|
660
705
|
function useCborEncoder(globalOptions) {
|
|
661
706
|
const options = { ...DEFAULT_ENCODE_OPTIONS, ...globalOptions };
|
|
707
|
+
if (options.canonical && options.allowIndefinite) {
|
|
708
|
+
options.allowIndefinite = false;
|
|
709
|
+
}
|
|
662
710
|
const { encodeInteger } = useCborIntegerEncoder();
|
|
663
711
|
const { encodeTextString, encodeByteString } = useCborStringEncoder(options);
|
|
664
712
|
const { encodeArray, encodeMap, setMainEncode } = useCborCollectionEncoder(options);
|
|
@@ -671,7 +719,7 @@ function useCborEncoder(globalOptions) {
|
|
|
671
719
|
return encodeSimple(value);
|
|
672
720
|
}
|
|
673
721
|
if (typeof value === "number") {
|
|
674
|
-
if (Number.
|
|
722
|
+
if (Number.isSafeInteger(value)) {
|
|
675
723
|
return encodeInteger(value);
|
|
676
724
|
}
|
|
677
725
|
return encodeFloat(value);
|
|
@@ -751,5 +799,5 @@ exports.useCborStringEncoder = useCborStringEncoder;
|
|
|
751
799
|
exports.useCborTagEncoder = useCborTagEncoder;
|
|
752
800
|
exports.writeBigUint = writeBigUint;
|
|
753
801
|
exports.writeUint = writeUint;
|
|
754
|
-
//# sourceMappingURL=chunk-
|
|
755
|
-
//# sourceMappingURL=chunk-
|
|
802
|
+
//# sourceMappingURL=chunk-R62CQQNI.cjs.map
|
|
803
|
+
//# sourceMappingURL=chunk-R62CQQNI.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/encoder/types.ts","../src/encoder/utils.ts","../src/encoder/composables/useCborIntegerEncoder.ts","../src/encoder/composables/useCborStringEncoder.ts","../src/encoder/composables/useCborCollectionEncoder.ts","../src/encoder/composables/useCborSimpleEncoder.ts","../src/encoder/composables/useCborTagEncoder.ts","../src/encoder/composables/useCborEncoder.ts"],"names":["useCborByteString","useCborTextString","INDEFINITE_SYMBOL","bytes","textStr","ALL_ENTRIES_SYMBOL"],"mappings":"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","file":"chunk-R62CQQNI.cjs","sourcesContent":["/**\n * CBOR Encoder Type Definitions\n * Following RFC 8949 specification\n */\n\nimport type { PlutusConstr, CborByteString, CborTextString } from '../parser/types'\nimport { INDEFINITE_SYMBOL, ALL_ENTRIES_SYMBOL } from '../parser/types'\n\n// Re-export symbols and types for use in encoder\nexport { INDEFINITE_SYMBOL, ALL_ENTRIES_SYMBOL }\nexport type { CborByteString, CborTextString }\n\n/**\n * Encoder options for controlling behavior\n */\nexport interface EncodeOptions {\n /** Enable canonical encoding (shortest form, sorted maps) */\n canonical?: boolean\n /** Allow indefinite-length encoding (false in canonical mode) */\n allowIndefinite?: boolean\n /** Reject duplicate map keys */\n rejectDuplicateKeys?: boolean\n /** Maximum nesting depth */\n maxDepth?: number\n /** Maximum output size in bytes */\n maxOutputSize?: number\n}\n\n/**\n * Default encode options\n */\nexport const DEFAULT_ENCODE_OPTIONS: Required<EncodeOptions> = {\n canonical: false,\n allowIndefinite: true,\n rejectDuplicateKeys: false,\n maxDepth: 64,\n maxOutputSize: 100 * 1024 * 1024 // 100 MB\n}\n\n/**\n * Result of encoding operation\n */\nexport interface EncodeResult {\n /** Encoded CBOR bytes */\n bytes: Uint8Array\n /** Hex string representation */\n hex: string\n}\n\n/**\n * Values that can be encoded to CBOR\n *\n * Supports both plain objects (for convenience) and Maps (for type preservation).\n * Map<any, any> is preferred for maps with non-string keys (integers, Uint8Arrays, etc.)\n */\nexport type EncodableValue =\n | number\n | bigint\n | string\n | boolean\n | null\n | undefined\n | Uint8Array\n | EncodableValue[]\n | { [key: string]: EncodableValue } // Plain object (legacy/convenience)\n | Map<EncodableValue, EncodableValue> // Map (preserves key types)\n | TaggedValue\n\n/**\n * Tagged CBOR value (Major Type 6)\n */\nexport interface TaggedValue {\n tag: number\n value: EncodableValue\n plutus?: PlutusConstr\n}\n\n/**\n * Encoding context that tracks state during CBOR encoding\n */\nexport interface EncodeContext {\n /** Current nesting depth */\n depth: number\n /** Bytes written so far */\n bytesWritten: number\n /** Encoder options */\n options: Required<EncodeOptions>\n}\n","/**\n * CBOR Encoder Utility Functions\n */\n\n/**\n * Convert Uint8Array to hex string\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('')\n}\n\n/**\n * Concatenate multiple Uint8Arrays\n */\nexport function concatenateUint8Arrays(arrays: Uint8Array[]): Uint8Array {\n const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0)\n const result = new Uint8Array(totalLength)\n\n let offset = 0\n for (const arr of arrays) {\n result.set(arr, offset)\n offset += arr.length\n }\n\n return result\n}\n\n/**\n * Compare two Uint8Arrays bytewise (for canonical map sorting)\n */\nexport function compareBytes(a: Uint8Array, b: Uint8Array): number {\n // First, compare lengths\n if (a.length !== b.length) {\n return a.length - b.length\n }\n\n // Then, compare bytewise\n for (let i = 0; i < a.length; i++) {\n const byteA = a[i]\n const byteB = b[i]\n if (byteA === undefined || byteB === undefined) {\n throw new Error(`Unexpected undefined byte at index ${i}`)\n }\n if (byteA !== byteB) {\n return byteA - byteB\n }\n }\n\n return 0\n}\n\n/**\n * Write unsigned integer to bytes (big-endian)\n */\nexport function writeUint(value: number, bytes: number): Uint8Array {\n const result = new Uint8Array(bytes)\n\n for (let i = bytes - 1; i >= 0; i--) {\n result[i] = value & 0xff\n value = value >>> 8\n }\n\n return result\n}\n\n/**\n * Write BigInt to bytes (big-endian)\n */\nexport function writeBigUint(value: bigint, bytes: number): Uint8Array {\n const result = new Uint8Array(bytes)\n\n for (let i = bytes - 1; i >= 0; i--) {\n result[i] = Number(value & 0xffn)\n value = value >> 8n\n }\n\n return result\n}\n","/**\n * CBOR Integer Encoder Composable\n * Handles Major Type 0 (Unsigned) and Major Type 1 (Negative)\n * Following RFC 8949 specification\n */\n\nimport type { EncodeResult } from '../types'\nimport { bytesToHex, writeUint, writeBigUint } from '../utils'\n\n/**\n * CBOR Integer Encoder Composable\n *\n * Provides functions to encode integers to CBOR format:\n * - Major Type 0: Unsigned integers (0 to 2^64-1)\n * - Major Type 1: Negative integers (-1 to -2^64)\n *\n * @example\n * ```ts\n * const { encodeUnsignedInt, encodeNegativeInt, encodeInteger } = useCborIntegerEncoder()\n *\n * // Encode unsigned integer\n * const result1 = encodeUnsignedInt(100)\n * // result1: { bytes: Uint8Array([0x18, 0x64]), hex: '1864' }\n *\n * // Encode negative integer\n * const result2 = encodeNegativeInt(-100)\n * // result2: { bytes: Uint8Array([0x38, 0x63]), hex: '3863' }\n *\n * // Auto-detect integer type\n * const result3 = encodeInteger(-100)\n * // result3: { bytes: Uint8Array([0x38, 0x63]), hex: '3863' }\n * ```\n */\nexport function useCborIntegerEncoder() {\n /**\n * Encode unsigned integer (Major Type 0)\n *\n * Encoding rules:\n * - 0-23: Direct encoding in initial byte (0x00-0x17)\n * - 24-255: 0x18 + 1 byte\n * - 256-65535: 0x19 + 2 bytes\n * - 65536-4294967295: 0x1a + 4 bytes\n * - 4294967296-2^64-1: 0x1b + 8 bytes\n *\n * @param value - Unsigned integer (0 to 2^64-1)\n * @returns Encoded CBOR bytes and hex string\n * @throws Error if value is negative or >= 2^64\n */\n const encodeUnsignedInt = (value: number | bigint): EncodeResult => {\n // Convert to BigInt for consistent handling\n const bigValue = typeof value === 'bigint' ? value : BigInt(value)\n\n // Validate value is non-negative\n if (bigValue < 0n) {\n throw new Error('Cannot encode negative value as unsigned integer')\n }\n\n // Validate value doesn't exceed 2^64-1\n const MAX_UINT64 = 18446744073709551615n // 2^64 - 1\n if (bigValue > MAX_UINT64) {\n throw new Error('Value exceeds maximum unsigned integer (2^64-1)')\n }\n\n let bytes: Uint8Array\n\n // Direct encoding (0-23)\n if (bigValue <= 23n) {\n bytes = new Uint8Array([Number(bigValue)])\n }\n // 1-byte encoding (24-255)\n else if (bigValue <= 255n) {\n bytes = new Uint8Array([0x18, Number(bigValue)])\n }\n // 2-byte encoding (256-65535)\n else if (bigValue <= 65535n) {\n const valueBytes = writeUint(Number(bigValue), 2)\n bytes = new Uint8Array([0x19, ...valueBytes])\n }\n // 4-byte encoding (65536-4294967295)\n else if (bigValue <= 4294967295n) {\n const valueBytes = writeUint(Number(bigValue), 4)\n bytes = new Uint8Array([0x1a, ...valueBytes])\n }\n // 8-byte encoding (> 4294967295)\n else {\n const valueBytes = writeBigUint(bigValue, 8)\n bytes = new Uint8Array([0x1b, ...valueBytes])\n }\n\n return {\n bytes,\n hex: bytesToHex(bytes)\n }\n }\n\n /**\n * Encode negative integer (Major Type 1)\n *\n * CBOR encodes negative integers as: -1 - N\n * where N is the encoded value\n *\n * Encoding rules:\n * - -1 to -24: Direct encoding in initial byte (0x20-0x37)\n * - -25 to -256: 0x38 + 1 byte\n * - -257 to -65536: 0x39 + 2 bytes\n * - -65537 to -4294967296: 0x3a + 4 bytes\n * - -4294967297 to -2^64: 0x3b + 8 bytes\n *\n * @param value - Negative integer (-1 to -2^64)\n * @returns Encoded CBOR bytes and hex string\n * @throws Error if value is non-negative or < -2^64\n */\n const encodeNegativeInt = (value: number | bigint): EncodeResult => {\n // Convert to BigInt for consistent handling\n const bigValue = typeof value === 'bigint' ? value : BigInt(value)\n\n // Validate value is negative\n if (bigValue >= 0n) {\n throw new Error('Cannot encode positive value as negative integer')\n }\n\n // Validate value doesn't exceed -2^64\n const MIN_INT64 = -18446744073709551616n // -2^64\n if (bigValue < MIN_INT64) {\n throw new Error('Value exceeds minimum negative integer (-2^64)')\n }\n\n // CBOR encodes negative as: -1 - N\n // So for value V, we encode N = -1 - V\n const encoded = -1n - bigValue\n\n let bytes: Uint8Array\n\n // Direct encoding (-1 to -24, encoded as 0-23)\n if (encoded <= 23n) {\n bytes = new Uint8Array([0x20 + Number(encoded)])\n }\n // 1-byte encoding (-25 to -256, encoded as 24-255)\n else if (encoded <= 255n) {\n bytes = new Uint8Array([0x38, Number(encoded)])\n }\n // 2-byte encoding (-257 to -65536, encoded as 256-65535)\n else if (encoded <= 65535n) {\n const valueBytes = writeUint(Number(encoded), 2)\n bytes = new Uint8Array([0x39, ...valueBytes])\n }\n // 4-byte encoding (-65537 to -4294967296, encoded as 65536-4294967295)\n else if (encoded <= 4294967295n) {\n const valueBytes = writeUint(Number(encoded), 4)\n bytes = new Uint8Array([0x3a, ...valueBytes])\n }\n // 8-byte encoding (< -4294967296)\n else {\n const valueBytes = writeBigUint(encoded, 8)\n bytes = new Uint8Array([0x3b, ...valueBytes])\n }\n\n return {\n bytes,\n hex: bytesToHex(bytes)\n }\n }\n\n /**\n * Encode integer (auto-detect type)\n *\n * Automatically selects Major Type 0 (unsigned) or Major Type 1 (negative)\n * based on the sign of the value.\n *\n * @param value - Any integer\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeInteger = (value: number | bigint): EncodeResult => {\n const bigValue = typeof value === 'bigint' ? value : BigInt(value)\n\n if (bigValue < 0n) {\n return encodeNegativeInt(bigValue)\n } else {\n return encodeUnsignedInt(bigValue)\n }\n }\n\n return {\n encodeUnsignedInt,\n encodeNegativeInt,\n encodeInteger\n }\n}\n","/**\n * CBOR String Encoder Composable\n * Handles Major Type 2 (Byte Strings) and Major Type 3 (Text Strings)\n * Following RFC 8949 specification\n */\n\nimport type { EncodeResult, EncodeOptions, CborByteString, CborTextString } from '../types'\nimport { DEFAULT_ENCODE_OPTIONS, INDEFINITE_SYMBOL } from '../types'\nimport { bytesToHex, concatenateUint8Arrays, writeUint, writeBigUint } from '../utils'\nimport { useCborByteString, useCborTextString } from '../../parser/composables/useCborStringTypes'\n\ninterface StringEncodeOptions {\n indefinite?: boolean\n}\n\n/**\n * CBOR String Encoder Composable\n *\n * Provides functions to encode byte strings and text strings:\n * - Major Type 2: Byte strings (Uint8Array)\n * - Major Type 3: Text strings (UTF-8 encoded)\n *\n * Supports both definite-length and indefinite-length encoding.\n *\n * @param options - Global encoder options\n *\n * @example\n * ```ts\n * const { encodeByteString, encodeTextString } = useCborStringEncoder()\n *\n * // Encode byte string\n * const bytes = new Uint8Array([0x01, 0x02, 0x03])\n * const result1 = encodeByteString(bytes)\n * // result1: { bytes: Uint8Array([0x43, 0x01, 0x02, 0x03]), hex: '43010203' }\n *\n * // Encode text string\n * const result2 = encodeTextString('Hello')\n * // result2: { bytes: Uint8Array([0x65, 0x48, 0x65, 0x6c, 0x6c, 0x6f]), hex: '6548656c6c6f' }\n *\n * // Indefinite-length encoding\n * const chunks = [new Uint8Array([0xaa]), new Uint8Array([0xbb])]\n * const result3 = encodeByteStringIndefinite(chunks)\n * // result3: { bytes: Uint8Array([0x5f, 0x41, 0xaa, 0x41, 0xbb, 0xff]), hex: '5f41aa41bbff' }\n * ```\n */\nexport function useCborStringEncoder(globalOptions?: Partial<EncodeOptions>) {\n const options = { ...DEFAULT_ENCODE_OPTIONS, ...globalOptions }\n const { isCborByteString } = useCborByteString()\n const { isCborTextString } = useCborTextString()\n\n /**\n * Encode the length header for a string\n *\n * @param majorType - Major type (2 for bytes, 3 for text)\n * @param length - Length of the string in bytes\n * @returns Encoded length header\n */\n const encodeLengthHeader = (majorType: number, length: number): Uint8Array => {\n const baseValue = majorType << 5\n\n // Direct encoding (0-23)\n if (length <= 23) {\n return new Uint8Array([baseValue | length])\n }\n // 1-byte length (24-255)\n else if (length <= 255) {\n return new Uint8Array([baseValue | 24, length])\n }\n // 2-byte length (256-65535)\n else if (length <= 65535) {\n const lengthBytes = writeUint(length, 2)\n return new Uint8Array([baseValue | 25, ...lengthBytes])\n }\n // 4-byte length (65536-4294967295)\n else if (length <= 4294967295) {\n const lengthBytes = writeUint(length, 4)\n return new Uint8Array([baseValue | 26, ...lengthBytes])\n }\n // 8-byte length (> 4294967295)\n else {\n const lengthBytes = length > Number.MAX_SAFE_INTEGER\n ? writeBigUint(BigInt(length), 8)\n : writeUint(length, 8)\n return new Uint8Array([baseValue | 27, ...lengthBytes])\n }\n }\n\n /**\n * Encode byte string (Major Type 2)\n *\n * Can encode either:\n * - Definite-length: Single Uint8Array\n * - Indefinite-length: Array of Uint8Array chunks (if indefinite option is set)\n *\n * @param data - Byte data or array of chunks\n * @param encodeOptions - Encoding options\n * @returns Encoded CBOR bytes and hex string\n * @throws Error if indefinite encoding is used in canonical mode\n */\n const encodeByteString = (\n data: Uint8Array | Uint8Array[] | CborByteString,\n encodeOptions?: StringEncodeOptions\n ): EncodeResult => {\n // Check if it's a CborByteString with indefinite marker\n const isIndefinite = isCborByteString(data) && (data as any)[INDEFINITE_SYMBOL] === true\n\n // Handle indefinite-length encoding\n if (encodeOptions?.indefinite || Array.isArray(data) || isIndefinite) {\n if (options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n if (options.canonical) {\n throw new Error('Indefinite-length encoding not allowed in canonical mode')\n }\n\n // If it's a CborByteString with chunks, use the original chunks\n if (isCborByteString(data) && data.chunks) {\n return encodeByteStringIndefinite(data.chunks)\n }\n\n // Otherwise, get the actual bytes and encode as single chunk\n const bytes = isCborByteString(data) ? data.bytes : (Array.isArray(data) ? data : [data])\n return encodeByteStringIndefinite(Array.isArray(bytes) ? bytes : [bytes])\n }\n\n // Definite-length encoding - extract bytes from CborByteString if needed\n const bytes = isCborByteString(data) ? data.bytes : (data as Uint8Array)\n\n // Check size limit before allocating (header is at most 9 bytes)\n if (bytes.length + 9 > options.maxOutputSize) {\n throw new Error(`Encoded output exceeds maximum size`)\n }\n\n const header = encodeLengthHeader(2, bytes.length)\n const result = concatenateUint8Arrays([header, bytes])\n\n return {\n bytes: result,\n hex: bytesToHex(result)\n }\n }\n\n /**\n * Encode byte string with indefinite length (Major Type 2)\n *\n * Format: 0x5f + chunk1 + chunk2 + ... + 0xff\n * Each chunk is a definite-length byte string.\n *\n * @param chunks - Array of byte string chunks\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeByteStringIndefinite = (chunks: Uint8Array[]): EncodeResult => {\n if (options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n if (options.canonical) {\n throw new Error('Indefinite-length encoding not allowed in canonical mode')\n }\n\n const parts: Uint8Array[] = [new Uint8Array([0x5f])] // Start marker\n\n // Encode each chunk as definite-length byte string\n for (const chunk of chunks) {\n const header = encodeLengthHeader(2, chunk.length)\n parts.push(header)\n parts.push(chunk)\n }\n\n parts.push(new Uint8Array([0xff])) // Break marker\n\n const result = concatenateUint8Arrays(parts)\n\n return {\n bytes: result,\n hex: bytesToHex(result)\n }\n }\n\n /**\n * Encode text string (Major Type 3)\n *\n * Text strings are encoded as UTF-8 bytes.\n *\n * @param text - Text string to encode\n * @param _encodeOptions - Encoding options (reserved for future use)\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeTextString = (\n text: string | CborTextString,\n encodeOptions?: StringEncodeOptions\n ): EncodeResult => {\n // Check if it's a CborTextString with indefinite marker\n const isIndefinite = isCborTextString(text) && (text as any)[INDEFINITE_SYMBOL] === true\n\n // Handle indefinite-length encoding\n if (encodeOptions?.indefinite || isIndefinite) {\n if (options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n if (options.canonical) {\n throw new Error('Indefinite-length encoding not allowed in canonical mode')\n }\n\n // If it's a CborTextString with chunks, use the original chunks\n if (isCborTextString(text) && text.chunks) {\n return encodeTextStringIndefinite(text.chunks)\n }\n\n // Otherwise, get the actual text and encode as single chunk\n const textStr = isCborTextString(text) ? text.text : text\n return encodeTextStringIndefinite([textStr])\n }\n\n // Definite-length encoding - extract text from CborTextString if needed\n const textStr = isCborTextString(text) ? text.text : text\n\n // Convert string to UTF-8 bytes\n const encoder = new TextEncoder()\n const utf8Bytes = encoder.encode(textStr)\n\n // Check size limit before allocating (header is at most 9 bytes)\n if (utf8Bytes.length + 9 > options.maxOutputSize) {\n throw new Error(`Encoded output exceeds maximum size`)\n }\n\n const header = encodeLengthHeader(3, utf8Bytes.length)\n const result = concatenateUint8Arrays([header, utf8Bytes])\n\n return {\n bytes: result,\n hex: bytesToHex(result)\n }\n }\n\n /**\n * Encode text string with indefinite length (Major Type 3)\n *\n * Format: 0x7f + chunk1 + chunk2 + ... + 0xff\n * Each chunk is a definite-length text string.\n *\n * @param chunks - Array of text string chunks\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeTextStringIndefinite = (chunks: string[]): EncodeResult => {\n if (options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n if (options.canonical) {\n throw new Error('Indefinite-length encoding not allowed in canonical mode')\n }\n\n const parts: Uint8Array[] = [new Uint8Array([0x7f])] // Start marker\n\n // Encode each chunk as definite-length text string\n const encoder = new TextEncoder()\n for (const chunk of chunks) {\n const utf8Bytes = encoder.encode(chunk)\n const header = encodeLengthHeader(3, utf8Bytes.length)\n parts.push(header)\n parts.push(utf8Bytes)\n }\n\n parts.push(new Uint8Array([0xff])) // Break marker\n\n const result = concatenateUint8Arrays(parts)\n\n return {\n bytes: result,\n hex: bytesToHex(result)\n }\n }\n\n return {\n encodeByteString,\n encodeByteStringIndefinite,\n encodeTextString,\n encodeTextStringIndefinite\n }\n}\n","/**\n * CBOR Collection Encoder Composable\n * Handles Major Type 4 (Arrays) and Major Type 5 (Maps)\n * Following RFC 8949 specification\n */\n\nimport type { EncodeResult, EncodeOptions, EncodeContext, EncodableValue } from '../types'\nimport { DEFAULT_ENCODE_OPTIONS, INDEFINITE_SYMBOL, ALL_ENTRIES_SYMBOL } from '../types'\nimport { bytesToHex, concatenateUint8Arrays, compareBytes } from '../utils'\nimport { useCborIntegerEncoder } from './useCborIntegerEncoder'\nimport { useCborStringEncoder } from './useCborStringEncoder'\nimport { useCborByteString, useCborTextString } from '../../parser/composables/useCborStringTypes'\n\ninterface CollectionEncodeOptions {\n indefinite?: boolean\n}\n\n/**\n * CBOR Collection Encoder Composable\n *\n * Provides functions to encode arrays and maps:\n * - Major Type 4: Arrays\n * - Major Type 5: Maps (objects or Map instances)\n *\n * Supports both definite-length and indefinite-length encoding.\n * Handles canonical encoding with sorted map keys.\n * Enforces depth and size limits.\n *\n * @param options - Global encoder options\n *\n * @example\n * ```ts\n * const { encodeArray, encodeMap } = useCborCollectionEncoder()\n *\n * // Encode array\n * const arr = [1, 2, 3]\n * const result1 = encodeArray(arr)\n * // result1: { bytes: Uint8Array([0x83, 0x01, 0x02, 0x03]), hex: '83010203' }\n *\n * // Encode map\n * const map = { amount: 1000000 }\n * const result2 = encodeMap(map)\n * // result2: { bytes: ..., hex: 'a166616d6f756e741a000f4240' }\n * ```\n */\nexport function useCborCollectionEncoder(globalOptions?: Partial<EncodeOptions>) {\n const options = { ...DEFAULT_ENCODE_OPTIONS, ...globalOptions }\n\n // Get other encoders\n const { encodeInteger } = useCborIntegerEncoder()\n const { encodeTextString, encodeByteString } = useCborStringEncoder(globalOptions)\n const { isCborByteString } = useCborByteString()\n const { isCborTextString } = useCborTextString()\n\n /**\n * Encode a single value (recursive)\n *\n * NOTE: This is set by the main encoder to enable recursive encoding of all types\n * including tagged values. This avoids circular dependencies.\n */\n let mainEncode: ((value: EncodableValue) => EncodeResult) | null = null\n\n /**\n * Set the main encode function for recursive encoding\n * This must be called by useCborEncoder before encoding collections\n */\n const setMainEncode = (encodeFn: (value: EncodableValue) => EncodeResult) => {\n mainEncode = encodeFn\n }\n\n /**\n * Encode a single value (recursive)\n *\n * @param value - Value to encode\n * @param ctx - Encoding context for depth tracking\n * @returns Encoded CBOR bytes\n */\n const encodeValue = (value: EncodableValue, ctx: EncodeContext): Uint8Array => {\n // Check depth limit\n if (ctx.depth > ctx.options.maxDepth) {\n throw new Error('Maximum nesting depth exceeded')\n }\n\n // Encode based on type\n if (value === null || value === undefined) {\n // null/undefined -> CBOR null (0xf6)\n return new Uint8Array([0xf6])\n }\n else if (typeof value === 'boolean') {\n // true: 0xf5, false: 0xf4\n return new Uint8Array([value ? 0xf5 : 0xf4])\n }\n else if (typeof value === 'number' || typeof value === 'bigint') {\n return encodeInteger(value).bytes\n }\n else if (typeof value === 'string' || isCborTextString(value)) {\n return encodeTextString(value).bytes\n }\n else if (value instanceof Uint8Array || isCborByteString(value)) {\n return encodeByteString(value).bytes\n }\n else if (Array.isArray(value)) {\n // Recursive array encoding - check for indefinite marker\n const isIndefinite = (value as any)[INDEFINITE_SYMBOL] === true\n const newCtx = { ...ctx, depth: ctx.depth + 1 }\n\n if (isIndefinite) {\n if (ctx.options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n // Use indefinite encoding - but need to recursively encode items\n const parts: Uint8Array[] = [new Uint8Array([0x9f])] // Start marker\n for (const item of value) {\n const encoded = encodeValue(item, newCtx)\n parts.push(encoded)\n }\n parts.push(new Uint8Array([0xff])) // Break marker\n return concatenateUint8Arrays(parts)\n } else {\n return encodeArrayInternal(value, newCtx).bytes\n }\n }\n else if (typeof value === 'object' && value !== null && 'tag' in value && 'value' in value) {\n // Tagged value - delegate to main encoder if available\n if (mainEncode) {\n return mainEncode(value).bytes\n }\n throw new Error('Tagged value encoding requires main encoder to be set')\n }\n else if (value instanceof Map || (typeof value === 'object' && value !== null)) {\n // Recursive map encoding - check for indefinite marker\n const isIndefinite = (value as any)[INDEFINITE_SYMBOL] === true\n const newCtx = { ...ctx, depth: ctx.depth + 1 }\n\n if (isIndefinite) {\n if (ctx.options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n // Use indefinite encoding\n const entries: Array<[EncodableValue, EncodableValue]> =\n value instanceof Map\n ? Array.from(value.entries())\n : Object.entries(value)\n\n const parts: Uint8Array[] = [new Uint8Array([0xbf])] // Start marker\n for (const [key, val] of entries) {\n const encodedKey = encodeValue(key, newCtx)\n const encodedValue = encodeValue(val, newCtx)\n parts.push(encodedKey)\n parts.push(encodedValue)\n }\n parts.push(new Uint8Array([0xff])) // Break marker\n return concatenateUint8Arrays(parts)\n } else {\n return encodeMapInternal(value as Map<EncodableValue, EncodableValue> | { [key: string]: EncodableValue }, newCtx).bytes\n }\n }\n else {\n throw new Error(`Unsupported value type: ${typeof value}`)\n }\n }\n\n /**\n * Encode length header for arrays and maps\n *\n * @param majorType - Major type (4 for arrays, 5 for maps)\n * @param length - Number of elements\n * @returns Encoded length header\n */\n const encodeLengthHeader = (majorType: number, length: number): Uint8Array => {\n const baseValue = majorType << 5\n\n if (length <= 23) {\n return new Uint8Array([baseValue | length])\n }\n else if (length <= 255) {\n return new Uint8Array([baseValue | 24, length])\n }\n else if (length <= 65535) {\n return new Uint8Array([baseValue | 25, length >> 8, length & 0xff])\n }\n else if (length <= 4294967295) {\n return new Uint8Array([\n baseValue | 26,\n (length >> 24) & 0xff,\n (length >> 16) & 0xff,\n (length >> 8) & 0xff,\n length & 0xff\n ])\n }\n else {\n throw new Error('Collection too large to encode')\n }\n }\n\n /**\n * Internal array encoding (used by recursive calls)\n */\n const encodeArrayInternal = (\n array: EncodableValue[],\n ctx: EncodeContext\n ): EncodeResult => {\n const header = encodeLengthHeader(4, array.length)\n const parts: Uint8Array[] = [header]\n\n // Encode each element\n for (const item of array) {\n const encoded = encodeValue(item, ctx)\n parts.push(encoded)\n }\n\n const result = concatenateUint8Arrays(parts)\n\n // Check output size\n ctx.bytesWritten += result.length\n if (ctx.bytesWritten > ctx.options.maxOutputSize) {\n throw new Error('Encoded output exceeds maximum size')\n }\n\n return {\n bytes: result,\n hex: bytesToHex(result)\n }\n }\n\n /**\n * Encode array (Major Type 4)\n *\n * @param array - Array of encodable values\n * @param encodeOptions - Encoding options\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeArray = (\n array: EncodableValue[],\n encodeOptions?: CollectionEncodeOptions\n ): EncodeResult => {\n // Check if array was originally encoded with indefinite length\n const isIndefinite = (array as any)[INDEFINITE_SYMBOL] === true\n\n // Handle indefinite-length encoding\n if (encodeOptions?.indefinite || isIndefinite) {\n if (options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n if (options.canonical) {\n throw new Error('Indefinite-length encoding not allowed in canonical mode')\n }\n return encodeArrayIndefinite(array)\n }\n\n // Definite-length encoding\n const ctx: EncodeContext = {\n depth: 0,\n bytesWritten: 0,\n options\n }\n\n return encodeArrayInternal(array, ctx)\n }\n\n /**\n * Encode array with indefinite length\n *\n * @param array - Array of encodable values\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeArrayIndefinite = (array: EncodableValue[]): EncodeResult => {\n if (options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n if (options.canonical) {\n throw new Error('Indefinite-length encoding not allowed in canonical mode')\n }\n\n const parts: Uint8Array[] = [new Uint8Array([0x9f])] // Start marker\n\n const ctx: EncodeContext = {\n depth: 0,\n bytesWritten: 0,\n options\n }\n\n // Encode each element\n for (const item of array) {\n const encoded = encodeValue(item, ctx)\n parts.push(encoded)\n }\n\n parts.push(new Uint8Array([0xff])) // Break marker\n\n const result = concatenateUint8Arrays(parts)\n\n return {\n bytes: result,\n hex: bytesToHex(result)\n }\n }\n\n /**\n * Internal map encoding (used by recursive calls)\n */\n const encodeMapInternal = (\n map: Map<EncodableValue, EncodableValue> | { [key: string]: EncodableValue },\n ctx: EncodeContext\n ): EncodeResult => {\n // Check for ALL_ENTRIES_SYMBOL for byte-perfect preservation with duplicates\n let entries: Array<[EncodableValue, EncodableValue]>\n\n if ((map as any)[ALL_ENTRIES_SYMBOL]) {\n // Use the preserved entries (includes duplicates and original order)\n entries = (map as any)[ALL_ENTRIES_SYMBOL]\n } else {\n // Convert object to Map if needed\n entries = map instanceof Map\n ? Array.from(map.entries())\n : Object.entries(map)\n }\n\n // In canonical mode, sort entries by encoded key (unless using allEntries for byte-perfect)\n if (ctx.options.canonical && !(map as any)[ALL_ENTRIES_SYMBOL]) {\n entries.sort((a, b) => {\n const keyA = encodeValue(a[0], { ...ctx, depth: ctx.depth + 1 })\n const keyB = encodeValue(b[0], { ...ctx, depth: ctx.depth + 1 })\n return compareBytes(keyA, keyB)\n })\n }\n\n if (ctx.options.rejectDuplicateKeys) {\n const seen = new Set<string>()\n for (const [key] of entries) {\n const keyBytes = encodeValue(key, { ...ctx, depth: ctx.depth + 1, bytesWritten: 0 })\n const keyHex = bytesToHex(keyBytes)\n if (seen.has(keyHex)) {\n throw new Error('Duplicate map key detected')\n }\n seen.add(keyHex)\n }\n }\n\n const header = encodeLengthHeader(5, entries.length)\n const parts: Uint8Array[] = [header]\n\n // Encode each key-value pair\n for (const [key, value] of entries) {\n const encodedKey = encodeValue(key, ctx)\n const encodedValue = encodeValue(value, ctx)\n parts.push(encodedKey)\n parts.push(encodedValue)\n }\n\n const result = concatenateUint8Arrays(parts)\n\n // Check output size\n ctx.bytesWritten += result.length\n if (ctx.bytesWritten > ctx.options.maxOutputSize) {\n throw new Error('Encoded output exceeds maximum size')\n }\n\n return {\n bytes: result,\n hex: bytesToHex(result)\n }\n }\n\n /**\n * Encode map (Major Type 5)\n *\n * @param map - Map or plain object\n * @param encodeOptions - Encoding options\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeMap = (\n map: Map<EncodableValue, EncodableValue> | { [key: string]: EncodableValue },\n encodeOptions?: CollectionEncodeOptions\n ): EncodeResult => {\n // Check if map was originally encoded with indefinite length\n const isIndefinite = (map as any)[INDEFINITE_SYMBOL] === true\n\n // Handle indefinite-length encoding\n if (encodeOptions?.indefinite || isIndefinite) {\n if (options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n if (options.canonical) {\n throw new Error('Indefinite-length encoding not allowed in canonical mode')\n }\n return encodeMapIndefinite(map)\n }\n\n // Definite-length encoding\n const ctx: EncodeContext = {\n depth: 0,\n bytesWritten: 0,\n options\n }\n\n return encodeMapInternal(map, ctx)\n }\n\n /**\n * Encode map with indefinite length\n *\n * @param map - Map or plain object\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeMapIndefinite = (\n map: Map<EncodableValue, EncodableValue> | { [key: string]: EncodableValue }\n ): EncodeResult => {\n if (options.allowIndefinite === false) {\n throw new Error('Indefinite-length encoding is not allowed')\n }\n if (options.canonical) {\n throw new Error('Indefinite-length encoding not allowed in canonical mode')\n }\n\n const entries: Array<[EncodableValue, EncodableValue]> =\n map instanceof Map\n ? Array.from(map.entries())\n : Object.entries(map)\n\n const parts: Uint8Array[] = [new Uint8Array([0xbf])] // Start marker\n\n const ctx: EncodeContext = {\n depth: 0,\n bytesWritten: 0,\n options\n }\n\n // Encode each key-value pair\n for (const [key, value] of entries) {\n const encodedKey = encodeValue(key, ctx)\n const encodedValue = encodeValue(value, ctx)\n parts.push(encodedKey)\n parts.push(encodedValue)\n }\n\n parts.push(new Uint8Array([0xff])) // Break marker\n\n const result = concatenateUint8Arrays(parts)\n\n return {\n bytes: result,\n hex: bytesToHex(result)\n }\n }\n\n return {\n encodeArray,\n encodeArrayIndefinite,\n encodeMap,\n encodeMapIndefinite,\n setMainEncode\n }\n}\n","/**\n * CBOR Simple Values and Floats Encoder Composable\n * Handles Major Type 7 (Floats and Simple Values)\n * Following RFC 8949 specification\n */\n\nimport type { EncodeResult, EncodeOptions } from '../types'\nimport { bytesToHex } from '../utils'\nimport { useCborIntegerEncoder } from './useCborIntegerEncoder'\n\n/**\n * CBOR Simple Values and Floats Encoder Composable\n *\n * Provides functions to encode:\n * - Simple values: false, true, null, undefined\n * - Floating-point numbers: float16, float32, float64\n *\n * @param options - Global encoder options\n *\n * @example\n * ```ts\n * const { encodeSimple, encodeFloat } = useCborSimpleEncoder()\n *\n * // Encode simple values\n * const result1 = encodeSimple(true)\n * // result1: { bytes: Uint8Array([0xf5]), hex: 'f5' }\n *\n * // Encode float\n * const result2 = encodeFloat(1.1)\n * // result2: { bytes: Uint8Array([0xfb, ...]), hex: 'fb...' }\n * ```\n */\nexport function useCborSimpleEncoder(_globalOptions?: Partial<EncodeOptions>) {\n const { encodeInteger } = useCborIntegerEncoder()\n\n /**\n * Encode simple values (booleans, null, undefined)\n *\n * @param value - Simple value to encode\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeSimple = (value: boolean | null | undefined): EncodeResult => {\n let byte: number\n\n if (value === false) {\n byte = 0xf4\n } else if (value === true) {\n byte = 0xf5\n } else if (value === null) {\n byte = 0xf6\n } else if (value === undefined) {\n byte = 0xf7\n } else {\n throw new Error(`Unsupported simple value: ${value}`)\n }\n\n return {\n bytes: new Uint8Array([byte]),\n hex: bytesToHex(new Uint8Array([byte]))\n }\n }\n\n /**\n * Encode float16 (IEEE 754 half precision)\n *\n * @param value - Number to encode\n * @returns Uint8Array with float16 bytes (2 bytes)\n */\n const encodeFloat16Bytes = (value: number): Uint8Array => {\n // Handle special cases\n if (value === 0) return new Uint8Array([0x00, 0x00])\n if (value === -0) return new Uint8Array([0x80, 0x00])\n if (Number.isNaN(value)) return new Uint8Array([0x7e, 0x00])\n if (value === Infinity) return new Uint8Array([0x7c, 0x00])\n if (value === -Infinity) return new Uint8Array([0xfc, 0x00])\n\n // Convert float64 to float16\n const sign = value < 0 ? 1 : 0\n const absValue = Math.abs(value)\n\n // Get exponent and mantissa from float64\n const buffer = new ArrayBuffer(8)\n const view = new DataView(buffer)\n view.setFloat64(0, absValue, false)\n\n const bits = view.getBigUint64(0, false)\n const exp64 = Number((bits >> 52n) & 0x7ffn) - 1023\n const mant64 = Number(bits & 0xfffffffffffffn)\n\n // Convert to float16 range\n let exp16: number\n let mant16: number\n\n if (exp64 < -24) {\n // Too small even for subnormal float16\n exp16 = 0\n mant16 = 0\n } else if (exp64 < -14) {\n // Subnormal float16: shift the implicit 1.mantissa into the fraction bits\n exp16 = 0\n const shift = -14 - exp64\n mant16 = (((1 << 10) | (mant64 >> 42)) + ((1 << (shift - 1)) - 1)) >> shift\n } else if (exp64 > 15) {\n // Overflow to infinity\n exp16 = 31\n mant16 = 0\n } else {\n // Normal number\n exp16 = exp64 + 15\n // Take top 10 bits of mantissa\n mant16 = mant64 >> 42\n }\n\n const float16 = (sign << 15) | (exp16 << 10) | mant16\n\n return new Uint8Array([\n (float16 >> 8) & 0xff,\n float16 & 0xff\n ])\n }\n\n /**\n * Encode float32 (IEEE 754 single precision)\n *\n * @param value - Number to encode\n * @returns Uint8Array with float32 bytes (4 bytes)\n */\n const encodeFloat32Bytes = (value: number): Uint8Array => {\n const buffer = new ArrayBuffer(4)\n const view = new DataView(buffer)\n view.setFloat32(0, value, false) // Big-endian\n\n return new Uint8Array(buffer)\n }\n\n /**\n * Encode float64 (IEEE 754 double precision)\n *\n * @param value - Number to encode\n * @returns Uint8Array with float64 bytes (8 bytes)\n */\n const encodeFloat64Bytes = (value: number): Uint8Array => {\n const buffer = new ArrayBuffer(8)\n const view = new DataView(buffer)\n view.setFloat64(0, value, false) // Big-endian\n\n return new Uint8Array(buffer)\n }\n\n /**\n * Check if a number can be exactly represented as float16\n *\n * @param value - Number to check\n * @returns True if can be represented as float16\n */\n const canBeFloat16 = (value: number): boolean => {\n // Special values\n if (!Number.isFinite(value) || value === 0 || value === -0) {\n return true\n }\n\n // Check range\n const absValue = Math.abs(value)\n if (absValue < 0.00006103515625 || absValue > 65504) {\n return false\n }\n\n // Encode and decode to check for precision loss\n const bytes = encodeFloat16Bytes(value)\n const view = new DataView(bytes.buffer)\n const bits = view.getUint16(0, false)\n\n const sign = (bits >> 15) & 0x1\n const exp = (bits >> 10) & 0x1f\n const mant = bits & 0x3ff\n\n let decoded: number\n\n if (exp === 0) {\n decoded = (sign ? -1 : 1) * Math.pow(2, -14) * (mant / 1024)\n } else if (exp === 31) {\n decoded = mant === 0 ? (sign ? -Infinity : Infinity) : NaN\n } else {\n decoded = (sign ? -1 : 1) * Math.pow(2, exp - 15) * (1 + mant / 1024)\n }\n\n return decoded === value\n }\n\n /**\n * Check if a number can be exactly represented as float32\n *\n * @param value - Number to check\n * @returns True if can be represented as float32\n */\n const canBeFloat32 = (value: number): boolean => {\n // Special values\n if (!Number.isFinite(value) || value === 0 || value === -0) {\n return true\n }\n\n // Encode as float32 and decode back to check for precision loss\n const buffer = new ArrayBuffer(4)\n const view = new DataView(buffer)\n view.setFloat32(0, value, false)\n const decoded = view.getFloat32(0, false)\n\n return decoded === value\n }\n\n /**\n * Check if a number is an integer\n *\n * @param value - Number to check\n * @returns True if value is an integer\n */\n const isInteger = (value: number): boolean => {\n return Number.isInteger(value) && Number.isSafeInteger(value)\n }\n\n /**\n * Encode floating-point number\n *\n * @param value - Number to encode\n * @param precision - Optional precision (16, 32, or 64). If not specified, uses smallest possible.\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeFloat = (value: number, precision?: 16 | 32 | 64): EncodeResult => {\n let bytes: Uint8Array\n\n // If value is an integer, encode as integer\n if (isInteger(value) && !precision) {\n return encodeInteger(value)\n }\n\n // If precision is specified, use it\n if (precision === 16) {\n const floatBytes = encodeFloat16Bytes(value)\n bytes = new Uint8Array([0xf9, ...floatBytes])\n } else if (precision === 32) {\n const floatBytes = encodeFloat32Bytes(value)\n bytes = new Uint8Array([0xfa, ...floatBytes])\n } else if (precision === 64) {\n const floatBytes = encodeFloat64Bytes(value)\n bytes = new Uint8Array([0xfb, ...floatBytes])\n } else {\n // Auto-detect smallest precision\n if (canBeFloat16(value)) {\n const floatBytes = encodeFloat16Bytes(value)\n bytes = new Uint8Array([0xf9, ...floatBytes])\n } else if (canBeFloat32(value)) {\n const floatBytes = encodeFloat32Bytes(value)\n bytes = new Uint8Array([0xfa, ...floatBytes])\n } else {\n // Use float64 for best precision\n const floatBytes = encodeFloat64Bytes(value)\n bytes = new Uint8Array([0xfb, ...floatBytes])\n }\n }\n\n return {\n bytes,\n hex: bytesToHex(bytes)\n }\n }\n\n return {\n encodeSimple,\n encodeFloat\n }\n}\n","/**\n * CBOR Tag Encoder Composable\n * Handles Major Type 6 (Semantic Tags)\n * Following RFC 8949 specification\n */\n\nimport type { EncodeResult, TaggedValue, EncodableValue } from '../types'\nimport { bytesToHex, writeUint, writeBigUint } from '../utils'\n\n/**\n * CBOR Tag Encoder Composable\n *\n * Provides functions to encode tagged values to CBOR format:\n * - Major Type 6: Semantic tags (0 to 2^64-1)\n *\n * Tags provide semantic meaning to CBOR values:\n * - Tag 0: Date/time string (RFC 3339)\n * - Tag 1: Epoch timestamp\n * - Tag 2: Positive bignum\n * - Tag 3: Negative bignum\n * - Tag 258: Cardano set (CIP-0005)\n * - And many more...\n *\n * @example\n * ```ts\n * const { encodeTag } = useCborTagEncoder()\n *\n * // Encode date/time string (tag 0)\n * const result1 = encodeTag(0, '2013-03-21T20:04:00Z', encode)\n * // result1.hex: 'c074323031332d30332d32315432303a30343a30305a'\n *\n * // Encode positive bignum (tag 2)\n * const result2 = encodeTag(2, new Uint8Array([0x01, 0xff]), encode)\n * // result2.hex: 'c24201ff'\n *\n * // Encode Cardano set (tag 258)\n * const result3 = encodeTag(258, [1, 2, 3], encode)\n * // result3.hex: 'd9010283010203'\n * ```\n */\nexport function useCborTagEncoder() {\n /**\n * Encode tag number (Major Type 6 header)\n *\n * Tag numbers use the same encoding rules as unsigned integers:\n * - 0-23: Direct encoding in initial byte (0xc0-0xd7)\n * - 24-255: 0xd8 + 1 byte\n * - 256-65535: 0xd9 + 2 bytes\n * - 65536-4294967295: 0xda + 4 bytes\n * - 4294967296-2^64-1: 0xdb + 8 bytes\n *\n * @param tagNumber - Tag number (0 to 2^64-1)\n * @returns Encoded tag header bytes\n * @throws Error if tag number is negative or >= 2^64\n */\n const encodeTagNumber = (tagNumber: number | bigint): Uint8Array => {\n // Convert to BigInt for consistent handling\n const bigTag = typeof tagNumber === 'bigint' ? tagNumber : BigInt(tagNumber)\n\n // Validate tag is non-negative\n if (bigTag < 0n) {\n throw new Error('Tag number cannot be negative')\n }\n\n // Validate tag doesn't exceed 2^64-1\n const MAX_UINT64 = 18446744073709551615n // 2^64 - 1\n if (bigTag > MAX_UINT64) {\n throw new Error('Tag number exceeds maximum (2^64-1)')\n }\n\n let bytes: Uint8Array\n\n // Direct encoding (0-23) - Major type 6 (0xc0) + tag number\n if (bigTag <= 23n) {\n bytes = new Uint8Array([0xc0 + Number(bigTag)])\n }\n // 1-byte encoding (24-255) - 0xd8 + 1 byte\n else if (bigTag <= 255n) {\n bytes = new Uint8Array([0xd8, Number(bigTag)])\n }\n // 2-byte encoding (256-65535) - 0xd9 + 2 bytes\n else if (bigTag <= 65535n) {\n const valueBytes = writeUint(Number(bigTag), 2)\n bytes = new Uint8Array([0xd9, ...valueBytes])\n }\n // 4-byte encoding (65536-4294967295) - 0xda + 4 bytes\n else if (bigTag <= 4294967295n) {\n const valueBytes = writeUint(Number(bigTag), 4)\n bytes = new Uint8Array([0xda, ...valueBytes])\n }\n // 8-byte encoding (> 4294967295) - 0xdb + 8 bytes\n else {\n const valueBytes = writeBigUint(bigTag, 8)\n bytes = new Uint8Array([0xdb, ...valueBytes])\n }\n\n return bytes\n }\n\n /**\n * Encode tagged value (tag + content)\n *\n * A tagged value consists of:\n * 1. Tag number (Major Type 6 header)\n * 2. Tagged content (recursively encoded value)\n *\n * The encode function is passed as a parameter to avoid circular dependencies.\n *\n * @param tagNumber - Tag number\n * @param value - Value to tag\n * @param encode - Encoder function for the tagged value\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeTag = (\n tagNumber: number | bigint,\n value: EncodableValue,\n encode: (value: EncodableValue) => EncodeResult\n ): EncodeResult => {\n // Encode tag number\n const tagBytes = encodeTagNumber(tagNumber)\n\n // Recursively encode the tagged value\n const valueResult = encode(value)\n\n // Concatenate tag header + value bytes\n const totalLength = tagBytes.length + valueResult.bytes.length\n const bytes = new Uint8Array(totalLength)\n bytes.set(tagBytes, 0)\n bytes.set(valueResult.bytes, tagBytes.length)\n\n return {\n bytes,\n hex: bytesToHex(bytes)\n }\n }\n\n /**\n * Encode TaggedValue object\n *\n * Convenience function for encoding { tag, value } objects.\n *\n * @param taggedValue - Object with tag and value properties\n * @param encode - Encoder function for the tagged value\n * @returns Encoded CBOR bytes and hex string\n */\n const encodeTaggedValue = (\n taggedValue: TaggedValue,\n encode: (value: EncodableValue) => EncodeResult\n ): EncodeResult => {\n return encodeTag(taggedValue.tag, taggedValue.value, encode)\n }\n\n return {\n encodeTagNumber,\n encodeTag,\n encodeTaggedValue\n }\n}\n","/**\n * Main CBOR Encoder Composable\n * High-level API for encoding JavaScript values to CBOR\n * Following RFC 8949 specification\n */\n\nimport type { EncodeResult, EncodeOptions, EncodableValue, TaggedValue } from '../types'\nimport { DEFAULT_ENCODE_OPTIONS } from '../types'\nimport { useCborIntegerEncoder } from './useCborIntegerEncoder'\nimport { useCborStringEncoder } from './useCborStringEncoder'\nimport { useCborCollectionEncoder } from './useCborCollectionEncoder'\nimport { useCborSimpleEncoder } from './useCborSimpleEncoder'\nimport { useCborTagEncoder } from './useCborTagEncoder'\nimport { useCborByteString, useCborTextString } from '../../parser/composables/useCborStringTypes'\n\n/**\n * Main CBOR Encoder Composable\n *\n * Provides a unified interface for encoding any JavaScript value to CBOR.\n * Automatically selects the appropriate encoder based on value type.\n *\n * @param options - Global encoder options\n *\n * @example\n * ```ts\n * const { encode } = useCborEncoder()\n *\n * // Encode various types\n * encode(42) // Integer\n * encode(\"hello\") // Text string\n * encode([1, 2, 3]) // Array\n * encode({ a: 1 }) // Map\n * encode(true) // Boolean\n * encode(3.14) // Float\n * encode(new Uint8Array([0xff])) // Byte string\n *\n * // With options\n * const { encode: encodeCanonical } = useCborEncoder({ canonical: true })\n * encodeCanonical({ z: 1, a: 2 }) // Keys will be sorted\n * ```\n */\nexport function useCborEncoder(globalOptions?: Partial<EncodeOptions>) {\n const options = { ...DEFAULT_ENCODE_OPTIONS, ...globalOptions }\n\n // Canonical mode overrides: indefinite-length is forbidden per RFC 8949 Section 4.2\n if (options.canonical && options.allowIndefinite) {\n options.allowIndefinite = false\n }\n\n // Get all specialized encoders\n const { encodeInteger } = useCborIntegerEncoder()\n const { encodeTextString, encodeByteString } = useCborStringEncoder(options)\n const { encodeArray, encodeMap, setMainEncode } = useCborCollectionEncoder(options)\n const { encodeSimple, encodeFloat } = useCborSimpleEncoder(options)\n const { encodeTaggedValue } = useCborTagEncoder()\n\n // Get type guards for composable string types\n const { isCborByteString } = useCborByteString()\n const { isCborTextString } = useCborTextString()\n\n /**\n * Encode any JavaScript value to CBOR\n *\n * Automatically detects the type and uses the appropriate encoder:\n * - number/bigint → Integer or Float\n * - string → Text string\n * - boolean/null/undefined → Simple values\n * - Uint8Array → Byte string\n * - Array → CBOR array\n * - {tag: number, value: any} → Tagged value\n * - Object/Map → CBOR map\n *\n * @param value - Value to encode\n * @returns Encoded CBOR bytes and hex string\n * @throws Error if value type is unsupported\n */\n const encode = (value: EncodableValue): EncodeResult => {\n // Handle null/undefined/boolean\n if (value === null || value === undefined || typeof value === 'boolean') {\n return encodeSimple(value)\n }\n\n // Handle numbers\n if (typeof value === 'number') {\n // Check if it's an integer\n if (Number.isSafeInteger(value)) {\n return encodeInteger(value)\n }\n // It's a float\n return encodeFloat(value)\n }\n\n // Handle bigint\n if (typeof value === 'bigint') {\n return encodeInteger(value)\n }\n\n // Handle composable text strings (check before primitive strings)\n if (isCborTextString(value)) {\n return encodeTextString(value)\n }\n\n // Handle strings\n if (typeof value === 'string') {\n return encodeTextString(value)\n }\n\n // Handle composable byte strings (check before Uint8Array)\n if (isCborByteString(value)) {\n return encodeByteString(value)\n }\n\n // Handle Uint8Array (byte strings)\n if (value instanceof Uint8Array) {\n return encodeByteString(value)\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n return encodeArray(value)\n }\n\n // Handle Map\n if (value instanceof Map) {\n return encodeMap(value)\n }\n\n // Handle tagged values (MUST come before plain objects)\n // Check for {tag: number, value: any} structure\n if (typeof value === 'object' && value !== null && 'tag' in value && 'value' in value && typeof (value as { tag: unknown }).tag === 'number') {\n return encodeTaggedValue(value as TaggedValue, encode)\n }\n\n // Handle plain objects\n if (typeof value === 'object' && value !== null) {\n return encodeMap(value as { [key: string]: EncodableValue })\n }\n\n throw new Error(`Unsupported value type: ${typeof value}`)\n }\n\n // Set the main encode function for recursive collection encoding\n // This allows the collection encoder to handle nested tagged values\n setMainEncode(encode)\n\n /**\n * Encode value and return only the hex string\n *\n * @param value - Value to encode\n * @returns Hex string representation\n */\n const encodeToHex = (value: EncodableValue): string => {\n return encode(value).hex\n }\n\n /**\n * Encode value and return only the bytes\n *\n * @param value - Value to encode\n * @returns Uint8Array bytes\n */\n const encodeToBytes = (value: EncodableValue): Uint8Array => {\n return encode(value).bytes\n }\n\n /**\n * Encode multiple values in sequence\n *\n * Useful for CBOR sequences (RFC 8742)\n *\n * @param values - Values to encode\n * @returns Concatenated CBOR encoding\n */\n const encodeSequence = (values: EncodableValue[]): EncodeResult => {\n const allBytes: Uint8Array[] = []\n\n for (const value of values) {\n const result = encode(value)\n allBytes.push(result.bytes)\n }\n\n // Concatenate all encoded values\n const totalLength = allBytes.reduce((sum, arr) => sum + arr.length, 0)\n const concatenated = new Uint8Array(totalLength)\n\n let offset = 0\n for (const bytes of allBytes) {\n concatenated.set(bytes, offset)\n offset += bytes.length\n }\n\n const hex = Array.from(concatenated)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('')\n\n return {\n bytes: concatenated,\n hex\n }\n }\n\n return {\n encode,\n encodeToHex,\n encodeToBytes,\n encodeSequence\n }\n}\n"]}
|
package/dist/encoder/index.cjs
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkR62CQQNI_cjs = require('../chunk-R62CQQNI.cjs');
|
|
4
4
|
require('../chunk-PD72MVTX.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "DEFAULT_ENCODE_OPTIONS", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkR62CQQNI_cjs.DEFAULT_ENCODE_OPTIONS; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "bytesToHex", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkR62CQQNI_cjs.bytesToHex; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "compareBytes", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkR62CQQNI_cjs.compareBytes; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "concatenateUint8Arrays", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunkR62CQQNI_cjs.concatenateUint8Arrays; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "useCborCollectionEncoder", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkR62CQQNI_cjs.useCborCollectionEncoder; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "useCborEncoder", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunkR62CQQNI_cjs.useCborEncoder; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "useCborIntegerEncoder", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunkR62CQQNI_cjs.useCborIntegerEncoder; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "useCborSimpleEncoder", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunkR62CQQNI_cjs.useCborSimpleEncoder; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "useCborStringEncoder", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunkR62CQQNI_cjs.useCborStringEncoder; }
|
|
43
43
|
});
|
|
44
44
|
Object.defineProperty(exports, "useCborTagEncoder", {
|
|
45
45
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
46
|
+
get: function () { return chunkR62CQQNI_cjs.useCborTagEncoder; }
|
|
47
47
|
});
|
|
48
48
|
Object.defineProperty(exports, "writeBigUint", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunkR62CQQNI_cjs.writeBigUint; }
|
|
51
51
|
});
|
|
52
52
|
Object.defineProperty(exports, "writeUint", {
|
|
53
53
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
54
|
+
get: function () { return chunkR62CQQNI_cjs.writeUint; }
|
|
55
55
|
});
|
|
56
56
|
//# sourceMappingURL=index.cjs.map
|
|
57
57
|
//# sourceMappingURL=index.cjs.map
|
package/dist/encoder/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DEFAULT_ENCODE_OPTIONS, bytesToHex, compareBytes, concatenateUint8Arrays, useCborCollectionEncoder, useCborEncoder, useCborIntegerEncoder, useCborSimpleEncoder, useCborStringEncoder, useCborTagEncoder, writeBigUint, writeUint } from '../chunk-
|
|
1
|
+
export { DEFAULT_ENCODE_OPTIONS, bytesToHex, compareBytes, concatenateUint8Arrays, useCborCollectionEncoder, useCborEncoder, useCborIntegerEncoder, useCborSimpleEncoder, useCborStringEncoder, useCborTagEncoder, writeBigUint, writeUint } from '../chunk-2MTLSQ7E.js';
|
|
2
2
|
import '../chunk-ZDZ2B5PE.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkPTWN7K3Y_cjs = require('./chunk-PTWN7K3Y.cjs');
|
|
4
|
+
var chunkR62CQQNI_cjs = require('./chunk-R62CQQNI.cjs');
|
|
5
5
|
var chunkPD72MVTX_cjs = require('./chunk-PD72MVTX.cjs');
|
|
6
6
|
|
|
7
7
|
// src/parser/composables/useCborDiagnostic.ts
|
|
@@ -412,27 +412,27 @@ var PathBuilder = {
|
|
|
412
412
|
|
|
413
413
|
// src/index.ts
|
|
414
414
|
function decode(hexString, options) {
|
|
415
|
-
const { parse } =
|
|
415
|
+
const { parse } = chunkPTWN7K3Y_cjs.useCborParser();
|
|
416
416
|
return parse(hexString, options);
|
|
417
417
|
}
|
|
418
418
|
function decodeWithSourceMap(hexString, options) {
|
|
419
|
-
const { parseWithSourceMap } =
|
|
419
|
+
const { parseWithSourceMap } = chunkPTWN7K3Y_cjs.useCborParser();
|
|
420
420
|
return parseWithSourceMap(hexString, options);
|
|
421
421
|
}
|
|
422
422
|
function encode(value, options) {
|
|
423
|
-
const { encode: encodeValue } =
|
|
423
|
+
const { encode: encodeValue } = chunkR62CQQNI_cjs.useCborEncoder(options);
|
|
424
424
|
return encodeValue(value);
|
|
425
425
|
}
|
|
426
426
|
function encodeToHex(value, options) {
|
|
427
|
-
const { encodeToHex: encodeValueToHex } =
|
|
427
|
+
const { encodeToHex: encodeValueToHex } = chunkR62CQQNI_cjs.useCborEncoder(options);
|
|
428
428
|
return encodeValueToHex(value);
|
|
429
429
|
}
|
|
430
430
|
function encodeToBytes(value, options) {
|
|
431
|
-
const { encodeToBytes: encodeValueToBytes } =
|
|
431
|
+
const { encodeToBytes: encodeValueToBytes } = chunkR62CQQNI_cjs.useCborEncoder(options);
|
|
432
432
|
return encodeValueToBytes(value);
|
|
433
433
|
}
|
|
434
434
|
function encodeSequence(values, options) {
|
|
435
|
-
const { encodeSequence: encodeSeq } =
|
|
435
|
+
const { encodeSequence: encodeSeq } = chunkR62CQQNI_cjs.useCborEncoder(options);
|
|
436
436
|
return encodeSeq(values);
|
|
437
437
|
}
|
|
438
438
|
var CborDecoder = class {
|
|
@@ -520,51 +520,51 @@ function decodeToDiagnostic(hexString, options) {
|
|
|
520
520
|
|
|
521
521
|
Object.defineProperty(exports, "useCborCollection", {
|
|
522
522
|
enumerable: true,
|
|
523
|
-
get: function () { return
|
|
523
|
+
get: function () { return chunkPTWN7K3Y_cjs.useCborCollection; }
|
|
524
524
|
});
|
|
525
525
|
Object.defineProperty(exports, "useCborFloat", {
|
|
526
526
|
enumerable: true,
|
|
527
|
-
get: function () { return
|
|
527
|
+
get: function () { return chunkPTWN7K3Y_cjs.useCborFloat; }
|
|
528
528
|
});
|
|
529
529
|
Object.defineProperty(exports, "useCborInteger", {
|
|
530
530
|
enumerable: true,
|
|
531
|
-
get: function () { return
|
|
531
|
+
get: function () { return chunkPTWN7K3Y_cjs.useCborInteger; }
|
|
532
532
|
});
|
|
533
533
|
Object.defineProperty(exports, "useCborParser", {
|
|
534
534
|
enumerable: true,
|
|
535
|
-
get: function () { return
|
|
535
|
+
get: function () { return chunkPTWN7K3Y_cjs.useCborParser; }
|
|
536
536
|
});
|
|
537
537
|
Object.defineProperty(exports, "useCborString", {
|
|
538
538
|
enumerable: true,
|
|
539
|
-
get: function () { return
|
|
539
|
+
get: function () { return chunkPTWN7K3Y_cjs.useCborString; }
|
|
540
540
|
});
|
|
541
541
|
Object.defineProperty(exports, "useCborTag", {
|
|
542
542
|
enumerable: true,
|
|
543
|
-
get: function () { return
|
|
543
|
+
get: function () { return chunkPTWN7K3Y_cjs.useCborTag; }
|
|
544
544
|
});
|
|
545
545
|
Object.defineProperty(exports, "DEFAULT_ENCODE_OPTIONS", {
|
|
546
546
|
enumerable: true,
|
|
547
|
-
get: function () { return
|
|
547
|
+
get: function () { return chunkR62CQQNI_cjs.DEFAULT_ENCODE_OPTIONS; }
|
|
548
548
|
});
|
|
549
549
|
Object.defineProperty(exports, "useCborCollectionEncoder", {
|
|
550
550
|
enumerable: true,
|
|
551
|
-
get: function () { return
|
|
551
|
+
get: function () { return chunkR62CQQNI_cjs.useCborCollectionEncoder; }
|
|
552
552
|
});
|
|
553
553
|
Object.defineProperty(exports, "useCborEncoder", {
|
|
554
554
|
enumerable: true,
|
|
555
|
-
get: function () { return
|
|
555
|
+
get: function () { return chunkR62CQQNI_cjs.useCborEncoder; }
|
|
556
556
|
});
|
|
557
557
|
Object.defineProperty(exports, "useCborIntegerEncoder", {
|
|
558
558
|
enumerable: true,
|
|
559
|
-
get: function () { return
|
|
559
|
+
get: function () { return chunkR62CQQNI_cjs.useCborIntegerEncoder; }
|
|
560
560
|
});
|
|
561
561
|
Object.defineProperty(exports, "useCborSimpleEncoder", {
|
|
562
562
|
enumerable: true,
|
|
563
|
-
get: function () { return
|
|
563
|
+
get: function () { return chunkR62CQQNI_cjs.useCborSimpleEncoder; }
|
|
564
564
|
});
|
|
565
565
|
Object.defineProperty(exports, "useCborStringEncoder", {
|
|
566
566
|
enumerable: true,
|
|
567
|
-
get: function () { return
|
|
567
|
+
get: function () { return chunkR62CQQNI_cjs.useCborStringEncoder; }
|
|
568
568
|
});
|
|
569
569
|
Object.defineProperty(exports, "CborAdditionalInfo", {
|
|
570
570
|
enumerable: true,
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from './useCborTag-
|
|
1
|
+
export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from './useCborTag-Cs1CZuXZ.cjs';
|
|
2
2
|
import { E as EncodableValue, a as EncodeOptions, b as EncodeResult } from './useCborSimpleEncoder-ButVU988.cjs';
|
|
3
3
|
export { D as DEFAULT_ENCODE_OPTIONS, g as EncodeContext, e as useCborCollectionEncoder, u as useCborEncoder, c as useCborIntegerEncoder, f as useCborSimpleEncoder, d as useCborStringEncoder } from './useCborSimpleEncoder-ButVU988.cjs';
|
|
4
4
|
import { P as ParseOptions, a as ParseResult, b as ParseResultWithMap } from './types-DvNlfbKB.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from './useCborTag-
|
|
1
|
+
export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from './useCborTag-xV2Pz2VY.js';
|
|
2
2
|
import { E as EncodableValue, a as EncodeOptions, b as EncodeResult } from './useCborSimpleEncoder-TVxzNJ_9.js';
|
|
3
3
|
export { D as DEFAULT_ENCODE_OPTIONS, g as EncodeContext, e as useCborCollectionEncoder, u as useCborEncoder, c as useCborIntegerEncoder, f as useCborSimpleEncoder, d as useCborStringEncoder } from './useCborSimpleEncoder-TVxzNJ_9.js';
|
|
4
4
|
import { P as ParseOptions, a as ParseResult, b as ParseResultWithMap } from './types-DvNlfbKB.js';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useCborParser } from './chunk-
|
|
2
|
-
export { useCborCollection, useCborFloat, useCborInteger, useCborParser, useCborString, useCborTag } from './chunk-
|
|
3
|
-
import { useCborEncoder } from './chunk-
|
|
4
|
-
export { DEFAULT_ENCODE_OPTIONS, useCborCollectionEncoder, useCborEncoder, useCborIntegerEncoder, useCborSimpleEncoder, useCborStringEncoder } from './chunk-
|
|
1
|
+
import { useCborParser } from './chunk-5A5T56JB.js';
|
|
2
|
+
export { useCborCollection, useCborFloat, useCborInteger, useCborParser, useCborString, useCborTag } from './chunk-5A5T56JB.js';
|
|
3
|
+
import { useCborEncoder } from './chunk-2MTLSQ7E.js';
|
|
4
|
+
export { DEFAULT_ENCODE_OPTIONS, useCborCollectionEncoder, useCborEncoder, useCborIntegerEncoder, useCborSimpleEncoder, useCborStringEncoder } from './chunk-2MTLSQ7E.js';
|
|
5
5
|
export { CborAdditionalInfo, CborMajorType, CborSimpleValue, CborTag, DEFAULT_LIMITS, DEFAULT_OPTIONS } from './chunk-ZDZ2B5PE.js';
|
|
6
6
|
|
|
7
7
|
// src/parser/composables/useCborDiagnostic.ts
|