@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,156 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
export declare const SESSION_IDLE_MS: number;
|
|
3
|
+
export declare const SESSION_ABSOLUTE_MS: number;
|
|
4
|
+
export declare const SETUP_TOKEN_TTL_MS: number;
|
|
5
|
+
/** How recent a sign-in must be for sensitive actions (operator authorizations). */
|
|
6
|
+
export declare const FRESH_SIGN_IN_MS: number;
|
|
7
|
+
/**
|
|
8
|
+
* A wallet credential must be this old before it can be authorized as a
|
|
9
|
+
* workspace wallet's operator: a stolen session that links its own wallet
|
|
10
|
+
* can't turn it into an operator before the owner notices (the add is audited).
|
|
11
|
+
*/
|
|
12
|
+
export declare const OPERATOR_WALLET_MIN_AGE_MS: number;
|
|
13
|
+
/** Unauthenticated endpoints write challenges and nonces; keep at most this many live rows of each. */
|
|
14
|
+
export declare const MAX_PENDING_TICKETS = 5000;
|
|
15
|
+
export declare const WALLET_NONCE_TTL_MS: number;
|
|
16
|
+
export declare const OIDC_STATE_TTL_MS: number;
|
|
17
|
+
export declare function sha256Hex(value: string): string;
|
|
18
|
+
export declare function randomToken(bytes?: number): string;
|
|
19
|
+
export interface SessionRow {
|
|
20
|
+
id: string;
|
|
21
|
+
kind: 'member' | 'key';
|
|
22
|
+
member_id: string | null;
|
|
23
|
+
key_id: string | null;
|
|
24
|
+
created_at: number;
|
|
25
|
+
expires_at: number;
|
|
26
|
+
last_seen_at: number;
|
|
27
|
+
authenticated_at: number | null;
|
|
28
|
+
authenticated_credential_id: string | null;
|
|
29
|
+
}
|
|
30
|
+
export interface CredentialRow {
|
|
31
|
+
id: string;
|
|
32
|
+
member_id: string;
|
|
33
|
+
kind: 'passkey' | 'wallet' | 'oidc';
|
|
34
|
+
label: string;
|
|
35
|
+
webauthn_id: string | null;
|
|
36
|
+
public_key: Buffer | null;
|
|
37
|
+
counter: number | null;
|
|
38
|
+
transports: string | null;
|
|
39
|
+
wallet_address: string | null;
|
|
40
|
+
oidc_issuer: string | null;
|
|
41
|
+
oidc_subject: string | null;
|
|
42
|
+
created_at: number;
|
|
43
|
+
last_used_at: number | null;
|
|
44
|
+
}
|
|
45
|
+
export type NewCredential = {
|
|
46
|
+
kind: 'passkey';
|
|
47
|
+
label: string;
|
|
48
|
+
webauthnId: string;
|
|
49
|
+
publicKey: Uint8Array;
|
|
50
|
+
counter: number;
|
|
51
|
+
transports: string[];
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'wallet';
|
|
54
|
+
label: string;
|
|
55
|
+
address: string;
|
|
56
|
+
} | {
|
|
57
|
+
kind: 'oidc';
|
|
58
|
+
label: string;
|
|
59
|
+
issuer: string;
|
|
60
|
+
subject: string;
|
|
61
|
+
};
|
|
62
|
+
/** Auth's own rows: sessions, credentials and short-lived login tickets. Secrets are stored as SHA-256 hashes. */
|
|
63
|
+
export declare class AuthDb {
|
|
64
|
+
private readonly _db;
|
|
65
|
+
private readonly _now;
|
|
66
|
+
constructor(_db: Database.Database, _now: () => number);
|
|
67
|
+
/**
|
|
68
|
+
* The version is read and bumped inside one IMMEDIATE transaction (it holds
|
|
69
|
+
* the write lock), so processes opening the database at once never apply a
|
|
70
|
+
* migration twice.
|
|
71
|
+
*/
|
|
72
|
+
private _migrate;
|
|
73
|
+
transaction<T>(fn: () => T): T;
|
|
74
|
+
/** Drops expired tickets and sessions; cheap enough to run on every login. */
|
|
75
|
+
sweep(): void;
|
|
76
|
+
getMeta(key: string): string | null;
|
|
77
|
+
setMeta(key: string, value: string): void;
|
|
78
|
+
/** Returns the cookie value; only its hash is stored. */
|
|
79
|
+
createSession(principal: {
|
|
80
|
+
kind: 'member';
|
|
81
|
+
memberId: string;
|
|
82
|
+
} | {
|
|
83
|
+
kind: 'key';
|
|
84
|
+
keyId: string;
|
|
85
|
+
}, client: {
|
|
86
|
+
userAgent: string | null;
|
|
87
|
+
ip: string | null;
|
|
88
|
+
}, credentialId?: string | null): string;
|
|
89
|
+
/** Resolves a live session by cookie value and records activity; null when unknown, idle or expired. */
|
|
90
|
+
findSession(secret: string): SessionRow | null;
|
|
91
|
+
deleteSession(id: string): void;
|
|
92
|
+
/** Records a new sign-in proof on an existing session (re-authentication); false when the session is gone. */
|
|
93
|
+
markAuthenticated(id: string, credentialId: string | null): boolean;
|
|
94
|
+
deleteSessionBySecret(secret: string): void;
|
|
95
|
+
deleteMemberSessions(memberId: string): number;
|
|
96
|
+
/** Ends a member's sessions except `keepId` (the caller's own, when they act on themselves). */
|
|
97
|
+
deleteMemberSessionsExcept(memberId: string, keepId: string | null): number;
|
|
98
|
+
deleteKeySessions(keyId: string): number;
|
|
99
|
+
addCredential(memberId: string, credential: NewCredential): CredentialRow;
|
|
100
|
+
getCredential(id: string): CredentialRow | null;
|
|
101
|
+
listCredentials(memberId: string): CredentialRow[];
|
|
102
|
+
countCredentials(memberId: string): number;
|
|
103
|
+
deleteCredential(memberId: string, id: string): boolean;
|
|
104
|
+
findPasskey(webauthnId: string): CredentialRow | null;
|
|
105
|
+
findWallet(address: string): CredentialRow | null;
|
|
106
|
+
findOidc(issuer: string, subject: string): CredentialRow | null;
|
|
107
|
+
touchCredential(id: string, counter?: number): void;
|
|
108
|
+
createEnrollment(memberId: string): string;
|
|
109
|
+
/** Member id of a live enrollment, without consuming it. */
|
|
110
|
+
peekEnrollment(secret: string): string | null;
|
|
111
|
+
consumeEnrollment(secret: string): string | null;
|
|
112
|
+
/** Only the newest setup link works: issuing one retires unused earlier ones. */
|
|
113
|
+
createSetupToken(): string;
|
|
114
|
+
consumeSetupToken(secret: string): boolean;
|
|
115
|
+
/** Drops expired rows of a ticket table, then the oldest ones beyond the cap. */
|
|
116
|
+
private _capTickets;
|
|
117
|
+
saveChallenge(challenge: string, kind: 'register' | 'login', memberId: string | null): void;
|
|
118
|
+
/** Single use: the row is deleted whether or not the response then verifies. */
|
|
119
|
+
takeChallenge(challenge: string, kind: 'register' | 'login'): {
|
|
120
|
+
memberId: string | null;
|
|
121
|
+
} | null;
|
|
122
|
+
saveWalletNonce(nonce: string, address: string, message: string, expiresAt: number): void;
|
|
123
|
+
takeWalletNonce(nonce: string): {
|
|
124
|
+
address: string;
|
|
125
|
+
message: string;
|
|
126
|
+
} | null;
|
|
127
|
+
saveOidcState(state: string, input: {
|
|
128
|
+
nonce: string;
|
|
129
|
+
codeVerifier: string;
|
|
130
|
+
enrollment: string | null;
|
|
131
|
+
}): void;
|
|
132
|
+
takeOidcState(state: string): {
|
|
133
|
+
nonce: string;
|
|
134
|
+
codeVerifier: string;
|
|
135
|
+
enrollmentHash: string | null;
|
|
136
|
+
} | null;
|
|
137
|
+
/** Consumes an enrollment by its stored hash (the OIDC state carries the hash, not the secret). */
|
|
138
|
+
consumeEnrollmentHash(hash: string): string | null;
|
|
139
|
+
}
|
|
140
|
+
/** The sign-in behind a console session: when it happened and with which credential (null: unknown, e.g. older sessions). */
|
|
141
|
+
export declare function sessionSignIn(db: Database.Database, sessionId: string): {
|
|
142
|
+
authenticatedAt: number;
|
|
143
|
+
credentialId: string | null;
|
|
144
|
+
} | null;
|
|
145
|
+
/** A member's wallet credentials (lower-case addresses) with when each was added, plus how many credentials they have in all. */
|
|
146
|
+
export declare function memberWalletCredentials(db: Database.Database, memberId: string): {
|
|
147
|
+
wallets: Array<{
|
|
148
|
+
id: string;
|
|
149
|
+
address: string;
|
|
150
|
+
createdAt: number;
|
|
151
|
+
}>;
|
|
152
|
+
total: number;
|
|
153
|
+
};
|
|
154
|
+
/** Lower-case addresses of the wallets a member has proven (SIWE) as sign-in methods. */
|
|
155
|
+
export declare function memberWalletAddresses(db: Database.Database, memberId: string): string[];
|
|
156
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/gateway/auth/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAuF1C,eAAO,MAAM,eAAe,QAAsB,CAAA;AAClD,eAAO,MAAM,mBAAmB,QAA2B,CAAA;AAE3D,eAAO,MAAM,kBAAkB,QAAiB,CAAA;AAChD,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,QAAgB,CAAA;AAC7C;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAsB,CAAA;AAC7D,uGAAuG;AACvG,eAAO,MAAM,mBAAmB,OAAO,CAAA;AAEvC,eAAO,MAAM,mBAAmB,QAAiB,CAAA;AACjD,eAAO,MAAM,iBAAiB,QAAiB,CAAA;AAI/C,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,KAAK,SAAK,GAAG,MAAM,CAE9C;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,GACpH;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpE,kHAAkH;AAClH,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAqB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAA7C,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAmB,IAAI,EAAE,MAAM,MAAM;IAIxF;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAgBhB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI9B,8EAA8E;IAC9E,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMzC,yDAAyD;IACzD,aAAa,CACX,SAAS,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAChF,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EACvD,YAAY,GAAE,MAAM,GAAG,IAAW,GACjC,MAAM;IAeT,wGAAwG;IACxG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAgB9C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI/B,8GAA8G;IAC9G,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAKnE,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C,gGAAgG;IAChG,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAK3E,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAMxC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,aAAa;IAmBzE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAI/C,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE;IAIlD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAIvD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAIrD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAIjD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAI/D,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAUnD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ1C,4DAA4D;IAC5D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQhD,iFAAiF;IACjF,gBAAgB,IAAI,MAAM;IAW1B,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ1C,iFAAiF;IACjF,OAAO,CAAC,WAAW;IASnB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAO3F,gFAAgF;IAChF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAUhG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAMzF,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAU3E,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAM7G,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAS3G,mGAAmG;IACnG,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAOnD;AAED,6HAA6H;AAC7H,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAQvI;AAED,iIAAiI;AACjI,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAYtK;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAQvF"}
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import { createHash, randomBytes } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Auth tables share the gateway database but track their own schema version.
|
|
4
|
+
* Append-only once shipped; v1 has not shipped yet, so columns still go
|
|
5
|
+
* straight into it.
|
|
6
|
+
*/
|
|
7
|
+
const MIGRATIONS = [
|
|
8
|
+
`
|
|
9
|
+
CREATE TABLE auth_sessions (
|
|
10
|
+
id TEXT PRIMARY KEY,
|
|
11
|
+
kind TEXT NOT NULL CHECK (kind IN ('member', 'key')),
|
|
12
|
+
member_id TEXT,
|
|
13
|
+
key_id TEXT,
|
|
14
|
+
created_at INTEGER NOT NULL,
|
|
15
|
+
expires_at INTEGER NOT NULL,
|
|
16
|
+
last_seen_at INTEGER NOT NULL,
|
|
17
|
+
user_agent TEXT,
|
|
18
|
+
ip TEXT,
|
|
19
|
+
-- When the session's sign-in happened (a passkey, wallet or SSO proof);
|
|
20
|
+
-- sensitive actions need a recent one.
|
|
21
|
+
authenticated_at INTEGER,
|
|
22
|
+
-- Which credential proved that sign-in, so a sensitive action can insist
|
|
23
|
+
-- on a proof other than the credential it concerns.
|
|
24
|
+
authenticated_credential_id TEXT
|
|
25
|
+
);
|
|
26
|
+
CREATE INDEX auth_sessions_member ON auth_sessions(member_id);
|
|
27
|
+
CREATE INDEX auth_sessions_key ON auth_sessions(key_id);
|
|
28
|
+
CREATE TABLE auth_credentials (
|
|
29
|
+
id TEXT PRIMARY KEY,
|
|
30
|
+
member_id TEXT NOT NULL,
|
|
31
|
+
kind TEXT NOT NULL CHECK (kind IN ('passkey', 'wallet', 'oidc')),
|
|
32
|
+
label TEXT NOT NULL,
|
|
33
|
+
webauthn_id TEXT UNIQUE,
|
|
34
|
+
public_key BLOB,
|
|
35
|
+
counter INTEGER,
|
|
36
|
+
transports TEXT,
|
|
37
|
+
wallet_address TEXT UNIQUE,
|
|
38
|
+
oidc_issuer TEXT,
|
|
39
|
+
oidc_subject TEXT,
|
|
40
|
+
created_at INTEGER NOT NULL,
|
|
41
|
+
last_used_at INTEGER,
|
|
42
|
+
UNIQUE (oidc_issuer, oidc_subject)
|
|
43
|
+
);
|
|
44
|
+
CREATE INDEX auth_credentials_member ON auth_credentials(member_id);
|
|
45
|
+
CREATE TABLE auth_enrollments (
|
|
46
|
+
token_hash TEXT PRIMARY KEY,
|
|
47
|
+
member_id TEXT NOT NULL,
|
|
48
|
+
created_at INTEGER NOT NULL,
|
|
49
|
+
expires_at INTEGER NOT NULL
|
|
50
|
+
);
|
|
51
|
+
CREATE TABLE auth_setup_tokens (
|
|
52
|
+
token_hash TEXT PRIMARY KEY,
|
|
53
|
+
created_at INTEGER NOT NULL,
|
|
54
|
+
expires_at INTEGER NOT NULL,
|
|
55
|
+
used_at INTEGER
|
|
56
|
+
);
|
|
57
|
+
CREATE TABLE auth_challenges (
|
|
58
|
+
challenge TEXT PRIMARY KEY,
|
|
59
|
+
kind TEXT NOT NULL CHECK (kind IN ('register', 'login')),
|
|
60
|
+
member_id TEXT,
|
|
61
|
+
created_at INTEGER NOT NULL,
|
|
62
|
+
expires_at INTEGER NOT NULL
|
|
63
|
+
);
|
|
64
|
+
CREATE TABLE auth_wallet_nonces (
|
|
65
|
+
nonce TEXT PRIMARY KEY,
|
|
66
|
+
address TEXT NOT NULL,
|
|
67
|
+
message TEXT NOT NULL,
|
|
68
|
+
created_at INTEGER NOT NULL,
|
|
69
|
+
expires_at INTEGER NOT NULL
|
|
70
|
+
);
|
|
71
|
+
CREATE TABLE auth_oidc_states (
|
|
72
|
+
state_hash TEXT PRIMARY KEY,
|
|
73
|
+
nonce TEXT NOT NULL,
|
|
74
|
+
code_verifier TEXT NOT NULL,
|
|
75
|
+
enrollment_hash TEXT,
|
|
76
|
+
created_at INTEGER NOT NULL,
|
|
77
|
+
expires_at INTEGER NOT NULL
|
|
78
|
+
);
|
|
79
|
+
CREATE TABLE auth_meta (
|
|
80
|
+
key TEXT PRIMARY KEY,
|
|
81
|
+
value TEXT NOT NULL
|
|
82
|
+
);
|
|
83
|
+
`,
|
|
84
|
+
];
|
|
85
|
+
export const SESSION_IDLE_MS = 12 * 60 * 60 * 1000;
|
|
86
|
+
export const SESSION_ABSOLUTE_MS = 14 * 24 * 60 * 60 * 1000;
|
|
87
|
+
const ENROLLMENT_TTL_MS = 15 * 60 * 1000;
|
|
88
|
+
export const SETUP_TOKEN_TTL_MS = 60 * 60 * 1000;
|
|
89
|
+
/** How recent a sign-in must be for sensitive actions (operator authorizations). */
|
|
90
|
+
export const FRESH_SIGN_IN_MS = 5 * 60 * 1000;
|
|
91
|
+
/**
|
|
92
|
+
* A wallet credential must be this old before it can be authorized as a
|
|
93
|
+
* workspace wallet's operator: a stolen session that links its own wallet
|
|
94
|
+
* can't turn it into an operator before the owner notices (the add is audited).
|
|
95
|
+
*/
|
|
96
|
+
export const OPERATOR_WALLET_MIN_AGE_MS = 24 * 60 * 60 * 1000;
|
|
97
|
+
/** Unauthenticated endpoints write challenges and nonces; keep at most this many live rows of each. */
|
|
98
|
+
export const MAX_PENDING_TICKETS = 5000;
|
|
99
|
+
const CHALLENGE_TTL_MS = 5 * 60 * 1000;
|
|
100
|
+
export const WALLET_NONCE_TTL_MS = 10 * 60 * 1000;
|
|
101
|
+
export const OIDC_STATE_TTL_MS = 10 * 60 * 1000;
|
|
102
|
+
/** Sessions record activity at most this often, so reads don't write on every request. */
|
|
103
|
+
const SESSION_TOUCH_MS = 60 * 1000;
|
|
104
|
+
export function sha256Hex(value) {
|
|
105
|
+
return createHash('sha256').update(value, 'utf8').digest('hex');
|
|
106
|
+
}
|
|
107
|
+
export function randomToken(bytes = 32) {
|
|
108
|
+
return randomBytes(bytes).toString('base64url');
|
|
109
|
+
}
|
|
110
|
+
/** Auth's own rows: sessions, credentials and short-lived login tickets. Secrets are stored as SHA-256 hashes. */
|
|
111
|
+
export class AuthDb {
|
|
112
|
+
_db;
|
|
113
|
+
_now;
|
|
114
|
+
constructor(_db, _now) {
|
|
115
|
+
this._db = _db;
|
|
116
|
+
this._now = _now;
|
|
117
|
+
this._migrate();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The version is read and bumped inside one IMMEDIATE transaction (it holds
|
|
121
|
+
* the write lock), so processes opening the database at once never apply a
|
|
122
|
+
* migration twice.
|
|
123
|
+
*/
|
|
124
|
+
_migrate() {
|
|
125
|
+
const current = this._db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'auth_schema_version'").get()
|
|
126
|
+
? this._db.prepare('SELECT version FROM auth_schema_version').get()?.version
|
|
127
|
+
: undefined;
|
|
128
|
+
if (current !== undefined && current >= MIGRATIONS.length)
|
|
129
|
+
return;
|
|
130
|
+
this._db.transaction(() => {
|
|
131
|
+
this._db.exec('CREATE TABLE IF NOT EXISTS auth_schema_version (version INTEGER NOT NULL)');
|
|
132
|
+
const row = this._db.prepare('SELECT version FROM auth_schema_version').get();
|
|
133
|
+
if (!row)
|
|
134
|
+
this._db.prepare('INSERT INTO auth_schema_version (version) VALUES (0)').run();
|
|
135
|
+
for (let index = row?.version ?? 0; index < MIGRATIONS.length; index += 1) {
|
|
136
|
+
this._db.exec(MIGRATIONS[index]);
|
|
137
|
+
this._db.prepare('UPDATE auth_schema_version SET version = ?').run(index + 1);
|
|
138
|
+
}
|
|
139
|
+
}).immediate();
|
|
140
|
+
}
|
|
141
|
+
transaction(fn) {
|
|
142
|
+
return this._db.transaction(fn)();
|
|
143
|
+
}
|
|
144
|
+
/** Drops expired tickets and sessions; cheap enough to run on every login. */
|
|
145
|
+
sweep() {
|
|
146
|
+
const now = this._now();
|
|
147
|
+
this._db.prepare('DELETE FROM auth_sessions WHERE expires_at <= ? OR last_seen_at <= ?').run(now, now - SESSION_IDLE_MS);
|
|
148
|
+
for (const table of ['auth_enrollments', 'auth_challenges', 'auth_wallet_nonces', 'auth_oidc_states']) {
|
|
149
|
+
this._db.prepare(`DELETE FROM ${table} WHERE expires_at <= ?`).run(now);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// ── Meta ────────────────────────────────────────────────────────────────
|
|
153
|
+
getMeta(key) {
|
|
154
|
+
const row = this._db.prepare('SELECT value FROM auth_meta WHERE key = ?').get(key);
|
|
155
|
+
return row?.value ?? null;
|
|
156
|
+
}
|
|
157
|
+
setMeta(key, value) {
|
|
158
|
+
this._db.prepare('INSERT INTO auth_meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value').run(key, value);
|
|
159
|
+
}
|
|
160
|
+
// ── Sessions ────────────────────────────────────────────────────────────
|
|
161
|
+
/** Returns the cookie value; only its hash is stored. */
|
|
162
|
+
createSession(principal, client, credentialId = null) {
|
|
163
|
+
const secret = randomToken(32);
|
|
164
|
+
const now = this._now();
|
|
165
|
+
this._db.prepare(`
|
|
166
|
+
INSERT INTO auth_sessions (id, kind, member_id, key_id, created_at, expires_at, last_seen_at, user_agent, ip, authenticated_at, authenticated_credential_id)
|
|
167
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
168
|
+
`).run(sha256Hex(secret), principal.kind, principal.kind === 'member' ? principal.memberId : null, principal.kind === 'key' ? principal.keyId : null, now, now + SESSION_ABSOLUTE_MS, now, client.userAgent?.slice(0, 300) ?? null, client.ip, now, credentialId);
|
|
169
|
+
return secret;
|
|
170
|
+
}
|
|
171
|
+
/** Resolves a live session by cookie value and records activity; null when unknown, idle or expired. */
|
|
172
|
+
findSession(secret) {
|
|
173
|
+
const id = sha256Hex(secret);
|
|
174
|
+
const row = this._db.prepare('SELECT * FROM auth_sessions WHERE id = ?').get(id);
|
|
175
|
+
if (!row)
|
|
176
|
+
return null;
|
|
177
|
+
const now = this._now();
|
|
178
|
+
if (row.expires_at <= now || row.last_seen_at + SESSION_IDLE_MS <= now) {
|
|
179
|
+
this.deleteSession(id);
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
if (now - row.last_seen_at >= SESSION_TOUCH_MS) {
|
|
183
|
+
this._db.prepare('UPDATE auth_sessions SET last_seen_at = ? WHERE id = ?').run(now, id);
|
|
184
|
+
row.last_seen_at = now;
|
|
185
|
+
}
|
|
186
|
+
return row;
|
|
187
|
+
}
|
|
188
|
+
deleteSession(id) {
|
|
189
|
+
this._db.prepare('DELETE FROM auth_sessions WHERE id = ?').run(id);
|
|
190
|
+
}
|
|
191
|
+
/** Records a new sign-in proof on an existing session (re-authentication); false when the session is gone. */
|
|
192
|
+
markAuthenticated(id, credentialId) {
|
|
193
|
+
return this._db.prepare('UPDATE auth_sessions SET authenticated_at = ?, authenticated_credential_id = ? WHERE id = ?')
|
|
194
|
+
.run(this._now(), credentialId, id).changes > 0;
|
|
195
|
+
}
|
|
196
|
+
deleteSessionBySecret(secret) {
|
|
197
|
+
this.deleteSession(sha256Hex(secret));
|
|
198
|
+
}
|
|
199
|
+
deleteMemberSessions(memberId) {
|
|
200
|
+
return this._db.prepare('DELETE FROM auth_sessions WHERE member_id = ?').run(memberId).changes;
|
|
201
|
+
}
|
|
202
|
+
/** Ends a member's sessions except `keepId` (the caller's own, when they act on themselves). */
|
|
203
|
+
deleteMemberSessionsExcept(memberId, keepId) {
|
|
204
|
+
if (!keepId)
|
|
205
|
+
return this.deleteMemberSessions(memberId);
|
|
206
|
+
return this._db.prepare('DELETE FROM auth_sessions WHERE member_id = ? AND id != ?').run(memberId, keepId).changes;
|
|
207
|
+
}
|
|
208
|
+
deleteKeySessions(keyId) {
|
|
209
|
+
return this._db.prepare('DELETE FROM auth_sessions WHERE key_id = ?').run(keyId).changes;
|
|
210
|
+
}
|
|
211
|
+
// ── Credentials ─────────────────────────────────────────────────────────
|
|
212
|
+
addCredential(memberId, credential) {
|
|
213
|
+
const id = `cred_${randomBytes(8).toString('hex')}`;
|
|
214
|
+
const now = this._now();
|
|
215
|
+
const insert = this._db.prepare(`
|
|
216
|
+
INSERT INTO auth_credentials
|
|
217
|
+
(id, member_id, kind, label, webauthn_id, public_key, counter, transports, wallet_address, oidc_issuer, oidc_subject, created_at, last_used_at)
|
|
218
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
219
|
+
`);
|
|
220
|
+
if (credential.kind === 'passkey') {
|
|
221
|
+
insert.run(id, memberId, 'passkey', credential.label, credential.webauthnId, Buffer.from(credential.publicKey), credential.counter, JSON.stringify(credential.transports), null, null, null, now, now);
|
|
222
|
+
}
|
|
223
|
+
else if (credential.kind === 'wallet') {
|
|
224
|
+
insert.run(id, memberId, 'wallet', credential.label, null, null, null, null, credential.address.toLowerCase(), null, null, now, now);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
insert.run(id, memberId, 'oidc', credential.label, null, null, null, null, null, credential.issuer, credential.subject, now, now);
|
|
228
|
+
}
|
|
229
|
+
return this.getCredential(id);
|
|
230
|
+
}
|
|
231
|
+
getCredential(id) {
|
|
232
|
+
return this._db.prepare('SELECT * FROM auth_credentials WHERE id = ?').get(id) ?? null;
|
|
233
|
+
}
|
|
234
|
+
listCredentials(memberId) {
|
|
235
|
+
return this._db.prepare('SELECT * FROM auth_credentials WHERE member_id = ? ORDER BY created_at, id').all(memberId);
|
|
236
|
+
}
|
|
237
|
+
countCredentials(memberId) {
|
|
238
|
+
return this._db.prepare('SELECT COUNT(*) AS count FROM auth_credentials WHERE member_id = ?').get(memberId).count;
|
|
239
|
+
}
|
|
240
|
+
deleteCredential(memberId, id) {
|
|
241
|
+
return this._db.prepare('DELETE FROM auth_credentials WHERE id = ? AND member_id = ?').run(id, memberId).changes > 0;
|
|
242
|
+
}
|
|
243
|
+
findPasskey(webauthnId) {
|
|
244
|
+
return this._db.prepare("SELECT * FROM auth_credentials WHERE kind = 'passkey' AND webauthn_id = ?").get(webauthnId) ?? null;
|
|
245
|
+
}
|
|
246
|
+
findWallet(address) {
|
|
247
|
+
return this._db.prepare("SELECT * FROM auth_credentials WHERE kind = 'wallet' AND wallet_address = ?").get(address.toLowerCase()) ?? null;
|
|
248
|
+
}
|
|
249
|
+
findOidc(issuer, subject) {
|
|
250
|
+
return this._db.prepare("SELECT * FROM auth_credentials WHERE kind = 'oidc' AND oidc_issuer = ? AND oidc_subject = ?").get(issuer, subject) ?? null;
|
|
251
|
+
}
|
|
252
|
+
touchCredential(id, counter) {
|
|
253
|
+
if (counter === undefined) {
|
|
254
|
+
this._db.prepare('UPDATE auth_credentials SET last_used_at = ? WHERE id = ?').run(this._now(), id);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
this._db.prepare('UPDATE auth_credentials SET last_used_at = ?, counter = ? WHERE id = ?').run(this._now(), counter, id);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// ── Enrollments ─────────────────────────────────────────────────────────
|
|
261
|
+
createEnrollment(memberId) {
|
|
262
|
+
const secret = randomToken(32);
|
|
263
|
+
const now = this._now();
|
|
264
|
+
this._db.prepare('INSERT INTO auth_enrollments (token_hash, member_id, created_at, expires_at) VALUES (?, ?, ?, ?)')
|
|
265
|
+
.run(sha256Hex(secret), memberId, now, now + ENROLLMENT_TTL_MS);
|
|
266
|
+
return secret;
|
|
267
|
+
}
|
|
268
|
+
/** Member id of a live enrollment, without consuming it. */
|
|
269
|
+
peekEnrollment(secret) {
|
|
270
|
+
const row = this._db.prepare('SELECT member_id, expires_at FROM auth_enrollments WHERE token_hash = ?').get(sha256Hex(secret));
|
|
271
|
+
return row && row.expires_at > this._now() ? row.member_id : null;
|
|
272
|
+
}
|
|
273
|
+
consumeEnrollment(secret) {
|
|
274
|
+
const memberId = this.peekEnrollment(secret);
|
|
275
|
+
if (memberId)
|
|
276
|
+
this._db.prepare('DELETE FROM auth_enrollments WHERE token_hash = ?').run(sha256Hex(secret));
|
|
277
|
+
return memberId;
|
|
278
|
+
}
|
|
279
|
+
// ── Setup tokens ────────────────────────────────────────────────────────
|
|
280
|
+
/** Only the newest setup link works: issuing one retires unused earlier ones. */
|
|
281
|
+
createSetupToken() {
|
|
282
|
+
const secret = randomToken(32);
|
|
283
|
+
const now = this._now();
|
|
284
|
+
this.transaction(() => {
|
|
285
|
+
this._db.prepare('DELETE FROM auth_setup_tokens WHERE used_at IS NULL').run();
|
|
286
|
+
this._db.prepare('INSERT INTO auth_setup_tokens (token_hash, created_at, expires_at) VALUES (?, ?, ?)')
|
|
287
|
+
.run(sha256Hex(secret), now, now + SETUP_TOKEN_TTL_MS);
|
|
288
|
+
});
|
|
289
|
+
return secret;
|
|
290
|
+
}
|
|
291
|
+
consumeSetupToken(secret) {
|
|
292
|
+
const now = this._now();
|
|
293
|
+
return this._db.prepare('UPDATE auth_setup_tokens SET used_at = ? WHERE token_hash = ? AND used_at IS NULL AND expires_at > ?')
|
|
294
|
+
.run(now, sha256Hex(secret), now).changes > 0;
|
|
295
|
+
}
|
|
296
|
+
// ── WebAuthn challenges ─────────────────────────────────────────────────
|
|
297
|
+
/** Drops expired rows of a ticket table, then the oldest ones beyond the cap. */
|
|
298
|
+
_capTickets(table, key) {
|
|
299
|
+
const now = this._now();
|
|
300
|
+
this._db.prepare(`DELETE FROM ${table} WHERE expires_at <= ?`).run(now);
|
|
301
|
+
const count = this._db.prepare(`SELECT COUNT(*) AS count FROM ${table}`).get().count;
|
|
302
|
+
if (count >= MAX_PENDING_TICKETS) {
|
|
303
|
+
this._db.prepare(`DELETE FROM ${table} WHERE ${key} IN (SELECT ${key} FROM ${table} ORDER BY created_at LIMIT ?)`).run(count - MAX_PENDING_TICKETS + 1);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
saveChallenge(challenge, kind, memberId) {
|
|
307
|
+
this._capTickets('auth_challenges', 'challenge');
|
|
308
|
+
const now = this._now();
|
|
309
|
+
this._db.prepare('INSERT INTO auth_challenges (challenge, kind, member_id, created_at, expires_at) VALUES (?, ?, ?, ?, ?)')
|
|
310
|
+
.run(challenge, kind, memberId, now, now + CHALLENGE_TTL_MS);
|
|
311
|
+
}
|
|
312
|
+
/** Single use: the row is deleted whether or not the response then verifies. */
|
|
313
|
+
takeChallenge(challenge, kind) {
|
|
314
|
+
const row = this._db.prepare('SELECT member_id, expires_at FROM auth_challenges WHERE challenge = ? AND kind = ?').get(challenge, kind);
|
|
315
|
+
if (!row)
|
|
316
|
+
return null;
|
|
317
|
+
this._db.prepare('DELETE FROM auth_challenges WHERE challenge = ?').run(challenge);
|
|
318
|
+
return row.expires_at > this._now() ? { memberId: row.member_id } : null;
|
|
319
|
+
}
|
|
320
|
+
// ── Wallet nonces ───────────────────────────────────────────────────────
|
|
321
|
+
saveWalletNonce(nonce, address, message, expiresAt) {
|
|
322
|
+
this._capTickets('auth_wallet_nonces', 'nonce');
|
|
323
|
+
this._db.prepare('INSERT INTO auth_wallet_nonces (nonce, address, message, created_at, expires_at) VALUES (?, ?, ?, ?, ?)')
|
|
324
|
+
.run(nonce, address.toLowerCase(), message, this._now(), expiresAt);
|
|
325
|
+
}
|
|
326
|
+
takeWalletNonce(nonce) {
|
|
327
|
+
const row = this._db.prepare('SELECT address, message, expires_at FROM auth_wallet_nonces WHERE nonce = ?').get(nonce);
|
|
328
|
+
if (!row)
|
|
329
|
+
return null;
|
|
330
|
+
this._db.prepare('DELETE FROM auth_wallet_nonces WHERE nonce = ?').run(nonce);
|
|
331
|
+
return row.expires_at > this._now() ? { address: row.address, message: row.message } : null;
|
|
332
|
+
}
|
|
333
|
+
// ── OIDC states ─────────────────────────────────────────────────────────
|
|
334
|
+
saveOidcState(state, input) {
|
|
335
|
+
const now = this._now();
|
|
336
|
+
this._db.prepare('INSERT INTO auth_oidc_states (state_hash, nonce, code_verifier, enrollment_hash, created_at, expires_at) VALUES (?, ?, ?, ?, ?, ?)')
|
|
337
|
+
.run(sha256Hex(state), input.nonce, input.codeVerifier, input.enrollment === null ? null : sha256Hex(input.enrollment), now, now + OIDC_STATE_TTL_MS);
|
|
338
|
+
}
|
|
339
|
+
takeOidcState(state) {
|
|
340
|
+
const hash = sha256Hex(state);
|
|
341
|
+
const row = this._db.prepare('SELECT nonce, code_verifier, enrollment_hash, expires_at FROM auth_oidc_states WHERE state_hash = ?').get(hash);
|
|
342
|
+
if (!row)
|
|
343
|
+
return null;
|
|
344
|
+
this._db.prepare('DELETE FROM auth_oidc_states WHERE state_hash = ?').run(hash);
|
|
345
|
+
return row.expires_at > this._now() ? { nonce: row.nonce, codeVerifier: row.code_verifier, enrollmentHash: row.enrollment_hash } : null;
|
|
346
|
+
}
|
|
347
|
+
/** Consumes an enrollment by its stored hash (the OIDC state carries the hash, not the secret). */
|
|
348
|
+
consumeEnrollmentHash(hash) {
|
|
349
|
+
const row = this._db.prepare('SELECT member_id, expires_at FROM auth_enrollments WHERE token_hash = ?').get(hash);
|
|
350
|
+
if (!row)
|
|
351
|
+
return null;
|
|
352
|
+
this._db.prepare('DELETE FROM auth_enrollments WHERE token_hash = ?').run(hash);
|
|
353
|
+
return row.expires_at > this._now() ? row.member_id : null;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/** The sign-in behind a console session: when it happened and with which credential (null: unknown, e.g. older sessions). */
|
|
357
|
+
export function sessionSignIn(db, sessionId) {
|
|
358
|
+
try {
|
|
359
|
+
const row = db.prepare('SELECT authenticated_at, created_at, authenticated_credential_id FROM auth_sessions WHERE id = ?').get(sessionId);
|
|
360
|
+
return row ? { authenticatedAt: row.authenticated_at ?? row.created_at, credentialId: row.authenticated_credential_id } : null;
|
|
361
|
+
}
|
|
362
|
+
catch {
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/** A member's wallet credentials (lower-case addresses) with when each was added, plus how many credentials they have in all. */
|
|
367
|
+
export function memberWalletCredentials(db, memberId) {
|
|
368
|
+
try {
|
|
369
|
+
const rows = db.prepare('SELECT id, kind, wallet_address, created_at FROM auth_credentials WHERE member_id = ?').all(memberId);
|
|
370
|
+
return {
|
|
371
|
+
wallets: rows.filter((row) => row.kind === 'wallet' && row.wallet_address)
|
|
372
|
+
.map((row) => ({ id: row.id, address: row.wallet_address.toLowerCase(), createdAt: row.created_at })),
|
|
373
|
+
total: rows.length,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
catch {
|
|
377
|
+
return { wallets: [], total: 0 };
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
/** Lower-case addresses of the wallets a member has proven (SIWE) as sign-in methods. */
|
|
381
|
+
export function memberWalletAddresses(db, memberId) {
|
|
382
|
+
try {
|
|
383
|
+
const rows = db.prepare("SELECT wallet_address FROM auth_credentials WHERE member_id = ? AND kind = 'wallet' AND wallet_address IS NOT NULL").all(memberId);
|
|
384
|
+
return rows.map((row) => row.wallet_address.toLowerCase());
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
return [];
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/gateway/auth/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hardening.test.d.ts","sourceRoot":"","sources":["../../../src/gateway/auth/hardening.test.ts"],"names":[],"mappings":""}
|