mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-07-25 17:58:11 -07:00
bitview: reorg part 7 + fix hanging ?
This commit is contained in:
Generated
+171
-116
@@ -515,6 +515,52 @@ dependencies = [
|
|||||||
"brk_structs",
|
"brk_structs",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "brk-file-id"
|
||||||
|
version = "0.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4c1950d399f52e1f5094028ce390381e75649cf4409fca898047005a6dad3afd"
|
||||||
|
dependencies = [
|
||||||
|
"windows-sys 0.60.2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "brk-notify"
|
||||||
|
version = "8.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ca1c0159b584e64e5dda5bcd1a773435514aeabbcf5b1afc194381b465d8fa01"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.9.4",
|
||||||
|
"brk-notify-types",
|
||||||
|
"fsevent-sys",
|
||||||
|
"inotify",
|
||||||
|
"kqueue",
|
||||||
|
"libc",
|
||||||
|
"log",
|
||||||
|
"mio",
|
||||||
|
"walkdir",
|
||||||
|
"windows-sys 0.60.2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "brk-notify-debouncer-full"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "36157ad4fe408d3958da182e0d56a2928eddb098649a241efcc9e1fe9076dc96"
|
||||||
|
dependencies = [
|
||||||
|
"brk-file-id",
|
||||||
|
"brk-notify",
|
||||||
|
"brk-notify-types",
|
||||||
|
"log",
|
||||||
|
"walkdir",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "brk-notify-types"
|
||||||
|
version = "2.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "91ff3e445e42475fba5e0cfaed51345f491e479b9f2069f29875f434a5327913"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_bridge"
|
name = "brk_bridge"
|
||||||
version = "0.0.109"
|
version = "0.0.109"
|
||||||
@@ -542,13 +588,13 @@ dependencies = [
|
|||||||
"brk_bridge",
|
"brk_bridge",
|
||||||
"brk_bundler",
|
"brk_bundler",
|
||||||
"brk_computer",
|
"brk_computer",
|
||||||
|
"brk_error",
|
||||||
"brk_fetcher",
|
"brk_fetcher",
|
||||||
"brk_indexer",
|
"brk_indexer",
|
||||||
"brk_interface",
|
"brk_interface",
|
||||||
"brk_logger",
|
"brk_logger",
|
||||||
"brk_parser",
|
"brk_parser",
|
||||||
"brk_server",
|
"brk_server",
|
||||||
"brk_structs",
|
|
||||||
"clap",
|
"clap",
|
||||||
"color-eyre",
|
"color-eyre",
|
||||||
"log",
|
"log",
|
||||||
@@ -727,14 +773,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown"
|
name = "brk_rolldown"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c0dfb4767a625199016aa5be14edc12e63e7a3b22e9b7d5cc37582f76d1d7d24"
|
checksum = "76d5237104ef0c275a1c50354392a7edb45fc736998479530c231d811a0a38e0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"append-only-vec",
|
"append-only-vec",
|
||||||
"arcstr",
|
"arcstr",
|
||||||
"bitflags 2.9.4",
|
"bitflags 2.9.4",
|
||||||
|
"brk-notify",
|
||||||
"brk_rolldown_common",
|
"brk_rolldown_common",
|
||||||
"brk_rolldown_debug",
|
"brk_rolldown_debug",
|
||||||
"brk_rolldown_ecmascript",
|
"brk_rolldown_ecmascript",
|
||||||
@@ -745,6 +792,7 @@ dependencies = [
|
|||||||
"brk_rolldown_plugin_chunk_import_map",
|
"brk_rolldown_plugin_chunk_import_map",
|
||||||
"brk_rolldown_plugin_data_uri",
|
"brk_rolldown_plugin_data_uri",
|
||||||
"brk_rolldown_plugin_hmr",
|
"brk_rolldown_plugin_hmr",
|
||||||
|
"brk_rolldown_plugin_oxc_runtime",
|
||||||
"brk_rolldown_resolver",
|
"brk_rolldown_resolver",
|
||||||
"brk_rolldown_sourcemap",
|
"brk_rolldown_sourcemap",
|
||||||
"brk_rolldown_std_utils",
|
"brk_rolldown_std_utils",
|
||||||
@@ -754,13 +802,13 @@ dependencies = [
|
|||||||
"brk_string_wizard",
|
"brk_string_wizard",
|
||||||
"commondir",
|
"commondir",
|
||||||
"css-module-lexer",
|
"css-module-lexer",
|
||||||
|
"derive_more",
|
||||||
"dunce",
|
"dunce",
|
||||||
"futures",
|
"futures",
|
||||||
"indexmap 2.11.4",
|
"indexmap 2.11.4",
|
||||||
"itertools",
|
"itertools",
|
||||||
"itoa",
|
"itoa",
|
||||||
"memchr",
|
"memchr",
|
||||||
"notify",
|
|
||||||
"oxc",
|
"oxc",
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
"oxc_ecmascript",
|
"oxc_ecmascript",
|
||||||
@@ -780,9 +828,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_common"
|
name = "brk_rolldown_common"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e3412bb06f9eef1d34ad8d8decd55f7625db7852d440e3fececafdaddac367b0"
|
checksum = "80d4461576c24766fdea280ce888e6d8dc36f50161e2615fd6a698511d623f36"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arcstr",
|
"arcstr",
|
||||||
@@ -805,15 +853,16 @@ dependencies = [
|
|||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"simdutf8",
|
||||||
"sugar_path",
|
"sugar_path",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_debug"
|
name = "brk_rolldown_debug"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0e28020dcca285e50003eab2faed661a3f147e5c3b7b103ac7fa46f3d9811656"
|
checksum = "e6d03984d81260c4d9d068431eda178b59a3eaf539d67d1cc6cd2b0dc28140d5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"blake3",
|
"blake3",
|
||||||
"brk_rolldown_debug_action",
|
"brk_rolldown_debug_action",
|
||||||
@@ -827,9 +876,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_debug_action"
|
name = "brk_rolldown_debug_action"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b55010d6b5a8dcf3524ca8b504680a9387dd5709c555fe6e1c87fca3f77b5b89"
|
checksum = "e03dc81df86ed78c962fb675bc4d3ecf5988ec8813dddc41701b3c496e29514b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"ts-rs",
|
"ts-rs",
|
||||||
@@ -837,9 +886,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_ecmascript"
|
name = "brk_rolldown_ecmascript"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9e5f4324e457d930dc61bc2fa1ec6ca006ab8f1b25b3a7d4e89e64b009a92244"
|
checksum = "4c5f433cfd8f7d5b9a054422770e7477a24c398493e8cd42e15f712dbda9d280"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arcstr",
|
"arcstr",
|
||||||
"brk_rolldown_error",
|
"brk_rolldown_error",
|
||||||
@@ -850,9 +899,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_ecmascript_utils"
|
name = "brk_rolldown_ecmascript_utils"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d4e67014dd9afcc8982f3e03d0f6f0389e8f8e38aed8130368678f2599d18630"
|
checksum = "4358a13b70a7a647f61ba95caae66e6c747b10d5cba784e6c38636b2011267a0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_rolldown_common",
|
"brk_rolldown_common",
|
||||||
"oxc",
|
"oxc",
|
||||||
@@ -861,9 +910,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_error"
|
name = "brk_rolldown_error"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d7b1666952fcfc93fb494638c26be72aae73cca2267834fa3fd9657e32fdbb8f"
|
checksum = "fd9a2e23e1e5dfbfacfaa01fd6adbb05511233ca7c128dde3f4b38d74de0a3b9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arcstr",
|
"arcstr",
|
||||||
@@ -881,9 +930,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_fs"
|
name = "brk_rolldown_fs"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "364160f3619b61db2dba73539ca9df72326bcf6516eedb84479f9aec7ff916a3"
|
checksum = "c9ef43d8e0f263b04febb3972ddbb95792abf510c74b4df9a7849786bd557acb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"oxc_resolver",
|
"oxc_resolver",
|
||||||
"vfs",
|
"vfs",
|
||||||
@@ -891,9 +940,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_plugin"
|
name = "brk_rolldown_plugin"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "57211c1b798955a934c68c3d5288df64c5215f9bf8117371aa229eb8284048d8"
|
checksum = "79b87d794281878edb320543a514a6d25b47d4f78a2744b674a19db01e10c0d2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arcstr",
|
"arcstr",
|
||||||
@@ -921,9 +970,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_plugin_chunk_import_map"
|
name = "brk_rolldown_plugin_chunk_import_map"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e312f5953e7dcfb1d7bdb02cf996e0c83fc0bb27601681836b53973755bad18e"
|
checksum = "17b70821f39dc678e05d16e75e7549b90acdd6f87d408b42120e586850ee6014"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arcstr",
|
"arcstr",
|
||||||
"brk_rolldown_common",
|
"brk_rolldown_common",
|
||||||
@@ -936,23 +985,24 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_plugin_data_uri"
|
name = "brk_rolldown_plugin_data_uri"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "75d9bfa5cda344f58deff64c9da579edfa51d78f340b92faac08c201cc642ee9"
|
checksum = "d1012b5c731c4c1e21169997a115d6273f6cc10d01726eb58509fa58dec39aa7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arcstr",
|
"arcstr",
|
||||||
"base64-simd",
|
"base64-simd",
|
||||||
"brk_rolldown_common",
|
"brk_rolldown_common",
|
||||||
"brk_rolldown_plugin",
|
"brk_rolldown_plugin",
|
||||||
"brk_rolldown_utils",
|
"brk_rolldown_utils",
|
||||||
|
"simdutf8",
|
||||||
"urlencoding",
|
"urlencoding",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_plugin_hmr"
|
name = "brk_rolldown_plugin_hmr"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ed08c47846e429ffe87a047206ac3a2251659d01e28b4fecb0a5fc1881624a7b"
|
checksum = "94bf2c1f5735ad763df8805d47fbb04af7bd622be89abac7339e04415b3a69a9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arcstr",
|
"arcstr",
|
||||||
"brk_rolldown_common",
|
"brk_rolldown_common",
|
||||||
@@ -961,10 +1011,22 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_resolver"
|
name = "brk_rolldown_plugin_oxc_runtime"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d99246fc977891718c909a99330f58d80ea4fa079cab4acf37bf58055e0bbeb4"
|
checksum = "7631bc3c34d8c95ed2fdcc10fd53e761fec6509b2f7804cbde800ca813e8c32d"
|
||||||
|
dependencies = [
|
||||||
|
"arcstr",
|
||||||
|
"brk_rolldown_plugin",
|
||||||
|
"brk_rolldown_utils",
|
||||||
|
"phf",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "brk_rolldown_resolver"
|
||||||
|
version = "0.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7c08ca0eac64956b1b81af47f360a7c2107292475efe4e04605a20257753fde5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arcstr",
|
"arcstr",
|
||||||
"brk_rolldown_common",
|
"brk_rolldown_common",
|
||||||
@@ -978,9 +1040,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_sourcemap"
|
name = "brk_rolldown_sourcemap"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a0e238138ca5395313ca4376d3b412450653cf701935e6c05ad32e1c317598ca"
|
checksum = "63859586276da70f2f8239ca558a0fc6f047fdea2c6856cca9c5056cd6a8963a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brk_rolldown_utils",
|
"brk_rolldown_utils",
|
||||||
"memchr",
|
"memchr",
|
||||||
@@ -991,18 +1053,18 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_std_utils"
|
name = "brk_rolldown_std_utils"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9672fb5d256a9c944b4050cbf69f06f68274264aaa97d45d25b2f226a05ed269"
|
checksum = "754a91681b732fdc7e0118f8f356e1f7428b66ce00339688a1c2e8591b98edb2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"regex",
|
"regex",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_tracing"
|
name = "brk_rolldown_tracing"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b33f1e5d84a5f6a065dc35db551ebedb20501d95955c76b110439965d2e1c14d"
|
checksum = "da33c2b40ddb7390f299fa7ff7bd74d2ecd80dd57ad2a4cdef131412605090c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-chrome",
|
"tracing-chrome",
|
||||||
@@ -1011,9 +1073,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_utils"
|
name = "brk_rolldown_utils"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f39314bf9875e0b461aadc293b3156063ecc2e4fcdb76decb5d051b1c32f0449"
|
checksum = "aeb807d38d854c3f71c7640b31961da59de3bff3f9498b79e31570debaf74a4f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arcstr",
|
"arcstr",
|
||||||
@@ -1049,13 +1111,13 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_rolldown_watcher"
|
name = "brk_rolldown_watcher"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "53159dd01ed61374892e101ea5afe34862fade82ae8aedc17a36c1664923a2ac"
|
checksum = "cac059d6804c44336f882a87d568bc866cb6fbf8ecd5a083aaf0a310230a2909"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"brk-notify",
|
||||||
|
"brk-notify-debouncer-full",
|
||||||
"brk_rolldown_error",
|
"brk_rolldown_error",
|
||||||
"notify",
|
|
||||||
"notify-debouncer-full",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1100,10 +1162,11 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brk_string_wizard"
|
name = "brk_string_wizard"
|
||||||
version = "0.1.5"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c40057b36de33ed24a8b78e81e190e134f4cb6f85e25d5a133536c40ab4ddb6d"
|
checksum = "b7117e64fd4da49fe64dcebbbd8f4e490b1c07fdf99e4c22e2cefa0e130da480"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
"oxc_index",
|
"oxc_index",
|
||||||
"oxc_sourcemap",
|
"oxc_sourcemap",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
@@ -1810,15 +1873,6 @@ dependencies = [
|
|||||||
"simdutf8",
|
"simdutf8",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "file-id"
|
|
||||||
version = "0.2.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e1fc6a637b6dc58414714eddd9170ff187ecb0933d4c7024d1abbd23a3cc26e9"
|
|
||||||
dependencies = [
|
|
||||||
"windows-sys 0.60.2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "filetime"
|
name = "filetime"
|
||||||
version = "0.2.26"
|
version = "0.2.26"
|
||||||
@@ -2768,19 +2822,6 @@ dependencies = [
|
|||||||
"windows-sys 0.60.2",
|
"windows-sys 0.60.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "notify-debouncer-full"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "375bd3a138be7bfeff3480e4a623df4cbfb55b79df617c055cd810ba466fa078"
|
|
||||||
dependencies = [
|
|
||||||
"file-id",
|
|
||||||
"log",
|
|
||||||
"notify",
|
|
||||||
"notify-types",
|
|
||||||
"walkdir",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "notify-types"
|
name = "notify-types"
|
||||||
version = "2.0.0"
|
version = "2.0.0"
|
||||||
@@ -2903,9 +2944,9 @@ checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc"
|
name = "oxc"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1273a1f856d670d49d62ac0e362a6989ea3be208f6846aab85f34383a04b0fae"
|
checksum = "514174b0464005dd95e873f5236089949ab77c79cc8a8e9352721f06d45a0b8d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
"oxc_ast",
|
"oxc_ast",
|
||||||
@@ -2969,9 +3010,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_allocator"
|
name = "oxc_allocator"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "90237f36cf0cd3ea2dcf9682b48fa0c1762a4b407fdcc630f60a72c277877c9f"
|
checksum = "79d9ac4e239df6f418d86176aa4af85f850f60823a8708fd50a6f7d6f475a07d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"allocator-api2",
|
"allocator-api2",
|
||||||
"bumpalo",
|
"bumpalo",
|
||||||
@@ -2984,9 +3025,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_ast"
|
name = "oxc_ast"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a73ff824d44e51ac6c20381b644d48db4326935e811eeab29d52ca45e4d19670"
|
checksum = "013500b777b89130b5f79b545d252d9a147db7ef91f07954da394400ae7f14c9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.4",
|
"bitflags 2.9.4",
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
@@ -3001,9 +3042,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_ast_macros"
|
name = "oxc_ast_macros"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4f6af164ffae11248f32c449dad6a15f85d2154fe398bfec75502e0e2af5767a"
|
checksum = "9711ea5f01691277822413f0bb56085ac1b867f9cb2090387f634a94a2d4f64c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"phf",
|
"phf",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@@ -3013,9 +3054,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_ast_visit"
|
name = "oxc_ast_visit"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a0ff52052e2cfb72fff062d4b7a393f9e9bded601dc16df796e3e460e17a9031"
|
checksum = "95f0e1f45a19d14d9e4660f426fb8abe31c86b43a43c426a6d182e786994b0bb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
"oxc_ast",
|
"oxc_ast",
|
||||||
@@ -3025,9 +3066,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_cfg"
|
name = "oxc_cfg"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "859f43d20760f159a0b94264bd4d1d0b3c062b69c074d894e80e65295117719b"
|
checksum = "a32fdc832b6ed9b007f44022e3b273e5b2cc6d798a91ea5b46e150858b17be40"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.4",
|
"bitflags 2.9.4",
|
||||||
"itertools",
|
"itertools",
|
||||||
@@ -3040,9 +3081,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_codegen"
|
name = "oxc_codegen"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "08e84ab41c9f848471f206674c94781bdc0364699fb14574a3d26dd2a2985844"
|
checksum = "b9e9e29e30d2252903c4c5e1104fb7542365d57ceba83e16d4f52b436f7ffa5d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.4",
|
"bitflags 2.9.4",
|
||||||
"cow-utils",
|
"cow-utils",
|
||||||
@@ -3061,19 +3102,32 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_data_structures"
|
name = "oxc_compat"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7f048c4ae3569bcc9dbbed29730b5c5f6dd3a35e9f5c3750cd4b3ed72381fbd0"
|
checksum = "42631ddd366f3a6b829d346a5d8ceb4fb3a3796293916f437b244c4e60fa4dd9"
|
||||||
|
dependencies = [
|
||||||
|
"cow-utils",
|
||||||
|
"oxc-browserslist",
|
||||||
|
"oxc_syntax",
|
||||||
|
"rustc-hash",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "oxc_data_structures"
|
||||||
|
version = "0.92.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5bccdfe08b75babe4944aefcc84f8d795d48a0155fcb20c4855c46eabf6e5d49"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ropey",
|
"ropey",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_diagnostics"
|
name = "oxc_diagnostics"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7d96c95294deec2f038e8c7749a751f929c263da34cc68a621472c57c916c14e"
|
checksum = "e710dd26a2946f906ccd449a2d34f195b0461e5a8776db067ed207189f0213f3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cow-utils",
|
"cow-utils",
|
||||||
"oxc-miette",
|
"oxc-miette",
|
||||||
@@ -3082,9 +3136,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_ecmascript"
|
name = "oxc_ecmascript"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "aa7b86782020722b3190c083dfc3de59cb73425d1fa275ff6f91b5b4ee509550"
|
checksum = "80c03f1a2246f422197c317585b056dbc283a4cfb10c8058cb3296b87cb835da"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cow-utils",
|
"cow-utils",
|
||||||
"num-bigint",
|
"num-bigint",
|
||||||
@@ -3097,9 +3151,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_estree"
|
name = "oxc_estree"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "97f7078ef0c6da21657f5dcade4540c65a460d2a26a42e4418d12ecac860143a"
|
checksum = "36ee39a2fc76ae96ccb5dcfea6c430e09e93e4fbcd9ec7f35fe787ea3fb6873a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dragonbox_ecma",
|
"dragonbox_ecma",
|
||||||
"itoa",
|
"itoa",
|
||||||
@@ -3118,9 +3172,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_isolated_declarations"
|
name = "oxc_isolated_declarations"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "75e6efdb4f6d09772773cc254caed257270b2b32ee4df21dac196dfb0d966c1e"
|
checksum = "132bb2006e95e63c0b07cc45c30e6d0de6bb643036d7b6316f7c1398a72c1c42"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.4",
|
"bitflags 2.9.4",
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
@@ -3135,9 +3189,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_mangler"
|
name = "oxc_mangler"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "401c8ff0fc5e60c94a5821b768bf019a42a0d058469dd26e604dda57723bc404"
|
checksum = "cb797e995b53f0e112b0a1359f967de7cb3a702b46fa2492d6025be4de175a65"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itertools",
|
"itertools",
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
@@ -3151,15 +3205,17 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_minifier"
|
name = "oxc_minifier"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cd50617ac26b8cd1e6788dbb527ce16704f47fd5e8e6d87fee4a5e63224a71e8"
|
checksum = "61dfdcff432cacd8257093842d1494225f72cbea8286610b86abfbad59a16003"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cow-utils",
|
"cow-utils",
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
"oxc_ast",
|
"oxc_ast",
|
||||||
"oxc_ast_visit",
|
"oxc_ast_visit",
|
||||||
"oxc_codegen",
|
"oxc_codegen",
|
||||||
|
"oxc_compat",
|
||||||
|
"oxc_data_structures",
|
||||||
"oxc_ecmascript",
|
"oxc_ecmascript",
|
||||||
"oxc_mangler",
|
"oxc_mangler",
|
||||||
"oxc_parser",
|
"oxc_parser",
|
||||||
@@ -3173,9 +3229,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_parser"
|
name = "oxc_parser"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ef71ea1e9bde8ff15f89b60874363359fc7e9796de7bf6cdff69fa54f6869bba"
|
checksum = "86612cd26f817679d522b7ed33e525537ec5c0a7165d4d23138b8cbaf896d0d5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.4",
|
"bitflags 2.9.4",
|
||||||
"cow-utils",
|
"cow-utils",
|
||||||
@@ -3196,9 +3252,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_regular_expression"
|
name = "oxc_regular_expression"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "60a4df17b1c47c7fe749208f3a32158dfe90dca5ce630ce86cb9415521f87eb3"
|
checksum = "e7dc07d4e5d8337f5b6bbadadf1787d2a320f99969c9602ed03c823babd0084a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.4",
|
"bitflags 2.9.4",
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
@@ -3212,9 +3268,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_resolver"
|
name = "oxc_resolver"
|
||||||
version = "11.8.3"
|
version = "11.8.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c553f3d6a88eb57513b4bb6b8387ab71c7701721ecd242b673ffeb3dc99cfd08"
|
checksum = "743c415f2237308d3a50d15d5ab5e432fd44c3b2c77042b01bbbd4e5e7d1ca0f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"indexmap 2.11.4",
|
"indexmap 2.11.4",
|
||||||
@@ -3235,9 +3291,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_semantic"
|
name = "oxc_semantic"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8239fa4e6eaee7a16039a3292a3adbaa645ba3013bf2f801517d8fadc4396557"
|
checksum = "f9ce8984f6054d3deafebff4e318fea5a38d281905be8bf555e625a7d7c63220"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itertools",
|
"itertools",
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
@@ -3257,9 +3313,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_sourcemap"
|
name = "oxc_sourcemap"
|
||||||
version = "4.2.1"
|
version = "4.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "05ff280f25901ac054ad8552395ecd6a455e4b9352a94debbc34c433760586ef"
|
checksum = "d3e5d53a1bdb071d10a83cc0b4c69ca6ebb55d55fc6333897aef72c057830b95"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64-simd",
|
"base64-simd",
|
||||||
"json-escape-simd",
|
"json-escape-simd",
|
||||||
@@ -3270,9 +3326,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_span"
|
name = "oxc_span"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7d88265af3fb8fc2a2317144dfc40b5e120e0ebe21693cfbf7508d4d3ec6d74f"
|
checksum = "be7ea89d6e858be16ef14f9a9be81ee210c17cb29bb95d5c86881251075071af"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"compact_str",
|
"compact_str",
|
||||||
"oxc-miette",
|
"oxc-miette",
|
||||||
@@ -3284,9 +3340,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_syntax"
|
name = "oxc_syntax"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b2596e7891b08899f7b74a1fb87b5f5c14153918bb2966648c84581f0a7e6795"
|
checksum = "a6477f14f0e380033455f0e3e6cdc33fd19932fe5f627a17b38e4666649336cb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.4",
|
"bitflags 2.9.4",
|
||||||
"cow-utils",
|
"cow-utils",
|
||||||
@@ -3306,20 +3362,19 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_transformer"
|
name = "oxc_transformer"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bd3cadde4466d8b059bd5032e248a172dfd1dfdcdf82388d3d87bc36b023e895"
|
checksum = "7c10b7504559c08191c3881ef53fb671619c62c9cc26bd5e66274c68057e6ad3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"compact_str",
|
"compact_str",
|
||||||
"cow-utils",
|
|
||||||
"indexmap 2.11.4",
|
"indexmap 2.11.4",
|
||||||
"itoa",
|
"itoa",
|
||||||
"memchr",
|
"memchr",
|
||||||
"oxc-browserslist",
|
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
"oxc_ast",
|
"oxc_ast",
|
||||||
"oxc_ast_visit",
|
"oxc_ast_visit",
|
||||||
|
"oxc_compat",
|
||||||
"oxc_data_structures",
|
"oxc_data_structures",
|
||||||
"oxc_diagnostics",
|
"oxc_diagnostics",
|
||||||
"oxc_ecmascript",
|
"oxc_ecmascript",
|
||||||
@@ -3337,9 +3392,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_transformer_plugins"
|
name = "oxc_transformer_plugins"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "633645296d62b4550dcf3a28ef08a21055b09b6966feae36043c367b1f511345"
|
checksum = "1592bc6214448a4986e72e1f7a71ca52e5b7135e831e806eb09bb9a29343dbaf"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cow-utils",
|
"cow-utils",
|
||||||
"itoa",
|
"itoa",
|
||||||
@@ -3359,9 +3414,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oxc_traverse"
|
name = "oxc_traverse"
|
||||||
version = "0.87.0"
|
version = "0.92.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6d4dfe9de6b462cb2b2e8e1040b912233781dbb4032c8266f30297a9e2cf4155"
|
checksum = "8bc2faa1b10f9044f0ef34cb3959684836733d0168ce98504e47010e000ee62e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ impl Bridge for Interface<'static> {
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
let path = packages_path.join("generated");
|
let path = path.join("generated");
|
||||||
fs::create_dir_all(&path)?;
|
fs::create_dir_all(&path)?;
|
||||||
|
|
||||||
generate_version_file(&path)?;
|
generate_version_file(&path)?;
|
||||||
@@ -101,7 +101,10 @@ fn generate_metrics_file(interface: &Interface<'static>, parent: &Path) -> io::R
|
|||||||
|
|
||||||
contents += &format!(
|
contents += &format!(
|
||||||
"
|
"
|
||||||
* @typedef {{{}}} Index",
|
* @typedef {{{}}} Index
|
||||||
|
*/
|
||||||
|
|
||||||
|
",
|
||||||
indexes
|
indexes
|
||||||
.iter()
|
.iter()
|
||||||
.map(|i| i.to_string())
|
.map(|i| i.to_string())
|
||||||
@@ -111,14 +114,6 @@ fn generate_metrics_file(interface: &Interface<'static>, parent: &Path) -> io::R
|
|||||||
|
|
||||||
let mut unique_index_groups = BTreeMap::new();
|
let mut unique_index_groups = BTreeMap::new();
|
||||||
|
|
||||||
contents += "
|
|
||||||
*
|
|
||||||
* @typedef {typeof COMPRESSED_METRIC_TO_INDEXES} MetricToIndexes
|
|
||||||
* @typedef {string} Metric
|
|
||||||
*/
|
|
||||||
|
|
||||||
";
|
|
||||||
|
|
||||||
let mut word_to_freq: BTreeMap<_, usize> = BTreeMap::new();
|
let mut word_to_freq: BTreeMap<_, usize> = BTreeMap::new();
|
||||||
interface
|
interface
|
||||||
.metric_to_index_to_vec()
|
.metric_to_index_to_vec()
|
||||||
@@ -136,9 +131,10 @@ fn generate_metrics_file(interface: &Interface<'static>, parent: &Path) -> io::R
|
|||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
contents += &format!(
|
contents += &format!(
|
||||||
"const INDEX_TO_WORD = [
|
"export const INDEX_TO_WORD = [
|
||||||
{}
|
{}
|
||||||
];
|
];
|
||||||
|
|
||||||
",
|
",
|
||||||
words
|
words
|
||||||
.iter()
|
.iter()
|
||||||
@@ -147,55 +143,6 @@ fn generate_metrics_file(interface: &Interface<'static>, parent: &Path) -> io::R
|
|||||||
.join(",\n ")
|
.join(",\n ")
|
||||||
);
|
);
|
||||||
|
|
||||||
contents += "
|
|
||||||
const WORD_TO_INDEX = {};
|
|
||||||
INDEX_TO_WORD.forEach((word, index) => {
|
|
||||||
WORD_TO_INDEX[word] = index;
|
|
||||||
});
|
|
||||||
|
|
||||||
function lettersToIndex(s) {
|
|
||||||
let result = 0;
|
|
||||||
for (let i = 0; i < s.length; i++) {
|
|
||||||
const value = charToIndex(s.charCodeAt(i));
|
|
||||||
result = result * 52 + value + 1;
|
|
||||||
}
|
|
||||||
return result - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
function charToIndex(c) {
|
|
||||||
const A = 65, Z = 90, a = 97, z = 122;
|
|
||||||
|
|
||||||
if (c >= A && c <= Z) {
|
|
||||||
return c - A;
|
|
||||||
} else if (c >= a && c <= z) {
|
|
||||||
return c - a + 26;
|
|
||||||
} else {
|
|
||||||
return 255; // Invalid
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function compressMetric(metric) {
|
|
||||||
return metric
|
|
||||||
.split('_')
|
|
||||||
.map((word) => {
|
|
||||||
const index = WORD_TO_INDEX[word];
|
|
||||||
if (index === undefined) throw \"bad word\";
|
|
||||||
return indexToLetters(index);
|
|
||||||
})
|
|
||||||
.join('_');
|
|
||||||
}
|
|
||||||
|
|
||||||
function decompressMetric(compressedMetric) {
|
|
||||||
return compressedMetric
|
|
||||||
.split('_')
|
|
||||||
.map((code) => {
|
|
||||||
const index = lettersToIndex(code);
|
|
||||||
return WORDS[index] || code; // Fallback to original if not found
|
|
||||||
})
|
|
||||||
.join('_');
|
|
||||||
}
|
|
||||||
";
|
|
||||||
|
|
||||||
let word_to_base62 = words
|
let word_to_base62 = words
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
@@ -204,7 +151,7 @@ function decompressMetric(compressedMetric) {
|
|||||||
|
|
||||||
let mut ser_metric_to_indexes = "
|
let mut ser_metric_to_indexes = "
|
||||||
/** @type {Record<string, Index[]>} */
|
/** @type {Record<string, Index[]>} */
|
||||||
const COMPRESSED_METRIC_TO_INDEXES = {
|
export const COMPRESSED_METRIC_TO_INDEXES = {
|
||||||
"
|
"
|
||||||
.to_string();
|
.to_string();
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ build = "build.rs"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
log = { workspace = true }
|
log = { workspace = true }
|
||||||
notify = "8.2.0"
|
notify = "8.2.0"
|
||||||
brk_rolldown = "0.1.5"
|
brk_rolldown = "0.2.3"
|
||||||
# brk_rolldown = { path = "../../../rolldown/crates/rolldown"}
|
# brk_rolldown = { path = "../../../rolldown/crates/rolldown"}
|
||||||
sugar_path = "1.2.0"
|
sugar_path = "1.2.0"
|
||||||
tokio = { workspace = true }
|
tokio = { workspace = true }
|
||||||
|
|||||||
@@ -14,15 +14,20 @@ use tokio::sync::Mutex;
|
|||||||
|
|
||||||
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||||
|
|
||||||
pub async fn bundle(websites_path: &Path, source_folder: &str, watch: bool) -> io::Result<PathBuf> {
|
pub async fn bundle(
|
||||||
|
packages_path: &Path,
|
||||||
|
websites_path: &Path,
|
||||||
|
source_folder: &str,
|
||||||
|
watch: bool,
|
||||||
|
) -> io::Result<PathBuf> {
|
||||||
|
let relative_packages_path = packages_path;
|
||||||
let relative_source_path = websites_path.join(source_folder);
|
let relative_source_path = websites_path.join(source_folder);
|
||||||
let relative_dist_path = websites_path.join("dist");
|
let relative_dist_path = websites_path.join("dist");
|
||||||
let relative_packages_path = websites_path.join("packages");
|
|
||||||
|
|
||||||
let absolute_websites_path = websites_path.absolutize();
|
|
||||||
let absolute_websites_path_clone = absolute_websites_path.clone();
|
|
||||||
|
|
||||||
let absolute_packages_path = relative_packages_path.absolutize();
|
let absolute_packages_path = relative_packages_path.absolutize();
|
||||||
|
let absolute_packages_path_clone = absolute_packages_path.clone();
|
||||||
|
let absolute_websites_path = websites_path.absolutize();
|
||||||
|
let absolute_websites_path_clone = absolute_websites_path.clone();
|
||||||
|
|
||||||
let absolute_source_path = relative_source_path.absolutize();
|
let absolute_source_path = relative_source_path.absolutize();
|
||||||
let absolute_source_index_path = absolute_source_path.join("index.html");
|
let absolute_source_index_path = absolute_source_path.join("index.html");
|
||||||
@@ -53,7 +58,8 @@ pub async fn bundle(websites_path: &Path, source_folder: &str, watch: bool) -> i
|
|||||||
minify: Some(RawMinifyOptions::Bool(true)),
|
minify: Some(RawMinifyOptions::Bool(true)),
|
||||||
sourcemap: Some(SourceMapType::File),
|
sourcemap: Some(SourceMapType::File),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
})
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
if let Err(error) = bundler.write().await {
|
if let Err(error) = bundler.write().await {
|
||||||
error!("{error:?}");
|
error!("{error:?}");
|
||||||
@@ -135,6 +141,9 @@ pub async fn bundle(websites_path: &Path, source_folder: &str, watch: bool) -> i
|
|||||||
event_watcher
|
event_watcher
|
||||||
.watch(&absolute_websites_path_clone, RecursiveMode::Recursive)
|
.watch(&absolute_websites_path_clone, RecursiveMode::Recursive)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
event_watcher
|
||||||
|
.watch(&absolute_packages_path_clone, RecursiveMode::Recursive)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
let watcher =
|
let watcher =
|
||||||
brk_rolldown::Watcher::new(vec![Arc::new(Mutex::new(bundler))], None).unwrap();
|
brk_rolldown::Watcher::new(vec![Arc::new(Mutex::new(bundler))], None).unwrap();
|
||||||
|
|||||||
@@ -14,13 +14,13 @@ bitcoincore-rpc = { workspace = true }
|
|||||||
brk_bridge = { workspace = true }
|
brk_bridge = { workspace = true }
|
||||||
brk_bundler = { workspace = true }
|
brk_bundler = { workspace = true }
|
||||||
brk_computer = { workspace = true }
|
brk_computer = { workspace = true }
|
||||||
|
brk_error = { workspace = true }
|
||||||
brk_fetcher = { workspace = true }
|
brk_fetcher = { workspace = true }
|
||||||
brk_indexer = { workspace = true }
|
brk_indexer = { workspace = true }
|
||||||
brk_interface = { workspace = true }
|
brk_interface = { workspace = true }
|
||||||
brk_logger = { workspace = true }
|
brk_logger = { workspace = true }
|
||||||
brk_parser = { workspace = true }
|
brk_parser = { workspace = true }
|
||||||
brk_server = { workspace = true }
|
brk_server = { workspace = true }
|
||||||
brk_structs = { workspace = true }
|
|
||||||
vecdb = { workspace = true }
|
vecdb = { workspace = true }
|
||||||
clap = { version = "4.5.48", features = ["derive", "string"] }
|
clap = { version = "4.5.48", features = ["derive", "string"] }
|
||||||
color-eyre = "0.6.5"
|
color-eyre = "0.6.5"
|
||||||
|
|||||||
+38
-29
@@ -12,6 +12,7 @@ use bitcoincore_rpc::{self, RpcApi};
|
|||||||
use brk_bridge::Bridge;
|
use brk_bridge::Bridge;
|
||||||
use brk_bundler::bundle;
|
use brk_bundler::bundle;
|
||||||
use brk_computer::Computer;
|
use brk_computer::Computer;
|
||||||
|
use brk_error::Result;
|
||||||
use brk_indexer::Indexer;
|
use brk_indexer::Indexer;
|
||||||
use brk_interface::Interface;
|
use brk_interface::Interface;
|
||||||
use brk_parser::Parser;
|
use brk_parser::Parser;
|
||||||
@@ -59,7 +60,7 @@ pub fn run() -> color_eyre::Result<()> {
|
|||||||
|
|
||||||
let downloads_path = config.downloads_dir();
|
let downloads_path = config.downloads_dir();
|
||||||
|
|
||||||
let future = async {
|
let future = async move {
|
||||||
let bundle_path = if website.is_some() {
|
let bundle_path = if website.is_some() {
|
||||||
let websites_dev_path = Path::new("../../websites");
|
let websites_dev_path = Path::new("../../websites");
|
||||||
let packages_dev_path = Path::new("../../packages");
|
let packages_dev_path = Path::new("../../packages");
|
||||||
@@ -67,7 +68,7 @@ pub fn run() -> color_eyre::Result<()> {
|
|||||||
let websites_path;
|
let websites_path;
|
||||||
let packages_path;
|
let packages_path;
|
||||||
|
|
||||||
if fs::exists(websites_dev_path)? {
|
if fs::exists(websites_dev_path)? && fs::exists(packages_dev_path)? {
|
||||||
websites_path = websites_dev_path.to_path_buf();
|
websites_path = websites_dev_path.to_path_buf();
|
||||||
packages_path = packages_dev_path.to_path_buf();
|
packages_path = packages_dev_path.to_path_buf();
|
||||||
} else {
|
} else {
|
||||||
@@ -98,7 +99,15 @@ pub fn run() -> color_eyre::Result<()> {
|
|||||||
|
|
||||||
interface.generate_js_files(&packages_path)?;
|
interface.generate_js_files(&packages_path)?;
|
||||||
|
|
||||||
Some(bundle(&websites_path, website.to_folder_name(), true).await?)
|
Some(
|
||||||
|
bundle(
|
||||||
|
&packages_path,
|
||||||
|
&websites_path,
|
||||||
|
website.to_folder_name(),
|
||||||
|
true,
|
||||||
|
)
|
||||||
|
.await?,
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
@@ -109,35 +118,35 @@ pub fn run() -> color_eyre::Result<()> {
|
|||||||
server.serve(true).await.unwrap();
|
server.serve(true).await.unwrap();
|
||||||
});
|
});
|
||||||
|
|
||||||
sleep(Duration::from_secs(1));
|
Ok(()) as Result<()>
|
||||||
|
|
||||||
loop {
|
|
||||||
wait_for_synced_node(rpc)?;
|
|
||||||
|
|
||||||
let block_count = rpc.get_block_count()?;
|
|
||||||
|
|
||||||
info!("{} blocks found.", block_count + 1);
|
|
||||||
|
|
||||||
let starting_indexes = indexer
|
|
||||||
.index(&parser, rpc, &exit, config.check_collisions())
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
computer
|
|
||||||
.compute(&indexer, starting_indexes, &parser, &exit)
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
info!("Waiting for new blocks...");
|
|
||||||
|
|
||||||
while block_count == rpc.get_block_count()? {
|
|
||||||
sleep(Duration::from_secs(1))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
tokio::runtime::Builder::new_multi_thread()
|
let _handle = tokio::runtime::Builder::new_multi_thread()
|
||||||
.enable_all()
|
.enable_all()
|
||||||
.build()?
|
.build()?
|
||||||
.block_on(future)
|
.spawn(future);
|
||||||
|
|
||||||
|
loop {
|
||||||
|
wait_for_synced_node(rpc)?;
|
||||||
|
|
||||||
|
let block_count = rpc.get_block_count()?;
|
||||||
|
|
||||||
|
info!("{} blocks found.", block_count + 1);
|
||||||
|
|
||||||
|
let starting_indexes = indexer
|
||||||
|
.index(&parser, rpc, &exit, config.check_collisions())
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
computer
|
||||||
|
.compute(&indexer, starting_indexes, &parser, &exit)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
info!("Waiting for new blocks...");
|
||||||
|
|
||||||
|
while block_count == rpc.get_block_count()? {
|
||||||
|
sleep(Duration::from_secs(1))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn wait_for_synced_node(rpc_client: &bitcoincore_rpc::Client) -> color_eyre::Result<()> {
|
fn wait_for_synced_node(rpc_client: &bitcoincore_rpc::Client) -> color_eyre::Result<()> {
|
||||||
@@ -147,7 +156,7 @@ fn wait_for_synced_node(rpc_client: &bitcoincore_rpc::Client) -> color_eyre::Res
|
|||||||
};
|
};
|
||||||
|
|
||||||
if !is_synced()? {
|
if !is_synced()? {
|
||||||
info!("Waiting for node to be synced...");
|
info!("Waiting for node to sync...");
|
||||||
while !is_synced()? {
|
while !is_synced()? {
|
||||||
sleep(Duration::from_secs(1))
|
sleep(Duration::from_secs(1))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ pub struct Indexes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Indexes {
|
impl Indexes {
|
||||||
pub fn typeindex(&self, outputtype: OutputType) -> TypeIndex {
|
pub fn to_typeindex(&self, outputtype: OutputType) -> TypeIndex {
|
||||||
match outputtype {
|
match outputtype {
|
||||||
OutputType::Empty => *self.emptyoutputindex,
|
OutputType::Empty => *self.emptyoutputindex,
|
||||||
OutputType::OpReturn => *self.opreturnindex,
|
OutputType::OpReturn => *self.opreturnindex,
|
||||||
|
|||||||
+216
-252
@@ -1,10 +1,9 @@
|
|||||||
#![doc = include_str!("../README.md")]
|
#![doc = include_str!("../README.md")]
|
||||||
|
|
||||||
use std::{collections::BTreeMap, path::Path, str::FromStr, thread, time::Instant};
|
use std::{collections::BTreeMap, path::Path, str::FromStr, time::Instant};
|
||||||
|
|
||||||
use bitcoin::{Transaction, TxIn, TxOut};
|
use bitcoin::{Transaction, TxIn, TxOut};
|
||||||
use brk_error::{Error, Result};
|
use brk_error::{Error, Result};
|
||||||
|
|
||||||
use brk_parser::Parser;
|
use brk_parser::Parser;
|
||||||
use brk_store::AnyStore;
|
use brk_store::AnyStore;
|
||||||
use brk_structs::{
|
use brk_structs::{
|
||||||
@@ -24,9 +23,8 @@ pub use stores::*;
|
|||||||
pub use vecs::*;
|
pub use vecs::*;
|
||||||
|
|
||||||
// One version for all data sources
|
// One version for all data sources
|
||||||
// Increment on change OR addition
|
// Increment on **change _OR_ addition**
|
||||||
const VERSION: Version = Version::new(21);
|
const VERSION: Version = Version::new(21);
|
||||||
|
|
||||||
const SNAPSHOT_BLOCK_RANGE: usize = 1_000;
|
const SNAPSHOT_BLOCK_RANGE: usize = 1_000;
|
||||||
const COLLISIONS_CHECKED_UP_TO: Height = Height::new(909_150);
|
const COLLISIONS_CHECKED_UP_TO: Height = Height::new(909_150);
|
||||||
|
|
||||||
@@ -92,6 +90,7 @@ impl Indexer {
|
|||||||
let export =
|
let export =
|
||||||
|stores: &mut Stores, vecs: &mut Vecs, height: Height, exit: &Exit| -> Result<()> {
|
|stores: &mut Stores, vecs: &mut Vecs, height: Height, exit: &Exit| -> Result<()> {
|
||||||
info!("Exporting...");
|
info!("Exporting...");
|
||||||
|
// std::process::exit(0);
|
||||||
let _lock = exit.lock();
|
let _lock = exit.lock();
|
||||||
let i = Instant::now();
|
let i = Instant::now();
|
||||||
stores.commit(height).unwrap();
|
stores.commit(height).unwrap();
|
||||||
@@ -184,7 +183,7 @@ impl Indexer {
|
|||||||
let p2aaddressindex_to_p2abytes_reader = p2aaddressindex_to_p2abytes_reader_opt.as_ref().unwrap();
|
let p2aaddressindex_to_p2abytes_reader = p2aaddressindex_to_p2abytes_reader_opt.as_ref().unwrap();
|
||||||
|
|
||||||
// Used to check rapidhash collisions
|
// Used to check rapidhash collisions
|
||||||
let check_collisions = check_collisions && height > COLLISIONS_CHECKED_UP_TO ;
|
let check_collisions = check_collisions && height > COLLISIONS_CHECKED_UP_TO;
|
||||||
|
|
||||||
let blockhash_prefix = BlockHashPrefix::from(blockhash);
|
let blockhash_prefix = BlockHashPrefix::from(blockhash);
|
||||||
|
|
||||||
@@ -215,275 +214,241 @@ impl Indexer {
|
|||||||
vecs.height_to_total_size.push_if_needed(height, block.total_size().into())?;
|
vecs.height_to_total_size.push_if_needed(height, block.total_size().into())?;
|
||||||
vecs.height_to_weight.push_if_needed(height, block.weight().into())?;
|
vecs.height_to_weight.push_if_needed(height, block.weight().into())?;
|
||||||
|
|
||||||
let (
|
let txid_prefix_to_txid_and_block_txindex_and_prev_txindex = block
|
||||||
txid_prefix_to_txid_and_block_txindex_and_prev_txindex_join_handle,
|
.txdata
|
||||||
input_source_vec_handle,
|
.par_iter()
|
||||||
outputindex_to_txout_outputtype_addressbytes_res_addressindex_opt_handle,
|
.enumerate()
|
||||||
) = thread::scope(|scope| {
|
.map(|(index, tx)| {
|
||||||
let txid_prefix_to_txid_and_block_txindex_and_prev_txindex_handle =
|
let txid = Txid::from(tx.compute_txid());
|
||||||
scope.spawn(|| -> Result<_> {
|
|
||||||
block
|
|
||||||
.txdata
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
.map(|(index, tx)| {
|
|
||||||
let txid = Txid::from(tx.compute_txid());
|
|
||||||
|
|
||||||
let txid_prefix = TxidPrefix::from(&txid);
|
let txid_prefix = TxidPrefix::from(&txid);
|
||||||
|
|
||||||
let prev_txindex_opt =
|
let prev_txindex_opt =
|
||||||
if check_collisions && stores.txidprefix_to_txindex.needs(height) {
|
if check_collisions && stores.txidprefix_to_txindex.needs(height) {
|
||||||
// Should only find collisions for two txids (duplicates), see below
|
// Should only find collisions for two txids (duplicates), see below
|
||||||
stores.txidprefix_to_txindex.get(&txid_prefix)?.map(|v| *v)
|
stores.txidprefix_to_txindex.get(&txid_prefix)?.map(|v| *v)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok((txid_prefix, (tx, txid, TxIndex::from(index), prev_txindex_opt)))
|
Ok((txid_prefix, (tx, txid, TxIndex::from(index), prev_txindex_opt)))
|
||||||
})
|
})
|
||||||
.collect::<Result<BTreeMap<_, _>>>()
|
.collect::<Result<BTreeMap<_, _>>>()?;
|
||||||
});
|
|
||||||
|
|
||||||
let input_source_vec_handle = scope.spawn(|| {
|
let inputs = block
|
||||||
let inputs = block
|
.txdata
|
||||||
.txdata
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.flat_map(|(index, tx)| {
|
||||||
|
tx.input
|
||||||
.iter()
|
.iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.flat_map(|(index, tx)| {
|
.map(move |(vin, txin)| (TxIndex::from(index), Vin::from(vin), txin, tx))
|
||||||
tx.input
|
})
|
||||||
.iter()
|
.collect::<Vec<_>>();
|
||||||
.enumerate()
|
|
||||||
.map(move |(vin, txin)| (TxIndex::from(index), Vin::from(vin), txin, tx))
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
|
|
||||||
inputs
|
let input_source_vec = inputs
|
||||||
.into_par_iter()
|
.into_par_iter()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(block_inputindex, (block_txindex, vin, txin, tx))| -> Result<(InputIndex, InputSource)> {
|
||||||
|
let txindex = idxs.txindex + block_txindex;
|
||||||
|
let inputindex = idxs.inputindex + InputIndex::from(block_inputindex);
|
||||||
|
|
||||||
|
let outpoint = txin.previous_output;
|
||||||
|
let txid = Txid::from(outpoint.txid);
|
||||||
|
|
||||||
|
if tx.is_coinbase() {
|
||||||
|
return Ok((inputindex, InputSource::SameBlock((tx, txindex, txin, vin))));
|
||||||
|
}
|
||||||
|
|
||||||
|
let prev_txindex = if let Some(txindex) = stores
|
||||||
|
.txidprefix_to_txindex
|
||||||
|
.get(&TxidPrefix::from(&txid))?
|
||||||
|
.map(|v| *v)
|
||||||
|
.and_then(|txindex| {
|
||||||
|
// Checking if not finding txindex from the future
|
||||||
|
(txindex < idxs.txindex).then_some(txindex)
|
||||||
|
}) {
|
||||||
|
txindex
|
||||||
|
} else {
|
||||||
|
// dbg!(indexes.txindex + block_txindex, txindex, txin, vin);
|
||||||
|
return Ok((inputindex, InputSource::SameBlock((tx, txindex, txin, vin))));
|
||||||
|
};
|
||||||
|
|
||||||
|
let vout = Vout::from(outpoint.vout);
|
||||||
|
|
||||||
|
let outputindex = vecs.txindex_to_first_outputindex.get_or_read(prev_txindex, txindex_to_first_outputindex_reader)?
|
||||||
|
.ok_or(Error::Str("Expect outputindex to not be none"))
|
||||||
|
.inspect_err(|_| {
|
||||||
|
dbg!(outpoint.txid, prev_txindex, vout);
|
||||||
|
})?.into_owned()
|
||||||
|
+ vout;
|
||||||
|
|
||||||
|
Ok((inputindex, InputSource::PreviousBlock((
|
||||||
|
vin,
|
||||||
|
txindex,
|
||||||
|
outputindex,
|
||||||
|
))))
|
||||||
|
})
|
||||||
|
.try_fold(BTreeMap::new, |mut map, tuple| -> Result<_> {
|
||||||
|
let (key, value) = tuple?;
|
||||||
|
map.insert(key, value);
|
||||||
|
Ok(map)
|
||||||
|
})
|
||||||
|
.try_reduce(BTreeMap::new, |mut map, mut map2| {
|
||||||
|
if map.len() > map2.len() {
|
||||||
|
map.append(&mut map2);
|
||||||
|
Ok(map)
|
||||||
|
} else {
|
||||||
|
map2.append(&mut map);
|
||||||
|
Ok(map2)
|
||||||
|
}
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let outputs = block
|
||||||
|
.txdata
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.flat_map(|(index, tx)| {
|
||||||
|
tx.output
|
||||||
|
.iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(block_inputindex, (block_txindex, vin, txin, tx))| -> Result<(InputIndex, InputSource)> {
|
.map(move |(vout, txout)| (TxIndex::from(index), Vout::from(vout), txout, tx))
|
||||||
let txindex = idxs.txindex + block_txindex;
|
}).collect::<Vec<_>>();
|
||||||
let inputindex = idxs.inputindex + InputIndex::from(block_inputindex);
|
|
||||||
|
|
||||||
let outpoint = txin.previous_output;
|
let outputindex_to_txout_outputtype_addressbytes_res_addressindex_opt = outputs.into_par_iter()
|
||||||
let txid = Txid::from(outpoint.txid);
|
.enumerate()
|
||||||
|
.map(
|
||||||
|
#[allow(clippy::type_complexity)]
|
||||||
|
|(block_outputindex, (block_txindex, vout, txout, tx))| -> Result<(
|
||||||
|
OutputIndex,
|
||||||
|
(
|
||||||
|
&TxOut,
|
||||||
|
TxIndex,
|
||||||
|
Vout,
|
||||||
|
OutputType,
|
||||||
|
Result<AddressBytes>,
|
||||||
|
Option<TypeIndex>,
|
||||||
|
&Transaction,
|
||||||
|
),
|
||||||
|
)> {
|
||||||
|
let txindex = idxs.txindex + block_txindex;
|
||||||
|
let outputindex = idxs.outputindex + OutputIndex::from(block_outputindex);
|
||||||
|
|
||||||
if tx.is_coinbase() {
|
let script = &txout.script_pubkey;
|
||||||
return Ok((inputindex, InputSource::SameBlock((tx, txindex, txin, vin))));
|
|
||||||
}
|
|
||||||
|
|
||||||
let prev_txindex = if let Some(txindex) = stores
|
let outputtype = OutputType::from(script);
|
||||||
.txidprefix_to_txindex
|
|
||||||
.get(&TxidPrefix::from(&txid))?
|
|
||||||
.map(|v| *v)
|
|
||||||
.and_then(|txindex| {
|
|
||||||
// Checking if not finding txindex from the future
|
|
||||||
(txindex < idxs.txindex).then_some(txindex)
|
|
||||||
}) {
|
|
||||||
txindex
|
|
||||||
} else {
|
|
||||||
// dbg!(indexes.txindex + block_txindex, txindex, txin, vin);
|
|
||||||
return Ok((inputindex, InputSource::SameBlock((tx, txindex, txin, vin))));
|
|
||||||
};
|
|
||||||
|
|
||||||
let vout = Vout::from(outpoint.vout);
|
let address_bytes_res =
|
||||||
|
AddressBytes::try_from((script, outputtype)).inspect_err(|_| {
|
||||||
let outputindex = vecs.txindex_to_first_outputindex.get_or_read(prev_txindex, txindex_to_first_outputindex_reader)?
|
// dbg!(&txout, height, txi, &tx.compute_txid());
|
||||||
.ok_or(Error::Str("Expect outputindex to not be none"))
|
|
||||||
.inspect_err(|_| {
|
|
||||||
dbg!(outpoint.txid, prev_txindex, vout);
|
|
||||||
})?.into_owned()
|
|
||||||
+ vout;
|
|
||||||
|
|
||||||
Ok((inputindex, InputSource::PreviousBlock((
|
|
||||||
vin,
|
|
||||||
txindex,
|
|
||||||
outputindex,
|
|
||||||
))))
|
|
||||||
})
|
|
||||||
.try_fold(BTreeMap::new, |mut map, tuple| -> Result<_> {
|
|
||||||
let (key, value) = tuple?;
|
|
||||||
map.insert(key, value);
|
|
||||||
Ok(map)
|
|
||||||
})
|
|
||||||
.try_reduce(BTreeMap::new, |mut map, mut map2| {
|
|
||||||
if map.len() > map2.len() {
|
|
||||||
map.append(&mut map2);
|
|
||||||
Ok(map)
|
|
||||||
} else {
|
|
||||||
map2.append(&mut map);
|
|
||||||
Ok(map2)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
let outputs = block
|
|
||||||
.txdata
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
.flat_map(|(index, tx)| {
|
|
||||||
tx.output
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
.map(move |(vout, txout)| (TxIndex::from(index), Vout::from(vout), txout, tx))
|
|
||||||
}).collect::<Vec<_>>();
|
|
||||||
|
|
||||||
let outputindex_to_txout_outputtype_addressbytes_res_addressindex = outputs.into_par_iter()
|
|
||||||
.enumerate()
|
|
||||||
.map(
|
|
||||||
#[allow(clippy::type_complexity)]
|
|
||||||
|(block_outputindex, (block_txindex, vout, txout, tx))| -> Result<(
|
|
||||||
OutputIndex,
|
|
||||||
(
|
|
||||||
&TxOut,
|
|
||||||
TxIndex,
|
|
||||||
Vout,
|
|
||||||
OutputType,
|
|
||||||
Result<AddressBytes>,
|
|
||||||
Option<TypeIndex>,
|
|
||||||
&Transaction,
|
|
||||||
),
|
|
||||||
)> {
|
|
||||||
let txindex = idxs.txindex + block_txindex;
|
|
||||||
let outputindex = idxs.outputindex + OutputIndex::from(block_outputindex);
|
|
||||||
|
|
||||||
let script = &txout.script_pubkey;
|
|
||||||
|
|
||||||
let outputtype = OutputType::from(script);
|
|
||||||
|
|
||||||
let address_bytes_res =
|
|
||||||
AddressBytes::try_from((script, outputtype)).inspect_err(|_| {
|
|
||||||
// dbg!(&txout, height, txi, &tx.compute_txid());
|
|
||||||
});
|
|
||||||
|
|
||||||
let typeindex_opt = address_bytes_res.as_ref().ok().and_then(|addressbytes| {
|
|
||||||
stores
|
|
||||||
.addressbyteshash_to_typeindex
|
|
||||||
.get(&AddressBytesHash::from((addressbytes, outputtype)))
|
|
||||||
.unwrap()
|
|
||||||
.map(|v| *v)
|
|
||||||
// Checking if not in the future
|
|
||||||
.and_then(|typeindex_local| {
|
|
||||||
(typeindex_local < idxs.typeindex(outputtype)).then_some(typeindex_local)
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if let Some(Some(typeindex)) = check_collisions.then_some(typeindex_opt) {
|
let typeindex_opt = address_bytes_res.as_ref().ok().and_then(|addressbytes| {
|
||||||
let addressbytes = address_bytes_res.as_ref().unwrap();
|
stores
|
||||||
|
.addressbyteshash_to_typeindex
|
||||||
|
.get(&AddressBytesHash::from((addressbytes, outputtype)))
|
||||||
|
.unwrap()
|
||||||
|
.map(|v| *v)
|
||||||
|
// Checking if not in the future
|
||||||
|
.and_then(|typeindex_local| {
|
||||||
|
(typeindex_local < idxs.to_typeindex(outputtype)).then_some(typeindex_local)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
let prev_addressbytes_opt = match outputtype {
|
if let Some(Some(typeindex)) = check_collisions.then_some(typeindex_opt) {
|
||||||
OutputType::P2PK65 => vecs
|
let addressbytes = address_bytes_res.as_ref().unwrap();
|
||||||
.p2pk65addressindex_to_p2pk65bytes
|
|
||||||
.get_or_read(typeindex.into(), p2pk65addressindex_to_p2pk65bytes_reader)?
|
|
||||||
.map(|v| AddressBytes::from(v.into_owned())),
|
|
||||||
OutputType::P2PK33 => vecs
|
|
||||||
.p2pk33addressindex_to_p2pk33bytes
|
|
||||||
.get_or_read(typeindex.into(), p2pk33addressindex_to_p2pk33bytes_reader)?
|
|
||||||
.map(|v| AddressBytes::from(v.into_owned())),
|
|
||||||
OutputType::P2PKH => vecs
|
|
||||||
.p2pkhaddressindex_to_p2pkhbytes
|
|
||||||
.get_or_read(typeindex.into(), p2pkhaddressindex_to_p2pkhbytes_reader)?
|
|
||||||
.map(|v| AddressBytes::from(v.into_owned())),
|
|
||||||
OutputType::P2SH => vecs
|
|
||||||
.p2shaddressindex_to_p2shbytes
|
|
||||||
.get_or_read(typeindex.into(), p2shaddressindex_to_p2shbytes_reader)?
|
|
||||||
.map(|v| AddressBytes::from(v.into_owned())),
|
|
||||||
OutputType::P2WPKH => vecs
|
|
||||||
.p2wpkhaddressindex_to_p2wpkhbytes
|
|
||||||
.get_or_read(typeindex.into(), p2wpkhaddressindex_to_p2wpkhbytes_reader)?
|
|
||||||
.map(|v| AddressBytes::from(v.into_owned())),
|
|
||||||
OutputType::P2WSH => vecs
|
|
||||||
.p2wshaddressindex_to_p2wshbytes
|
|
||||||
.get_or_read(typeindex.into(), p2wshaddressindex_to_p2wshbytes_reader)?
|
|
||||||
.map(|v| AddressBytes::from(v.into_owned())),
|
|
||||||
OutputType::P2TR => vecs
|
|
||||||
.p2traddressindex_to_p2trbytes
|
|
||||||
.get_or_read(typeindex.into(), p2traddressindex_to_p2trbytes_reader)?
|
|
||||||
.map(|v| AddressBytes::from(v.into_owned())),
|
|
||||||
OutputType::P2A => vecs
|
|
||||||
.p2aaddressindex_to_p2abytes
|
|
||||||
.get_or_read(typeindex.into(), p2aaddressindex_to_p2abytes_reader)?
|
|
||||||
.map(|v| AddressBytes::from(v.into_owned())),
|
|
||||||
_ => {
|
|
||||||
unreachable!()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
let prev_addressbytes =
|
|
||||||
prev_addressbytes_opt.as_ref().ok_or(Error::Str("Expect to have addressbytes"))?;
|
|
||||||
|
|
||||||
if stores.addressbyteshash_to_typeindex.needs(height)
|
let prev_addressbytes_opt = match outputtype {
|
||||||
&& prev_addressbytes != addressbytes
|
OutputType::P2PK65 => vecs
|
||||||
{
|
.p2pk65addressindex_to_p2pk65bytes
|
||||||
let txid = tx.compute_txid();
|
.get_or_read(typeindex.into(), p2pk65addressindex_to_p2pk65bytes_reader)?
|
||||||
dbg!(
|
.map(|v| AddressBytes::from(v.into_owned())),
|
||||||
height,
|
OutputType::P2PK33 => vecs
|
||||||
txid,
|
.p2pk33addressindex_to_p2pk33bytes
|
||||||
vout,
|
.get_or_read(typeindex.into(), p2pk33addressindex_to_p2pk33bytes_reader)?
|
||||||
block_txindex,
|
.map(|v| AddressBytes::from(v.into_owned())),
|
||||||
outputtype,
|
OutputType::P2PKH => vecs
|
||||||
prev_addressbytes,
|
.p2pkhaddressindex_to_p2pkhbytes
|
||||||
addressbytes,
|
.get_or_read(typeindex.into(), p2pkhaddressindex_to_p2pkhbytes_reader)?
|
||||||
&idxs,
|
.map(|v| AddressBytes::from(v.into_owned())),
|
||||||
typeindex,
|
OutputType::P2SH => vecs
|
||||||
typeindex,
|
.p2shaddressindex_to_p2shbytes
|
||||||
txout,
|
.get_or_read(typeindex.into(), p2shaddressindex_to_p2shbytes_reader)?
|
||||||
AddressBytesHash::from((addressbytes, outputtype)),
|
.map(|v| AddressBytes::from(v.into_owned())),
|
||||||
);
|
OutputType::P2WPKH => vecs
|
||||||
panic!()
|
.p2wpkhaddressindex_to_p2wpkhbytes
|
||||||
|
.get_or_read(typeindex.into(), p2wpkhaddressindex_to_p2wpkhbytes_reader)?
|
||||||
|
.map(|v| AddressBytes::from(v.into_owned())),
|
||||||
|
OutputType::P2WSH => vecs
|
||||||
|
.p2wshaddressindex_to_p2wshbytes
|
||||||
|
.get_or_read(typeindex.into(), p2wshaddressindex_to_p2wshbytes_reader)?
|
||||||
|
.map(|v| AddressBytes::from(v.into_owned())),
|
||||||
|
OutputType::P2TR => vecs
|
||||||
|
.p2traddressindex_to_p2trbytes
|
||||||
|
.get_or_read(typeindex.into(), p2traddressindex_to_p2trbytes_reader)?
|
||||||
|
.map(|v| AddressBytes::from(v.into_owned())),
|
||||||
|
OutputType::P2A => vecs
|
||||||
|
.p2aaddressindex_to_p2abytes
|
||||||
|
.get_or_read(typeindex.into(), p2aaddressindex_to_p2abytes_reader)?
|
||||||
|
.map(|v| AddressBytes::from(v.into_owned())),
|
||||||
|
_ => {
|
||||||
|
unreachable!()
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
let prev_addressbytes =
|
||||||
|
prev_addressbytes_opt.as_ref().ok_or(Error::Str("Expect to have addressbytes"))?;
|
||||||
|
|
||||||
Ok((
|
if stores.addressbyteshash_to_typeindex.needs(height)
|
||||||
outputindex,
|
&& prev_addressbytes != addressbytes
|
||||||
(
|
{
|
||||||
txout,
|
let txid = tx.compute_txid();
|
||||||
txindex,
|
dbg!(
|
||||||
|
height,
|
||||||
|
txid,
|
||||||
vout,
|
vout,
|
||||||
|
block_txindex,
|
||||||
outputtype,
|
outputtype,
|
||||||
address_bytes_res,
|
prev_addressbytes,
|
||||||
typeindex_opt,
|
addressbytes,
|
||||||
tx,
|
&idxs,
|
||||||
),
|
typeindex,
|
||||||
))
|
typeindex,
|
||||||
},
|
txout,
|
||||||
)
|
AddressBytesHash::from((addressbytes, outputtype)),
|
||||||
.try_fold(BTreeMap::new, |mut map, tuple| -> Result<_> {
|
);
|
||||||
let (key, value) = tuple?;
|
panic!()
|
||||||
map.insert(key, value);
|
}
|
||||||
Ok(map)
|
|
||||||
})
|
|
||||||
.try_reduce(BTreeMap::new, |mut map, mut map2| {
|
|
||||||
if map.len() > map2.len() {
|
|
||||||
map.append(&mut map2);
|
|
||||||
Ok(map)
|
|
||||||
} else {
|
|
||||||
map2.append(&mut map);
|
|
||||||
Ok(map2)
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
(
|
Ok((
|
||||||
txid_prefix_to_txid_and_block_txindex_and_prev_txindex_handle.join(),
|
outputindex,
|
||||||
input_source_vec_handle.join(),
|
(
|
||||||
outputindex_to_txout_outputtype_addressbytes_res_addressindex,
|
txout,
|
||||||
|
txindex,
|
||||||
|
vout,
|
||||||
|
outputtype,
|
||||||
|
address_bytes_res,
|
||||||
|
typeindex_opt,
|
||||||
|
tx,
|
||||||
|
),
|
||||||
|
))
|
||||||
|
},
|
||||||
)
|
)
|
||||||
});
|
.try_fold(BTreeMap::new, |mut map, tuple| -> Result<_> {
|
||||||
|
let (key, value) = tuple?;
|
||||||
let txid_prefix_to_txid_and_block_txindex_and_prev_txindex =
|
map.insert(key, value);
|
||||||
txid_prefix_to_txid_and_block_txindex_and_prev_txindex_join_handle
|
Ok(map)
|
||||||
.map_err(|_|
|
})
|
||||||
Error::Str("Expect txid_prefix_to_txid_and_block_txindex_and_prev_txindex_join_handle to join")
|
.try_reduce(BTreeMap::new, |mut map, mut map2| {
|
||||||
)??;
|
if map.len() > map2.len() {
|
||||||
|
map.append(&mut map2);
|
||||||
let input_source_vec = input_source_vec_handle
|
Ok(map)
|
||||||
.map_err(|_|
|
} else {
|
||||||
Error::Str("Export input_source_vec_handle to join")
|
map2.append(&mut map);
|
||||||
)??;
|
Ok(map2)
|
||||||
|
}
|
||||||
let outputindex_to_txout_outputtype_addressbytes_res_addressindex_opt =
|
})?;
|
||||||
outputindex_to_txout_outputtype_addressbytes_res_addressindex_opt_handle
|
|
||||||
.map_err(|_|
|
|
||||||
Error::Str("Expect outputindex_to_txout_outputtype_addressbytes_res_addressindex_opt_handle to join")
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let outputs_len = outputindex_to_txout_outputtype_addressbytes_res_addressindex_opt.len();
|
let outputs_len = outputindex_to_txout_outputtype_addressbytes_res_addressindex_opt.len();
|
||||||
let inputs_len = input_source_vec.len();
|
let inputs_len = input_source_vec.len();
|
||||||
@@ -747,7 +712,6 @@ impl Indexer {
|
|||||||
idxs.inputindex += InputIndex::from(inputs_len);
|
idxs.inputindex += InputIndex::from(inputs_len);
|
||||||
idxs.outputindex += OutputIndex::from(outputs_len);
|
idxs.outputindex += OutputIndex::from(outputs_len);
|
||||||
|
|
||||||
|
|
||||||
if should_export(height, false) {
|
if should_export(height, false) {
|
||||||
txindex_to_first_outputindex_reader_opt.take();
|
txindex_to_first_outputindex_reader_opt.take();
|
||||||
p2pk65addressindex_to_p2pk65bytes_reader_opt.take();
|
p2pk65addressindex_to_p2pk65bytes_reader_opt.take();
|
||||||
|
|||||||
@@ -18,3 +18,6 @@ brk_rmcp = { version = "0.7.1", features = [
|
|||||||
] }
|
] }
|
||||||
log = { workspace = true }
|
log = { workspace = true }
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
|
|
||||||
|
[package.metadata.cargo-machete]
|
||||||
|
ignored = ["serde_json"]
|
||||||
|
|||||||
@@ -20,17 +20,18 @@ fn main() -> Result<()> {
|
|||||||
|
|
||||||
let parser = Parser::new(bitcoin_dir.join("blocks"), rpc);
|
let parser = Parser::new(bitcoin_dir.join("blocks"), rpc);
|
||||||
|
|
||||||
let start = Some(915_138_u32.into());
|
let start = None;
|
||||||
|
// let start = Some(916037_u32.into());
|
||||||
let end = None;
|
let end = None;
|
||||||
let mut blk_index = 0;
|
// let mut blk_index = 0;
|
||||||
let mut diff = BTreeMap::new();
|
// let mut diff = BTreeMap::new();
|
||||||
parser.parse(start, end).iter().for_each(|block| {
|
parser.parse(start, end).iter().for_each(|block| {
|
||||||
println!("{}: {}", block.height(), block.hash());
|
println!("{}: {}", block.height(), block.hash());
|
||||||
let new_blk_index = block.metadata().blk_index();
|
// let new_blk_index = block.metadata().blk_index();
|
||||||
if new_blk_index < blk_index {
|
// if new_blk_index < blk_index {
|
||||||
diff.insert(blk_index - new_blk_index, block.height());
|
// diff.insert(blk_index - new_blk_index, block.height());
|
||||||
}
|
// }
|
||||||
blk_index = new_blk_index;
|
// blk_index = new_blk_index;
|
||||||
});
|
});
|
||||||
|
|
||||||
// let v = diff.iter().rev().take(10).collect::<Vec<_>>();
|
// let v = diff.iter().rev().take(10).collect::<Vec<_>>();
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ use bitcoincore_rpc::RpcApi;
|
|||||||
use blk_index_to_blk_path::*;
|
use blk_index_to_blk_path::*;
|
||||||
use brk_error::Result;
|
use brk_error::Result;
|
||||||
use brk_structs::{BlkMetadata, BlkPosition, Block, Height, ParsedBlock};
|
use brk_structs::{BlkMetadata, BlkPosition, Block, Height, ParsedBlock};
|
||||||
use crossbeam::channel::{bounded, Receiver};
|
use crossbeam::channel::{Receiver, bounded};
|
||||||
use parking_lot::{RwLock, RwLockReadGuard};
|
use parking_lot::{RwLock, RwLockReadGuard};
|
||||||
use rayon::prelude::*;
|
use rayon::prelude::*;
|
||||||
|
|
||||||
@@ -157,30 +157,36 @@ impl Parser {
|
|||||||
|
|
||||||
let mut bulk = vec![];
|
let mut bulk = vec![];
|
||||||
|
|
||||||
let drain_and_send = |bulk: &mut Vec<(BlkMetadata, AnyBlock, XORIndex)>| {
|
// Private pool to prevent collision with the global pool
|
||||||
// Using a vec and sending after to not end up with stuck threads in par iter
|
// Without it there can be hanging
|
||||||
mem::take(bulk)
|
let parser_pool = rayon::ThreadPoolBuilder::new()
|
||||||
.into_par_iter()
|
.num_threads(thread::available_parallelism().unwrap().get() / 2)
|
||||||
.try_for_each(|(metdata, any_block, xor_i)| {
|
.build()
|
||||||
if let Ok(AnyBlock::Decoded(block)) =
|
.expect("Failed to create parser thread pool");
|
||||||
any_block.decode(metdata, rpc, xor_i, xor_bytes, start, end)
|
|
||||||
&& send_block.send(block).is_err()
|
|
||||||
{
|
|
||||||
return ControlFlow::Break(());
|
|
||||||
}
|
|
||||||
|
|
||||||
ControlFlow::Continue(())
|
let drain_and_send = |bulk: &mut Vec<(BlkMetadata, AnyBlock, XORIndex)>| {
|
||||||
})
|
parser_pool.install(|| {
|
||||||
|
mem::take(bulk)
|
||||||
|
.into_par_iter()
|
||||||
|
.try_for_each(|(metdata, any_block, xor_i)| {
|
||||||
|
if let Ok(AnyBlock::Decoded(block)) =
|
||||||
|
any_block.decode(metdata, rpc, xor_i, xor_bytes, start, end)
|
||||||
|
&& send_block.send(block).is_err()
|
||||||
|
{
|
||||||
|
return ControlFlow::Break(());
|
||||||
|
}
|
||||||
|
ControlFlow::Continue(())
|
||||||
|
})
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
recv_bytes.iter().try_for_each(|tuple| {
|
recv_bytes.iter().try_for_each(|tuple| {
|
||||||
bulk.push(tuple);
|
bulk.push(tuple);
|
||||||
|
|
||||||
if bulk.len() < BOUND_CAP / 2 {
|
if bulk.len() < BOUND_CAP {
|
||||||
return ControlFlow::Continue(());
|
return ControlFlow::Continue(());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sending in bulk to not lock threads in standby
|
|
||||||
drain_and_send(&mut bulk)
|
drain_and_send(&mut bulk)
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
|||||||
@@ -151,3 +151,4 @@
|
|||||||
- __GLOBAL__
|
- __GLOBAL__
|
||||||
- check `TODO`s in codebase
|
- check `TODO`s in codebase
|
||||||
- rename `output` to `txout` or `vout`, `input` to `txin` or `vin`
|
- rename `output` to `txout` or `vout`, `input` to `txin` or `vin`
|
||||||
|
- https://マリウス.com/thoughts-on-cloudflare/
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { serdeIndex } from "./serde";
|
|
||||||
import { runWhenIdle } from "./idle";
|
import { runWhenIdle } from "./idle";
|
||||||
import { createPools } from "./pools";
|
import { POOL_ID_TO_POOL_NAME } from "./generated/pools";
|
||||||
import { createMetricToIndexes } from "./metrics";
|
import { createMetricToIndexes } from "./metrics";
|
||||||
|
|
||||||
const localhost = window.location.hostname === "localhost";
|
const localhost = window.location.hostname === "localhost";
|
||||||
@@ -11,7 +10,7 @@ const localhost = window.location.hostname === "localhost";
|
|||||||
export default function (signals) {
|
export default function (signals) {
|
||||||
const owner = signals.getOwner();
|
const owner = signals.getOwner();
|
||||||
|
|
||||||
const pools = createPools();
|
const pools = POOL_ID_TO_POOL_NAME;
|
||||||
const metricToIndexes = createMetricToIndexes();
|
const metricToIndexes = createMetricToIndexes();
|
||||||
|
|
||||||
const defaultFrom = -10_000;
|
const defaultFrom = -10_000;
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
import { INDEX_TO_WORD } from "./generated/metrics";
|
||||||
|
|
||||||
|
/** @type {Record<string, number>} */
|
||||||
|
const WORD_TO_INDEX = {};
|
||||||
|
|
||||||
|
INDEX_TO_WORD.forEach((word, index) => {
|
||||||
|
WORD_TO_INDEX[word] = index;
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} metric
|
||||||
|
*/
|
||||||
|
function compressMetric(metric) {
|
||||||
|
return metric
|
||||||
|
.split("_")
|
||||||
|
.map((word) => {
|
||||||
|
const index = WORD_TO_INDEX[word];
|
||||||
|
return index !== undefined ? indexToLetters(index) : word;
|
||||||
|
})
|
||||||
|
.join("_");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} compressedMetric
|
||||||
|
*/
|
||||||
|
function decompressMetric(compressedMetric) {
|
||||||
|
return compressedMetric
|
||||||
|
.split("_")
|
||||||
|
.map((code) => {
|
||||||
|
const index = lettersToIndex(code);
|
||||||
|
return INDEX_TO_WORD[index] || code; // Fallback to original if not found
|
||||||
|
})
|
||||||
|
.join("_");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} letters
|
||||||
|
*/
|
||||||
|
function lettersToIndex(letters) {
|
||||||
|
let result = 0;
|
||||||
|
for (let i = 0; i < letters.length; i++) {
|
||||||
|
const value = charToIndex(letters.charCodeAt(i));
|
||||||
|
result = result * 52 + value + 1;
|
||||||
|
}
|
||||||
|
return result - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} byte
|
||||||
|
*/
|
||||||
|
function charToIndex(byte) {
|
||||||
|
if (byte >= 65 && byte <= 90) {
|
||||||
|
// 'A' to 'Z'
|
||||||
|
return byte - 65;
|
||||||
|
} else if (byte >= 97 && byte <= 122) {
|
||||||
|
// 'a' to 'z'
|
||||||
|
return byte - 97 + 26;
|
||||||
|
} else {
|
||||||
|
return 255; // Invalid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} index
|
||||||
|
*/
|
||||||
|
function indexToLetters(index) {
|
||||||
|
if (index < 52) {
|
||||||
|
return indexToChar(index);
|
||||||
|
}
|
||||||
|
let result = [];
|
||||||
|
while (true) {
|
||||||
|
result.push(indexToChar(index % 52));
|
||||||
|
index = Math.floor(index / 52);
|
||||||
|
if (index === 0) break;
|
||||||
|
index -= 1;
|
||||||
|
}
|
||||||
|
return result.reverse().join("");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} index
|
||||||
|
*/
|
||||||
|
function indexToChar(index) {
|
||||||
|
if (index <= 25) {
|
||||||
|
return String.fromCharCode(65 + index); // A-Z
|
||||||
|
} else {
|
||||||
|
return String.fromCharCode(97 + index - 26); // a-z
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
/**
|
/**
|
||||||
* @import { Signal, Signals, Accessor } from "../solidjs-signals/index";
|
* @import { Signal, Signals, Accessor } from "../solidjs-signals/index";
|
||||||
*
|
*
|
||||||
* @import { Index } from "./metrics"
|
* @import { Index } from "./generated/metrics"
|
||||||
*
|
*
|
||||||
* @typedef {[number, number, number, number]} OHLCTuple
|
* @typedef {[number, number, number, number]} OHLCTuple
|
||||||
|
*
|
||||||
|
* @typedef {typeof import("./generated/metrics")["COMPRESSED_METRIC_TO_INDEXES"]} MetricToIndexes
|
||||||
|
* @typedef {string} Metric
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user