@fulmenhq/tsfulmen 0.2.0 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +70 -0
- package/README.md +61 -7
- package/config/crucible-ts/agentic/roles/README.md +3 -3
- package/config/crucible-ts/library/fulencode/fixtures/README.md +18 -0
- package/config/crucible-ts/library/fulencode/fixtures/bom/bom.yaml +14 -0
- package/config/crucible-ts/library/fulencode/fixtures/detection/detection.yaml +12 -0
- package/config/crucible-ts/library/fulencode/fixtures/invalid-encodings/base64.yaml +10 -0
- package/config/crucible-ts/library/fulencode/fixtures/normalization/text-safe.yaml +10 -0
- package/config/crucible-ts/library/fulencode/fixtures/telemetry/telemetry-test-cases.yaml +24 -0
- package/config/crucible-ts/library/fulencode/fixtures/valid-encodings/base64.yaml +11 -0
- package/config/crucible-ts/taxonomy/library/platform-modules/v1.0.0/modules.yaml +2 -2
- package/config/crucible-ts/taxonomy/metrics.yaml +79 -1
- package/dist/appidentity/index.d.ts +31 -109
- package/dist/appidentity/index.js +369 -60
- package/dist/appidentity/index.js.map +1 -1
- package/dist/config/index.d.ts +46 -1
- package/dist/config/index.js +427 -62
- package/dist/config/index.js.map +1 -1
- package/dist/crucible/index.js +367 -59
- package/dist/crucible/index.js.map +1 -1
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +367 -59
- package/dist/errors/index.js.map +1 -1
- package/dist/foundry/index.d.ts +2 -1
- package/dist/foundry/index.js +368 -60
- package/dist/foundry/index.js.map +1 -1
- package/dist/fulencode/index.d.ts +102 -0
- package/dist/fulencode/index.js +806 -0
- package/dist/fulencode/index.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +370 -61
- package/dist/index.js.map +1 -1
- package/dist/pathfinder/index.d.ts +1 -1
- package/dist/pathfinder/index.js +367 -59
- package/dist/pathfinder/index.js.map +1 -1
- package/dist/reports/license-inventory.csv +31 -24
- package/dist/schema/index.d.ts +16 -3
- package/dist/schema/index.js +368 -60
- package/dist/schema/index.js.map +1 -1
- package/dist/signals/index.d.ts +483 -395
- package/dist/signals/index.js +368 -60
- package/dist/signals/index.js.map +1 -1
- package/dist/telemetry/http/index.js +368 -59
- package/dist/telemetry/http/index.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/telemetry/index.js +367 -59
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/prometheus/index.d.ts +1 -1
- package/dist/telemetry/prometheus/index.js +369 -59
- package/dist/telemetry/prometheus/index.js.map +1 -1
- package/dist/{types-BJswWpQC.d.ts → types-DdoeE7F5.d.ts} +1 -1
- package/dist/types-Dv5TERCM.d.ts +108 -0
- package/package.json +13 -8
- package/schemas/crucible-ts/library/fulencode/v1.0.0/README.md +37 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/bom-result.schema.json +48 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/decode-options.schema.json +60 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/decoding-result.schema.json +70 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/detect-options.schema.json +25 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/detection-result.schema.json +57 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/encode-options.schema.json +71 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/encoding-result.schema.json +57 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +8 -4
- package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-error.schema.json +66 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/normalization-result.schema.json +73 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/normalize-options.schema.json +44 -0
- package/schemas/crucible-ts/meta/README.md +38 -2
- package/schemas/crucible-ts/meta/draft-04/schema.json +222 -0
- package/schemas/crucible-ts/meta/draft-06/schema.json +218 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/applicator.json +93 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/content.json +21 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/core.json +58 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/format.json +15 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/meta-data.json +35 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/validation.json +119 -0
- package/schemas/crucible-ts/meta/draft-2019-09/offline.schema.json +148 -0
- package/schemas/crucible-ts/meta/draft-2019-09/schema.json +62 -0
- package/schemas/crucible-ts/meta/fixtures/draft-04-sample.json +16 -0
- package/schemas/crucible-ts/meta/fixtures/draft-06-sample.json +16 -0
- package/schemas/crucible-ts/meta/fixtures/draft-07-sample.json +34 -0
- package/schemas/crucible-ts/meta/fixtures/draft-2019-09-sample.json +21 -0
- package/schemas/crucible-ts/meta/fixtures/draft-2020-12-sample.json +21 -0
- package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.yaml +16 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/PROVENANCE.md +64 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/access-tier.dimension.json +103 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/retention-lifecycle.dimension.json +103 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/schema-stability.dimension.json +100 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/sensitivity.dimension.json +130 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/velocity-mode.dimension.json +79 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volatility.dimension.json +72 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volume-tier.dimension.json +66 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/catalog/classifiers/README.md +29 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/access-tier-classification.md +163 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/classifiers-framework.md +157 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/data-sensitivity-classification.md +259 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/retention-lifecycle-classification.md +200 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/schema-stability-classification.md +205 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/velocity-mode-classification.md +222 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volatility-classification.md +209 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volume-tier-classification.md +200 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/ailink/v0/README.md +48 -0
- package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/prompt.schema.json +4 -18
- package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/search-response.schema.json +7 -37
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/dimension-definition.schema.json +247 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/sensitivity-level.schema.json +67 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/error-response.schema.json +59 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.data.json +102 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.schema.json +101 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/release-phase.schema.json +18 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/types.schema.json +177 -0
- package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +0 -43
- /package/schemas/crucible-ts/upstream/3leaps/{agentic → crucible/schemas/agentic}/v0/role-prompt.schema.json +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/crucible/fulhash/types.ts","../../src/fulhash/algorithms/crc32.ts","../../src/fulhash/algorithms/crc32c.ts","../../src/fulhash/algorithms/sha256.ts","../../src/fulhash/errors.ts","../../src/fulhash/algorithms/xxh3.ts","../../src/fulhash/digest.ts","../../src/fulhash/hash.ts","../../src/fulencode/errors.ts","../../src/fulencode/types.ts","../../src/fulencode/fulencode.ts","../../src/fulencode/base32.ts","../../src/fulencode/index.ts"],"names":["Algorithm","hex","hexToBytes","hashBytes","crc32","hashString","hash"],"mappings":";;;;;;;;;;;;;;AAAA,IAQY,SAAA;AARZ,IAAA,UAAA,GAAA,KAAA,CAAA;AAAA,EAAA,+BAAA,GAAA;AAQO,IAAK,SAAA,qBAAAA,UAAAA,KAAL;AAKL,MAAAA,WAAA,UAAA,CAAA,GAAW,UAAA;AAMX,MAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AAMT,MAAAA,WAAA,OAAA,CAAA,GAAQ,OAAA;AAMR,MAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AAvBC,MAAA,OAAAA,UAAAA;AAAA,IAAA,CAAA,EAAA,SAAA,IAAA,EAAA,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACcZ,SAAS,WAAW,GAAA,EAAyB;AAC3C,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,CAAC,CAAA;AAC9B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,KAAA;AACT;AAEA,eAAsB,UAAU,IAAA,EAAuC;AACrE,EAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,IAAI,CAAA;AAC5B,EAAA,OAAO,WAAW,GAAG,CAAA;AACvB;AAEA,eAAsB,UAAA,CACpB,GAAA,EACA,QAAA,GAA2B,MAAA,EACN;AACrB,EAAA,IAAI,aAAa,MAAA,EAAQ;AAGvB,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAA;AACrC,IAAA,MAAMC,IAAAA,GAAM,MAAM,KAAA,CAAM,GAAG,CAAA;AAC3B,IAAA,OAAO,WAAWA,IAAG,CAAA;AAAA,EACvB;AACA,EAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,GAAG,CAAA;AAC3B,EAAA,OAAO,WAAW,GAAG,CAAA;AACvB;AAhDA,IAAA,UAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACwBA,SAASC,YAAW,GAAA,EAAyB;AAC3C,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,CAAC,CAAA;AAC9B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,KAAA;AACT;AAEA,eAAsBC,WAAU,IAAA,EAAuC;AACrE,EAAA,MAAM,GAAA,GAAM,MAAMC,KAAAA,CAAM,IAAA,EAAM,iBAAiB,CAAA;AAC/C,EAAA,OAAOF,YAAW,GAAG,CAAA;AACvB;AAEA,eAAsBG,WAAAA,CACpB,GAAA,EACA,QAAA,GAA2B,MAAA,EACN;AACrB,EAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAA;AACrC,IAAA,MAAMJ,IAAAA,GAAM,MAAMG,KAAAA,CAAM,GAAA,EAAK,iBAAiB,CAAA;AAC9C,IAAA,OAAOF,YAAWD,IAAG,CAAA;AAAA,EACvB;AACA,EAAA,MAAM,GAAA,GAAM,MAAMG,KAAAA,CAAM,GAAA,EAAK,iBAAiB,CAAA;AAC9C,EAAA,OAAOF,YAAW,GAAG,CAAA;AACvB;AAhDA,IAkBM,iBAAA;AAlBN,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kCAAA,GAAA;AAkBA,IAAM,iBAAA,GAAoB,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACZnB,SAASC,WAAU,IAAA,EAA8B;AACtD,EAAA,MAAMG,KAAAA,GAAO,WAAW,QAAQ,CAAA;AAChC,EAAAA,KAAAA,CAAK,OAAO,IAAI,CAAA;AAChB,EAAA,OAAO,IAAI,UAAA,CAAWA,KAAAA,CAAK,MAAA,EAAQ,CAAA;AACrC;AAEO,SAASD,WAAAA,CAAW,GAAA,EAAa,QAAA,GAA2B,MAAA,EAAoB;AACrF,EAAA,MAAMC,KAAAA,GAAO,WAAW,QAAQ,CAAA;AAChC,EAAAA,KAAAA,CAAK,MAAA,CAAO,GAAA,EAAK,QAAQ,CAAA;AACzB,EAAA,OAAO,IAAI,UAAA,CAAWA,KAAAA,CAAK,MAAA,EAAQ,CAAA;AACrC;AAhBA,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kCAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACAA,IAIa,YAAA,EAQA,2BAUA,oBAAA,EAQA,0BAAA;AA9Bb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uBAAA,GAAA;AAIO,IAAM,YAAA,GAAN,MAAM,aAAA,SAAqB,KAAA,CAAM;AAAA,MACtC,YAAY,OAAA,EAAiB;AAC3B,QAAA,KAAA,CAAM,OAAO,CAAA;AACb,QAAA,IAAA,CAAK,IAAA,GAAO,cAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,aAAA,CAAa,SAAS,CAAA;AAAA,MACpD;AAAA,KACF;AAEO,IAAM,yBAAA,GAAN,MAAM,0BAAA,SAAkC,YAAA,CAAa;AAAA,MAC1D,WAAA,CAAY,WAAmB,mBAAA,EAA+B;AAC5D,QAAA,KAAA;AAAA,UACE,0BAA0B,SAAS,CAAA,yBAAA,EAA4B,mBAAA,CAAoB,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,SAC/F;AACA,QAAA,IAAA,CAAK,IAAA,GAAO,2BAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,0BAAA,CAA0B,SAAS,CAAA;AAAA,MACjE;AAAA,KACF;AAEO,IAAM,oBAAA,GAAN,MAAM,qBAAA,SAA6B,YAAA,CAAa;AAAA,MACrD,WAAA,CAAY,UAAkB,MAAA,EAAgB;AAC5C,QAAA,KAAA,CAAM,CAAA,kBAAA,EAAqB,QAAQ,CAAA,GAAA,EAAM,MAAM,CAAA,gCAAA,CAAkC,CAAA;AACjF,QAAA,IAAA,CAAK,IAAA,GAAO,sBAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,qBAAA,CAAqB,SAAS,CAAA;AAAA,MAC5D;AAAA,KACF;AAEO,IAAM,0BAAA,GAAN,MAAM,2BAAA,SAAmC,oBAAA,CAAqB;AAAA,MACnE,WAAA,CAAY,UAAkB,MAAA,EAAgB;AAC5C,QAAA,KAAA,CAAM,UAAU,MAAM,CAAA;AACtB,QAAA,IAAA,CAAK,IAAA,GAAO,4BAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,2BAAA,CAA2B,SAAS,CAAA;AAAA,MAClE;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;AC7BA,SAASJ,YAAW,GAAA,EAAyB;AAC3C,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,EAAE,CAAA;AAC/B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,KAAA;AACT;AAWA,eAAsBC,WAAU,IAAA,EAAuC;AAErE,EAAA,MAAM,GAAA,GAAM,MAAM,SAAA,CAAU,IAAI,CAAA;AAChC,EAAA,OAAOD,YAAW,GAAG,CAAA;AACvB;AAYA,eAAsBG,WAAAA,CACpB,GAAA,EACA,QAAA,GAA+B,MAAA,EACV;AACrB,EAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,IAAA,MAAM,IAAI,YAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAGA,EAAA,MAAM,GAAA,GAAM,MAAM,SAAA,CAAU,GAAG,CAAA;AAC/B,EAAA,OAAOH,YAAW,GAAG,CAAA;AACvB;AArDA,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,gCAAA,GAAA;AACA,IAAA,WAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACDA,IAWa,MAAA;AAXb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uBAAA,GAAA;AAIA,IAAA,UAAA,EAAA;AACA,IAAA,WAAA,EAAA;AAMO,IAAM,MAAA,GAAN,MAAM,OAAA,CAAkC;AAAA,MACpC,SAAA;AAAA,MACQ,MAAA;AAAA,MACR,GAAA;AAAA,MACA,SAAA;AAAA,MAET,WAAA,CAAY,WAAsB,KAAA,EAAmB;AACnD,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,MAAA,GAAS,IAAI,UAAA,CAAW,KAAK,CAAA;AAClC,QAAA,IAAA,CAAK,MAAM,KAAA,CAAM,IAAA,CAAK,KAAK,MAAM,CAAA,CAC9B,IAAI,CAAC,CAAA,KAAM,EAAE,QAAA,CAAS,EAAE,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAC1C,KAAK,EAAE,CAAA;AACV,QAAA,IAAA,CAAK,YAAY,CAAA,EAAG,IAAA,CAAK,SAAS,CAAA,CAAA,EAAI,KAAK,GAAG,CAAA,CAAA;AAC9C,QAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAAA,MACpB;AAAA,MAEA,IAAI,KAAA,GAAkB;AACpB,QAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA;AAAA,MAC/B;AAAA,MAEA,MAAA,GAAiB;AACf,QAAA,OAAO;AAAA,UACL,WAAW,IAAA,CAAK,SAAA;AAAA,UAChB,KAAK,IAAA,CAAK,GAAA;AAAA,UACV,WAAW,IAAA,CAAK;AAAA,SAClB;AAAA,MACF;AAAA,MAEA,QAAA,GAAmB;AACjB,QAAA,OAAO,IAAA,CAAK,SAAA;AAAA,MACd;AAAA,MAEA,OAAO,MAAM,SAAA,EAA2B;AACtC,QAAA,IAAI,CAAC,SAAA,CAAU,QAAA,CAAS,GAAG,CAAA,EAAG;AAC5B,UAAA,MAAM,IAAI,0BAAA,CAA2B,SAAA,EAAW,mBAAmB,CAAA;AAAA,QACrE;AAEA,QAAA,MAAM,CAAC,YAAA,EAAc,GAAG,IAAI,SAAA,CAAU,KAAA,CAAM,KAAK,CAAC,CAAA;AAElD,QAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,GAAA,EAAK;AACzB,UAAA,MAAM,IAAI,0BAAA,CAA2B,SAAA,EAAW,gBAAgB,CAAA;AAAA,QAClE;AAEA,QAAA,MAAM,SAAA,GAAY,YAAA;AAClB,QAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,SAAS,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,EAAG;AACjD,UAAA,MAAM,IAAI,yBAAA,CAA0B,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,QACzE;AAEA,QAAA,IAAI,CAAC,aAAA,CAAc,IAAA,CAAK,GAAG,CAAA,EAAG;AAC5B,UAAA,MAAM,IAAI,oBAAA;AAAA,YACR,SAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAEA,QAAA,IAAI,cAAA;AACJ,QAAA,QAAQ,SAAA;AAAW,UACjB,KAAA,UAAA;AACE,YAAA,cAAA,GAAiB,EAAA;AACjB,YAAA;AAAA,UACF,KAAA,QAAA;AACE,YAAA,cAAA,GAAiB,EAAA;AACjB,YAAA;AAAA,UACF,KAAA,OAAA;AAAA,UACA,KAAA,QAAA;AACE,YAAA,cAAA,GAAiB,CAAA;AACjB,YAAA;AAAA,UACF;AAEE,YAAA,MAAM,IAAI,yBAAA,CAA0B,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA;AAG3E,QAAA,IAAI,GAAA,CAAI,WAAW,cAAA,EAAgB;AACjC,UAAA,MAAM,IAAI,oBAAA;AAAA,YACR,SAAA;AAAA,YACA,0BAA0B,SAAS,CAAA,WAAA,EAAc,cAAc,CAAA,MAAA,EAAS,IAAI,MAAM,CAAA;AAAA,WACpF;AAAA,QACF;AAEA,QAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,GAAA,CAAI,SAAS,CAAC,CAAA;AAC3C,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA,EAAG;AACtC,UAAA,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA,GAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,QACxD;AAEA,QAAA,OAAO,IAAI,OAAA,CAAO,SAAA,EAAW,KAAK,CAAA;AAAA,MACpC;AAAA,MAEA,OAAO,KAAA,EAAwB;AAC7B,QAAA,IAAI,IAAA,CAAK,SAAA,KAAc,KAAA,CAAM,SAAA,EAAW;AACtC,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,IAAI,IAAA,CAAK,GAAA,KAAQ,KAAA,CAAM,GAAA,EAAK;AAC1B,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,aAAa,MAAA,CAAO,IAAA,EAA2B,QAAA,EAAoC;AACjF,QAAA,MAAM,QAAA,GAAW,OAAA,CAAO,KAAA,CAAM,QAAQ,CAAA;AACtC,QAAA,MAAM,EAAE,IAAA,EAAAI,KAAAA,EAAK,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,SAAA,EAAA,EAAA,YAAA,CAAA,CAAA;AACvB,QAAA,MAAM,MAAA,GAAS,MAAMA,KAAAA,CAAK,IAAA,EAAM,EAAE,SAAA,EAAW,QAAA,CAAS,WAAW,CAAA;AACjE,QAAA,OAAO,MAAA,CAAO,OAAO,QAAQ,CAAA;AAAA,MAC/B;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClHA,IAAA,YAAA,GAAA,EAAA;AAAA,QAAA,CAAA,YAAA,EAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,SAAA,EAAA,MAAAH,UAAAA;AAAA,EAAA,UAAA,EAAA,MAAAE;AAAA,CAAA,CAAA;AAaA,eAAsB,IAAA,CAAK,OAA4B,OAAA,EAAwC;AAC7F,EAAA,MAAM,YAAY,OAAA,EAAS,SAAA,IAAA,UAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,SAAS,QAAA,IAAY,MAAA;AAEtC,EAAA,IAAI,KAAA;AAEJ,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAA,QAAA;AACE,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,KAAA,GAAeA,WAAAA,CAAW,OAAO,QAAQ,CAAA;AAAA,MAC3C,CAAA,MAAO;AACL,QAAA,KAAA,GAAeF,WAAU,KAAK,CAAA;AAAA,MAChC;AACA,MAAA;AAAA,IACF,KAAA,UAAA;AACE,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,IAAI,aAAa,MAAA,EAAQ;AAEvB,UAAA,KAAA,GAAQ,MAAWA,UAAAA,CAAU,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,QAC3D,CAAA,MAAO;AACL,UAAA,KAAA,GAAQ,MAAWE,WAAAA,CAAW,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7C;AAAA,MACF,CAAA,MAAO;AACL,QAAA,KAAA,GAAQ,MAAWF,WAAU,KAAK,CAAA;AAAA,MACpC;AACA,MAAA;AAAA,IACF,KAAA,OAAA;AACE,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,KAAA,GAAQ,MAAY,UAAA,CAAW,KAAA,EAAO,QAAQ,CAAA;AAAA,MAChD,CAAA,MAAO;AACL,QAAA,KAAA,GAAQ,MAAY,UAAU,KAAK,CAAA;AAAA,MACrC;AACA,MAAA;AAAA,IACF,KAAA,QAAA;AACE,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,KAAA,GAAQ,MAAaE,WAAAA,CAAW,KAAA,EAAO,QAAQ,CAAA;AAAA,MACjD,CAAA,MAAO;AACL,QAAA,KAAA,GAAQ,MAAaF,WAAU,KAAK,CAAA;AAAA,MACtC;AACA,MAAA;AAAA,IACF;AACE,MAAA,MAAM,IAAI,yBAAA,CAA0B,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA;AAG3E,EAAA,OAAO,IAAI,MAAA,CAAO,SAAA,EAAW,KAAK,CAAA;AACpC;AAEA,eAAsBE,WAAAA,CAAW,KAAa,OAAA,EAAwC;AACpF,EAAA,OAAO,IAAA,CAAK,KAAK,OAAO,CAAA;AAC1B;AAEA,eAAsBF,UAAAA,CAAU,MAAkB,OAAA,EAAwC;AACxF,EAAA,OAAO,IAAA,CAAK,MAAM,OAAO,CAAA;AAC3B;AAlEA,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qBAAA,GAAA;AAIA,IAAA,UAAA,EAAA;AACA,IAAA,UAAA,EAAA;AACA,IAAA,WAAA,EAAA;AACA,IAAA,WAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAEA,IAAA,WAAA,EAAA;AACA,IAAA,WAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACIO,IAAM,cAAA,GAAN,cAA6B,KAAA,CAAM;AAAA,EACxB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EAET,YAAY,IAAA,EAQhB;AACD,IAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAClB,IAAA,IAAA,CAAK,IAAA,GAAO,gBAAA;AACZ,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,YAAY,IAAA,CAAK,SAAA;AACtB,IAAA,IAAA,CAAK,cAAc,IAAA,CAAK,WAAA;AACxB,IAAA,IAAA,CAAK,eAAe,IAAA,CAAK,YAAA;AACzB,IAAA,IAAA,CAAK,UAAU,IAAA,CAAK,OAAA;AACpB,IAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAW;AAC5B,MAAC,IAAA,CAAuC,QAAQ,IAAA,CAAK,KAAA;AAAA,IACvD;AAAA,EACF;AACF;;;ACtCO,IAAM,cAAA,GAAiB;AAAA,EAC5B,MAAA,EAAQ,QAAA;AAAA,EACR,SAAA,EAAW,WAAA;AAAA,EACX,UAAA,EAAY,YAAA;AAAA,EACZ,MAAA,EAAQ,QAAA;AAAA,EACR,SAAA,EAAW,WAAA;AAAA,EACX,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,OAAA;AAAA,EACN,OAAA,EAAS,UAAA;AAAA,EACT,OAAA,EAAS,UAAA;AAAA,EACT,UAAA,EAAY,YAAA;AAAA,EACZ,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO;AACT;;;ACjBA,UAAA,EAAA;AACA,SAAA,EAAA;;;ACDA,IAAM,uBAAA,GAA0B,kCAAA;AAChC,IAAM,0BAAA,GAA6B,kCAAA;AAEnC,SAAS,YAAY,OAAA,EAAyC;AAC5D,EAAA,OAAO,OAAA,KAAY,WAAW,uBAAA,GAA0B,0BAAA;AAC1D;AAEO,SAAS,YAAA,CACd,IAAA,EACA,OAAA,EACA,OAAA,EACQ;AACR,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAE9B,EAAA,MAAM,QAAA,GAAW,YAAY,OAAO,CAAA;AACpC,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,GAAA,GAAM,EAAA;AAEV,EAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,IAAA,KAAA,GAAS,SAAS,CAAA,GAAK,CAAA;AACvB,IAAA,IAAA,IAAQ,CAAA;AACR,IAAA,OAAO,QAAQ,CAAA,EAAG;AAChB,MAAA,MAAM,GAAA,GAAO,KAAA,KAAW,IAAA,GAAO,CAAA,GAAM,EAAA;AACrC,MAAA,GAAA,IAAO,SAAS,GAAG,CAAA;AACnB,MAAA,IAAA,IAAQ,CAAA;AAAA,IACV;AAAA,EACF;AAEA,EAAA,IAAI,OAAO,CAAA,EAAG;AACZ,IAAA,MAAM,GAAA,GAAO,KAAA,IAAU,CAAA,GAAI,IAAA,GAAS,EAAA;AACpC,IAAA,GAAA,IAAO,SAAS,GAAG,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,IAAA,OAAO,GAAA,CAAI,MAAA,GAAS,CAAA,KAAM,CAAA,EAAG,GAAA,IAAO,GAAA;AAAA,EACtC;AAEA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,eAAe,QAAA,EAAuC;AAC7D,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAoB;AACpC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,IAAA,MAAM,EAAA,GAAK,SAAS,CAAC,CAAA;AACrB,IAAA,GAAA,CAAI,GAAA,CAAI,IAAI,CAAC,CAAA;AACb,IAAA,GAAA,CAAI,GAAA,CAAI,EAAA,CAAG,WAAA,EAAY,EAAG,CAAC,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,GAAA;AACT;AAEO,SAAS,YAAA,CACd,KAAA,EACA,OAAA,EACA,OAAA,EACY;AACZ,EAAA,MAAM,QAAA,GAAW,YAAY,OAAO,CAAA;AACpC,EAAA,MAAM,SAAA,GAAY,eAAe,QAAQ,CAAA;AAEzC,EAAA,IAAI,CAAA,GAAI,KAAA;AACR,EAAA,IAAI,QAAQ,gBAAA,EAAkB;AAC5B,IAAA,CAAA,GAAI,CAAA,CAAE,OAAA,CAAQ,aAAA,EAAe,EAAE,CAAA;AAAA,EACjC;AAGA,EAAA,MAAM,QAAA,GAAW,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAC9B,EAAA,IAAI,aAAa,EAAA,EAAI;AACnB,IAAA,IAAI,QAAQ,eAAA,EAAiB;AAC3B,MAAA,KAAA,IAAS,CAAA,GAAI,QAAA,EAAU,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACxC,QAAA,IAAI,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA,EAAK;AAChB,UAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,QAC1C;AAAA,MACF;AACA,MAAA,IAAI,CAAA,CAAE,MAAA,GAAS,CAAA,KAAM,CAAA,EAAG;AACtB,QAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,MACnD;AAAA,IACF;AACA,IAAA,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AAAA,EACzB;AAEA,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,MAAM,MAAgB,EAAC;AAEvB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACjC,IAAA,MAAM,EAAA,GAAK,EAAE,CAAC,CAAA;AACd,IAAA,MAAM,CAAA,GAAI,SAAA,CAAU,GAAA,CAAI,EAAE,CAAA;AAC1B,IAAA,IAAI,MAAM,MAAA,EAAW;AACnB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,EAAE,CAAA,CAAE,CAAA;AAAA,IACnD;AAEA,IAAA,KAAA,GAAS,SAAS,CAAA,GAAK,CAAA;AACvB,IAAA,IAAA,IAAQ,CAAA;AACR,IAAA,IAAI,QAAQ,CAAA,EAAG;AACb,MAAA,GAAA,CAAI,IAAA,CAAM,KAAA,KAAW,IAAA,GAAO,CAAA,GAAM,GAAG,CAAA;AACrC,MAAA,IAAA,IAAQ,CAAA;AAAA,IACV;AAAA,EACF;AAEA,EAAA,OAAO,UAAA,CAAW,KAAK,GAAG,CAAA;AAC5B;;;ADxFA,SAAS,SAAA,CAAU,IAAA,EAAc,UAAA,EAAoB,UAAA,EAAmC;AACtF,EAAA,IAAI,UAAA,IAAc,GAAG,OAAO,IAAA;AAC5B,EAAA,IAAI,GAAA,GAAM,EAAA;AACV,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,EAAQ,KAAK,UAAA,EAAY;AAChD,IAAA,GAAA,IAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,UAAU,CAAA;AACnC,IAAA,IAAI,CAAA,GAAI,UAAA,GAAa,IAAA,CAAK,MAAA,EAAQ,GAAA,IAAO,UAAA;AAAA,EAC3C;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,YAAA,CAAa,OAA4B,MAAA,EAAoC;AACpF,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,IAAI,cAAA,CAAe;AAAA,MACvB,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS,WAAW,MAAM,CAAA,oCAAA,CAAA;AAAA,MAC1B,SAAA,EAAW,QAAA;AAAA,MACX,YAAA,EAAc,MAAA;AAAA,MACd,OAAA,EAAS,EAAE,QAAA,EAAU,YAAA,EAAc,QAAQ,QAAA;AAAS,KACrD,CAAA;AAAA,EACH;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,OAAe,gBAAA,EAAmC;AAC7E,EAAA,IAAI,CAAC,kBAAkB,OAAO,KAAA;AAC9B,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,aAAA,EAAe,EAAE,CAAA;AACxC;AAEA,SAAS,gBAAgB,IAAA,EAA0B;AACjD,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,SAAS,QAAQ,CAAA;AAC5C;AAEA,SAAS,mBAAmB,IAAA,EAA0B;AAEpD,EAAA,OAAO,eAAA,CAAgB,IAAI,CAAA,CAAE,OAAA,CAAQ,OAAO,GAAG,CAAA,CAAE,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AACrE;AAEA,SAAS,kBAAA,CAAmB,GAAW,OAAA,EAA0B;AAC/D,EAAA,OAAO,OAAA,GAAU,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA,GAAS,CAAC,CAAA,GAAI,GAAG,GAAG,CAAA,GAAI,CAAA,CAAE,OAAA,CAAQ,QAAQ,EAAE,CAAA;AACpF;AAEA,SAAS,kBAAA,CACP,KAAA,EACA,OAAA,EACA,eAAA,EACY;AACZ,EAAA,MAAM,OAAA,GAAU,OAAA,KAAY,QAAA,GAAW,wBAAA,GAA2B,yBAAA;AAClE,EAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,EAAG;AACxB,IAAA,MAAM,IAAI,MAAM,2BAA2B,CAAA;AAAA,EAC7C;AAEA,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,KAAM,CAAA,EAAG;AAC1B,MAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,IACzC;AACA,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAClC,IAAA,IAAI,aAAa,EAAA,EAAI;AACnB,MAAA,KAAA,IAAS,CAAA,GAAI,QAAA,EAAU,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAC5C,QAAA,IAAI,MAAM,CAAC,CAAA,KAAM,KAAK,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,CAAA,GAAI,OAAA,KAAY,WAAA,GAAc,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,GAAI,KAAA;AAClF,EAAA,OAAO,WAAW,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,QAAQ,CAAC,CAAA;AACjD;AAEA,eAAe,0BAAA,CACb,MACA,SAAA,EAC4D;AAC5D,EAAA,IAAI,CAAC,SAAA,EAAW,OAAO,EAAC;AAExB,EAAA,IAAI,SAAA,KAAc,QAAA,IAAY,SAAA,KAAc,UAAA,EAAY;AACtD,IAAA,MAAM,IAAI,cAAA,CAAe;AAAA,MACvB,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS,mCAAmC,SAAS,CAAA,CAAA;AAAA,MACrD,SAAA,EAAW,QAAA;AAAA,MACX,OAAA,EAAS,EAAE,SAAA;AAAU,KACtB,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,MAAA,GAAS,MAAMA,UAAAA,CAAU,IAAA,EAAM;AAAA,IACnC,WAAW,SAAA,KAAc,QAAA,GAAA,QAAA,gBAAA,UAAA;AAAA,GAC1B,CAAA;AAED,EAAA,OAAO,EAAE,QAAA,EAAU,MAAA,CAAO,QAAA,EAAS,EAAG,mBAAmB,SAAA,EAAU;AACrE;AAEA,eAAsB,MAAA,CACpB,KAAA,EACA,MAAA,EACA,OAAA,GAAyB,EAAC,EACD;AACzB,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,IAAI,QAAQ,aAAA,EAAe;AACzB,IAAA,MAAM,IAAI,cAAA,CAAe;AAAA,MACvB,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS,kDAAA;AAAA,MACT,SAAA,EAAW,QAAA;AAAA,MACX,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,IAAW,IAAA;AACnC,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,IAAA;AACzC,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,IAAA;AACzC,EAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,cAAA,IAAkB,GAAA,GAAM,IAAA,GAAO,IAAA;AAC9D,EAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,IAAW,QAAA;AAEnC,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,UAAA;AAEJ,EAAA,IAAI;AACF,IAAA,QAAQ,MAAA;AAAQ,MACd,KAAK,QAAA,EAAU;AACb,QAAA,UAAA,GAAa,YAAA,CAAa,OAAO,MAAM,CAAA;AACvC,QAAA,IAAA,GAAO,kBAAA,CAAmB,eAAA,CAAgB,UAAU,CAAA,EAAG,OAAO,CAAA;AAC9D,QAAA;AAAA,MACF;AAAA,MACA,KAAK,WAAA,EAAa;AAChB,QAAA,UAAA,GAAa,YAAA,CAAa,OAAO,MAAM,CAAA;AACvC,QAAA,IAAA,GAAO,kBAAA,CAAmB,kBAAA,CAAmB,UAAU,CAAA,EAAG,OAAO,CAAA;AACjE,QAAA;AAAA,MACF;AAAA,MACA,KAAK,YAAA,EAAc;AACjB,QAAA,UAAA,GAAa,YAAA,CAAa,OAAO,MAAM,CAAA;AACvC,QAAA,IAAA,GAAO,kBAAA,CAAmB,eAAA,CAAgB,UAAU,CAAA,EAAG,KAAK,CAAA;AAC5D,QAAA;AAAA,MACF;AAAA,MACA,KAAK,KAAA,EAAO;AACV,QAAA,UAAA,GAAa,YAAA,CAAa,OAAO,MAAM,CAAA;AACvC,QAAA,MAAM,MAAM,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,SAAS,KAAK,CAAA;AAClD,QAAA,IAAA,GAAA,CAAQ,QAAQ,OAAA,IAAW,OAAA,MAAa,OAAA,GAAU,GAAA,CAAI,aAAY,GAAI,GAAA;AACtE,QAAA;AAAA,MACF;AAAA,MACA,KAAK,QAAA;AAAA,MACL,KAAK,WAAA,EAAa;AAChB,QAAA,UAAA,GAAa,YAAA,CAAa,OAAO,MAAM,CAAA;AACvC,QAAA,IAAA,GAAO,YAAA,CAAa,UAAA,EAAY,MAAA,EAAQ,EAAE,SAAS,CAAA;AACnD,QAAA;AAAA,MACF;AAAA,MACA,KAAK,OAAA,EAAS;AACZ,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAE7B,UAAA,IAAA,GAAO,KAAA;AACP,UAAA,UAAA,GAAa,IAAI,WAAA,EAAY,CAAE,MAAA,CAAO,KAAK,CAAA;AAC3C,UAAA,QAAA,CAAS,KAAK,0BAA0B,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,UAAA,GAAa,KAAA;AACb,UAAA,IAAI,YAAY,QAAA,EAAU;AACxB,YAAA,IAAA,GAAO,IAAI,YAAY,OAAA,EAAS,EAAE,OAAO,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,UAAU,CAAA;AAAA,UACpE,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,IAAI,YAAY,OAAA,EAAS,EAAE,OAAO,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,UAAU,CAAA;AAAA,UACrE;AAAA,QACF;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,UAAA,EAAY;AACf,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,UAAA,IAAA,GAAO,KAAA;AACP,UAAA,UAAA,GAAa,WAAW,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,SAAS,CAAC,CAAA;AAC1D,UAAA,QAAA,CAAS,KAAK,0BAA0B,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,UAAA,GAAa,KAAA;AACb,UAAA,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,SAAS,SAAS,CAAA;AAAA,QACnD;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,UAAA,EAAY;AACf,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,UAAA,IAAA,GAAO,KAAA;AACP,UAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,SAAS,CAAA;AACvC,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAI,EAAA,CAAG,MAAA,EAAQ,KAAK,CAAA,EAAG;AACzC,YAAA,MAAM,CAAA,GAAI,GAAG,CAAC,CAAA;AACd,YAAA,EAAA,CAAG,CAAC,CAAA,GAAI,EAAA,CAAG,CAAA,GAAI,CAAC,CAAA;AAChB,YAAA,EAAA,CAAG,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AAAA,UACd;AACA,UAAA,UAAA,GAAa,UAAA,CAAW,KAAK,EAAE,CAAA;AAC/B,UAAA,QAAA,CAAS,KAAK,0BAA0B,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,UAAA,GAAa,KAAA;AACb,UAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA;AACtC,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAI,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC9C,YAAA,MAAM,CAAA,GAAI,QAAQ,CAAC,CAAA;AACnB,YAAA,OAAA,CAAQ,CAAC,CAAA,GAAI,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAA;AAC1B,YAAA,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AAAA,UACnB;AACA,UAAA,IAAA,GAAO,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,QACnC;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,YAAA,EAAc;AACjB,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,UAAA,IAAA,GAAO,KAAA;AACP,UAAA,UAAA,GAAa,WAAW,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,QAAQ,CAAC,CAAA;AACzD,UAAA,QAAA,CAAS,KAAK,0BAA0B,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,UAAA,GAAa,KAAA;AACb,UAAA,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,SAAS,QAAQ,CAAA;AAAA,QAClD;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,OAAA,EAAS;AACZ,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,UAAA,IAAA,GAAO,KAAA;AACP,UAAA,UAAA,GAAa,WAAW,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,OAAO,CAAC,CAAA;AACxD,UAAA,QAAA,CAAS,KAAK,0BAA0B,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,UAAA,GAAa,KAAA;AACb,UAAA,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,SAAS,OAAO,CAAA;AAAA,QACjD;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,cAAA,CAAe;AAAA,UACvB,IAAA,EAAM,oBAAA;AAAA,UACN,OAAA,EAAS,2CAAA;AAAA,UACT,SAAA,EAAW,QAAA;AAAA,UACX,YAAA,EAAc;AAAA,SACf,CAAA;AAAA,MACH;AAAA,MACA,SAAS;AACP,QAAA,MAAM,IAAI,cAAA,CAAe;AAAA,UACvB,IAAA,EAAM,oBAAA;AAAA,UACN,OAAA,EAAS,gCAAgC,MAAM,CAAA,CAAA;AAAA,UAC/C,SAAA,EAAW,QAAA;AAAA,UACX,YAAA,EAAc;AAAA,SACf,CAAA;AAAA,MACH;AAAA;AACF,EACF,SAAS,GAAA,EAAK;AACZ,IAAA,IAAI,GAAA,YAAe,gBAAgB,MAAM,GAAA;AACzC,IAAA,MAAM,IAAI,cAAA,CAAe;AAAA,MACvB,IAAA,EAAM,eAAA;AAAA,MACN,SAAU,GAAA,CAAc,OAAA;AAAA,MACxB,SAAA,EAAW,QAAA;AAAA,MACX,YAAA,EAAc,MAAA;AAAA,MACd,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,eAAe,IAAA,EAAM;AACvB,IAAA,IAAA,GAAO,SAAA,CAAU,IAAA,EAAM,UAAA,EAAY,UAAU,CAAA;AAAA,EAC/C;AAEA,EAAA,IAAI,IAAA,CAAK,SAAS,cAAA,EAAgB;AAChC,IAAA,MAAM,IAAI,cAAA,CAAe;AAAA,MACvB,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS,0CAA0C,cAAc,CAAA,CAAA,CAAA;AAAA,MACjE,SAAA,EAAW,QAAA;AAAA,MACX,YAAA,EAAc,MAAA;AAAA,MACd,OAAA,EAAS,EAAE,cAAA,EAAgB,UAAA,EAAY,KAAK,MAAA;AAAO,KACpD,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,QAAA,GAAW,MAAM,0BAAA,CAA2B,UAAA,EAAY,QAAQ,eAAe,CAAA;AAErF,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAW,UAAA,CAAW,MAAA;AAAA,IACtB,YAAY,IAAA,CAAK,MAAA;AAAA,IACjB,QAAA;AAAA,IACA,GAAG;AAAA,GACL;AACF;AAEA,eAAsB,MAAA,CACpB,KAAA,EACA,MAAA,EACA,OAAA,GAAyB,EAAC,EACD;AACzB,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,MAAM,gBAAA,GACJ,OAAA,CAAQ,gBAAA,KACP,MAAA,KAAW,QAAA,IACV,MAAA,KAAW,WAAA,IACX,MAAA,KAAW,KAAA,IACX,MAAA,KAAW,QAAA,IACX,MAAA,KAAW,WAAA,CAAA;AACf,EAAA,MAAM,eAAA,GACJ,QAAQ,eAAA,KACP,MAAA,KAAW,YACV,MAAA,KAAW,WAAA,IACX,MAAA,KAAW,QAAA,IACX,MAAA,KAAW,WAAA,CAAA;AACf,EAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,cAAA,IAAkB,GAAA,GAAM,IAAA,GAAO,IAAA;AAC9D,EAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,IAAW,QAAA;AAEnC,EAAA,MAAM,QAAA,GAAW,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,OAAO,IAAA,CAAK,KAAK,CAAA,CAAE,QAAA,CAAS,MAAM,CAAA;AACvF,EAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,QAAA,EAAU,gBAAgB,CAAA;AACjE,EAAA,IAAI,OAAA;AACJ,EAAA,MAAM,kBAAA,GAAqB,CAAA;AAE3B,EAAA,IAAI;AACF,IAAA,QAAQ,MAAA;AAAQ,MACd,KAAK,QAAA,EAAU;AACb,QAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,UAAA,EAAY,IAAI,CAAA;AAC7C,QAAA,OAAA,GACE,OAAA,KAAY,QAAA,GACR,kBAAA,CAAmB,CAAA,EAAG,QAAA,EAAU,eAAe,CAAA,GAC/C,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC9C,QAAA;AAAA,MACF;AAAA,MACA,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,UAAA,EAAY,IAAI,CAAA;AAC7C,QAAA,OAAA,GACE,OAAA,KAAY,WACR,kBAAA,CAAmB,CAAA,EAAG,aAAa,eAAe,CAAA,GAClD,WAAW,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,CAAE,OAAA,CAAQ,MAAM,GAAG,CAAA,CAAE,QAAQ,IAAA,EAAM,GAAG,CAAA,EAAG,QAAQ,CAAC,CAAA;AACpF,QAAA;AAAA,MACF;AAAA,MACA,KAAK,YAAA,EAAc;AACjB,QAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,UAAA,EAAY,IAAI,CAAA;AAC7C,QAAA,OAAA,GAAU,WAAW,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,QAAQ,CAAC,CAAA;AAClD,QAAA,IAAI,eAAA,EAAiB,QAAA,CAAS,IAAA,CAAK,gDAAgD,CAAA;AACnF,QAAA;AAAA,MACF;AAAA,MACA,KAAK,KAAA,EAAO;AACV,QAAA,MAAM,CAAA,GAAI,UAAA;AACV,QAAA,IAAI,YAAY,QAAA,EAAU;AACxB,UAAA,IAAI,CAAC,iBAAiB,IAAA,CAAK,CAAC,KAAK,CAAA,CAAE,MAAA,GAAS,MAAM,CAAA,EAAG;AACnD,YAAA,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAAA,UACrC;AAAA,QACF;AACA,QAAA,OAAA,GAAU,WAAW,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,KAAK,CAAC,CAAA;AAC/C,QAAA;AAAA,MACF;AAAA,MACA,KAAK,QAAA;AAAA,MACL,KAAK,WAAA,EAAa;AAChB,QAAA,OAAA,GAAU,YAAA,CAAa,YAAY,MAAA,EAAQ;AAAA,UACzC,gBAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA;AAAA,MACF;AAAA,MACA,KAAK,OAAA,EAAS;AAEZ,QAAA,OAAA,GAAU,IAAI,aAAY,CAAE,MAAA,CAAO,OAAO,KAAA,KAAU,QAAA,GAAW,QAAQ,QAAQ,CAAA;AAC/E,QAAA;AAAA,MACF;AAAA,MACA,KAAK,UAAA,EAAY;AACf,QAAA,OAAA,GAAU,UAAA,CAAW,IAAA;AAAA,UACnB,OAAO,IAAA,CAAK,OAAO,UAAU,QAAA,GAAW,KAAA,GAAQ,UAAU,SAAS;AAAA,SACrE;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,UAAA,EAAY;AACf,QAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,OAAO,UAAU,QAAA,GAAW,KAAA,GAAQ,UAAU,SAAS,CAAA;AAC/E,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAI,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC1C,UAAA,MAAM,CAAA,GAAI,IAAI,CAAC,CAAA;AACf,UAAA,GAAA,CAAI,CAAC,CAAA,GAAI,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA;AAClB,UAAA,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AAAA,QACf;AACA,QAAA,OAAA,GAAU,UAAA,CAAW,KAAK,GAAG,CAAA;AAC7B,QAAA;AAAA,MACF;AAAA,MACA,KAAK,YAAA,EAAc;AACjB,QAAA,OAAA,GAAU,UAAA,CAAW,IAAA;AAAA,UACnB,OAAO,IAAA,CAAK,OAAO,UAAU,QAAA,GAAW,KAAA,GAAQ,UAAU,QAAQ;AAAA,SACpE;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,OAAA,EAAS;AACZ,QAAA,OAAA,GAAU,UAAA,CAAW,IAAA;AAAA,UACnB,OAAO,IAAA,CAAK,OAAO,UAAU,QAAA,GAAW,KAAA,GAAQ,UAAU,OAAO;AAAA,SACnE;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,cAAA,CAAe;AAAA,UACvB,IAAA,EAAM,oBAAA;AAAA,UACN,OAAA,EAAS,2CAAA;AAAA,UACT,SAAA,EAAW,QAAA;AAAA,UACX,WAAA,EAAa;AAAA,SACd,CAAA;AAAA,MACH;AAAA,MACA,SAAS;AACP,QAAA,MAAM,IAAI,cAAA,CAAe;AAAA,UACvB,IAAA,EAAM,oBAAA;AAAA,UACN,OAAA,EAAS,gCAAgC,MAAM,CAAA,CAAA;AAAA,UAC/C,SAAA,EAAW,QAAA;AAAA,UACX,WAAA,EAAa;AAAA,SACd,CAAA;AAAA,MACH;AAAA;AACF,EACF,SAAS,GAAA,EAAK;AACZ,IAAA,IAAI,GAAA,YAAe,gBAAgB,MAAM,GAAA;AACzC,IAAA,MAAM,IAAI,cAAA,CAAe;AAAA,MACvB,IAAA,EAAM,eAAA;AAAA,MACN,SAAU,GAAA,CAAc,OAAA;AAAA,MACxB,SAAA,EAAW,QAAA;AAAA,MACX,WAAA,EAAa,MAAA;AAAA,MACb,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAS,cAAA,EAAgB;AACnC,IAAA,MAAM,IAAI,cAAA,CAAe;AAAA,MACvB,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS,0CAA0C,cAAc,CAAA,CAAA,CAAA;AAAA,MACjE,SAAA,EAAW,QAAA;AAAA,MACX,WAAA,EAAa,MAAA;AAAA,MACb,OAAA,EAAS,EAAE,cAAA,EAAgB,UAAA,EAAY,QAAQ,MAAA;AAAO,KACvD,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,QAAA,GAAW,MAAM,0BAAA,CAA2B,OAAA,EAAS,QAAQ,eAAe,CAAA;AAElF,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,MAAA;AAAA,IACA,SAAA,EAAW,OAAO,KAAA,KAAU,QAAA,GAAW,OAAO,UAAA,CAAW,KAAA,EAAO,MAAM,CAAA,GAAI,KAAA,CAAM,MAAA;AAAA,IAChF,YAAY,OAAA,CAAQ,MAAA;AAAA,IACpB,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,GAAG;AAAA,GACL;AACF;;;AE3aO,IAAM,OAAA,GAAU;AAQhB,IAAM,SAAA,GAAY;AAAA,EACvB,MAAA;AAAA,EACA;AACF","file":"index.js","sourcesContent":["/**\n * FulHash Types\n * Code generated by scripts/codegen/generate-fulhash-types.ts; DO NOT EDIT.\n */\n\n/**\n * Supported hashing algorithms for FulHash\n */\nexport enum Algorithm {\n /**\n * XXH3 (128-bit)\n * Fast non-cryptographic hash (default). Excellent collision resistance, extremely high throughput (50GB/s+).\n */\n XXH3_128 = \"xxh3-128\",\n\n /**\n * SHA-256\n * Cryptographic security standard. Resistant to intentional collisions. Use for security verification.\n */\n SHA256 = \"sha256\",\n\n /**\n * CRC-32 (IEEE)\n * 32-bit Cyclic Redundancy Check. Standard for GZIP/ZIP/PNG legacy format interoperability.\n */\n CRC32 = \"crc32\",\n\n /**\n * CRC-32C (Castagnoli)\n * 32-bit CRC (Castagnoli). HW accelerated (SSE4.2/ARMv8). Use for cloud storage (GCS, AWS) and networking.\n */\n CRC32C = \"crc32c\",\n}\n\n/**\n * Standard digest payload returned by FulHash helpers\n */\nexport interface Digest {\n /**\n * Hash algorithm identifier\n */\n algorithm: \"xxh3-128\" | \"crc32\" | \"crc32c\" | \"sha256\";\n\n /**\n * Lowercase hexadecimal representation of the digest\n */\n hex: string;\n\n /**\n * Canonical string representation '<algorithm>:<hex>'\n */\n formatted: string;\n\n /**\n * Raw digest bytes (optional)\n */\n bytes?: number[];\n}\n","import type { IHasher } from \"hash-wasm\";\nimport { crc32, createCRC32 } from \"hash-wasm\";\n\n// Local definition to avoid importing from hash-wasm/dist/lib/util which is not a public export\ntype IDataType =\n | string\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Float32Array\n | Float64Array\n | DataView\n | ArrayBuffer\n | SharedArrayBuffer;\n\n/**\n * Convert hex string to Uint8Array\n * @internal\n */\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(4);\n for (let i = 0; i < 4; i++) {\n bytes[i] = Number.parseInt(hex.substr(i * 2, 2), 16);\n }\n return bytes;\n}\n\nexport async function hashBytes(data: Uint8Array): Promise<Uint8Array> {\n const hex = await crc32(data);\n return hexToBytes(hex);\n}\n\nexport async function hashString(\n str: string,\n encoding: BufferEncoding = \"utf8\",\n): Promise<Uint8Array> {\n if (encoding !== \"utf8\") {\n // hash-wasm only supports string input as UTF-8\n // For other encodings, convert to Buffer first\n const buf = Buffer.from(str, encoding);\n const hex = await crc32(buf);\n return hexToBytes(hex);\n }\n const hex = await crc32(str);\n return hexToBytes(hex);\n}\n\n// Ensure the hasher we return respects the IHasher interface correctly\ninterface CRC32Hasher extends IHasher {\n update(data: IDataType): IHasher;\n}\n\nexport async function createHasher(): Promise<CRC32Hasher> {\n const hasher = await createCRC32();\n return hasher as unknown as CRC32Hasher;\n}\n","import type { IHasher } from \"hash-wasm\";\nimport { crc32, createCRC32 } from \"hash-wasm\";\n\n// Local definition to avoid importing from hash-wasm/dist/lib/util\ntype IDataType =\n | string\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Float32Array\n | Float64Array\n | DataView\n | ArrayBuffer\n | SharedArrayBuffer;\n\nconst CRC32C_POLYNOMIAL = 0x82f63b78;\n\n/**\n * Convert hex string to Uint8Array\n * @internal\n */\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(4);\n for (let i = 0; i < 4; i++) {\n bytes[i] = Number.parseInt(hex.substr(i * 2, 2), 16);\n }\n return bytes;\n}\n\nexport async function hashBytes(data: Uint8Array): Promise<Uint8Array> {\n const hex = await crc32(data, CRC32C_POLYNOMIAL);\n return hexToBytes(hex);\n}\n\nexport async function hashString(\n str: string,\n encoding: BufferEncoding = \"utf8\",\n): Promise<Uint8Array> {\n if (encoding !== \"utf8\") {\n const buf = Buffer.from(str, encoding);\n const hex = await crc32(buf, CRC32C_POLYNOMIAL);\n return hexToBytes(hex);\n }\n const hex = await crc32(str, CRC32C_POLYNOMIAL);\n return hexToBytes(hex);\n}\n\ninterface CRC32Hasher extends IHasher {\n update(data: IDataType): IHasher;\n}\n\nexport async function createHasher(): Promise<CRC32Hasher> {\n const hasher = await createCRC32(CRC32C_POLYNOMIAL);\n return hasher as unknown as CRC32Hasher;\n}\n","/**\n * SHA-256 algorithm adapter using Node.js crypto module\n */\n\nimport { createHash } from \"node:crypto\";\n\nexport function hashBytes(data: Uint8Array): Uint8Array {\n const hash = createHash(\"sha256\");\n hash.update(data);\n return new Uint8Array(hash.digest());\n}\n\nexport function hashString(str: string, encoding: BufferEncoding = \"utf8\"): Uint8Array {\n const hash = createHash(\"sha256\");\n hash.update(str, encoding);\n return new Uint8Array(hash.digest());\n}\n","/**\n * Error classes for FulHash module\n */\n\nexport class FulHashError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"FulHashError\";\n Object.setPrototypeOf(this, FulHashError.prototype);\n }\n}\n\nexport class UnsupportedAlgorithmError extends FulHashError {\n constructor(algorithm: string, supportedAlgorithms: string[]) {\n super(\n `Unsupported algorithm \"${algorithm}\". Supported algorithms: ${supportedAlgorithms.join(\", \")}`,\n );\n this.name = \"UnsupportedAlgorithmError\";\n Object.setPrototypeOf(this, UnsupportedAlgorithmError.prototype);\n }\n}\n\nexport class InvalidChecksumError extends FulHashError {\n constructor(checksum: string, reason: string) {\n super(`Invalid checksum \"${checksum}\": ${reason}. Expected format: algorithm:hex`);\n this.name = \"InvalidChecksumError\";\n Object.setPrototypeOf(this, InvalidChecksumError.prototype);\n }\n}\n\nexport class InvalidChecksumFormatError extends InvalidChecksumError {\n constructor(checksum: string, reason: string) {\n super(checksum, reason);\n this.name = \"InvalidChecksumFormatError\";\n Object.setPrototypeOf(this, InvalidChecksumFormatError.prototype);\n }\n}\n\nexport class DigestStateError extends FulHashError {\n constructor(operation: string) {\n super(`Cannot ${operation}: digest already finalized. Call reset() to reuse hasher.`);\n this.name = \"DigestStateError\";\n Object.setPrototypeOf(this, DigestStateError.prototype);\n }\n}\n","import { xxhash128 } from \"hash-wasm\";\nimport { FulHashError } from \"../errors.js\";\n\n/**\n * Convert hex string to Uint8Array\n * @internal\n */\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = Number.parseInt(hex.substr(i * 2, 2), 16);\n }\n return bytes;\n}\n\n/**\n * Hash bytes using XXH3-128 algorithm\n *\n * Uses the cached hash-wasm xxhash128() helper for optimal performance.\n * The WASM module is initialized once and reused across all calls.\n *\n * @param data - Input data as Uint8Array\n * @returns Hash digest as Uint8Array (16 bytes)\n */\nexport async function hashBytes(data: Uint8Array): Promise<Uint8Array> {\n // Use cached xxhash128 helper - returns hex string\n const hex = await xxhash128(data);\n return hexToBytes(hex);\n}\n\n/**\n * Hash string using XXH3-128 algorithm\n *\n * Uses the cached hash-wasm xxhash128() helper for optimal performance.\n * The WASM module is initialized once and reused across all calls.\n *\n * @param str - Input string\n * @param encoding - Character encoding (only 'utf8' supported)\n * @returns Hash digest as Uint8Array (16 bytes)\n */\nexport async function hashString(\n str: string,\n encoding: \"utf8\" | \"utf16le\" = \"utf8\",\n): Promise<Uint8Array> {\n if (encoding !== \"utf8\") {\n throw new FulHashError(\n \"XXH3-128 only supports UTF-8 encoding. Use utf8 encoding or convert data to Uint8Array.\",\n );\n }\n\n // Use cached xxhash128 helper directly on string\n const hex = await xxhash128(str);\n return hexToBytes(hex);\n}\n","/**\n * Digest implementation - immutable hash result container\n */\n\nimport { Algorithm, type Digest as DigestInterface } from \"../crucible/fulhash/types.js\";\nimport {\n InvalidChecksumError,\n InvalidChecksumFormatError,\n UnsupportedAlgorithmError,\n} from \"./errors.js\";\n\nexport class Digest implements DigestInterface {\n readonly algorithm: Algorithm;\n private readonly _bytes: Uint8Array;\n readonly hex: string;\n readonly formatted: string;\n\n constructor(algorithm: Algorithm, bytes: Uint8Array) {\n this.algorithm = algorithm;\n this._bytes = new Uint8Array(bytes);\n this.hex = Array.from(this._bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n this.formatted = `${this.algorithm}:${this.hex}`;\n Object.freeze(this);\n }\n\n get bytes(): number[] {\n return Array.from(this._bytes);\n }\n\n toJSON(): object {\n return {\n algorithm: this.algorithm,\n hex: this.hex,\n formatted: this.formatted,\n };\n }\n\n toString(): string {\n return this.formatted;\n }\n\n static parse(formatted: string): Digest {\n if (!formatted.includes(\":\")) {\n throw new InvalidChecksumFormatError(formatted, \"missing separator\");\n }\n\n const [algorithmStr, hex] = formatted.split(\":\", 2);\n\n if (!algorithmStr || !hex) {\n throw new InvalidChecksumFormatError(formatted, \"invalid format\");\n }\n\n const algorithm = algorithmStr as Algorithm;\n if (!Object.values(Algorithm).includes(algorithm)) {\n throw new UnsupportedAlgorithmError(algorithm, Object.values(Algorithm));\n }\n\n if (!/^[0-9a-f]+$/.test(hex)) {\n throw new InvalidChecksumError(\n formatted,\n \"hex must contain only lowercase hexadecimal characters\",\n );\n }\n\n let expectedLength: number;\n switch (algorithm) {\n case Algorithm.XXH3_128:\n expectedLength = 32;\n break;\n case Algorithm.SHA256:\n expectedLength = 64;\n break;\n case Algorithm.CRC32:\n case Algorithm.CRC32C:\n expectedLength = 8;\n break;\n default:\n // Should have been caught by Object.values check, but TS safety\n throw new UnsupportedAlgorithmError(algorithm, Object.values(Algorithm));\n }\n\n if (hex.length !== expectedLength) {\n throw new InvalidChecksumError(\n formatted,\n `invalid hex length for ${algorithm}: expected ${expectedLength}, got ${hex.length}`,\n );\n }\n\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(hex.slice(i, i + 2), 16);\n }\n\n return new Digest(algorithm, bytes);\n }\n\n equals(other: Digest): boolean {\n if (this.algorithm !== other.algorithm) {\n return false;\n }\n if (this.hex !== other.hex) {\n return false;\n }\n return true;\n }\n\n static async verify(data: string | Uint8Array, checksum: string): Promise<boolean> {\n const expected = Digest.parse(checksum);\n const { hash } = await import(\"./hash.js\");\n const actual = await hash(data, { algorithm: expected.algorithm });\n return actual.equals(expected);\n }\n}\n","/**\n * Block hashing helpers for one-shot hashing operations\n */\n\nimport { Algorithm } from \"../crucible/fulhash/types.js\";\nimport * as crc32 from \"./algorithms/crc32.js\";\nimport * as crc32c from \"./algorithms/crc32c.js\";\nimport * as sha256 from \"./algorithms/sha256.js\";\nimport * as xxh3 from \"./algorithms/xxh3.js\";\nimport type { HashOptions } from \"./definitions.js\";\nimport { Digest } from \"./digest.js\";\nimport { UnsupportedAlgorithmError } from \"./errors.js\";\n\nexport async function hash(input: string | Uint8Array, options?: HashOptions): Promise<Digest> {\n const algorithm = options?.algorithm ?? Algorithm.XXH3_128;\n const encoding = options?.encoding ?? \"utf8\";\n\n let bytes: Uint8Array;\n\n switch (algorithm) {\n case Algorithm.SHA256:\n if (typeof input === \"string\") {\n bytes = sha256.hashString(input, encoding);\n } else {\n bytes = sha256.hashBytes(input);\n }\n break;\n case Algorithm.XXH3_128:\n if (typeof input === \"string\") {\n if (encoding !== \"utf8\") {\n // Fallback via buffer if non-utf8 is requested, as xxh3-wasm is utf8 only\n bytes = await xxh3.hashBytes(Buffer.from(input, encoding));\n } else {\n bytes = await xxh3.hashString(input, \"utf8\");\n }\n } else {\n bytes = await xxh3.hashBytes(input);\n }\n break;\n case Algorithm.CRC32:\n if (typeof input === \"string\") {\n bytes = await crc32.hashString(input, encoding);\n } else {\n bytes = await crc32.hashBytes(input);\n }\n break;\n case Algorithm.CRC32C:\n if (typeof input === \"string\") {\n bytes = await crc32c.hashString(input, encoding);\n } else {\n bytes = await crc32c.hashBytes(input);\n }\n break;\n default:\n throw new UnsupportedAlgorithmError(algorithm, Object.values(Algorithm));\n }\n\n return new Digest(algorithm, bytes);\n}\n\nexport async function hashString(str: string, options?: HashOptions): Promise<Digest> {\n return hash(str, options);\n}\n\nexport async function hashBytes(data: Uint8Array, options?: HashOptions): Promise<Digest> {\n return hash(data, options);\n}\n","import type { EncodingFormat } from \"./types.js\";\n\nexport type FulencodeOperation = \"encode\" | \"decode\" | \"detect\" | \"normalize\" | \"bom\";\n\nexport interface FulencodeErrorDetails {\n byteOffset?: number;\n codepointOffset?: number;\n detectedEncoding?: string;\n confidence?: number;\n invalidBytes?: number[];\n expected?: string;\n actual?: string;\n [key: string]: unknown;\n}\n\nexport class FulencodeError extends Error {\n public readonly code: string;\n public readonly operation: FulencodeOperation;\n public readonly inputFormat?: EncodingFormat;\n public readonly outputFormat?: EncodingFormat;\n public readonly details?: FulencodeErrorDetails;\n\n public constructor(args: {\n code: string;\n message: string;\n operation: FulencodeOperation;\n inputFormat?: EncodingFormat;\n outputFormat?: EncodingFormat;\n details?: FulencodeErrorDetails;\n cause?: unknown;\n }) {\n super(args.message);\n this.name = \"FulencodeError\";\n this.code = args.code;\n this.operation = args.operation;\n this.inputFormat = args.inputFormat;\n this.outputFormat = args.outputFormat;\n this.details = args.details;\n if (args.cause !== undefined) {\n (this as unknown as { cause: unknown }).cause = args.cause;\n }\n }\n}\n","/**\n * Fulencode types - canonical encoding/decoding interfaces.\n */\n\nexport const EncodingFormat = {\n BASE64: \"base64\",\n BASE64URL: \"base64url\",\n BASE64_RAW: \"base64_raw\",\n BASE32: \"base32\",\n BASE32HEX: \"base32hex\",\n HEX: \"hex\",\n UTF8: \"utf-8\",\n UTF16LE: \"utf-16le\",\n UTF16BE: \"utf-16be\",\n ISO_8859_1: \"iso-8859-1\",\n CP1252: \"cp1252\",\n ASCII: \"ascii\",\n} as const;\n\nexport type EncodingFormat = (typeof EncodingFormat)[keyof typeof EncodingFormat];\n\nexport type OnErrorMode = \"strict\" | \"replace\" | \"ignore\";\nexport type DecodeOnErrorMode = OnErrorMode | \"fallback\";\n\nexport interface EncodeOptions {\n padding?: boolean;\n hexCase?: \"upper\" | \"lower\";\n lineLength?: number | null;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n maxEncodedSize?: number;\n\n computeChecksum?: string;\n embedChecksum?: boolean;\n\n onError?: OnErrorMode;\n}\n\nexport interface EncodingResult {\n data: string;\n format: EncodingFormat;\n inputSize: number;\n outputSize: number;\n checksum?: string;\n checksumAlgorithm?: string;\n warnings: string[];\n}\n\nexport interface DecodeOptions {\n verifyChecksum?: boolean;\n computeChecksum?: string;\n maxDecodedSize?: number;\n\n onError?: DecodeOnErrorMode;\n fallbackFormats?: EncodingFormat[];\n\n ignoreWhitespace?: boolean;\n validatePadding?: boolean;\n}\n\nexport interface DecodingResult {\n data: Uint8Array;\n format: EncodingFormat;\n inputSize: number;\n outputSize: number;\n checksum?: string;\n checksumVerified?: boolean;\n checksumAlgorithm?: string;\n warnings: string[];\n correctionsApplied: number;\n}\n","import { Algorithm } from \"../crucible/fulhash/types.js\";\nimport { hashBytes } from \"../fulhash/hash.js\";\nimport { decodeBase32, encodeBase32 } from \"./base32.js\";\nimport { FulencodeError } from \"./errors.js\";\nimport type {\n DecodeOptions,\n DecodingResult,\n EncodeOptions,\n EncodingFormat,\n EncodingResult,\n} from \"./types.js\";\n\nfunction wrapLines(data: string, lineLength: number, lineEnding: \"\\n\" | \"\\r\\n\"): string {\n if (lineLength <= 0) return data;\n let out = \"\";\n for (let i = 0; i < data.length; i += lineLength) {\n out += data.slice(i, i + lineLength);\n if (i + lineLength < data.length) out += lineEnding;\n }\n return out;\n}\n\nfunction requireBytes(input: Uint8Array | string, format: EncodingFormat): Uint8Array {\n if (typeof input === \"string\") {\n throw new FulencodeError({\n code: \"INVALID_INPUT_TYPE\",\n message: `Format '${format}' requires binary input (Uint8Array)`,\n operation: \"encode\",\n outputFormat: format,\n details: { expected: \"Uint8Array\", actual: \"string\" },\n });\n }\n return input;\n}\n\nfunction normalizeWhitespace(input: string, ignoreWhitespace: boolean): string {\n if (!ignoreWhitespace) return input;\n return input.replace(/[\\n\\r\\t\\s]/g, \"\");\n}\n\nfunction base64FromBytes(data: Uint8Array): string {\n return Buffer.from(data).toString(\"base64\");\n}\n\nfunction base64UrlFromBytes(data: Uint8Array): string {\n // Derive from base64 for consistent padding control.\n return base64FromBytes(data).replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nfunction applyBase64Padding(s: string, padding: boolean): string {\n return padding ? s.padEnd(Math.ceil(s.length / 4) * 4, \"=\") : s.replace(/=+$/g, \"\");\n}\n\nfunction decodeBase64Strict(\n input: string,\n variant: \"base64\" | \"base64url\",\n validatePadding: boolean,\n): Uint8Array {\n const allowed = variant === \"base64\" ? /^[A-Za-z0-9+/]*={0,2}$/ : /^[A-Za-z0-9\\-_]*={0,2}$/;\n if (!allowed.test(input)) {\n throw new Error(\"Invalid base64 characters\");\n }\n\n if (validatePadding) {\n if (input.length % 4 !== 0) {\n throw new Error(\"Invalid base64 length\");\n }\n const firstPad = input.indexOf(\"=\");\n if (firstPad !== -1) {\n for (let i = firstPad; i < input.length; i++) {\n if (input[i] !== \"=\") throw new Error(\"Invalid base64 padding\");\n }\n }\n }\n\n const s = variant === \"base64url\" ? input.replace(/-/g, \"+\").replace(/_/g, \"/\") : input;\n return Uint8Array.from(Buffer.from(s, \"base64\"));\n}\n\nasync function computeChecksumIfRequested(\n data: Uint8Array,\n algorithm?: string,\n): Promise<{ checksum?: string; checksumAlgorithm?: string }> {\n if (!algorithm) return {};\n\n if (algorithm !== \"sha256\" && algorithm !== \"xxh3-128\") {\n throw new FulencodeError({\n code: \"UNSUPPORTED_CHECKSUM\",\n message: `Unsupported checksum algorithm: ${algorithm}`,\n operation: \"encode\",\n details: { algorithm },\n });\n }\n\n const digest = await hashBytes(data, {\n algorithm: algorithm === \"sha256\" ? Algorithm.SHA256 : Algorithm.XXH3_128,\n });\n\n return { checksum: digest.toString(), checksumAlgorithm: algorithm };\n}\n\nexport async function encode(\n input: Uint8Array | string,\n format: EncodingFormat,\n options: EncodeOptions = {},\n): Promise<EncodingResult> {\n const warnings: string[] = [];\n if (options.embedChecksum) {\n throw new FulencodeError({\n code: \"UNSUPPORTED_FEATURE\",\n message: \"embedChecksum is not implemented in tsfulmen yet\",\n operation: \"encode\",\n outputFormat: format,\n });\n }\n\n const padding = options.padding ?? true;\n const lineLength = options.lineLength ?? null;\n const lineEnding = options.lineEnding ?? \"\\n\";\n const maxEncodedSize = options.maxEncodedSize ?? 500 * 1024 * 1024;\n const onError = options.onError ?? \"strict\";\n\n let data: string;\n let inputBytes: Uint8Array;\n\n try {\n switch (format) {\n case \"base64\": {\n inputBytes = requireBytes(input, format);\n data = applyBase64Padding(base64FromBytes(inputBytes), padding);\n break;\n }\n case \"base64url\": {\n inputBytes = requireBytes(input, format);\n data = applyBase64Padding(base64UrlFromBytes(inputBytes), padding);\n break;\n }\n case \"base64_raw\": {\n inputBytes = requireBytes(input, format);\n data = applyBase64Padding(base64FromBytes(inputBytes), false);\n break;\n }\n case \"hex\": {\n inputBytes = requireBytes(input, format);\n const hex = Buffer.from(inputBytes).toString(\"hex\");\n data = (options.hexCase ?? \"lower\") === \"upper\" ? hex.toUpperCase() : hex;\n break;\n }\n case \"base32\":\n case \"base32hex\": {\n inputBytes = requireBytes(input, format);\n data = encodeBase32(inputBytes, format, { padding });\n break;\n }\n case \"utf-8\": {\n if (typeof input === \"string\") {\n // Pass-through for already-decoded text; decode() is the canonical text->bytes operation.\n data = input;\n inputBytes = new TextEncoder().encode(input);\n warnings.push(\"string_input_passthrough\");\n } else {\n inputBytes = input;\n if (onError === \"strict\") {\n data = new TextDecoder(\"utf-8\", { fatal: true }).decode(inputBytes);\n } else {\n data = new TextDecoder(\"utf-8\", { fatal: false }).decode(inputBytes);\n }\n }\n break;\n }\n case \"utf-16le\": {\n if (typeof input === \"string\") {\n data = input;\n inputBytes = Uint8Array.from(Buffer.from(input, \"utf16le\"));\n warnings.push(\"string_input_passthrough\");\n } else {\n inputBytes = input;\n data = Buffer.from(inputBytes).toString(\"utf16le\");\n }\n break;\n }\n case \"utf-16be\": {\n if (typeof input === \"string\") {\n data = input;\n const le = Buffer.from(input, \"utf16le\");\n for (let i = 0; i + 1 < le.length; i += 2) {\n const a = le[i];\n le[i] = le[i + 1];\n le[i + 1] = a;\n }\n inputBytes = Uint8Array.from(le);\n warnings.push(\"string_input_passthrough\");\n } else {\n inputBytes = input;\n const swapped = Buffer.from(inputBytes);\n for (let i = 0; i + 1 < swapped.length; i += 2) {\n const a = swapped[i];\n swapped[i] = swapped[i + 1];\n swapped[i + 1] = a;\n }\n data = swapped.toString(\"utf16le\");\n }\n break;\n }\n case \"iso-8859-1\": {\n if (typeof input === \"string\") {\n data = input;\n inputBytes = Uint8Array.from(Buffer.from(input, \"latin1\"));\n warnings.push(\"string_input_passthrough\");\n } else {\n inputBytes = input;\n data = Buffer.from(inputBytes).toString(\"latin1\");\n }\n break;\n }\n case \"ascii\": {\n if (typeof input === \"string\") {\n data = input;\n inputBytes = Uint8Array.from(Buffer.from(input, \"ascii\"));\n warnings.push(\"string_input_passthrough\");\n } else {\n inputBytes = input;\n data = Buffer.from(inputBytes).toString(\"ascii\");\n }\n break;\n }\n case \"cp1252\": {\n throw new FulencodeError({\n code: \"UNSUPPORTED_FORMAT\",\n message: \"cp1252 is not implemented in tsfulmen yet\",\n operation: \"encode\",\n outputFormat: format,\n });\n }\n default: {\n throw new FulencodeError({\n code: \"UNSUPPORTED_FORMAT\",\n message: `Unsupported encoding format: ${format}`,\n operation: \"encode\",\n outputFormat: format,\n });\n }\n }\n } catch (err) {\n if (err instanceof FulencodeError) throw err;\n throw new FulencodeError({\n code: \"ENCODE_FAILED\",\n message: (err as Error).message,\n operation: \"encode\",\n outputFormat: format,\n cause: err,\n });\n }\n\n if (lineLength !== null) {\n data = wrapLines(data, lineLength, lineEnding);\n }\n\n if (data.length > maxEncodedSize) {\n throw new FulencodeError({\n code: \"OUTPUT_TOO_LARGE\",\n message: `Encoded output exceeds maxEncodedSize (${maxEncodedSize})`,\n operation: \"encode\",\n outputFormat: format,\n details: { maxEncodedSize, outputSize: data.length },\n });\n }\n\n const checksum = await computeChecksumIfRequested(inputBytes, options.computeChecksum);\n\n return {\n data,\n format,\n inputSize: inputBytes.length,\n outputSize: data.length,\n warnings,\n ...checksum,\n };\n}\n\nexport async function decode(\n input: string | Uint8Array,\n format: EncodingFormat,\n options: DecodeOptions = {},\n): Promise<DecodingResult> {\n const warnings: string[] = [];\n const ignoreWhitespace =\n options.ignoreWhitespace ??\n (format === \"base64\" ||\n format === \"base64url\" ||\n format === \"hex\" ||\n format === \"base32\" ||\n format === \"base32hex\");\n const validatePadding =\n options.validatePadding ??\n (format === \"base64\" ||\n format === \"base64url\" ||\n format === \"base32\" ||\n format === \"base32hex\");\n const maxDecodedSize = options.maxDecodedSize ?? 100 * 1024 * 1024;\n const onError = options.onError ?? \"strict\";\n\n const inputStr = typeof input === \"string\" ? input : Buffer.from(input).toString(\"utf8\");\n const normalized = normalizeWhitespace(inputStr, ignoreWhitespace);\n let decoded: Uint8Array;\n const correctionsApplied = 0;\n\n try {\n switch (format) {\n case \"base64\": {\n const s = applyBase64Padding(normalized, true);\n decoded =\n onError === \"strict\"\n ? decodeBase64Strict(s, \"base64\", validatePadding)\n : Uint8Array.from(Buffer.from(s, \"base64\"));\n break;\n }\n case \"base64url\": {\n const s = applyBase64Padding(normalized, true);\n decoded =\n onError === \"strict\"\n ? decodeBase64Strict(s, \"base64url\", validatePadding)\n : Uint8Array.from(Buffer.from(s.replace(/-/g, \"+\").replace(/_/g, \"/\"), \"base64\"));\n break;\n }\n case \"base64_raw\": {\n const s = applyBase64Padding(normalized, true);\n decoded = Uint8Array.from(Buffer.from(s, \"base64\"));\n if (validatePadding) warnings.push(\"base64_raw does not support padding validation\");\n break;\n }\n case \"hex\": {\n const s = normalized;\n if (onError === \"strict\") {\n if (!/^[0-9a-fA-F]*$/.test(s) || s.length % 2 !== 0) {\n throw new Error(\"Invalid hex input\");\n }\n }\n decoded = Uint8Array.from(Buffer.from(s, \"hex\"));\n break;\n }\n case \"base32\":\n case \"base32hex\": {\n decoded = decodeBase32(normalized, format, {\n ignoreWhitespace,\n validatePadding,\n });\n break;\n }\n case \"utf-8\": {\n // Text-to-bytes\n decoded = new TextEncoder().encode(typeof input === \"string\" ? input : inputStr);\n break;\n }\n case \"utf-16le\": {\n decoded = Uint8Array.from(\n Buffer.from(typeof input === \"string\" ? input : inputStr, \"utf16le\"),\n );\n break;\n }\n case \"utf-16be\": {\n const buf = Buffer.from(typeof input === \"string\" ? input : inputStr, \"utf16le\");\n for (let i = 0; i + 1 < buf.length; i += 2) {\n const a = buf[i];\n buf[i] = buf[i + 1];\n buf[i + 1] = a;\n }\n decoded = Uint8Array.from(buf);\n break;\n }\n case \"iso-8859-1\": {\n decoded = Uint8Array.from(\n Buffer.from(typeof input === \"string\" ? input : inputStr, \"latin1\"),\n );\n break;\n }\n case \"ascii\": {\n decoded = Uint8Array.from(\n Buffer.from(typeof input === \"string\" ? input : inputStr, \"ascii\"),\n );\n break;\n }\n case \"cp1252\": {\n throw new FulencodeError({\n code: \"UNSUPPORTED_FORMAT\",\n message: \"cp1252 is not implemented in tsfulmen yet\",\n operation: \"decode\",\n inputFormat: format,\n });\n }\n default: {\n throw new FulencodeError({\n code: \"UNSUPPORTED_FORMAT\",\n message: `Unsupported decoding format: ${format}`,\n operation: \"decode\",\n inputFormat: format,\n });\n }\n }\n } catch (err) {\n if (err instanceof FulencodeError) throw err;\n throw new FulencodeError({\n code: \"DECODE_FAILED\",\n message: (err as Error).message,\n operation: \"decode\",\n inputFormat: format,\n cause: err,\n });\n }\n\n if (decoded.length > maxDecodedSize) {\n throw new FulencodeError({\n code: \"OUTPUT_TOO_LARGE\",\n message: `Decoded output exceeds maxDecodedSize (${maxDecodedSize})`,\n operation: \"decode\",\n inputFormat: format,\n details: { maxDecodedSize, outputSize: decoded.length },\n });\n }\n\n const checksum = await computeChecksumIfRequested(decoded, options.computeChecksum);\n\n return {\n data: decoded,\n format,\n inputSize: typeof input === \"string\" ? Buffer.byteLength(input, \"utf8\") : input.length,\n outputSize: decoded.length,\n warnings,\n correctionsApplied,\n ...checksum,\n };\n}\n","const RFC4648_BASE32_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\nconst RFC4648_BASE32HEX_ALPHABET = \"0123456789ABCDEFGHIJKLMNOPQRSTUV\";\n\nfunction getAlphabet(variant: \"base32\" | \"base32hex\"): string {\n return variant === \"base32\" ? RFC4648_BASE32_ALPHABET : RFC4648_BASE32HEX_ALPHABET;\n}\n\nexport function encodeBase32(\n data: Uint8Array,\n variant: \"base32\" | \"base32hex\",\n options: { padding: boolean },\n): string {\n if (data.length === 0) return \"\";\n\n const alphabet = getAlphabet(variant);\n let bits = 0;\n let value = 0;\n let out = \"\";\n\n for (const b of data) {\n value = (value << 8) | b;\n bits += 8;\n while (bits >= 5) {\n const idx = (value >>> (bits - 5)) & 31;\n out += alphabet[idx];\n bits -= 5;\n }\n }\n\n if (bits > 0) {\n const idx = (value << (5 - bits)) & 31;\n out += alphabet[idx];\n }\n\n if (options.padding) {\n while (out.length % 8 !== 0) out += \"=\";\n }\n\n return out;\n}\n\nfunction buildDecodeMap(alphabet: string): Map<string, number> {\n const map = new Map<string, number>();\n for (let i = 0; i < alphabet.length; i++) {\n const ch = alphabet[i];\n map.set(ch, i);\n map.set(ch.toLowerCase(), i);\n }\n return map;\n}\n\nexport function decodeBase32(\n input: string,\n variant: \"base32\" | \"base32hex\",\n options: { ignoreWhitespace: boolean; validatePadding: boolean },\n): Uint8Array {\n const alphabet = getAlphabet(variant);\n const decodeMap = buildDecodeMap(alphabet);\n\n let s = input;\n if (options.ignoreWhitespace) {\n s = s.replace(/[\\n\\r\\t\\s]/g, \"\");\n }\n\n // Split padding for strict checks.\n const firstPad = s.indexOf(\"=\");\n if (firstPad !== -1) {\n if (options.validatePadding) {\n for (let i = firstPad; i < s.length; i++) {\n if (s[i] !== \"=\") {\n throw new Error(\"Invalid base32 padding\");\n }\n }\n if (s.length % 8 !== 0) {\n throw new Error(\"Invalid base32 length (padding)\");\n }\n }\n s = s.slice(0, firstPad);\n }\n\n let bits = 0;\n let value = 0;\n const out: number[] = [];\n\n for (let i = 0; i < s.length; i++) {\n const ch = s[i];\n const v = decodeMap.get(ch);\n if (v === undefined) {\n throw new Error(`Invalid base32 character: ${ch}`);\n }\n\n value = (value << 5) | v;\n bits += 5;\n if (bits >= 8) {\n out.push((value >>> (bits - 8)) & 255);\n bits -= 8;\n }\n }\n\n return Uint8Array.from(out);\n}\n","/**\n * Fulencode - canonical encoding/decoding facade.\n */\n\nexport const VERSION = \"0.1.0\";\n\nexport * from \"./errors.js\";\nexport * from \"./types.js\";\n\nimport { decode, encode } from \"./fulencode.js\";\nexport { decode, encode };\n\nexport const fulencode = {\n encode,\n decode,\n} as const;\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { APP_IDENTITY_DIR, APP_IDENTITY_ENV_VAR, APP_IDENTITY_FILENAME, APP_IDENTITY_SCHEMA_ID,
|
|
1
|
+
export { APP_IDENTITY_DIR, APP_IDENTITY_ENV_VAR, APP_IDENTITY_FILENAME, APP_IDENTITY_SCHEMA_ID, AppIdentityError, BuildRuntimeInfoOptions, ConfigIdentifiers, MAX_ANCESTOR_SEARCH_DEPTH, RuntimeInfo, RuntimeName, buildEnvVar, buildRuntimeInfo, clearEmbeddedIdentity, clearIdentityCache, getBinaryName, getCachedIdentity, getConfigIdentifiers, getConfigName, getEmbeddedIdentity, getEnvPrefix, getEnvVar, getTelemetryNamespace, getVendor, hasEmbeddedIdentity, loadIdentity, registerEmbeddedIdentity } from './appidentity/index.js';
|
|
2
|
+
export { A as AppIdentity, I as Identity, a as IdentityMetadata, L as LoadIdentityOptions, P as PythonMetadata, R as RepositoryCategory } from './types-Dv5TERCM.js';
|
|
2
3
|
export { DocScribeError, DocScribeFormat, DocScribeFrontmatterResult, DocScribeHeader, DocScribeInfo, DocScribeMetadata, DocScribeMetadataValue, DocScribeOptions, DocScribeParseError, DocScribePrimitiveValue, DocScribeSplit, DocScribeUnsupportedFormatError, NormalizedInput, __internal, detectFormat, extractHeaders, extractMetadata, inspectDocument, normalizeInput, parseFrontmatter, splitDocuments, stripFrontmatter } from './docscribe/index.js';
|
|
3
4
|
export { ERROR_CODES, FULPACK_VERSION, FulpackOperationError, checkDecompressionBomb, create, createFulpackError, extract, hasPathTraversal, info, isAbsolutePath, scan, validatePath, verify } from './fulpack/index.js';
|
|
4
5
|
export { ArchiveEntry, ArchiveFormat, ArchiveInfo, ArchiveManifest, CreateOptions, EntryType, ExtractOptions, ExtractResult, FulpackError, Operation, ScanOptions, ValidationResult } from './crucible/fulpack/index.js';
|
|
5
6
|
import './fulmen-error-B_kX8jSC.js';
|
|
6
|
-
import './types-
|
|
7
|
+
import './types-DdoeE7F5.js';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* TSFulmen - TypeScript Fulmen Helper Library
|
|
@@ -11,6 +12,6 @@ import './types-BJswWpQC.js';
|
|
|
11
12
|
* Provides ergonomic access to Crucible SSOT assets and core utilities
|
|
12
13
|
* for TypeScript/Node.js applications in the FulmenHQ ecosystem.
|
|
13
14
|
*/
|
|
14
|
-
declare const VERSION = "0.2.
|
|
15
|
+
declare const VERSION = "0.2.3";
|
|
15
16
|
|
|
16
17
|
export { VERSION };
|