@ebowwa/jsonl-hft 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.
- package/README.md +79 -0
- package/dist/index.d.ts +86 -0
- package/dist/index.js +185 -0
- package/package.json +43 -0
- package/target/release/.cargo-lock +0 -0
- package/target/release/.fingerprint/aho-corasick-80be56ad9c6ccc09/dep-lib-aho_corasick +0 -0
- package/target/release/.fingerprint/aho-corasick-80be56ad9c6ccc09/invoked.timestamp +1 -0
- package/target/release/.fingerprint/aho-corasick-80be56ad9c6ccc09/lib-aho_corasick +1 -0
- package/target/release/.fingerprint/aho-corasick-80be56ad9c6ccc09/lib-aho_corasick.json +1 -0
- package/target/release/.fingerprint/bitflags-33ee89eae1384e32/dep-lib-bitflags +0 -0
- package/target/release/.fingerprint/bitflags-33ee89eae1384e32/invoked.timestamp +1 -0
- package/target/release/.fingerprint/bitflags-33ee89eae1384e32/lib-bitflags +1 -0
- package/target/release/.fingerprint/bitflags-33ee89eae1384e32/lib-bitflags.json +1 -0
- package/target/release/.fingerprint/cfg-if-9f317fab506492ca/dep-lib-cfg_if +0 -0
- package/target/release/.fingerprint/cfg-if-9f317fab506492ca/invoked.timestamp +1 -0
- package/target/release/.fingerprint/cfg-if-9f317fab506492ca/lib-cfg_if +1 -0
- package/target/release/.fingerprint/cfg-if-9f317fab506492ca/lib-cfg_if.json +1 -0
- package/target/release/.fingerprint/convert_case-af17135cdf59f983/dep-lib-convert_case +0 -0
- package/target/release/.fingerprint/convert_case-af17135cdf59f983/invoked.timestamp +1 -0
- package/target/release/.fingerprint/convert_case-af17135cdf59f983/lib-convert_case +1 -0
- package/target/release/.fingerprint/convert_case-af17135cdf59f983/lib-convert_case.json +1 -0
- package/target/release/.fingerprint/crossbeam-deque-8a66b8c9383b26cf/dep-lib-crossbeam_deque +0 -0
- package/target/release/.fingerprint/crossbeam-deque-8a66b8c9383b26cf/invoked.timestamp +1 -0
- package/target/release/.fingerprint/crossbeam-deque-8a66b8c9383b26cf/lib-crossbeam_deque +1 -0
- package/target/release/.fingerprint/crossbeam-deque-8a66b8c9383b26cf/lib-crossbeam_deque.json +1 -0
- package/target/release/.fingerprint/crossbeam-epoch-c811e3685b4f5800/dep-lib-crossbeam_epoch +0 -0
- package/target/release/.fingerprint/crossbeam-epoch-c811e3685b4f5800/invoked.timestamp +1 -0
- package/target/release/.fingerprint/crossbeam-epoch-c811e3685b4f5800/lib-crossbeam_epoch +1 -0
- package/target/release/.fingerprint/crossbeam-epoch-c811e3685b4f5800/lib-crossbeam_epoch.json +1 -0
- package/target/release/.fingerprint/crossbeam-utils-817ce9fe7f1360fd/run-build-script-build-script-build +1 -0
- package/target/release/.fingerprint/crossbeam-utils-817ce9fe7f1360fd/run-build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/crossbeam-utils-b2750c26ed0db148/build-script-build-script-build +1 -0
- package/target/release/.fingerprint/crossbeam-utils-b2750c26ed0db148/build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/crossbeam-utils-b2750c26ed0db148/dep-build-script-build-script-build +0 -0
- package/target/release/.fingerprint/crossbeam-utils-b2750c26ed0db148/invoked.timestamp +1 -0
- package/target/release/.fingerprint/crossbeam-utils-d0d3fc2daa2679f9/dep-lib-crossbeam_utils +0 -0
- package/target/release/.fingerprint/crossbeam-utils-d0d3fc2daa2679f9/invoked.timestamp +1 -0
- package/target/release/.fingerprint/crossbeam-utils-d0d3fc2daa2679f9/lib-crossbeam_utils +1 -0
- package/target/release/.fingerprint/crossbeam-utils-d0d3fc2daa2679f9/lib-crossbeam_utils.json +1 -0
- package/target/release/.fingerprint/ctor-7e4e43ec3db285ea/dep-lib-ctor +0 -0
- package/target/release/.fingerprint/ctor-7e4e43ec3db285ea/invoked.timestamp +1 -0
- package/target/release/.fingerprint/ctor-7e4e43ec3db285ea/lib-ctor +1 -0
- package/target/release/.fingerprint/ctor-7e4e43ec3db285ea/lib-ctor.json +1 -0
- package/target/release/.fingerprint/either-5f9c430ce669a849/dep-lib-either +0 -0
- package/target/release/.fingerprint/either-5f9c430ce669a849/invoked.timestamp +1 -0
- package/target/release/.fingerprint/either-5f9c430ce669a849/lib-either +1 -0
- package/target/release/.fingerprint/either-5f9c430ce669a849/lib-either.json +1 -0
- package/target/release/.fingerprint/jsonl-hft-882aeb8777a441f3/run-build-script-build-script-build +1 -0
- package/target/release/.fingerprint/jsonl-hft-882aeb8777a441f3/run-build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/jsonl-hft-ae1b32368901910e/build-script-build-script-build +1 -0
- package/target/release/.fingerprint/jsonl-hft-ae1b32368901910e/build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/jsonl-hft-ae1b32368901910e/dep-build-script-build-script-build +0 -0
- package/target/release/.fingerprint/jsonl-hft-ae1b32368901910e/invoked.timestamp +1 -0
- package/target/release/.fingerprint/jsonl-hft-e60d909666ffe447/dep-lib-jsonl_hft +0 -0
- package/target/release/.fingerprint/jsonl-hft-e60d909666ffe447/invoked.timestamp +1 -0
- package/target/release/.fingerprint/jsonl-hft-e60d909666ffe447/lib-jsonl_hft +1 -0
- package/target/release/.fingerprint/jsonl-hft-e60d909666ffe447/lib-jsonl_hft.json +1 -0
- package/target/release/.fingerprint/libc-3c80a6461951ca6e/build-script-build-script-build +1 -0
- package/target/release/.fingerprint/libc-3c80a6461951ca6e/build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/libc-3c80a6461951ca6e/dep-build-script-build-script-build +0 -0
- package/target/release/.fingerprint/libc-3c80a6461951ca6e/invoked.timestamp +1 -0
- package/target/release/.fingerprint/libc-62e7d7899e04d9df/run-build-script-build-script-build +1 -0
- package/target/release/.fingerprint/libc-62e7d7899e04d9df/run-build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/libc-a2bbd80a211f8fd8/dep-lib-libc +0 -0
- package/target/release/.fingerprint/libc-a2bbd80a211f8fd8/invoked.timestamp +1 -0
- package/target/release/.fingerprint/libc-a2bbd80a211f8fd8/lib-libc +1 -0
- package/target/release/.fingerprint/libc-a2bbd80a211f8fd8/lib-libc.json +1 -0
- package/target/release/.fingerprint/memchr-d1334d239cb948c9/dep-lib-memchr +0 -0
- package/target/release/.fingerprint/memchr-d1334d239cb948c9/invoked.timestamp +1 -0
- package/target/release/.fingerprint/memchr-d1334d239cb948c9/lib-memchr +1 -0
- package/target/release/.fingerprint/memchr-d1334d239cb948c9/lib-memchr.json +1 -0
- package/target/release/.fingerprint/memmap2-6d7777ab07a2fbfe/dep-lib-memmap2 +0 -0
- package/target/release/.fingerprint/memmap2-6d7777ab07a2fbfe/invoked.timestamp +1 -0
- package/target/release/.fingerprint/memmap2-6d7777ab07a2fbfe/lib-memmap2 +1 -0
- package/target/release/.fingerprint/memmap2-6d7777ab07a2fbfe/lib-memmap2.json +1 -0
- package/target/release/.fingerprint/napi-9f55d707fbf9ebad/dep-lib-napi +0 -0
- package/target/release/.fingerprint/napi-9f55d707fbf9ebad/invoked.timestamp +1 -0
- package/target/release/.fingerprint/napi-9f55d707fbf9ebad/lib-napi +1 -0
- package/target/release/.fingerprint/napi-9f55d707fbf9ebad/lib-napi.json +1 -0
- package/target/release/.fingerprint/napi-build-a42f15ca6e612473/dep-lib-napi_build +0 -0
- package/target/release/.fingerprint/napi-build-a42f15ca6e612473/invoked.timestamp +1 -0
- package/target/release/.fingerprint/napi-build-a42f15ca6e612473/lib-napi_build +1 -0
- package/target/release/.fingerprint/napi-build-a42f15ca6e612473/lib-napi_build.json +1 -0
- package/target/release/.fingerprint/napi-derive-6209cabfae5f02fe/dep-lib-napi_derive +0 -0
- package/target/release/.fingerprint/napi-derive-6209cabfae5f02fe/invoked.timestamp +1 -0
- package/target/release/.fingerprint/napi-derive-6209cabfae5f02fe/lib-napi_derive +1 -0
- package/target/release/.fingerprint/napi-derive-6209cabfae5f02fe/lib-napi_derive.json +1 -0
- package/target/release/.fingerprint/napi-derive-backend-c83ee397a7528cf7/dep-lib-napi_derive_backend +0 -0
- package/target/release/.fingerprint/napi-derive-backend-c83ee397a7528cf7/invoked.timestamp +1 -0
- package/target/release/.fingerprint/napi-derive-backend-c83ee397a7528cf7/lib-napi_derive_backend +1 -0
- package/target/release/.fingerprint/napi-derive-backend-c83ee397a7528cf7/lib-napi_derive_backend.json +1 -0
- package/target/release/.fingerprint/napi-sys-267fe235e013d854/dep-lib-napi_sys +0 -0
- package/target/release/.fingerprint/napi-sys-267fe235e013d854/invoked.timestamp +1 -0
- package/target/release/.fingerprint/napi-sys-267fe235e013d854/lib-napi_sys +1 -0
- package/target/release/.fingerprint/napi-sys-267fe235e013d854/lib-napi_sys.json +1 -0
- package/target/release/.fingerprint/once_cell-620da3f1872e1aff/dep-lib-once_cell +0 -0
- package/target/release/.fingerprint/once_cell-620da3f1872e1aff/invoked.timestamp +1 -0
- package/target/release/.fingerprint/once_cell-620da3f1872e1aff/lib-once_cell +1 -0
- package/target/release/.fingerprint/once_cell-620da3f1872e1aff/lib-once_cell.json +1 -0
- package/target/release/.fingerprint/once_cell-7d1c4a200d6a4bed/dep-lib-once_cell +0 -0
- package/target/release/.fingerprint/once_cell-7d1c4a200d6a4bed/invoked.timestamp +1 -0
- package/target/release/.fingerprint/once_cell-7d1c4a200d6a4bed/lib-once_cell +1 -0
- package/target/release/.fingerprint/once_cell-7d1c4a200d6a4bed/lib-once_cell.json +1 -0
- package/target/release/.fingerprint/proc-macro2-0ef258af961e9234/run-build-script-build-script-build +1 -0
- package/target/release/.fingerprint/proc-macro2-0ef258af961e9234/run-build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/proc-macro2-36f68cf852da5721/build-script-build-script-build +1 -0
- package/target/release/.fingerprint/proc-macro2-36f68cf852da5721/build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/proc-macro2-36f68cf852da5721/dep-build-script-build-script-build +0 -0
- package/target/release/.fingerprint/proc-macro2-36f68cf852da5721/invoked.timestamp +1 -0
- package/target/release/.fingerprint/proc-macro2-ca97df7912381a64/dep-lib-proc_macro2 +0 -0
- package/target/release/.fingerprint/proc-macro2-ca97df7912381a64/invoked.timestamp +1 -0
- package/target/release/.fingerprint/proc-macro2-ca97df7912381a64/lib-proc_macro2 +1 -0
- package/target/release/.fingerprint/proc-macro2-ca97df7912381a64/lib-proc_macro2.json +1 -0
- package/target/release/.fingerprint/quote-0edc039a6d1c9dad/dep-lib-quote +0 -0
- package/target/release/.fingerprint/quote-0edc039a6d1c9dad/invoked.timestamp +1 -0
- package/target/release/.fingerprint/quote-0edc039a6d1c9dad/lib-quote +1 -0
- package/target/release/.fingerprint/quote-0edc039a6d1c9dad/lib-quote.json +1 -0
- package/target/release/.fingerprint/quote-1b0190406535d671/run-build-script-build-script-build +1 -0
- package/target/release/.fingerprint/quote-1b0190406535d671/run-build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/quote-b4e0a8fcaf6776cf/build-script-build-script-build +1 -0
- package/target/release/.fingerprint/quote-b4e0a8fcaf6776cf/build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/quote-b4e0a8fcaf6776cf/dep-build-script-build-script-build +0 -0
- package/target/release/.fingerprint/quote-b4e0a8fcaf6776cf/invoked.timestamp +1 -0
- package/target/release/.fingerprint/rayon-core-51a4003ba765eb49/build-script-build-script-build +1 -0
- package/target/release/.fingerprint/rayon-core-51a4003ba765eb49/build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/rayon-core-51a4003ba765eb49/dep-build-script-build-script-build +0 -0
- package/target/release/.fingerprint/rayon-core-51a4003ba765eb49/invoked.timestamp +1 -0
- package/target/release/.fingerprint/rayon-core-a7ac40d07449f3fd/dep-lib-rayon_core +0 -0
- package/target/release/.fingerprint/rayon-core-a7ac40d07449f3fd/invoked.timestamp +1 -0
- package/target/release/.fingerprint/rayon-core-a7ac40d07449f3fd/lib-rayon_core +1 -0
- package/target/release/.fingerprint/rayon-core-a7ac40d07449f3fd/lib-rayon_core.json +1 -0
- package/target/release/.fingerprint/rayon-core-de52281fd9533367/run-build-script-build-script-build +1 -0
- package/target/release/.fingerprint/rayon-core-de52281fd9533367/run-build-script-build-script-build.json +1 -0
- package/target/release/.fingerprint/rayon-defdfd23da9ee44b/dep-lib-rayon +0 -0
- package/target/release/.fingerprint/rayon-defdfd23da9ee44b/invoked.timestamp +1 -0
- package/target/release/.fingerprint/rayon-defdfd23da9ee44b/lib-rayon +1 -0
- package/target/release/.fingerprint/rayon-defdfd23da9ee44b/lib-rayon.json +1 -0
- package/target/release/.fingerprint/regex-7e107b9d65de7fcc/dep-lib-regex +0 -0
- package/target/release/.fingerprint/regex-7e107b9d65de7fcc/invoked.timestamp +1 -0
- package/target/release/.fingerprint/regex-7e107b9d65de7fcc/lib-regex +1 -0
- package/target/release/.fingerprint/regex-7e107b9d65de7fcc/lib-regex.json +1 -0
- package/target/release/.fingerprint/regex-automata-2752bdc3e261a133/dep-lib-regex_automata +0 -0
- package/target/release/.fingerprint/regex-automata-2752bdc3e261a133/invoked.timestamp +1 -0
- package/target/release/.fingerprint/regex-automata-2752bdc3e261a133/lib-regex_automata +1 -0
- package/target/release/.fingerprint/regex-automata-2752bdc3e261a133/lib-regex_automata.json +1 -0
- package/target/release/.fingerprint/regex-syntax-bb9fb1754b30ece0/dep-lib-regex_syntax +0 -0
- package/target/release/.fingerprint/regex-syntax-bb9fb1754b30ece0/invoked.timestamp +1 -0
- package/target/release/.fingerprint/regex-syntax-bb9fb1754b30ece0/lib-regex_syntax +1 -0
- package/target/release/.fingerprint/regex-syntax-bb9fb1754b30ece0/lib-regex_syntax.json +1 -0
- package/target/release/.fingerprint/same-file-b07ed5486f8a1345/dep-lib-same_file +0 -0
- package/target/release/.fingerprint/same-file-b07ed5486f8a1345/invoked.timestamp +1 -0
- package/target/release/.fingerprint/same-file-b07ed5486f8a1345/lib-same_file +1 -0
- package/target/release/.fingerprint/same-file-b07ed5486f8a1345/lib-same_file.json +1 -0
- package/target/release/.fingerprint/semver-8b2a43cb91b8097f/dep-lib-semver +0 -0
- package/target/release/.fingerprint/semver-8b2a43cb91b8097f/invoked.timestamp +1 -0
- package/target/release/.fingerprint/semver-8b2a43cb91b8097f/lib-semver +1 -0
- package/target/release/.fingerprint/semver-8b2a43cb91b8097f/lib-semver.json +1 -0
- package/target/release/.fingerprint/syn-ff8a4e77718630fb/dep-lib-syn +0 -0
- package/target/release/.fingerprint/syn-ff8a4e77718630fb/invoked.timestamp +1 -0
- package/target/release/.fingerprint/syn-ff8a4e77718630fb/lib-syn +1 -0
- package/target/release/.fingerprint/syn-ff8a4e77718630fb/lib-syn.json +1 -0
- package/target/release/.fingerprint/unicode-ident-617d6623c385d1f9/dep-lib-unicode_ident +0 -0
- package/target/release/.fingerprint/unicode-ident-617d6623c385d1f9/invoked.timestamp +1 -0
- package/target/release/.fingerprint/unicode-ident-617d6623c385d1f9/lib-unicode_ident +1 -0
- package/target/release/.fingerprint/unicode-ident-617d6623c385d1f9/lib-unicode_ident.json +1 -0
- package/target/release/.fingerprint/unicode-segmentation-77a18e678843bed7/dep-lib-unicode_segmentation +0 -0
- package/target/release/.fingerprint/unicode-segmentation-77a18e678843bed7/invoked.timestamp +1 -0
- package/target/release/.fingerprint/unicode-segmentation-77a18e678843bed7/lib-unicode_segmentation +1 -0
- package/target/release/.fingerprint/unicode-segmentation-77a18e678843bed7/lib-unicode_segmentation.json +1 -0
- package/target/release/.fingerprint/walkdir-96b6c1499ee1be2d/dep-lib-walkdir +0 -0
- package/target/release/.fingerprint/walkdir-96b6c1499ee1be2d/invoked.timestamp +1 -0
- package/target/release/.fingerprint/walkdir-96b6c1499ee1be2d/lib-walkdir +1 -0
- package/target/release/.fingerprint/walkdir-96b6c1499ee1be2d/lib-walkdir.json +1 -0
- package/target/release/build/crossbeam-utils-817ce9fe7f1360fd/invoked.timestamp +1 -0
- package/target/release/build/crossbeam-utils-817ce9fe7f1360fd/output +2 -0
- package/target/release/build/crossbeam-utils-817ce9fe7f1360fd/root-output +1 -0
- package/target/release/build/crossbeam-utils-817ce9fe7f1360fd/stderr +0 -0
- package/target/release/build/crossbeam-utils-b2750c26ed0db148/build-script-build +0 -0
- package/target/release/build/crossbeam-utils-b2750c26ed0db148/build_script_build-b2750c26ed0db148 +0 -0
- package/target/release/build/crossbeam-utils-b2750c26ed0db148/build_script_build-b2750c26ed0db148.d +9 -0
- package/target/release/build/jsonl-hft-882aeb8777a441f3/invoked.timestamp +1 -0
- package/target/release/build/jsonl-hft-882aeb8777a441f3/output +9 -0
- package/target/release/build/jsonl-hft-882aeb8777a441f3/root-output +1 -0
- package/target/release/build/jsonl-hft-882aeb8777a441f3/stderr +0 -0
- package/target/release/build/jsonl-hft-ae1b32368901910e/build-script-build +0 -0
- package/target/release/build/jsonl-hft-ae1b32368901910e/build_script_build-ae1b32368901910e +0 -0
- package/target/release/build/jsonl-hft-ae1b32368901910e/build_script_build-ae1b32368901910e.d +5 -0
- package/target/release/build/libc-3c80a6461951ca6e/build-script-build +0 -0
- package/target/release/build/libc-3c80a6461951ca6e/build_script_build-3c80a6461951ca6e +0 -0
- package/target/release/build/libc-3c80a6461951ca6e/build_script_build-3c80a6461951ca6e.d +5 -0
- package/target/release/build/libc-62e7d7899e04d9df/invoked.timestamp +1 -0
- package/target/release/build/libc-62e7d7899e04d9df/output +25 -0
- package/target/release/build/libc-62e7d7899e04d9df/root-output +1 -0
- package/target/release/build/libc-62e7d7899e04d9df/stderr +0 -0
- package/target/release/build/proc-macro2-0ef258af961e9234/invoked.timestamp +1 -0
- package/target/release/build/proc-macro2-0ef258af961e9234/output +23 -0
- package/target/release/build/proc-macro2-0ef258af961e9234/root-output +1 -0
- package/target/release/build/proc-macro2-0ef258af961e9234/stderr +0 -0
- package/target/release/build/proc-macro2-36f68cf852da5721/build-script-build +0 -0
- package/target/release/build/proc-macro2-36f68cf852da5721/build_script_build-36f68cf852da5721 +0 -0
- package/target/release/build/proc-macro2-36f68cf852da5721/build_script_build-36f68cf852da5721.d +5 -0
- package/target/release/build/quote-1b0190406535d671/invoked.timestamp +1 -0
- package/target/release/build/quote-1b0190406535d671/output +2 -0
- package/target/release/build/quote-1b0190406535d671/root-output +1 -0
- package/target/release/build/quote-1b0190406535d671/stderr +0 -0
- package/target/release/build/quote-b4e0a8fcaf6776cf/build-script-build +0 -0
- package/target/release/build/quote-b4e0a8fcaf6776cf/build_script_build-b4e0a8fcaf6776cf +0 -0
- package/target/release/build/quote-b4e0a8fcaf6776cf/build_script_build-b4e0a8fcaf6776cf.d +5 -0
- package/target/release/build/rayon-core-51a4003ba765eb49/build-script-build +0 -0
- package/target/release/build/rayon-core-51a4003ba765eb49/build_script_build-51a4003ba765eb49 +0 -0
- package/target/release/build/rayon-core-51a4003ba765eb49/build_script_build-51a4003ba765eb49.d +5 -0
- package/target/release/build/rayon-core-de52281fd9533367/invoked.timestamp +1 -0
- package/target/release/build/rayon-core-de52281fd9533367/output +1 -0
- package/target/release/build/rayon-core-de52281fd9533367/root-output +1 -0
- package/target/release/build/rayon-core-de52281fd9533367/stderr +0 -0
- package/target/release/deps/aho_corasick-80be56ad9c6ccc09.d +35 -0
- package/target/release/deps/bitflags-33ee89eae1384e32.d +13 -0
- package/target/release/deps/cfg_if-9f317fab506492ca.d +7 -0
- package/target/release/deps/convert_case-af17135cdf59f983.d +11 -0
- package/target/release/deps/crossbeam_deque-8a66b8c9383b26cf.d +8 -0
- package/target/release/deps/crossbeam_epoch-c811e3685b4f5800.d +18 -0
- package/target/release/deps/crossbeam_utils-d0d3fc2daa2679f9.d +19 -0
- package/target/release/deps/ctor-7e4e43ec3db285ea.d +5 -0
- package/target/release/deps/either-5f9c430ce669a849.d +9 -0
- package/target/release/deps/jsonl_hft.d +7 -0
- package/target/release/deps/libaho_corasick-80be56ad9c6ccc09.rlib +0 -0
- package/target/release/deps/libaho_corasick-80be56ad9c6ccc09.rmeta +0 -0
- package/target/release/deps/libbitflags-33ee89eae1384e32.rlib +0 -0
- package/target/release/deps/libbitflags-33ee89eae1384e32.rmeta +0 -0
- package/target/release/deps/libc-a2bbd80a211f8fd8.d +45 -0
- package/target/release/deps/libcfg_if-9f317fab506492ca.rlib +0 -0
- package/target/release/deps/libcfg_if-9f317fab506492ca.rmeta +0 -0
- package/target/release/deps/libconvert_case-af17135cdf59f983.rlib +0 -0
- package/target/release/deps/libconvert_case-af17135cdf59f983.rmeta +0 -0
- package/target/release/deps/libcrossbeam_deque-8a66b8c9383b26cf.rlib +0 -0
- package/target/release/deps/libcrossbeam_deque-8a66b8c9383b26cf.rmeta +0 -0
- package/target/release/deps/libcrossbeam_epoch-c811e3685b4f5800.rlib +0 -0
- package/target/release/deps/libcrossbeam_epoch-c811e3685b4f5800.rmeta +0 -0
- package/target/release/deps/libcrossbeam_utils-d0d3fc2daa2679f9.rlib +0 -0
- package/target/release/deps/libcrossbeam_utils-d0d3fc2daa2679f9.rmeta +0 -0
- package/target/release/deps/libctor-7e4e43ec3db285ea.dylib +0 -0
- package/target/release/deps/libeither-5f9c430ce669a849.rlib +0 -0
- package/target/release/deps/libeither-5f9c430ce669a849.rmeta +0 -0
- package/target/release/deps/libjsonl_hft.dylib +0 -0
- package/target/release/deps/libjsonl_hft.rlib +0 -0
- package/target/release/deps/liblibc-a2bbd80a211f8fd8.rlib +0 -0
- package/target/release/deps/liblibc-a2bbd80a211f8fd8.rmeta +0 -0
- package/target/release/deps/libmemchr-d1334d239cb948c9.rlib +0 -0
- package/target/release/deps/libmemchr-d1334d239cb948c9.rmeta +0 -0
- package/target/release/deps/libmemmap2-6d7777ab07a2fbfe.rlib +0 -0
- package/target/release/deps/libmemmap2-6d7777ab07a2fbfe.rmeta +0 -0
- package/target/release/deps/libnapi-9f55d707fbf9ebad.rlib +0 -0
- package/target/release/deps/libnapi-9f55d707fbf9ebad.rmeta +0 -0
- package/target/release/deps/libnapi_build-a42f15ca6e612473.rlib +0 -0
- package/target/release/deps/libnapi_build-a42f15ca6e612473.rmeta +0 -0
- package/target/release/deps/libnapi_derive-6209cabfae5f02fe.dylib +0 -0
- package/target/release/deps/libnapi_derive_backend-c83ee397a7528cf7.rlib +0 -0
- package/target/release/deps/libnapi_derive_backend-c83ee397a7528cf7.rmeta +0 -0
- package/target/release/deps/libnapi_sys-267fe235e013d854.rlib +0 -0
- package/target/release/deps/libnapi_sys-267fe235e013d854.rmeta +0 -0
- package/target/release/deps/libonce_cell-620da3f1872e1aff.rlib +0 -0
- package/target/release/deps/libonce_cell-620da3f1872e1aff.rmeta +0 -0
- package/target/release/deps/libonce_cell-7d1c4a200d6a4bed.rlib +0 -0
- package/target/release/deps/libonce_cell-7d1c4a200d6a4bed.rmeta +0 -0
- package/target/release/deps/libproc_macro2-ca97df7912381a64.rlib +0 -0
- package/target/release/deps/libproc_macro2-ca97df7912381a64.rmeta +0 -0
- package/target/release/deps/libquote-0edc039a6d1c9dad.rlib +0 -0
- package/target/release/deps/libquote-0edc039a6d1c9dad.rmeta +0 -0
- package/target/release/deps/librayon-defdfd23da9ee44b.rlib +0 -0
- package/target/release/deps/librayon-defdfd23da9ee44b.rmeta +0 -0
- package/target/release/deps/librayon_core-a7ac40d07449f3fd.rlib +0 -0
- package/target/release/deps/librayon_core-a7ac40d07449f3fd.rmeta +0 -0
- package/target/release/deps/libregex-7e107b9d65de7fcc.rlib +0 -0
- package/target/release/deps/libregex-7e107b9d65de7fcc.rmeta +0 -0
- package/target/release/deps/libregex_automata-2752bdc3e261a133.rlib +0 -0
- package/target/release/deps/libregex_automata-2752bdc3e261a133.rmeta +0 -0
- package/target/release/deps/libregex_syntax-bb9fb1754b30ece0.rlib +0 -0
- package/target/release/deps/libregex_syntax-bb9fb1754b30ece0.rmeta +0 -0
- package/target/release/deps/libsame_file-b07ed5486f8a1345.rlib +0 -0
- package/target/release/deps/libsame_file-b07ed5486f8a1345.rmeta +0 -0
- package/target/release/deps/libsemver-8b2a43cb91b8097f.rlib +0 -0
- package/target/release/deps/libsemver-8b2a43cb91b8097f.rmeta +0 -0
- package/target/release/deps/libsyn-ff8a4e77718630fb.rlib +0 -0
- package/target/release/deps/libsyn-ff8a4e77718630fb.rmeta +0 -0
- package/target/release/deps/libunicode_ident-617d6623c385d1f9.rlib +0 -0
- package/target/release/deps/libunicode_ident-617d6623c385d1f9.rmeta +0 -0
- package/target/release/deps/libunicode_segmentation-77a18e678843bed7.rlib +0 -0
- package/target/release/deps/libunicode_segmentation-77a18e678843bed7.rmeta +0 -0
- package/target/release/deps/libwalkdir-96b6c1499ee1be2d.rlib +0 -0
- package/target/release/deps/libwalkdir-96b6c1499ee1be2d.rmeta +0 -0
- package/target/release/deps/memchr-d1334d239cb948c9.d +30 -0
- package/target/release/deps/memmap2-6d7777ab07a2fbfe.d +9 -0
- package/target/release/deps/napi-9f55d707fbf9ebad.d +64 -0
- package/target/release/deps/napi_build-a42f15ca6e612473.d +10 -0
- package/target/release/deps/napi_derive-6209cabfae5f02fe.d +10 -0
- package/target/release/deps/napi_derive_backend-c83ee397a7528cf7.d +19 -0
- package/target/release/deps/napi_sys-267fe235e013d854.d +9 -0
- package/target/release/deps/once_cell-620da3f1872e1aff.d +9 -0
- package/target/release/deps/once_cell-7d1c4a200d6a4bed.d +9 -0
- package/target/release/deps/proc_macro2-ca97df7912381a64.d +17 -0
- package/target/release/deps/quote-0edc039a6d1c9dad.d +13 -0
- package/target/release/deps/rayon-defdfd23da9ee44b.d +103 -0
- package/target/release/deps/rayon_core-a7ac40d07449f3fd.d +29 -0
- package/target/release/deps/regex-7e107b9d65de7fcc.d +17 -0
- package/target/release/deps/regex_automata-2752bdc3e261a133.d +65 -0
- package/target/release/deps/regex_syntax-bb9fb1754b30ece0.d +37 -0
- package/target/release/deps/same_file-b07ed5486f8a1345.d +8 -0
- package/target/release/deps/semver-8b2a43cb91b8097f.d +13 -0
- package/target/release/deps/syn-ff8a4e77718630fb.d +58 -0
- package/target/release/deps/unicode_ident-617d6623c385d1f9.d +8 -0
- package/target/release/deps/unicode_segmentation-77a18e678843bed7.d +11 -0
- package/target/release/deps/walkdir-96b6c1499ee1be2d.d +10 -0
- package/target/release/libjsonl_hft.d +1 -0
- package/target/release/libjsonl_hft.dylib +0 -0
- package/target/release/libjsonl_hft.rlib +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# @ebowwa/jsonl-hft
|
|
2
|
+
|
|
3
|
+
HFT-grade JSONL parser with sub-10µs latency.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌─────────────────────────────────────────────────────────┐
|
|
9
|
+
│ Node.js (control plane) │
|
|
10
|
+
│ │ │
|
|
11
|
+
│ ▼ write (169ns) │
|
|
12
|
+
│ ┌─────────────────────────────────────────────────┐ │
|
|
13
|
+
│ │ Shared Memory Ring Buffer (lock-free SPSC) │ │
|
|
14
|
+
│ │ • 64-byte cache-line aligned │ │
|
|
15
|
+
│ │ • Zero-copy reads/writes │ │
|
|
16
|
+
│ └─────────────────────────────────────────────────┘ │
|
|
17
|
+
│ │ │
|
|
18
|
+
│ ▼ read (182ns) │
|
|
19
|
+
│ Rust Parser (data plane) │
|
|
20
|
+
│ • Zero allocation │
|
|
21
|
+
│ • SIMD-friendly byte scanning │
|
|
22
|
+
│ • Returns field offsets (not strings) │
|
|
23
|
+
└─────────────────────────────────────────────────────────┘
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Performance
|
|
27
|
+
|
|
28
|
+
| Operation | Latency |
|
|
29
|
+
|-----------|---------|
|
|
30
|
+
| Ring Write | 169ns |
|
|
31
|
+
| Ring Read | 182ns |
|
|
32
|
+
| Full Round-trip | 1.05µs |
|
|
33
|
+
| Throughput | 954K msgs/sec |
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { parse, extract, countLines, initRingBuffer, ringWrite, ringRead } from "@ebowwa/jsonl-hft";
|
|
39
|
+
|
|
40
|
+
// Direct parse (zero-copy)
|
|
41
|
+
const data = Buffer.from('{"session_id":"abc","role":"user","content":"hello"}\n');
|
|
42
|
+
const entries = parse(data);
|
|
43
|
+
|
|
44
|
+
// Extract fields using offsets
|
|
45
|
+
for (const entry of entries) {
|
|
46
|
+
const sessionId = extract(data, entry.session_id_start, entry.session_id_end);
|
|
47
|
+
const role = extract(data, entry.role_start, entry.role_end);
|
|
48
|
+
console.log(sessionId, role);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Ring buffer for HFT
|
|
52
|
+
initRingBuffer(1024 * 1024); // 1MB
|
|
53
|
+
ringWrite(data);
|
|
54
|
+
const pending = ringPending();
|
|
55
|
+
const readData = ringRead(data.length);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## API
|
|
59
|
+
|
|
60
|
+
### Parse Functions
|
|
61
|
+
|
|
62
|
+
- `parse(data: Buffer): EntryRef[]` - Parse JSONL, returns field offsets
|
|
63
|
+
- `extract(data: Buffer, start: number, end: number): string` - Extract string using offsets
|
|
64
|
+
- `countLines(data: Buffer): number` - Count lines (minimal work)
|
|
65
|
+
|
|
66
|
+
### Ring Buffer Functions
|
|
67
|
+
|
|
68
|
+
- `initRingBuffer(capacity: number): void` - Initialize shared ring buffer
|
|
69
|
+
- `ringWrite(data: Buffer): number` - Write to buffer (returns bytes written)
|
|
70
|
+
- `ringRead(maxLen: number): Uint8Array` - Read from buffer
|
|
71
|
+
- `ringPending(): number` - Get pending bytes
|
|
72
|
+
|
|
73
|
+
## Build
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
cd packages/src/jsonl-hft
|
|
77
|
+
CARGO_TARGET_DIR=target cargo build --release
|
|
78
|
+
bun run benchmark.ts
|
|
79
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ebowwa/jsonl-hft
|
|
3
|
+
* HFT-grade JSONL parser with sub-10µs latency
|
|
4
|
+
*/
|
|
5
|
+
export interface EntryRef {
|
|
6
|
+
session_id_start: number;
|
|
7
|
+
session_id_end: number;
|
|
8
|
+
timestamp_start: number;
|
|
9
|
+
timestamp_end: number;
|
|
10
|
+
role_start: number;
|
|
11
|
+
role_end: number;
|
|
12
|
+
content_start: number;
|
|
13
|
+
content_end: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Convenience type for fully parsed entries
|
|
17
|
+
*/
|
|
18
|
+
export interface ParsedEntry {
|
|
19
|
+
session_id: string;
|
|
20
|
+
timestamp: string;
|
|
21
|
+
role: string;
|
|
22
|
+
content: string;
|
|
23
|
+
source_file?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Count lines in buffer
|
|
27
|
+
*/
|
|
28
|
+
export declare function countLines(data: Buffer | Uint8Array): number;
|
|
29
|
+
/**
|
|
30
|
+
* Parse JSONL data into entries
|
|
31
|
+
*/
|
|
32
|
+
export declare function parse(data: Buffer | Uint8Array): EntryRef[];
|
|
33
|
+
/**
|
|
34
|
+
* Extract string from buffer using offsets
|
|
35
|
+
*/
|
|
36
|
+
export declare function extract(data: Buffer | Uint8Array, start: number, end: number): string;
|
|
37
|
+
/**
|
|
38
|
+
* Initialize ring buffer
|
|
39
|
+
*/
|
|
40
|
+
export declare function initRingBuffer(capacity: number): Uint8Array;
|
|
41
|
+
/**
|
|
42
|
+
* Write to ring buffer
|
|
43
|
+
*/
|
|
44
|
+
export declare function ringWrite(data: Buffer | Uint8Array): number;
|
|
45
|
+
/**
|
|
46
|
+
* Read from ring buffer
|
|
47
|
+
*/
|
|
48
|
+
export declare function ringRead(maxLen: number): Uint8Array;
|
|
49
|
+
/**
|
|
50
|
+
* Get pending bytes in ring buffer
|
|
51
|
+
*/
|
|
52
|
+
export declare function ringPending(): number;
|
|
53
|
+
/**
|
|
54
|
+
* Parse a single JSONL file
|
|
55
|
+
* @param path - Path to the JSONL file
|
|
56
|
+
* @returns Array of EntryRef objects with field offsets
|
|
57
|
+
*/
|
|
58
|
+
export declare function parseFile(path: string): EntryRef[];
|
|
59
|
+
/**
|
|
60
|
+
* Parse all JSONL files in a directory
|
|
61
|
+
* @param dirPath - Path to the directory containing JSONL files
|
|
62
|
+
* @returns Object with entries array and fileOffsets map tracking source files
|
|
63
|
+
*/
|
|
64
|
+
export declare function parseDir(dirPath: string): {
|
|
65
|
+
entries: EntryRef[];
|
|
66
|
+
fileOffsets: Map<string, number>;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Parse directory and return fully parsed objects
|
|
70
|
+
* @param dirPath - Path to the directory containing JSONL files
|
|
71
|
+
* @returns Array of ParsedEntry objects with all fields deserialized
|
|
72
|
+
*/
|
|
73
|
+
export declare function parseDirFast(dirPath: string): ParsedEntry[];
|
|
74
|
+
declare const _default: {
|
|
75
|
+
countLines: typeof countLines;
|
|
76
|
+
parse: typeof parse;
|
|
77
|
+
extract: typeof extract;
|
|
78
|
+
initRingBuffer: typeof initRingBuffer;
|
|
79
|
+
ringWrite: typeof ringWrite;
|
|
80
|
+
ringRead: typeof ringRead;
|
|
81
|
+
ringPending: typeof ringPending;
|
|
82
|
+
parseFile: typeof parseFile;
|
|
83
|
+
parseDir: typeof parseDir;
|
|
84
|
+
parseDirFast: typeof parseDirFast;
|
|
85
|
+
};
|
|
86
|
+
export default _default;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/index.ts
|
|
3
|
+
import { dlopen, suffix, ptr } from "bun:ffi";
|
|
4
|
+
import { join, dirname } from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
import { readdirSync } from "fs";
|
|
7
|
+
var __dirname2 = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
var libPath = join(__dirname2, "..", "target", "release", `libjsonl_hft.${suffix}`);
|
|
9
|
+
var ENTRY_SIZE = 32;
|
|
10
|
+
var lib = dlopen(libPath, {
|
|
11
|
+
count_lines: {
|
|
12
|
+
args: ["ptr", "usize"],
|
|
13
|
+
returns: "u32"
|
|
14
|
+
},
|
|
15
|
+
jsonl_parse_batch: {
|
|
16
|
+
args: ["ptr", "usize", "ptr", "usize"],
|
|
17
|
+
returns: "usize"
|
|
18
|
+
},
|
|
19
|
+
extract_field: {
|
|
20
|
+
args: ["ptr", "usize", "u32", "u32", "ptr", "usize"],
|
|
21
|
+
returns: "usize"
|
|
22
|
+
},
|
|
23
|
+
entry_size: {
|
|
24
|
+
args: [],
|
|
25
|
+
returns: "usize"
|
|
26
|
+
},
|
|
27
|
+
ring_init: {
|
|
28
|
+
args: ["usize"],
|
|
29
|
+
returns: "ptr"
|
|
30
|
+
},
|
|
31
|
+
ring_write: {
|
|
32
|
+
args: ["ptr", "usize"],
|
|
33
|
+
returns: "i32"
|
|
34
|
+
},
|
|
35
|
+
ring_read: {
|
|
36
|
+
args: ["ptr", "usize"],
|
|
37
|
+
returns: "i32"
|
|
38
|
+
},
|
|
39
|
+
ring_pending: {
|
|
40
|
+
args: [],
|
|
41
|
+
returns: "i32"
|
|
42
|
+
},
|
|
43
|
+
jsonl_parse_file: {
|
|
44
|
+
args: ["ptr", "ptr", "usize"],
|
|
45
|
+
returns: "usize"
|
|
46
|
+
},
|
|
47
|
+
jsonl_parse_dir: {
|
|
48
|
+
args: ["ptr", "ptr", "usize"],
|
|
49
|
+
returns: "usize"
|
|
50
|
+
},
|
|
51
|
+
jsonl_parse_dir_serialized: {
|
|
52
|
+
args: ["ptr"],
|
|
53
|
+
returns: "cstring"
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
function countLines(data) {
|
|
57
|
+
return Number(lib.symbols.count_lines(ptr(data), BigInt(data.length)));
|
|
58
|
+
}
|
|
59
|
+
function parse(data) {
|
|
60
|
+
const maxEntries = Math.ceil(data.length / 50);
|
|
61
|
+
const outBuf = new Uint8Array(maxEntries * ENTRY_SIZE);
|
|
62
|
+
const count = Number(lib.symbols.jsonl_parse_batch(ptr(data), BigInt(data.length), ptr(outBuf), BigInt(maxEntries)));
|
|
63
|
+
const view = new DataView(outBuf.buffer, outBuf.byteOffset);
|
|
64
|
+
const results = [];
|
|
65
|
+
for (let i = 0;i < count; i++) {
|
|
66
|
+
const offset = i * ENTRY_SIZE;
|
|
67
|
+
results.push({
|
|
68
|
+
session_id_start: view.getUint32(offset, true),
|
|
69
|
+
session_id_end: view.getUint32(offset + 4, true),
|
|
70
|
+
timestamp_start: view.getUint32(offset + 8, true),
|
|
71
|
+
timestamp_end: view.getUint32(offset + 12, true),
|
|
72
|
+
role_start: view.getUint32(offset + 16, true),
|
|
73
|
+
role_end: view.getUint32(offset + 20, true),
|
|
74
|
+
content_start: view.getUint32(offset + 24, true),
|
|
75
|
+
content_end: view.getUint32(offset + 28, true)
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return results;
|
|
79
|
+
}
|
|
80
|
+
function extract(data, start, end) {
|
|
81
|
+
const len = end - start;
|
|
82
|
+
const outBuf = new Uint8Array(len);
|
|
83
|
+
const actualLen = Number(lib.symbols.extract_field(ptr(data), BigInt(data.length), start, end, ptr(outBuf), BigInt(len)));
|
|
84
|
+
return new TextDecoder().decode(outBuf.slice(0, actualLen));
|
|
85
|
+
}
|
|
86
|
+
function initRingBuffer(capacity) {
|
|
87
|
+
const ptr2 = lib.symbols.ring_init(capacity);
|
|
88
|
+
const size = capacity + 64;
|
|
89
|
+
return new Uint8Array(new SharedArrayBuffer(size));
|
|
90
|
+
}
|
|
91
|
+
function ringWrite(data) {
|
|
92
|
+
return lib.symbols.ring_write(ptr(data), data.length);
|
|
93
|
+
}
|
|
94
|
+
function ringRead(maxLen) {
|
|
95
|
+
const outBuf = new Uint8Array(maxLen);
|
|
96
|
+
const len = lib.symbols.ring_read(ptr(outBuf), maxLen);
|
|
97
|
+
return outBuf.slice(0, len);
|
|
98
|
+
}
|
|
99
|
+
function ringPending() {
|
|
100
|
+
return lib.symbols.ring_pending();
|
|
101
|
+
}
|
|
102
|
+
function parseFile(path) {
|
|
103
|
+
const pathBytes = new TextEncoder().encode(path);
|
|
104
|
+
const maxEntries = 1e5;
|
|
105
|
+
const outBuf = new Uint8Array(maxEntries * ENTRY_SIZE);
|
|
106
|
+
const count = Number(lib.symbols.jsonl_parse_file(ptr(pathBytes), ptr(outBuf), BigInt(maxEntries)));
|
|
107
|
+
const view = new DataView(outBuf.buffer, outBuf.byteOffset);
|
|
108
|
+
const results = [];
|
|
109
|
+
for (let i = 0;i < count; i++) {
|
|
110
|
+
const offset = i * ENTRY_SIZE;
|
|
111
|
+
results.push({
|
|
112
|
+
session_id_start: view.getUint32(offset, true),
|
|
113
|
+
session_id_end: view.getUint32(offset + 4, true),
|
|
114
|
+
timestamp_start: view.getUint32(offset + 8, true),
|
|
115
|
+
timestamp_end: view.getUint32(offset + 12, true),
|
|
116
|
+
role_start: view.getUint32(offset + 16, true),
|
|
117
|
+
role_end: view.getUint32(offset + 20, true),
|
|
118
|
+
content_start: view.getUint32(offset + 24, true),
|
|
119
|
+
content_end: view.getUint32(offset + 28, true)
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return results;
|
|
123
|
+
}
|
|
124
|
+
function parseDir(dirPath) {
|
|
125
|
+
const pathBytes = new TextEncoder().encode(dirPath);
|
|
126
|
+
const maxEntries = 1e6;
|
|
127
|
+
const outBuf = new Uint8Array(maxEntries * ENTRY_SIZE);
|
|
128
|
+
const count = Number(lib.symbols.jsonl_parse_dir(ptr(pathBytes), ptr(outBuf), BigInt(maxEntries)));
|
|
129
|
+
const view = new DataView(outBuf.buffer, outBuf.byteOffset);
|
|
130
|
+
const entries = [];
|
|
131
|
+
for (let i = 0;i < count; i++) {
|
|
132
|
+
const offset = i * ENTRY_SIZE;
|
|
133
|
+
entries.push({
|
|
134
|
+
session_id_start: view.getUint32(offset, true),
|
|
135
|
+
session_id_end: view.getUint32(offset + 4, true),
|
|
136
|
+
timestamp_start: view.getUint32(offset + 8, true),
|
|
137
|
+
timestamp_end: view.getUint32(offset + 12, true),
|
|
138
|
+
role_start: view.getUint32(offset + 16, true),
|
|
139
|
+
role_end: view.getUint32(offset + 20, true),
|
|
140
|
+
content_start: view.getUint32(offset + 24, true),
|
|
141
|
+
content_end: view.getUint32(offset + 28, true)
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
const fileOffsets = new Map;
|
|
145
|
+
const files = readdirSync(dirPath).filter((f) => f.endsWith(".jsonl"));
|
|
146
|
+
let currentOffset = 0;
|
|
147
|
+
for (const file of files) {
|
|
148
|
+
fileOffsets.set(file, currentOffset);
|
|
149
|
+
currentOffset += Math.ceil(entries.length / files.length);
|
|
150
|
+
}
|
|
151
|
+
return { entries, fileOffsets };
|
|
152
|
+
}
|
|
153
|
+
function parseDirFast(dirPath) {
|
|
154
|
+
const pathBytes = new TextEncoder().encode(dirPath);
|
|
155
|
+
const jsonResult = lib.symbols.jsonl_parse_dir_serialized(ptr(pathBytes));
|
|
156
|
+
if (!jsonResult) {
|
|
157
|
+
return [];
|
|
158
|
+
}
|
|
159
|
+
return JSON.parse(jsonResult);
|
|
160
|
+
}
|
|
161
|
+
var src_default = {
|
|
162
|
+
countLines,
|
|
163
|
+
parse,
|
|
164
|
+
extract,
|
|
165
|
+
initRingBuffer,
|
|
166
|
+
ringWrite,
|
|
167
|
+
ringRead,
|
|
168
|
+
ringPending,
|
|
169
|
+
parseFile,
|
|
170
|
+
parseDir,
|
|
171
|
+
parseDirFast
|
|
172
|
+
};
|
|
173
|
+
export {
|
|
174
|
+
ringWrite,
|
|
175
|
+
ringRead,
|
|
176
|
+
ringPending,
|
|
177
|
+
parseFile,
|
|
178
|
+
parseDirFast,
|
|
179
|
+
parseDir,
|
|
180
|
+
parse,
|
|
181
|
+
initRingBuffer,
|
|
182
|
+
extract,
|
|
183
|
+
src_default as default,
|
|
184
|
+
countLines
|
|
185
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ebowwa/jsonl-hft",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "HFT-grade JSONL parser with sub-10µs latency via shared memory ring buffer",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "CARGO_TARGET_DIR=target cargo build --release && bun build ./src/index.ts --outdir ./dist --target=bun && tsc --emitDeclarationOnly --declaration --outDir ./dist",
|
|
15
|
+
"test": "bun test",
|
|
16
|
+
"bench": "bun run benchmark.ts && bun run benchmark-single.ts"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"jsonl",
|
|
20
|
+
"parser",
|
|
21
|
+
"hft",
|
|
22
|
+
"low-latency",
|
|
23
|
+
"simd",
|
|
24
|
+
"ring-buffer",
|
|
25
|
+
"zero-copy"
|
|
26
|
+
],
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"target/release",
|
|
31
|
+
"README.md"
|
|
32
|
+
],
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"bun-types": "^1.3.9"
|
|
35
|
+
},
|
|
36
|
+
"ownership": {
|
|
37
|
+
"domain": "quant",
|
|
38
|
+
"responsibilities": [
|
|
39
|
+
"high-frequency-trading",
|
|
40
|
+
"jsonl-protocol"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
File without changes
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0219eabd547c1d25
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[\"perf-literal\", \"std\"]","declared_features":"[\"default\", \"logging\", \"perf-literal\", \"std\"]","target":7534583537114156500,"profile":9719146384424564959,"path":8784134814819908104,"deps":[[1363051979936526615,"memchr",false,2774510926412701700]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/aho-corasick-80be56ad9c6ccc09/dep-lib-aho_corasick","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d09fc88c68de9482
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[]","declared_features":"[\"arbitrary\", \"bytemuck\", \"example_generated\", \"serde\", \"serde_core\", \"std\"]","target":7691312148208718491,"profile":10689186234282510057,"path":17096504584876652289,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bitflags-33ee89eae1384e32/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
09b8a8366c4efd0b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":9719146384424564959,"path":3403143122445116293,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/cfg-if-9f317fab506492ca/dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
711a2cef0b98274e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[]","declared_features":"[\"rand\", \"random\"]","target":13517390075341535229,"profile":9719146384424564959,"path":3561060455128880877,"deps":[[1232198224951696867,"unicode_segmentation",false,12413996806732919707]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/convert_case-af17135cdf59f983/dep-lib-convert_case","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c182de050dc1b041
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":15353977948366730291,"profile":5534250295506296787,"path":6182340343757042318,"deps":[[3528074118530651198,"crossbeam_epoch",false,17532707661146365060],[4468123440088164316,"crossbeam_utils",false,4852969940912595828]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crossbeam-deque-8a66b8c9383b26cf/dep-lib-crossbeam_deque","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
841c66bdb9b050f3
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[\"alloc\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"loom\", \"loom-crate\", \"nightly\", \"std\"]","target":5830366855417007734,"profile":10689186234282510057,"path":17472708652349432470,"deps":[[4468123440088164316,"crossbeam_utils",false,4852969940912595828]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crossbeam-epoch-c811e3685b4f5800/dep-lib-crossbeam_epoch","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
de93de2587f338b7
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[4468123440088164316,"build_script_build",false,13168074561933992554]],"local":[{"RerunIfChanged":{"output":"release/build/crossbeam-utils-817ce9fe7f1360fd/output","paths":["no_atomic.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
package/target/release/.fingerprint/crossbeam-utils-b2750c26ed0db148/build-script-build-script-build
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6ae2eeef0b66beb6
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"loom\", \"nightly\", \"std\"]","target":5408242616063297496,"profile":9321835942927080110,"path":7208056755829689315,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crossbeam-utils-b2750c26ed0db148/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7463bef972365943
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"loom\", \"nightly\", \"std\"]","target":9626079250877207070,"profile":5534250295506296787,"path":9730347312629596814,"deps":[[4468123440088164316,"build_script_build",false,13202570069418087390]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/crossbeam-utils-d0d3fc2daa2679f9/dep-lib-crossbeam_utils","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
96729094adda851e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[]","declared_features":"[\"used_linker\"]","target":16767752466166802488,"profile":9719146384424564959,"path":767217203948900747,"deps":[[6100504282945712449,"quote",false,18018895652250463096],[10420560437213941093,"syn",false,16449032360507329561]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/ctor-7e4e43ec3db285ea/dep-lib-ctor","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4502834d0cbaf500
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[]","declared_features":"[\"default\", \"serde\", \"std\", \"use_std\"]","target":17124342308084364240,"profile":10689186234282510057,"path":15558599411061720313,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/either-5f9c430ce669a849/dep-lib-either","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
package/target/release/.fingerprint/jsonl-hft-882aeb8777a441f3/run-build-script-build-script-build
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
039b61a89103d293
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[10645994747661959666,"build_script_build",false,8318205175380780873]],"local":[{"RerunIfEnvChanged":{"var":"DEBUG_GENERATED_CODE","val":null}},{"RerunIfEnvChanged":{"var":"TYPE_DEF_TMP_PATH","val":null}},{"RerunIfEnvChanged":{"var":"CARGO_CFG_NAPI_RS_CLI_VERSION","val":null}},{"RerunIfEnvChanged":{"var":"NAPI_DEBUG_GENERATED_CODE","val":null}},{"RerunIfEnvChanged":{"var":"NAPI_TYPE_DEF_TMP_FOLDER","val":null}},{"RerunIfEnvChanged":{"var":"NAPI_FORCE_BUILD_JSONL_HFT","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
|
package/target/release/.fingerprint/jsonl-hft-ae1b32368901910e/build-script-build-script-build
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4927630789337073
|
package/target/release/.fingerprint/jsonl-hft-ae1b32368901910e/build-script-build-script-build.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[]","declared_features":"[]","target":5408242616063297496,"profile":833381519431560210,"path":13767053534773805487,"deps":[[1035178698636953719,"napi_build",false,16946497834414793481]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/jsonl-hft-ae1b32368901910e/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
package/target/release/.fingerprint/jsonl-hft-ae1b32368901910e/dep-build-script-build-script-build
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fcc63bd57a250a31
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[]","declared_features":"[]","target":14404750001013028122,"profile":10689186234282510057,"path":10763286916239946207,"deps":[[6088875491793999760,"memmap2",false,16664594625300670011],[14807177696891839338,"rayon",false,513006623232121944],[15622660310229662834,"walkdir",false,11225476611129654082]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/jsonl-hft-e60d909666ffe447/dep-lib-jsonl_hft","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
bd52b141368963bb
|
package/target/release/.fingerprint/libc-3c80a6461951ca6e/build-script-build-script-build.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[\"default\", \"std\"]","declared_features":"[\"align\", \"const-extern-fn\", \"default\", \"extra_traits\", \"rustc-dep-of-std\", \"rustc-std-workspace-core\", \"std\", \"use_std\"]","target":5408242616063297496,"profile":12503285390867192356,"path":475437304660349600,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/libc-3c80a6461951ca6e/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
af057c16c9cbeca3
|
package/target/release/.fingerprint/libc-62e7d7899e04d9df/run-build-script-build-script-build.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[18365559012052052344,"build_script_build",false,13502786973910258365]],"local":[{"RerunIfChanged":{"output":"release/build/libc-62e7d7899e04d9df/output","paths":["build.rs"]}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_FREEBSD_VERSION","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_MUSL_V1_2_3","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_GNU_TIME_BITS","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2ac683c48b1c81e7
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[\"default\", \"std\"]","declared_features":"[\"align\", \"const-extern-fn\", \"default\", \"extra_traits\", \"rustc-dep-of-std\", \"rustc-std-workspace-core\", \"std\", \"use_std\"]","target":17682796336736096309,"profile":5405366306891990304,"path":4326701764620305635,"deps":[[18365559012052052344,"build_script_build",false,11812039987212060079]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/libc-a2bbd80a211f8fd8/dep-lib-libc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
04e044d2fc0a8126
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"rustc":12610991425282158916,"features":"[\"alloc\", \"std\"]","declared_features":"[\"alloc\", \"core\", \"default\", \"libc\", \"logging\", \"rustc-dep-of-std\", \"std\", \"use_std\"]","target":11745930252914242013,"profile":9719146384424564959,"path":2531522093163902906,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/memchr-d1334d239cb948c9/dep-lib-memchr","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This file has an mtime of when this was started.
|