crypto-aio 0.0.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +167 -0
- package/README.md +163 -13
- package/dist/adapters/avalanche/address.d.ts +15 -0
- package/dist/adapters/avalanche/address.js +74 -0
- package/dist/adapters/avalanche/address.js.map +1 -0
- package/dist/adapters/avalanche/api.d.ts +100 -0
- package/dist/adapters/avalanche/api.js +381 -0
- package/dist/adapters/avalanche/api.js.map +1 -0
- package/dist/adapters/avalanche/builder.d.ts +13 -0
- package/dist/adapters/avalanche/builder.js +336 -0
- package/dist/adapters/avalanche/builder.js.map +1 -0
- package/dist/adapters/avalanche/cb58.d.ts +7 -0
- package/dist/adapters/avalanche/cb58.js +49 -0
- package/dist/adapters/avalanche/cb58.js.map +1 -0
- package/dist/adapters/avalanche/chains.d.ts +21 -0
- package/dist/adapters/avalanche/chains.js +79 -0
- package/dist/adapters/avalanche/chains.js.map +1 -0
- package/dist/adapters/avalanche/codec.d.ts +94 -0
- package/dist/adapters/avalanche/codec.js +371 -0
- package/dist/adapters/avalanche/codec.js.map +1 -0
- package/dist/adapters/avalanche/context.d.ts +59 -0
- package/dist/adapters/avalanche/context.js +114 -0
- package/dist/adapters/avalanche/context.js.map +1 -0
- package/dist/adapters/avalanche/decode.d.ts +16 -0
- package/dist/adapters/avalanche/decode.js +101 -0
- package/dist/adapters/avalanche/decode.js.map +1 -0
- package/dist/adapters/avalanche/driver.d.ts +22 -0
- package/dist/adapters/avalanche/driver.js +81 -0
- package/dist/adapters/avalanche/driver.js.map +1 -0
- package/dist/adapters/avalanche/errors.d.ts +18 -0
- package/dist/adapters/avalanche/errors.js +61 -0
- package/dist/adapters/avalanche/errors.js.map +1 -0
- package/dist/adapters/avalanche/fees.d.ts +23 -0
- package/dist/adapters/avalanche/fees.js +105 -0
- package/dist/adapters/avalanche/fees.js.map +1 -0
- package/dist/adapters/avalanche/index.d.ts +19 -0
- package/dist/adapters/avalanche/index.js +8 -0
- package/dist/adapters/avalanche/index.js.map +1 -0
- package/dist/adapters/avalanche/network.d.ts +37 -0
- package/dist/adapters/avalanche/network.js +135 -0
- package/dist/adapters/avalanche/network.js.map +1 -0
- package/dist/adapters/avalanche/plugin.d.ts +21 -0
- package/dist/adapters/avalanche/plugin.js +46 -0
- package/dist/adapters/avalanche/plugin.js.map +1 -0
- package/dist/adapters/avalanche/presets.d.ts +6 -0
- package/dist/adapters/avalanche/presets.js +86 -0
- package/dist/adapters/avalanche/presets.js.map +1 -0
- package/dist/adapters/avalanche/proofs.d.ts +41 -0
- package/dist/adapters/avalanche/proofs.js +270 -0
- package/dist/adapters/avalanche/proofs.js.map +1 -0
- package/dist/adapters/avalanche/reader.d.ts +40 -0
- package/dist/adapters/avalanche/reader.js +231 -0
- package/dist/adapters/avalanche/reader.js.map +1 -0
- package/dist/adapters/avalanche/sdk.d.ts +182 -0
- package/dist/adapters/avalanche/sdk.js +21 -0
- package/dist/adapters/avalanche/sdk.js.map +1 -0
- package/dist/adapters/avalanche/types.d.ts +86 -0
- package/dist/{type/common.js → adapters/avalanche/types.js} +1 -1
- package/dist/adapters/avalanche/types.js.map +1 -0
- package/dist/adapters/evm/builder.d.ts +11 -0
- package/dist/adapters/evm/builder.js +386 -0
- package/dist/adapters/evm/builder.js.map +1 -0
- package/dist/adapters/evm/chains.d.ts +6 -0
- package/dist/adapters/evm/chains.js +203 -0
- package/dist/adapters/evm/chains.js.map +1 -0
- package/dist/adapters/evm/client.d.ts +84 -0
- package/dist/adapters/evm/client.js +335 -0
- package/dist/adapters/evm/client.js.map +1 -0
- package/dist/adapters/evm/decode.d.ts +35 -0
- package/dist/adapters/evm/decode.js +175 -0
- package/dist/adapters/evm/decode.js.map +1 -0
- package/dist/adapters/evm/driver.d.ts +8 -0
- package/dist/adapters/evm/driver.js +61 -0
- package/dist/adapters/evm/driver.js.map +1 -0
- package/dist/adapters/evm/errors.d.ts +20 -0
- package/dist/adapters/evm/errors.js +110 -0
- package/dist/adapters/evm/errors.js.map +1 -0
- package/dist/adapters/evm/ethers-client.d.ts +43 -0
- package/dist/adapters/evm/ethers-client.js +139 -0
- package/dist/adapters/evm/ethers-client.js.map +1 -0
- package/dist/adapters/evm/fees.d.ts +103 -0
- package/dist/adapters/evm/fees.js +277 -0
- package/dist/adapters/evm/fees.js.map +1 -0
- package/dist/adapters/evm/index.d.ts +20 -0
- package/dist/adapters/evm/index.js +12 -0
- package/dist/adapters/evm/index.js.map +1 -0
- package/dist/adapters/evm/network.d.ts +65 -0
- package/dist/adapters/evm/network.js +150 -0
- package/dist/adapters/evm/network.js.map +1 -0
- package/dist/adapters/evm/plugin.d.ts +35 -0
- package/dist/adapters/evm/plugin.js +150 -0
- package/dist/adapters/evm/plugin.js.map +1 -0
- package/dist/adapters/evm/presets.d.ts +2 -0
- package/dist/adapters/evm/presets.js +105 -0
- package/dist/adapters/evm/presets.js.map +1 -0
- package/dist/adapters/evm/proofs.d.ts +19 -0
- package/dist/adapters/evm/proofs.js +370 -0
- package/dist/adapters/evm/proofs.js.map +1 -0
- package/dist/adapters/evm/rawtx.d.ts +25 -0
- package/dist/adapters/evm/rawtx.js +176 -0
- package/dist/adapters/evm/rawtx.js.map +1 -0
- package/dist/adapters/evm/reader.d.ts +83 -0
- package/dist/adapters/evm/reader.js +326 -0
- package/dist/adapters/evm/reader.js.map +1 -0
- package/dist/adapters/evm/rpc.d.ts +39 -0
- package/dist/adapters/evm/rpc.js +152 -0
- package/dist/adapters/evm/rpc.js.map +1 -0
- package/dist/adapters/evm/tokens.d.ts +10 -0
- package/dist/adapters/evm/tokens.js +23 -0
- package/dist/adapters/evm/tokens.js.map +1 -0
- package/dist/adapters/evm/types.d.ts +265 -0
- package/dist/{type/account.js → adapters/evm/types.js} +1 -1
- package/dist/adapters/evm/types.js.map +1 -0
- package/dist/adapters/evm/web3-client.d.ts +26 -0
- package/dist/adapters/evm/web3-client.js +176 -0
- package/dist/adapters/evm/web3-client.js.map +1 -0
- package/dist/adapters/solana/builder.d.ts +18 -0
- package/dist/adapters/solana/builder.js +556 -0
- package/dist/adapters/solana/builder.js.map +1 -0
- package/dist/adapters/solana/chains.d.ts +13 -0
- package/dist/adapters/solana/chains.js +37 -0
- package/dist/adapters/solana/chains.js.map +1 -0
- package/dist/adapters/solana/decode.d.ts +111 -0
- package/dist/adapters/solana/decode.js +595 -0
- package/dist/adapters/solana/decode.js.map +1 -0
- package/dist/adapters/solana/driver.d.ts +15 -0
- package/dist/adapters/solana/driver.js +72 -0
- package/dist/adapters/solana/driver.js.map +1 -0
- package/dist/adapters/solana/errors.d.ts +36 -0
- package/dist/adapters/solana/errors.js +154 -0
- package/dist/adapters/solana/errors.js.map +1 -0
- package/dist/adapters/solana/fees.d.ts +77 -0
- package/dist/adapters/solana/fees.js +214 -0
- package/dist/adapters/solana/fees.js.map +1 -0
- package/dist/adapters/solana/heights.d.ts +47 -0
- package/dist/adapters/solana/heights.js +185 -0
- package/dist/adapters/solana/heights.js.map +1 -0
- package/dist/adapters/solana/history.d.ts +10 -0
- package/dist/adapters/solana/history.js +71 -0
- package/dist/adapters/solana/history.js.map +1 -0
- package/dist/adapters/solana/index.d.ts +16 -0
- package/dist/adapters/solana/index.js +9 -0
- package/dist/adapters/solana/index.js.map +1 -0
- package/dist/adapters/solana/keys.d.ts +13 -0
- package/dist/adapters/solana/keys.js +69 -0
- package/dist/adapters/solana/keys.js.map +1 -0
- package/dist/adapters/solana/message.d.ts +15 -0
- package/dist/adapters/solana/message.js +120 -0
- package/dist/adapters/solana/message.js.map +1 -0
- package/dist/adapters/solana/network.d.ts +24 -0
- package/dist/adapters/solana/network.js +95 -0
- package/dist/adapters/solana/network.js.map +1 -0
- package/dist/adapters/solana/plugin.d.ts +18 -0
- package/dist/adapters/solana/plugin.js +44 -0
- package/dist/adapters/solana/plugin.js.map +1 -0
- package/dist/adapters/solana/presets.d.ts +2 -0
- package/dist/adapters/solana/presets.js +77 -0
- package/dist/adapters/solana/presets.js.map +1 -0
- package/dist/adapters/solana/programs.d.ts +44 -0
- package/dist/adapters/solana/programs.js +159 -0
- package/dist/adapters/solana/programs.js.map +1 -0
- package/dist/adapters/solana/proofs.d.ts +56 -0
- package/dist/adapters/solana/proofs.js +540 -0
- package/dist/adapters/solana/proofs.js.map +1 -0
- package/dist/adapters/solana/reader.d.ts +82 -0
- package/dist/adapters/solana/reader.js +326 -0
- package/dist/adapters/solana/reader.js.map +1 -0
- package/dist/adapters/solana/rpc.d.ts +102 -0
- package/dist/adapters/solana/rpc.js +301 -0
- package/dist/adapters/solana/rpc.js.map +1 -0
- package/dist/adapters/solana/tokens.d.ts +7 -0
- package/dist/adapters/solana/tokens.js +19 -0
- package/dist/adapters/solana/tokens.js.map +1 -0
- package/dist/adapters/solana/types.d.ts +124 -0
- package/dist/{type/contract.js → adapters/solana/types.js} +1 -1
- package/dist/adapters/solana/types.js.map +1 -0
- package/dist/adapters/solana/web3.d.ts +5 -0
- package/dist/adapters/solana/web3.js +61 -0
- package/dist/adapters/solana/web3.js.map +1 -0
- package/dist/adapters/solana/wire.d.ts +62 -0
- package/dist/adapters/solana/wire.js +168 -0
- package/dist/adapters/solana/wire.js.map +1 -0
- package/dist/adapters/ton/address.d.ts +43 -0
- package/dist/adapters/ton/address.js +168 -0
- package/dist/adapters/ton/address.js.map +1 -0
- package/dist/adapters/ton/api.d.ts +344 -0
- package/dist/adapters/ton/api.js +942 -0
- package/dist/adapters/ton/api.js.map +1 -0
- package/dist/adapters/ton/builder.d.ts +18 -0
- package/dist/adapters/ton/builder.js +701 -0
- package/dist/adapters/ton/builder.js.map +1 -0
- package/dist/adapters/ton/chains.d.ts +16 -0
- package/dist/adapters/ton/chains.js +39 -0
- package/dist/adapters/ton/chains.js.map +1 -0
- package/dist/adapters/ton/decode.d.ts +43 -0
- package/dist/adapters/ton/decode.js +219 -0
- package/dist/adapters/ton/decode.js.map +1 -0
- package/dist/adapters/ton/driver.d.ts +10 -0
- package/dist/adapters/ton/driver.js +117 -0
- package/dist/adapters/ton/driver.js.map +1 -0
- package/dist/adapters/ton/errors.d.ts +36 -0
- package/dist/adapters/ton/errors.js +89 -0
- package/dist/adapters/ton/errors.js.map +1 -0
- package/dist/adapters/ton/fees.d.ts +28 -0
- package/dist/adapters/ton/fees.js +121 -0
- package/dist/adapters/ton/fees.js.map +1 -0
- package/dist/adapters/ton/index.d.ts +16 -0
- package/dist/adapters/ton/index.js +9 -0
- package/dist/adapters/ton/index.js.map +1 -0
- package/dist/adapters/ton/messages.d.ts +157 -0
- package/dist/adapters/ton/messages.js +397 -0
- package/dist/adapters/ton/messages.js.map +1 -0
- package/dist/adapters/ton/native-client.d.ts +10 -0
- package/dist/adapters/ton/native-client.js +47 -0
- package/dist/adapters/ton/native-client.js.map +1 -0
- package/dist/adapters/ton/network.d.ts +58 -0
- package/dist/adapters/ton/network.js +207 -0
- package/dist/adapters/ton/network.js.map +1 -0
- package/dist/adapters/ton/plugin.d.ts +24 -0
- package/dist/adapters/ton/plugin.js +57 -0
- package/dist/adapters/ton/plugin.js.map +1 -0
- package/dist/adapters/ton/presets.d.ts +6 -0
- package/dist/adapters/ton/presets.js +94 -0
- package/dist/adapters/ton/presets.js.map +1 -0
- package/dist/adapters/ton/proofs.d.ts +66 -0
- package/dist/adapters/ton/proofs.js +755 -0
- package/dist/adapters/ton/proofs.js.map +1 -0
- package/dist/adapters/ton/reader.d.ts +235 -0
- package/dist/adapters/ton/reader.js +976 -0
- package/dist/adapters/ton/reader.js.map +1 -0
- package/dist/adapters/ton/tokens.d.ts +10 -0
- package/dist/adapters/ton/tokens.js +27 -0
- package/dist/adapters/ton/tokens.js.map +1 -0
- package/dist/adapters/ton/trace.d.ts +74 -0
- package/dist/adapters/ton/trace.js +303 -0
- package/dist/adapters/ton/trace.js.map +1 -0
- package/dist/adapters/ton/types.d.ts +105 -0
- package/dist/{type/transact.js → adapters/ton/types.js} +1 -1
- package/dist/adapters/ton/types.js.map +1 -0
- package/dist/adapters/ton/wallets.d.ts +86 -0
- package/dist/adapters/ton/wallets.js +373 -0
- package/dist/adapters/ton/wallets.js.map +1 -0
- package/dist/adapters/tron/abi.d.ts +41 -0
- package/dist/adapters/tron/abi.js +112 -0
- package/dist/adapters/tron/abi.js.map +1 -0
- package/dist/adapters/tron/address.d.ts +20 -0
- package/dist/adapters/tron/address.js +110 -0
- package/dist/adapters/tron/address.js.map +1 -0
- package/dist/adapters/tron/builder.d.ts +12 -0
- package/dist/adapters/tron/builder.js +569 -0
- package/dist/adapters/tron/builder.js.map +1 -0
- package/dist/adapters/tron/chains.d.ts +12 -0
- package/dist/adapters/tron/chains.js +35 -0
- package/dist/adapters/tron/chains.js.map +1 -0
- package/dist/adapters/tron/codec.d.ts +10 -0
- package/dist/adapters/tron/codec.js +322 -0
- package/dist/adapters/tron/codec.js.map +1 -0
- package/dist/adapters/tron/decode.d.ts +52 -0
- package/dist/adapters/tron/decode.js +280 -0
- package/dist/adapters/tron/decode.js.map +1 -0
- package/dist/adapters/tron/driver.d.ts +12 -0
- package/dist/adapters/tron/driver.js +106 -0
- package/dist/adapters/tron/driver.js.map +1 -0
- package/dist/adapters/tron/errors.d.ts +74 -0
- package/dist/adapters/tron/errors.js +261 -0
- package/dist/adapters/tron/errors.js.map +1 -0
- package/dist/adapters/tron/fees.d.ts +49 -0
- package/dist/adapters/tron/fees.js +166 -0
- package/dist/adapters/tron/fees.js.map +1 -0
- package/dist/adapters/tron/http.d.ts +173 -0
- package/dist/adapters/tron/http.js +729 -0
- package/dist/adapters/tron/http.js.map +1 -0
- package/dist/adapters/tron/index.d.ts +16 -0
- package/dist/adapters/tron/index.js +15 -0
- package/dist/adapters/tron/index.js.map +1 -0
- package/dist/adapters/tron/network.d.ts +44 -0
- package/dist/adapters/tron/network.js +163 -0
- package/dist/adapters/tron/network.js.map +1 -0
- package/dist/adapters/tron/plugin.d.ts +17 -0
- package/dist/adapters/tron/plugin.js +39 -0
- package/dist/adapters/tron/plugin.js.map +1 -0
- package/dist/adapters/tron/presets.d.ts +5 -0
- package/dist/adapters/tron/presets.js +68 -0
- package/dist/adapters/tron/presets.js.map +1 -0
- package/dist/adapters/tron/proofs.d.ts +80 -0
- package/dist/adapters/tron/proofs.js +371 -0
- package/dist/adapters/tron/proofs.js.map +1 -0
- package/dist/adapters/tron/protobuf.d.ts +36 -0
- package/dist/adapters/tron/protobuf.js +90 -0
- package/dist/adapters/tron/protobuf.js.map +1 -0
- package/dist/adapters/tron/reader.d.ts +57 -0
- package/dist/adapters/tron/reader.js +220 -0
- package/dist/adapters/tron/reader.js.map +1 -0
- package/dist/adapters/tron/tokens.d.ts +9 -0
- package/dist/adapters/tron/tokens.js +14 -0
- package/dist/adapters/tron/tokens.js.map +1 -0
- package/dist/adapters/tron/types.d.ts +166 -0
- package/dist/adapters/tron/types.js +3 -0
- package/dist/adapters/tron/types.js.map +1 -0
- package/dist/adapters/utxo/address.d.ts +51 -0
- package/dist/adapters/utxo/address.js +341 -0
- package/dist/adapters/utxo/address.js.map +1 -0
- package/dist/adapters/utxo/builder.d.ts +35 -0
- package/dist/adapters/utxo/builder.js +380 -0
- package/dist/adapters/utxo/builder.js.map +1 -0
- package/dist/adapters/utxo/chains.d.ts +17 -0
- package/dist/adapters/utxo/chains.js +100 -0
- package/dist/adapters/utxo/chains.js.map +1 -0
- package/dist/adapters/utxo/codec.d.ts +120 -0
- package/dist/adapters/utxo/codec.js +408 -0
- package/dist/adapters/utxo/codec.js.map +1 -0
- package/dist/adapters/utxo/coinselect.d.ts +48 -0
- package/dist/adapters/utxo/coinselect.js +131 -0
- package/dist/adapters/utxo/coinselect.js.map +1 -0
- package/dist/adapters/utxo/context.d.ts +63 -0
- package/dist/adapters/utxo/context.js +125 -0
- package/dist/adapters/utxo/context.js.map +1 -0
- package/dist/adapters/utxo/decode.d.ts +22 -0
- package/dist/adapters/utxo/decode.js +121 -0
- package/dist/adapters/utxo/decode.js.map +1 -0
- package/dist/adapters/utxo/driver.d.ts +16 -0
- package/dist/adapters/utxo/driver.js +79 -0
- package/dist/adapters/utxo/driver.js.map +1 -0
- package/dist/adapters/utxo/ecc.d.ts +9 -0
- package/dist/adapters/utxo/ecc.js +26 -0
- package/dist/adapters/utxo/ecc.js.map +1 -0
- package/dist/adapters/utxo/errors.d.ts +52 -0
- package/dist/adapters/utxo/errors.js +191 -0
- package/dist/adapters/utxo/errors.js.map +1 -0
- package/dist/adapters/utxo/esplora.d.ts +100 -0
- package/dist/adapters/utxo/esplora.js +498 -0
- package/dist/adapters/utxo/esplora.js.map +1 -0
- package/dist/adapters/utxo/fees.d.ts +41 -0
- package/dist/adapters/utxo/fees.js +125 -0
- package/dist/adapters/utxo/fees.js.map +1 -0
- package/dist/adapters/utxo/index.d.ts +17 -0
- package/dist/adapters/utxo/index.js +8 -0
- package/dist/adapters/utxo/index.js.map +1 -0
- package/dist/adapters/utxo/network.d.ts +50 -0
- package/dist/adapters/utxo/network.js +165 -0
- package/dist/adapters/utxo/network.js.map +1 -0
- package/dist/adapters/utxo/plugin.d.ts +17 -0
- package/dist/adapters/utxo/plugin.js +41 -0
- package/dist/adapters/utxo/plugin.js.map +1 -0
- package/dist/adapters/utxo/presets.d.ts +12 -0
- package/dist/adapters/utxo/presets.js +47 -0
- package/dist/adapters/utxo/presets.js.map +1 -0
- package/dist/adapters/utxo/preview.d.ts +3 -0
- package/dist/adapters/utxo/preview.js +65 -0
- package/dist/adapters/utxo/preview.js.map +1 -0
- package/dist/adapters/utxo/proofs.d.ts +66 -0
- package/dist/adapters/utxo/proofs.js +469 -0
- package/dist/adapters/utxo/proofs.js.map +1 -0
- package/dist/adapters/utxo/rawblock.d.ts +46 -0
- package/dist/adapters/utxo/rawblock.js +159 -0
- package/dist/adapters/utxo/rawblock.js.map +1 -0
- package/dist/adapters/utxo/rawtx.d.ts +73 -0
- package/dist/adapters/utxo/rawtx.js +264 -0
- package/dist/adapters/utxo/rawtx.js.map +1 -0
- package/dist/adapters/utxo/reader.d.ts +36 -0
- package/dist/adapters/utxo/reader.js +265 -0
- package/dist/adapters/utxo/reader.js.map +1 -0
- package/dist/adapters/utxo/sdk.d.ts +18 -0
- package/dist/adapters/utxo/sdk.js +17 -0
- package/dist/adapters/utxo/sdk.js.map +1 -0
- package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
- package/dist/adapters/utxo/signed-psbt.js +428 -0
- package/dist/adapters/utxo/signed-psbt.js.map +1 -0
- package/dist/adapters/utxo/spend.d.ts +59 -0
- package/dist/adapters/utxo/spend.js +230 -0
- package/dist/adapters/utxo/spend.js.map +1 -0
- package/dist/adapters/utxo/types.d.ts +167 -0
- package/dist/adapters/utxo/types.js +3 -0
- package/dist/adapters/utxo/types.js.map +1 -0
- package/dist/core/assets/service.d.ts +18 -0
- package/dist/core/assets/service.js +69 -0
- package/dist/core/assets/service.js.map +1 -0
- package/dist/core/blockchain/default-ref.d.ts +4 -0
- package/dist/core/blockchain/default-ref.js +16 -0
- package/dist/core/blockchain/default-ref.js.map +1 -0
- package/dist/core/blockchain/handle.d.ts +179 -0
- package/dist/core/blockchain/handle.js +579 -0
- package/dist/core/blockchain/handle.js.map +1 -0
- package/dist/core/blockchain/internal.d.ts +19 -0
- package/dist/core/blockchain/internal.js +16 -0
- package/dist/core/blockchain/internal.js.map +1 -0
- package/dist/core/blockchain/mapping.d.ts +22 -0
- package/dist/core/blockchain/mapping.js +136 -0
- package/dist/core/blockchain/mapping.js.map +1 -0
- package/dist/core/config/env.d.ts +8 -0
- package/dist/core/config/env.js +60 -0
- package/dist/core/config/env.js.map +1 -0
- package/dist/core/config/merge.d.ts +26 -0
- package/dist/core/config/merge.js +144 -0
- package/dist/core/config/merge.js.map +1 -0
- package/dist/core/config/resolve.d.ts +12 -0
- package/dist/core/config/resolve.js +251 -0
- package/dist/core/config/resolve.js.map +1 -0
- package/dist/core/config/types.d.ts +180 -0
- package/dist/core/config/types.js +3 -0
- package/dist/core/config/types.js.map +1 -0
- package/dist/core/container/builtins.d.ts +4 -0
- package/dist/core/container/builtins.js +13 -0
- package/dist/core/container/builtins.js.map +1 -0
- package/dist/core/container/container.d.ts +62 -0
- package/dist/core/container/container.js +500 -0
- package/dist/core/container/container.js.map +1 -0
- package/dist/core/container/default.d.ts +15 -0
- package/dist/core/container/default.js +70 -0
- package/dist/core/container/default.js.map +1 -0
- package/dist/core/container/internals.d.ts +54 -0
- package/dist/core/container/internals.js +21 -0
- package/dist/core/container/internals.js.map +1 -0
- package/dist/core/container/pool.d.ts +27 -0
- package/dist/core/container/pool.js +77 -0
- package/dist/core/container/pool.js.map +1 -0
- package/dist/core/driver/types.d.ts +379 -0
- package/dist/core/driver/types.js +3 -0
- package/dist/core/driver/types.js.map +1 -0
- package/dist/core/errors/codes.d.ts +163 -0
- package/dist/core/errors/codes.js +53 -0
- package/dist/core/errors/codes.js.map +1 -0
- package/dist/core/errors/error.d.ts +66 -0
- package/dist/core/errors/error.js +129 -0
- package/dist/core/errors/error.js.map +1 -0
- package/dist/core/events/bus.d.ts +12 -0
- package/dist/core/events/bus.js +46 -0
- package/dist/core/events/bus.js.map +1 -0
- package/dist/core/events/logger.d.ts +13 -0
- package/dist/core/events/logger.js +42 -0
- package/dist/core/events/logger.js.map +1 -0
- package/dist/core/events/types.d.ts +131 -0
- package/dist/core/events/types.js +3 -0
- package/dist/core/events/types.js.map +1 -0
- package/dist/core/lifecycle/engine-rules.d.ts +106 -0
- package/dist/core/lifecycle/engine-rules.js +267 -0
- package/dist/core/lifecycle/engine-rules.js.map +1 -0
- package/dist/core/lifecycle/engine.d.ts +502 -0
- package/dist/core/lifecycle/engine.js +1750 -0
- package/dist/core/lifecycle/engine.js.map +1 -0
- package/dist/core/lifecycle/evaluate.d.ts +19 -0
- package/dist/core/lifecycle/evaluate.js +77 -0
- package/dist/core/lifecycle/evaluate.js.map +1 -0
- package/dist/core/lifecycle/intent.d.ts +11 -0
- package/dist/core/lifecycle/intent.js +88 -0
- package/dist/core/lifecycle/intent.js.map +1 -0
- package/dist/core/lifecycle/monitor.d.ts +138 -0
- package/dist/core/lifecycle/monitor.js +616 -0
- package/dist/core/lifecycle/monitor.js.map +1 -0
- package/dist/core/lifecycle/observations.d.ts +17 -0
- package/dist/core/lifecycle/observations.js +59 -0
- package/dist/core/lifecycle/observations.js.map +1 -0
- package/dist/core/lifecycle/reconcile.d.ts +58 -0
- package/dist/core/lifecycle/reconcile.js +112 -0
- package/dist/core/lifecycle/reconcile.js.map +1 -0
- package/dist/core/lifecycle/views.d.ts +49 -0
- package/dist/core/lifecycle/views.js +57 -0
- package/dist/core/lifecycle/views.js.map +1 -0
- package/dist/core/lifecycle/workers.d.ts +88 -0
- package/dist/core/lifecycle/workers.js +347 -0
- package/dist/core/lifecycle/workers.js.map +1 -0
- package/dist/core/model/address.d.ts +32 -0
- package/dist/core/model/address.js +43 -0
- package/dist/core/model/address.js.map +1 -0
- package/dist/core/model/amount.d.ts +25 -0
- package/dist/core/model/amount.js +102 -0
- package/dist/core/model/amount.js.map +1 -0
- package/dist/core/model/asset.d.ts +28 -0
- package/dist/core/model/asset.js +47 -0
- package/dist/core/model/asset.js.map +1 -0
- package/dist/core/model/capability.d.ts +3 -0
- package/dist/core/model/capability.js +18 -0
- package/dist/core/model/capability.js.map +1 -0
- package/dist/core/model/chain.d.ts +63 -0
- package/dist/core/model/chain.js +8 -0
- package/dist/core/model/chain.js.map +1 -0
- package/dist/core/model/fee.d.ts +36 -0
- package/dist/core/model/fee.js +17 -0
- package/dist/core/model/fee.js.map +1 -0
- package/dist/core/model/ids.d.ts +38 -0
- package/dist/core/model/ids.js +14 -0
- package/dist/core/model/ids.js.map +1 -0
- package/dist/core/model/intent.d.ts +63 -0
- package/dist/core/model/intent.js +81 -0
- package/dist/core/model/intent.js.map +1 -0
- package/dist/core/model/ordering.d.ts +28 -0
- package/dist/core/model/ordering.js +29 -0
- package/dist/core/model/ordering.js.map +1 -0
- package/dist/core/model/transaction.d.ts +123 -0
- package/dist/{type/lib-types.js → core/model/transaction.js} +1 -1
- package/dist/core/model/transaction.js.map +1 -0
- package/dist/core/observe/scanner.d.ts +135 -0
- package/dist/core/observe/scanner.js +358 -0
- package/dist/core/observe/scanner.js.map +1 -0
- package/dist/core/ordering/reservations.d.ts +16 -0
- package/dist/core/ordering/reservations.js +53 -0
- package/dist/core/ordering/reservations.js.map +1 -0
- package/dist/core/ordering/sequence.d.ts +61 -0
- package/dist/core/ordering/sequence.js +155 -0
- package/dist/core/ordering/sequence.js.map +1 -0
- package/dist/core/registry/adapters.d.ts +10 -0
- package/dist/core/registry/adapters.js +56 -0
- package/dist/core/registry/adapters.js.map +1 -0
- package/dist/core/registry/assets.d.ts +18 -0
- package/dist/core/registry/assets.js +90 -0
- package/dist/core/registry/assets.js.map +1 -0
- package/dist/core/registry/chains.d.ts +10 -0
- package/dist/core/registry/chains.js +80 -0
- package/dist/core/registry/chains.js.map +1 -0
- package/dist/core/registry/plugin.d.ts +41 -0
- package/dist/core/registry/plugin.js +109 -0
- package/dist/core/registry/plugin.js.map +1 -0
- package/dist/core/registry/providers.d.ts +31 -0
- package/dist/core/registry/providers.js +43 -0
- package/dist/core/registry/providers.js.map +1 -0
- package/dist/core/registry/schemes.d.ts +30 -0
- package/dist/core/registry/schemes.js +84 -0
- package/dist/core/registry/schemes.js.map +1 -0
- package/dist/core/secret/fragments.d.ts +33 -0
- package/dist/core/secret/fragments.js +110 -0
- package/dist/core/secret/fragments.js.map +1 -0
- package/dist/core/secret/redact.d.ts +10 -0
- package/dist/core/secret/redact.js +110 -0
- package/dist/core/secret/redact.js.map +1 -0
- package/dist/core/secret/secret.d.ts +14 -0
- package/dist/core/secret/secret.js +42 -0
- package/dist/core/secret/secret.js.map +1 -0
- package/dist/core/signing/callback.d.ts +10 -0
- package/dist/core/signing/callback.js +22 -0
- package/dist/core/signing/callback.js.map +1 -0
- package/dist/core/signing/guard.d.ts +18 -0
- package/dist/core/signing/guard.js +72 -0
- package/dist/core/signing/guard.js.map +1 -0
- package/dist/core/signing/hd.d.ts +36 -0
- package/dist/core/signing/hd.js +167 -0
- package/dist/core/signing/hd.js.map +1 -0
- package/dist/core/signing/local.d.ts +48 -0
- package/dist/core/signing/local.js +190 -0
- package/dist/core/signing/local.js.map +1 -0
- package/dist/core/signing/orchestrator.d.ts +40 -0
- package/dist/core/signing/orchestrator.js +300 -0
- package/dist/core/signing/orchestrator.js.map +1 -0
- package/dist/core/signing/types.d.ts +64 -0
- package/dist/core/signing/types.js +3 -0
- package/dist/core/signing/types.js.map +1 -0
- package/dist/core/signing/wallet.d.ts +48 -0
- package/dist/core/signing/wallet.js +161 -0
- package/dist/core/signing/wallet.js.map +1 -0
- package/dist/core/store/clone.d.ts +25 -0
- package/dist/core/store/clone.js +71 -0
- package/dist/core/store/clone.js.map +1 -0
- package/dist/core/store/format.d.ts +20 -0
- package/dist/core/store/format.js +86 -0
- package/dist/core/store/format.js.map +1 -0
- package/dist/core/store/memory.d.ts +38 -0
- package/dist/core/store/memory.js +325 -0
- package/dist/core/store/memory.js.map +1 -0
- package/dist/core/store/types.d.ts +258 -0
- package/dist/core/store/types.js +119 -0
- package/dist/core/store/types.js.map +1 -0
- package/dist/core/transport/backoff.d.ts +8 -0
- package/dist/core/transport/backoff.js +27 -0
- package/dist/core/transport/backoff.js.map +1 -0
- package/dist/core/transport/circuit.d.ts +25 -0
- package/dist/core/transport/circuit.js +61 -0
- package/dist/core/transport/circuit.js.map +1 -0
- package/dist/core/transport/http-transport.d.ts +30 -0
- package/dist/core/transport/http-transport.js +1703 -0
- package/dist/core/transport/http-transport.js.map +1 -0
- package/dist/core/transport/rate-limit.d.ts +27 -0
- package/dist/core/transport/rate-limit.js +78 -0
- package/dist/core/transport/rate-limit.js.map +1 -0
- package/dist/core/transport/stale-view.d.ts +11 -0
- package/dist/core/transport/stale-view.js +17 -0
- package/dist/core/transport/stale-view.js.map +1 -0
- package/dist/core/transport/types.d.ts +159 -0
- package/dist/core/transport/types.js +6 -0
- package/dist/core/transport/types.js.map +1 -0
- package/dist/core/util/bytes.d.ts +9 -0
- package/dist/core/util/bytes.js +40 -0
- package/dist/core/util/bytes.js.map +1 -0
- package/dist/core/util/clock.d.ts +6 -0
- package/dist/core/util/clock.js +26 -0
- package/dist/core/util/clock.js.map +1 -0
- package/dist/core/util/freeze.d.ts +8 -0
- package/dist/core/util/freeze.js +31 -0
- package/dist/core/util/freeze.js.map +1 -0
- package/dist/core/util/json.d.ts +35 -0
- package/dist/core/util/json.js +174 -0
- package/dist/core/util/json.js.map +1 -0
- package/dist/core/util/names.d.ts +27 -0
- package/dist/core/util/names.js +56 -0
- package/dist/core/util/names.js.map +1 -0
- package/dist/index.d.ts +65 -14
- package/dist/index.js +107 -49
- package/dist/index.js.map +1 -1
- package/dist/native.d.ts +21 -0
- package/dist/native.js +44 -0
- package/dist/native.js.map +1 -0
- package/dist/testing/contracts/api.d.ts +12 -0
- package/dist/testing/contracts/api.js +58 -0
- package/dist/testing/contracts/api.js.map +1 -0
- package/dist/testing/contracts/cursors.d.ts +6 -0
- package/dist/testing/contracts/cursors.js +43 -0
- package/dist/testing/contracts/cursors.js.map +1 -0
- package/dist/testing/contracts/locks.d.ts +10 -0
- package/dist/testing/contracts/locks.js +63 -0
- package/dist/testing/contracts/locks.js.map +1 -0
- package/dist/testing/contracts/operations.d.ts +21 -0
- package/dist/testing/contracts/operations.js +737 -0
- package/dist/testing/contracts/operations.js.map +1 -0
- package/dist/testing/contracts/sequences.d.ts +6 -0
- package/dist/testing/contracts/sequences.js +68 -0
- package/dist/testing/contracts/sequences.js.map +1 -0
- package/dist/testing/env.d.ts +68 -0
- package/dist/testing/env.js +105 -0
- package/dist/testing/env.js.map +1 -0
- package/dist/testing/fake-chain.d.ts +118 -0
- package/dist/testing/fake-chain.js +536 -0
- package/dist/testing/fake-chain.js.map +1 -0
- package/dist/testing/fake-clock.d.ts +15 -0
- package/dist/testing/fake-clock.js +86 -0
- package/dist/testing/fake-clock.js.map +1 -0
- package/dist/testing/fake-driver.d.ts +15 -0
- package/dist/testing/fake-driver.js +458 -0
- package/dist/testing/fake-driver.js.map +1 -0
- package/dist/testing/fake-fetch.d.ts +32 -0
- package/dist/testing/fake-fetch.js +81 -0
- package/dist/testing/fake-fetch.js.map +1 -0
- package/dist/testing/fake-plugin.d.ts +30 -0
- package/dist/testing/fake-plugin.js +66 -0
- package/dist/testing/fake-plugin.js.map +1 -0
- package/dist/testing/faulty-store.d.ts +38 -0
- package/dist/testing/faulty-store.js +71 -0
- package/dist/testing/faulty-store.js.map +1 -0
- package/dist/testing/generation.d.ts +60 -0
- package/dist/testing/generation.js +252 -0
- package/dist/testing/generation.js.map +1 -0
- package/dist/testing/index.d.ts +28 -0
- package/dist/testing/index.js +51 -0
- package/dist/testing/index.js.map +1 -0
- package/package.json +198 -45
- package/dist/libs/eth/account.d.ts +0 -9
- package/dist/libs/eth/account.js +0 -58
- package/dist/libs/eth/account.js.map +0 -1
- package/dist/libs/eth/contract.d.ts +0 -7
- package/dist/libs/eth/contract.js +0 -42
- package/dist/libs/eth/contract.js.map +0 -1
- package/dist/libs/eth/index.d.ts +0 -24
- package/dist/libs/eth/index.js +0 -72
- package/dist/libs/eth/index.js.map +0 -1
- package/dist/libs/eth/transact.d.ts +0 -7
- package/dist/libs/eth/transact.js +0 -26
- package/dist/libs/eth/transact.js.map +0 -1
- package/dist/libs/index.d.ts +0 -2
- package/dist/libs/index.js +0 -19
- package/dist/libs/index.js.map +0 -1
- package/dist/libs/trx/account.d.ts +0 -9
- package/dist/libs/trx/account.js +0 -55
- package/dist/libs/trx/account.js.map +0 -1
- package/dist/libs/trx/contract.d.ts +0 -7
- package/dist/libs/trx/contract.js +0 -27
- package/dist/libs/trx/contract.js.map +0 -1
- package/dist/libs/trx/index.d.ts +0 -22
- package/dist/libs/trx/index.js +0 -64
- package/dist/libs/trx/index.js.map +0 -1
- package/dist/libs/trx/transact.d.ts +0 -7
- package/dist/libs/trx/transact.js +0 -26
- package/dist/libs/trx/transact.js.map +0 -1
- package/dist/tool/common.d.ts +0 -28
- package/dist/tool/common.js +0 -33
- package/dist/tool/common.js.map +0 -1
- package/dist/tool/eth-tools.d.ts +0 -3
- package/dist/tool/eth-tools.js +0 -33
- package/dist/tool/eth-tools.js.map +0 -1
- package/dist/tool/index.d.ts +0 -5
- package/dist/tool/index.js +0 -22
- package/dist/tool/index.js.map +0 -1
- package/dist/tool/logging.d.ts +0 -3
- package/dist/tool/logging.js +0 -11
- package/dist/tool/logging.js.map +0 -1
- package/dist/tool/options.d.ts +0 -6
- package/dist/tool/options.js +0 -41
- package/dist/tool/options.js.map +0 -1
- package/dist/tool/trx-tools.d.ts +0 -3
- package/dist/tool/trx-tools.js +0 -20
- package/dist/tool/trx-tools.js.map +0 -1
- package/dist/type/account.d.ts +0 -9
- package/dist/type/account.js.map +0 -1
- package/dist/type/common.d.ts +0 -18
- package/dist/type/common.js.map +0 -1
- package/dist/type/contract.d.ts +0 -10
- package/dist/type/contract.js.map +0 -1
- package/dist/type/index.d.ts +0 -5
- package/dist/type/index.js +0 -22
- package/dist/type/index.js.map +0 -1
- package/dist/type/lib-types.d.ts +0 -9
- package/dist/type/lib-types.js.map +0 -1
- package/dist/type/transact.d.ts +0 -7
- package/dist/type/transact.js.map +0 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultContainer = defaultContainer;
|
|
4
|
+
exports.configure = configure;
|
|
5
|
+
exports.resetDefaultContainer = resetDefaultContainer;
|
|
6
|
+
const default_ref_1 = require("../blockchain/default-ref");
|
|
7
|
+
const merge_1 = require("../config/merge");
|
|
8
|
+
const container_1 = require("./container");
|
|
9
|
+
const internals_1 = require("./internals");
|
|
10
|
+
let instance;
|
|
11
|
+
let accumulated = {};
|
|
12
|
+
/** Merges an options object field by field, by the same rules as a named map. */
|
|
13
|
+
function perField(base, next) {
|
|
14
|
+
return (0, merge_1.byReference)(base, next);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The same rules as scopes: `undefined` never overrides, and no
|
|
18
|
+
* `__proto__`, `constructor` or `prototype` key is copied into a map.
|
|
19
|
+
*/
|
|
20
|
+
function mergeAioOptions(base, next) {
|
|
21
|
+
const chains = (0, merge_1.byReference)(base.chains, undefined);
|
|
22
|
+
for (const [id, defaults] of Object.entries(next.chains ?? {})) {
|
|
23
|
+
if (defaults === undefined || (0, merge_1.isUnsafeKey)(id))
|
|
24
|
+
continue;
|
|
25
|
+
chains[id] = (0, merge_1.mergeChainDefaults)(Object.hasOwn(chains, id) ? chains[id] : undefined, defaults);
|
|
26
|
+
}
|
|
27
|
+
const defined = Object.fromEntries(Object.entries(next).filter(([, value]) => value !== undefined));
|
|
28
|
+
return {
|
|
29
|
+
...base,
|
|
30
|
+
...defined,
|
|
31
|
+
chains,
|
|
32
|
+
providers: (0, merge_1.byReference)(base.providers, next.providers),
|
|
33
|
+
signers: (0, merge_1.byReference)(base.signers, next.signers),
|
|
34
|
+
wallets: (0, merge_1.byReference)(base.wallets, next.wallets),
|
|
35
|
+
hooks: perField(base.hooks, next.hooks),
|
|
36
|
+
lifecycle: perField(base.lifecycle, next.lifecycle),
|
|
37
|
+
transport: perField(base.transport, next.transport),
|
|
38
|
+
plugins: [...(base.plugins ?? []), ...(next.plugins ?? [])],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** The container behind `Blockchain.create`. Prefer explicit containers for multi-tenant use. */
|
|
42
|
+
function defaultContainer() {
|
|
43
|
+
instance ??= new container_1.CryptoAio(accumulated);
|
|
44
|
+
return instance;
|
|
45
|
+
}
|
|
46
|
+
function definedStores(stores) {
|
|
47
|
+
return Object.fromEntries(Object.entries(stores ?? {}).filter(([, store]) => store !== undefined));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Merges options into the default container. Existing handles keep their frozen config; the
|
|
51
|
+
* stores are carried over key by key (not wholesale) so Operations stay visible even across
|
|
52
|
+
* a `configure()` call that names only some of them. Intended for application startup.
|
|
53
|
+
*
|
|
54
|
+
* Each call starts a new generation of the default container (a new event bus, owner id and
|
|
55
|
+
* driver pool); it never closes the previous one.
|
|
56
|
+
*/
|
|
57
|
+
function configure(options) {
|
|
58
|
+
const previousStores = instance ? (0, internals_1.containerOf)(instance).runtime.stores : undefined;
|
|
59
|
+
const stores = { ...previousStores, ...definedStores(options.stores) };
|
|
60
|
+
accumulated = mergeAioOptions(accumulated, options);
|
|
61
|
+
instance = new container_1.CryptoAio({ ...accumulated, stores });
|
|
62
|
+
return instance;
|
|
63
|
+
}
|
|
64
|
+
/** Forgets the default container (tests). */
|
|
65
|
+
function resetDefaultContainer() {
|
|
66
|
+
instance = undefined;
|
|
67
|
+
accumulated = {};
|
|
68
|
+
}
|
|
69
|
+
(0, default_ref_1.setDefaultBlockchainFactory)((config) => defaultContainer().blockchain(config));
|
|
70
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/core/container/default.ts"],"names":[],"mappings":";;AA+CA,4CAGC;AAgBD,8BAMC;AAGD,sDAGC;AA9ED,2DAAwE;AACxE,2CAA+E;AAG/E,2CAAwC;AACxC,2CAA0C;AAE1C,IAAI,QAA+B,CAAC;AACpC,IAAI,WAAW,GAAe,EAAE,CAAC;AAEjC,iFAAiF;AACjF,SAAS,QAAQ,CAAmB,IAAmB,EAAE,IAAmB;IAE1E,OAAO,IAAA,mBAAW,EAAC,IAA0B,EAAE,IAA0B,CAAM,CAAC;AAClF,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAgB,EAAE,IAAgB;IACzD,MAAM,MAAM,GAAkC,IAAA,mBAAW,EAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClF,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAA,mBAAW,EAAC,EAAE,CAAC;YAAE,SAAS;QACxD,MAAM,CAAC,EAAE,CAAC,GAAG,IAAA,0BAAkB,EAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAClD,QAAQ,CACT,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAClD,CAAC;IAChB,OAAO;QACL,GAAG,IAAI;QACP,GAAG,OAAO;QACV,MAAM;QACN,SAAS,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;QACtD,OAAO,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD,OAAO,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;QACvC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;QACnD,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;QACnD,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,SAAgB,gBAAgB;IAC9B,QAAQ,KAAK,IAAI,qBAAS,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,MAAmC;IACxD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CACrD,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,OAAmB;IAC3C,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,uBAAW,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,MAAM,MAAM,GAAoB,EAAE,GAAG,cAAc,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACxF,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACpD,QAAQ,GAAG,IAAI,qBAAS,CAAC,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6CAA6C;AAC7C,SAAgB,qBAAqB;IACnC,QAAQ,GAAG,SAAS,CAAC;IACrB,WAAW,GAAG,EAAE,CAAC;AACnB,CAAC;AAED,IAAA,yCAA2B,EAAC,CAAC,MAAqB,EAAE,EAAE,CACpD,gBAAgB,EAAE,CAAC,UAAU,CAAC,MAAe,CAAC,CAC/C,CAAC","sourcesContent":["import { setDefaultBlockchainFactory } from '../blockchain/default-ref';\nimport { byReference, isUnsafeKey, mergeChainDefaults } from '../config/merge';\nimport type { AioOptions, ChainDefaults, HandleOptions } from '../config/types';\nimport type { Stores } from '../store/types';\nimport { CryptoAio } from './container';\nimport { containerOf } from './internals';\n\nlet instance: CryptoAio | undefined;\nlet accumulated: AioOptions = {};\n\n/** Merges an options object field by field, by the same rules as a named map. */\nfunction perField<T extends object>(base: T | undefined, next: T | undefined): T {\n type Fields = Readonly<Record<string, unknown>>;\n return byReference(base as Fields | undefined, next as Fields | undefined) as T;\n}\n\n/**\n * The same rules as scopes: `undefined` never overrides, and no\n * `__proto__`, `constructor` or `prototype` key is copied into a map.\n */\nfunction mergeAioOptions(base: AioOptions, next: AioOptions): AioOptions {\n const chains: Record<string, ChainDefaults> = byReference(base.chains, undefined);\n for (const [id, defaults] of Object.entries(next.chains ?? {})) {\n if (defaults === undefined || isUnsafeKey(id)) continue;\n chains[id] = mergeChainDefaults(\n Object.hasOwn(chains, id) ? chains[id] : undefined,\n defaults,\n );\n }\n const defined = Object.fromEntries(\n Object.entries(next).filter(([, value]) => value !== undefined),\n ) as AioOptions;\n return {\n ...base,\n ...defined,\n chains,\n providers: byReference(base.providers, next.providers),\n signers: byReference(base.signers, next.signers),\n wallets: byReference(base.wallets, next.wallets),\n hooks: perField(base.hooks, next.hooks),\n lifecycle: perField(base.lifecycle, next.lifecycle),\n transport: perField(base.transport, next.transport),\n plugins: [...(base.plugins ?? []), ...(next.plugins ?? [])],\n };\n}\n\n/** The container behind `Blockchain.create`. Prefer explicit containers for multi-tenant use. */\nexport function defaultContainer(): CryptoAio {\n instance ??= new CryptoAio(accumulated);\n return instance;\n}\n\nfunction definedStores(stores: Partial<Stores> | undefined): Partial<Stores> {\n return Object.fromEntries(\n Object.entries(stores ?? {}).filter(([, store]) => store !== undefined),\n ) as Partial<Stores>;\n}\n\n/**\n * Merges options into the default container. Existing handles keep their frozen config; the\n * stores are carried over key by key (not wholesale) so Operations stay visible even across\n * a `configure()` call that names only some of them. Intended for application startup.\n *\n * Each call starts a new generation of the default container (a new event bus, owner id and\n * driver pool); it never closes the previous one.\n */\nexport function configure(options: AioOptions): CryptoAio {\n const previousStores = instance ? containerOf(instance).runtime.stores : undefined;\n const stores: Partial<Stores> = { ...previousStores, ...definedStores(options.stores) };\n accumulated = mergeAioOptions(accumulated, options);\n instance = new CryptoAio({ ...accumulated, stores });\n return instance;\n}\n\n/** Forgets the default container (tests). */\nexport function resetDefaultContainer(): void {\n instance = undefined;\n accumulated = {};\n}\n\nsetDefaultBlockchainFactory((config: HandleOptions) =>\n defaultContainer().blockchain(config as never),\n);\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { AssetService } from '../assets/service';
|
|
2
|
+
import type { EffectiveOptions, ScopeOptions } from '../config/types';
|
|
3
|
+
import { StateError } from '../errors/error';
|
|
4
|
+
import type { EventBus } from '../events/bus';
|
|
5
|
+
import type { Logger } from '../events/logger';
|
|
6
|
+
import type { OperationEngine } from '../lifecycle/engine';
|
|
7
|
+
import type { Monitor } from '../lifecycle/monitor';
|
|
8
|
+
import type { Catalogs } from '../registry/plugin';
|
|
9
|
+
import type { SignerDeadline } from '../signing/guard';
|
|
10
|
+
import type { Stores } from '../store/types';
|
|
11
|
+
import type { TransportOptions } from '../transport/types';
|
|
12
|
+
import type { Clock } from '../util/clock';
|
|
13
|
+
import type { DriverPool } from './pool';
|
|
14
|
+
/** State shared by a root container and all of its scopes. */
|
|
15
|
+
export interface RootRuntime {
|
|
16
|
+
readonly namespace: string;
|
|
17
|
+
catalogs: Catalogs;
|
|
18
|
+
envLayer: ScopeOptions;
|
|
19
|
+
readonly env: Readonly<Record<string, string | undefined>>;
|
|
20
|
+
readonly profile?: string;
|
|
21
|
+
readonly clock: Clock;
|
|
22
|
+
readonly log: Logger;
|
|
23
|
+
readonly events: EventBus;
|
|
24
|
+
readonly stores: Stores;
|
|
25
|
+
readonly pool: DriverPool;
|
|
26
|
+
readonly assets: AssetService;
|
|
27
|
+
readonly transport: TransportOptions;
|
|
28
|
+
/** Owner id used for leases and claims taken by this process. */
|
|
29
|
+
readonly owner: string;
|
|
30
|
+
/**
|
|
31
|
+
* Set by the root's `close()`; a closed container refuses handle and `native()` work.
|
|
32
|
+
*/
|
|
33
|
+
closed: boolean;
|
|
34
|
+
/** Aborted by the root's `close()`, which stops every worker loop and recovery. */
|
|
35
|
+
readonly closing: AbortController;
|
|
36
|
+
/** The `close` of every native SDK client handed out, run by the root's `close()`. */
|
|
37
|
+
readonly natives: Set<() => void | Promise<void>>;
|
|
38
|
+
}
|
|
39
|
+
/** What a closed container's handles and `native()` fail with. */
|
|
40
|
+
export declare function closedError(): StateError;
|
|
41
|
+
export interface ContainerInternals {
|
|
42
|
+
readonly runtime: RootRuntime;
|
|
43
|
+
readonly layers: readonly ScopeOptions[];
|
|
44
|
+
readonly isRoot: boolean;
|
|
45
|
+
effective(): EffectiveOptions;
|
|
46
|
+
/** Lazily created per container (scopes have their own hooks and lifecycle settings). */
|
|
47
|
+
engine(): OperationEngine;
|
|
48
|
+
/** Lazily created per container, on top of its engine. */
|
|
49
|
+
monitor(): Monitor;
|
|
50
|
+
/** The bound on a signer's public-key read (this container's `signTimeoutMs`). */
|
|
51
|
+
signerDeadline(): SignerDeadline;
|
|
52
|
+
}
|
|
53
|
+
export declare function bindContainer(container: object, internals: ContainerInternals): void;
|
|
54
|
+
export declare function containerOf(container: object): ContainerInternals;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.closedError = closedError;
|
|
4
|
+
exports.bindContainer = bindContainer;
|
|
5
|
+
exports.containerOf = containerOf;
|
|
6
|
+
const error_1 = require("../errors/error");
|
|
7
|
+
/** What a closed container's handles and `native()` fail with. */
|
|
8
|
+
function closedError() {
|
|
9
|
+
return new error_1.StateError('INVALID_TRANSITION', 'this crypto-aio container is closed');
|
|
10
|
+
}
|
|
11
|
+
const registry = new WeakMap();
|
|
12
|
+
function bindContainer(container, internals) {
|
|
13
|
+
registry.set(container, internals);
|
|
14
|
+
}
|
|
15
|
+
function containerOf(container) {
|
|
16
|
+
const internals = registry.get(container);
|
|
17
|
+
if (!internals)
|
|
18
|
+
throw new error_1.ConfigError('CONFIG_INVALID', 'not a CryptoAio container');
|
|
19
|
+
return internals;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=internals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internals.js","sourceRoot":"","sources":["../../../src/core/container/internals.ts"],"names":[],"mappings":";;AAyCA,kCAEC;AAiBD,sCAEC;AAED,kCAIC;AAlED,2CAA0D;AAsC1D,kEAAkE;AAClE,SAAgB,WAAW;IACzB,OAAO,IAAI,kBAAU,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;AACrF,CAAC;AAeD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAA8B,CAAC;AAE3D,SAAgB,aAAa,CAAC,SAAiB,EAAE,SAA6B;IAC5E,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,WAAW,CAAC,SAAiB;IAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,mBAAW,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;IACrF,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import type { AssetService } from '../assets/service';\nimport type { EffectiveOptions, ScopeOptions } from '../config/types';\nimport { ConfigError, StateError } from '../errors/error';\nimport type { EventBus } from '../events/bus';\nimport type { Logger } from '../events/logger';\nimport type { OperationEngine } from '../lifecycle/engine';\nimport type { Monitor } from '../lifecycle/monitor';\nimport type { Catalogs } from '../registry/plugin';\nimport type { SignerDeadline } from '../signing/guard';\nimport type { Stores } from '../store/types';\nimport type { TransportOptions } from '../transport/types';\nimport type { Clock } from '../util/clock';\nimport type { DriverPool } from './pool';\n\n/** State shared by a root container and all of its scopes. */\nexport interface RootRuntime {\n readonly namespace: string;\n catalogs: Catalogs;\n envLayer: ScopeOptions;\n readonly env: Readonly<Record<string, string | undefined>>;\n readonly profile?: string;\n readonly clock: Clock;\n readonly log: Logger;\n readonly events: EventBus;\n readonly stores: Stores;\n readonly pool: DriverPool;\n readonly assets: AssetService;\n readonly transport: TransportOptions;\n /** Owner id used for leases and claims taken by this process. */\n readonly owner: string;\n /**\n * Set by the root's `close()`; a closed container refuses handle and `native()` work.\n */\n closed: boolean;\n /** Aborted by the root's `close()`, which stops every worker loop and recovery. */\n readonly closing: AbortController;\n /** The `close` of every native SDK client handed out, run by the root's `close()`. */\n readonly natives: Set<() => void | Promise<void>>;\n}\n\n/** What a closed container's handles and `native()` fail with. */\nexport function closedError(): StateError {\n return new StateError('INVALID_TRANSITION', 'this crypto-aio container is closed');\n}\n\nexport interface ContainerInternals {\n readonly runtime: RootRuntime;\n readonly layers: readonly ScopeOptions[];\n readonly isRoot: boolean;\n effective(): EffectiveOptions;\n /** Lazily created per container (scopes have their own hooks and lifecycle settings). */\n engine(): OperationEngine;\n /** Lazily created per container, on top of its engine. */\n monitor(): Monitor;\n /** The bound on a signer's public-key read (this container's `signTimeoutMs`). */\n signerDeadline(): SignerDeadline;\n}\n\nconst registry = new WeakMap<object, ContainerInternals>();\n\nexport function bindContainer(container: object, internals: ContainerInternals): void {\n registry.set(container, internals);\n}\n\nexport function containerOf(container: object): ContainerInternals {\n const internals = registry.get(container);\n if (!internals) throw new ConfigError('CONFIG_INVALID', 'not a CryptoAio container');\n return internals;\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ResolvedSelection } from '../config/types';
|
|
2
|
+
import type { ChainDriver } from '../driver/types';
|
|
3
|
+
import type { EventBus } from '../events/bus';
|
|
4
|
+
import type { Logger } from '../events/logger';
|
|
5
|
+
import type { Catalogs } from '../registry/plugin';
|
|
6
|
+
import type { Transport, TransportOptions } from '../transport/types';
|
|
7
|
+
import type { Clock } from '../util/clock';
|
|
8
|
+
export interface PooledDriver {
|
|
9
|
+
readonly driver: ChainDriver;
|
|
10
|
+
readonly transport: Transport;
|
|
11
|
+
readonly indexer?: Transport;
|
|
12
|
+
}
|
|
13
|
+
export interface DriverPoolDeps {
|
|
14
|
+
readonly catalogs: () => Catalogs;
|
|
15
|
+
readonly clock: Clock;
|
|
16
|
+
readonly events: EventBus;
|
|
17
|
+
readonly log: Logger;
|
|
18
|
+
readonly transport: () => TransportOptions;
|
|
19
|
+
}
|
|
20
|
+
/** Shares one driver + transport per (chain, network, library, provider credentials, options). */
|
|
21
|
+
export declare class DriverPool {
|
|
22
|
+
#private;
|
|
23
|
+
private readonly deps;
|
|
24
|
+
constructor(deps: DriverPoolDeps);
|
|
25
|
+
get(selection: ResolvedSelection): Promise<PooledDriver>;
|
|
26
|
+
close(): Promise<void>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DriverPool = void 0;
|
|
4
|
+
const error_1 = require("../errors/error");
|
|
5
|
+
const http_transport_1 = require("../transport/http-transport");
|
|
6
|
+
const bytes_1 = require("../util/bytes");
|
|
7
|
+
/** Shares one driver + transport per (chain, network, library, provider credentials, options). */
|
|
8
|
+
class DriverPool {
|
|
9
|
+
deps;
|
|
10
|
+
#entries = new Map();
|
|
11
|
+
#closed = false;
|
|
12
|
+
constructor(deps) {
|
|
13
|
+
this.deps = deps;
|
|
14
|
+
}
|
|
15
|
+
get(selection) {
|
|
16
|
+
if (this.#closed) {
|
|
17
|
+
return Promise.reject(new error_1.StateError('INVALID_TRANSITION', 'driver pool is closed'));
|
|
18
|
+
}
|
|
19
|
+
let entry = this.#entries.get(selection.poolKey);
|
|
20
|
+
if (!entry) {
|
|
21
|
+
entry = this.#create(selection);
|
|
22
|
+
this.#entries.set(selection.poolKey, entry);
|
|
23
|
+
entry.catch(() => {
|
|
24
|
+
// Only evict THIS entry: a concurrent get() may already have replaced it (e.g. a
|
|
25
|
+
// retry after this one failed), and that newer entry must survive.
|
|
26
|
+
if (this.#entries.get(selection.poolKey) === entry) {
|
|
27
|
+
this.#entries.delete(selection.poolKey);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return entry;
|
|
32
|
+
}
|
|
33
|
+
async close() {
|
|
34
|
+
this.#closed = true;
|
|
35
|
+
const entries = [...this.#entries.values()];
|
|
36
|
+
this.#entries.clear();
|
|
37
|
+
await Promise.allSettled(entries.map(async (entry) => (await entry).driver.close?.()));
|
|
38
|
+
}
|
|
39
|
+
async #create(selection) {
|
|
40
|
+
const factory = await this.deps.catalogs().adapters.load(selection.manifest);
|
|
41
|
+
const root = this.deps.transport();
|
|
42
|
+
// First match wins: the user's per-chain config, the user's root transport option,
|
|
43
|
+
// the plugin network's own, then (left unset) the transport's built-in default.
|
|
44
|
+
const maxLagBlocks = selection.maxLagBlocks ?? root.maxLagBlocks ?? selection.network.maxLagBlocks;
|
|
45
|
+
const options = {
|
|
46
|
+
...root,
|
|
47
|
+
...(maxLagBlocks !== undefined ? { maxLagBlocks } : {}),
|
|
48
|
+
};
|
|
49
|
+
// `poolKey` fingerprints revealed provider URLs and must stay an in-memory map key
|
|
50
|
+
// only (never persisted, emitted or logged); the transport's public id — which flows
|
|
51
|
+
// into every rpc.*/provider.* event — is generated independently of it.
|
|
52
|
+
const id = (0, bytes_1.randomId)('tr');
|
|
53
|
+
const shared = {
|
|
54
|
+
clock: this.deps.clock,
|
|
55
|
+
events: this.deps.events,
|
|
56
|
+
log: this.deps.log.child('transport'),
|
|
57
|
+
options,
|
|
58
|
+
};
|
|
59
|
+
const transport = new http_transport_1.HttpTransport(selection.providers.flatMap((p) => p.endpoints), { ...shared, id });
|
|
60
|
+
const indexer = selection.indexers.length > 0
|
|
61
|
+
? new http_transport_1.HttpTransport(selection.indexers.flatMap((p) => p.endpoints), { ...shared, id: `${id}_idx` })
|
|
62
|
+
: undefined;
|
|
63
|
+
const driver = await factory.create({
|
|
64
|
+
chain: selection.chain,
|
|
65
|
+
network: selection.network,
|
|
66
|
+
library: selection.library,
|
|
67
|
+
transport,
|
|
68
|
+
...(indexer ? { indexer } : {}),
|
|
69
|
+
clock: this.deps.clock,
|
|
70
|
+
log: this.deps.log.child(selection.chain.id),
|
|
71
|
+
options: selection.options,
|
|
72
|
+
});
|
|
73
|
+
return { driver, transport, ...(indexer ? { indexer } : {}) };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.DriverPool = DriverPool;
|
|
77
|
+
//# sourceMappingURL=pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../src/core/container/pool.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ResolvedSelection } from '../config/types';\nimport type { ChainDriver } from '../driver/types';\nimport { StateError } from '../errors/error';\nimport type { EventBus } from '../events/bus';\nimport type { Logger } from '../events/logger';\nimport type { Catalogs } from '../registry/plugin';\nimport { HttpTransport } from '../transport/http-transport';\nimport type { Transport, TransportOptions } from '../transport/types';\nimport { randomId } from '../util/bytes';\nimport type { Clock } from '../util/clock';\n\nexport interface PooledDriver {\n readonly driver: ChainDriver;\n readonly transport: Transport;\n readonly indexer?: Transport;\n}\n\nexport interface DriverPoolDeps {\n readonly catalogs: () => Catalogs;\n readonly clock: Clock;\n readonly events: EventBus;\n readonly log: Logger;\n readonly transport: () => TransportOptions;\n}\n\n/** Shares one driver + transport per (chain, network, library, provider credentials, options). */\nexport class DriverPool {\n readonly #entries = new Map<string, Promise<PooledDriver>>();\n #closed = false;\n\n constructor(private readonly deps: DriverPoolDeps) {}\n\n get(selection: ResolvedSelection): Promise<PooledDriver> {\n if (this.#closed) {\n return Promise.reject(\n new StateError('INVALID_TRANSITION', 'driver pool is closed'),\n );\n }\n let entry = this.#entries.get(selection.poolKey);\n if (!entry) {\n entry = this.#create(selection);\n this.#entries.set(selection.poolKey, entry);\n entry.catch(() => {\n // Only evict THIS entry: a concurrent get() may already have replaced it (e.g. a\n // retry after this one failed), and that newer entry must survive.\n if (this.#entries.get(selection.poolKey) === entry) {\n this.#entries.delete(selection.poolKey);\n }\n });\n }\n return entry;\n }\n\n async close(): Promise<void> {\n this.#closed = true;\n const entries = [...this.#entries.values()];\n this.#entries.clear();\n await Promise.allSettled(\n entries.map(async (entry) => (await entry).driver.close?.()),\n );\n }\n\n async #create(selection: ResolvedSelection): Promise<PooledDriver> {\n const factory = await this.deps.catalogs().adapters.load(selection.manifest);\n const root = this.deps.transport();\n // First match wins: the user's per-chain config, the user's root transport option,\n // the plugin network's own, then (left unset) the transport's built-in default.\n const maxLagBlocks =\n selection.maxLagBlocks ?? root.maxLagBlocks ?? selection.network.maxLagBlocks;\n const options: TransportOptions = {\n ...root,\n ...(maxLagBlocks !== undefined ? { maxLagBlocks } : {}),\n };\n // `poolKey` fingerprints revealed provider URLs and must stay an in-memory map key\n // only (never persisted, emitted or logged); the transport's public id — which flows\n // into every rpc.*/provider.* event — is generated independently of it.\n const id = randomId('tr');\n const shared = {\n clock: this.deps.clock,\n events: this.deps.events,\n log: this.deps.log.child('transport'),\n options,\n };\n const transport = new HttpTransport(\n selection.providers.flatMap((p) => p.endpoints),\n { ...shared, id },\n );\n const indexer =\n selection.indexers.length > 0\n ? new HttpTransport(\n selection.indexers.flatMap((p) => p.endpoints),\n { ...shared, id: `${id}_idx` },\n )\n : undefined;\n const driver = await factory.create({\n chain: selection.chain,\n network: selection.network,\n library: selection.library,\n transport,\n ...(indexer ? { indexer } : {}),\n clock: this.deps.clock,\n log: this.deps.log.child(selection.chain.id),\n options: selection.options,\n });\n return { driver, transport, ...(indexer ? { indexer } : {}) };\n }\n}\n"]}
|