@antseed/cli 0.1.179 → 0.1.180
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/buyer-identities/store.d.ts +39 -2
- package/dist/buyer-identities/store.d.ts.map +1 -1
- package/dist/buyer-identities/store.js +99 -10
- package/dist/buyer-identities/store.js.map +1 -1
- package/dist/cli/commands/buyer/identity.d.ts +3 -1
- package/dist/cli/commands/buyer/identity.d.ts.map +1 -1
- package/dist/cli/commands/buyer/identity.js +55 -8
- package/dist/cli/commands/buyer/identity.js.map +1 -1
- package/dist/cli/commands/buyer/identity.test.d.ts +2 -0
- package/dist/cli/commands/buyer/identity.test.d.ts.map +1 -0
- package/dist/cli/commands/buyer/identity.test.js +168 -0
- package/dist/cli/commands/buyer/identity.test.js.map +1 -0
- package/dist/cli/commands/buyer/set-authorized-wallet.d.ts +10 -0
- package/dist/cli/commands/buyer/set-authorized-wallet.d.ts.map +1 -1
- package/dist/cli/commands/buyer/set-authorized-wallet.js +26 -4
- package/dist/cli/commands/buyer/set-authorized-wallet.js.map +1 -1
- package/dist/cli/commands/buyer/set-authorized-wallet.test.js +37 -2
- package/dist/cli/commands/buyer/set-authorized-wallet.test.js.map +1 -1
- package/dist/cli/commands/buyer/start.d.ts +15 -0
- package/dist/cli/commands/buyer/start.d.ts.map +1 -1
- package/dist/cli/commands/buyer/start.js +158 -48
- package/dist/cli/commands/buyer/start.js.map +1 -1
- package/dist/cli/commands/buyer/start.test.js +16 -1
- package/dist/cli/commands/buyer/start.test.js.map +1 -1
- package/dist/cli/commands/chat.d.ts +3 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +189 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/gateway/activity.d.ts +15 -0
- package/dist/cli/commands/gateway/activity.d.ts.map +1 -0
- package/dist/cli/commands/gateway/activity.js +233 -0
- package/dist/cli/commands/gateway/activity.js.map +1 -0
- package/dist/cli/commands/gateway/admin-token.d.ts +3 -0
- package/dist/cli/commands/gateway/admin-token.d.ts.map +1 -0
- package/dist/cli/commands/gateway/admin-token.js +90 -0
- package/dist/cli/commands/gateway/admin-token.js.map +1 -0
- package/dist/cli/commands/gateway/console-link.d.ts +20 -0
- package/dist/cli/commands/gateway/console-link.d.ts.map +1 -0
- package/dist/cli/commands/gateway/console-link.js +92 -0
- package/dist/cli/commands/gateway/console-link.js.map +1 -0
- package/dist/cli/commands/gateway/gateway-commands.test.d.ts +2 -0
- package/dist/cli/commands/gateway/gateway-commands.test.d.ts.map +1 -0
- package/dist/cli/commands/gateway/gateway-commands.test.js +230 -0
- package/dist/cli/commands/gateway/gateway-commands.test.js.map +1 -0
- package/dist/cli/commands/gateway/gateway-console-commands.test.d.ts +2 -0
- package/dist/cli/commands/gateway/gateway-console-commands.test.d.ts.map +1 -0
- package/dist/cli/commands/gateway/gateway-console-commands.test.js +373 -0
- package/dist/cli/commands/gateway/gateway-console-commands.test.js.map +1 -0
- package/dist/cli/commands/gateway/index.d.ts +8 -0
- package/dist/cli/commands/gateway/index.d.ts.map +1 -1
- package/dist/cli/commands/gateway/index.js +93 -14
- package/dist/cli/commands/gateway/index.js.map +1 -1
- package/dist/cli/commands/gateway/key.d.ts +4 -0
- package/dist/cli/commands/gateway/key.d.ts.map +1 -1
- package/dist/cli/commands/gateway/key.js +297 -182
- package/dist/cli/commands/gateway/key.js.map +1 -1
- package/dist/cli/commands/gateway/member.d.ts +3 -0
- package/dist/cli/commands/gateway/member.d.ts.map +1 -0
- package/dist/cli/commands/gateway/member.js +302 -0
- package/dist/cli/commands/gateway/member.js.map +1 -0
- package/dist/cli/commands/gateway/migrate.d.ts +18 -0
- package/dist/cli/commands/gateway/migrate.d.ts.map +1 -0
- package/dist/cli/commands/gateway/migrate.js +158 -0
- package/dist/cli/commands/gateway/migrate.js.map +1 -0
- package/dist/cli/commands/gateway/operator.d.ts +11 -0
- package/dist/cli/commands/gateway/operator.d.ts.map +1 -0
- package/dist/cli/commands/gateway/operator.js +199 -0
- package/dist/cli/commands/gateway/operator.js.map +1 -0
- package/dist/cli/commands/gateway/operator.test.d.ts +2 -0
- package/dist/cli/commands/gateway/operator.test.d.ts.map +1 -0
- package/dist/cli/commands/gateway/operator.test.js +151 -0
- package/dist/cli/commands/gateway/operator.test.js.map +1 -0
- package/dist/cli/commands/gateway/peer-list.d.ts +3 -0
- package/dist/cli/commands/gateway/peer-list.d.ts.map +1 -0
- package/dist/cli/commands/gateway/peer-list.js +107 -0
- package/dist/cli/commands/gateway/peer-list.js.map +1 -0
- package/dist/cli/commands/gateway/policy-options.d.ts +23 -0
- package/dist/cli/commands/gateway/policy-options.d.ts.map +1 -0
- package/dist/cli/commands/gateway/policy-options.js +156 -0
- package/dist/cli/commands/gateway/policy-options.js.map +1 -0
- package/dist/cli/commands/gateway/preset.d.ts +3 -0
- package/dist/cli/commands/gateway/preset.d.ts.map +1 -0
- package/dist/cli/commands/gateway/preset.js +181 -0
- package/dist/cli/commands/gateway/preset.js.map +1 -0
- package/dist/cli/commands/gateway/routing.d.ts +3 -0
- package/dist/cli/commands/gateway/routing.d.ts.map +1 -0
- package/dist/cli/commands/gateway/routing.js +110 -0
- package/dist/cli/commands/gateway/routing.js.map +1 -0
- package/dist/cli/commands/gateway/settings.d.ts +4 -0
- package/dist/cli/commands/gateway/settings.d.ts.map +1 -0
- package/dist/cli/commands/gateway/settings.js +314 -0
- package/dist/cli/commands/gateway/settings.js.map +1 -0
- package/dist/cli/commands/gateway/shared.d.ts +55 -6
- package/dist/cli/commands/gateway/shared.d.ts.map +1 -1
- package/dist/cli/commands/gateway/shared.js +206 -26
- package/dist/cli/commands/gateway/shared.js.map +1 -1
- package/dist/cli/commands/gateway/workspace.d.ts +3 -0
- package/dist/cli/commands/gateway/workspace.d.ts.map +1 -0
- package/dist/cli/commands/gateway/workspace.js +250 -0
- package/dist/cli/commands/gateway/workspace.js.map +1 -0
- package/dist/cli/commands/tunnel/start.d.ts.map +1 -1
- package/dist/cli/commands/tunnel/start.js +23 -5
- package/dist/cli/commands/tunnel/start.js.map +1 -1
- package/dist/cli/index.js +12 -44
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program.d.ts +4 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +49 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/program.test.d.ts +2 -0
- package/dist/cli/program.test.d.ts.map +1 -0
- package/dist/cli/program.test.js +38 -0
- package/dist/cli/program.test.js.map +1 -0
- package/dist/cli/prompt-hidden.d.ts +3 -0
- package/dist/cli/prompt-hidden.d.ts.map +1 -0
- package/dist/cli/prompt-hidden.js +38 -0
- package/dist/cli/prompt-hidden.js.map +1 -0
- package/dist/cli/wallet-passphrase.d.ts +48 -0
- package/dist/cli/wallet-passphrase.d.ts.map +1 -0
- package/dist/cli/wallet-passphrase.js +119 -0
- package/dist/cli/wallet-passphrase.js.map +1 -0
- package/dist/cli/wallet-passphrase.test.d.ts +2 -0
- package/dist/cli/wallet-passphrase.test.d.ts.map +1 -0
- package/dist/cli/wallet-passphrase.test.js +79 -0
- package/dist/cli/wallet-passphrase.test.js.map +1 -0
- package/dist/config/effective.d.ts +12 -0
- package/dist/config/effective.d.ts.map +1 -1
- package/dist/config/effective.js +39 -6
- package/dist/config/effective.js.map +1 -1
- package/dist/config/effective.test.js +9 -1
- package/dist/config/effective.test.js.map +1 -1
- package/dist/config/loader.d.ts +6 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +12 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/loader.test.js +7 -1
- package/dist/config/loader.test.js.map +1 -1
- package/dist/config/types.d.ts +14 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +19 -0
- package/dist/config/validation.js.map +1 -1
- package/dist/gateway/accounting.d.ts +33 -3
- package/dist/gateway/accounting.d.ts.map +1 -1
- package/dist/gateway/accounting.js +86 -7
- package/dist/gateway/accounting.js.map +1 -1
- package/dist/gateway/admission-benchmark.test.d.ts +2 -0
- package/dist/gateway/admission-benchmark.test.d.ts.map +1 -0
- package/dist/gateway/admission-benchmark.test.js +75 -0
- package/dist/gateway/admission-benchmark.test.js.map +1 -0
- package/dist/gateway/auth/auth.test.d.ts +4 -0
- package/dist/gateway/auth/auth.test.d.ts.map +1 -0
- package/dist/gateway/auth/auth.test.js +337 -0
- package/dist/gateway/auth/auth.test.js.map +1 -0
- package/dist/gateway/auth/credentials.test.d.ts +2 -0
- package/dist/gateway/auth/credentials.test.d.ts.map +1 -0
- package/dist/gateway/auth/credentials.test.js +132 -0
- package/dist/gateway/auth/credentials.test.js.map +1 -0
- package/dist/gateway/auth/db.d.ts +156 -0
- package/dist/gateway/auth/db.d.ts.map +1 -0
- package/dist/gateway/auth/db.js +390 -0
- package/dist/gateway/auth/db.js.map +1 -0
- package/dist/gateway/auth/hardening.test.d.ts +2 -0
- package/dist/gateway/auth/hardening.test.d.ts.map +1 -0
- package/dist/gateway/auth/hardening.test.js +155 -0
- package/dist/gateway/auth/hardening.test.js.map +1 -0
- package/dist/gateway/auth/http.d.ts +53 -0
- package/dist/gateway/auth/http.d.ts.map +1 -0
- package/dist/gateway/auth/http.js +165 -0
- package/dist/gateway/auth/http.js.map +1 -0
- package/dist/gateway/auth/index.d.ts +26 -0
- package/dist/gateway/auth/index.d.ts.map +1 -0
- package/dist/gateway/auth/index.js +1014 -0
- package/dist/gateway/auth/index.js.map +1 -0
- package/dist/gateway/auth/oidc.d.ts +57 -0
- package/dist/gateway/auth/oidc.d.ts.map +1 -0
- package/dist/gateway/auth/oidc.js +159 -0
- package/dist/gateway/auth/oidc.js.map +1 -0
- package/dist/gateway/auth/oidc.test.d.ts +2 -0
- package/dist/gateway/auth/oidc.test.d.ts.map +1 -0
- package/dist/gateway/auth/oidc.test.js +223 -0
- package/dist/gateway/auth/oidc.test.js.map +1 -0
- package/dist/gateway/auth/reauth.test.d.ts +2 -0
- package/dist/gateway/auth/reauth.test.d.ts.map +1 -0
- package/dist/gateway/auth/reauth.test.js +108 -0
- package/dist/gateway/auth/reauth.test.js.map +1 -0
- package/dist/gateway/auth/store-integration.test.d.ts +2 -0
- package/dist/gateway/auth/store-integration.test.d.ts.map +1 -0
- package/dist/gateway/auth/store-integration.test.js +100 -0
- package/dist/gateway/auth/store-integration.test.js.map +1 -0
- package/dist/gateway/auth/test-helpers.d.ts +167 -0
- package/dist/gateway/auth/test-helpers.d.ts.map +1 -0
- package/dist/gateway/auth/test-helpers.js +368 -0
- package/dist/gateway/auth/test-helpers.js.map +1 -0
- package/dist/gateway/auth/types.d.ts +145 -0
- package/dist/gateway/auth/types.d.ts.map +1 -0
- package/dist/gateway/auth/types.js +2 -0
- package/dist/gateway/auth/types.js.map +1 -0
- package/dist/gateway/auth/wallet.d.ts +15 -0
- package/dist/gateway/auth/wallet.d.ts.map +1 -0
- package/dist/gateway/auth/wallet.js +43 -0
- package/dist/gateway/auth/wallet.js.map +1 -0
- package/dist/gateway/bundle.d.ts +127 -0
- package/dist/gateway/bundle.d.ts.map +1 -0
- package/dist/gateway/bundle.js +604 -0
- package/dist/gateway/bundle.js.map +1 -0
- package/dist/gateway/bundle.test.d.ts +2 -0
- package/dist/gateway/bundle.test.d.ts.map +1 -0
- package/dist/gateway/bundle.test.js +277 -0
- package/dist/gateway/bundle.test.js.map +1 -0
- package/dist/gateway/buyer-control.d.ts +33 -0
- package/dist/gateway/buyer-control.d.ts.map +1 -0
- package/dist/gateway/buyer-control.js +93 -0
- package/dist/gateway/buyer-control.js.map +1 -0
- package/dist/gateway/buyer-policy-probe.d.ts +41 -0
- package/dist/gateway/buyer-policy-probe.d.ts.map +1 -0
- package/dist/gateway/buyer-policy-probe.js +99 -0
- package/dist/gateway/buyer-policy-probe.js.map +1 -0
- package/dist/gateway/buyer-policy-probe.test.d.ts +2 -0
- package/dist/gateway/buyer-policy-probe.test.d.ts.map +1 -0
- package/dist/gateway/buyer-policy-probe.test.js +128 -0
- package/dist/gateway/buyer-policy-probe.test.js.map +1 -0
- package/dist/gateway/buyer-process.d.ts +30 -0
- package/dist/gateway/buyer-process.d.ts.map +1 -0
- package/dist/gateway/buyer-process.js +101 -0
- package/dist/gateway/buyer-process.js.map +1 -0
- package/dist/gateway/buyer-process.test.d.ts +2 -0
- package/dist/gateway/buyer-process.test.d.ts.map +1 -0
- package/dist/gateway/buyer-process.test.js +112 -0
- package/dist/gateway/buyer-process.test.js.map +1 -0
- package/dist/gateway/chat/routes.d.ts +45 -0
- package/dist/gateway/chat/routes.d.ts.map +1 -0
- package/dist/gateway/chat/routes.js +439 -0
- package/dist/gateway/chat/routes.js.map +1 -0
- package/dist/gateway/chat/routes.test.d.ts +2 -0
- package/dist/gateway/chat/routes.test.d.ts.map +1 -0
- package/dist/gateway/chat/routes.test.js +304 -0
- package/dist/gateway/chat/routes.test.js.map +1 -0
- package/dist/gateway/chat/tools.d.ts +35 -0
- package/dist/gateway/chat/tools.d.ts.map +1 -0
- package/dist/gateway/chat/tools.js +347 -0
- package/dist/gateway/chat/tools.js.map +1 -0
- package/dist/gateway/chat/tools.test.d.ts +2 -0
- package/dist/gateway/chat/tools.test.d.ts.map +1 -0
- package/dist/gateway/chat/tools.test.js +136 -0
- package/dist/gateway/chat/tools.test.js.map +1 -0
- package/dist/gateway/console-api/access.d.ts +52 -0
- package/dist/gateway/console-api/access.d.ts.map +1 -0
- package/dist/gateway/console-api/access.js +171 -0
- package/dist/gateway/console-api/access.js.map +1 -0
- package/dist/gateway/console-api/deps.d.ts +52 -0
- package/dist/gateway/console-api/deps.d.ts.map +1 -0
- package/dist/gateway/console-api/deps.js +2 -0
- package/dist/gateway/console-api/deps.js.map +1 -0
- package/dist/gateway/console-api/handlers/admin-tokens.d.ts +8 -0
- package/dist/gateway/console-api/handlers/admin-tokens.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/admin-tokens.js +48 -0
- package/dist/gateway/console-api/handlers/admin-tokens.js.map +1 -0
- package/dist/gateway/console-api/handlers/audit.d.ts +8 -0
- package/dist/gateway/console-api/handlers/audit.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/audit.js +19 -0
- package/dist/gateway/console-api/handlers/audit.js.map +1 -0
- package/dist/gateway/console-api/handlers/audit.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/audit.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/audit.test.js +241 -0
- package/dist/gateway/console-api/handlers/audit.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/data-settings.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/data-settings.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/data-settings.test.js +264 -0
- package/dist/gateway/console-api/handlers/data-settings.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/index.d.ts +4 -0
- package/dist/gateway/console-api/handlers/index.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/index.js +24 -0
- package/dist/gateway/console-api/handlers/index.js.map +1 -0
- package/dist/gateway/console-api/handlers/keys.d.ts +13 -0
- package/dist/gateway/console-api/handlers/keys.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/keys.js +128 -0
- package/dist/gateway/console-api/handlers/keys.js.map +1 -0
- package/dist/gateway/console-api/handlers/keys.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/keys.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/keys.test.js +166 -0
- package/dist/gateway/console-api/handlers/keys.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/network-buyer.d.ts +22 -0
- package/dist/gateway/console-api/handlers/network-buyer.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network-buyer.js +39 -0
- package/dist/gateway/console-api/handlers/network-buyer.js.map +1 -0
- package/dist/gateway/console-api/handlers/network-mapping.d.ts +33 -0
- package/dist/gateway/console-api/handlers/network-mapping.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network-mapping.js +219 -0
- package/dist/gateway/console-api/handlers/network-mapping.js.map +1 -0
- package/dist/gateway/console-api/handlers/network-test-helpers.d.ts +35 -0
- package/dist/gateway/console-api/handlers/network-test-helpers.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network-test-helpers.js +121 -0
- package/dist/gateway/console-api/handlers/network-test-helpers.js.map +1 -0
- package/dist/gateway/console-api/handlers/network.d.ts +15 -0
- package/dist/gateway/console-api/handlers/network.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network.js +57 -0
- package/dist/gateway/console-api/handlers/network.js.map +1 -0
- package/dist/gateway/console-api/handlers/network.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/network.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network.test.js +383 -0
- package/dist/gateway/console-api/handlers/network.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/org.d.ts +10 -0
- package/dist/gateway/console-api/handlers/org.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/org.js +150 -0
- package/dist/gateway/console-api/handlers/org.js.map +1 -0
- package/dist/gateway/console-api/handlers/peer-lists.d.ts +5 -0
- package/dist/gateway/console-api/handlers/peer-lists.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/peer-lists.js +43 -0
- package/dist/gateway/console-api/handlers/peer-lists.js.map +1 -0
- package/dist/gateway/console-api/handlers/presets.d.ts +9 -0
- package/dist/gateway/console-api/handlers/presets.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/presets.js +79 -0
- package/dist/gateway/console-api/handlers/presets.js.map +1 -0
- package/dist/gateway/console-api/handlers/routing.d.ts +5 -0
- package/dist/gateway/console-api/handlers/routing.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/routing.js +20 -0
- package/dist/gateway/console-api/handlers/routing.js.map +1 -0
- package/dist/gateway/console-api/handlers/settings.d.ts +10 -0
- package/dist/gateway/console-api/handlers/settings.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/settings.js +38 -0
- package/dist/gateway/console-api/handlers/settings.js.map +1 -0
- package/dist/gateway/console-api/handlers/status.d.ts +9 -0
- package/dist/gateway/console-api/handlers/status.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/status.js +47 -0
- package/dist/gateway/console-api/handlers/status.js.map +1 -0
- package/dist/gateway/console-api/handlers/status.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/status.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/status.test.js +82 -0
- package/dist/gateway/console-api/handlers/status.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/usage.d.ts +10 -0
- package/dist/gateway/console-api/handlers/usage.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/usage.js +68 -0
- package/dist/gateway/console-api/handlers/usage.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-card-link.d.ts +29 -0
- package/dist/gateway/console-api/handlers/wallet-card-link.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-card-link.js +46 -0
- package/dist/gateway/console-api/handlers/wallet-card-link.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-chain.d.ts +26 -0
- package/dist/gateway/console-api/handlers/wallet-chain.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-chain.js +80 -0
- package/dist/gateway/console-api/handlers/wallet-chain.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-mapping.d.ts +45 -0
- package/dist/gateway/console-api/handlers/wallet-mapping.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-mapping.js +202 -0
- package/dist/gateway/console-api/handlers/wallet-mapping.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-operator.d.ts +41 -0
- package/dist/gateway/console-api/handlers/wallet-operator.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-operator.js +198 -0
- package/dist/gateway/console-api/handlers/wallet-operator.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-operator.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/wallet-operator.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-operator.test.js +195 -0
- package/dist/gateway/console-api/handlers/wallet-operator.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet.d.ts +61 -0
- package/dist/gateway/console-api/handlers/wallet.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet.js +221 -0
- package/dist/gateway/console-api/handlers/wallet.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/wallet.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet.test.js +581 -0
- package/dist/gateway/console-api/handlers/wallet.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/workspaces.d.ts +12 -0
- package/dist/gateway/console-api/handlers/workspaces.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/workspaces.js +96 -0
- package/dist/gateway/console-api/handlers/workspaces.js.map +1 -0
- package/dist/gateway/console-api/operator-types.d.ts +68 -0
- package/dist/gateway/console-api/operator-types.d.ts.map +1 -0
- package/dist/gateway/console-api/operator-types.js +21 -0
- package/dist/gateway/console-api/operator-types.js.map +1 -0
- package/dist/gateway/console-api/router.d.ts +97 -0
- package/dist/gateway/console-api/router.d.ts.map +1 -0
- package/dist/gateway/console-api/router.js +69 -0
- package/dist/gateway/console-api/router.js.map +1 -0
- package/dist/gateway/console-api/routes.test.d.ts +2 -0
- package/dist/gateway/console-api/routes.test.d.ts.map +1 -0
- package/dist/gateway/console-api/routes.test.js +331 -0
- package/dist/gateway/console-api/routes.test.js.map +1 -0
- package/dist/gateway/console-api/serialize.d.ts +33 -0
- package/dist/gateway/console-api/serialize.d.ts.map +1 -0
- package/dist/gateway/console-api/serialize.js +179 -0
- package/dist/gateway/console-api/serialize.js.map +1 -0
- package/dist/gateway/console-api/server.d.ts +38 -0
- package/dist/gateway/console-api/server.d.ts.map +1 -0
- package/dist/gateway/console-api/server.js +308 -0
- package/dist/gateway/console-api/server.js.map +1 -0
- package/dist/gateway/console-api/server.test.d.ts +2 -0
- package/dist/gateway/console-api/server.test.d.ts.map +1 -0
- package/dist/gateway/console-api/server.test.js +149 -0
- package/dist/gateway/console-api/server.test.js.map +1 -0
- package/dist/gateway/console-api/test-support.d.ts +59 -0
- package/dist/gateway/console-api/test-support.d.ts.map +1 -0
- package/dist/gateway/console-api/test-support.js +120 -0
- package/dist/gateway/console-api/test-support.js.map +1 -0
- package/dist/gateway/console-api/types.d.ts +779 -0
- package/dist/gateway/console-api/types.d.ts.map +1 -0
- package/dist/gateway/console-api/types.js +6 -0
- package/dist/gateway/console-api/types.js.map +1 -0
- package/dist/gateway/console-location.d.ts +21 -0
- package/dist/gateway/console-location.d.ts.map +1 -0
- package/dist/gateway/console-location.js +41 -0
- package/dist/gateway/console-location.js.map +1 -0
- package/dist/gateway/console-recovery.d.ts +34 -0
- package/dist/gateway/console-recovery.d.ts.map +1 -0
- package/dist/gateway/console-recovery.js +94 -0
- package/dist/gateway/console-recovery.js.map +1 -0
- package/dist/gateway/console-recovery.test.d.ts +2 -0
- package/dist/gateway/console-recovery.test.d.ts.map +1 -0
- package/dist/gateway/console-recovery.test.js +106 -0
- package/dist/gateway/console-recovery.test.js.map +1 -0
- package/dist/gateway/console.d.ts +18 -0
- package/dist/gateway/console.d.ts.map +1 -0
- package/dist/gateway/console.js +101 -0
- package/dist/gateway/console.js.map +1 -0
- package/dist/gateway/console.test.d.ts +2 -0
- package/dist/gateway/console.test.d.ts.map +1 -0
- package/dist/gateway/console.test.js +165 -0
- package/dist/gateway/console.test.js.map +1 -0
- package/dist/gateway/errors.d.ts +3 -0
- package/dist/gateway/errors.d.ts.map +1 -0
- package/dist/gateway/errors.js +5 -0
- package/dist/gateway/errors.js.map +1 -0
- package/dist/gateway/exposure.d.ts +33 -0
- package/dist/gateway/exposure.d.ts.map +1 -0
- package/dist/gateway/exposure.js +146 -0
- package/dist/gateway/exposure.js.map +1 -0
- package/dist/gateway/exposure.test.d.ts +2 -0
- package/dist/gateway/exposure.test.d.ts.map +1 -0
- package/dist/gateway/exposure.test.js +93 -0
- package/dist/gateway/exposure.test.js.map +1 -0
- package/dist/gateway/gateway-policy.test.d.ts +2 -0
- package/dist/gateway/gateway-policy.test.d.ts.map +1 -0
- package/dist/gateway/gateway-policy.test.js +404 -0
- package/dist/gateway/gateway-policy.test.js.map +1 -0
- package/dist/gateway/gateway.test.js +47 -25
- package/dist/gateway/gateway.test.js.map +1 -1
- package/dist/gateway/keys.d.ts +2 -0
- package/dist/gateway/keys.d.ts.map +1 -1
- package/dist/gateway/keys.js +2 -0
- package/dist/gateway/keys.js.map +1 -1
- package/dist/gateway/limits.d.ts +32 -8
- package/dist/gateway/limits.d.ts.map +1 -1
- package/dist/gateway/limits.js +27 -11
- package/dist/gateway/limits.js.map +1 -1
- package/dist/gateway/observability.d.ts +51 -0
- package/dist/gateway/observability.d.ts.map +1 -0
- package/dist/gateway/observability.js +136 -0
- package/dist/gateway/observability.js.map +1 -0
- package/dist/gateway/policy-resolver.d.ts +73 -0
- package/dist/gateway/policy-resolver.d.ts.map +1 -0
- package/dist/gateway/policy-resolver.js +142 -0
- package/dist/gateway/policy-resolver.js.map +1 -0
- package/dist/gateway/policy-resolver.test.d.ts +2 -0
- package/dist/gateway/policy-resolver.test.d.ts.map +1 -0
- package/dist/gateway/policy-resolver.test.js +273 -0
- package/dist/gateway/policy-resolver.test.js.map +1 -0
- package/dist/gateway/request-errors.test.d.ts +2 -0
- package/dist/gateway/request-errors.test.d.ts.map +1 -0
- package/dist/gateway/request-errors.test.js +108 -0
- package/dist/gateway/request-errors.test.js.map +1 -0
- package/dist/gateway/request-shaping.d.ts +25 -0
- package/dist/gateway/request-shaping.d.ts.map +1 -0
- package/dist/gateway/request-shaping.js +66 -0
- package/dist/gateway/request-shaping.js.map +1 -0
- package/dist/gateway/response-usage.d.ts +35 -0
- package/dist/gateway/response-usage.d.ts.map +1 -0
- package/dist/gateway/response-usage.js +167 -0
- package/dist/gateway/response-usage.js.map +1 -0
- package/dist/gateway/response-usage.test.d.ts +2 -0
- package/dist/gateway/response-usage.test.d.ts.map +1 -0
- package/dist/gateway/response-usage.test.js +78 -0
- package/dist/gateway/response-usage.test.js.map +1 -0
- package/dist/gateway/runtime.d.ts +25 -0
- package/dist/gateway/runtime.d.ts.map +1 -1
- package/dist/gateway/runtime.js +39 -19
- package/dist/gateway/runtime.js.map +1 -1
- package/dist/gateway/server.d.ts +68 -2
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/gateway/server.js +532 -116
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/services/audit.d.ts +16 -0
- package/dist/gateway/services/audit.d.ts.map +1 -0
- package/dist/gateway/services/audit.js +18 -0
- package/dist/gateway/services/audit.js.map +1 -0
- package/dist/gateway/services/context.d.ts +66 -0
- package/dist/gateway/services/context.d.ts.map +1 -0
- package/dist/gateway/services/context.js +52 -0
- package/dist/gateway/services/context.js.map +1 -0
- package/dist/gateway/services/keys.d.ts +78 -0
- package/dist/gateway/services/keys.d.ts.map +1 -0
- package/dist/gateway/services/keys.js +232 -0
- package/dist/gateway/services/keys.js.map +1 -0
- package/dist/gateway/services/members.d.ts +72 -0
- package/dist/gateway/services/members.d.ts.map +1 -0
- package/dist/gateway/services/members.js +161 -0
- package/dist/gateway/services/members.js.map +1 -0
- package/dist/gateway/services/network.d.ts +36 -0
- package/dist/gateway/services/network.d.ts.map +1 -0
- package/dist/gateway/services/network.js +147 -0
- package/dist/gateway/services/network.js.map +1 -0
- package/dist/gateway/services/operator.d.ts +98 -0
- package/dist/gateway/services/operator.d.ts.map +1 -0
- package/dist/gateway/services/operator.js +170 -0
- package/dist/gateway/services/operator.js.map +1 -0
- package/dist/gateway/services/operator.test.d.ts +2 -0
- package/dist/gateway/services/operator.test.d.ts.map +1 -0
- package/dist/gateway/services/operator.test.js +184 -0
- package/dist/gateway/services/operator.test.js.map +1 -0
- package/dist/gateway/services/peer-lists.d.ts +20 -0
- package/dist/gateway/services/peer-lists.d.ts.map +1 -0
- package/dist/gateway/services/peer-lists.js +134 -0
- package/dist/gateway/services/peer-lists.js.map +1 -0
- package/dist/gateway/services/presets.d.ts +34 -0
- package/dist/gateway/services/presets.d.ts.map +1 -0
- package/dist/gateway/services/presets.js +134 -0
- package/dist/gateway/services/presets.js.map +1 -0
- package/dist/gateway/services/routing.d.ts +13 -0
- package/dist/gateway/services/routing.d.ts.map +1 -0
- package/dist/gateway/services/routing.js +18 -0
- package/dist/gateway/services/routing.js.map +1 -0
- package/dist/gateway/services/services.test.d.ts +2 -0
- package/dist/gateway/services/services.test.d.ts.map +1 -0
- package/dist/gateway/services/services.test.js +476 -0
- package/dist/gateway/services/services.test.js.map +1 -0
- package/dist/gateway/services/settings.d.ts +68 -0
- package/dist/gateway/services/settings.d.ts.map +1 -0
- package/dist/gateway/services/settings.js +580 -0
- package/dist/gateway/services/settings.js.map +1 -0
- package/dist/gateway/services/tokens.d.ts +29 -0
- package/dist/gateway/services/tokens.d.ts.map +1 -0
- package/dist/gateway/services/tokens.js +48 -0
- package/dist/gateway/services/tokens.js.map +1 -0
- package/dist/gateway/services/usage.d.ts +55 -0
- package/dist/gateway/services/usage.d.ts.map +1 -0
- package/dist/gateway/services/usage.js +225 -0
- package/dist/gateway/services/usage.js.map +1 -0
- package/dist/gateway/services/wallet-address-env.test.d.ts +2 -0
- package/dist/gateway/services/wallet-address-env.test.d.ts.map +1 -0
- package/dist/gateway/services/wallet-address-env.test.js +119 -0
- package/dist/gateway/services/wallet-address-env.test.js.map +1 -0
- package/dist/gateway/services/wallet-address.d.ts +40 -0
- package/dist/gateway/services/wallet-address.d.ts.map +1 -0
- package/dist/gateway/services/wallet-address.js +116 -0
- package/dist/gateway/services/wallet-address.js.map +1 -0
- package/dist/gateway/services/wallet-address.test.d.ts +2 -0
- package/dist/gateway/services/wallet-address.test.d.ts.map +1 -0
- package/dist/gateway/services/wallet-address.test.js +84 -0
- package/dist/gateway/services/wallet-address.test.js.map +1 -0
- package/dist/gateway/services/workspaces.d.ts +75 -0
- package/dist/gateway/services/workspaces.d.ts.map +1 -0
- package/dist/gateway/services/workspaces.js +228 -0
- package/dist/gateway/services/workspaces.js.map +1 -0
- package/dist/gateway/spend-durability.test.d.ts +2 -0
- package/dist/gateway/spend-durability.test.d.ts.map +1 -0
- package/dist/gateway/spend-durability.test.js +330 -0
- package/dist/gateway/spend-durability.test.js.map +1 -0
- package/dist/gateway/spend-feed.d.ts +11 -1
- package/dist/gateway/spend-feed.d.ts.map +1 -1
- package/dist/gateway/spend-feed.js +17 -4
- package/dist/gateway/spend-feed.js.map +1 -1
- package/dist/gateway/spend-feed.test.d.ts +2 -0
- package/dist/gateway/spend-feed.test.d.ts.map +1 -0
- package/dist/gateway/spend-feed.test.js +34 -0
- package/dist/gateway/spend-feed.test.js.map +1 -0
- package/dist/gateway/store-data.test.d.ts +2 -0
- package/dist/gateway/store-data.test.d.ts.map +1 -0
- package/dist/gateway/store-data.test.js +346 -0
- package/dist/gateway/store-data.test.js.map +1 -0
- package/dist/gateway/store-migrations.d.ts +6 -0
- package/dist/gateway/store-migrations.d.ts.map +1 -0
- package/dist/gateway/store-migrations.js +301 -0
- package/dist/gateway/store-migrations.js.map +1 -0
- package/dist/gateway/store.d.ts +595 -10
- package/dist/gateway/store.d.ts.map +1 -1
- package/dist/gateway/store.js +1242 -120
- package/dist/gateway/store.js.map +1 -1
- package/dist/gateway/store.test.d.ts +2 -0
- package/dist/gateway/store.test.d.ts.map +1 -0
- package/dist/gateway/store.test.js +185 -0
- package/dist/gateway/store.test.js.map +1 -0
- package/dist/proxy/buyer-chain-reader.d.ts +68 -0
- package/dist/proxy/buyer-chain-reader.d.ts.map +1 -0
- package/dist/proxy/buyer-chain-reader.js +152 -0
- package/dist/proxy/buyer-chain-reader.js.map +1 -0
- package/dist/proxy/buyer-chain-reader.test.d.ts +2 -0
- package/dist/proxy/buyer-chain-reader.test.d.ts.map +1 -0
- package/dist/proxy/buyer-chain-reader.test.js +102 -0
- package/dist/proxy/buyer-chain-reader.test.js.map +1 -0
- package/dist/proxy/buyer-proxy.d.ts +169 -3
- package/dist/proxy/buyer-proxy.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.js +873 -117
- package/dist/proxy/buyer-proxy.js.map +1 -1
- package/dist/proxy/buyer-proxy.test.js +31 -0
- package/dist/proxy/buyer-proxy.test.js.map +1 -1
- package/dist/proxy/chain-read-cache.d.ts +47 -0
- package/dist/proxy/chain-read-cache.d.ts.map +1 -0
- package/dist/proxy/chain-read-cache.js +110 -0
- package/dist/proxy/chain-read-cache.js.map +1 -0
- package/dist/proxy/chain-read-cache.test.d.ts +2 -0
- package/dist/proxy/chain-read-cache.test.d.ts.map +1 -0
- package/dist/proxy/chain-read-cache.test.js +75 -0
- package/dist/proxy/chain-read-cache.test.js.map +1 -0
- package/dist/proxy/chain-rpc-test-support.d.ts +31 -0
- package/dist/proxy/chain-rpc-test-support.d.ts.map +1 -0
- package/dist/proxy/chain-rpc-test-support.js +136 -0
- package/dist/proxy/chain-rpc-test-support.js.map +1 -0
- package/dist/proxy/chain-rpc.d.ts +121 -0
- package/dist/proxy/chain-rpc.d.ts.map +1 -0
- package/dist/proxy/chain-rpc.js +420 -0
- package/dist/proxy/chain-rpc.js.map +1 -0
- package/dist/proxy/chain-rpc.test.d.ts +2 -0
- package/dist/proxy/chain-rpc.test.d.ts.map +1 -0
- package/dist/proxy/chain-rpc.test.js +180 -0
- package/dist/proxy/chain-rpc.test.js.map +1 -0
- package/dist/proxy/deposit-watch-hub.d.ts +47 -0
- package/dist/proxy/deposit-watch-hub.d.ts.map +1 -0
- package/dist/proxy/deposit-watch-hub.js +111 -0
- package/dist/proxy/deposit-watch-hub.js.map +1 -0
- package/dist/proxy/deposit-watch-hub.test.d.ts +2 -0
- package/dist/proxy/deposit-watch-hub.test.d.ts.map +1 -0
- package/dist/proxy/deposit-watch-hub.test.js +133 -0
- package/dist/proxy/deposit-watch-hub.test.js.map +1 -0
- package/dist/proxy/deposit-watcher.d.ts +44 -4
- package/dist/proxy/deposit-watcher.d.ts.map +1 -1
- package/dist/proxy/deposit-watcher.js +76 -11
- package/dist/proxy/deposit-watcher.js.map +1 -1
- package/dist/proxy/deposit-watcher.test.js +54 -1
- package/dist/proxy/deposit-watcher.test.js.map +1 -1
- package/dist/proxy/gateway-policy.test.d.ts +2 -0
- package/dist/proxy/gateway-policy.test.d.ts.map +1 -0
- package/dist/proxy/gateway-policy.test.js +576 -0
- package/dist/proxy/gateway-policy.test.js.map +1 -0
- package/dist/proxy/network-models.d.ts +2 -0
- package/dist/proxy/network-models.d.ts.map +1 -1
- package/dist/proxy/network-models.js +3 -1
- package/dist/proxy/network-models.js.map +1 -1
- package/dist/proxy/route-policy.d.ts +97 -0
- package/dist/proxy/route-policy.d.ts.map +1 -0
- package/dist/proxy/route-policy.js +230 -0
- package/dist/proxy/route-policy.js.map +1 -0
- package/dist/proxy/route-policy.test.d.ts +2 -0
- package/dist/proxy/route-policy.test.d.ts.map +1 -0
- package/dist/proxy/route-policy.test.js +120 -0
- package/dist/proxy/route-policy.test.js.map +1 -0
- package/dist/proxy/spend-attribution.d.ts +41 -10
- package/dist/proxy/spend-attribution.d.ts.map +1 -1
- package/dist/proxy/spend-attribution.js +133 -37
- package/dist/proxy/spend-attribution.js.map +1 -1
- package/dist/proxy/tee-control.d.ts +3 -1
- package/dist/proxy/tee-control.d.ts.map +1 -1
- package/dist/proxy/tee-control.js +5 -3
- package/dist/proxy/tee-control.js.map +1 -1
- package/dist/proxy/telemetry.d.ts +2 -1
- package/dist/proxy/telemetry.d.ts.map +1 -1
- package/dist/proxy/telemetry.js +10 -5
- package/dist/proxy/telemetry.js.map +1 -1
- package/dist/routing-policy/policy.d.ts +149 -0
- package/dist/routing-policy/policy.d.ts.map +1 -0
- package/dist/routing-policy/policy.js +450 -0
- package/dist/routing-policy/policy.js.map +1 -0
- package/dist/routing-policy/policy.test.d.ts +2 -0
- package/dist/routing-policy/policy.test.d.ts.map +1 -0
- package/dist/routing-policy/policy.test.js +134 -0
- package/dist/routing-policy/policy.test.js.map +1 -0
- package/package.json +15 -7
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TTL cache for chain reads. Concurrent reads of one key share a load; an
|
|
3
|
+
* expired value is served while it refreshes in the background (when asked
|
|
4
|
+
* to); a failed refresh serves the last good value marked `stale` and does
|
|
5
|
+
* not retry the load until `errorRetryMs` passes, so an RPC outage or rate
|
|
6
|
+
* limit never turns into a retry loop.
|
|
7
|
+
*/
|
|
8
|
+
export interface CachedRead<T> {
|
|
9
|
+
value: T;
|
|
10
|
+
/** True when the value could not be refreshed (the chain is unreachable or rate limited). */
|
|
11
|
+
stale: boolean;
|
|
12
|
+
fetchedAt: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ReadOptions {
|
|
15
|
+
ttlMs: number;
|
|
16
|
+
/** Serve a value up to this much past its TTL immediately, refreshing it in the background. */
|
|
17
|
+
staleWhileRevalidateMs?: number;
|
|
18
|
+
/** Ignore a cached value younger than the TTL (still shares an in-flight load). */
|
|
19
|
+
force?: boolean;
|
|
20
|
+
/** False: a failed refresh is an error, never the last value (for reads that must not be stale). */
|
|
21
|
+
serveStaleOnError?: boolean;
|
|
22
|
+
/** Overrides the cache's `errorRetryMs` for this read. */
|
|
23
|
+
errorRetryMs?: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class ChainReadCache {
|
|
26
|
+
private readonly entries;
|
|
27
|
+
private readonly now;
|
|
28
|
+
private readonly errorRetryMs;
|
|
29
|
+
private readonly maxEntries;
|
|
30
|
+
constructor(options?: {
|
|
31
|
+
now?: () => number;
|
|
32
|
+
errorRetryMs?: number;
|
|
33
|
+
maxEntries?: number;
|
|
34
|
+
});
|
|
35
|
+
read<T>(key: string, options: ReadOptions, load: () => Promise<T>): Promise<CachedRead<T>>;
|
|
36
|
+
/** The cached value regardless of age, when there is one. */
|
|
37
|
+
peek<T>(key: string): CachedRead<T> | null;
|
|
38
|
+
/** Milliseconds since the cached value was read, by the cache's clock; null when none. */
|
|
39
|
+
age(key: string): number | null;
|
|
40
|
+
/** Records a value read elsewhere (e.g. one tick of the deposit watcher). */
|
|
41
|
+
set<T>(key: string, value: T): void;
|
|
42
|
+
/** Drops keys equal to `key` or starting with `key` followed by `:`. */
|
|
43
|
+
invalidate(key: string): void;
|
|
44
|
+
private entry;
|
|
45
|
+
private start;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=chain-read-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-read-cache.d.ts","sourceRoot":"","sources":["../../src/proxy/chain-read-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAA;IACR,6FAA6F;IAC7F,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,+FAA+F;IAC/F,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oGAAoG;IACpG,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAWD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEvB,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;IAMtF,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAyBhG,6DAA6D;IAC7D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1C,0FAA0F;IAC1F,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK/B,6EAA6E;IAC7E,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IASnC,wEAAwE;IACxE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM7B,OAAO,CAAC,KAAK;IAab,OAAO,CAAC,KAAK;CAoBd"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TTL cache for chain reads. Concurrent reads of one key share a load; an
|
|
3
|
+
* expired value is served while it refreshes in the background (when asked
|
|
4
|
+
* to); a failed refresh serves the last good value marked `stale` and does
|
|
5
|
+
* not retry the load until `errorRetryMs` passes, so an RPC outage or rate
|
|
6
|
+
* limit never turns into a retry loop.
|
|
7
|
+
*/
|
|
8
|
+
export class ChainReadCache {
|
|
9
|
+
entries = new Map();
|
|
10
|
+
now;
|
|
11
|
+
errorRetryMs;
|
|
12
|
+
maxEntries;
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.now = options.now ?? Date.now;
|
|
15
|
+
this.errorRetryMs = options.errorRetryMs ?? 10_000;
|
|
16
|
+
this.maxEntries = options.maxEntries ?? 5_000;
|
|
17
|
+
}
|
|
18
|
+
async read(key, options, load) {
|
|
19
|
+
const entry = this.entry(key);
|
|
20
|
+
const now = this.now();
|
|
21
|
+
const fresh = entry.hasValue && now - entry.fetchedAt < options.ttlMs;
|
|
22
|
+
if (fresh && !options.force)
|
|
23
|
+
return { value: entry.value, stale: false, fetchedAt: entry.fetchedAt };
|
|
24
|
+
const staleOnError = options.serveStaleOnError !== false;
|
|
25
|
+
const recentlyFailed = entry.failedAt !== null && now - entry.failedAt < (options.errorRetryMs ?? this.errorRetryMs);
|
|
26
|
+
if (recentlyFailed && !entry.loading) {
|
|
27
|
+
if (entry.hasValue && staleOnError)
|
|
28
|
+
return { value: entry.value, stale: true, fetchedAt: entry.fetchedAt };
|
|
29
|
+
throw entry.error;
|
|
30
|
+
}
|
|
31
|
+
const loading = this.start(key, entry, load);
|
|
32
|
+
if (entry.hasValue && !options.force && now - entry.fetchedAt < options.ttlMs + (options.staleWhileRevalidateMs ?? 0)) {
|
|
33
|
+
loading.catch(() => { });
|
|
34
|
+
return { value: entry.value, stale: false, fetchedAt: entry.fetchedAt };
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const value = await loading;
|
|
38
|
+
return { value, stale: false, fetchedAt: entry.fetchedAt };
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (entry.hasValue && staleOnError)
|
|
42
|
+
return { value: entry.value, stale: true, fetchedAt: entry.fetchedAt };
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** The cached value regardless of age, when there is one. */
|
|
47
|
+
peek(key) {
|
|
48
|
+
const entry = this.entries.get(key);
|
|
49
|
+
return entry?.hasValue ? { value: entry.value, stale: false, fetchedAt: entry.fetchedAt } : null;
|
|
50
|
+
}
|
|
51
|
+
/** Milliseconds since the cached value was read, by the cache's clock; null when none. */
|
|
52
|
+
age(key) {
|
|
53
|
+
const entry = this.entries.get(key);
|
|
54
|
+
return entry?.hasValue ? this.now() - entry.fetchedAt : null;
|
|
55
|
+
}
|
|
56
|
+
/** Records a value read elsewhere (e.g. one tick of the deposit watcher). */
|
|
57
|
+
set(key, value) {
|
|
58
|
+
const entry = this.entry(key);
|
|
59
|
+
entry.value = value;
|
|
60
|
+
entry.hasValue = true;
|
|
61
|
+
entry.fetchedAt = this.now();
|
|
62
|
+
entry.failedAt = null;
|
|
63
|
+
entry.error = undefined;
|
|
64
|
+
}
|
|
65
|
+
/** Drops keys equal to `key` or starting with `key` followed by `:`. */
|
|
66
|
+
invalidate(key) {
|
|
67
|
+
for (const existing of this.entries.keys()) {
|
|
68
|
+
if (existing === key || existing.startsWith(`${key}:`))
|
|
69
|
+
this.entries.delete(existing);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
entry(key) {
|
|
73
|
+
let entry = this.entries.get(key);
|
|
74
|
+
if (!entry) {
|
|
75
|
+
if (this.entries.size >= this.maxEntries) {
|
|
76
|
+
const oldest = this.entries.keys().next().value;
|
|
77
|
+
if (oldest !== undefined)
|
|
78
|
+
this.entries.delete(oldest);
|
|
79
|
+
}
|
|
80
|
+
entry = { fetchedAt: 0, hasValue: false, loading: null, failedAt: null, error: undefined };
|
|
81
|
+
this.entries.set(key, entry);
|
|
82
|
+
}
|
|
83
|
+
return entry;
|
|
84
|
+
}
|
|
85
|
+
start(key, entry, load) {
|
|
86
|
+
if (entry.loading)
|
|
87
|
+
return entry.loading;
|
|
88
|
+
const loading = (async () => load())();
|
|
89
|
+
entry.loading = loading;
|
|
90
|
+
loading.then((value) => {
|
|
91
|
+
if (this.entries.get(key) !== entry)
|
|
92
|
+
return;
|
|
93
|
+
entry.value = value;
|
|
94
|
+
entry.hasValue = true;
|
|
95
|
+
entry.fetchedAt = this.now();
|
|
96
|
+
entry.failedAt = null;
|
|
97
|
+
entry.error = undefined;
|
|
98
|
+
}, (error) => {
|
|
99
|
+
if (this.entries.get(key) !== entry)
|
|
100
|
+
return;
|
|
101
|
+
entry.failedAt = this.now();
|
|
102
|
+
entry.error = error;
|
|
103
|
+
}).finally(() => {
|
|
104
|
+
if (entry.loading === loading)
|
|
105
|
+
entry.loading = null;
|
|
106
|
+
});
|
|
107
|
+
return loading;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=chain-read-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-read-cache.js","sourceRoot":"","sources":["../../src/proxy/chain-read-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-read-cache.test.d.ts","sourceRoot":"","sources":["../../src/proxy/chain-read-cache.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { ChainReadCache } from './chain-read-cache.js';
|
|
4
|
+
test('a value is reused for its TTL and concurrent loads share one call', async () => {
|
|
5
|
+
let now = 0;
|
|
6
|
+
let loads = 0;
|
|
7
|
+
const cache = new ChainReadCache({ now: () => now });
|
|
8
|
+
const load = async () => { loads++; return loads; };
|
|
9
|
+
const [a, b] = await Promise.all([cache.read('k', { ttlMs: 1_000 }, load), cache.read('k', { ttlMs: 1_000 }, load)]);
|
|
10
|
+
assert.equal(a.value, 1);
|
|
11
|
+
assert.equal(b.value, 1);
|
|
12
|
+
now = 999;
|
|
13
|
+
assert.equal((await cache.read('k', { ttlMs: 1_000 }, load)).value, 1);
|
|
14
|
+
now = 1_000;
|
|
15
|
+
assert.equal((await cache.read('k', { ttlMs: 1_000 }, load)).value, 2);
|
|
16
|
+
assert.equal(loads, 2);
|
|
17
|
+
});
|
|
18
|
+
test('stale-while-revalidate answers at once and refreshes in the background, within its window only', async () => {
|
|
19
|
+
let now = 0;
|
|
20
|
+
let loads = 0;
|
|
21
|
+
const cache = new ChainReadCache({ now: () => now });
|
|
22
|
+
const load = async () => ++loads;
|
|
23
|
+
await cache.read('k', { ttlMs: 100, staleWhileRevalidateMs: 1_000 }, load);
|
|
24
|
+
now = 500;
|
|
25
|
+
const served = await cache.read('k', { ttlMs: 100, staleWhileRevalidateMs: 1_000 }, load);
|
|
26
|
+
assert.deepEqual([served.value, served.stale], [1, false]);
|
|
27
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
28
|
+
assert.equal(loads, 2);
|
|
29
|
+
assert.equal(cache.peek('k')?.value, 2);
|
|
30
|
+
now = 5_000; // past TTL + window: wait for the read
|
|
31
|
+
assert.equal((await cache.read('k', { ttlMs: 100, staleWhileRevalidateMs: 1_000 }, load)).value, 3);
|
|
32
|
+
});
|
|
33
|
+
test('a failed refresh serves the last value as stale and does not retry until errorRetryMs passes', async () => {
|
|
34
|
+
let now = 0;
|
|
35
|
+
let loads = 0;
|
|
36
|
+
let fail = false;
|
|
37
|
+
const cache = new ChainReadCache({ now: () => now, errorRetryMs: 10_000 });
|
|
38
|
+
const load = async () => {
|
|
39
|
+
loads++;
|
|
40
|
+
if (fail)
|
|
41
|
+
throw new Error('429');
|
|
42
|
+
return 'v';
|
|
43
|
+
};
|
|
44
|
+
await cache.read('k', { ttlMs: 100 }, load);
|
|
45
|
+
fail = true;
|
|
46
|
+
now = 200;
|
|
47
|
+
assert.deepEqual(await cache.read('k', { ttlMs: 100 }, load), { value: 'v', stale: true, fetchedAt: 0 });
|
|
48
|
+
assert.equal(loads, 2);
|
|
49
|
+
now = 5_000;
|
|
50
|
+
assert.equal((await cache.read('k', { ttlMs: 100 }, load)).stale, true);
|
|
51
|
+
assert.equal(loads, 2, 'no retry inside the error window');
|
|
52
|
+
now = 10_201;
|
|
53
|
+
fail = false;
|
|
54
|
+
assert.deepEqual(await cache.read('k', { ttlMs: 100 }, load), { value: 'v', stale: false, fetchedAt: 10_201 });
|
|
55
|
+
assert.equal(loads, 3);
|
|
56
|
+
});
|
|
57
|
+
test('a failure without a cached value is rethrown (and not retried at once)', async () => {
|
|
58
|
+
let loads = 0;
|
|
59
|
+
const cache = new ChainReadCache({ now: () => 0, errorRetryMs: 10_000 });
|
|
60
|
+
const load = async () => { loads++; throw new Error('down'); };
|
|
61
|
+
await assert.rejects(cache.read('k', { ttlMs: 100 }, load), /down/);
|
|
62
|
+
await assert.rejects(cache.read('k', { ttlMs: 100 }, load), /down/);
|
|
63
|
+
assert.equal(loads, 1);
|
|
64
|
+
});
|
|
65
|
+
test('set, force and invalidate', async () => {
|
|
66
|
+
let loads = 0;
|
|
67
|
+
const cache = new ChainReadCache({ now: () => 0 });
|
|
68
|
+
cache.set('usdc:0xabc', 5n);
|
|
69
|
+
assert.equal((await cache.read('usdc:0xabc', { ttlMs: 100 }, async () => { loads++; return 6n; })).value, 5n);
|
|
70
|
+
assert.equal((await cache.read('usdc:0xabc', { ttlMs: 100, force: true }, async () => { loads++; return 6n; })).value, 6n);
|
|
71
|
+
cache.invalidate('usdc');
|
|
72
|
+
assert.equal(cache.peek('usdc:0xabc'), null);
|
|
73
|
+
assert.equal(loads, 1);
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=chain-read-cache.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-read-cache.test.js","sourceRoot":"","sources":["../../src/proxy/chain-read-cache.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;IACnF,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC,CAAA;IAClD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACpH,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACxB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACxB,GAAG,GAAG,GAAG,CAAA;IACT,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACtE,GAAG,GAAG,KAAK,CAAA;IACX,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACtE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AACxB,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;IAChH,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,CAAA;IAChC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1E,GAAG,GAAG,GAAG,CAAA;IACT,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAA;IACzF,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;IACrD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACtB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACvC,GAAG,GAAG,KAAK,CAAA,CAAC,uCAAuC;IACnD,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AACrG,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;IAC9G,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1E,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,KAAK,EAAE,CAAA;QACP,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;QAChC,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;IAC3C,IAAI,GAAG,IAAI,CAAA;IACX,GAAG,GAAG,GAAG,CAAA;IACT,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;IACxG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACtB,GAAG,GAAG,KAAK,CAAA;IACX,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACvE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAA;IAC1D,GAAG,GAAG,MAAM,CAAA;IACZ,IAAI,GAAG,KAAK,CAAA;IACZ,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9G,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AACxB,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;IACxF,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;IAC7D,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;IACnE,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;IACnE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AACxB,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAClD,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IAC3B,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC5G,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACzH,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACxB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AACxB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface FakeChainRpc {
|
|
2
|
+
url: string;
|
|
3
|
+
/** HTTP requests received, in total and by JSON-RPC method (an `aggregate3` counts once as `eth_call`). */
|
|
4
|
+
requests: number;
|
|
5
|
+
byMethod: Record<string, number>;
|
|
6
|
+
/** Calls answered inside `aggregate3` batches. */
|
|
7
|
+
batchedCalls: number;
|
|
8
|
+
usdc: Map<string, bigint>;
|
|
9
|
+
deposits: Map<string, {
|
|
10
|
+
available: bigint;
|
|
11
|
+
reserved: bigint;
|
|
12
|
+
}>;
|
|
13
|
+
creditLimit: bigint;
|
|
14
|
+
operators: Map<string, string>;
|
|
15
|
+
/** Answer the next N requests (Infinity: all) with HTTP 429. */
|
|
16
|
+
rateLimit(count: number): void;
|
|
17
|
+
/** Answer with JSON-RPC error -32005 instead of HTTP 429. */
|
|
18
|
+
rateLimitStyle: 'http' | 'jsonrpc';
|
|
19
|
+
/** Forget the counters. */
|
|
20
|
+
reset(): void;
|
|
21
|
+
close(): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export declare function startFakeChainRpc(options?: {
|
|
24
|
+
evmChainId?: number;
|
|
25
|
+
multicall?: boolean;
|
|
26
|
+
port?: number;
|
|
27
|
+
host?: string;
|
|
28
|
+
}): Promise<FakeChainRpc>;
|
|
29
|
+
/** ABI-encode a uint256 (for tests that hand-craft responses). */
|
|
30
|
+
export declare function encodeUint(value: bigint): string;
|
|
31
|
+
//# sourceMappingURL=chain-rpc-test-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-rpc-test-support.d.ts","sourceRoot":"","sources":["../../src/proxy/chain-rpc-test-support.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,2GAA2G;IAC3G,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9D,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,gEAAgE;IAChE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,6DAA6D;IAC7D,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,2BAA2B;IAC3B,KAAK,IAAI,IAAI,CAAA;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CA+GvJ;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fake Base JSON-RPC endpoint for tests and `scripts/rpc-budget.mjs`:
|
|
3
|
+
* answers the reads the buyer and gateway make (USDC balances, deposits
|
|
4
|
+
* balances, credit limit, operator, Multicall3 `aggregate3`), counts every
|
|
5
|
+
* HTTP request by method, and can be told to rate-limit. Anything it does
|
|
6
|
+
* not know returns a zero word, which decodes as 0 / false / the zero address.
|
|
7
|
+
*/
|
|
8
|
+
import { createServer } from 'node:http';
|
|
9
|
+
import { AbiCoder, Interface } from 'ethers';
|
|
10
|
+
import { MULTICALL3_ADDRESS } from './chain-rpc.js';
|
|
11
|
+
const READS = new Interface([
|
|
12
|
+
'function balanceOf(address owner) view returns (uint256)',
|
|
13
|
+
'function getBuyerBalance(address buyer) view returns (uint256 available, uint256 reserved, uint256 lastActivityAt)',
|
|
14
|
+
'function getBuyerCreditLimit(address buyer) view returns (uint256)',
|
|
15
|
+
'function getOperator(address buyer) view returns (address)',
|
|
16
|
+
'function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
|
|
17
|
+
]);
|
|
18
|
+
const ZERO_WORD = '0x' + '0'.repeat(64);
|
|
19
|
+
export async function startFakeChainRpc(options = {}) {
|
|
20
|
+
const evmChainId = options.evmChainId ?? 8453;
|
|
21
|
+
const multicall = options.multicall !== false;
|
|
22
|
+
let limited = 0;
|
|
23
|
+
const fake = {
|
|
24
|
+
url: '',
|
|
25
|
+
requests: 0,
|
|
26
|
+
byMethod: {},
|
|
27
|
+
batchedCalls: 0,
|
|
28
|
+
usdc: new Map(),
|
|
29
|
+
deposits: new Map(),
|
|
30
|
+
creditLimit: 100000000n,
|
|
31
|
+
operators: new Map(),
|
|
32
|
+
rateLimit: (count) => { limited = count; },
|
|
33
|
+
rateLimitStyle: 'http',
|
|
34
|
+
reset: () => {
|
|
35
|
+
fake.requests = 0;
|
|
36
|
+
fake.byMethod = {};
|
|
37
|
+
fake.batchedCalls = 0;
|
|
38
|
+
},
|
|
39
|
+
close: async () => {
|
|
40
|
+
await new Promise((resolve) => server.close(() => resolve()));
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
const call = (to, data) => {
|
|
44
|
+
if (multicall && to.toLowerCase() === MULTICALL3_ADDRESS.toLowerCase()) {
|
|
45
|
+
const [calls] = READS.decodeFunctionData('aggregate3', data);
|
|
46
|
+
fake.batchedCalls += calls.length;
|
|
47
|
+
const results = calls.map((entry) => call(entry.target, entry.callData));
|
|
48
|
+
return { success: true, returnData: READS.encodeFunctionResult('aggregate3', [results]) };
|
|
49
|
+
}
|
|
50
|
+
let parsed;
|
|
51
|
+
try {
|
|
52
|
+
parsed = READS.parseTransaction({ data });
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
parsed = null;
|
|
56
|
+
}
|
|
57
|
+
const owner = parsed?.args[0] && typeof parsed.args[0] === 'string' ? parsed.args[0].toLowerCase() : '';
|
|
58
|
+
switch (parsed?.name) {
|
|
59
|
+
case 'balanceOf': return { success: true, returnData: READS.encodeFunctionResult('balanceOf', [fake.usdc.get(owner) ?? 0n]) };
|
|
60
|
+
case 'getBuyerBalance': {
|
|
61
|
+
const balance = fake.deposits.get(owner) ?? { available: 0n, reserved: 0n };
|
|
62
|
+
return { success: true, returnData: READS.encodeFunctionResult('getBuyerBalance', [balance.available, balance.reserved, 0n]) };
|
|
63
|
+
}
|
|
64
|
+
case 'getBuyerCreditLimit': return { success: true, returnData: READS.encodeFunctionResult('getBuyerCreditLimit', [fake.creditLimit]) };
|
|
65
|
+
case 'getOperator': return { success: true, returnData: READS.encodeFunctionResult('getOperator', [fake.operators.get(owner) ?? '0x' + '0'.repeat(40)]) };
|
|
66
|
+
default: return { success: true, returnData: ZERO_WORD };
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const answer = (request) => {
|
|
70
|
+
const id = request.id ?? null;
|
|
71
|
+
const method = request.method ?? '';
|
|
72
|
+
const params = request.params ?? [];
|
|
73
|
+
switch (method) {
|
|
74
|
+
case 'eth_chainId': return { jsonrpc: '2.0', id, result: '0x' + evmChainId.toString(16) };
|
|
75
|
+
case 'net_version': return { jsonrpc: '2.0', id, result: String(evmChainId) };
|
|
76
|
+
case 'eth_blockNumber': return { jsonrpc: '2.0', id, result: '0x100' };
|
|
77
|
+
case 'eth_getBalance':
|
|
78
|
+
case 'eth_getTransactionCount': return { jsonrpc: '2.0', id, result: '0x0' };
|
|
79
|
+
case 'eth_gasPrice': return { jsonrpc: '2.0', id, result: '0x1' };
|
|
80
|
+
case 'eth_getCode': {
|
|
81
|
+
const address = String(params[0] ?? '').toLowerCase();
|
|
82
|
+
const deployed = address !== MULTICALL3_ADDRESS.toLowerCase() || multicall;
|
|
83
|
+
return { jsonrpc: '2.0', id, result: deployed ? '0x6080604052' : '0x' };
|
|
84
|
+
}
|
|
85
|
+
case 'eth_getLogs': return { jsonrpc: '2.0', id, result: [] };
|
|
86
|
+
case 'eth_getTransactionReceipt': return { jsonrpc: '2.0', id, result: null };
|
|
87
|
+
case 'eth_call': {
|
|
88
|
+
const tx = (params[0] ?? {});
|
|
89
|
+
const result = call(tx.to ?? '', tx.data ?? tx.input ?? '0x');
|
|
90
|
+
return result.success
|
|
91
|
+
? { jsonrpc: '2.0', id, result: result.returnData }
|
|
92
|
+
: { jsonrpc: '2.0', id, error: { code: 3, message: 'execution reverted', data: result.returnData } };
|
|
93
|
+
}
|
|
94
|
+
default: return { jsonrpc: '2.0', id, error: { code: -32601, message: `method ${method} not supported by the fake RPC` } };
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
const server = createServer((req, res) => {
|
|
98
|
+
const chunks = [];
|
|
99
|
+
req.on('data', (chunk) => chunks.push(chunk));
|
|
100
|
+
req.on('end', () => {
|
|
101
|
+
fake.requests++;
|
|
102
|
+
let body;
|
|
103
|
+
try {
|
|
104
|
+
body = JSON.parse(Buffer.concat(chunks).toString('utf8') || 'null');
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
res.writeHead(400).end();
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const entries = (Array.isArray(body) ? body : [body]);
|
|
111
|
+
for (const entry of entries)
|
|
112
|
+
fake.byMethod[entry.method ?? '?'] = (fake.byMethod[entry.method ?? '?'] ?? 0) + 1;
|
|
113
|
+
if (limited > 0) {
|
|
114
|
+
limited--;
|
|
115
|
+
if (fake.rateLimitStyle === 'http') {
|
|
116
|
+
res.writeHead(429, { 'content-type': 'application/json', 'retry-after': '1' }).end(JSON.stringify({ error: 'rate limited' }));
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const errors = entries.map((entry) => ({ jsonrpc: '2.0', id: entry.id ?? null, error: { code: -32005, message: 'rate limit exceeded' } }));
|
|
120
|
+
res.writeHead(200, { 'content-type': 'application/json' }).end(JSON.stringify(Array.isArray(body) ? errors : errors[0]));
|
|
121
|
+
}
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const results = entries.map(answer);
|
|
125
|
+
res.writeHead(200, { 'content-type': 'application/json' }).end(JSON.stringify(Array.isArray(body) ? results : results[0]));
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
await new Promise((resolve) => server.listen(options.port ?? 0, options.host ?? '127.0.0.1', () => resolve()));
|
|
129
|
+
fake.url = `http://127.0.0.1:${server.address().port}`;
|
|
130
|
+
return fake;
|
|
131
|
+
}
|
|
132
|
+
/** ABI-encode a uint256 (for tests that hand-craft responses). */
|
|
133
|
+
export function encodeUint(value) {
|
|
134
|
+
return AbiCoder.defaultAbiCoder().encode(['uint256'], [value]);
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=chain-rpc-test-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-rpc-test-support.js","sourceRoot":"","sources":["../../src/proxy/chain-rpc-test-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The JSON-RPC client every chain read in the buyer and gateway processes
|
|
3
|
+
* goes through: one provider per chain per process (`sharedChainProvider`),
|
|
4
|
+
* so public endpoints (mainnet.base.org and friends) that throttle per IP
|
|
5
|
+
* see as few requests as possible.
|
|
6
|
+
*
|
|
7
|
+
* - Identical reads in flight at once share one request.
|
|
8
|
+
* - `eth_call`s issued together (a `Promise.all` of contract reads, one
|
|
9
|
+
* tick of the deposit watcher for N wallets) are folded into a single
|
|
10
|
+
* Multicall3 `aggregate3` call, for an allow-list of caller-independent
|
|
11
|
+
* views (`BATCHABLE_SELECTORS`).
|
|
12
|
+
* - Chain constants (`eth_chainId`, deployed contract code) are remembered.
|
|
13
|
+
* - An endpoint that answers 429 / JSON-RPC -32005 / 5xx / a network error
|
|
14
|
+
* is skipped for an exponentially growing, jittered period and the call
|
|
15
|
+
* moves to the next endpoint. When every endpoint is backing off the call
|
|
16
|
+
* fails at once with `RpcUnavailableError` without touching the network,
|
|
17
|
+
* so callers serve cached data instead of hammering.
|
|
18
|
+
* - Requests are paced per endpoint so a burst never exceeds a few per second.
|
|
19
|
+
*/
|
|
20
|
+
import { JsonRpcProvider, type JsonRpcPayload, type JsonRpcResult } from 'ethers';
|
|
21
|
+
export interface RpcTransportResponse {
|
|
22
|
+
status: number;
|
|
23
|
+
/** Parsed JSON body, or null when the body is not JSON. */
|
|
24
|
+
body: unknown;
|
|
25
|
+
/** From a `Retry-After` header, when the endpoint sent one. */
|
|
26
|
+
retryAfterMs?: number | null;
|
|
27
|
+
}
|
|
28
|
+
export type RpcTransport = (url: string, body: string) => Promise<RpcTransportResponse>;
|
|
29
|
+
export interface ChainRpcOptions {
|
|
30
|
+
transport?: RpcTransport;
|
|
31
|
+
now?: () => number;
|
|
32
|
+
random?: () => number;
|
|
33
|
+
/** How long concurrent `eth_call`s are collected into one Multicall3 call; null disables batching. */
|
|
34
|
+
batchWindowMs?: number | null;
|
|
35
|
+
/** Calls per Multicall3 batch. */
|
|
36
|
+
maxBatchSize?: number;
|
|
37
|
+
/** First back-off after an endpoint throttles or fails; doubles per consecutive failure. */
|
|
38
|
+
backoffBaseMs?: number;
|
|
39
|
+
backoffMaxMs?: number;
|
|
40
|
+
/** Sustained requests per second per endpoint (bursts of the same size are allowed). */
|
|
41
|
+
requestsPerSecond?: number;
|
|
42
|
+
multicallAddress?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface ChainRpcStats {
|
|
45
|
+
/** HTTP requests sent to RPC endpoints. */
|
|
46
|
+
requests: number;
|
|
47
|
+
/** JSON-RPC calls asked of the provider, by method (before coalescing, batching and caching). */
|
|
48
|
+
calls: Record<string, number>;
|
|
49
|
+
coalesced: number;
|
|
50
|
+
/** `eth_call`s that went out inside a Multicall3 batch. */
|
|
51
|
+
batchedCalls: number;
|
|
52
|
+
cacheHits: number;
|
|
53
|
+
rateLimited: number;
|
|
54
|
+
/** Calls refused locally because every endpoint was backing off. */
|
|
55
|
+
shortCircuited: number;
|
|
56
|
+
}
|
|
57
|
+
/** Every endpoint is backing off (or just failed); serve cached data and retry after `retryAt`. */
|
|
58
|
+
export declare class RpcUnavailableError extends Error {
|
|
59
|
+
readonly retryAt: number;
|
|
60
|
+
readonly code = "RPC_UNAVAILABLE";
|
|
61
|
+
constructor(message: string, retryAt: number);
|
|
62
|
+
}
|
|
63
|
+
export declare const MULTICALL3_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
64
|
+
export declare class ChainRpcProvider extends JsonRpcProvider {
|
|
65
|
+
private readonly endpoints;
|
|
66
|
+
private readonly transport;
|
|
67
|
+
private readonly now;
|
|
68
|
+
private readonly random;
|
|
69
|
+
private readonly batchWindowMs;
|
|
70
|
+
private readonly maxBatchSize;
|
|
71
|
+
private readonly backoffBaseMs;
|
|
72
|
+
private readonly backoffMaxMs;
|
|
73
|
+
private readonly rps;
|
|
74
|
+
private readonly multicallAddress;
|
|
75
|
+
private readonly inflight;
|
|
76
|
+
private readonly constants;
|
|
77
|
+
private queue;
|
|
78
|
+
private flushTimer;
|
|
79
|
+
private multicall;
|
|
80
|
+
private readonly counters;
|
|
81
|
+
constructor(urls: string[], evmChainId?: number, options?: ChainRpcOptions);
|
|
82
|
+
get urls(): string[];
|
|
83
|
+
stats(): ChainRpcStats;
|
|
84
|
+
/** When the next request could go out; 0 while some endpoint is usable. */
|
|
85
|
+
get unavailableUntil(): number;
|
|
86
|
+
_send(payload: JsonRpcPayload | JsonRpcPayload[]): Promise<JsonRpcResult[]>;
|
|
87
|
+
private one;
|
|
88
|
+
/** `eth_chainId` forever; contract code for an hour (an empty account for ten minutes). */
|
|
89
|
+
private remember;
|
|
90
|
+
private batchable;
|
|
91
|
+
private enqueue;
|
|
92
|
+
private flushSoon;
|
|
93
|
+
private flush;
|
|
94
|
+
private sendEach;
|
|
95
|
+
/** Multicall3 is probed once per process (its code is then cached like any other). */
|
|
96
|
+
private multicallDeployed;
|
|
97
|
+
private request;
|
|
98
|
+
/** Sends one payload to the first endpoint not backing off, moving on when one throttles or fails. */
|
|
99
|
+
private transmit;
|
|
100
|
+
/** Exponential back-off with "equal jitter": half the delay fixed, half random. */
|
|
101
|
+
private trip;
|
|
102
|
+
private pace;
|
|
103
|
+
destroy(): void;
|
|
104
|
+
}
|
|
105
|
+
/** An RPC URL without its path or query, which is where providers put API keys. */
|
|
106
|
+
export declare function redact(url: string): string;
|
|
107
|
+
export interface ChainRpcTarget {
|
|
108
|
+
evmChainId: number;
|
|
109
|
+
rpcUrl: string;
|
|
110
|
+
fallbackRpcUrls?: string[];
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The process's provider for a chain and endpoint list; built once, reused by every reader.
|
|
114
|
+
* Batched reads run inside Multicall3, with `msg.sender` = Multicall3 rather
|
|
115
|
+
* than the zero address or a `from`: a read whose answer depends on the caller
|
|
116
|
+
* must not be added to `BATCHABLE_SELECTORS`.
|
|
117
|
+
*/
|
|
118
|
+
export declare function sharedChainProvider(chain: ChainRpcTarget, options?: ChainRpcOptions): ChainRpcProvider;
|
|
119
|
+
/** For tests. */
|
|
120
|
+
export declare function resetSharedChainProviders(): void;
|
|
121
|
+
//# sourceMappingURL=chain-rpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-rpc.d.ts","sourceRoot":"","sources":["../../src/proxy/chain-rpc.ts"],"names":[],"mappings":"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"}
|