@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.
Files changed (56) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/{chunk-RVG2BY32.cjs → chunk-3Z45RBZP.cjs} +96 -42
  3. package/dist/chunk-3Z45RBZP.cjs.map +1 -0
  4. package/dist/{chunk-UMAX5MX5.js → chunk-EDXZTSIA.js} +33 -5
  5. package/dist/chunk-EDXZTSIA.js.map +1 -0
  6. package/dist/{chunk-S4RXO6IB.cjs → chunk-HMUA5KLG.cjs} +48 -20
  7. package/dist/chunk-HMUA5KLG.cjs.map +1 -0
  8. package/dist/{chunk-ZDZ2B5PE.js → chunk-JESIF5IF.js} +7 -3
  9. package/dist/chunk-JESIF5IF.js.map +1 -0
  10. package/dist/{chunk-5IWW5H47.js → chunk-LWNWC2O7.js} +68 -14
  11. package/dist/chunk-LWNWC2O7.js.map +1 -0
  12. package/dist/{chunk-PD72MVTX.cjs → chunk-P6A2OOIY.cjs} +7 -3
  13. package/dist/chunk-P6A2OOIY.cjs.map +1 -0
  14. package/dist/encoder/index.cjs +14 -14
  15. package/dist/encoder/index.d.cts +5 -4
  16. package/dist/encoder/index.d.ts +5 -4
  17. package/dist/encoder/index.js +2 -2
  18. package/dist/index.cjs +46 -27
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +15 -5
  21. package/dist/index.d.ts +15 -5
  22. package/dist/index.js +25 -5
  23. package/dist/index.js.map +1 -1
  24. package/dist/metafile-cjs.json +1 -1
  25. package/dist/metafile-esm.json +1 -1
  26. package/dist/parser/index.cjs +21 -21
  27. package/dist/parser/index.d.cts +2 -2
  28. package/dist/parser/index.d.ts +2 -2
  29. package/dist/parser/index.js +2 -2
  30. package/dist/{types-DvNlfbKB.d.cts → types-eG2qalpr.d.cts} +27 -1
  31. package/dist/{types-DvNlfbKB.d.ts → types-eG2qalpr.d.ts} +27 -1
  32. package/dist/{useCborSimpleEncoder-BoKEmjP9.d.ts → useCborSimpleEncoder-CamvS-_N.d.ts} +7 -1
  33. package/dist/{useCborSimpleEncoder-C_OHxoB8.d.cts → useCborSimpleEncoder-DXgPx62d.d.cts} +7 -1
  34. package/dist/{useCborTag-QpZR-Er2.d.cts → useCborTag-D4d7xG3-.d.cts} +1 -1
  35. package/dist/{useCborTag-BD6Sqp7p.d.ts → useCborTag-TYst1KR6.d.ts} +1 -1
  36. package/package.json +1 -1
  37. package/src/__tests__/audit-fixes.test.ts +141 -0
  38. package/src/encoder/composables/useCborCollectionEncoder.ts +3 -2
  39. package/src/encoder/composables/useCborEncoder.ts +19 -0
  40. package/src/encoder/composables/useCborSimpleEncoder.ts +6 -2
  41. package/src/encoder/types.ts +9 -2
  42. package/src/encoder/utils.ts +33 -1
  43. package/src/index.ts +10 -0
  44. package/src/parser/__tests__/utils-errors.test.ts +11 -3
  45. package/src/parser/composables/useCborCollection.ts +7 -4
  46. package/src/parser/composables/useCborDiagnostic.ts +28 -0
  47. package/src/parser/composables/useCborParser.ts +63 -13
  48. package/src/parser/composables/useCborTag.ts +8 -1
  49. package/src/parser/types.ts +32 -1
  50. package/src/parser/utils.ts +41 -0
  51. package/dist/chunk-5IWW5H47.js.map +0 -1
  52. package/dist/chunk-PD72MVTX.cjs.map +0 -1
  53. package/dist/chunk-RVG2BY32.cjs.map +0 -1
  54. package/dist/chunk-S4RXO6IB.cjs.map +0 -1
  55. package/dist/chunk-UMAX5MX5.js.map +0 -1
  56. package/dist/chunk-ZDZ2B5PE.js.map +0 -1
@@ -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}}}
@@ -1,85 +1,85 @@
1
1
  'use strict';
2
2
 
3
- var chunkRVG2BY32_cjs = require('../chunk-RVG2BY32.cjs');
4
- var chunkPD72MVTX_cjs = require('../chunk-PD72MVTX.cjs');
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 chunkRVG2BY32_cjs.bytesToHex; }
10
+ get: function () { return chunk3Z45RBZP_cjs.bytesToHex; }
11
11
  });
12
12
  Object.defineProperty(exports, "extractCborHeader", {
13
13
  enumerable: true,
14
- get: function () { return chunkRVG2BY32_cjs.extractCborHeader; }
14
+ get: function () { return chunk3Z45RBZP_cjs.extractCborHeader; }
15
15
  });
16
16
  Object.defineProperty(exports, "hexToBytes", {
17
17
  enumerable: true,
18
- get: function () { return chunkRVG2BY32_cjs.hexToBytes; }
18
+ get: function () { return chunk3Z45RBZP_cjs.hexToBytes; }
19
19
  });
20
20
  Object.defineProperty(exports, "readBigUint", {
21
21
  enumerable: true,
22
- get: function () { return chunkRVG2BY32_cjs.readBigUint; }
22
+ get: function () { return chunk3Z45RBZP_cjs.readBigUint; }
23
23
  });
