@aztec/foundation 0.1.0-alpha10
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/.eslintrc.cjs +103 -0
- package/.prettierrc.json +6 -0
- package/.tsbuildinfo +1 -0
- package/README.md +1 -0
- package/dest/abi/index.d.ts +137 -0
- package/dest/abi/index.d.ts.map +1 -0
- package/dest/abi/index.js +18 -0
- package/dest/async-map/async_map.test.d.ts +2 -0
- package/dest/async-map/async_map.test.d.ts.map +1 -0
- package/dest/async-map/async_map.test.js +9 -0
- package/dest/async-map/index.d.ts +13 -0
- package/dest/async-map/index.d.ts.map +1 -0
- package/dest/async-map/index.js +19 -0
- package/dest/aztec-address/index.d.ts +96 -0
- package/dest/aztec-address/index.d.ts.map +1 -0
- package/dest/aztec-address/index.js +124 -0
- package/dest/bigint-buffer/bigint-buffer.test.d.ts +2 -0
- package/dest/bigint-buffer/bigint-buffer.test.d.ts.map +1 -0
- package/dest/bigint-buffer/bigint-buffer.test.js +18 -0
- package/dest/bigint-buffer/index.d.ts +35 -0
- package/dest/bigint-buffer/index.d.ts.map +1 -0
- package/dest/bigint-buffer/index.js +68 -0
- package/dest/collection/array.d.ts +30 -0
- package/dest/collection/array.d.ts.map +1 -0
- package/dest/collection/array.js +47 -0
- package/dest/collection/index.d.ts +2 -0
- package/dest/collection/index.d.ts.map +1 -0
- package/dest/collection/index.js +2 -0
- package/dest/crypto/index.d.ts +4 -0
- package/dest/crypto/index.d.ts.map +1 -0
- package/dest/crypto/index.js +4 -0
- package/dest/crypto/keccak/index.d.ts +20 -0
- package/dest/crypto/keccak/index.d.ts.map +1 -0
- package/dest/crypto/keccak/index.js +31 -0
- package/dest/crypto/random/index.d.ts +3 -0
- package/dest/crypto/random/index.d.ts.map +1 -0
- package/dest/crypto/random/index.js +36 -0
- package/dest/crypto/random/index.test.d.ts +2 -0
- package/dest/crypto/random/index.test.d.ts.map +1 -0
- package/dest/crypto/random/index.test.js +13 -0
- package/dest/crypto/sha256/index.d.ts +11 -0
- package/dest/crypto/sha256/index.d.ts.map +1 -0
- package/dest/crypto/sha256/index.js +14 -0
- package/dest/crypto/sha256/index.test.d.ts +2 -0
- package/dest/crypto/sha256/index.test.d.ts.map +1 -0
- package/dest/crypto/sha256/index.test.js +11 -0
- package/dest/errors/index.d.ts +8 -0
- package/dest/errors/index.d.ts.map +1 -0
- package/dest/errors/index.js +8 -0
- package/dest/eth-address/eth_address.test.d.ts +2 -0
- package/dest/eth-address/eth_address.test.d.ts.map +1 -0
- package/dest/eth-address/eth_address.test.js +87 -0
- package/dest/eth-address/index.d.ts +139 -0
- package/dest/eth-address/index.d.ts.map +1 -0
- package/dest/eth-address/index.js +221 -0
- package/dest/fields/coordinate.d.ts +67 -0
- package/dest/fields/coordinate.d.ts.map +1 -0
- package/dest/fields/coordinate.js +95 -0
- package/dest/fields/coordinate.test.d.ts +2 -0
- package/dest/fields/coordinate.test.d.ts.map +1 -0
- package/dest/fields/coordinate.test.js +22 -0
- package/dest/fields/fields.d.ts +170 -0
- package/dest/fields/fields.d.ts.map +1 -0
- package/dest/fields/fields.js +210 -0
- package/dest/fields/index.d.ts +4 -0
- package/dest/fields/index.d.ts.map +1 -0
- package/dest/fields/index.js +4 -0
- package/dest/fields/point.d.ts +111 -0
- package/dest/fields/point.d.ts.map +1 -0
- package/dest/fields/point.js +133 -0
- package/dest/fifo/bounded_serial_queue.d.ts +56 -0
- package/dest/fifo/bounded_serial_queue.d.ts.map +1 -0
- package/dest/fifo/bounded_serial_queue.js +94 -0
- package/dest/fifo/index.d.ts +5 -0
- package/dest/fifo/index.d.ts.map +1 -0
- package/dest/fifo/index.js +5 -0
- package/dest/fifo/memory_fifo.d.ts +55 -0
- package/dest/fifo/memory_fifo.d.ts.map +1 -0
- package/dest/fifo/memory_fifo.js +109 -0
- package/dest/fifo/semaphore.d.ts +23 -0
- package/dest/fifo/semaphore.d.ts.map +1 -0
- package/dest/fifo/semaphore.js +30 -0
- package/dest/fifo/serial_queue.d.ts +48 -0
- package/dest/fifo/serial_queue.d.ts.map +1 -0
- package/dest/fifo/serial_queue.js +74 -0
- package/dest/json-rpc/class_converter.d.ts +109 -0
- package/dest/json-rpc/class_converter.d.ts.map +1 -0
- package/dest/json-rpc/class_converter.js +85 -0
- package/dest/json-rpc/client/index.d.ts +2 -0
- package/dest/json-rpc/client/index.d.ts.map +1 -0
- package/dest/json-rpc/client/index.js +2 -0
- package/dest/json-rpc/client/json_rpc_client.d.ts +22 -0
- package/dest/json-rpc/client/json_rpc_client.d.ts.map +1 -0
- package/dest/json-rpc/client/json_rpc_client.js +83 -0
- package/dest/json-rpc/client/json_rpc_client.test.d.ts +2 -0
- package/dest/json-rpc/client/json_rpc_client.test.d.ts.map +1 -0
- package/dest/json-rpc/client/json_rpc_client.test.js +20 -0
- package/dest/json-rpc/convert.d.ts +22 -0
- package/dest/json-rpc/convert.d.ts.map +1 -0
- package/dest/json-rpc/convert.js +93 -0
- package/dest/json-rpc/convert.test.d.ts +2 -0
- package/dest/json-rpc/convert.test.d.ts.map +1 -0
- package/dest/json-rpc/convert.test.js +14 -0
- package/dest/json-rpc/fixtures/test_state.d.ts +47 -0
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/test_state.js +62 -0
- package/dest/json-rpc/index.d.ts +4 -0
- package/dest/json-rpc/index.d.ts.map +1 -0
- package/dest/json-rpc/index.js +4 -0
- package/dest/json-rpc/js_utils.d.ts +13 -0
- package/dest/json-rpc/js_utils.d.ts.map +1 -0
- package/dest/json-rpc/js_utils.js +18 -0
- package/dest/json-rpc/server/index.d.ts +3 -0
- package/dest/json-rpc/server/index.d.ts.map +1 -0
- package/dest/json-rpc/server/index.js +3 -0
- package/dest/json-rpc/server/json_proxy.d.ts +18 -0
- package/dest/json-rpc/server/json_proxy.d.ts.map +1 -0
- package/dest/json-rpc/server/json_proxy.js +35 -0
- package/dest/json-rpc/server/json_rpc_server.d.ts +34 -0
- package/dest/json-rpc/server/json_rpc_server.d.ts.map +1 -0
- package/dest/json-rpc/server/json_rpc_server.js +109 -0
- package/dest/json-rpc/server/json_rpc_server.test.d.ts +2 -0
- package/dest/json-rpc/server/json_rpc_server.test.d.ts.map +1 -0
- package/dest/json-rpc/server/json_rpc_server.test.js +22 -0
- package/dest/log/console.d.ts +16 -0
- package/dest/log/console.d.ts.map +1 -0
- package/dest/log/console.js +39 -0
- package/dest/log/debug.d.ts +46 -0
- package/dest/log/debug.d.ts.map +1 -0
- package/dest/log/debug.js +75 -0
- package/dest/log/index.d.ts +4 -0
- package/dest/log/index.d.ts.map +1 -0
- package/dest/log/index.js +4 -0
- package/dest/log/log_history.d.ts +31 -0
- package/dest/log/log_history.d.ts.map +1 -0
- package/dest/log/log_history.js +42 -0
- package/dest/log/log_history.test.d.ts +2 -0
- package/dest/log/log_history.test.d.ts.map +1 -0
- package/dest/log/log_history.test.js +78 -0
- package/dest/mutex/index.d.ts +53 -0
- package/dest/mutex/index.d.ts.map +1 -0
- package/dest/mutex/index.js +74 -0
- package/dest/mutex/mutex.test.d.ts +9 -0
- package/dest/mutex/mutex.test.d.ts.map +1 -0
- package/dest/mutex/mutex.test.js +58 -0
- package/dest/mutex/mutex_database.d.ts +10 -0
- package/dest/mutex/mutex_database.d.ts.map +1 -0
- package/dest/mutex/mutex_database.js +2 -0
- package/dest/retry/index.d.ts +33 -0
- package/dest/retry/index.d.ts.map +1 -0
- package/dest/retry/index.js +70 -0
- package/dest/running-promise/index.d.ts +35 -0
- package/dest/running-promise/index.d.ts.map +1 -0
- package/dest/running-promise/index.js +59 -0
- package/dest/serialize/buffer_reader.d.ts +188 -0
- package/dest/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/serialize/buffer_reader.js +229 -0
- package/dest/serialize/buffer_reader.test.d.ts +2 -0
- package/dest/serialize/buffer_reader.test.d.ts.map +1 -0
- package/dest/serialize/buffer_reader.test.js +156 -0
- package/dest/serialize/deserializer.d.ts +134 -0
- package/dest/serialize/deserializer.d.ts.map +1 -0
- package/dest/serialize/deserializer.js +145 -0
- package/dest/serialize/free_funcs.d.ts +203 -0
- package/dest/serialize/free_funcs.d.ts.map +1 -0
- package/dest/serialize/free_funcs.js +250 -0
- package/dest/serialize/index.d.ts +6 -0
- package/dest/serialize/index.d.ts.map +1 -0
- package/dest/serialize/index.js +6 -0
- package/dest/serialize/serialize.test.d.ts +2 -0
- package/dest/serialize/serialize.test.d.ts.map +1 -0
- package/dest/serialize/serialize.test.js +68 -0
- package/dest/serialize/serializer.d.ts +89 -0
- package/dest/serialize/serializer.d.ts.map +1 -0
- package/dest/serialize/serializer.js +111 -0
- package/dest/serialize/types.d.ts +33 -0
- package/dest/serialize/types.d.ts.map +1 -0
- package/dest/serialize/types.js +22 -0
- package/dest/sleep/index.d.ts +52 -0
- package/dest/sleep/index.d.ts.map +1 -0
- package/dest/sleep/index.js +70 -0
- package/dest/timer/index.d.ts +3 -0
- package/dest/timer/index.d.ts.map +1 -0
- package/dest/timer/index.js +3 -0
- package/dest/timer/timeout.d.ts +41 -0
- package/dest/timer/timeout.d.ts.map +1 -0
- package/dest/timer/timeout.js +62 -0
- package/dest/timer/timer.d.ts +33 -0
- package/dest/timer/timer.d.ts.map +1 -0
- package/dest/timer/timer.js +38 -0
- package/dest/transport/browser/index.d.ts +5 -0
- package/dest/transport/browser/index.d.ts.map +1 -0
- package/dest/transport/browser/index.js +5 -0
- package/dest/transport/browser/message_port_socket.d.ts +37 -0
- package/dest/transport/browser/message_port_socket.d.ts.map +1 -0
- package/dest/transport/browser/message_port_socket.js +46 -0
- package/dest/transport/browser/shared_worker_connector.d.ts +19 -0
- package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -0
- package/dest/transport/browser/shared_worker_connector.js +21 -0
- package/dest/transport/browser/shared_worker_listener.d.ts +38 -0
- package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -0
- package/dest/transport/browser/shared_worker_listener.js +37 -0
- package/dest/transport/browser/worker_connector.d.ts +26 -0
- package/dest/transport/browser/worker_connector.d.ts.map +1 -0
- package/dest/transport/browser/worker_connector.js +30 -0
- package/dest/transport/browser/worker_listener.d.ts +39 -0
- package/dest/transport/browser/worker_listener.d.ts.map +1 -0
- package/dest/transport/browser/worker_listener.js +39 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +25 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_fn.js +18 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +102 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_proxy.js +56 -0
- package/dest/transport/dispatch/messages.d.ts +52 -0
- package/dest/transport/dispatch/messages.d.ts.map +1 -0
- package/dest/transport/dispatch/messages.js +12 -0
- package/dest/transport/index.d.ts +12 -0
- package/dest/transport/index.d.ts.map +1 -0
- package/dest/transport/index.js +12 -0
- package/dest/transport/interface/connector.d.ts +8 -0
- package/dest/transport/interface/connector.d.ts.map +1 -0
- package/dest/transport/interface/connector.js +2 -0
- package/dest/transport/interface/listener.d.ts +13 -0
- package/dest/transport/interface/listener.d.ts.map +1 -0
- package/dest/transport/interface/listener.js +2 -0
- package/dest/transport/interface/socket.d.ts +13 -0
- package/dest/transport/interface/socket.d.ts.map +1 -0
- package/dest/transport/interface/socket.js +2 -0
- package/dest/transport/interface/transferable.d.ts +68 -0
- package/dest/transport/interface/transferable.d.ts.map +1 -0
- package/dest/transport/interface/transferable.js +63 -0
- package/dest/transport/node/index.d.ts +3 -0
- package/dest/transport/node/index.d.ts.map +1 -0
- package/dest/transport/node/index.js +3 -0
- package/dest/transport/node/node_connector.d.ts +28 -0
- package/dest/transport/node/node_connector.d.ts.map +1 -0
- package/dest/transport/node/node_connector.js +28 -0
- package/dest/transport/node/node_connector_socket.d.ts +42 -0
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
- package/dest/transport/node/node_connector_socket.js +48 -0
- package/dest/transport/node/node_listener.d.ts +26 -0
- package/dest/transport/node/node_listener.d.ts.map +1 -0
- package/dest/transport/node/node_listener.js +30 -0
- package/dest/transport/node/node_listener_socket.d.ts +37 -0
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
- package/dest/transport/node/node_listener_socket.js +44 -0
- package/dest/transport/transport_client.d.ts +61 -0
- package/dest/transport/transport_client.d.ts.map +1 -0
- package/dest/transport/transport_client.js +94 -0
- package/dest/transport/transport_server.d.ts +56 -0
- package/dest/transport/transport_server.d.ts.map +1 -0
- package/dest/transport/transport_server.js +101 -0
- package/dest/types/index.d.ts +7 -0
- package/dest/types/index.d.ts.map +1 -0
- package/dest/types/index.js +2 -0
- package/dest/wasm/index.d.ts +5 -0
- package/dest/wasm/index.d.ts.map +1 -0
- package/dest/wasm/index.js +5 -0
- package/dest/wasm/wasm/empty_wasi_sdk.d.ts +130 -0
- package/dest/wasm/wasm/empty_wasi_sdk.d.ts.map +1 -0
- package/dest/wasm/wasm/empty_wasi_sdk.js +166 -0
- package/dest/wasm/wasm/index.d.ts +2 -0
- package/dest/wasm/wasm/index.d.ts.map +1 -0
- package/dest/wasm/wasm/index.js +2 -0
- package/dest/wasm/wasm/wasm_module.d.ts +135 -0
- package/dest/wasm/wasm/wasm_module.d.ts.map +1 -0
- package/dest/wasm/wasm/wasm_module.js +205 -0
- package/dest/wasm/wasm/wasm_module.test.d.ts +2 -0
- package/dest/wasm/wasm/wasm_module.test.d.ts.map +1 -0
- package/dest/wasm/wasm/wasm_module.test.js +24 -0
- package/dest/wasm/worker/browser/index.d.ts +3 -0
- package/dest/wasm/worker/browser/index.d.ts.map +1 -0
- package/dest/wasm/worker/browser/index.js +3 -0
- package/dest/wasm/worker/browser/start_web_module.d.ts +7 -0
- package/dest/wasm/worker/browser/start_web_module.d.ts.map +1 -0
- package/dest/wasm/worker/browser/start_web_module.js +22 -0
- package/dest/wasm/worker/browser/web_data_store.d.ts +23 -0
- package/dest/wasm/worker/browser/web_data_store.d.ts.map +1 -0
- package/dest/wasm/worker/browser/web_data_store.js +32 -0
- package/dest/wasm/worker/browser/web_worker.d.ts +10 -0
- package/dest/wasm/worker/browser/web_worker.d.ts.map +1 -0
- package/dest/wasm/worker/browser/web_worker.js +23 -0
- package/dest/wasm/worker/data_store.d.ts +9 -0
- package/dest/wasm/worker/data_store.d.ts.map +1 -0
- package/dest/wasm/worker/data_store.js +2 -0
- package/dest/wasm/worker/index.d.ts +3 -0
- package/dest/wasm/worker/index.d.ts.map +1 -0
- package/dest/wasm/worker/index.js +2 -0
- package/dest/wasm/worker/node/index.d.ts +3 -0
- package/dest/wasm/worker/node/index.d.ts.map +1 -0
- package/dest/wasm/worker/node/index.js +3 -0
- package/dest/wasm/worker/node/node_data_store.d.ts +22 -0
- package/dest/wasm/worker/node/node_data_store.d.ts.map +1 -0
- package/dest/wasm/worker/node/node_data_store.js +31 -0
- package/dest/wasm/worker/node/node_worker.d.ts +6 -0
- package/dest/wasm/worker/node/node_worker.d.ts.map +1 -0
- package/dest/wasm/worker/node/node_worker.js +20 -0
- package/dest/wasm/worker/node/start_node_module.d.ts +7 -0
- package/dest/wasm/worker/node/start_node_module.d.ts.map +1 -0
- package/dest/wasm/worker/node/start_node_module.js +26 -0
- package/dest/wasm/worker/wasm_worker.d.ts +9 -0
- package/dest/wasm/worker/wasm_worker.d.ts.map +1 -0
- package/dest/wasm/worker/wasm_worker.js +2 -0
- package/dest/wasm/worker/worker_pool.d.ts +40 -0
- package/dest/wasm/worker/worker_pool.d.ts.map +1 -0
- package/dest/wasm/worker/worker_pool.js +62 -0
- package/package.json +44 -0
- package/src/abi/index.ts +147 -0
- package/src/async-map/async_map.test.ts +9 -0
- package/src/async-map/index.ts +18 -0
- package/src/aztec-address/index.ts +135 -0
- package/src/bigint-buffer/bigint-buffer.test.ts +21 -0
- package/src/bigint-buffer/index.ts +68 -0
- package/src/collection/array.ts +48 -0
- package/src/collection/index.ts +1 -0
- package/src/crypto/index.ts +3 -0
- package/src/crypto/keccak/index.ts +33 -0
- package/src/crypto/random/index.test.ts +13 -0
- package/src/crypto/random/index.ts +38 -0
- package/src/crypto/sha256/index.test.ts +13 -0
- package/src/crypto/sha256/index.ts +15 -0
- package/src/errors/index.ts +6 -0
- package/src/eth-address/eth_address.test.ts +104 -0
- package/src/eth-address/index.ts +236 -0
- package/src/fields/coordinate.test.ts +26 -0
- package/src/fields/coordinate.ts +104 -0
- package/src/fields/fields.ts +234 -0
- package/src/fields/index.ts +3 -0
- package/src/fields/point.ts +143 -0
- package/src/fifo/bounded_serial_queue.ts +100 -0
- package/src/fifo/index.ts +4 -0
- package/src/fifo/memory_fifo.ts +114 -0
- package/src/fifo/semaphore.ts +33 -0
- package/src/fifo/serial_queue.ts +78 -0
- package/src/json-rpc/README.md +55 -0
- package/src/json-rpc/class_converter.ts +160 -0
- package/src/json-rpc/client/index.ts +1 -0
- package/src/json-rpc/client/json_rpc_client.test.ts +20 -0
- package/src/json-rpc/client/json_rpc_client.ts +103 -0
- package/src/json-rpc/convert.test.ts +15 -0
- package/src/json-rpc/convert.ts +109 -0
- package/src/json-rpc/fixtures/test_state.ts +59 -0
- package/src/json-rpc/index.ts +3 -0
- package/src/json-rpc/js_utils.ts +20 -0
- package/src/json-rpc/server/index.ts +2 -0
- package/src/json-rpc/server/json_proxy.ts +36 -0
- package/src/json-rpc/server/json_rpc_server.test.ts +23 -0
- package/src/json-rpc/server/json_rpc_server.ts +124 -0
- package/src/log/console.ts +45 -0
- package/src/log/debug.ts +86 -0
- package/src/log/index.ts +3 -0
- package/src/log/log_history.test.ts +87 -0
- package/src/log/log_history.ts +44 -0
- package/src/mutex/index.ts +83 -0
- package/src/mutex/mutex.test.ts +75 -0
- package/src/mutex/mutex_database.ts +9 -0
- package/src/retry/index.ts +78 -0
- package/src/running-promise/index.ts +60 -0
- package/src/serialize/buffer_reader.test.ts +175 -0
- package/src/serialize/buffer_reader.ts +272 -0
- package/src/serialize/deserializer.ts +180 -0
- package/src/serialize/free_funcs.ts +285 -0
- package/src/serialize/index.ts +5 -0
- package/src/serialize/serialize.test.ts +89 -0
- package/src/serialize/serializer.ts +128 -0
- package/src/serialize/types.ts +40 -0
- package/src/sleep/index.ts +71 -0
- package/src/timer/index.ts +2 -0
- package/src/timer/timeout.ts +64 -0
- package/src/timer/timer.ts +41 -0
- package/src/transport/browser/index.ts +4 -0
- package/src/transport/browser/message_port_socket.ts +48 -0
- package/src/transport/browser/shared_worker_connector.ts +21 -0
- package/src/transport/browser/shared_worker_listener.ts +52 -0
- package/src/transport/browser/worker_connector.ts +30 -0
- package/src/transport/browser/worker_listener.ts +53 -0
- package/src/transport/dispatch/create_dispatch_fn.ts +33 -0
- package/src/transport/dispatch/create_dispatch_proxy.ts +140 -0
- package/src/transport/dispatch/messages.ts +58 -0
- package/src/transport/index.ts +11 -0
- package/src/transport/interface/connector.ts +8 -0
- package/src/transport/interface/listener.ts +14 -0
- package/src/transport/interface/socket.ts +12 -0
- package/src/transport/interface/transferable.ts +121 -0
- package/src/transport/node/index.ts +2 -0
- package/src/transport/node/node_connector.ts +29 -0
- package/src/transport/node/node_connector_socket.ts +51 -0
- package/src/transport/node/node_listener.ts +33 -0
- package/src/transport/node/node_listener_socket.ts +47 -0
- package/src/transport/transport_client.ts +125 -0
- package/src/transport/transport_server.ts +108 -0
- package/src/types/index.ts +7 -0
- package/src/wasm/README.md +6 -0
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +27 -0
- package/src/wasm/index.ts +4 -0
- package/src/wasm/wasm/empty_wasi_sdk.ts +166 -0
- package/src/wasm/wasm/index.ts +1 -0
- package/src/wasm/wasm/wasm_module.test.ts +27 -0
- package/src/wasm/wasm/wasm_module.ts +257 -0
- package/src/wasm/worker/browser/index.ts +2 -0
- package/src/wasm/worker/browser/start_web_module.ts +23 -0
- package/src/wasm/worker/browser/web_data_store.ts +37 -0
- package/src/wasm/worker/browser/web_worker.ts +24 -0
- package/src/wasm/worker/data_store.ts +7 -0
- package/src/wasm/worker/index.ts +2 -0
- package/src/wasm/worker/node/index.ts +2 -0
- package/src/wasm/worker/node/node_data_store.ts +36 -0
- package/src/wasm/worker/node/node_worker.ts +21 -0
- package/src/wasm/worker/node/start_node_module.ts +28 -0
- package/src/wasm/worker/wasm_worker.ts +7 -0
- package/src/wasm/worker/worker_pool.ts +73 -0
- package/tsconfig.json +10 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { sleep } from '../../sleep/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Contrived example for JSON RPC tests.
|
|
4
|
+
*/
|
|
5
|
+
export class TestNote {
|
|
6
|
+
constructor(data) {
|
|
7
|
+
this.data = data;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Create a string representation of this class.
|
|
11
|
+
* @returns The string representation.
|
|
12
|
+
*/
|
|
13
|
+
toString() {
|
|
14
|
+
return this.data;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Creates a string representation of this class.
|
|
18
|
+
* @param data - The data.
|
|
19
|
+
* @returns The string representation.
|
|
20
|
+
*/
|
|
21
|
+
static fromString(data) {
|
|
22
|
+
return new TestNote(data);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Represents a simple state management for TestNote instances.
|
|
27
|
+
* Provides functionality to get a note by index and add notes asynchronously.
|
|
28
|
+
* Primarily used for testing JSON RPC-related functionalities.
|
|
29
|
+
*/
|
|
30
|
+
export class TestState {
|
|
31
|
+
constructor(notes) {
|
|
32
|
+
this.notes = notes;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Retrieve the TestNote instance at the specified index from the notes array.
|
|
36
|
+
* This method allows getting a desired TestNote from the collection of notes
|
|
37
|
+
* maintained by the TestState instance using the provided index value.
|
|
38
|
+
*
|
|
39
|
+
* @param index - The index of the TestNote to be retrieved from the notes array.
|
|
40
|
+
* @returns The TestNote instance corresponding to the given index.
|
|
41
|
+
*/
|
|
42
|
+
getNote(index) {
|
|
43
|
+
return this.notes[index];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add an array of TestNote instances to the current TestState's notes.
|
|
47
|
+
* This function simulates asynchronous behavior by waiting for a duration
|
|
48
|
+
* equal to the number of notes being added. It then returns the updated
|
|
49
|
+
* list of TestNote instances in the TestState.
|
|
50
|
+
*
|
|
51
|
+
* @param notes - An array of TestNote instances to be added.
|
|
52
|
+
* @returns A Promise that resolves to an array of TestNote instances, including the newly added notes.
|
|
53
|
+
*/
|
|
54
|
+
async addNotes(notes) {
|
|
55
|
+
for (const note of notes) {
|
|
56
|
+
this.notes.push(note);
|
|
57
|
+
}
|
|
58
|
+
await sleep(notes.length);
|
|
59
|
+
return this.notes;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9maXh0dXJlcy90ZXN0X3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQW9CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO0lBQUcsQ0FBQztJQUNwQzs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFBRyxDQUFDO0lBQ3pDOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsS0FBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFpQjtRQUM5QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QjtRQUNELE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/json-rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ClassConverter } from './class_converter.js';
|
|
2
|
+
export { JsonRpcServer, JsonProxy } from './server/index.js';
|
|
3
|
+
export { createJsonRpcClient, JsonStringify } from './client/index.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbi1ycGMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QyxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyJ9
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Does this own the property?
|
|
3
|
+
* @param obj - An object.
|
|
4
|
+
* @param method - A property name.
|
|
5
|
+
*/
|
|
6
|
+
export declare const hasOwnProperty: (obj: any, propertyName: string) => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Helper function to assert a condition is truthy
|
|
9
|
+
* @param x - A boolean condition to assert.
|
|
10
|
+
* @param err - Error message to throw if x isn't met.
|
|
11
|
+
*/
|
|
12
|
+
export declare function assert(x: any, err: string): asserts x;
|
|
13
|
+
//# sourceMappingURL=js_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js_utils.d.ts","sourceRoot":"","sources":["../../src/json-rpc/js_utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAS,GAAG,gBAAgB,MAAM,YACJ,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAIrD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Make sure this property was not inherited
|
|
2
|
+
/**
|
|
3
|
+
* Does this own the property?
|
|
4
|
+
* @param obj - An object.
|
|
5
|
+
* @param method - A property name.
|
|
6
|
+
*/
|
|
7
|
+
export const hasOwnProperty = (obj, propertyName) => Object.prototype.hasOwnProperty.call(obj, propertyName);
|
|
8
|
+
/**
|
|
9
|
+
* Helper function to assert a condition is truthy
|
|
10
|
+
* @param x - A boolean condition to assert.
|
|
11
|
+
* @param err - Error message to throw if x isn't met.
|
|
12
|
+
*/
|
|
13
|
+
export function assert(x, err) {
|
|
14
|
+
if (!x) {
|
|
15
|
+
throw new Error(err);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbi1ycGMvanNfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNENBQTRDO0FBRTVDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFRLEVBQUUsWUFBb0IsRUFBRSxFQUFFLENBQy9ELE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFMUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsQ0FBTSxFQUFFLEdBQVc7SUFDeEMsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDdEI7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { JsonRpcServer } from './json_rpc_server.js';
|
|
2
|
+
export { JsonProxy } from './json_proxy.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUMifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ClassConverter, ClassConverterInput } from '../class_converter.js';
|
|
2
|
+
/**
|
|
3
|
+
* Handles conversion of objects over the write.
|
|
4
|
+
* Delegates to a ClassConverter object.
|
|
5
|
+
*/
|
|
6
|
+
export declare class JsonProxy {
|
|
7
|
+
private handler;
|
|
8
|
+
classConverter: ClassConverter;
|
|
9
|
+
constructor(handler: object, stringClassMap: ClassConverterInput, objectClassMap: ClassConverterInput);
|
|
10
|
+
/**
|
|
11
|
+
* Call an RPC method.
|
|
12
|
+
* @param methodName - The RPC method.
|
|
13
|
+
* @param jsonParams - The RPG parameters.
|
|
14
|
+
* @returns The remote result.
|
|
15
|
+
*/
|
|
16
|
+
call(methodName: string, jsonParams?: any[]): Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=json_proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_proxy.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/json_proxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5E;;;GAGG;AACH,qBAAa,SAAS;IAER,OAAO,CAAC,OAAO;IAD3B,cAAc,EAAE,cAAc,CAAC;gBACX,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB;IAG7G;;;;;OAKG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,GAAG,EAAO;CAa7D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createDebugLogger } from '../../log/index.js';
|
|
2
|
+
import { ClassConverter } from '../class_converter.js';
|
|
3
|
+
import { convertFromJsonObj, convertToJsonObj } from '../convert.js';
|
|
4
|
+
import { assert, hasOwnProperty } from '../js_utils.js';
|
|
5
|
+
const debug = createDebugLogger('json-rpc:json_proxy');
|
|
6
|
+
/**
|
|
7
|
+
* Handles conversion of objects over the write.
|
|
8
|
+
* Delegates to a ClassConverter object.
|
|
9
|
+
*/
|
|
10
|
+
export class JsonProxy {
|
|
11
|
+
constructor(handler, stringClassMap, objectClassMap) {
|
|
12
|
+
this.handler = handler;
|
|
13
|
+
this.classConverter = new ClassConverter(stringClassMap, objectClassMap);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Call an RPC method.
|
|
17
|
+
* @param methodName - The RPC method.
|
|
18
|
+
* @param jsonParams - The RPG parameters.
|
|
19
|
+
* @returns The remote result.
|
|
20
|
+
*/
|
|
21
|
+
async call(methodName, jsonParams = []) {
|
|
22
|
+
// Get access to our class members
|
|
23
|
+
const proto = Object.getPrototypeOf(this.handler);
|
|
24
|
+
assert(hasOwnProperty(proto, methodName), 'JsonProxy: Method not found!');
|
|
25
|
+
assert(Array.isArray(jsonParams), 'JsonProxy: Params not an array!');
|
|
26
|
+
// convert the params from json representation to classes
|
|
27
|
+
const convertedParams = jsonParams.map(param => convertFromJsonObj(this.classConverter, param));
|
|
28
|
+
debug('JsonProxy:call', methodName, '<-', convertedParams);
|
|
29
|
+
const rawRet = await this.handler[methodName](...convertedParams);
|
|
30
|
+
const ret = convertToJsonObj(this.classConverter, rawRet);
|
|
31
|
+
debug('JsonProxy:call', methodName, '->', ret);
|
|
32
|
+
return ret;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9wcm94eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9zZXJ2ZXIvanNvbl9wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFFcEIsWUFBb0IsT0FBZSxFQUFFLGNBQW1DLEVBQUUsY0FBbUM7UUFBekYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQWtCLEVBQUUsYUFBb0IsRUFBRTtRQUMxRCxrQ0FBa0M7UUFDbEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUMxRSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JFLHlEQUF5RDtRQUN6RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU8sSUFBSSxDQUFDLE9BQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUQsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0MsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import Koa from 'koa';
|
|
2
|
+
import { ClassConverterInput } from '../class_converter.js';
|
|
3
|
+
import { JsonProxy } from './json_proxy.js';
|
|
4
|
+
/**
|
|
5
|
+
* JsonRpcServer.
|
|
6
|
+
* Minimal, dev-friendly mechanism to create a server from an object.
|
|
7
|
+
*/
|
|
8
|
+
export declare class JsonRpcServer {
|
|
9
|
+
private handler;
|
|
10
|
+
private createApi;
|
|
11
|
+
private disallowedMethods;
|
|
12
|
+
private log;
|
|
13
|
+
proxy: JsonProxy;
|
|
14
|
+
constructor(handler: object, stringClassMap: ClassConverterInput, objectClassMap: ClassConverterInput, createApi: boolean, disallowedMethods?: string[], log?: import("../../log/console.js").Logger);
|
|
15
|
+
/**
|
|
16
|
+
* Get an express app object.
|
|
17
|
+
* @param prefix - Our server prefix.
|
|
18
|
+
* @returns The app object.
|
|
19
|
+
*/
|
|
20
|
+
getApp(prefix?: string): Koa<Koa.DefaultState, Koa.DefaultContext>;
|
|
21
|
+
/**
|
|
22
|
+
* Get a router object wrapping our RPC class.
|
|
23
|
+
* @param prefix - The server prefix.
|
|
24
|
+
* @returns The router object.
|
|
25
|
+
*/
|
|
26
|
+
private getRouter;
|
|
27
|
+
/**
|
|
28
|
+
* Start this server with koa.
|
|
29
|
+
* @param port - Port number.
|
|
30
|
+
* @param prefix - Prefix string.
|
|
31
|
+
*/
|
|
32
|
+
start(port: number, prefix?: string): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=json_rpc_server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_rpc_server.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/json_rpc_server.ts"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;;GAGG;AACH,qBAAa,aAAa;IAGtB,OAAO,CAAC,OAAO;IAGf,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IAPb,KAAK,EAAE,SAAS,CAAC;gBAEP,OAAO,EAAE,MAAM,EACvB,cAAc,EAAE,mBAAmB,EACnC,cAAc,EAAE,mBAAmB,EAC3B,SAAS,EAAE,OAAO,EAClB,iBAAiB,GAAE,MAAM,EAAO,EAChC,GAAG,wCAAmD;IAKhE;;;;OAIG;IACI,MAAM,CAAC,MAAM,SAAK;IAyBzB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAkDjB;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK;CAIvC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import http from 'http';
|
|
2
|
+
import Router from 'koa-router';
|
|
3
|
+
import cors from '@koa/cors';
|
|
4
|
+
import compress from 'koa-compress';
|
|
5
|
+
import Koa from 'koa';
|
|
6
|
+
import bodyParser from 'koa-bodyparser';
|
|
7
|
+
import { createLogger } from '../../log/index.js';
|
|
8
|
+
import { JsonProxy } from './json_proxy.js';
|
|
9
|
+
import { JsonStringify } from '../convert.js';
|
|
10
|
+
/**
|
|
11
|
+
* JsonRpcServer.
|
|
12
|
+
* Minimal, dev-friendly mechanism to create a server from an object.
|
|
13
|
+
*/
|
|
14
|
+
export class JsonRpcServer {
|
|
15
|
+
constructor(handler, stringClassMap, objectClassMap, createApi, disallowedMethods = [], log = createLogger('aztec:foundation:json-rpc:server')) {
|
|
16
|
+
this.handler = handler;
|
|
17
|
+
this.createApi = createApi;
|
|
18
|
+
this.disallowedMethods = disallowedMethods;
|
|
19
|
+
this.log = log;
|
|
20
|
+
this.proxy = new JsonProxy(handler, stringClassMap, objectClassMap);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get an express app object.
|
|
24
|
+
* @param prefix - Our server prefix.
|
|
25
|
+
* @returns The app object.
|
|
26
|
+
*/
|
|
27
|
+
getApp(prefix = '') {
|
|
28
|
+
const router = this.getRouter(prefix);
|
|
29
|
+
const exceptionHandler = async (ctx, next) => {
|
|
30
|
+
try {
|
|
31
|
+
await next();
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
this.log(err);
|
|
35
|
+
ctx.status = 400;
|
|
36
|
+
ctx.body = { error: err.message };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const app = new Koa();
|
|
40
|
+
app.on('error', error => {
|
|
41
|
+
this.log(`KOA app-level error. ${JsonStringify({ error })}`);
|
|
42
|
+
});
|
|
43
|
+
app.use(compress({ br: false }));
|
|
44
|
+
app.use(bodyParser());
|
|
45
|
+
app.use(cors());
|
|
46
|
+
app.use(exceptionHandler);
|
|
47
|
+
app.use(router.routes());
|
|
48
|
+
app.use(router.allowedMethods());
|
|
49
|
+
return app;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get a router object wrapping our RPC class.
|
|
53
|
+
* @param prefix - The server prefix.
|
|
54
|
+
* @returns The router object.
|
|
55
|
+
*/
|
|
56
|
+
getRouter(prefix) {
|
|
57
|
+
const router = new Router({ prefix });
|
|
58
|
+
const proto = Object.getPrototypeOf(this.handler);
|
|
59
|
+
// Find all our endpoints from the handler methods
|
|
60
|
+
if (this.createApi) {
|
|
61
|
+
// "API mode" where an endpoint is created for each method
|
|
62
|
+
for (const method of Object.getOwnPropertyNames(proto)) {
|
|
63
|
+
// Ignore if not a function or function is not allowed
|
|
64
|
+
if (method === 'constructor' ||
|
|
65
|
+
typeof proto[method] !== 'function' ||
|
|
66
|
+
this.disallowedMethods.includes(method)) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
router.post(`/${method}`, async (ctx) => {
|
|
70
|
+
const { params = [], jsonrpc, id } = ctx.request.body;
|
|
71
|
+
const result = await this.proxy.call(method, params);
|
|
72
|
+
ctx.body = { jsonrpc, id, result: JsonStringify(result) };
|
|
73
|
+
ctx.status = 200;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// "JSON RPC mode" where a single endpoint is used and the method is given in the request body
|
|
79
|
+
router.post('/', async (ctx) => {
|
|
80
|
+
const { params = [], jsonrpc, id, method } = ctx.request.body;
|
|
81
|
+
// Ignore if not a function
|
|
82
|
+
if (method === 'constructor' ||
|
|
83
|
+
typeof proto[method] !== 'function' ||
|
|
84
|
+
this.disallowedMethods.includes(method)) {
|
|
85
|
+
ctx.status = 400;
|
|
86
|
+
ctx.body = { error: `Invalid method name: ${method}` };
|
|
87
|
+
}
|
|
88
|
+
const result = await this.proxy.call(method, params);
|
|
89
|
+
ctx.body = {
|
|
90
|
+
jsonrpc,
|
|
91
|
+
id,
|
|
92
|
+
result: JsonStringify(result),
|
|
93
|
+
};
|
|
94
|
+
ctx.status = 200;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return router;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Start this server with koa.
|
|
101
|
+
* @param port - Port number.
|
|
102
|
+
* @param prefix - Prefix string.
|
|
103
|
+
*/
|
|
104
|
+
start(port, prefix = '') {
|
|
105
|
+
const httpServer = http.createServer(this.getApp(prefix).callback());
|
|
106
|
+
httpServer.listen(port);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL3NlcnZlci9qc29uX3JwY19zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sTUFBTSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxRQUFRLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLFVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFDVSxPQUFlLEVBQ3ZCLGNBQW1DLEVBQ25DLGNBQW1DLEVBQzNCLFNBQWtCLEVBQ2xCLG9CQUE4QixFQUFFLEVBQ2hDLE1BQU0sWUFBWSxDQUFDLGtDQUFrQyxDQUFDO1FBTHRELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFHZixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUNoQyxRQUFHLEdBQUgsR0FBRyxDQUFtRDtRQUU5RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUU7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxNQUFNLGdC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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_rpc_server.test.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/json_rpc_server.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import request from 'supertest';
|
|
2
|
+
import { TestState, TestNote } from '../fixtures/test_state.js';
|
|
3
|
+
import { JsonRpcServer } from './json_rpc_server.js';
|
|
4
|
+
test('test an RPC function with a primitive parameter', async () => {
|
|
5
|
+
const server = new JsonRpcServer(new TestState([new TestNote('a'), new TestNote('b')]), { TestNote }, {}, true);
|
|
6
|
+
const response = await request(server.getApp().callback())
|
|
7
|
+
.post('/getNote')
|
|
8
|
+
.send({ params: [0] });
|
|
9
|
+
expect(response.status).toBe(200);
|
|
10
|
+
expect(response.text).toBe(JSON.stringify({ result: JSON.stringify({ type: 'TestNote', data: 'a' }) }));
|
|
11
|
+
});
|
|
12
|
+
test('test an RPC function with an array of classes', async () => {
|
|
13
|
+
const server = new JsonRpcServer(new TestState([]), { TestNote }, {}, true);
|
|
14
|
+
const response = await request(server.getApp().callback())
|
|
15
|
+
.post('/addNotes')
|
|
16
|
+
.send({
|
|
17
|
+
params: [[{ data: 'a' }, { data: 'b' }, { data: 'c' }]],
|
|
18
|
+
});
|
|
19
|
+
expect(response.status).toBe(200);
|
|
20
|
+
expect(response.text).toBe(JSON.stringify({ result: JSON.stringify([{ data: 'a' }, { data: 'b' }, { data: 'c' }]) }));
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfc2VydmVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvc2VydmVyL2pzb25fcnBjX3NlcnZlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxJQUFJLENBQUMsaURBQWlELEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEgsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUM7U0FDaEIsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUcsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsK0NBQStDLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDL0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUM7U0FDakIsSUFBSSxDQUFDO1FBQ0osTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ3hELENBQUMsQ0FBQztJQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4SCxDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger is a utility type that represents a logging function that accepts any number of arguments.
|
|
3
|
+
* It is used to provide customizable logging functionality, allowing developers to easily log messages
|
|
4
|
+
* with optional prefixes and custom formatting or output destinations.
|
|
5
|
+
*/
|
|
6
|
+
export type Logger = (...args: any[]) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Creates a Logger function with an optional prefix for log messages.
|
|
9
|
+
* If a prefix is provided, the created logger will prepend it to each log message.
|
|
10
|
+
* If no prefix is provided, the default console.log will be returned.
|
|
11
|
+
*
|
|
12
|
+
* @param prefix - The optional string to prepend to each log message.
|
|
13
|
+
* @returns A Logger function that accepts any number of arguments and logs them with the specified prefix.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createLogger(prefix?: string): Logger;
|
|
16
|
+
//# sourceMappingURL=console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/log/console.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAuB9C;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAMpD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
/**
|
|
3
|
+
* ConsoleLogger is a utility class that provides customizable console logging functionality.
|
|
4
|
+
* It allows setting a custom prefix for log messages and an optional custom logger function,
|
|
5
|
+
* which can be useful for controlling the format of the output or redirecting logs to a different destination.
|
|
6
|
+
*/
|
|
7
|
+
class ConsoleLogger {
|
|
8
|
+
constructor(prefix, logger = console.log) {
|
|
9
|
+
this.prefix = prefix;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Log messages with the specified prefix using the provided logger.
|
|
14
|
+
* By default, it uses 'console.log' as the logger but can be overridden
|
|
15
|
+
* during ConsoleLogger instantiation. This method allows for easy
|
|
16
|
+
* organization and readability of log messages in the console.
|
|
17
|
+
*
|
|
18
|
+
* @param args - The data to be logged, any number of arguments can be passed to this function.
|
|
19
|
+
*/
|
|
20
|
+
log(...args) {
|
|
21
|
+
this.logger(`${this.prefix}:`, ...args);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Creates a Logger function with an optional prefix for log messages.
|
|
26
|
+
* If a prefix is provided, the created logger will prepend it to each log message.
|
|
27
|
+
* If no prefix is provided, the default console.log will be returned.
|
|
28
|
+
*
|
|
29
|
+
* @param prefix - The optional string to prepend to each log message.
|
|
30
|
+
* @returns A Logger function that accepts any number of arguments and logs them with the specified prefix.
|
|
31
|
+
*/
|
|
32
|
+
export function createLogger(prefix) {
|
|
33
|
+
if (prefix) {
|
|
34
|
+
const logger = new ConsoleLogger(prefix, console.log);
|
|
35
|
+
return (...args) => logger.log(...args);
|
|
36
|
+
}
|
|
37
|
+
return console.log;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2cvY29uc29sZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFTL0I7Ozs7R0FJRztBQUNILE1BQU0sYUFBYTtJQUNqQixZQUFvQixNQUFjLEVBQVUsU0FBbUMsT0FBTyxDQUFDLEdBQUc7UUFBdEUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQXdDO0lBQUcsQ0FBQztJQUU5Rjs7Ozs7OztPQU9HO0lBQ0ksR0FBRyxDQUFDLEdBQUcsSUFBVztRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZTtJQUMxQyxJQUFJLE1BQU0sRUFBRTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDaEQ7SUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDckIsQ0FBQyJ9
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A debug logger.
|
|
3
|
+
*/
|
|
4
|
+
export type DebugLogger = (...args: any[]) => void;
|
|
5
|
+
/**
|
|
6
|
+
* Return a logger, meant to be silent by default and verbose during debugging.
|
|
7
|
+
* @param name - The module name of the logger.
|
|
8
|
+
* @returns A callable log function.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createDebugLogger(name: string): DebugLogger;
|
|
11
|
+
/**
|
|
12
|
+
* Set a function to be called before each log message is handled by the debug logger.
|
|
13
|
+
* The hook function will receive the logger namespace and any arguments passed to the logger.
|
|
14
|
+
* This can be useful for adding additional context, filtering logs, or performing side-effects
|
|
15
|
+
* based on logged messages.
|
|
16
|
+
*
|
|
17
|
+
* @param fn - The function to be called before each log message.
|
|
18
|
+
*/
|
|
19
|
+
export declare function setPreDebugLogHook(fn: (...args: any[]) => void): void;
|
|
20
|
+
/**
|
|
21
|
+
* Set a callback function to be executed after each log is written by the debug logger.
|
|
22
|
+
* This allows additional behavior or side effects to occur after a log has been written,
|
|
23
|
+
* such as sending logs to external services, formatting output, or triggering events.
|
|
24
|
+
*
|
|
25
|
+
* @param fn - The callback function to be executed after each log. It receives the same arguments as the original log function call.
|
|
26
|
+
*/
|
|
27
|
+
export declare function setPostDebugLogHook(fn: (...args: any[]) => void): void;
|
|
28
|
+
/**
|
|
29
|
+
* Enable logs for the specified namespace(s) or wildcard pattern(s).
|
|
30
|
+
* This function activates the logging functionality for the given
|
|
31
|
+
* namespace(s) or pattern(s), allowing developers to selectively display
|
|
32
|
+
* debug logs that match the provided string(s).
|
|
33
|
+
*
|
|
34
|
+
* @param str - The namespace(s) or wildcard pattern(s) for which logs should be enabled.
|
|
35
|
+
*/
|
|
36
|
+
export declare function enableLogs(str: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* Check if the logging is enabled for a given namespace.
|
|
39
|
+
* The input 'str' represents the namespace for which the log status is being checked.
|
|
40
|
+
* Returns true if the logging is enabled, otherwise false.
|
|
41
|
+
*
|
|
42
|
+
* @param str - The namespace string used to determine if logging is enabled.
|
|
43
|
+
* @returns A boolean indicating whether logging is enabled for the given namespace.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isLogEnabled(str: string): boolean;
|
|
46
|
+
//# sourceMappingURL=debug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/log/debug.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAG3D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,QAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,QAE/D;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QAErC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,WAEvC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
let preLogHook;
|
|
3
|
+
let postLogHook;
|
|
4
|
+
/**
|
|
5
|
+
* Process and handle the logging of messages through custom hooks and the given logger.
|
|
6
|
+
* This function checks if the logger's namespace is enabled, executes any preLogHook functions, logs the message using the provided logger, and then executes any postLogHook functions.
|
|
7
|
+
*
|
|
8
|
+
* @param logger - The debug logger instance to be used for logging.
|
|
9
|
+
* @param args - The arguments to be passed to the logger and any hook functions.
|
|
10
|
+
*/
|
|
11
|
+
function theFunctionThroughWhichAllLogsPass(logger, ...args) {
|
|
12
|
+
if (!debug.enabled(logger.namespace)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (preLogHook) {
|
|
16
|
+
preLogHook(logger.namespace, ...args);
|
|
17
|
+
}
|
|
18
|
+
logger(...args);
|
|
19
|
+
if (postLogHook) {
|
|
20
|
+
postLogHook(logger.namespace, ...args);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Return a logger, meant to be silent by default and verbose during debugging.
|
|
25
|
+
* @param name - The module name of the logger.
|
|
26
|
+
* @returns A callable log function.
|
|
27
|
+
*/
|
|
28
|
+
export function createDebugLogger(name) {
|
|
29
|
+
const logger = debug(name);
|
|
30
|
+
return (...args) => theFunctionThroughWhichAllLogsPass(logger, ...args);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Set a function to be called before each log message is handled by the debug logger.
|
|
34
|
+
* The hook function will receive the logger namespace and any arguments passed to the logger.
|
|
35
|
+
* This can be useful for adding additional context, filtering logs, or performing side-effects
|
|
36
|
+
* based on logged messages.
|
|
37
|
+
*
|
|
38
|
+
* @param fn - The function to be called before each log message.
|
|
39
|
+
*/
|
|
40
|
+
export function setPreDebugLogHook(fn) {
|
|
41
|
+
preLogHook = fn;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Set a callback function to be executed after each log is written by the debug logger.
|
|
45
|
+
* This allows additional behavior or side effects to occur after a log has been written,
|
|
46
|
+
* such as sending logs to external services, formatting output, or triggering events.
|
|
47
|
+
*
|
|
48
|
+
* @param fn - The callback function to be executed after each log. It receives the same arguments as the original log function call.
|
|
49
|
+
*/
|
|
50
|
+
export function setPostDebugLogHook(fn) {
|
|
51
|
+
postLogHook = fn;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Enable logs for the specified namespace(s) or wildcard pattern(s).
|
|
55
|
+
* This function activates the logging functionality for the given
|
|
56
|
+
* namespace(s) or pattern(s), allowing developers to selectively display
|
|
57
|
+
* debug logs that match the provided string(s).
|
|
58
|
+
*
|
|
59
|
+
* @param str - The namespace(s) or wildcard pattern(s) for which logs should be enabled.
|
|
60
|
+
*/
|
|
61
|
+
export function enableLogs(str) {
|
|
62
|
+
debug.enable(str);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if the logging is enabled for a given namespace.
|
|
66
|
+
* The input 'str' represents the namespace for which the log status is being checked.
|
|
67
|
+
* Returns true if the logging is enabled, otherwise false.
|
|
68
|
+
*
|
|
69
|
+
* @param str - The namespace string used to determine if logging is enabled.
|
|
70
|
+
* @returns A boolean indicating whether logging is enabled for the given namespace.
|
|
71
|
+
*/
|
|
72
|
+
export function isLogEnabled(str) {
|
|
73
|
+
return debug.enabled(str);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixJQUFJLFVBQWtELENBQUM7QUFDdkQsSUFBSSxXQUFtRCxDQUFDO0FBRXhEOzs7Ozs7R0FNRztBQUNILFNBQVMsa0NBQWtDLENBQUMsTUFBVyxFQUFFLEdBQUcsSUFBVztJQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDcEMsT0FBTztLQUNSO0lBQ0QsSUFBSSxVQUFVLEVBQUU7UUFDZCxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ3ZDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEIsSUFBSSxXQUFXLEVBQUU7UUFDZixXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ3hDO0FBQ0gsQ0FBQztBQU9EOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsT0FBTyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUE0QjtJQUM3RCxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsRUFBNEI7SUFDOUQsV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBVztJQUNwQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/log/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './console.js';
|
|
2
|
+
export * from './debug.js';
|
|
3
|
+
export * from './log_history.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsa0JBQWtCLENBQUMifQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LogHistory is a utility class that provides the ability to store and manage debug logs.
|
|
3
|
+
* It can be enabled to record logs along with their timestamps, retrieve a specified number
|
|
4
|
+
* of recent logs, or clear stored logs based on a given count. This can be useful for debugging
|
|
5
|
+
* purposes, monitoring application activities, and maintaining log history.
|
|
6
|
+
*/
|
|
7
|
+
export declare class LogHistory {
|
|
8
|
+
private logs;
|
|
9
|
+
/**
|
|
10
|
+
* Enables the logging of debug messages with timestamps.
|
|
11
|
+
* Hooks into the pre-debug log and stores each log entry along with its timestamp in the logs array.
|
|
12
|
+
*/
|
|
13
|
+
enable(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Retrieves a specified number of logs from the end of the log history or all logs if no argument is provided.
|
|
16
|
+
* The logs are ordered chronologically, with the oldest logs at the beginning of the array.
|
|
17
|
+
*
|
|
18
|
+
* @param last - Optional number representing the amount of recent logs to return. Defaults to 0, which returns all logs.
|
|
19
|
+
* @returns An array of log arrays, each containing a timestamp and log arguments.
|
|
20
|
+
*/
|
|
21
|
+
getLogs(last?: number): any[][];
|
|
22
|
+
/**
|
|
23
|
+
* Clear a specified number of logs from the beginning of the logs array.
|
|
24
|
+
* If no count is provided, it will clear all logs.
|
|
25
|
+
*
|
|
26
|
+
* @param count - The number of logs to be removed (default: total logs length).
|
|
27
|
+
*/
|
|
28
|
+
clear(count?: number): void;
|
|
29
|
+
}
|
|
30
|
+
export declare const logHistory: LogHistory;
|
|
31
|
+
//# sourceMappingURL=log_history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log_history.d.ts","sourceRoot":"","sources":["../../src/log/log_history.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAe;IAE3B;;;OAGG;IACI,MAAM;IAMb;;;;;;OAMG;IACI,OAAO,CAAC,IAAI,SAAI;IAIvB;;;;;OAKG;IACI,KAAK,CAAC,KAAK,SAAmB;CAGtC;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|