@marcuspuchalla/nachos 0.1.4 → 0.2.0
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 +52 -0
- package/dist/{chunk-RVG2BY32.cjs → chunk-3Z45RBZP.cjs} +96 -42
- package/dist/chunk-3Z45RBZP.cjs.map +1 -0
- package/dist/{chunk-UMAX5MX5.js → chunk-EDXZTSIA.js} +33 -5
- package/dist/chunk-EDXZTSIA.js.map +1 -0
- package/dist/{chunk-S4RXO6IB.cjs → chunk-HMUA5KLG.cjs} +48 -20
- package/dist/chunk-HMUA5KLG.cjs.map +1 -0
- package/dist/{chunk-ZDZ2B5PE.js → chunk-JESIF5IF.js} +7 -3
- package/dist/chunk-JESIF5IF.js.map +1 -0
- package/dist/{chunk-5IWW5H47.js → chunk-LWNWC2O7.js} +68 -14
- package/dist/chunk-LWNWC2O7.js.map +1 -0
- package/dist/{chunk-PD72MVTX.cjs → chunk-P6A2OOIY.cjs} +7 -3
- package/dist/chunk-P6A2OOIY.cjs.map +1 -0
- package/dist/encoder/index.cjs +14 -14
- package/dist/encoder/index.d.cts +5 -4
- package/dist/encoder/index.d.ts +5 -4
- package/dist/encoder/index.js +2 -2
- package/dist/index.cjs +46 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -5
- package/dist/index.d.ts +15 -5
- package/dist/index.js +25 -5
- package/dist/index.js.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/parser/index.cjs +21 -21
- package/dist/parser/index.d.cts +2 -2
- package/dist/parser/index.d.ts +2 -2
- package/dist/parser/index.js +2 -2
- package/dist/{types-DvNlfbKB.d.cts → types-eG2qalpr.d.cts} +27 -1
- package/dist/{types-DvNlfbKB.d.ts → types-eG2qalpr.d.ts} +27 -1
- package/dist/{useCborSimpleEncoder-BoKEmjP9.d.ts → useCborSimpleEncoder-CamvS-_N.d.ts} +7 -1
- package/dist/{useCborSimpleEncoder-C_OHxoB8.d.cts → useCborSimpleEncoder-DXgPx62d.d.cts} +7 -1
- package/dist/{useCborTag-QpZR-Er2.d.cts → useCborTag-D4d7xG3-.d.cts} +1 -1
- package/dist/{useCborTag-BD6Sqp7p.d.ts → useCborTag-TYst1KR6.d.ts} +1 -1
- package/package.json +1 -1
- package/src/__tests__/audit-fixes.test.ts +141 -0
- package/src/encoder/composables/useCborCollectionEncoder.ts +3 -2
- package/src/encoder/composables/useCborEncoder.ts +19 -0
- package/src/encoder/composables/useCborSimpleEncoder.ts +6 -2
- package/src/encoder/types.ts +9 -2
- package/src/encoder/utils.ts +33 -1
- package/src/index.ts +10 -0
- package/src/parser/__tests__/utils-errors.test.ts +11 -3
- package/src/parser/composables/useCborCollection.ts +7 -4
- package/src/parser/composables/useCborDiagnostic.ts +28 -0
- package/src/parser/composables/useCborParser.ts +63 -13
- package/src/parser/composables/useCborTag.ts +8 -1
- package/src/parser/types.ts +32 -1
- package/src/parser/utils.ts +41 -0
- package/dist/chunk-5IWW5H47.js.map +0 -1
- package/dist/chunk-PD72MVTX.cjs.map +0 -1
- package/dist/chunk-RVG2BY32.cjs.map +0 -1
- package/dist/chunk-S4RXO6IB.cjs.map +0 -1
- package/dist/chunk-UMAX5MX5.js.map +0 -1
- package/dist/chunk-ZDZ2B5PE.js.map +0 -1
package/dist/metafile-esm.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/parser/types.ts":{"bytes":9412,"imports":[],"format":"esm"},"src/parser/utils.ts":{"bytes":11855,"imports":[],"format":"esm"},"src/parser/composables/useCborInteger.ts":{"bytes":3945,"imports":[{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"}],"format":"esm"},"src/parser/composables/useCborStringTypes.ts":{"bytes":3185,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/parser/composables/useCborString.ts":{"bytes":12691,"imports":[{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborStringTypes.ts","kind":"import-statement","original":"./useCborStringTypes"}],"format":"esm"},"src/parser/composables/useCborFloat.ts":{"bytes":11614,"imports":[{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"}],"format":"esm"},"src/parser/composables/useCborTag.ts":{"bytes":28555,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"},{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./useCborString"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./useCborFloat"}],"format":"esm"},"src/utils/logger.ts":{"bytes":1825,"imports":[],"format":"esm"},"src/parser/composables/useCborCollection.ts":{"bytes":18577,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"},{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./useCborString"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./useCborFloat"},{"path":"src/parser/composables/useCborTag.ts","kind":"import-statement","original":"./useCborTag"},{"path":"src/utils/logger.ts","kind":"import-statement","original":"../../utils/logger"}],"format":"esm"},"src/parser/composables/useCborParser.ts":{"bytes":38823,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"},{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./useCborString"},{"path":"src/parser/composables/useCborCollection.ts","kind":"import-statement","original":"./useCborCollection"},{"path":"src/parser/composables/useCborTag.ts","kind":"import-statement","original":"./useCborTag"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./useCborFloat"},{"path":"src/utils/logger.ts","kind":"import-statement","original":"../../utils/logger"}],"format":"esm"},"src/parser/composables/useCborDiagnostic.ts":{"bytes":9727,"imports":[],"format":"esm"},"src/parser/utils/pathBuilder.ts":{"bytes":7967,"imports":[],"format":"esm"},"src/encoder/types.ts":{"bytes":2111,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../parser/types"}],"format":"esm"},"src/encoder/utils.ts":{"bytes":1716,"imports":[],"format":"esm"},"src/encoder/composables/useCborIntegerEncoder.ts":{"bytes":5693,"imports":[{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"}],"format":"esm"},"src/encoder/composables/useCborStringEncoder.ts":{"bytes":9331,"imports":[{"path":"src/encoder/types.ts","kind":"import-statement","original":"../types"},{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborStringTypes.ts","kind":"import-statement","original":"../../parser/composables/useCborStringTypes"}],"format":"esm"},"src/encoder/composables/useCborSimpleEncoder.ts":{"bytes":9504,"imports":[{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./useCborIntegerEncoder"}],"format":"esm"},"src/encoder/composables/useCborCollectionEncoder.ts":{"bytes":14369,"imports":[{"path":"src/encoder/types.ts","kind":"import-statement","original":"../types"},{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./useCborIntegerEncoder"},{"path":"src/encoder/composables/useCborStringEncoder.ts","kind":"import-statement","original":"./useCborStringEncoder"},{"path":"src/encoder/composables/useCborSimpleEncoder.ts","kind":"import-statement","original":"./useCborSimpleEncoder"},{"path":"src/parser/composables/useCborStringTypes.ts","kind":"import-statement","original":"../../parser/composables/useCborStringTypes"}],"format":"esm"},"src/encoder/composables/useCborTagEncoder.ts":{"bytes":4739,"imports":[{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"}],"format":"esm"},"src/encoder/composables/useCborEncoder.ts":{"bytes":6921,"imports":[{"path":"src/encoder/types.ts","kind":"import-statement","original":"../types"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./useCborIntegerEncoder"},{"path":"src/encoder/composables/useCborStringEncoder.ts","kind":"import-statement","original":"./useCborStringEncoder"},{"path":"src/encoder/composables/useCborCollectionEncoder.ts","kind":"import-statement","original":"./useCborCollectionEncoder"},{"path":"src/encoder/composables/useCborSimpleEncoder.ts","kind":"import-statement","original":"./useCborSimpleEncoder"},{"path":"src/encoder/composables/useCborTagEncoder.ts","kind":"import-statement","original":"./useCborTagEncoder"},{"path":"src/parser/composables/useCborStringTypes.ts","kind":"import-statement","original":"../../parser/composables/useCborStringTypes"}],"format":"esm"},"src/index.ts":{"bytes":13166,"imports":[{"path":"src/parser/composables/useCborParser.ts","kind":"import-statement","original":"./parser/composables/useCborParser"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./parser/composables/useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./parser/composables/useCborString"},{"path":"src/parser/composables/useCborCollection.ts","kind":"import-statement","original":"./parser/composables/useCborCollection"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./parser/composables/useCborFloat"},{"path":"src/parser/composables/useCborTag.ts","kind":"import-statement","original":"./parser/composables/useCborTag"},{"path":"src/parser/composables/useCborDiagnostic.ts","kind":"import-statement","original":"./parser/composables/useCborDiagnostic"},{"path":"src/parser/utils/pathBuilder.ts","kind":"import-statement","original":"./parser/utils/pathBuilder"},{"path":"src/encoder/composables/useCborEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborEncoder"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborIntegerEncoder"},{"path":"src/encoder/composables/useCborStringEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborStringEncoder"},{"path":"src/encoder/composables/useCborCollectionEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborCollectionEncoder"},{"path":"src/encoder/composables/useCborSimpleEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborSimpleEncoder"},{"path":"src/parser/types.ts","kind":"import-statement","original":"./parser/types"},{"path":"src/encoder/types.ts","kind":"import-statement","original":"./encoder/types"},{"path":"src/parser/composables/useCborParser.ts","kind":"import-statement","original":"./parser/composables/useCborParser"},{"path":"src/encoder/composables/useCborEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborEncoder"},{"path":"src/parser/composables/useCborDiagnostic.ts","kind":"import-statement","original":"./parser/composables/useCborDiagnostic"}],"format":"esm"},"src/parser/index.ts":{"bytes":1118,"imports":[{"path":"src/parser/composables/useCborParser.ts","kind":"import-statement","original":"./composables/useCborParser"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./composables/useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./composables/useCborString"},{"path":"src/parser/composables/useCborCollection.ts","kind":"import-statement","original":"./composables/useCborCollection"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./composables/useCborFloat"},{"path":"src/parser/composables/useCborTag.ts","kind":"import-statement","original":"./composables/useCborTag"},{"path":"src/parser/types.ts","kind":"import-statement","original":"./types"},{"path":"src/parser/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/encoder/index.ts":{"bytes":871,"imports":[{"path":"src/encoder/composables/useCborEncoder.ts","kind":"import-statement","original":"./composables/useCborEncoder"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./composables/useCborIntegerEncoder"},{"path":"src/encoder/composables/useCborStringEncoder.ts","kind":"import-statement","original":"./composables/useCborStringEncoder"},{"path":"src/encoder/composables/useCborCollectionEncoder.ts","kind":"import-statement","original":"./composables/useCborCollectionEncoder"},{"path":"src/encoder/composables/useCborSimpleEncoder.ts","kind":"import-statement","original":"./composables/useCborSimpleEncoder"},{"path":"src/encoder/composables/useCborTagEncoder.ts","kind":"import-statement","original":"./composables/useCborTagEncoder"},{"path":"src/encoder/types.ts","kind":"import-statement","original":"./types"},{"path":"src/encoder/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":42017},"dist/index.js":{"imports":[{"path":"dist/chunk-5IWW5H47.js","kind":"import-statement"},{"path":"dist/chunk-UMAX5MX5.js","kind":"import-statement"},{"path":"dist/chunk-ZDZ2B5PE.js","kind":"import-statement"}],"exports":["CborAdditionalInfo","CborDecoder","CborEncoder","CborMajorType","CborSimpleValue","CborTag","DEFAULT_ENCODE_OPTIONS","DEFAULT_LIMITS","DEFAULT_OPTIONS","PathBuilder","decode","decodeToDiagnostic","decodeWithSourceMap","encode","encodeSequence","encodeToBytes","encodeToHex","toDiagnostic","useCborCollection","useCborCollectionEncoder","useCborDiagnostic","useCborEncoder","useCborFloat","useCborInteger","useCborIntegerEncoder","useCborParser","useCborSimpleEncoder","useCborString","useCborStringEncoder","useCborTag"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":2718},"src/parser/composables/useCborDiagnostic.ts":{"bytesInOutput":6607},"src/parser/utils/pathBuilder.ts":{"bytesInOutput":6197}},"bytes":16653},"dist/parser/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/parser/index.js":{"imports":[{"path":"dist/chunk-5IWW5H47.js","kind":"import-statement"},{"path":"dist/chunk-ZDZ2B5PE.js","kind":"import-statement"}],"exports":["CborAdditionalInfo","CborMajorType","CborSimpleValue","CborTag","DEFAULT_LIMITS","DEFAULT_OPTIONS","bytesToHex","extractCborHeader","hexToBytes","readBigUint","readByte","readUint","useCborCollection","useCborFloat","useCborInteger","useCborParser","useCborString","useCborTag","validateUtf8Strict"],"entryPoint":"src/parser/index.ts","inputs":{"src/parser/index.ts":{"bytesInOutput":0}},"bytes":727},"dist/chunk-5IWW5H47.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":188974},"dist/chunk-5IWW5H47.js":{"imports":[{"path":"dist/chunk-ZDZ2B5PE.js","kind":"import-statement"}],"exports":["bytesToHex","extractCborHeader","hexToBytes","readBigUint","readByte","readUint","useCborCollection","useCborFloat","useCborInteger","useCborParser","useCborString","useCborTag","validateUtf8Strict"],"inputs":{"src/parser/utils.ts":{"bytesInOutput":8132},"src/parser/composables/useCborInteger.ts":{"bytesInOutput":2109},"src/parser/composables/useCborString.ts":{"bytesInOutput":8888},"src/parser/composables/useCborFloat.ts":{"bytesInOutput":7528},"src/parser/composables/useCborTag.ts":{"bytesInOutput":21099},"src/utils/logger.ts":{"bytesInOutput":1046},"src/parser/composables/useCborCollection.ts":{"bytesInOutput":11651},"src/parser/composables/useCborParser.ts":{"bytesInOutput":29683}},"bytes":90834},"dist/encoder/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/encoder/index.js":{"imports":[{"path":"dist/chunk-UMAX5MX5.js","kind":"import-statement"},{"path":"dist/chunk-ZDZ2B5PE.js","kind":"import-statement"}],"exports":["DEFAULT_ENCODE_OPTIONS","bytesToHex","compareBytes","concatenateUint8Arrays","useCborCollectionEncoder","useCborEncoder","useCborIntegerEncoder","useCborSimpleEncoder","useCborStringEncoder","useCborTagEncoder","writeBigUint","writeUint"],"entryPoint":"src/encoder/index.ts","inputs":{"src/encoder/index.ts":{"bytesInOutput":0}},"bytes":583},"dist/chunk-UMAX5MX5.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":76548},"dist/chunk-UMAX5MX5.js":{"imports":[{"path":"dist/chunk-ZDZ2B5PE.js","kind":"import-statement"}],"exports":["DEFAULT_ENCODE_OPTIONS","bytesToHex","compareBytes","concatenateUint8Arrays","useCborCollectionEncoder","useCborEncoder","useCborIntegerEncoder","useCborSimpleEncoder","useCborStringEncoder","useCborTagEncoder","writeBigUint","writeUint"],"inputs":{"src/encoder/types.ts":{"bytesInOutput":172},"src/encoder/utils.ts":{"bytesInOutput":1180},"src/encoder/composables/useCborIntegerEncoder.ts":{"bytesInOutput":2476},"src/encoder/composables/useCborStringEncoder.ts":{"bytesInOutput":4772},"src/encoder/composables/useCborSimpleEncoder.ts":{"bytesInOutput":5311},"src/encoder/composables/useCborCollectionEncoder.ts":{"bytesInOutput":8709},"src/encoder/composables/useCborTagEncoder.ts":{"bytesInOutput":1602},"src/encoder/composables/useCborEncoder.ts":{"bytesInOutput":3090}},"bytes":28056},"dist/chunk-ZDZ2B5PE.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":16135},"dist/chunk-ZDZ2B5PE.js":{"imports":[],"exports":["ALL_ENTRIES_SYMBOL","CborAdditionalInfo","CborMajorType","CborSimpleValue","CborTag","DEFAULT_LIMITS","DEFAULT_OPTIONS","INDEFINITE_SYMBOL","useCborByteString","useCborTextString"],"inputs":{"src/parser/types.ts":{"bytesInOutput":3619},"src/parser/composables/useCborStringTypes.ts":{"bytesInOutput":1500}},"bytes":5394}}}
|
|
1
|
+
{"inputs":{"src/parser/types.ts":{"bytes":10867,"imports":[],"format":"esm"},"src/parser/utils.ts":{"bytes":13410,"imports":[],"format":"esm"},"src/parser/composables/useCborInteger.ts":{"bytes":3945,"imports":[{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"}],"format":"esm"},"src/parser/composables/useCborStringTypes.ts":{"bytes":3185,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/parser/composables/useCborString.ts":{"bytes":12691,"imports":[{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborStringTypes.ts","kind":"import-statement","original":"./useCborStringTypes"}],"format":"esm"},"src/parser/composables/useCborFloat.ts":{"bytes":11614,"imports":[{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"}],"format":"esm"},"src/parser/composables/useCborTag.ts":{"bytes":28841,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"},{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./useCborString"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./useCborFloat"}],"format":"esm"},"src/utils/logger.ts":{"bytes":1825,"imports":[],"format":"esm"},"src/parser/composables/useCborCollection.ts":{"bytes":18823,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"},{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./useCborString"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./useCborFloat"},{"path":"src/parser/composables/useCborTag.ts","kind":"import-statement","original":"./useCborTag"},{"path":"src/utils/logger.ts","kind":"import-statement","original":"../../utils/logger"}],"format":"esm"},"src/parser/composables/useCborParser.ts":{"bytes":41070,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"},{"path":"src/parser/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./useCborString"},{"path":"src/parser/composables/useCborCollection.ts","kind":"import-statement","original":"./useCborCollection"},{"path":"src/parser/composables/useCborTag.ts","kind":"import-statement","original":"./useCborTag"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./useCborFloat"},{"path":"src/utils/logger.ts","kind":"import-statement","original":"../../utils/logger"}],"format":"esm"},"src/parser/composables/useCborDiagnostic.ts":{"bytes":11046,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/parser/utils/pathBuilder.ts":{"bytes":7967,"imports":[],"format":"esm"},"src/encoder/types.ts":{"bytes":2388,"imports":[{"path":"src/parser/types.ts","kind":"import-statement","original":"../parser/types"}],"format":"esm"},"src/encoder/utils.ts":{"bytes":2730,"imports":[],"format":"esm"},"src/encoder/composables/useCborIntegerEncoder.ts":{"bytes":5693,"imports":[{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"}],"format":"esm"},"src/encoder/composables/useCborStringEncoder.ts":{"bytes":9331,"imports":[{"path":"src/encoder/types.ts","kind":"import-statement","original":"../types"},{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/parser/composables/useCborStringTypes.ts","kind":"import-statement","original":"../../parser/composables/useCborStringTypes"}],"format":"esm"},"src/encoder/composables/useCborSimpleEncoder.ts":{"bytes":9876,"imports":[{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./useCborIntegerEncoder"}],"format":"esm"},"src/encoder/composables/useCborCollectionEncoder.ts":{"bytes":14448,"imports":[{"path":"src/encoder/types.ts","kind":"import-statement","original":"../types"},{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./useCborIntegerEncoder"},{"path":"src/encoder/composables/useCborStringEncoder.ts","kind":"import-statement","original":"./useCborStringEncoder"},{"path":"src/encoder/composables/useCborSimpleEncoder.ts","kind":"import-statement","original":"./useCborSimpleEncoder"},{"path":"src/parser/composables/useCborStringTypes.ts","kind":"import-statement","original":"../../parser/composables/useCborStringTypes"}],"format":"esm"},"src/encoder/composables/useCborTagEncoder.ts":{"bytes":4739,"imports":[{"path":"src/encoder/utils.ts","kind":"import-statement","original":"../utils"}],"format":"esm"},"src/encoder/composables/useCborEncoder.ts":{"bytes":7602,"imports":[{"path":"src/encoder/types.ts","kind":"import-statement","original":"../types"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./useCborIntegerEncoder"},{"path":"src/encoder/composables/useCborStringEncoder.ts","kind":"import-statement","original":"./useCborStringEncoder"},{"path":"src/encoder/composables/useCborCollectionEncoder.ts","kind":"import-statement","original":"./useCborCollectionEncoder"},{"path":"src/encoder/composables/useCborSimpleEncoder.ts","kind":"import-statement","original":"./useCborSimpleEncoder"},{"path":"src/encoder/composables/useCborTagEncoder.ts","kind":"import-statement","original":"./useCborTagEncoder"},{"path":"src/parser/composables/useCborStringTypes.ts","kind":"import-statement","original":"../../parser/composables/useCborStringTypes"}],"format":"esm"},"src/index.ts":{"bytes":13700,"imports":[{"path":"src/parser/composables/useCborParser.ts","kind":"import-statement","original":"./parser/composables/useCborParser"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./parser/composables/useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./parser/composables/useCborString"},{"path":"src/parser/composables/useCborCollection.ts","kind":"import-statement","original":"./parser/composables/useCborCollection"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./parser/composables/useCborFloat"},{"path":"src/parser/composables/useCborTag.ts","kind":"import-statement","original":"./parser/composables/useCborTag"},{"path":"src/parser/composables/useCborDiagnostic.ts","kind":"import-statement","original":"./parser/composables/useCborDiagnostic"},{"path":"src/parser/utils/pathBuilder.ts","kind":"import-statement","original":"./parser/utils/pathBuilder"},{"path":"src/encoder/composables/useCborEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborEncoder"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborIntegerEncoder"},{"path":"src/encoder/composables/useCborStringEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborStringEncoder"},{"path":"src/encoder/composables/useCborCollectionEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborCollectionEncoder"},{"path":"src/encoder/composables/useCborSimpleEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborSimpleEncoder"},{"path":"src/parser/types.ts","kind":"import-statement","original":"./parser/types"},{"path":"src/encoder/types.ts","kind":"import-statement","original":"./encoder/types"},{"path":"src/parser/composables/useCborParser.ts","kind":"import-statement","original":"./parser/composables/useCborParser"},{"path":"src/encoder/composables/useCborEncoder.ts","kind":"import-statement","original":"./encoder/composables/useCborEncoder"},{"path":"src/parser/composables/useCborDiagnostic.ts","kind":"import-statement","original":"./parser/composables/useCborDiagnostic"}],"format":"esm"},"src/parser/index.ts":{"bytes":1118,"imports":[{"path":"src/parser/composables/useCborParser.ts","kind":"import-statement","original":"./composables/useCborParser"},{"path":"src/parser/composables/useCborInteger.ts","kind":"import-statement","original":"./composables/useCborInteger"},{"path":"src/parser/composables/useCborString.ts","kind":"import-statement","original":"./composables/useCborString"},{"path":"src/parser/composables/useCborCollection.ts","kind":"import-statement","original":"./composables/useCborCollection"},{"path":"src/parser/composables/useCborFloat.ts","kind":"import-statement","original":"./composables/useCborFloat"},{"path":"src/parser/composables/useCborTag.ts","kind":"import-statement","original":"./composables/useCborTag"},{"path":"src/parser/types.ts","kind":"import-statement","original":"./types"},{"path":"src/parser/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/encoder/index.ts":{"bytes":871,"imports":[{"path":"src/encoder/composables/useCborEncoder.ts","kind":"import-statement","original":"./composables/useCborEncoder"},{"path":"src/encoder/composables/useCborIntegerEncoder.ts","kind":"import-statement","original":"./composables/useCborIntegerEncoder"},{"path":"src/encoder/composables/useCborStringEncoder.ts","kind":"import-statement","original":"./composables/useCborStringEncoder"},{"path":"src/encoder/composables/useCborCollectionEncoder.ts","kind":"import-statement","original":"./composables/useCborCollectionEncoder"},{"path":"src/encoder/composables/useCborSimpleEncoder.ts","kind":"import-statement","original":"./composables/useCborSimpleEncoder"},{"path":"src/encoder/composables/useCborTagEncoder.ts","kind":"import-statement","original":"./composables/useCborTagEncoder"},{"path":"src/encoder/types.ts","kind":"import-statement","original":"./types"},{"path":"src/encoder/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":44518},"dist/index.js":{"imports":[{"path":"dist/chunk-LWNWC2O7.js","kind":"import-statement"},{"path":"dist/chunk-EDXZTSIA.js","kind":"import-statement"},{"path":"dist/chunk-JESIF5IF.js","kind":"import-statement"}],"exports":["CborAdditionalInfo","CborDecoder","CborEncoder","CborMajorType","CborSimpleValue","CborTag","DEFAULT_ENCODE_OPTIONS","DEFAULT_LIMITS","DEFAULT_OPTIONS","PathBuilder","decode","decodeToDiagnostic","decodeWithSourceMap","encode","encodeSequence","encodeToBytes","encodeToHex","toDiagnostic","useCborCollection","useCborCollectionEncoder","useCborDiagnostic","useCborEncoder","useCborFloat","useCborInteger","useCborIntegerEncoder","useCborParser","useCborSimpleEncoder","useCborString","useCborStringEncoder","useCborTag"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":2718},"src/parser/composables/useCborDiagnostic.ts":{"bytesInOutput":7493},"src/parser/utils/pathBuilder.ts":{"bytesInOutput":6197}},"bytes":17560},"dist/parser/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/parser/index.js":{"imports":[{"path":"dist/chunk-LWNWC2O7.js","kind":"import-statement"},{"path":"dist/chunk-JESIF5IF.js","kind":"import-statement"}],"exports":["CborAdditionalInfo","CborMajorType","CborSimpleValue","CborTag","DEFAULT_LIMITS","DEFAULT_OPTIONS","bytesToHex","extractCborHeader","hexToBytes","readBigUint","readByte","readUint","useCborCollection","useCborFloat","useCborInteger","useCborParser","useCborString","useCborTag","validateUtf8Strict"],"entryPoint":"src/parser/index.ts","inputs":{"src/parser/index.ts":{"bytesInOutput":0}},"bytes":727},"dist/chunk-LWNWC2O7.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":194611},"dist/chunk-LWNWC2O7.js":{"imports":[{"path":"dist/chunk-JESIF5IF.js","kind":"import-statement"}],"exports":["bytesToHex","extractCborHeader","hexToBytes","readBigUint","readByte","readUint","useCborCollection","useCborFloat","useCborInteger","useCborParser","useCborString","useCborTag","validateUtf8Strict"],"inputs":{"src/parser/utils.ts":{"bytesInOutput":8809},"src/parser/composables/useCborInteger.ts":{"bytesInOutput":2109},"src/parser/composables/useCborString.ts":{"bytesInOutput":8888},"src/parser/composables/useCborFloat.ts":{"bytesInOutput":7528},"src/parser/composables/useCborTag.ts":{"bytesInOutput":21202},"src/utils/logger.ts":{"bytesInOutput":1046},"src/parser/composables/useCborCollection.ts":{"bytesInOutput":11740},"src/parser/composables/useCborParser.ts":{"bytesInOutput":31018}},"bytes":93038},"dist/encoder/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/encoder/index.js":{"imports":[{"path":"dist/chunk-EDXZTSIA.js","kind":"import-statement"},{"path":"dist/chunk-JESIF5IF.js","kind":"import-statement"}],"exports":["DEFAULT_ENCODE_OPTIONS","bytesToHex","compareBytes","concatenateUint8Arrays","useCborCollectionEncoder","useCborEncoder","useCborIntegerEncoder","useCborSimpleEncoder","useCborStringEncoder","useCborTagEncoder","writeBigUint","writeUint"],"entryPoint":"src/encoder/index.ts","inputs":{"src/encoder/index.ts":{"bytesInOutput":0}},"bytes":583},"dist/chunk-EDXZTSIA.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":79669},"dist/chunk-EDXZTSIA.js":{"imports":[{"path":"dist/chunk-JESIF5IF.js","kind":"import-statement"}],"exports":["DEFAULT_ENCODE_OPTIONS","bytesToHex","compareBytes","concatenateUint8Arrays","useCborCollectionEncoder","useCborEncoder","useCborIntegerEncoder","useCborSimpleEncoder","useCborStringEncoder","useCborTagEncoder","writeBigUint","writeUint"],"inputs":{"src/encoder/types.ts":{"bytesInOutput":203},"src/encoder/utils.ts":{"bytesInOutput":1590},"src/encoder/composables/useCborIntegerEncoder.ts":{"bytesInOutput":2476},"src/encoder/composables/useCborStringEncoder.ts":{"bytesInOutput":4772},"src/encoder/composables/useCborSimpleEncoder.ts":{"bytesInOutput":5317},"src/encoder/composables/useCborCollectionEncoder.ts":{"bytesInOutput":8787},"src/encoder/composables/useCborTagEncoder.ts":{"bytesInOutput":1602},"src/encoder/composables/useCborEncoder.ts":{"bytesInOutput":3397}},"bytes":28888},"dist/chunk-JESIF5IF.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":17674},"dist/chunk-JESIF5IF.js":{"imports":[],"exports":["ALL_ENTRIES_SYMBOL","CborAdditionalInfo","CborMajorType","CborSimpleValue","CborTag","DEFAULT_LIMITS","DEFAULT_OPTIONS","INDEFINITE_SYMBOL","useCborByteString","useCborTextString"],"inputs":{"src/parser/types.ts":{"bytesInOutput":3839},"src/parser/composables/useCborStringTypes.ts":{"bytesInOutput":1500}},"bytes":5614}}}
|
package/dist/parser/index.cjs
CHANGED
|
@@ -1,85 +1,85 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunk3Z45RBZP_cjs = require('../chunk-3Z45RBZP.cjs');
|
|
4
|
+
var chunkP6A2OOIY_cjs = require('../chunk-P6A2OOIY.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "bytesToHex", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunk3Z45RBZP_cjs.bytesToHex; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "extractCborHeader", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunk3Z45RBZP_cjs.extractCborHeader; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "hexToBytes", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunk3Z45RBZP_cjs.hexToBytes; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "readBigUint", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunk3Z45RBZP_cjs.readBigUint; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "readByte", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunk3Z45RBZP_cjs.readByte; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "readUint", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunk3Z45RBZP_cjs.readUint; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "useCborCollection", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunk3Z45RBZP_cjs.useCborCollection; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "useCborFloat", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunk3Z45RBZP_cjs.useCborFloat; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "useCborInteger", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunk3Z45RBZP_cjs.useCborInteger; }
|
|
43
43
|
});
|
|
44
44
|
Object.defineProperty(exports, "useCborParser", {
|
|
45
45
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
46
|
+
get: function () { return chunk3Z45RBZP_cjs.useCborParser; }
|
|
47
47
|
});
|
|
48
48
|
Object.defineProperty(exports, "useCborString", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunk3Z45RBZP_cjs.useCborString; }
|
|
51
51
|
});
|
|
52
52
|
Object.defineProperty(exports, "useCborTag", {
|
|
53
53
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
54
|
+
get: function () { return chunk3Z45RBZP_cjs.useCborTag; }
|
|
55
55
|
});
|
|
56
56
|
Object.defineProperty(exports, "validateUtf8Strict", {
|
|
57
57
|
enumerable: true,
|
|
58
|
-
get: function () { return
|
|
58
|
+
get: function () { return chunk3Z45RBZP_cjs.validateUtf8Strict; }
|
|
59
59
|
});
|
|
60
60
|
Object.defineProperty(exports, "CborAdditionalInfo", {
|
|
61
61
|
enumerable: true,
|
|
62
|
-
get: function () { return
|
|
62
|
+
get: function () { return chunkP6A2OOIY_cjs.CborAdditionalInfo; }
|
|
63
63
|
});
|
|
64
64
|
Object.defineProperty(exports, "CborMajorType", {
|
|
65
65
|
enumerable: true,
|
|
66
|
-
get: function () { return
|
|
66
|
+
get: function () { return chunkP6A2OOIY_cjs.CborMajorType; }
|
|
67
67
|
});
|
|
68
68
|
Object.defineProperty(exports, "CborSimpleValue", {
|
|
69
69
|
enumerable: true,
|
|
70
|
-
get: function () { return
|
|
70
|
+
get: function () { return chunkP6A2OOIY_cjs.CborSimpleValue; }
|
|
71
71
|
});
|
|
72
72
|
Object.defineProperty(exports, "CborTag", {
|
|
73
73
|
enumerable: true,
|
|
74
|
-
get: function () { return
|
|
74
|
+
get: function () { return chunkP6A2OOIY_cjs.CborTag; }
|
|
75
75
|
});
|
|
76
76
|
Object.defineProperty(exports, "DEFAULT_LIMITS", {
|
|
77
77
|
enumerable: true,
|
|
78
|
-
get: function () { return
|
|
78
|
+
get: function () { return chunkP6A2OOIY_cjs.DEFAULT_LIMITS; }
|
|
79
79
|
});
|
|
80
80
|
Object.defineProperty(exports, "DEFAULT_OPTIONS", {
|
|
81
81
|
enumerable: true,
|
|
82
|
-
get: function () { return
|
|
82
|
+
get: function () { return chunkP6A2OOIY_cjs.DEFAULT_OPTIONS; }
|
|
83
83
|
});
|
|
84
84
|
//# sourceMappingURL=index.cjs.map
|
|
85
85
|
//# sourceMappingURL=index.cjs.map
|
package/dist/parser/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from '../useCborTag-
|
|
2
|
-
export { o as CborAdditionalInfo, C as CborContext, n as CborMajorType, f as CborMap, p as CborSimpleValue, q as CborTag, e as CborValue, m as DEFAULT_LIMITS, D as DEFAULT_OPTIONS, r as DupMapKeyMode, c as ParseError, P as ParseOptions, a as ParseResult, b as ParseResultWithMap, d as ParserLimits, l as PlutusBytes, h as PlutusConstr, g as PlutusData, k as PlutusInt, j as PlutusList, i as PlutusMap, R as Result, S as SourceMapEntry, T as TaggedValue } from '../types-
|
|
1
|
+
export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from '../useCborTag-D4d7xG3-.cjs';
|
|
2
|
+
export { o as CborAdditionalInfo, C as CborContext, n as CborMajorType, f as CborMap, p as CborSimpleValue, q as CborTag, e as CborValue, m as DEFAULT_LIMITS, D as DEFAULT_OPTIONS, r as DupMapKeyMode, c as ParseError, P as ParseOptions, a as ParseResult, b as ParseResultWithMap, d as ParserLimits, l as PlutusBytes, h as PlutusConstr, g as PlutusData, k as PlutusInt, j as PlutusList, i as PlutusMap, R as Result, S as SourceMapEntry, T as TaggedValue } from '../types-eG2qalpr.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Common utility functions for CBOR parsing
|
package/dist/parser/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from '../useCborTag-
|
|
2
|
-
export { o as CborAdditionalInfo, C as CborContext, n as CborMajorType, f as CborMap, p as CborSimpleValue, q as CborTag, e as CborValue, m as DEFAULT_LIMITS, D as DEFAULT_OPTIONS, r as DupMapKeyMode, c as ParseError, P as ParseOptions, a as ParseResult, b as ParseResultWithMap, d as ParserLimits, l as PlutusBytes, h as PlutusConstr, g as PlutusData, k as PlutusInt, j as PlutusList, i as PlutusMap, R as Result, S as SourceMapEntry, T as TaggedValue } from '../types-
|
|
1
|
+
export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from '../useCborTag-TYst1KR6.js';
|
|
2
|
+
export { o as CborAdditionalInfo, C as CborContext, n as CborMajorType, f as CborMap, p as CborSimpleValue, q as CborTag, e as CborValue, m as DEFAULT_LIMITS, D as DEFAULT_OPTIONS, r as DupMapKeyMode, c as ParseError, P as ParseOptions, a as ParseResult, b as ParseResultWithMap, d as ParserLimits, l as PlutusBytes, h as PlutusConstr, g as PlutusData, k as PlutusInt, j as PlutusList, i as PlutusMap, R as Result, S as SourceMapEntry, T as TaggedValue } from '../types-eG2qalpr.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Common utility functions for CBOR parsing
|
package/dist/parser/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { bytesToHex, extractCborHeader, hexToBytes, readBigUint, readByte, readUint, useCborCollection, useCborFloat, useCborInteger, useCborParser, useCborString, useCborTag, validateUtf8Strict } from '../chunk-
|
|
2
|
-
export { CborAdditionalInfo, CborMajorType, CborSimpleValue, CborTag, DEFAULT_LIMITS, DEFAULT_OPTIONS } from '../chunk-
|
|
1
|
+
export { bytesToHex, extractCborHeader, hexToBytes, readBigUint, readByte, readUint, useCborCollection, useCborFloat, useCborInteger, useCborParser, useCborString, useCborTag, validateUtf8Strict } from '../chunk-LWNWC2O7.js';
|
|
2
|
+
export { CborAdditionalInfo, CborMajorType, CborSimpleValue, CborTag, DEFAULT_LIMITS, DEFAULT_OPTIONS } from '../chunk-JESIF5IF.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -30,6 +30,19 @@ interface ParserLimits {
|
|
|
30
30
|
* Following RFC 8949 Section 5.6 guidance
|
|
31
31
|
*/
|
|
32
32
|
type DupMapKeyMode = 'allow' | 'warn' | 'reject';
|
|
33
|
+
/**
|
|
34
|
+
* Map key ordering for canonical/deterministic encoding and validation.
|
|
35
|
+
*
|
|
36
|
+
* - 'length-first': RFC 7049 Section 3.9 "Old Canonical CBOR" — shorter encoded
|
|
37
|
+
* keys sort first, ties broken bytewise. This is what Cardano CIP-21 mandates
|
|
38
|
+
* for transaction serialization, and is the default in this library.
|
|
39
|
+
* - 'bytewise': RFC 8949 Section 4.2.1 "Core Deterministic Encoding" — pure
|
|
40
|
+
* bytewise lexicographic order of the encoded keys (the modern generic default).
|
|
41
|
+
*
|
|
42
|
+
* @see https://cips.cardano.org/cip/CIP-21
|
|
43
|
+
* @see https://www.rfc-editor.org/rfc/rfc8949.html#section-4.2.1
|
|
44
|
+
*/
|
|
45
|
+
type MapKeyOrder = 'length-first' | 'bytewise';
|
|
33
46
|
/**
|
|
34
47
|
* Parser options for controlling behavior
|
|
35
48
|
*/
|
|
@@ -55,6 +68,19 @@ interface ParseOptions {
|
|
|
55
68
|
validateTagSemantics?: boolean;
|
|
56
69
|
/** Validate Plutus constructor semantics (Tags 102, 121-127, 1280-1400) */
|
|
57
70
|
validatePlutusSemantics?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Map key ordering enforced when validateCanonical is set.
|
|
73
|
+
* Defaults to 'length-first' (Cardano CIP-21 / RFC 7049 Section 3.9).
|
|
74
|
+
* Use 'bytewise' for RFC 8949 Section 4.2.1 core deterministic order.
|
|
75
|
+
*/
|
|
76
|
+
mapKeyOrder?: MapKeyOrder;
|
|
77
|
+
/**
|
|
78
|
+
* Reject trailing bytes after the top-level data item (well-formedness).
|
|
79
|
+
* Defaults to true for backward compatibility (decode returns bytesRead so
|
|
80
|
+
* callers can detect leftover data); automatically false-tightened, i.e. set
|
|
81
|
+
* to reject, in strict mode. Set explicitly to override.
|
|
82
|
+
*/
|
|
83
|
+
allowTrailingData?: boolean;
|
|
58
84
|
/** Resource limits */
|
|
59
85
|
limits?: ParserLimits;
|
|
60
86
|
}
|
|
@@ -298,4 +324,4 @@ type Result<T, E> = {
|
|
|
298
324
|
error: E;
|
|
299
325
|
};
|
|
300
326
|
|
|
301
|
-
export { type CborContext as C, DEFAULT_OPTIONS as D, type ParseOptions as P, type Result as R, type SourceMapEntry as S, type TaggedValue as T, type ParseResult as a, type ParseResultWithMap as b, type ParseError as c, type ParserLimits as d, type CborValue as e, type CborMap as f, type PlutusData as g, type PlutusConstr as h, type PlutusMap as i, type PlutusList as j, type PlutusInt as k, type PlutusBytes as l, DEFAULT_LIMITS as m, CborMajorType as n, CborAdditionalInfo as o, CborSimpleValue as p, CborTag as q, type DupMapKeyMode as r, type CborByteString as s, type CborTextString as t };
|
|
327
|
+
export { type CborContext as C, DEFAULT_OPTIONS as D, type MapKeyOrder as M, type ParseOptions as P, type Result as R, type SourceMapEntry as S, type TaggedValue as T, type ParseResult as a, type ParseResultWithMap as b, type ParseError as c, type ParserLimits as d, type CborValue as e, type CborMap as f, type PlutusData as g, type PlutusConstr as h, type PlutusMap as i, type PlutusList as j, type PlutusInt as k, type PlutusBytes as l, DEFAULT_LIMITS as m, CborMajorType as n, CborAdditionalInfo as o, CborSimpleValue as p, CborTag as q, type DupMapKeyMode as r, type CborByteString as s, type CborTextString as t };
|
|
@@ -30,6 +30,19 @@ interface ParserLimits {
|
|
|
30
30
|
* Following RFC 8949 Section 5.6 guidance
|
|
31
31
|
*/
|
|
32
32
|
type DupMapKeyMode = 'allow' | 'warn' | 'reject';
|
|
33
|
+
/**
|
|
34
|
+
* Map key ordering for canonical/deterministic encoding and validation.
|
|
35
|
+
*
|
|
36
|
+
* - 'length-first': RFC 7049 Section 3.9 "Old Canonical CBOR" — shorter encoded
|
|
37
|
+
* keys sort first, ties broken bytewise. This is what Cardano CIP-21 mandates
|
|
38
|
+
* for transaction serialization, and is the default in this library.
|
|
39
|
+
* - 'bytewise': RFC 8949 Section 4.2.1 "Core Deterministic Encoding" — pure
|
|
40
|
+
* bytewise lexicographic order of the encoded keys (the modern generic default).
|
|
41
|
+
*
|
|
42
|
+
* @see https://cips.cardano.org/cip/CIP-21
|
|
43
|
+
* @see https://www.rfc-editor.org/rfc/rfc8949.html#section-4.2.1
|
|
44
|
+
*/
|
|
45
|
+
type MapKeyOrder = 'length-first' | 'bytewise';
|
|
33
46
|
/**
|
|
34
47
|
* Parser options for controlling behavior
|
|
35
48
|
*/
|
|
@@ -55,6 +68,19 @@ interface ParseOptions {
|
|
|
55
68
|
validateTagSemantics?: boolean;
|
|
56
69
|
/** Validate Plutus constructor semantics (Tags 102, 121-127, 1280-1400) */
|
|
57
70
|
validatePlutusSemantics?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Map key ordering enforced when validateCanonical is set.
|
|
73
|
+
* Defaults to 'length-first' (Cardano CIP-21 / RFC 7049 Section 3.9).
|
|
74
|
+
* Use 'bytewise' for RFC 8949 Section 4.2.1 core deterministic order.
|
|
75
|
+
*/
|
|
76
|
+
mapKeyOrder?: MapKeyOrder;
|
|
77
|
+
/**
|
|
78
|
+
* Reject trailing bytes after the top-level data item (well-formedness).
|
|
79
|
+
* Defaults to true for backward compatibility (decode returns bytesRead so
|
|
80
|
+
* callers can detect leftover data); automatically false-tightened, i.e. set
|
|
81
|
+
* to reject, in strict mode. Set explicitly to override.
|
|
82
|
+
*/
|
|
83
|
+
allowTrailingData?: boolean;
|
|
58
84
|
/** Resource limits */
|
|
59
85
|
limits?: ParserLimits;
|
|
60
86
|
}
|
|
@@ -298,4 +324,4 @@ type Result<T, E> = {
|
|
|
298
324
|
error: E;
|
|
299
325
|
};
|
|
300
326
|
|
|
301
|
-
export { type CborContext as C, DEFAULT_OPTIONS as D, type ParseOptions as P, type Result as R, type SourceMapEntry as S, type TaggedValue as T, type ParseResult as a, type ParseResultWithMap as b, type ParseError as c, type ParserLimits as d, type CborValue as e, type CborMap as f, type PlutusData as g, type PlutusConstr as h, type PlutusMap as i, type PlutusList as j, type PlutusInt as k, type PlutusBytes as l, DEFAULT_LIMITS as m, CborMajorType as n, CborAdditionalInfo as o, CborSimpleValue as p, CborTag as q, type DupMapKeyMode as r, type CborByteString as s, type CborTextString as t };
|
|
327
|
+
export { type CborContext as C, DEFAULT_OPTIONS as D, type MapKeyOrder as M, type ParseOptions as P, type Result as R, type SourceMapEntry as S, type TaggedValue as T, type ParseResult as a, type ParseResultWithMap as b, type ParseError as c, type ParserLimits as d, type CborValue as e, type CborMap as f, type PlutusData as g, type PlutusConstr as h, type PlutusMap as i, type PlutusList as j, type PlutusInt as k, type PlutusBytes as l, DEFAULT_LIMITS as m, CborMajorType as n, CborAdditionalInfo as o, CborSimpleValue as p, CborTag as q, type DupMapKeyMode as r, type CborByteString as s, type CborTextString as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h as PlutusConstr, s as CborByteString, t as CborTextString } from './types-
|
|
1
|
+
import { h as PlutusConstr, M as MapKeyOrder, s as CborByteString, t as CborTextString } from './types-eG2qalpr.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* CBOR Encoder Type Definitions
|
|
@@ -15,6 +15,12 @@ interface EncodeOptions {
|
|
|
15
15
|
allowIndefinite?: boolean;
|
|
16
16
|
/** Reject duplicate map keys */
|
|
17
17
|
rejectDuplicateKeys?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Map key ordering used in canonical mode.
|
|
20
|
+
* Defaults to 'length-first' (Cardano CIP-21 / RFC 7049 §3.9).
|
|
21
|
+
* Use 'bytewise' for RFC 8949 §4.2.1 core deterministic order.
|
|
22
|
+
*/
|
|
23
|
+
mapKeyOrder?: MapKeyOrder;
|
|
18
24
|
/** Maximum nesting depth */
|
|
19
25
|
maxDepth?: number;
|
|
20
26
|
/** Maximum output size in bytes */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h as PlutusConstr, s as CborByteString, t as CborTextString } from './types-
|
|
1
|
+
import { h as PlutusConstr, M as MapKeyOrder, s as CborByteString, t as CborTextString } from './types-eG2qalpr.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* CBOR Encoder Type Definitions
|
|
@@ -15,6 +15,12 @@ interface EncodeOptions {
|
|
|
15
15
|
allowIndefinite?: boolean;
|
|
16
16
|
/** Reject duplicate map keys */
|
|
17
17
|
rejectDuplicateKeys?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Map key ordering used in canonical mode.
|
|
20
|
+
* Defaults to 'length-first' (Cardano CIP-21 / RFC 7049 §3.9).
|
|
21
|
+
* Use 'bytewise' for RFC 8949 §4.2.1 core deterministic order.
|
|
22
|
+
*/
|
|
23
|
+
mapKeyOrder?: MapKeyOrder;
|
|
18
24
|
/** Maximum nesting depth */
|
|
19
25
|
maxDepth?: number;
|
|
20
26
|
/** Maximum output size in bytes */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as ParseOptions, a as ParseResult, b as ParseResultWithMap, e as CborValue, S as SourceMapEntry, h as PlutusConstr } from './types-
|
|
1
|
+
import { P as ParseOptions, a as ParseResult, b as ParseResultWithMap, e as CborValue, S as SourceMapEntry, h as PlutusConstr } from './types-eG2qalpr.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* CBOR Main Parser Composable
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as ParseOptions, a as ParseResult, b as ParseResultWithMap, e as CborValue, S as SourceMapEntry, h as PlutusConstr } from './types-
|
|
1
|
+
import { P as ParseOptions, a as ParseResult, b as ParseResultWithMap, e as CborValue, S as SourceMapEntry, h as PlutusConstr } from './types-eG2qalpr.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* CBOR Main Parser Composable
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marcuspuchalla/nachos",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "NACHOS - Not Another CBOR Handling Object System. RFC 8949 CBOR encoder/decoder with full source map support for interactive debugging. Zero dependencies, TypeScript, works in Node.js and browsers.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nachos",
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Remediation Regression Tests
|
|
3
|
+
*
|
|
4
|
+
* Locks in the fixes from the June 2026 RFC 8949 conformance/security audit.
|
|
5
|
+
* Each test maps to a finding ID (H1, H2, M1-M5, L1, L3, L5).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { describe, it, expect } from 'vitest'
|
|
9
|
+
import { decode, decodeWithSourceMap, encode, encodeToHex, toDiagnostic } from '../index'
|
|
10
|
+
|
|
11
|
+
describe('Audit fixes', () => {
|
|
12
|
+
describe('H1 — source-map parse path enforces tag-depth limit', () => {
|
|
13
|
+
const deepTag = 'c2'.repeat(60000) + '00'
|
|
14
|
+
|
|
15
|
+
it('decode() rejects deeply nested tags cleanly', () => {
|
|
16
|
+
expect(() => decode(deepTag, { limits: { maxTagDepth: 100 } }))
|
|
17
|
+
.toThrow(/Tag nesting depth/)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('decodeWithSourceMap() rejects deeply nested tags cleanly (no stack overflow)', () => {
|
|
21
|
+
let err: Error | null = null
|
|
22
|
+
try { decodeWithSourceMap(deepTag, { limits: { maxTagDepth: 100 } }) }
|
|
23
|
+
catch (e) { err = e as Error }
|
|
24
|
+
expect(err).not.toBeNull()
|
|
25
|
+
expect(err!.constructor.name).toBe('Error') // NOT RangeError
|
|
26
|
+
expect(err!.message).toMatch(/Tag nesting depth/)
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('still decodes legitimately nested tags', () => {
|
|
30
|
+
const r = decode('c1c0' + '60', { limits: { maxTagDepth: 100 } }) // tag1(tag0(""))
|
|
31
|
+
expect((r.value as any).tag).toBe(1)
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
describe('H2 — map key ordering (CIP-21 length-first default, bytewise option)', () => {
|
|
36
|
+
// key "aa" -> 62 61 61 (len 3); key 1000000 -> 1a 00 0f 42 40 (len 5)
|
|
37
|
+
const m = new Map<any, any>([['aa', 1], [1000000, 2]])
|
|
38
|
+
|
|
39
|
+
it('canonical default is length-first (Cardano CIP-21)', () => {
|
|
40
|
+
expect(encodeToHex(m, { canonical: true })).toBe('a2' + '626161' + '01' + '1a000f4240' + '02')
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('mapKeyOrder:bytewise yields RFC 8949 §4.2.1 order', () => {
|
|
44
|
+
expect(encodeToHex(m, { canonical: true, mapKeyOrder: 'bytewise' }))
|
|
45
|
+
.toBe('a2' + '1a000f4240' + '02' + '626161' + '01')
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
const lenFirst = 'a2' + '626161' + '01' + '1a000f4240' + '02'
|
|
49
|
+
const byteWise = 'a2' + '1a000f4240' + '02' + '626161' + '01'
|
|
50
|
+
|
|
51
|
+
it('decoder (default) accepts length-first order', () => {
|
|
52
|
+
expect(() => decode(lenFirst, { validateCanonical: true })).not.toThrow()
|
|
53
|
+
})
|
|
54
|
+
it('decoder (bytewise) accepts bytewise order', () => {
|
|
55
|
+
expect(() => decode(byteWise, { validateCanonical: true, mapKeyOrder: 'bytewise' })).not.toThrow()
|
|
56
|
+
})
|
|
57
|
+
it('decoder (bytewise) rejects length-first order', () => {
|
|
58
|
+
expect(() => decode(lenFirst, { validateCanonical: true, mapKeyOrder: 'bytewise' }))
|
|
59
|
+
.toThrow(/not in canonical order/)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it('encoder output round-trips through its own canonical decoder (both orders)', () => {
|
|
63
|
+
const lf = encodeToHex(m, { canonical: true })
|
|
64
|
+
const bw = encodeToHex(m, { canonical: true, mapKeyOrder: 'bytewise' })
|
|
65
|
+
expect(() => decode(lf, { validateCanonical: true })).not.toThrow()
|
|
66
|
+
expect(() => decode(bw, { validateCanonical: true, mapKeyOrder: 'bytewise' })).not.toThrow()
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
describe('M1 — trailing data well-formedness', () => {
|
|
71
|
+
it('default lenient: reports bytesRead and ignores trailing', () => {
|
|
72
|
+
expect(decode('000102').bytesRead).toBe(1)
|
|
73
|
+
})
|
|
74
|
+
it('allowTrailingData:false rejects trailing bytes', () => {
|
|
75
|
+
expect(() => decode('000102', { allowTrailingData: false })).toThrow(/Trailing data/)
|
|
76
|
+
})
|
|
77
|
+
it('strict mode rejects trailing bytes', () => {
|
|
78
|
+
expect(() => decode('000102', { strict: true })).toThrow(/Trailing data/)
|
|
79
|
+
})
|
|
80
|
+
it('strict mode accepts an exact single item', () => {
|
|
81
|
+
expect(decode('00', { strict: true }).value).toBe(0)
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
describe('M2 — encoder maxDepth enforced across tag boundary', () => {
|
|
86
|
+
it('rejects deeply nested tagged values', () => {
|
|
87
|
+
let v: any = 0
|
|
88
|
+
for (let i = 0; i < 300; i++) v = { tag: 6, value: v }
|
|
89
|
+
expect(() => encode(v)).toThrow(/Maximum nesting depth/)
|
|
90
|
+
})
|
|
91
|
+
it('allows shallow nested tagged values', () => {
|
|
92
|
+
let v: any = 0
|
|
93
|
+
for (let i = 0; i < 10; i++) v = { tag: 6, value: v }
|
|
94
|
+
expect(() => encode(v)).not.toThrow()
|
|
95
|
+
})
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
describe('M4 — canonical mode enforces shortest-form tag numbers', () => {
|
|
99
|
+
it('rejects non-shortest tag number (d80100)', () => {
|
|
100
|
+
expect(() => decode('d80100', { validateCanonical: true }))
|
|
101
|
+
.toThrow(/Non-canonical/)
|
|
102
|
+
})
|
|
103
|
+
it('accepts shortest tag number (c100)', () => {
|
|
104
|
+
expect(() => decode('c100', { validateCanonical: true })).not.toThrow()
|
|
105
|
+
})
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
describe('M5 — float16 subnormals encode to shortest form and stay self-canonical', () => {
|
|
109
|
+
it('encode(2^-24) uses float16, not float32', () => {
|
|
110
|
+
expect(encodeToHex(5.960464477539063e-8)).toMatch(/^f9/)
|
|
111
|
+
})
|
|
112
|
+
it('encoder float output passes its own canonical validation', () => {
|
|
113
|
+
for (const v of [1.5, 65504, 5.960464477539063e-8, 0.1]) {
|
|
114
|
+
const h = encodeToHex(v)
|
|
115
|
+
expect(() => decode(h, { validateCanonical: true }), `value ${v} -> ${h}`).not.toThrow()
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
describe('L3 — readUint refuses values above MAX_SAFE_INTEGER (via decode)', () => {
|
|
121
|
+
it('8-byte integer above 2^53 decodes as BigInt without loss', () => {
|
|
122
|
+
// 0x1b + 0102030405060708 -> tag-free uint, larger than MAX_SAFE_INTEGER
|
|
123
|
+
const r = decode('1b0102030405060708')
|
|
124
|
+
expect(typeof r.value).toBe('bigint')
|
|
125
|
+
expect(r.value).toBe(0x0102030405060708n)
|
|
126
|
+
})
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
describe('L5 — diagnostic notation', () => {
|
|
130
|
+
it('renders indefinite-length arrays', () => {
|
|
131
|
+
expect(toDiagnostic(decode('9f0102ff').value)).toBe('[_ 1, 2]')
|
|
132
|
+
})
|
|
133
|
+
it('renders unassigned simple values', () => {
|
|
134
|
+
expect(toDiagnostic(decode('f820').value)).toBe('simple(32)')
|
|
135
|
+
})
|
|
136
|
+
it('renders indefinite-length text strings', () => {
|
|
137
|
+
const v = decode('7f626162ff').value // (_ "ab") from chunks "ab"
|
|
138
|
+
expect(toDiagnostic(v)).toContain('_')
|
|
139
|
+
})
|
|
140
|
+
})
|
|
141
|
+
})
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import type { EncodeResult, EncodeOptions, EncodeContext, EncodableValue } from '../types'
|
|
8
8
|
import { DEFAULT_ENCODE_OPTIONS, INDEFINITE_SYMBOL, ALL_ENTRIES_SYMBOL } from '../types'
|
|
9
|
-
import { bytesToHex, concatenateUint8Arrays,
|
|
9
|
+
import { bytesToHex, concatenateUint8Arrays, compareMapKeys } from '../utils'
|
|
10
10
|
import { useCborIntegerEncoder } from './useCborIntegerEncoder'
|
|
11
11
|
import { useCborStringEncoder } from './useCborStringEncoder'
|
|
12
12
|
import { useCborSimpleEncoder } from './useCborSimpleEncoder'
|
|
@@ -329,7 +329,8 @@ export function useCborCollectionEncoder(globalOptions?: Partial<EncodeOptions>)
|
|
|
329
329
|
encodedKey: encodeValue(entry[0], childCtx),
|
|
330
330
|
entry
|
|
331
331
|
}))
|
|
332
|
-
|
|
332
|
+
const keyOrder = ctx.options.mapKeyOrder ?? 'length-first'
|
|
333
|
+
withEncodedKeys.sort((a, b) => compareMapKeys(a.encodedKey, b.encodedKey, keyOrder))
|
|
333
334
|
entries = withEncodedKeys.map(t => t.entry)
|
|
334
335
|
preEncodedKeys = withEncodedKeys.map(t => t.encodedKey)
|
|
335
336
|
}
|
|
@@ -89,10 +89,29 @@ export function useCborEncoder(globalOptions?: Partial<EncodeOptions>) {
|
|
|
89
89
|
return result
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
// Recursion depth tracked across ALL value types — including the tag boundary.
|
|
93
|
+
// Tagged values re-enter through this same encode()/encodeValue() pair, so
|
|
94
|
+
// counting here (rather than only inside the collection encoder) prevents a
|
|
95
|
+
// deeply nested {tag,value} chain from silently bypassing maxDepth and
|
|
96
|
+
// overflowing the call stack.
|
|
97
|
+
let currentDepth = 0
|
|
98
|
+
|
|
92
99
|
/**
|
|
93
100
|
* Encode any JavaScript value to CBOR (internal, no size check)
|
|
94
101
|
*/
|
|
95
102
|
const encodeValue = (value: EncodableValue): EncodeResult => {
|
|
103
|
+
if (currentDepth > options.maxDepth) {
|
|
104
|
+
throw new Error(`Maximum nesting depth ${options.maxDepth} exceeded`)
|
|
105
|
+
}
|
|
106
|
+
currentDepth++
|
|
107
|
+
try {
|
|
108
|
+
return encodeValueInner(value)
|
|
109
|
+
} finally {
|
|
110
|
+
currentDepth--
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const encodeValueInner = (value: EncodableValue): EncodeResult => {
|
|
96
115
|
// Handle null/undefined/boolean
|
|
97
116
|
if (value === null || value === undefined || typeof value === 'boolean') {
|
|
98
117
|
return encodeSimple(value)
|
|
@@ -186,9 +186,13 @@ export function useCborSimpleEncoder(_globalOptions?: Partial<EncodeOptions>) {
|
|
|
186
186
|
return true
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
// Check range
|
|
189
|
+
// Check range. The lower bound is the smallest positive float16 SUBNORMAL
|
|
190
|
+
// (2^-24 ≈ 5.96e-8), NOT the smallest normal (2^-14). Using 2^-14 here
|
|
191
|
+
// previously made the encoder emit float32 for representable subnormals,
|
|
192
|
+
// producing output its own canonical decoder (fitsInFloat16) then rejected.
|
|
193
|
+
// The round-trip equality check below is the real precision gate.
|
|
190
194
|
const absValue = Math.abs(value)
|
|
191
|
-
if (absValue <
|
|
195
|
+
if (absValue < 5.960464477539063e-8 || absValue > 65504) {
|
|
192
196
|
return false
|
|
193
197
|
}
|
|
194
198
|
|