24
24
  Object.defineProperty(exports, "readByte", {
25
25
  enumerable: true,
26
- get: function () { return chunkRVG2BY32_cjs.readByte; }
26
+ get: function () { return chunk3Z45RBZP_cjs.readByte; }
27
27
  });
28
28
  Object.defineProperty(exports, "readUint", {
29
29
  enumerable: true,
30
- get: function () { return chunkRVG2BY32_cjs.readUint; }
30
+ get: function () { return chunk3Z45RBZP_cjs.readUint; }
31
31
  });
32
32
  Object.defineProperty(exports, "useCborCollection", {
33
33
  enumerable: true,
34
- get: function () { return chunkRVG2BY32_cjs.useCborCollection; }
34
+ get: function () { return chunk3Z45RBZP_cjs.useCborCollection; }
35
35
  });
36
36
  Object.defineProperty(exports, "useCborFloat", {
37
37
  enumerable: true,
38
- get: function () { return chunkRVG2BY32_cjs.useCborFloat; }
38
+ get: function () { return chunk3Z45RBZP_cjs.useCborFloat; }
39
39
  });
40
40
  Object.defineProperty(exports, "useCborInteger", {
41
41
  enumerable: true,
42
- get: function () { return chunkRVG2BY32_cjs.useCborInteger; }
42
+ get: function () { return chunk3Z45RBZP_cjs.useCborInteger; }
43
43
  });
44
44
  Object.defineProperty(exports, "useCborParser", {
45
45
  enumerable: true,
46
- get: function () { return chunkRVG2BY32_cjs.useCborParser; }
46
+ get: function () { return chunk3Z45RBZP_cjs.useCborParser; }
47
47
  });
48
48
  Object.defineProperty(exports, "useCborString", {
49
49
  enumerable: true,
50
- get: function () { return chunkRVG2BY32_cjs.useCborString; }
50
+ get: function () { return chunk3Z45RBZP_cjs.useCborString; }
51
51
  });
52
52
  Object.defineProperty(exports, "useCborTag", {
53
53
  enumerable: true,
54
- get: function () { return chunkRVG2BY32_cjs.useCborTag; }
54
+ get: function () { return chunk3Z45RBZP_cjs.useCborTag; }
55
55
  });
56
56
  Object.defineProperty(exports, "validateUtf8Strict", {
57
57
  enumerable: true,
58
- get: function () { return chunkRVG2BY32_cjs.validateUtf8Strict; }
58
+ get: function () { return chunk3Z45RBZP_cjs.validateUtf8Strict; }
59
59
  });
60
60
  Object.defineProperty(exports, "CborAdditionalInfo", {
61
61
  enumerable: true,
62
- get: function () { return chunkPD72MVTX_cjs.CborAdditionalInfo; }
62
+ get: function () { return chunkP6A2OOIY_cjs.CborAdditionalInfo; }
63
63
  });
64
64
  Object.defineProperty(exports, "CborMajorType", {
65
65
  enumerable: true,
66
- get: function () { return chunkPD72MVTX_cjs.CborMajorType; }
66
+ get: function () { return chunkP6A2OOIY_cjs.CborMajorType; }
67
67
  });
68
68
  Object.defineProperty(exports, "CborSimpleValue", {
69
69
  enumerable: true,
70
- get: function () { return chunkPD72MVTX_cjs.CborSimpleValue; }
70
+ get: function () { return chunkP6A2OOIY_cjs.CborSimpleValue; }
71
71
  });
72
72
  Object.defineProperty(exports, "CborTag", {
73
73
  enumerable: true,
74
- get: function () { return chunkPD72MVTX_cjs.CborTag; }
74
+ get: function () { return chunkP6A2OOIY_cjs.CborTag; }
75
75
  });
76
76
  Object.defineProperty(exports, "DEFAULT_LIMITS", {
77
77
  enumerable: true,
78
- get: function () { return chunkPD72MVTX_cjs.DEFAULT_LIMITS; }
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 chunkPD72MVTX_cjs.DEFAULT_OPTIONS; }
82
+ get: function () { return chunkP6A2OOIY_cjs.DEFAULT_OPTIONS; }
83
83
  });
84
84
  //# sourceMappingURL=index.cjs.map
85
85
  //# sourceMappingURL=index.cjs.map
@@ -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-QpZR-Er2.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-DvNlfbKB.cjs';
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
@@ -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-BD6Sqp7p.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-DvNlfbKB.js';
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
@@ -1,4 +1,4 @@
1
- export { bytesToHex, extractCborHeader, hexToBytes, readBigUint, readByte, readUint, useCborCollection, useCborFloat, useCborInteger, useCborParser, useCborString, useCborTag, validateUtf8Strict } from '../chunk-5IWW5H47.js';
2
- export { CborAdditionalInfo, CborMajorType, CborSimpleValue, CborTag, DEFAULT_LIMITS, DEFAULT_OPTIONS } from '../chunk-ZDZ2B5PE.js';
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-DvNlfbKB.js';
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-DvNlfbKB.cjs';
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-DvNlfbKB.cjs';
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-DvNlfbKB.js';
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.1.4",
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, compareBytes } from '../utils'
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
- withEncodedKeys.sort((a, b) => compareBytes(a.encodedKey, b.encodedKey))
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 < 0.00006103515625 || absValue > 65504) {
195
+ if (absValue < 5.960464477539063e-8 || absValue > 65504) {
192
196
  return false
193
197
  }
194
198