@marcuspuchalla/nachos 0.1.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 (100) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/LICENSE +674 -0
  3. package/README.md +345 -0
  4. package/dist/chunk-2FUTHZQQ.cjs +755 -0
  5. package/dist/chunk-2FUTHZQQ.cjs.map +1 -0
  6. package/dist/chunk-2HBCILJS.cjs +2034 -0
  7. package/dist/chunk-2HBCILJS.cjs.map +1 -0
  8. package/dist/chunk-7CFYWHS6.js +742 -0
  9. package/dist/chunk-7CFYWHS6.js.map +1 -0
  10. package/dist/chunk-PD72MVTX.cjs +160 -0
  11. package/dist/chunk-PD72MVTX.cjs.map +1 -0
  12. package/dist/chunk-ZDZ2B5PE.js +149 -0
  13. package/dist/chunk-ZDZ2B5PE.js.map +1 -0
  14. package/dist/chunk-ZRPJUEIZ.js +2020 -0
  15. package/dist/chunk-ZRPJUEIZ.js.map +1 -0
  16. package/dist/encoder/index.cjs +57 -0
  17. package/dist/encoder/index.cjs.map +1 -0
  18. package/dist/encoder/index.d.cts +72 -0
  19. package/dist/encoder/index.d.ts +72 -0
  20. package/dist/encoder/index.js +4 -0
  21. package/dist/encoder/index.js.map +1 -0
  22. package/dist/index.cjs +606 -0
  23. package/dist/index.cjs.map +1 -0
  24. package/dist/index.d.cts +494 -0
  25. package/dist/index.d.ts +494 -0
  26. package/dist/index.js +523 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/metafile-cjs.json +1 -0
  29. package/dist/metafile-esm.json +1 -0
  30. package/dist/parser/index.cjs +85 -0
  31. package/dist/parser/index.cjs.map +1 -0
  32. package/dist/parser/index.d.cts +72 -0
  33. package/dist/parser/index.d.ts +72 -0
  34. package/dist/parser/index.js +4 -0
  35. package/dist/parser/index.js.map +1 -0
  36. package/dist/types-DvNlfbKB.d.cts +301 -0
  37. package/dist/types-DvNlfbKB.d.ts +301 -0
  38. package/dist/useCborSimpleEncoder-ButVU988.d.cts +268 -0
  39. package/dist/useCborSimpleEncoder-TVxzNJ_9.d.ts +268 -0
  40. package/dist/useCborTag-B_iaShG6.d.ts +142 -0
  41. package/dist/useCborTag-BfTIV8HM.d.cts +142 -0
  42. package/package.json +102 -0
  43. package/src/__tests__/public-api.test.ts +326 -0
  44. package/src/encoder/__tests__/cbor-collection-encoder.test.ts +331 -0
  45. package/src/encoder/__tests__/cbor-integer-encoder.test.ts +283 -0
  46. package/src/encoder/__tests__/cbor-simple-encoder.test.ts +224 -0
  47. package/src/encoder/__tests__/cbor-string-encoder.test.ts +345 -0
  48. package/src/encoder/__tests__/cbor-tag-encoder.test.ts +565 -0
  49. package/src/encoder/composables/#useCborTagEncoder.ts# +158 -0
  50. package/src/encoder/composables/useCborCollectionEncoder.ts +424 -0
  51. package/src/encoder/composables/useCborEncoder.ts +203 -0
  52. package/src/encoder/composables/useCborIntegerEncoder.ts +188 -0
  53. package/src/encoder/composables/useCborSimpleEncoder.ts +266 -0
  54. package/src/encoder/composables/useCborStringEncoder.ts +266 -0
  55. package/src/encoder/composables/useCborTagEncoder.ts +158 -0
  56. package/src/encoder/index.ts +35 -0
  57. package/src/encoder/types.ts +88 -0
  58. package/src/encoder/utils.ts +80 -0
  59. package/src/index.ts +434 -0
  60. package/src/parser/__tests__/ast-tree-structure.test.ts +311 -0
  61. package/src/parser/__tests__/cbor-collection-errors.test.ts +296 -0
  62. package/src/parser/__tests__/cbor-collection.test.ts +369 -0
  63. package/src/parser/__tests__/cbor-deterministic-encoding.test.ts +432 -0
  64. package/src/parser/__tests__/cbor-diagnostic.test.ts +333 -0
  65. package/src/parser/__tests__/cbor-duplicate-keys.test.ts +235 -0
  66. package/src/parser/__tests__/cbor-float-errors.test.ts +222 -0
  67. package/src/parser/__tests__/cbor-float.test.ts +502 -0
  68. package/src/parser/__tests__/cbor-integer-errors.test.ts +139 -0
  69. package/src/parser/__tests__/cbor-integer.test.ts +200 -0
  70. package/src/parser/__tests__/cbor-map-duplicate-keys.test.ts +403 -0
  71. package/src/parser/__tests__/cbor-parser-errors.test.ts +126 -0
  72. package/src/parser/__tests__/cbor-security-dos-protection.test.ts +503 -0
  73. package/src/parser/__tests__/cbor-sequences.test.ts +150 -0
  74. package/src/parser/__tests__/cbor-source-map.test.ts +321 -0
  75. package/src/parser/__tests__/cbor-standard-tags.test.ts +340 -0
  76. package/src/parser/__tests__/cbor-string-errors.test.ts +227 -0
  77. package/src/parser/__tests__/cbor-string.test.ts +224 -0
  78. package/src/parser/__tests__/cbor-tag-advanced.test.ts +500 -0
  79. package/src/parser/__tests__/cbor-tag-errors.test.ts +447 -0
  80. package/src/parser/__tests__/cbor-tag-source-map.test.ts +360 -0
  81. package/src/parser/__tests__/cbor-tag.test.ts +684 -0
  82. package/src/parser/__tests__/extreme-edge-cases.test.ts +146 -0
  83. package/src/parser/__tests__/pathBuilder.test.ts +256 -0
  84. package/src/parser/__tests__/rfc-test-vectors.test.ts +607 -0
  85. package/src/parser/__tests__/security-limits.test.ts +248 -0
  86. package/src/parser/__tests__/utils-errors.test.ts +127 -0
  87. package/src/parser/composables/useCborCollection.ts +509 -0
  88. package/src/parser/composables/useCborDiagnostic.ts +381 -0
  89. package/src/parser/composables/useCborFloat.ts +256 -0
  90. package/src/parser/composables/useCborInteger.ts +114 -0
  91. package/src/parser/composables/useCborParser.ts +951 -0
  92. package/src/parser/composables/useCborString.ts +330 -0
  93. package/src/parser/composables/useCborStringTypes.ts +129 -0
  94. package/src/parser/composables/useCborTag.ts +739 -0
  95. package/src/parser/index.ts +56 -0
  96. package/src/parser/types.ts +371 -0
  97. package/src/parser/utils/pathBuilder.ts +259 -0
  98. package/src/parser/utils.ts +398 -0
  99. package/src/utils/__tests__/logger.test.ts +186 -0
  100. package/src/utils/logger.ts +96 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/parser/composables/useCborDiagnostic.ts","../src/parser/utils/pathBuilder.ts","../src/index.ts"],"names":["toDiagnostic","useCborParser","useCborEncoder"],"mappings":";;;;;;;AA4CA,SAAS,cAAc,KAAA,EAAsC;AAC3D,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,IAAA,IACV,KAAA,IAAS,KAAA,IACT,OAAA,IAAW,KAAA,IACX,OAAQ,KAAA,CAAsB,GAAA,KAAQ,QAAA;AAE1C;AAKA,SAAS,cAAc,KAAA,EAAkD;AACvE,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,IAAA,IACV,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IACpB,EAAE,KAAA,YAAiB,eACnB,EAAE,KAAA,YAAiB,GAAA,CAAA,IACnB,EAAE,KAAA,YAAiB,GAAA,CAAA,IACnB,CAAC,aAAA,CAAc,KAAK,CAAA,IACpB,KAAA,CAAM,WAAA,KAAgB,MAAA;AAE1B;AAKA,SAAS,aAAa,GAAA,EAAqB;AACzC,EAAA,OAAO,GAAA,CACJ,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA,CACrB,QAAQ,IAAA,EAAM,KAAK,CAAA,CACnB,OAAA,CAAQ,KAAA,EAAO,KAAK,EACpB,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,CACpB,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,CACpB,OAAA,CAAQ,uBAAA,EAAyB,CAAC,IAAA,KAAS;AAC1C,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA;AAC9B,IAAA,OAAO,CAAA,GAAA,EAAM,KAAK,QAAA,CAAS,EAAE,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAAA,EACjD,CAAC,CAAA;AACL;AAKA,SAAS,WAAW,KAAA,EAA2B;AAC7C,EAAA,OAAO,MAAM,IAAA,CAAK,KAAK,CAAA,CACpB,GAAA,CAAI,OAAK,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,SAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CACxC,KAAK,EAAE,CAAA;AACZ;AAKO,SAAS,iBAAA,GAAoB;AAQlC,EAAA,MAAMA,aAAAA,GAAe,CACnB,KAAA,EACA,OAAA,GAA6B,EAAC,KACnB;AACX,IAAA,MAAM;AAAA,MACJ,MAAA,GAAS,KAAA;AAAA,MACT,MAAA,GAAS,IAAA;AAAA,MACT,QAAA,GAAW,GAAA;AAAA,MACX,UAAA,GAAa;AAAA,KACf,GAAI,OAAA;AAEJ,IAAA,OAAO,YAAY,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,MAAA,EAAQ,UAAU,UAAU,CAAA;AAAA,EACnE,CAAA;AAKA,EAAA,MAAM,cAAc,CAClB,KAAA,EACA,OACA,MAAA,EACA,MAAA,EACA,UACA,UAAA,KACW;AAEX,IAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,MAAA,OAAO,KAAA;AAAA,IACT;AAGA,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,OAAO,WAAA;AAAA,IACT;AAGA,IAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC9B,MAAA,OAAO,QAAQ,MAAA,GAAS,OAAA;AAAA,IAC1B;AAGA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAE7B,MAAA,IAAI,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,EAAG;AACvB,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,UAAU,QAAA,EAAU;AACtB,QAAA,OAAO,UAAA;AAAA,MACT;AACA,MAAA,IAAI,UAAU,CAAA,QAAA,EAAW;AACvB,QAAA,OAAO,WAAA;AAAA,MACT;AAEA,MAAA,IAAI,MAAA,CAAO,EAAA,CAAG,KAAA,EAAO,EAAE,CAAA,EAAG;AACxB,QAAA,OAAO,MAAA;AAAA,MACT;AAEA,MAAA,IAAI,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA,EAAG;AAC3B,QAAA,OAAO,MAAM,QAAA,EAAS;AAAA,MACxB;AAEA,MAAA,OAAO,MAAM,QAAA,EAAS;AAAA,IACxB;AAGA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,OAAO,MAAM,QAAA,EAAS;AAAA,IACxB;AAGA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,OAAO,CAAA,CAAA,EAAI,YAAA,CAAa,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,IAChC;AAGA,IAAA,IAAI,iBAAiB,UAAA,EAAY;AAC/B,MAAA,OAAO,CAAA,EAAA,EAAK,UAAA,CAAW,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,IAC/B;AAGA,IAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG;AACxB,MAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,QACpB,KAAA,CAAM,KAAA;AAAA,QACN,KAAA,GAAQ,CAAA;AAAA,QACR,MAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,OAAO,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,CAAA;AAAA,IACtC;AAGA,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,QAAA,OAAO,aAAa,MAAA,GAAS,IAAA;AAAA,MAC/B;AAEA,MAAA,MAAM,QAAQ,KAAA,CAAM,GAAA;AAAA,QAAI,CAAA,IAAA,KACtB,YAAY,IAAA,EAAM,KAAA,GAAQ,GAAG,MAAA,EAAQ,MAAA,EAAQ,UAAU,KAAK;AAAA,OAC9D;AAEA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,MAAA,GAAS,aAAa,KAAA,GAAQ,GAAA;AACpC,QAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC1C,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AACvC,QAAA,OAAO,GAAG,MAAM;AAAA,EAAK,UAAU,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,CAAA;AAAA,EAAM,UAAU,EAAE,CAAC;AAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AAAA,MAClF,CAAA,MAAO;AACL,QAAA,MAAM,MAAA,GAAS,aAAa,KAAA,GAAQ,GAAA;AACpC,QAAA,OAAO,GAAG,MAAM,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,MACrC;AAAA,IACF;AAGA,IAAA,IAAI,iBAAiB,GAAA,EAAK;AACxB,MAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,QAAA,OAAO,aAAa,MAAA,GAAS,IAAA;AAAA,MAC/B;AAEA,MAAA,MAAM,UAAoB,EAAC;AAC3B,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,KAAA,EAAO;AAC1B,QAAA,MAAM,MAAA,GAAS,YAAY,CAAA,EAAG,KAAA,GAAQ,GAAG,MAAA,EAAQ,MAAA,EAAQ,UAAU,KAAK,CAAA;AACxE,QAAA,MAAM,QAAA,GAAW,YAAY,CAAA,EAAG,KAAA,GAAQ,GAAG,MAAA,EAAQ,MAAA,EAAQ,UAAU,KAAK,CAAA;AAC1E,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,MACvC;AAEA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,MAAA,GAAS,aAAa,KAAA,GAAQ,GAAA;AACpC,QAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC1C,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AACvC,QAAA,OAAO,GAAG,MAAM;AAAA,EAAK,UAAU,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,CAAA;AAAA,EAAM,UAAU,EAAE,CAAC;AAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AAAA,MACpF,CAAA,MAAO;AACL,QAAA,MAAM,MAAA,GAAS,aAAa,KAAA,GAAQ,GAAA;AACpC,QAAA,OAAO,GAAG,MAAM,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,MACvC;AAAA,IACF;AAGA,IAAA,IAAI,iBAAiB,GAAA,EAAK;AACxB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,CAAE,GAAA;AAAA,QAAI,CAAA,IAAA,KAClC,YAAY,IAAA,EAAM,KAAA,GAAQ,GAAG,MAAA,EAAQ,MAAA,EAAQ,UAAU,KAAK;AAAA,OAC9D;AAEA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC1C,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AACvC,QAAA,OAAO,CAAA;AAAA,EAAM,UAAU,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,CAAA;AAAA,EAAM,UAAU,EAAE,CAAC;AAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AAAA,MAC1E,CAAA,MAAO;AACL,QAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,MAC7B;AAAA,IACF;AAGA,IAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG;AACxB,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAC9B,MAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,QAAA,OAAO,aAAa,MAAA,GAAS,IAAA;AAAA,MAC/B;AAEA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAA,GAAA,KAAO;AAC9B,QAAA,MAAM,MAAA,GAAS,CAAA,CAAA,EAAI,YAAA,CAAa,GAAG,CAAC,CAAA,CAAA,CAAA;AACpC,QAAA,MAAM,QAAA,GAAW,WAAA;AAAA,UACf,MAAM,GAAG,CAAA;AAAA,UACT,KAAA,GAAQ,CAAA;AAAA,UACR,MAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAA;AAAA,MAC/B,CAAC,CAAA;AAED,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,MAAA,GAAS,aAAa,KAAA,GAAQ,GAAA;AACpC,QAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC1C,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AACvC,QAAA,OAAO,GAAG,MAAM;AAAA,EAAK,UAAU,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,CAAA;AAAA,EAAM,UAAU,EAAE,CAAC;AAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AAAA,MACpF,CAAA,MAAO;AACL,QAAA,MAAM,MAAA,GAAS,aAAa,KAAA,GAAQ,GAAA;AACpC,QAAA,OAAO,GAAG,MAAM,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,MACvC;AAAA,IACF;AAGA,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB,CAAA;AAMA,EAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAA0B;AAEhD,IAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAG1B,IAAA,IAAI,OAAA,KAAY,QAAQ,OAAO,IAAA;AAC/B,IAAA,IAAI,OAAA,KAAY,aAAa,OAAO,MAAA;AAGpC,IAAA,IAAI,OAAA,KAAY,QAAQ,OAAO,IAAA;AAC/B,IAAA,IAAI,OAAA,KAAY,SAAS,OAAO,KAAA;AAGhC,IAAA,IAAI,OAAA,KAAY,OAAO,OAAO,GAAA;AAC9B,IAAA,IAAI,OAAA,KAAY,YAAY,OAAO,QAAA;AACnC,IAAA,IAAI,OAAA,KAAY,aAAa,OAAO,CAAA,QAAA;AAGpC,IAAA,IAAI,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA,EAAG;AACnC,MAAA,MAAM,GAAA,GAAM,OAAO,OAAO,CAAA;AAC1B,MAAA,IAAI,OAAA,KAAY,MAAA,IAAU,OAAA,KAAY,IAAA,EAAM;AAC1C,QAAA,OAAO,EAAA;AAAA,MACT;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAGA,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,KAAA,CAAM,qBAAqB,CAAA;AACpD,IAAA,IAAI,QAAA,IAAY,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA,EAAW;AACzC,MAAA,MAAM,GAAA,GAAM,SAAS,CAAC,CAAA;AACtB,MAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,GAAA,CAAI,SAAS,CAAC,CAAA;AAC3C,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA,EAAG;AACtC,QAAA,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA,GAAI,QAAA,CAAS,GAAA,CAAI,UAAU,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,MACrD;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AAGA,IAAA,IAAI,QAAQ,UAAA,CAAW,GAAG,KAAK,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AAEpD,MAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,CAAE,OAAA,CAAQ,OAAA,EAAS,IAAI,CAAA;AAAA,IACxE;AAIA,IAAA,OAAO,OAAA;AAAA,EACT,CAAA;AAKA,EAAA,MAAM,uBAAuB,CAC3B,KAAA,EACA,SAAA,EACA,OAAA,GAA6B,EAAC,KACnB;AACX,IAAA,MAAM,SAAA,GAAoC;AAAA,MACxC,CAAA,EAAG,MAAA;AAAA,MACH,CAAA,EAAG,MAAA;AAAA,MACH,CAAA,EAAG,MAAA;AAAA,MACH,CAAA,EAAG,MAAA;AAAA,MACH,CAAA,EAAG,OAAA;AAAA,MACH,CAAA,EAAG,KAAA;AAAA,MACH,CAAA,EAAG,KAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACL;AAEA,IAAA,MAAM,QAAA,GAAW,SAAA,CAAU,SAAS,CAAA,IAAK,SAAA;AACzC,IAAA,MAAM,IAAA,GAAOA,aAAAA,CAAa,KAAA,EAAO,OAAO,CAAA;AAExC,IAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA;AAAA,EAC5B,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,YAAA,EAAAA,aAAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACpWO,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA,EAIzB,MAAM,MAAc,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQpB,YAAY,CAAC,MAAA,EAAgB,UAA0B,CAAA,EAAG,MAAM,IAAI,KAAK,CAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQzE,MAAA,EAAQ,CAAC,MAAA,EAAgB,GAAA,KAAiC;AACxD,IAAA,MAAM,MAAA,GAAS,OAAO,GAAG,CAAA;AAEzB,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,OAAA,CAAQ,YAAA,EAAc,MAAM,CAAA;AACtD,IAAA,OAAO,SAAS,CAAA,EAAG,MAAM,IAAI,UAAU,CAAA,CAAA,GAAK,IAAI,UAAU,CAAA,CAAA;AAAA,EAC5D,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa,CAAC,MAAA,EAAgB,UAC5B,CAAA,EAAG,MAAM,SAAS,KAAK,CAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQzB,MAAA,EAAQ,CAAC,MAAA,KAA2B,CAAA,EAAG,MAAM,CAAA,SAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ7C,OAAA,EAAS,CAAC,MAAA,KAA2B,CAAA,EAAG,MAAM,CAAA,UAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO9C,QAAA,EAAU,CAAC,MAAA,KAA2B,CAAA,EAAG,MAAM,CAAA,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ/C,SAAA,EAAW,CAAC,IAAA,KAAyB;AACnC,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,8BAAA,EAAgC,EAAE,CAAA;AAAA,EACxD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAA,EAAU,CAAC,IAAA,KAA0B,IAAA,CAAK,SAAS,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO9D,SAAA,EAAW,CAAC,IAAA,KAA0B,IAAA,CAAK,SAAS,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhE,UAAA,EAAY,CAAC,IAAA,KAA0B,IAAA,CAAK,SAAS,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/D,SAAA,EAAW,CAAC,IAAA,KACV,8BAAA,CAA+B,KAAK,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO1C,SAAA,EAAW,CAAC,IAAA,KAAgC;AAE1C,IAAA,MAAM,UAAA,GAAa,WAAA,CAAY,SAAA,CAAU,IAAI,CAAA;AAC7C,IAAA,IAAI,UAAA,KAAe,IAAI,OAAO,IAAA;AAG9B,IAAA,MAAM,UAAA,GAAa,UAAA,CAAW,KAAA,CAAM,eAAe,CAAA;AACnD,IAAA,IAAI,cAAc,UAAA,CAAW,CAAC,MAAM,MAAA,EAAW,OAAO,WAAW,CAAC,CAAA;AAElE,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,eAAe,CAAA;AACjD,IAAA,IAAI,YAAY,QAAA,CAAS,CAAC,MAAM,MAAA,EAAW,OAAO,SAAS,CAAC,CAAA;AAG5D,IAAA,IAAI,WAAW,UAAA,CAAW,GAAG,KAAK,UAAA,CAAW,UAAA,CAAW,GAAG,CAAA,EAAG;AAC5D,MAAA,OAAO,EAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAA,EAAU,CAAC,IAAA,KAAyB;AAClC,IAAA,MAAM,UAAA,GAAa,WAAA,CAAY,SAAA,CAAU,IAAI,CAAA;AAC7C,IAAA,IAAI,UAAA,KAAe,IAAI,OAAO,CAAA;AAG9B,IAAA,MAAM,cAAc,UAAA,CAAW,KAAA,CAAM,UAAU,CAAA,IAAK,EAAC,EAAG,MAAA;AACxD,IAAA,MAAM,YAAY,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA,IAAK,EAAC,EAAG,MAAA;AAEjD,IAAA,OAAO,UAAA,GAAa,QAAA;AAAA,EACtB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAA,EAAO,CAAC,IAAA,KAAsF;AAC5F,IAAA,MAAM,UAAA,GAAa,WAAA,CAAY,SAAA,CAAU,IAAI,CAAA;AAC7C,IAAA,MAAM,WAAgF,EAAC;AAGvF,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,8BAA8B,CAAA;AAG7D,IAAA,IAAI,SAAA,GAAY,UAAA;AAChB,IAAA,OAAO,SAAA,EAAW;AAEhB,MAAA,MAAM,UAAA,GAAa,SAAA,CAAU,KAAA,CAAM,YAAY,CAAA;AAC/C,MAAA,IAAI,UAAA,IAAc,UAAA,CAAW,CAAC,CAAA,KAAM,MAAA,EAAW;AAC7C,QAAA,QAAA,CAAS,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,QAAA,CAAS,UAAA,CAAW,CAAC,CAAA,EAAG,EAAE,CAAA,EAAG,CAAA;AACnE,QAAA,SAAA,GAAY,SAAA,CAAU,KAAA,CAAM,UAAA,CAAW,CAAC,EAAE,MAAM,CAAA;AAChD,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,KAAA,CAAM,gBAAgB,CAAA;AACjD,MAAA,IAAI,QAAA,IAAY,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA,EAAW;AAEzC,QAAA,MAAM,MAAM,QAAA,CAAS,CAAC,CAAA,CAAE,OAAA,CAAQ,UAAU,IAAI,CAAA;AAC9C,QAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA;AACzC,QAAA,SAAA,GAAY,SAAA,CAAU,KAAA,CAAM,QAAA,CAAS,CAAC,EAAE,MAAM,CAAA;AAC9C,QAAA;AAAA,MACF;AAGA,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,WAAA,IAAe,WAAA,CAAY,CAAC,CAAA,KAAM,MAAA,EAAW;AAC/C,MAAA,QAAA,CAAS,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,OAAO,WAAA,CAAY,CAAC,GAAG,CAAA;AAAA,IACzD;AAEA,IAAA,OAAO,QAAA;AAAA,EACT,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAA,EAAO,CAAC,QAAA,KAA0F;AAChG,IAAA,IAAI,IAAA,GAAO,EAAA;AAEX,IAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,MAAA,IAAI,OAAA,CAAQ,SAAS,OAAA,EAAS;AAC5B,QAAA,IAAA,IAAQ,CAAA,CAAA,EAAI,QAAQ,KAAK,CAAA,CAAA,CAAA;AAAA,MAC3B,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,KAAA,EAAO;AACjC,QAAA,MAAM,aAAa,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,OAAA,CAAQ,cAAc,MAAM,CAAA;AACrE,QAAA,IAAA,IAAQ,IAAI,UAAU,CAAA,CAAA;AAAA,MACxB,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,QAAA,EAAU;AACpC,QAAA,IAAA,IAAQ,CAAA,EAAA,EAAK,QAAQ,KAAK,CAAA,CAAA,CAAA;AAAA,MAC5B;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAA,EAAM,IAAI,KAAA,KAA4B;AACpC,IAAA,OAAO,MAAM,MAAA,CAAO,CAAA,CAAA,KAAK,MAAM,EAAE,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,EAC5C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAA,EAAgB,CAAC,IAAA,EAAc,QAAA,KAA8B;AAC3D,IAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,SAAA,CAAU,IAAI,CAAA;AACjD,IAAA,MAAM,kBAAA,GAAqB,WAAA,CAAY,SAAA,CAAU,QAAQ,CAAA;AAEzD,IAAA,IAAI,uBAAuB,EAAA,EAAI;AAC7B,MAAA,OAAO,cAAA,KAAmB,EAAA;AAAA,IAC5B;AAEA,IAAA,OAAO,eAAe,UAAA,CAAW,kBAAkB,CAAA,IAC5C,cAAA,CAAe,SAAS,kBAAA,CAAmB,MAAA,KAC1C,cAAA,CAAe,kBAAA,CAAmB,MAAM,CAAA,KAAM,GAAA,IAC9C,cAAA,CAAe,kBAAA,CAAmB,MAAM,CAAA,KAAM,GAAA,CAAA;AAAA,EACxD;AACF;;;AClIO,SAAS,MAAA,CAAO,WAAmB,OAAA,EAAqC;AAC7E,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIC,+BAAA,EAAc;AAChC,EAAA,OAAO,KAAA,CAAM,WAAW,OAAO,CAAA;AACjC;AA0BO,SAAS,mBAAA,CAAoB,WAAmB,OAAA,EAA4C;AACjG,EAAA,MAAM,EAAE,kBAAA,EAAmB,GAAIA,+BAAA,EAAc;AAC7C,EAAA,OAAO,kBAAA,CAAmB,WAAW,OAAO,CAAA;AAC9C;AAiCO,SAAS,MAAA,CAAO,OAAuB,OAAA,EAAgD;AAC5F,EAAA,MAAM,EAAE,MAAA,EAAQ,WAAA,EAAY,GAAIC,iCAAe,OAAO,CAAA;AACtD,EAAA,OAAO,YAAY,KAAK,CAAA;AAC1B;AAkBO,SAAS,WAAA,CAAY,OAAuB,OAAA,EAA0C;AAC3F,EAAA,MAAM,EAAE,WAAA,EAAa,gBAAA,EAAiB,GAAIA,iCAAe,OAAO,CAAA;AAChE,EAAA,OAAO,iBAAiB,KAAK,CAAA;AAC/B;AAiBO,SAAS,aAAA,CAAc,OAAuB,OAAA,EAA8C;AACjG,EAAA,MAAM,EAAE,aAAA,EAAe,kBAAA,EAAmB,GAAIA,iCAAe,OAAO,CAAA;AACpE,EAAA,OAAO,mBAAmB,KAAK,CAAA;AACjC;AAoBO,SAAS,cAAA,CAAe,QAA0B,OAAA,EAAgD;AACvG,EAAA,MAAM,EAAE,cAAA,EAAgB,SAAA,EAAU,GAAIA,iCAAe,OAAO,CAAA;AAC5D,EAAA,OAAO,UAAU,MAAM,CAAA;AACzB;AAkBO,IAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQvB,YAAY,OAAA,EAAwB;AAClC,IAAA,IAAA,CAAK,OAAA,GAAU,WAAW,EAAC;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,SAAA,EAAgC;AACrC,IAAA,OAAO,MAAA,CAAO,SAAA,EAAW,IAAA,CAAK,OAAO,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoB,SAAA,EAAuC;AACzD,IAAA,OAAO,mBAAA,CAAoB,SAAA,EAAW,IAAA,CAAK,OAAO,CAAA;AAAA,EACpD;AACF;AAkBO,IAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQvB,YAAY,OAAA,EAAkC;AAC5C,IAAA,IAAA,CAAK,OAAA,GAAU,WAAW,EAAC;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,KAAA,EAAqC;AAC1C,IAAA,OAAO,MAAA,CAAO,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,KAAA,EAA+B;AACzC,IAAA,OAAO,WAAA,CAAY,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAc,KAAA,EAAmC;AAC/C,IAAA,OAAO,aAAA,CAAc,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAe,MAAA,EAAwC;AACrD,IAAA,OAAO,cAAA,CAAe,MAAA,EAAQ,IAAA,CAAK,OAAO,CAAA;AAAA,EAC5C;AACF;AAiCO,SAAS,YAAA,CAAa,OAAgB,OAAA,EAAqC;AAChF,EAAA,MAAM,EAAE,YAAA,EAAc,OAAA,EAAQ,GAAI,iBAAA,EAAkB;AACpD,EAAA,OAAO,OAAA,CAAQ,OAAO,OAAO,CAAA;AAC/B;AAkBO,SAAS,kBAAA,CAAmB,WAAmB,OAAA,EAAqC;AACzF,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAA,CAAO,SAAS,CAAA;AAClC,EAAA,OAAO,YAAA,CAAa,OAAO,OAAO,CAAA;AACpC","file":"index.cjs","sourcesContent":["/**\n * useCborDiagnostic - RFC 8949 Appendix B Diagnostic Notation\n *\n * Converts CBOR values to human-readable diagnostic notation as defined\n * in RFC 8949 (Concise Binary Object Representation).\n *\n * @example\n * ```typescript\n * const { toDiagnostic } = useCborDiagnostic()\n *\n * toDiagnostic(100) // \"100\"\n * toDiagnostic(new Uint8Array([1,2])) // \"h'0102'\"\n * toDiagnostic([1, 2, 3]) // \"[1, 2, 3]\"\n * toDiagnostic({a: 1}) // '{\"a\": 1}'\n * ```\n */\n\n/**\n * Options for diagnostic notation output\n */\nexport interface DiagnosticOptions {\n /** Pretty print with indentation (default: false) */\n pretty?: boolean\n /** Indentation string for pretty printing (default: ' ') */\n indent?: string\n /** Maximum depth for nested structures (default: 100) */\n maxDepth?: number\n /** Mark as indefinite-length (default: false) */\n indefinite?: boolean\n /** Show byte offsets as comments (default: false) */\n showOffsets?: boolean\n}\n\n/**\n * Tagged value interface (CBOR Major Type 6)\n */\ninterface TaggedValue {\n tag: number\n value: unknown\n}\n\n/**\n * Check if value is a tagged value\n */\nfunction isTaggedValue(value: unknown): value is TaggedValue {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'tag' in value &&\n 'value' in value &&\n typeof (value as TaggedValue).tag === 'number'\n )\n}\n\n/**\n * Check if value is a plain object (not array, not special type)\n */\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n !(value instanceof Uint8Array) &&\n !(value instanceof Map) &&\n !(value instanceof Set) &&\n !isTaggedValue(value) &&\n value.constructor === Object\n )\n}\n\n/**\n * Escape string for diagnostic notation (JSON-style escaping)\n */\nfunction escapeString(str: string): string {\n return str\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\t/g, '\\\\t')\n .replace(/[\\x00-\\x1f\\x7f-\\x9f]/g, (char) => {\n const code = char.charCodeAt(0)\n return `\\\\u${code.toString(16).padStart(4, '0')}`\n })\n}\n\n/**\n * Convert Uint8Array to hex string\n */\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('')\n}\n\n/**\n * Composable for CBOR diagnostic notation\n */\nexport function useCborDiagnostic() {\n /**\n * Convert a CBOR value to RFC 8949 diagnostic notation\n *\n * @param value - The CBOR value to convert\n * @param options - Formatting options\n * @returns Diagnostic notation string\n */\n const toDiagnostic = (\n value: unknown,\n options: DiagnosticOptions = {}\n ): string => {\n const {\n pretty = false,\n indent = ' ',\n maxDepth = 100,\n indefinite = false\n } = options\n\n return formatValue(value, 0, pretty, indent, maxDepth, indefinite)\n }\n\n /**\n * Internal recursive formatter\n */\n const formatValue = (\n value: unknown,\n depth: number,\n pretty: boolean,\n indent: string,\n maxDepth: number,\n indefinite: boolean\n ): string => {\n // Check depth limit\n if (depth > maxDepth) {\n return '...'\n }\n\n // Handle null/undefined\n if (value === null) {\n return 'null'\n }\n if (value === undefined) {\n return 'undefined'\n }\n\n // Handle booleans\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false'\n }\n\n // Handle numbers\n if (typeof value === 'number') {\n // Special float values\n if (Number.isNaN(value)) {\n return 'NaN'\n }\n if (value === Infinity) {\n return 'Infinity'\n }\n if (value === -Infinity) {\n return '-Infinity'\n }\n // Negative zero\n if (Object.is(value, -0)) {\n return '-0.0'\n }\n // Regular numbers\n if (Number.isInteger(value)) {\n return value.toString()\n }\n // Floats - preserve precision\n return value.toString()\n }\n\n // Handle BigInt\n if (typeof value === 'bigint') {\n return value.toString()\n }\n\n // Handle strings\n if (typeof value === 'string') {\n return `\"${escapeString(value)}\"`\n }\n\n // Handle byte strings (Uint8Array)\n if (value instanceof Uint8Array) {\n return `h'${bytesToHex(value)}'`\n }\n\n // Handle tagged values\n if (isTaggedValue(value)) {\n const taggedContent = formatValue(\n value.value,\n depth + 1,\n pretty,\n indent,\n maxDepth,\n false\n )\n return `${value.tag}(${taggedContent})`\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return indefinite ? '[_ ]' : '[]'\n }\n\n const items = value.map(item =>\n formatValue(item, depth + 1, pretty, indent, maxDepth, false)\n )\n\n if (pretty) {\n const prefix = indefinite ? '[_ ' : '['\n const lineIndent = indent.repeat(depth + 1)\n const closeIndent = indent.repeat(depth)\n return `${prefix}\\n${lineIndent}${items.join(`,\\n${lineIndent}`)}\\n${closeIndent}]`\n } else {\n const prefix = indefinite ? '[_ ' : '['\n return `${prefix}${items.join(', ')}]`\n }\n }\n\n // Handle Maps\n if (value instanceof Map) {\n if (value.size === 0) {\n return indefinite ? '{_ }' : '{}'\n }\n\n const entries: string[] = []\n for (const [k, v] of value) {\n const keyStr = formatValue(k, depth + 1, pretty, indent, maxDepth, false)\n const valueStr = formatValue(v, depth + 1, pretty, indent, maxDepth, false)\n entries.push(`${keyStr}: ${valueStr}`)\n }\n\n if (pretty) {\n const prefix = indefinite ? '{_ ' : '{'\n const lineIndent = indent.repeat(depth + 1)\n const closeIndent = indent.repeat(depth)\n return `${prefix}\\n${lineIndent}${entries.join(`,\\n${lineIndent}`)}\\n${closeIndent}}`\n } else {\n const prefix = indefinite ? '{_ ' : '{'\n return `${prefix}${entries.join(', ')}}`\n }\n }\n\n // Handle Sets (convert to array)\n if (value instanceof Set) {\n const items = Array.from(value).map(item =>\n formatValue(item, depth + 1, pretty, indent, maxDepth, false)\n )\n\n if (pretty) {\n const lineIndent = indent.repeat(depth + 1)\n const closeIndent = indent.repeat(depth)\n return `[\\n${lineIndent}${items.join(`,\\n${lineIndent}`)}\\n${closeIndent}]`\n } else {\n return `[${items.join(', ')}]`\n }\n }\n\n // Handle plain objects (as CBOR maps with string keys)\n if (isPlainObject(value)) {\n const keys = Object.keys(value)\n if (keys.length === 0) {\n return indefinite ? '{_ }' : '{}'\n }\n\n const entries = keys.map(key => {\n const keyStr = `\"${escapeString(key)}\"`\n const valueStr = formatValue(\n value[key],\n depth + 1,\n pretty,\n indent,\n maxDepth,\n false\n )\n return `${keyStr}: ${valueStr}`\n })\n\n if (pretty) {\n const prefix = indefinite ? '{_ ' : '{'\n const lineIndent = indent.repeat(depth + 1)\n const closeIndent = indent.repeat(depth)\n return `${prefix}\\n${lineIndent}${entries.join(`,\\n${lineIndent}`)}\\n${closeIndent}}`\n } else {\n const prefix = indefinite ? '{_ ' : '{'\n return `${prefix}${entries.join(', ')}}`\n }\n }\n\n // Fallback for unknown types\n return String(value)\n }\n\n /**\n * Parse diagnostic notation back to CBOR value\n * (Not fully implemented - for future use)\n */\n const fromDiagnostic = (diag: string): unknown => {\n // Basic parsing for common cases\n const trimmed = diag.trim()\n\n // Null/undefined\n if (trimmed === 'null') return null\n if (trimmed === 'undefined') return undefined\n\n // Booleans\n if (trimmed === 'true') return true\n if (trimmed === 'false') return false\n\n // Special floats\n if (trimmed === 'NaN') return NaN\n if (trimmed === 'Infinity') return Infinity\n if (trimmed === '-Infinity') return -Infinity\n\n // Numbers (including negative zero)\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmed)) {\n const num = Number(trimmed)\n if (trimmed === '-0.0' || trimmed === '-0') {\n return -0\n }\n return num\n }\n\n // Byte strings h'...'\n const hexMatch = trimmed.match(/^h'([0-9a-fA-F]*)'$/)\n if (hexMatch && hexMatch[1] !== undefined) {\n const hex = hexMatch[1]\n const bytes = new Uint8Array(hex.length / 2)\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16)\n }\n return bytes\n }\n\n // Strings \"...\"\n if (trimmed.startsWith('\"') && trimmed.endsWith('\"')) {\n // Basic unescape - full implementation would handle all escapes\n return trimmed.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\')\n }\n\n // For arrays, maps, tags - would need full parser\n // Return as string for now\n return trimmed\n }\n\n /**\n * Format value with type annotation (extended notation)\n */\n const toDiagnosticWithType = (\n value: unknown,\n majorType: number,\n options: DiagnosticOptions = {}\n ): string => {\n const typeNames: Record<number, string> = {\n 0: 'uint',\n 1: 'nint',\n 2: 'bstr',\n 3: 'tstr',\n 4: 'array',\n 5: 'map',\n 6: 'tag',\n 7: 'simple'\n }\n\n const typeName = typeNames[majorType] || 'unknown'\n const diag = toDiagnostic(value, options)\n\n return `${typeName}(${diag})`\n }\n\n return {\n toDiagnostic,\n fromDiagnostic,\n toDiagnosticWithType\n }\n}\n\nexport default useCborDiagnostic\n","/**\n * PathBuilder - Utilities for creating and manipulating source map paths\n *\n * Path format follows JSON Pointer (RFC 6901) with CBOR-specific extensions:\n * - Array indices: [0], [1], [2]\n * - Object/Map keys: .key, .nested.key\n * - Special markers: [#header], [#content], [#value]\n *\n * @example\n * ```typescript\n * import { PathBuilder } from './pathBuilder'\n *\n * const path = PathBuilder.arrayIndex('', 0) // \"[0]\"\n * const nested = PathBuilder.arrayIndex(path, 1) // \"[0][1]\"\n * const key = PathBuilder.mapKey(nested, 'amount') // \"[0][1].amount\"\n * const header = PathBuilder.header(key) // \"[0][1].amount[#header]\"\n * ```\n */\n\n/**\n * PathBuilder utility object with methods for creating and manipulating paths\n */\nexport const PathBuilder = {\n /**\n * Create root path (empty string)\n */\n root: (): string => '',\n\n /**\n * Create path for array index\n * @param parent - Parent path\n * @param index - Array index (0-based)\n * @returns Path string like \"[0]\" or \"[0][1]\"\n */\n arrayIndex: (parent: string, index: number): string => `${parent}[${index}]`,\n\n /**\n * Create path for map/object key\n * @param parent - Parent path\n * @param key - Key name (string or number)\n * @returns Path string like \".key\" or \"[0].key\"\n */\n mapKey: (parent: string, key: string | number): string => {\n const keyStr = String(key)\n // Escape special characters in key names\n const escapedKey = keyStr.replace(/[.\\[\\]\\\\]/g, '\\\\$&')\n return parent ? `${parent}.${escapedKey}` : `.${escapedKey}`\n },\n\n /**\n * Create path for map key by index (for non-string keys)\n * @param parent - Parent path\n * @param index - Key index in map\n * @returns Path string like \"[#key:0]\"\n */\n mapKeyIndex: (parent: string, index: number): string =>\n `${parent}[#key:${index}]`,\n\n /**\n * Create path for header portion of a value\n * Used for byte strings, text strings, arrays, maps, tags\n * @param parent - Parent path\n * @returns Path string like \"[0][#header]\"\n */\n header: (parent: string): string => `${parent}[#header]`,\n\n /**\n * Create path for content portion of a value\n * Used for byte strings and text strings\n * @param parent - Parent path\n * @returns Path string like \"[0][#content]\"\n */\n content: (parent: string): string => `${parent}[#content]`,\n\n /**\n * Create path for tagged value\n * @param parent - Parent path\n * @returns Path string like \"[0][#value]\"\n */\n tagValue: (parent: string): string => `${parent}[#value]`,\n\n /**\n * Normalize a path by removing special markers (#header, #content, #value)\n * Used for matching paths across different representations\n * @param path - Path to normalize\n * @returns Normalized path without special markers\n */\n normalize: (path: string): string => {\n return path.replace(/\\[#(header|content|value)\\]$/, '')\n },\n\n /**\n * Check if path is a header path\n * @param path - Path to check\n * @returns True if path ends with [#header]\n */\n isHeader: (path: string): boolean => path.endsWith('[#header]'),\n\n /**\n * Check if path is a content path\n * @param path - Path to check\n * @returns True if path ends with [#content]\n */\n isContent: (path: string): boolean => path.endsWith('[#content]'),\n\n /**\n * Check if path is a tag value path\n * @param path - Path to check\n * @returns True if path ends with [#value]\n */\n isTagValue: (path: string): boolean => path.endsWith('[#value]'),\n\n /**\n * Check if path has any special marker\n * @param path - Path to check\n * @returns True if path ends with any special marker\n */\n hasMarker: (path: string): boolean =>\n /\\[#(header|content|value)\\]$/.test(path),\n\n /**\n * Get parent path (one level up)\n * @param path - Path to get parent of\n * @returns Parent path or null if already at root\n */\n getParent: (path: string): string | null => {\n // First normalize to remove markers\n const normalized = PathBuilder.normalize(path)\n if (normalized === '') return null\n\n // Match array index or object key at end\n const arrayMatch = normalized.match(/^(.+)\\[\\d+\\]$/)\n if (arrayMatch && arrayMatch[1] !== undefined) return arrayMatch[1]\n\n const keyMatch = normalized.match(/^(.+)\\.[^.]+$/)\n if (keyMatch && keyMatch[1] !== undefined) return keyMatch[1]\n\n // Root level item\n if (normalized.startsWith('[') || normalized.startsWith('.')) {\n return ''\n }\n\n return null\n },\n\n /**\n * Get the depth (nesting level) of a path\n * @param path - Path to measure\n * @returns Number indicating nesting depth (0 for root)\n */\n getDepth: (path: string): number => {\n const normalized = PathBuilder.normalize(path)\n if (normalized === '') return 0\n\n // Count array indices and object keys\n const arrayDepth = (normalized.match(/\\[\\d+\\]/g) || []).length\n const keyDepth = (normalized.match(/\\./g) || []).length\n\n return arrayDepth + keyDepth\n },\n\n /**\n * Parse a path into its components\n * @param path - Path to parse\n * @returns Array of path segments\n */\n parse: (path: string): Array<{ type: 'index' | 'key' | 'marker'; value: string | number }> => {\n const normalized = PathBuilder.normalize(path)\n const segments: Array<{ type: 'index' | 'key' | 'marker'; value: string | number }> = []\n\n // Check for marker\n const markerMatch = path.match(/\\[#(header|content|value)\\]$/)\n\n // Parse the normalized path\n let remaining = normalized\n while (remaining) {\n // Array index\n const indexMatch = remaining.match(/^\\[(\\d+)\\]/)\n if (indexMatch && indexMatch[1] !== undefined) {\n segments.push({ type: 'index', value: parseInt(indexMatch[1], 10) })\n remaining = remaining.slice(indexMatch[0].length)\n continue\n }\n\n // Object key\n const keyMatch = remaining.match(/^\\.([^.\\[\\]]+)/)\n if (keyMatch && keyMatch[1] !== undefined) {\n // Unescape special characters\n const key = keyMatch[1].replace(/\\\\(.)/g, '$1')\n segments.push({ type: 'key', value: key })\n remaining = remaining.slice(keyMatch[0].length)\n continue\n }\n\n // Unknown format, break to avoid infinite loop\n break\n }\n\n // Add marker if present\n if (markerMatch && markerMatch[1] !== undefined) {\n segments.push({ type: 'marker', value: markerMatch[1] })\n }\n\n return segments\n },\n\n /**\n * Build a path from segments\n * @param segments - Array of path segments\n * @returns Path string\n */\n build: (segments: Array<{ type: 'index' | 'key' | 'marker'; value: string | number }>): string => {\n let path = ''\n\n for (const segment of segments) {\n if (segment.type === 'index') {\n path += `[${segment.value}]`\n } else if (segment.type === 'key') {\n const escapedKey = String(segment.value).replace(/[.\\[\\]\\\\]/g, '\\\\$&')\n path += `.${escapedKey}`\n } else if (segment.type === 'marker') {\n path += `[#${segment.value}]`\n }\n }\n\n return path\n },\n\n /**\n * Join multiple path segments\n * @param paths - Path segments to join\n * @returns Combined path\n */\n join: (...paths: string[]): string => {\n return paths.filter(p => p !== '').join('')\n },\n\n /**\n * Check if a path is a descendant of another path\n * @param path - Path to check\n * @param ancestor - Potential ancestor path\n * @returns True if path is a descendant of ancestor\n */\n isDescendantOf: (path: string, ancestor: string): boolean => {\n const normalizedPath = PathBuilder.normalize(path)\n const normalizedAncestor = PathBuilder.normalize(ancestor)\n\n if (normalizedAncestor === '') {\n return normalizedPath !== ''\n }\n\n return normalizedPath.startsWith(normalizedAncestor) &&\n normalizedPath.length > normalizedAncestor.length &&\n (normalizedPath[normalizedAncestor.length] === '[' ||\n normalizedPath[normalizedAncestor.length] === '.')\n }\n}\n\nexport default PathBuilder\n","/**\n * NACHOS - Not Another CBOR Handling Object System\n *\n * RFC 8949 CBOR (Concise Binary Object Representation) encoder and decoder\n * with full source map support for interactive debugging.\n *\n * @module @marcuspuchalla/nachos\n * @see https://datatracker.ietf.org/doc/html/rfc8949\n *\n * @example\n * ```typescript\n * // Simple decoding\n * import { decode } from '@marcuspuchalla/nachos'\n * const result = decode('1864') // { value: 100, bytesRead: 2 }\n *\n * // Simple encoding\n * import { encode } from '@marcuspuchalla/nachos'\n * const { hex, bytes } = encode(100) // hex: \"1864\"\n *\n * // With source maps for debugging\n * import { decodeWithSourceMap } from '@marcuspuchalla/nachos'\n * const { value, sourceMap } = decodeWithSourceMap('d87980')\n * // sourceMap links hex bytes to decoded values\n * ```\n */\n\n// Re-export from parser (decoder)\nexport { useCborParser } from './parser/composables/useCborParser'\nexport { useCborInteger } from './parser/composables/useCborInteger'\nexport { useCborString } from './parser/composables/useCborString'\nexport { useCborCollection } from './parser/composables/useCborCollection'\nexport { useCborFloat } from './parser/composables/useCborFloat'\nexport { useCborTag } from './parser/composables/useCborTag'\nexport { useCborDiagnostic } from './parser/composables/useCborDiagnostic'\nexport type { DiagnosticOptions } from './parser/composables/useCborDiagnostic'\n\n// Re-export utilities\nexport { PathBuilder } from './parser/utils/pathBuilder'\n\n// Re-export from encoder\nexport { useCborEncoder } from './encoder/composables/useCborEncoder'\nexport { useCborIntegerEncoder } from './encoder/composables/useCborIntegerEncoder'\nexport { useCborStringEncoder } from './encoder/composables/useCborStringEncoder'\nexport { useCborCollectionEncoder } from './encoder/composables/useCborCollectionEncoder'\nexport { useCborSimpleEncoder } from './encoder/composables/useCborSimpleEncoder'\n\n// Re-export types\nexport type {\n // Parser types\n ParseResult,\n ParseResultWithMap,\n ParseOptions,\n ParseError,\n ParserLimits,\n CborContext,\n CborValue,\n CborMap,\n TaggedValue,\n PlutusData,\n PlutusConstr,\n PlutusMap,\n PlutusList,\n PlutusInt,\n PlutusBytes,\n SourceMapEntry,\n Result\n} from './parser/types'\n\nexport {\n // Default options\n DEFAULT_OPTIONS,\n DEFAULT_LIMITS,\n // Enums\n CborMajorType,\n CborAdditionalInfo,\n CborSimpleValue,\n CborTag\n} from './parser/types'\n\nexport type {\n // Encoder types\n EncodeResult,\n EncodeOptions,\n EncodableValue,\n EncodeContext\n} from './encoder/types'\n\nexport {\n DEFAULT_ENCODE_OPTIONS\n} from './encoder/types'\n\n// Convenience exports with cleaner names for library users\nimport { useCborParser } from './parser/composables/useCborParser'\nimport { useCborEncoder } from './encoder/composables/useCborEncoder'\nimport type { ParseResult, ParseResultWithMap, ParseOptions } from './parser/types'\nimport type { EncodeResult, EncodeOptions, EncodableValue } from './encoder/types'\n\n/**\n * Decode CBOR hex string to JavaScript value\n *\n * @param hexString - CBOR data as hex string (e.g., \"1864\" for integer 100)\n * @param options - Optional parser configuration\n * @returns Decoded value and number of bytes consumed\n *\n * @throws {Error} If input is invalid or malformed CBOR\n *\n * @example\n * ```typescript\n * // Decode integer\n * decode('1864') // { value: 100, bytesRead: 2 }\n *\n * // Decode string\n * decode('6449455446') // { value: \"IETF\", bytesRead: 5 }\n *\n * // Decode array\n * decode('83010203') // { value: [1, 2, 3], bytesRead: 4 }\n *\n * // With strict validation\n * decode('1864', { strict: true })\n *\n * // With canonical validation\n * decode('a16161 01', { validateCanonical: true })\n * ```\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8949 | RFC 8949}\n */\nexport function decode(hexString: string, options?: ParseOptions): ParseResult {\n const { parse } = useCborParser()\n return parse(hexString, options)\n}\n\n/**\n * Decode CBOR hex string with source map generation\n *\n * Source maps provide bidirectional linking between hex bytes and decoded values,\n * enabling interactive debugging visualizations.\n *\n * @param hexString - CBOR data as hex string\n * @param options - Optional parser configuration\n * @returns Decoded value, byte count, and source map\n *\n * @example\n * ```typescript\n * const { value, sourceMap } = decodeWithSourceMap('d87980')\n * // value: { tag: 121, value: [] }\n * // sourceMap: [\n * // { path: '', start: 0, end: 3, majorType: 6, type: 'Tag 121', children: ['.value'] },\n * // { path: '.value', start: 2, end: 3, majorType: 4, type: 'Array', parent: '' }\n * // ]\n *\n * // Use source map for hex-to-JSON linking\n * const entry = sourceMap.find(e => e.path === '.value')\n * console.log(`Value is at bytes ${entry.start}-${entry.end}`)\n * ```\n */\nexport function decodeWithSourceMap(hexString: string, options?: ParseOptions): ParseResultWithMap {\n const { parseWithSourceMap } = useCborParser()\n return parseWithSourceMap(hexString, options)\n}\n\n/**\n * Encode JavaScript value to CBOR\n *\n * Automatically detects value type and uses appropriate CBOR encoding.\n * Supports: numbers, bigints, strings, booleans, null, undefined, Uint8Arrays, arrays, objects, and tagged values.\n *\n * @param value - JavaScript value to encode\n * @param options - Optional encoder configuration\n * @returns CBOR bytes and hex string\n *\n * @throws {Error} If value type is unsupported or encoding fails\n *\n * @example\n * ```typescript\n * // Encode number\n * encode(100) // { hex: \"1864\", bytes: Uint8Array[0x18, 0x64] }\n *\n * // Encode string\n * encode(\"IETF\") // { hex: \"6449455446\", bytes: ... }\n *\n * // Encode array\n * encode([1, 2, 3]) // { hex: \"83010203\", bytes: ... }\n *\n * // Encode map (canonical - sorted keys)\n * encode({ z: 1, a: 2 }, { canonical: true })\n * // Keys will be sorted: { a: 2, z: 1 }\n *\n * // Encode tagged value\n * encode({ tag: 121, value: [] }) // { hex: \"d87980\", bytes: ... }\n * ```\n */\nexport function encode(value: EncodableValue, options?: Partial<EncodeOptions>): EncodeResult {\n const { encode: encodeValue } = useCborEncoder(options)\n return encodeValue(value)\n}\n\n/**\n * Encode JavaScript value to CBOR hex string\n *\n * Convenience function that returns only the hex string (not the bytes).\n *\n * @param value - JavaScript value to encode\n * @param options - Optional encoder configuration\n * @returns CBOR hex string\n *\n * @example\n * ```typescript\n * encodeToHex(100) // \"1864\"\n * encodeToHex([1, 2, 3]) // \"83010203\"\n * encodeToHex({ a: 1 }, { canonical: true }) // \"a16161 01\"\n * ```\n */\nexport function encodeToHex(value: EncodableValue, options?: Partial<EncodeOptions>): string {\n const { encodeToHex: encodeValueToHex } = useCborEncoder(options)\n return encodeValueToHex(value)\n}\n\n/**\n * Encode JavaScript value to CBOR bytes\n *\n * Convenience function that returns only the bytes (not the hex string).\n *\n * @param value - JavaScript value to encode\n * @param options - Optional encoder configuration\n * @returns CBOR bytes as Uint8Array\n *\n * @example\n * ```typescript\n * const bytes = encodeToBytes(100) // Uint8Array[0x18, 0x64]\n * const bytes = encodeToBytes([1, 2, 3]) // Uint8Array[0x83, 0x01, 0x02, 0x03]\n * ```\n */\nexport function encodeToBytes(value: EncodableValue, options?: Partial<EncodeOptions>): Uint8Array {\n const { encodeToBytes: encodeValueToBytes } = useCborEncoder(options)\n return encodeValueToBytes(value)\n}\n\n/**\n * Encode multiple values as CBOR sequence\n *\n * Creates a CBOR sequence (RFC 8742) by concatenating multiple encoded values.\n * Useful for streaming or batch encoding.\n *\n * @param values - Array of values to encode\n * @param options - Optional encoder configuration\n * @returns Concatenated CBOR bytes and hex string\n *\n * @example\n * ```typescript\n * encodeSequence([1, \"hello\", [2, 3]])\n * // Returns concatenated encoding: 0x01 + 0x6568656c6c6f + 0x820203\n * ```\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8742 | RFC 8742 - CBOR Sequences}\n */\nexport function encodeSequence(values: EncodableValue[], options?: Partial<EncodeOptions>): EncodeResult {\n const { encodeSequence: encodeSeq } = useCborEncoder(options)\n return encodeSeq(values)\n}\n\n/**\n * Class-based CBOR decoder\n *\n * Provides an object-oriented interface for CBOR decoding.\n * Useful when you need to maintain decoder state or configuration.\n *\n * @example\n * ```typescript\n * const decoder = new CborDecoder({ strict: true })\n *\n * const result1 = decoder.decode('1864')\n * const result2 = decoder.decode('6449455446')\n *\n * const withMap = decoder.decodeWithSourceMap('d87980')\n * ```\n */\nexport class CborDecoder {\n private options: ParseOptions\n\n /**\n * Create a new CBOR decoder\n *\n * @param options - Parser configuration\n */\n constructor(options?: ParseOptions) {\n this.options = options || {}\n }\n\n /**\n * Decode CBOR hex string\n *\n * @param hexString - CBOR data as hex string\n * @returns Decoded value and byte count\n */\n decode(hexString: string): ParseResult {\n return decode(hexString, this.options)\n }\n\n /**\n * Decode CBOR hex string with source map\n *\n * @param hexString - CBOR data as hex string\n * @returns Decoded value, byte count, and source map\n */\n decodeWithSourceMap(hexString: string): ParseResultWithMap {\n return decodeWithSourceMap(hexString, this.options)\n }\n}\n\n/**\n * Class-based CBOR encoder\n *\n * Provides an object-oriented interface for CBOR encoding.\n * Useful when you need to maintain encoder state or configuration.\n *\n * @example\n * ```typescript\n * const encoder = new CborEncoder({ canonical: true })\n *\n * const result1 = encoder.encode(100)\n * const result2 = encoder.encode([1, 2, 3])\n *\n * const hex = encoder.encodeToHex({ a: 1 }) // Keys will be sorted\n * ```\n */\nexport class CborEncoder {\n private options: Partial<EncodeOptions>\n\n /**\n * Create a new CBOR encoder\n *\n * @param options - Encoder configuration\n */\n constructor(options?: Partial<EncodeOptions>) {\n this.options = options || {}\n }\n\n /**\n * Encode value to CBOR\n *\n * @param value - JavaScript value to encode\n * @returns CBOR bytes and hex string\n */\n encode(value: EncodableValue): EncodeResult {\n return encode(value, this.options)\n }\n\n /**\n * Encode value to CBOR hex string\n *\n * @param value - JavaScript value to encode\n * @returns CBOR hex string\n */\n encodeToHex(value: EncodableValue): string {\n return encodeToHex(value, this.options)\n }\n\n /**\n * Encode value to CBOR bytes\n *\n * @param value - JavaScript value to encode\n * @returns CBOR bytes\n */\n encodeToBytes(value: EncodableValue): Uint8Array {\n return encodeToBytes(value, this.options)\n }\n\n /**\n * Encode multiple values as CBOR sequence\n *\n * @param values - Array of values to encode\n * @returns Concatenated CBOR encoding\n */\n encodeSequence(values: EncodableValue[]): EncodeResult {\n return encodeSequence(values, this.options)\n }\n}\n\n// Import diagnostic notation utilities\nimport { useCborDiagnostic } from './parser/composables/useCborDiagnostic'\nimport type { DiagnosticOptions } from './parser/composables/useCborDiagnostic'\n\n/**\n * Convert a JavaScript value to RFC 8949 diagnostic notation\n *\n * Diagnostic notation is a human-readable representation of CBOR data\n * as defined in RFC 8949 Appendix B.\n *\n * @param value - JavaScript value to convert\n * @param options - Optional formatting options\n * @returns Diagnostic notation string\n *\n * @example\n * ```typescript\n * toDiagnostic(100) // \"100\"\n * toDiagnostic(new Uint8Array([1,2])) // \"h'0102'\"\n * toDiagnostic([1, 2, 3]) // \"[1, 2, 3]\"\n * toDiagnostic({a: 1}) // '{\"a\": 1}'\n * toDiagnostic({tag: 1, value: 123}) // \"1(123)\"\n *\n * // Pretty print\n * toDiagnostic([1, 2], { pretty: true })\n * // \"[\\n 1,\\n 2\\n]\"\n *\n * // Indefinite length\n * toDiagnostic([1, 2], { indefinite: true })\n * // \"[_ 1, 2]\"\n * ```\n */\nexport function toDiagnostic(value: unknown, options?: DiagnosticOptions): string {\n const { toDiagnostic: convert } = useCborDiagnostic()\n return convert(value, options)\n}\n\n/**\n * Decode CBOR and return diagnostic notation\n *\n * Combines decoding and diagnostic conversion in one step.\n *\n * @param hexString - CBOR data as hex string\n * @param options - Optional formatting options\n * @returns Diagnostic notation string\n *\n * @example\n * ```typescript\n * decodeToDiagnostic('1864') // \"100\"\n * decodeToDiagnostic('83010203') // \"[1, 2, 3]\"\n * decodeToDiagnostic('d87980') // \"121([])\"\n * ```\n */\nexport function decodeToDiagnostic(hexString: string, options?: DiagnosticOptions): string {\n const { value } = decode(hexString)\n return toDiagnostic(value, options)\n}\n"]}
@@ -0,0 +1,494 @@
1
+ export { c as useCborCollection, d as useCborFloat, a as useCborInteger, u as useCborParser, b as useCborString, e as useCborTag } from './useCborTag-BfTIV8HM.cjs';
2
+ import { E as EncodableValue, a as EncodeOptions, b as EncodeResult } from './useCborSimpleEncoder-ButVU988.cjs';
3
+ export { D as DEFAULT_ENCODE_OPTIONS, g as EncodeContext, e as useCborCollectionEncoder, u as useCborEncoder, c as useCborIntegerEncoder, f as useCborSimpleEncoder, d as useCborStringEncoder } from './useCborSimpleEncoder-ButVU988.cjs';
4
+ import { P as ParseOptions, a as ParseResult, b as ParseResultWithMap } from './types-DvNlfbKB.cjs';
5
+ 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, c as ParseError, 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';
6
+
7
+ /**
8
+ * useCborDiagnostic - RFC 8949 Appendix B Diagnostic Notation
9
+ *
10
+ * Converts CBOR values to human-readable diagnostic notation as defined
11
+ * in RFC 8949 (Concise Binary Object Representation).
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const { toDiagnostic } = useCborDiagnostic()
16
+ *
17
+ * toDiagnostic(100) // "100"
18
+ * toDiagnostic(new Uint8Array([1,2])) // "h'0102'"
19
+ * toDiagnostic([1, 2, 3]) // "[1, 2, 3]"
20
+ * toDiagnostic({a: 1}) // '{"a": 1}'
21
+ * ```
22
+ */
23
+ /**
24
+ * Options for diagnostic notation output
25
+ */
26
+ interface DiagnosticOptions {
27
+ /** Pretty print with indentation (default: false) */
28
+ pretty?: boolean;
29
+ /** Indentation string for pretty printing (default: ' ') */
30
+ indent?: string;
31
+ /** Maximum depth for nested structures (default: 100) */
32
+ maxDepth?: number;
33
+ /** Mark as indefinite-length (default: false) */
34
+ indefinite?: boolean;
35
+ /** Show byte offsets as comments (default: false) */
36
+ showOffsets?: boolean;
37
+ }
38
+ /**
39
+ * Composable for CBOR diagnostic notation
40
+ */
41
+ declare function useCborDiagnostic(): {
42
+ toDiagnostic: (value: unknown, options?: DiagnosticOptions) => string;
43
+ fromDiagnostic: (diag: string) => unknown;
44
+ toDiagnosticWithType: (value: unknown, majorType: number, options?: DiagnosticOptions) => string;
45
+ };
46
+
47
+ /**
48
+ * PathBuilder - Utilities for creating and manipulating source map paths
49
+ *
50
+ * Path format follows JSON Pointer (RFC 6901) with CBOR-specific extensions:
51
+ * - Array indices: [0], [1], [2]
52
+ * - Object/Map keys: .key, .nested.key
53
+ * - Special markers: [#header], [#content], [#value]
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * import { PathBuilder } from './pathBuilder'
58
+ *
59
+ * const path = PathBuilder.arrayIndex('', 0) // "[0]"
60
+ * const nested = PathBuilder.arrayIndex(path, 1) // "[0][1]"
61
+ * const key = PathBuilder.mapKey(nested, 'amount') // "[0][1].amount"
62
+ * const header = PathBuilder.header(key) // "[0][1].amount[#header]"
63
+ * ```
64
+ */
65
+ /**
66
+ * PathBuilder utility object with methods for creating and manipulating paths
67
+ */
68
+ declare const PathBuilder: {
69
+ /**
70
+ * Create root path (empty string)
71
+ */
72
+ root: () => string;
73
+ /**
74
+ * Create path for array index
75
+ * @param parent - Parent path
76
+ * @param index - Array index (0-based)
77
+ * @returns Path string like "[0]" or "[0][1]"
78
+ */
79
+ arrayIndex: (parent: string, index: number) => string;
80
+ /**
81
+ * Create path for map/object key
82
+ * @param parent - Parent path
83
+ * @param key - Key name (string or number)
84
+ * @returns Path string like ".key" or "[0].key"
85
+ */
86
+ mapKey: (parent: string, key: string | number) => string;
87
+ /**
88
+ * Create path for map key by index (for non-string keys)
89
+ * @param parent - Parent path
90
+ * @param index - Key index in map
91
+ * @returns Path string like "[#key:0]"
92
+ */
93
+ mapKeyIndex: (parent: string, index: number) => string;
94
+ /**
95
+ * Create path for header portion of a value
96
+ * Used for byte strings, text strings, arrays, maps, tags
97
+ * @param parent - Parent path
98
+ * @returns Path string like "[0][#header]"
99
+ */
100
+ header: (parent: string) => string;
101
+ /**
102
+ * Create path for content portion of a value
103
+ * Used for byte strings and text strings
104
+ * @param parent - Parent path
105
+ * @returns Path string like "[0][#content]"
106
+ */
107
+ content: (parent: string) => string;
108
+ /**
109
+ * Create path for tagged value
110
+ * @param parent - Parent path
111
+ * @returns Path string like "[0][#value]"
112
+ */
113
+ tagValue: (parent: string) => string;
114
+ /**
115
+ * Normalize a path by removing special markers (#header, #content, #value)
116
+ * Used for matching paths across different representations
117
+ * @param path - Path to normalize
118
+ * @returns Normalized path without special markers
119
+ */
120
+ normalize: (path: string) => string;
121
+ /**
122
+ * Check if path is a header path
123
+ * @param path - Path to check
124
+ * @returns True if path ends with [#header]
125
+ */
126
+ isHeader: (path: string) => boolean;
127
+ /**
128
+ * Check if path is a content path
129
+ * @param path - Path to check
130
+ * @returns True if path ends with [#content]
131
+ */
132
+ isContent: (path: string) => boolean;
133
+ /**
134
+ * Check if path is a tag value path
135
+ * @param path - Path to check
136
+ * @returns True if path ends with [#value]
137
+ */
138
+ isTagValue: (path: string) => boolean;
139
+ /**
140
+ * Check if path has any special marker
141
+ * @param path - Path to check
142
+ * @returns True if path ends with any special marker
143
+ */
144
+ hasMarker: (path: string) => boolean;
145
+ /**
146
+ * Get parent path (one level up)
147
+ * @param path - Path to get parent of
148
+ * @returns Parent path or null if already at root
149
+ */
150
+ getParent: (path: string) => string | null;
151
+ /**
152
+ * Get the depth (nesting level) of a path
153
+ * @param path - Path to measure
154
+ * @returns Number indicating nesting depth (0 for root)
155
+ */
156
+ getDepth: (path: string) => number;
157
+ /**
158
+ * Parse a path into its components
159
+ * @param path - Path to parse
160
+ * @returns Array of path segments
161
+ */
162
+ parse: (path: string) => Array<{
163
+ type: "index" | "key" | "marker";
164
+ value: string | number;
165
+ }>;
166
+ /**
167
+ * Build a path from segments
168
+ * @param segments - Array of path segments
169
+ * @returns Path string
170
+ */
171
+ build: (segments: Array<{
172
+ type: "index" | "key" | "marker";
173
+ value: string | number;
174
+ }>) => string;
175
+ /**
176
+ * Join multiple path segments
177
+ * @param paths - Path segments to join
178
+ * @returns Combined path
179
+ */
180
+ join: (...paths: string[]) => string;
181
+ /**
182
+ * Check if a path is a descendant of another path
183
+ * @param path - Path to check
184
+ * @param ancestor - Potential ancestor path
185
+ * @returns True if path is a descendant of ancestor
186
+ */
187
+ isDescendantOf: (path: string, ancestor: string) => boolean;
188
+ };
189
+
190
+ /**
191
+ * NACHOS - Not Another CBOR Handling Object System
192
+ *
193
+ * RFC 8949 CBOR (Concise Binary Object Representation) encoder and decoder
194
+ * with full source map support for interactive debugging.
195
+ *
196
+ * @module @marcuspuchalla/nachos
197
+ * @see https://datatracker.ietf.org/doc/html/rfc8949
198
+ *
199
+ * @example
200
+ * ```typescript
201
+ * // Simple decoding
202
+ * import { decode } from '@marcuspuchalla/nachos'
203
+ * const result = decode('1864') // { value: 100, bytesRead: 2 }
204
+ *
205
+ * // Simple encoding
206
+ * import { encode } from '@marcuspuchalla/nachos'
207
+ * const { hex, bytes } = encode(100) // hex: "1864"
208
+ *
209
+ * // With source maps for debugging
210
+ * import { decodeWithSourceMap } from '@marcuspuchalla/nachos'
211
+ * const { value, sourceMap } = decodeWithSourceMap('d87980')
212
+ * // sourceMap links hex bytes to decoded values
213
+ * ```
214
+ */
215
+
216
+ /**
217
+ * Decode CBOR hex string to JavaScript value
218
+ *
219
+ * @param hexString - CBOR data as hex string (e.g., "1864" for integer 100)
220
+ * @param options - Optional parser configuration
221
+ * @returns Decoded value and number of bytes consumed
222
+ *
223
+ * @throws {Error} If input is invalid or malformed CBOR
224
+ *
225
+ * @example
226
+ * ```typescript
227
+ * // Decode integer
228
+ * decode('1864') // { value: 100, bytesRead: 2 }
229
+ *
230
+ * // Decode string
231
+ * decode('6449455446') // { value: "IETF", bytesRead: 5 }
232
+ *
233
+ * // Decode array
234
+ * decode('83010203') // { value: [1, 2, 3], bytesRead: 4 }
235
+ *
236
+ * // With strict validation
237
+ * decode('1864', { strict: true })
238
+ *
239
+ * // With canonical validation
240
+ * decode('a16161 01', { validateCanonical: true })
241
+ * ```
242
+ *
243
+ * @see {@link https://datatracker.ietf.org/doc/html/rfc8949 | RFC 8949}
244
+ */
245
+ declare function decode(hexString: string, options?: ParseOptions): ParseResult;
246
+ /**
247
+ * Decode CBOR hex string with source map generation
248
+ *
249
+ * Source maps provide bidirectional linking between hex bytes and decoded values,
250
+ * enabling interactive debugging visualizations.
251
+ *
252
+ * @param hexString - CBOR data as hex string
253
+ * @param options - Optional parser configuration
254
+ * @returns Decoded value, byte count, and source map
255
+ *
256
+ * @example
257
+ * ```typescript
258
+ * const { value, sourceMap } = decodeWithSourceMap('d87980')
259
+ * // value: { tag: 121, value: [] }
260
+ * // sourceMap: [
261
+ * // { path: '', start: 0, end: 3, majorType: 6, type: 'Tag 121', children: ['.value'] },
262
+ * // { path: '.value', start: 2, end: 3, majorType: 4, type: 'Array', parent: '' }
263
+ * // ]
264
+ *
265
+ * // Use source map for hex-to-JSON linking
266
+ * const entry = sourceMap.find(e => e.path === '.value')
267
+ * console.log(`Value is at bytes ${entry.start}-${entry.end}`)
268
+ * ```
269
+ */
270
+ declare function decodeWithSourceMap(hexString: string, options?: ParseOptions): ParseResultWithMap;
271
+ /**
272
+ * Encode JavaScript value to CBOR
273
+ *
274
+ * Automatically detects value type and uses appropriate CBOR encoding.
275
+ * Supports: numbers, bigints, strings, booleans, null, undefined, Uint8Arrays, arrays, objects, and tagged values.
276
+ *
277
+ * @param value - JavaScript value to encode
278
+ * @param options - Optional encoder configuration
279
+ * @returns CBOR bytes and hex string
280
+ *
281
+ * @throws {Error} If value type is unsupported or encoding fails
282
+ *
283
+ * @example
284
+ * ```typescript
285
+ * // Encode number
286
+ * encode(100) // { hex: "1864", bytes: Uint8Array[0x18, 0x64] }
287
+ *
288
+ * // Encode string
289
+ * encode("IETF") // { hex: "6449455446", bytes: ... }
290
+ *
291
+ * // Encode array
292
+ * encode([1, 2, 3]) // { hex: "83010203", bytes: ... }
293
+ *
294
+ * // Encode map (canonical - sorted keys)
295
+ * encode({ z: 1, a: 2 }, { canonical: true })
296
+ * // Keys will be sorted: { a: 2, z: 1 }
297
+ *
298
+ * // Encode tagged value
299
+ * encode({ tag: 121, value: [] }) // { hex: "d87980", bytes: ... }
300
+ * ```
301
+ */
302
+ declare function encode(value: EncodableValue, options?: Partial<EncodeOptions>): EncodeResult;
303
+ /**
304
+ * Encode JavaScript value to CBOR hex string
305
+ *
306
+ * Convenience function that returns only the hex string (not the bytes).
307
+ *
308
+ * @param value - JavaScript value to encode
309
+ * @param options - Optional encoder configuration
310
+ * @returns CBOR hex string
311
+ *
312
+ * @example
313
+ * ```typescript
314
+ * encodeToHex(100) // "1864"
315
+ * encodeToHex([1, 2, 3]) // "83010203"
316
+ * encodeToHex({ a: 1 }, { canonical: true }) // "a16161 01"
317
+ * ```
318
+ */
319
+ declare function encodeToHex(value: EncodableValue, options?: Partial<EncodeOptions>): string;
320
+ /**
321
+ * Encode JavaScript value to CBOR bytes
322
+ *
323
+ * Convenience function that returns only the bytes (not the hex string).
324
+ *
325
+ * @param value - JavaScript value to encode
326
+ * @param options - Optional encoder configuration
327
+ * @returns CBOR bytes as Uint8Array
328
+ *
329
+ * @example
330
+ * ```typescript
331
+ * const bytes = encodeToBytes(100) // Uint8Array[0x18, 0x64]
332
+ * const bytes = encodeToBytes([1, 2, 3]) // Uint8Array[0x83, 0x01, 0x02, 0x03]
333
+ * ```
334
+ */
335
+ declare function encodeToBytes(value: EncodableValue, options?: Partial<EncodeOptions>): Uint8Array;
336
+ /**
337
+ * Encode multiple values as CBOR sequence
338
+ *
339
+ * Creates a CBOR sequence (RFC 8742) by concatenating multiple encoded values.
340
+ * Useful for streaming or batch encoding.
341
+ *
342
+ * @param values - Array of values to encode
343
+ * @param options - Optional encoder configuration
344
+ * @returns Concatenated CBOR bytes and hex string
345
+ *
346
+ * @example
347
+ * ```typescript
348
+ * encodeSequence([1, "hello", [2, 3]])
349
+ * // Returns concatenated encoding: 0x01 + 0x6568656c6c6f + 0x820203
350
+ * ```
351
+ *
352
+ * @see {@link https://datatracker.ietf.org/doc/html/rfc8742 | RFC 8742 - CBOR Sequences}
353
+ */
354
+ declare function encodeSequence(values: EncodableValue[], options?: Partial<EncodeOptions>): EncodeResult;
355
+ /**
356
+ * Class-based CBOR decoder
357
+ *
358
+ * Provides an object-oriented interface for CBOR decoding.
359
+ * Useful when you need to maintain decoder state or configuration.
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * const decoder = new CborDecoder({ strict: true })
364
+ *
365
+ * const result1 = decoder.decode('1864')
366
+ * const result2 = decoder.decode('6449455446')
367
+ *
368
+ * const withMap = decoder.decodeWithSourceMap('d87980')
369
+ * ```
370
+ */
371
+ declare class CborDecoder {
372
+ private options;
373
+ /**
374
+ * Create a new CBOR decoder
375
+ *
376
+ * @param options - Parser configuration
377
+ */
378
+ constructor(options?: ParseOptions);
379
+ /**
380
+ * Decode CBOR hex string
381
+ *
382
+ * @param hexString - CBOR data as hex string
383
+ * @returns Decoded value and byte count
384
+ */
385
+ decode(hexString: string): ParseResult;
386
+ /**
387
+ * Decode CBOR hex string with source map
388
+ *
389
+ * @param hexString - CBOR data as hex string
390
+ * @returns Decoded value, byte count, and source map
391
+ */
392
+ decodeWithSourceMap(hexString: string): ParseResultWithMap;
393
+ }
394
+ /**
395
+ * Class-based CBOR encoder
396
+ *
397
+ * Provides an object-oriented interface for CBOR encoding.
398
+ * Useful when you need to maintain encoder state or configuration.
399
+ *
400
+ * @example
401
+ * ```typescript
402
+ * const encoder = new CborEncoder({ canonical: true })
403
+ *
404
+ * const result1 = encoder.encode(100)
405
+ * const result2 = encoder.encode([1, 2, 3])
406
+ *
407
+ * const hex = encoder.encodeToHex({ a: 1 }) // Keys will be sorted
408
+ * ```
409
+ */
410
+ declare class CborEncoder {
411
+ private options;
412
+ /**
413
+ * Create a new CBOR encoder
414
+ *
415
+ * @param options - Encoder configuration
416
+ */
417
+ constructor(options?: Partial<EncodeOptions>);
418
+ /**
419
+ * Encode value to CBOR
420
+ *
421
+ * @param value - JavaScript value to encode
422
+ * @returns CBOR bytes and hex string
423
+ */
424
+ encode(value: EncodableValue): EncodeResult;
425
+ /**
426
+ * Encode value to CBOR hex string
427
+ *
428
+ * @param value - JavaScript value to encode
429
+ * @returns CBOR hex string
430
+ */
431
+ encodeToHex(value: EncodableValue): string;
432
+ /**
433
+ * Encode value to CBOR bytes
434
+ *
435
+ * @param value - JavaScript value to encode
436
+ * @returns CBOR bytes
437
+ */
438
+ encodeToBytes(value: EncodableValue): Uint8Array;
439
+ /**
440
+ * Encode multiple values as CBOR sequence
441
+ *
442
+ * @param values - Array of values to encode
443
+ * @returns Concatenated CBOR encoding
444
+ */
445
+ encodeSequence(values: EncodableValue[]): EncodeResult;
446
+ }
447
+
448
+ /**
449
+ * Convert a JavaScript value to RFC 8949 diagnostic notation
450
+ *
451
+ * Diagnostic notation is a human-readable representation of CBOR data
452
+ * as defined in RFC 8949 Appendix B.
453
+ *
454
+ * @param value - JavaScript value to convert
455
+ * @param options - Optional formatting options
456
+ * @returns Diagnostic notation string
457
+ *
458
+ * @example
459
+ * ```typescript
460
+ * toDiagnostic(100) // "100"
461
+ * toDiagnostic(new Uint8Array([1,2])) // "h'0102'"
462
+ * toDiagnostic([1, 2, 3]) // "[1, 2, 3]"
463
+ * toDiagnostic({a: 1}) // '{"a": 1}'
464
+ * toDiagnostic({tag: 1, value: 123}) // "1(123)"
465
+ *
466
+ * // Pretty print
467
+ * toDiagnostic([1, 2], { pretty: true })
468
+ * // "[\n 1,\n 2\n]"
469
+ *
470
+ * // Indefinite length
471
+ * toDiagnostic([1, 2], { indefinite: true })
472
+ * // "[_ 1, 2]"
473
+ * ```
474
+ */
475
+ declare function toDiagnostic(value: unknown, options?: DiagnosticOptions): string;
476
+ /**
477
+ * Decode CBOR and return diagnostic notation
478
+ *
479
+ * Combines decoding and diagnostic conversion in one step.
480
+ *
481
+ * @param hexString - CBOR data as hex string
482
+ * @param options - Optional formatting options
483
+ * @returns Diagnostic notation string
484
+ *
485
+ * @example
486
+ * ```typescript
487
+ * decodeToDiagnostic('1864') // "100"
488
+ * decodeToDiagnostic('83010203') // "[1, 2, 3]"
489
+ * decodeToDiagnostic('d87980') // "121([])"
490
+ * ```
491
+ */
492
+ declare function decodeToDiagnostic(hexString: string, options?: DiagnosticOptions): string;
493
+
494
+ export { CborDecoder, CborEncoder, type DiagnosticOptions, EncodableValue, EncodeOptions, EncodeResult, ParseOptions, ParseResult, ParseResultWithMap, PathBuilder, decode, decodeToDiagnostic, decodeWithSourceMap, encode, encodeSequence, encodeToBytes, encodeToHex, toDiagnostic, useCborDiagnostic };