@schema-weaver/pg-connector 0.0.0-stage → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/LICENSE +21 -0
- package/README.md +457 -2
- package/dist/cjs/audit/chain.d.ts +365 -0
- package/dist/cjs/audit/chain.d.ts.map +1 -0
- package/dist/cjs/audit/chain.js +959 -0
- package/dist/cjs/audit/chain.js.map +1 -0
- package/dist/cjs/audit/cloud-client.d.ts +142 -0
- package/dist/cjs/audit/cloud-client.d.ts.map +1 -0
- package/dist/cjs/audit/cloud-client.js +364 -0
- package/dist/cjs/audit/cloud-client.js.map +1 -0
- package/dist/cjs/audit/cloud-writer.d.ts +57 -0
- package/dist/cjs/audit/cloud-writer.d.ts.map +1 -0
- package/dist/cjs/audit/cloud-writer.js +95 -0
- package/dist/cjs/audit/cloud-writer.js.map +1 -0
- package/dist/cjs/audit/context.d.ts +51 -0
- package/dist/cjs/audit/context.d.ts.map +1 -0
- package/dist/cjs/audit/context.js +75 -0
- package/dist/cjs/audit/context.js.map +1 -0
- package/dist/cjs/audit/files.d.ts +111 -0
- package/dist/cjs/audit/files.d.ts.map +1 -0
- package/dist/cjs/audit/files.js +406 -0
- package/dist/cjs/audit/files.js.map +1 -0
- package/dist/cjs/audit/index.d.ts +9 -0
- package/dist/cjs/audit/index.d.ts.map +1 -0
- package/dist/cjs/audit/index.js +68 -0
- package/dist/cjs/audit/index.js.map +1 -0
- package/dist/cjs/audit/local-writer.d.ts +255 -0
- package/dist/cjs/audit/local-writer.d.ts.map +1 -0
- package/dist/cjs/audit/local-writer.js +829 -0
- package/dist/cjs/audit/local-writer.js.map +1 -0
- package/dist/cjs/audit/redact.d.ts +151 -0
- package/dist/cjs/audit/redact.d.ts.map +1 -0
- package/dist/cjs/audit/redact.js +549 -0
- package/dist/cjs/audit/redact.js.map +1 -0
- package/dist/cjs/audit/sanitize.d.ts +78 -0
- package/dist/cjs/audit/sanitize.d.ts.map +1 -0
- package/dist/cjs/audit/sanitize.js +315 -0
- package/dist/cjs/audit/sanitize.js.map +1 -0
- package/dist/cjs/audit/sink.d.ts +278 -0
- package/dist/cjs/audit/sink.d.ts.map +1 -0
- package/dist/cjs/audit/sink.js +819 -0
- package/dist/cjs/audit/sink.js.map +1 -0
- package/dist/cjs/audit/types.d.ts +226 -0
- package/dist/cjs/audit/types.d.ts.map +1 -0
- package/dist/cjs/audit/types.js +3 -0
- package/dist/cjs/audit/types.js.map +1 -0
- package/dist/cjs/audit/verify-cache.d.ts +127 -0
- package/dist/cjs/audit/verify-cache.d.ts.map +1 -0
- package/dist/cjs/audit/verify-cache.js +668 -0
- package/dist/cjs/audit/verify-cache.js.map +1 -0
- package/dist/cjs/channels/agent-session.d.ts +228 -0
- package/dist/cjs/channels/agent-session.d.ts.map +1 -0
- package/dist/cjs/channels/agent-session.js +604 -0
- package/dist/cjs/channels/agent-session.js.map +1 -0
- package/dist/cjs/channels/data-channel.d.ts +181 -0
- package/dist/cjs/channels/data-channel.d.ts.map +1 -0
- package/dist/cjs/channels/data-channel.js +607 -0
- package/dist/cjs/channels/data-channel.js.map +1 -0
- package/dist/cjs/channels/reconnect.d.ts +142 -0
- package/dist/cjs/channels/reconnect.d.ts.map +1 -0
- package/dist/cjs/channels/reconnect.js +247 -0
- package/dist/cjs/channels/reconnect.js.map +1 -0
- package/dist/cjs/channels/types.d.ts +112 -0
- package/dist/cjs/channels/types.d.ts.map +1 -0
- package/dist/cjs/channels/types.js +3 -0
- package/dist/cjs/channels/types.js.map +1 -0
- package/dist/cjs/channels/wake-channel.d.ts +232 -0
- package/dist/cjs/channels/wake-channel.d.ts.map +1 -0
- package/dist/cjs/channels/wake-channel.js +752 -0
- package/dist/cjs/channels/wake-channel.js.map +1 -0
- package/dist/cjs/cli/banner.d.ts +2 -0
- package/dist/cjs/cli/banner.d.ts.map +1 -0
- package/dist/cjs/cli/banner.js +150 -0
- package/dist/cjs/cli/banner.js.map +1 -0
- package/dist/cjs/cli/commands/agent.d.ts +30 -0
- package/dist/cjs/cli/commands/agent.d.ts.map +1 -0
- package/dist/cjs/cli/commands/agent.js +214 -0
- package/dist/cjs/cli/commands/agent.js.map +1 -0
- package/dist/cjs/cli/commands/audit-verify.d.ts +19 -0
- package/dist/cjs/cli/commands/audit-verify.d.ts.map +1 -0
- package/dist/cjs/cli/commands/audit-verify.js +382 -0
- package/dist/cjs/cli/commands/audit-verify.js.map +1 -0
- package/dist/cjs/cli/commands/clean.d.ts +23 -0
- package/dist/cjs/cli/commands/clean.d.ts.map +1 -0
- package/dist/cjs/cli/commands/clean.js +272 -0
- package/dist/cjs/cli/commands/clean.js.map +1 -0
- package/dist/cjs/cli/commands/config-show.d.ts +2 -0
- package/dist/cjs/cli/commands/config-show.d.ts.map +1 -0
- package/dist/cjs/cli/commands/config-show.js +10 -0
- package/dist/cjs/cli/commands/config-show.js.map +1 -0
- package/dist/cjs/cli/commands/config.d.ts +6 -0
- package/dist/cjs/cli/commands/config.d.ts.map +1 -0
- package/dist/cjs/cli/commands/config.js +266 -0
- package/dist/cjs/cli/commands/config.js.map +1 -0
- package/dist/cjs/cli/commands/db-add.d.ts +16 -0
- package/dist/cjs/cli/commands/db-add.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-add.js +613 -0
- package/dist/cjs/cli/commands/db-add.js.map +1 -0
- package/dist/cjs/cli/commands/db-edit.d.ts +2 -0
- package/dist/cjs/cli/commands/db-edit.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-edit.js +388 -0
- package/dist/cjs/cli/commands/db-edit.js.map +1 -0
- package/dist/cjs/cli/commands/db-logs.d.ts +3 -0
- package/dist/cjs/cli/commands/db-logs.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-logs.js +67 -0
- package/dist/cjs/cli/commands/db-logs.js.map +1 -0
- package/dist/cjs/cli/commands/db-ls.d.ts +2 -0
- package/dist/cjs/cli/commands/db-ls.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-ls.js +118 -0
- package/dist/cjs/cli/commands/db-ls.js.map +1 -0
- package/dist/cjs/cli/commands/db-query.d.ts +121 -0
- package/dist/cjs/cli/commands/db-query.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-query.js +802 -0
- package/dist/cjs/cli/commands/db-query.js.map +1 -0
- package/dist/cjs/cli/commands/db-remove.d.ts +2 -0
- package/dist/cjs/cli/commands/db-remove.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-remove.js +51 -0
- package/dist/cjs/cli/commands/db-remove.js.map +1 -0
- package/dist/cjs/cli/commands/db-show.d.ts +2 -0
- package/dist/cjs/cli/commands/db-show.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-show.js +134 -0
- package/dist/cjs/cli/commands/db-show.js.map +1 -0
- package/dist/cjs/cli/commands/db-test.d.ts +3 -0
- package/dist/cjs/cli/commands/db-test.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db-test.js +311 -0
- package/dist/cjs/cli/commands/db-test.js.map +1 -0
- package/dist/cjs/cli/commands/db.d.ts +11 -0
- package/dist/cjs/cli/commands/db.d.ts.map +1 -0
- package/dist/cjs/cli/commands/db.js +90 -0
- package/dist/cjs/cli/commands/db.js.map +1 -0
- package/dist/cjs/cli/commands/debug.d.ts +2 -0
- package/dist/cjs/cli/commands/debug.d.ts.map +1 -0
- package/dist/cjs/cli/commands/debug.js +241 -0
- package/dist/cjs/cli/commands/debug.js.map +1 -0
- package/dist/cjs/cli/commands/doctor.d.ts +5 -0
- package/dist/cjs/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cjs/cli/commands/doctor.js +117 -0
- package/dist/cjs/cli/commands/doctor.js.map +1 -0
- package/dist/cjs/cli/commands/index.d.ts +10 -0
- package/dist/cjs/cli/commands/index.d.ts.map +1 -0
- package/dist/cjs/cli/commands/index.js +30 -0
- package/dist/cjs/cli/commands/index.js.map +1 -0
- package/dist/cjs/cli/commands/init.d.ts +2 -0
- package/dist/cjs/cli/commands/init.d.ts.map +1 -0
- package/dist/cjs/cli/commands/init.js +199 -0
- package/dist/cjs/cli/commands/init.js.map +1 -0
- package/dist/cjs/cli/commands/link.d.ts +5 -0
- package/dist/cjs/cli/commands/link.d.ts.map +1 -0
- package/dist/cjs/cli/commands/link.js +44 -0
- package/dist/cjs/cli/commands/link.js.map +1 -0
- package/dist/cjs/cli/commands/logs.d.ts +17 -0
- package/dist/cjs/cli/commands/logs.d.ts.map +1 -0
- package/dist/cjs/cli/commands/logs.js +314 -0
- package/dist/cjs/cli/commands/logs.js.map +1 -0
- package/dist/cjs/cli/commands/project-show.d.ts +2 -0
- package/dist/cjs/cli/commands/project-show.d.ts.map +1 -0
- package/dist/cjs/cli/commands/project-show.js +105 -0
- package/dist/cjs/cli/commands/project-show.js.map +1 -0
- package/dist/cjs/cli/commands/project.d.ts +3 -0
- package/dist/cjs/cli/commands/project.d.ts.map +1 -0
- package/dist/cjs/cli/commands/project.js +64 -0
- package/dist/cjs/cli/commands/project.js.map +1 -0
- package/dist/cjs/cli/commands/service.d.ts +123 -0
- package/dist/cjs/cli/commands/service.d.ts.map +1 -0
- package/dist/cjs/cli/commands/service.js +554 -0
- package/dist/cjs/cli/commands/service.js.map +1 -0
- package/dist/cjs/cli/commands/start.d.ts +6 -0
- package/dist/cjs/cli/commands/start.d.ts.map +1 -0
- package/dist/cjs/cli/commands/start.js +308 -0
- package/dist/cjs/cli/commands/start.js.map +1 -0
- package/dist/cjs/cli/commands/status.d.ts +2 -0
- package/dist/cjs/cli/commands/status.d.ts.map +1 -0
- package/dist/cjs/cli/commands/status.js +225 -0
- package/dist/cjs/cli/commands/status.js.map +1 -0
- package/dist/cjs/cli/commands/stop.d.ts +6 -0
- package/dist/cjs/cli/commands/stop.d.ts.map +1 -0
- package/dist/cjs/cli/commands/stop.js +99 -0
- package/dist/cjs/cli/commands/stop.js.map +1 -0
- package/dist/cjs/cli/daemon/error-tracker.d.ts +119 -0
- package/dist/cjs/cli/daemon/error-tracker.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/error-tracker.js +500 -0
- package/dist/cjs/cli/daemon/error-tracker.js.map +1 -0
- package/dist/cjs/cli/daemon/fault-shutdown.d.ts +144 -0
- package/dist/cjs/cli/daemon/fault-shutdown.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/fault-shutdown.js +312 -0
- package/dist/cjs/cli/daemon/fault-shutdown.js.map +1 -0
- package/dist/cjs/cli/daemon/index.d.ts +12 -0
- package/dist/cjs/cli/daemon/index.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/index.js +23 -0
- package/dist/cjs/cli/daemon/index.js.map +1 -0
- package/dist/cjs/cli/daemon/pid-file.d.ts +13 -0
- package/dist/cjs/cli/daemon/pid-file.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/pid-file.js +90 -0
- package/dist/cjs/cli/daemon/pid-file.js.map +1 -0
- package/dist/cjs/cli/daemon/readiness.d.ts +30 -0
- package/dist/cjs/cli/daemon/readiness.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/readiness.js +74 -0
- package/dist/cjs/cli/daemon/readiness.js.map +1 -0
- package/dist/cjs/cli/daemon/runtime.d.ts +366 -0
- package/dist/cjs/cli/daemon/runtime.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/runtime.js +1343 -0
- package/dist/cjs/cli/daemon/runtime.js.map +1 -0
- package/dist/cjs/cli/daemon/shutdown.d.ts +7 -0
- package/dist/cjs/cli/daemon/shutdown.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/shutdown.js +66 -0
- package/dist/cjs/cli/daemon/shutdown.js.map +1 -0
- package/dist/cjs/cli/daemon/signal-handlers.d.ts +3 -0
- package/dist/cjs/cli/daemon/signal-handlers.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/signal-handlers.js +27 -0
- package/dist/cjs/cli/daemon/signal-handlers.js.map +1 -0
- package/dist/cjs/cli/daemon/state.d.ts +157 -0
- package/dist/cjs/cli/daemon/state.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/state.js +397 -0
- package/dist/cjs/cli/daemon/state.js.map +1 -0
- package/dist/cjs/cli/daemon/status-file.d.ts +139 -0
- package/dist/cjs/cli/daemon/status-file.d.ts.map +1 -0
- package/dist/cjs/cli/daemon/status-file.js +88 -0
- package/dist/cjs/cli/daemon/status-file.js.map +1 -0
- package/dist/cjs/cli/doctor/checks.d.ts +133 -0
- package/dist/cjs/cli/doctor/checks.d.ts.map +1 -0
- package/dist/cjs/cli/doctor/checks.js +677 -0
- package/dist/cjs/cli/doctor/checks.js.map +1 -0
- package/dist/cjs/cli/doctor/fixes.d.ts +9 -0
- package/dist/cjs/cli/doctor/fixes.d.ts.map +1 -0
- package/dist/cjs/cli/doctor/fixes.js +199 -0
- package/dist/cjs/cli/doctor/fixes.js.map +1 -0
- package/dist/cjs/cli/doctor/index.d.ts +7 -0
- package/dist/cjs/cli/doctor/index.d.ts.map +1 -0
- package/dist/cjs/cli/doctor/index.js +27 -0
- package/dist/cjs/cli/doctor/index.js.map +1 -0
- package/dist/cjs/cli/index.d.ts +3 -0
- package/dist/cjs/cli/index.d.ts.map +1 -0
- package/dist/cjs/cli/index.js +336 -0
- package/dist/cjs/cli/index.js.map +1 -0
- package/dist/cjs/cli/interactive.d.ts +8 -0
- package/dist/cjs/cli/interactive.d.ts.map +1 -0
- package/dist/cjs/cli/interactive.js +670 -0
- package/dist/cjs/cli/interactive.js.map +1 -0
- package/dist/cjs/cli/logs/format.d.ts +13 -0
- package/dist/cjs/cli/logs/format.d.ts.map +1 -0
- package/dist/cjs/cli/logs/format.js +178 -0
- package/dist/cjs/cli/logs/format.js.map +1 -0
- package/dist/cjs/cli/logs/index.d.ts +3 -0
- package/dist/cjs/cli/logs/index.d.ts.map +1 -0
- package/dist/cjs/cli/logs/index.js +13 -0
- package/dist/cjs/cli/logs/index.js.map +1 -0
- package/dist/cjs/cli/logs/viewer.d.ts +41 -0
- package/dist/cjs/cli/logs/viewer.d.ts.map +1 -0
- package/dist/cjs/cli/logs/viewer.js +417 -0
- package/dist/cjs/cli/logs/viewer.js.map +1 -0
- package/dist/cjs/cli/ops/operation-logger.d.ts +63 -0
- package/dist/cjs/cli/ops/operation-logger.d.ts.map +1 -0
- package/dist/cjs/cli/ops/operation-logger.js +183 -0
- package/dist/cjs/cli/ops/operation-logger.js.map +1 -0
- package/dist/cjs/cli/palette.d.ts +11 -0
- package/dist/cjs/cli/palette.d.ts.map +1 -0
- package/dist/cjs/cli/palette.js +243 -0
- package/dist/cjs/cli/palette.js.map +1 -0
- package/dist/cjs/cli/prompt.d.ts +186 -0
- package/dist/cjs/cli/prompt.d.ts.map +1 -0
- package/dist/cjs/cli/prompt.js +541 -0
- package/dist/cjs/cli/prompt.js.map +1 -0
- package/dist/cjs/cli/ui/box.d.ts +21 -0
- package/dist/cjs/cli/ui/box.d.ts.map +1 -0
- package/dist/cjs/cli/ui/box.js +72 -0
- package/dist/cjs/cli/ui/box.js.map +1 -0
- package/dist/cjs/cli/ui/clipboard.d.ts +6 -0
- package/dist/cjs/cli/ui/clipboard.d.ts.map +1 -0
- package/dist/cjs/cli/ui/clipboard.js +78 -0
- package/dist/cjs/cli/ui/clipboard.js.map +1 -0
- package/dist/cjs/cli/ui/colors.d.ts +57 -0
- package/dist/cjs/cli/ui/colors.d.ts.map +1 -0
- package/dist/cjs/cli/ui/colors.js +151 -0
- package/dist/cjs/cli/ui/colors.js.map +1 -0
- package/dist/cjs/cli/ui/index.d.ts +9 -0
- package/dist/cjs/cli/ui/index.d.ts.map +1 -0
- package/dist/cjs/cli/ui/index.js +55 -0
- package/dist/cjs/cli/ui/index.js.map +1 -0
- package/dist/cjs/cli/ui/spinner.d.ts +12 -0
- package/dist/cjs/cli/ui/spinner.d.ts.map +1 -0
- package/dist/cjs/cli/ui/spinner.js +82 -0
- package/dist/cjs/cli/ui/spinner.js.map +1 -0
- package/dist/cjs/cli/ui/symbols.d.ts +47 -0
- package/dist/cjs/cli/ui/symbols.d.ts.map +1 -0
- package/dist/cjs/cli/ui/symbols.js +112 -0
- package/dist/cjs/cli/ui/symbols.js.map +1 -0
- package/dist/cjs/cli/ui/table.d.ts +23 -0
- package/dist/cjs/cli/ui/table.d.ts.map +1 -0
- package/dist/cjs/cli/ui/table.js +160 -0
- package/dist/cjs/cli/ui/table.js.map +1 -0
- package/dist/cjs/cli/ui/terminal.d.ts +7 -0
- package/dist/cjs/cli/ui/terminal.d.ts.map +1 -0
- package/dist/cjs/cli/ui/terminal.js +40 -0
- package/dist/cjs/cli/ui/terminal.js.map +1 -0
- package/dist/cjs/config/atomic-write.d.ts +69 -0
- package/dist/cjs/config/atomic-write.d.ts.map +1 -0
- package/dist/cjs/config/atomic-write.js +289 -0
- package/dist/cjs/config/atomic-write.js.map +1 -0
- package/dist/cjs/config/db-config.d.ts +134 -0
- package/dist/cjs/config/db-config.d.ts.map +1 -0
- package/dist/cjs/config/db-config.js +594 -0
- package/dist/cjs/config/db-config.js.map +1 -0
- package/dist/cjs/config/machine-config.d.ts +85 -0
- package/dist/cjs/config/machine-config.d.ts.map +1 -0
- package/dist/cjs/config/machine-config.js +232 -0
- package/dist/cjs/config/machine-config.js.map +1 -0
- package/dist/cjs/config/paths.d.ts +64 -0
- package/dist/cjs/config/paths.d.ts.map +1 -0
- package/dist/cjs/config/paths.js +155 -0
- package/dist/cjs/config/paths.js.map +1 -0
- package/dist/cjs/config/schema.d.ts +72 -0
- package/dist/cjs/config/schema.d.ts.map +1 -0
- package/dist/cjs/config/schema.js +197 -0
- package/dist/cjs/config/schema.js.map +1 -0
- package/dist/cjs/config/token.d.ts +63 -0
- package/dist/cjs/config/token.d.ts.map +1 -0
- package/dist/cjs/config/token.js +146 -0
- package/dist/cjs/config/token.js.map +1 -0
- package/dist/cjs/execution/canceller.d.ts +41 -0
- package/dist/cjs/execution/canceller.d.ts.map +1 -0
- package/dist/cjs/execution/canceller.js +209 -0
- package/dist/cjs/execution/canceller.js.map +1 -0
- package/dist/cjs/execution/database-lookup.d.ts +56 -0
- package/dist/cjs/execution/database-lookup.d.ts.map +1 -0
- package/dist/cjs/execution/database-lookup.js +43 -0
- package/dist/cjs/execution/database-lookup.js.map +1 -0
- package/dist/cjs/execution/dispatcher.d.ts +181 -0
- package/dist/cjs/execution/dispatcher.d.ts.map +1 -0
- package/dist/cjs/execution/dispatcher.js +1296 -0
- package/dist/cjs/execution/dispatcher.js.map +1 -0
- package/dist/cjs/execution/function-effects.d.ts +209 -0
- package/dist/cjs/execution/function-effects.d.ts.map +1 -0
- package/dist/cjs/execution/function-effects.js +596 -0
- package/dist/cjs/execution/function-effects.js.map +1 -0
- package/dist/cjs/execution/introspection.d.ts +76 -0
- package/dist/cjs/execution/introspection.d.ts.map +1 -0
- package/dist/cjs/execution/introspection.js +448 -0
- package/dist/cjs/execution/introspection.js.map +1 -0
- package/dist/cjs/execution/migration-runner.d.ts +128 -0
- package/dist/cjs/execution/migration-runner.d.ts.map +1 -0
- package/dist/cjs/execution/migration-runner.js +798 -0
- package/dist/cjs/execution/migration-runner.js.map +1 -0
- package/dist/cjs/execution/non-tx-detector.d.ts +23 -0
- package/dist/cjs/execution/non-tx-detector.d.ts.map +1 -0
- package/dist/cjs/execution/non-tx-detector.js +218 -0
- package/dist/cjs/execution/non-tx-detector.js.map +1 -0
- package/dist/cjs/execution/pool.d.ts +229 -0
- package/dist/cjs/execution/pool.d.ts.map +1 -0
- package/dist/cjs/execution/pool.js +738 -0
- package/dist/cjs/execution/pool.js.map +1 -0
- package/dist/cjs/execution/query-runner.d.ts +88 -0
- package/dist/cjs/execution/query-runner.d.ts.map +1 -0
- package/dist/cjs/execution/query-runner.js +751 -0
- package/dist/cjs/execution/query-runner.js.map +1 -0
- package/dist/cjs/execution/rate-limiter.d.ts +120 -0
- package/dist/cjs/execution/rate-limiter.d.ts.map +1 -0
- package/dist/cjs/execution/rate-limiter.js +273 -0
- package/dist/cjs/execution/rate-limiter.js.map +1 -0
- package/dist/cjs/execution/search-path.d.ts +161 -0
- package/dist/cjs/execution/search-path.d.ts.map +1 -0
- package/dist/cjs/execution/search-path.js +279 -0
- package/dist/cjs/execution/search-path.js.map +1 -0
- package/dist/cjs/execution/sql-parser.d.ts +195 -0
- package/dist/cjs/execution/sql-parser.d.ts.map +1 -0
- package/dist/cjs/execution/sql-parser.js +704 -0
- package/dist/cjs/execution/sql-parser.js.map +1 -0
- package/dist/cjs/execution/statement-classifier.d.ts +103 -0
- package/dist/cjs/execution/statement-classifier.d.ts.map +1 -0
- package/dist/cjs/execution/statement-classifier.js +535 -0
- package/dist/cjs/execution/statement-classifier.js.map +1 -0
- package/dist/cjs/execution/types.d.ts +189 -0
- package/dist/cjs/execution/types.d.ts.map +1 -0
- package/dist/cjs/execution/types.js +28 -0
- package/dist/cjs/execution/types.js.map +1 -0
- package/dist/cjs/index.d.ts +34 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +98 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/permissions/auto-upgrade.d.ts +40 -0
- package/dist/cjs/permissions/auto-upgrade.d.ts.map +1 -0
- package/dist/cjs/permissions/auto-upgrade.js +168 -0
- package/dist/cjs/permissions/auto-upgrade.js.map +1 -0
- package/dist/cjs/permissions/checker.d.ts +53 -0
- package/dist/cjs/permissions/checker.d.ts.map +1 -0
- package/dist/cjs/permissions/checker.js +326 -0
- package/dist/cjs/permissions/checker.js.map +1 -0
- package/dist/cjs/permissions/manual-approval.d.ts +213 -0
- package/dist/cjs/permissions/manual-approval.d.ts.map +1 -0
- package/dist/cjs/permissions/manual-approval.js +541 -0
- package/dist/cjs/permissions/manual-approval.js.map +1 -0
- package/dist/cjs/permissions/plan-registry.d.ts +274 -0
- package/dist/cjs/permissions/plan-registry.d.ts.map +1 -0
- package/dist/cjs/permissions/plan-registry.js +454 -0
- package/dist/cjs/permissions/plan-registry.js.map +1 -0
- package/dist/cjs/permissions/role-policy.d.ts +217 -0
- package/dist/cjs/permissions/role-policy.d.ts.map +1 -0
- package/dist/cjs/permissions/role-policy.js +584 -0
- package/dist/cjs/permissions/role-policy.js.map +1 -0
- package/dist/cjs/permissions/types.d.ts +126 -0
- package/dist/cjs/permissions/types.d.ts.map +1 -0
- package/dist/cjs/permissions/types.js +3 -0
- package/dist/cjs/permissions/types.js.map +1 -0
- package/dist/cjs/protocol/constants.d.ts +72 -0
- package/dist/cjs/protocol/constants.d.ts.map +1 -0
- package/dist/cjs/protocol/constants.js +107 -0
- package/dist/cjs/protocol/constants.js.map +1 -0
- package/dist/cjs/protocol/envelope.d.ts +165 -0
- package/dist/cjs/protocol/envelope.d.ts.map +1 -0
- package/dist/cjs/protocol/envelope.js +309 -0
- package/dist/cjs/protocol/envelope.js.map +1 -0
- package/dist/cjs/protocol/errors.d.ts +33 -0
- package/dist/cjs/protocol/errors.d.ts.map +1 -0
- package/dist/cjs/protocol/errors.js +391 -0
- package/dist/cjs/protocol/errors.js.map +1 -0
- package/dist/cjs/protocol/messages.d.ts +327 -0
- package/dist/cjs/protocol/messages.d.ts.map +1 -0
- package/dist/cjs/protocol/messages.js +3 -0
- package/dist/cjs/protocol/messages.js.map +1 -0
- package/dist/cjs/protocol/serialize.d.ts +26 -0
- package/dist/cjs/protocol/serialize.d.ts.map +1 -0
- package/dist/cjs/protocol/serialize.js +71 -0
- package/dist/cjs/protocol/serialize.js.map +1 -0
- package/dist/cjs/protocol/validate.d.ts +135 -0
- package/dist/cjs/protocol/validate.d.ts.map +1 -0
- package/dist/cjs/protocol/validate.js +852 -0
- package/dist/cjs/protocol/validate.js.map +1 -0
- package/dist/esm/audit/chain.d.ts +365 -0
- package/dist/esm/audit/chain.d.ts.map +1 -0
- package/dist/esm/audit/chain.js +895 -0
- package/dist/esm/audit/chain.js.map +1 -0
- package/dist/esm/audit/cloud-client.d.ts +142 -0
- package/dist/esm/audit/cloud-client.d.ts.map +1 -0
- package/dist/esm/audit/cloud-client.js +326 -0
- package/dist/esm/audit/cloud-client.js.map +1 -0
- package/dist/esm/audit/cloud-writer.d.ts +57 -0
- package/dist/esm/audit/cloud-writer.d.ts.map +1 -0
- package/dist/esm/audit/cloud-writer.js +91 -0
- package/dist/esm/audit/cloud-writer.js.map +1 -0
- package/dist/esm/audit/context.d.ts +51 -0
- package/dist/esm/audit/context.d.ts.map +1 -0
- package/dist/esm/audit/context.js +69 -0
- package/dist/esm/audit/context.js.map +1 -0
- package/dist/esm/audit/files.d.ts +111 -0
- package/dist/esm/audit/files.d.ts.map +1 -0
- package/dist/esm/audit/files.js +361 -0
- package/dist/esm/audit/files.js.map +1 -0
- package/dist/esm/audit/index.d.ts +9 -0
- package/dist/esm/audit/index.d.ts.map +1 -0
- package/dist/esm/audit/index.js +8 -0
- package/dist/esm/audit/index.js.map +1 -0
- package/dist/esm/audit/local-writer.d.ts +255 -0
- package/dist/esm/audit/local-writer.d.ts.map +1 -0
- package/dist/esm/audit/local-writer.js +785 -0
- package/dist/esm/audit/local-writer.js.map +1 -0
- package/dist/esm/audit/redact.d.ts +151 -0
- package/dist/esm/audit/redact.d.ts.map +1 -0
- package/dist/esm/audit/redact.js +506 -0
- package/dist/esm/audit/redact.js.map +1 -0
- package/dist/esm/audit/sanitize.d.ts +78 -0
- package/dist/esm/audit/sanitize.d.ts.map +1 -0
- package/dist/esm/audit/sanitize.js +307 -0
- package/dist/esm/audit/sanitize.js.map +1 -0
- package/dist/esm/audit/sink.d.ts +278 -0
- package/dist/esm/audit/sink.d.ts.map +1 -0
- package/dist/esm/audit/sink.js +782 -0
- package/dist/esm/audit/sink.js.map +1 -0
- package/dist/esm/audit/types.d.ts +226 -0
- package/dist/esm/audit/types.d.ts.map +1 -0
- package/dist/esm/audit/types.js +2 -0
- package/dist/esm/audit/types.js.map +1 -0
- package/dist/esm/audit/verify-cache.d.ts +127 -0
- package/dist/esm/audit/verify-cache.d.ts.map +1 -0
- package/dist/esm/audit/verify-cache.js +628 -0
- package/dist/esm/audit/verify-cache.js.map +1 -0
- package/dist/esm/channels/agent-session.d.ts +228 -0
- package/dist/esm/channels/agent-session.d.ts.map +1 -0
- package/dist/esm/channels/agent-session.js +566 -0
- package/dist/esm/channels/agent-session.js.map +1 -0
- package/dist/esm/channels/data-channel.d.ts +181 -0
- package/dist/esm/channels/data-channel.d.ts.map +1 -0
- package/dist/esm/channels/data-channel.js +567 -0
- package/dist/esm/channels/data-channel.js.map +1 -0
- package/dist/esm/channels/reconnect.d.ts +142 -0
- package/dist/esm/channels/reconnect.d.ts.map +1 -0
- package/dist/esm/channels/reconnect.js +234 -0
- package/dist/esm/channels/reconnect.js.map +1 -0
- package/dist/esm/channels/types.d.ts +112 -0
- package/dist/esm/channels/types.d.ts.map +1 -0
- package/dist/esm/channels/types.js +2 -0
- package/dist/esm/channels/types.js.map +1 -0
- package/dist/esm/channels/wake-channel.d.ts +232 -0
- package/dist/esm/channels/wake-channel.d.ts.map +1 -0
- package/dist/esm/channels/wake-channel.js +715 -0
- package/dist/esm/channels/wake-channel.js.map +1 -0
- package/dist/esm/cli/banner.d.ts +2 -0
- package/dist/esm/cli/banner.d.ts.map +1 -0
- package/dist/esm/cli/banner.js +114 -0
- package/dist/esm/cli/banner.js.map +1 -0
- package/dist/esm/cli/commands/agent.d.ts +30 -0
- package/dist/esm/cli/commands/agent.d.ts.map +1 -0
- package/dist/esm/cli/commands/agent.js +204 -0
- package/dist/esm/cli/commands/agent.js.map +1 -0
- package/dist/esm/cli/commands/audit-verify.d.ts +19 -0
- package/dist/esm/cli/commands/audit-verify.d.ts.map +1 -0
- package/dist/esm/cli/commands/audit-verify.js +345 -0
- package/dist/esm/cli/commands/audit-verify.js.map +1 -0
- package/dist/esm/cli/commands/clean.d.ts +23 -0
- package/dist/esm/cli/commands/clean.d.ts.map +1 -0
- package/dist/esm/cli/commands/clean.js +235 -0
- package/dist/esm/cli/commands/clean.js.map +1 -0
- package/dist/esm/cli/commands/config-show.d.ts +2 -0
- package/dist/esm/cli/commands/config-show.d.ts.map +1 -0
- package/dist/esm/cli/commands/config-show.js +2 -0
- package/dist/esm/cli/commands/config-show.js.map +1 -0
- package/dist/esm/cli/commands/config.d.ts +6 -0
- package/dist/esm/cli/commands/config.d.ts.map +1 -0
- package/dist/esm/cli/commands/config.js +259 -0
- package/dist/esm/cli/commands/config.js.map +1 -0
- package/dist/esm/cli/commands/db-add.d.ts +16 -0
- package/dist/esm/cli/commands/db-add.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-add.js +576 -0
- package/dist/esm/cli/commands/db-add.js.map +1 -0
- package/dist/esm/cli/commands/db-edit.d.ts +2 -0
- package/dist/esm/cli/commands/db-edit.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-edit.js +352 -0
- package/dist/esm/cli/commands/db-edit.js.map +1 -0
- package/dist/esm/cli/commands/db-logs.d.ts +3 -0
- package/dist/esm/cli/commands/db-logs.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-logs.js +64 -0
- package/dist/esm/cli/commands/db-logs.js.map +1 -0
- package/dist/esm/cli/commands/db-ls.d.ts +2 -0
- package/dist/esm/cli/commands/db-ls.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-ls.js +115 -0
- package/dist/esm/cli/commands/db-ls.js.map +1 -0
- package/dist/esm/cli/commands/db-query.d.ts +121 -0
- package/dist/esm/cli/commands/db-query.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-query.js +754 -0
- package/dist/esm/cli/commands/db-query.js.map +1 -0
- package/dist/esm/cli/commands/db-remove.d.ts +2 -0
- package/dist/esm/cli/commands/db-remove.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-remove.js +48 -0
- package/dist/esm/cli/commands/db-remove.js.map +1 -0
- package/dist/esm/cli/commands/db-show.d.ts +2 -0
- package/dist/esm/cli/commands/db-show.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-show.js +131 -0
- package/dist/esm/cli/commands/db-show.js.map +1 -0
- package/dist/esm/cli/commands/db-test.d.ts +3 -0
- package/dist/esm/cli/commands/db-test.d.ts.map +1 -0
- package/dist/esm/cli/commands/db-test.js +307 -0
- package/dist/esm/cli/commands/db-test.js.map +1 -0
- package/dist/esm/cli/commands/db.d.ts +11 -0
- package/dist/esm/cli/commands/db.d.ts.map +1 -0
- package/dist/esm/cli/commands/db.js +76 -0
- package/dist/esm/cli/commands/db.js.map +1 -0
- package/dist/esm/cli/commands/debug.d.ts +2 -0
- package/dist/esm/cli/commands/debug.d.ts.map +1 -0
- package/dist/esm/cli/commands/debug.js +205 -0
- package/dist/esm/cli/commands/debug.js.map +1 -0
- package/dist/esm/cli/commands/doctor.d.ts +5 -0
- package/dist/esm/cli/commands/doctor.d.ts.map +1 -0
- package/dist/esm/cli/commands/doctor.js +114 -0
- package/dist/esm/cli/commands/doctor.js.map +1 -0
- package/dist/esm/cli/commands/index.d.ts +10 -0
- package/dist/esm/cli/commands/index.d.ts.map +1 -0
- package/dist/esm/cli/commands/index.js +10 -0
- package/dist/esm/cli/commands/index.js.map +1 -0
- package/dist/esm/cli/commands/init.d.ts +2 -0
- package/dist/esm/cli/commands/init.d.ts.map +1 -0
- package/dist/esm/cli/commands/init.js +163 -0
- package/dist/esm/cli/commands/init.js.map +1 -0
- package/dist/esm/cli/commands/link.d.ts +5 -0
- package/dist/esm/cli/commands/link.d.ts.map +1 -0
- package/dist/esm/cli/commands/link.js +41 -0
- package/dist/esm/cli/commands/link.js.map +1 -0
- package/dist/esm/cli/commands/logs.d.ts +17 -0
- package/dist/esm/cli/commands/logs.d.ts.map +1 -0
- package/dist/esm/cli/commands/logs.js +278 -0
- package/dist/esm/cli/commands/logs.js.map +1 -0
- package/dist/esm/cli/commands/project-show.d.ts +2 -0
- package/dist/esm/cli/commands/project-show.d.ts.map +1 -0
- package/dist/esm/cli/commands/project-show.js +69 -0
- package/dist/esm/cli/commands/project-show.js.map +1 -0
- package/dist/esm/cli/commands/project.d.ts +3 -0
- package/dist/esm/cli/commands/project.d.ts.map +1 -0
- package/dist/esm/cli/commands/project.js +60 -0
- package/dist/esm/cli/commands/project.js.map +1 -0
- package/dist/esm/cli/commands/service.d.ts +123 -0
- package/dist/esm/cli/commands/service.d.ts.map +1 -0
- package/dist/esm/cli/commands/service.js +505 -0
- package/dist/esm/cli/commands/service.js.map +1 -0
- package/dist/esm/cli/commands/start.d.ts +6 -0
- package/dist/esm/cli/commands/start.d.ts.map +1 -0
- package/dist/esm/cli/commands/start.js +272 -0
- package/dist/esm/cli/commands/start.js.map +1 -0
- package/dist/esm/cli/commands/status.d.ts +2 -0
- package/dist/esm/cli/commands/status.d.ts.map +1 -0
- package/dist/esm/cli/commands/status.js +222 -0
- package/dist/esm/cli/commands/status.js.map +1 -0
- package/dist/esm/cli/commands/stop.d.ts +6 -0
- package/dist/esm/cli/commands/stop.d.ts.map +1 -0
- package/dist/esm/cli/commands/stop.js +96 -0
- package/dist/esm/cli/commands/stop.js.map +1 -0
- package/dist/esm/cli/daemon/error-tracker.d.ts +119 -0
- package/dist/esm/cli/daemon/error-tracker.d.ts.map +1 -0
- package/dist/esm/cli/daemon/error-tracker.js +451 -0
- package/dist/esm/cli/daemon/error-tracker.js.map +1 -0
- package/dist/esm/cli/daemon/fault-shutdown.d.ts +144 -0
- package/dist/esm/cli/daemon/fault-shutdown.d.ts.map +1 -0
- package/dist/esm/cli/daemon/fault-shutdown.js +273 -0
- package/dist/esm/cli/daemon/fault-shutdown.js.map +1 -0
- package/dist/esm/cli/daemon/index.d.ts +12 -0
- package/dist/esm/cli/daemon/index.d.ts.map +1 -0
- package/dist/esm/cli/daemon/index.js +7 -0
- package/dist/esm/cli/daemon/index.js.map +1 -0
- package/dist/esm/cli/daemon/pid-file.d.ts +13 -0
- package/dist/esm/cli/daemon/pid-file.d.ts.map +1 -0
- package/dist/esm/cli/daemon/pid-file.js +51 -0
- package/dist/esm/cli/daemon/pid-file.js.map +1 -0
- package/dist/esm/cli/daemon/readiness.d.ts +30 -0
- package/dist/esm/cli/daemon/readiness.d.ts.map +1 -0
- package/dist/esm/cli/daemon/readiness.js +70 -0
- package/dist/esm/cli/daemon/readiness.js.map +1 -0
- package/dist/esm/cli/daemon/runtime.d.ts +366 -0
- package/dist/esm/cli/daemon/runtime.d.ts.map +1 -0
- package/dist/esm/cli/daemon/runtime.js +1284 -0
- package/dist/esm/cli/daemon/runtime.js.map +1 -0
- package/dist/esm/cli/daemon/shutdown.d.ts +7 -0
- package/dist/esm/cli/daemon/shutdown.d.ts.map +1 -0
- package/dist/esm/cli/daemon/shutdown.js +63 -0
- package/dist/esm/cli/daemon/shutdown.js.map +1 -0
- package/dist/esm/cli/daemon/signal-handlers.d.ts +3 -0
- package/dist/esm/cli/daemon/signal-handlers.d.ts.map +1 -0
- package/dist/esm/cli/daemon/signal-handlers.js +24 -0
- package/dist/esm/cli/daemon/signal-handlers.js.map +1 -0
- package/dist/esm/cli/daemon/state.d.ts +157 -0
- package/dist/esm/cli/daemon/state.d.ts.map +1 -0
- package/dist/esm/cli/daemon/state.js +352 -0
- package/dist/esm/cli/daemon/state.js.map +1 -0
- package/dist/esm/cli/daemon/status-file.d.ts +139 -0
- package/dist/esm/cli/daemon/status-file.d.ts.map +1 -0
- package/dist/esm/cli/daemon/status-file.js +50 -0
- package/dist/esm/cli/daemon/status-file.js.map +1 -0
- package/dist/esm/cli/doctor/checks.d.ts +133 -0
- package/dist/esm/cli/doctor/checks.d.ts.map +1 -0
- package/dist/esm/cli/doctor/checks.js +624 -0
- package/dist/esm/cli/doctor/checks.js.map +1 -0
- package/dist/esm/cli/doctor/fixes.d.ts +9 -0
- package/dist/esm/cli/doctor/fixes.d.ts.map +1 -0
- package/dist/esm/cli/doctor/fixes.js +163 -0
- package/dist/esm/cli/doctor/fixes.js.map +1 -0
- package/dist/esm/cli/doctor/index.d.ts +7 -0
- package/dist/esm/cli/doctor/index.d.ts.map +1 -0
- package/dist/esm/cli/doctor/index.js +5 -0
- package/dist/esm/cli/doctor/index.js.map +1 -0
- package/dist/esm/cli/index.d.ts +3 -0
- package/dist/esm/cli/index.d.ts.map +1 -0
- package/dist/esm/cli/index.js +333 -0
- package/dist/esm/cli/index.js.map +1 -0
- package/dist/esm/cli/interactive.d.ts +8 -0
- package/dist/esm/cli/interactive.d.ts.map +1 -0
- package/dist/esm/cli/interactive.js +665 -0
- package/dist/esm/cli/interactive.js.map +1 -0
- package/dist/esm/cli/logs/format.d.ts +13 -0
- package/dist/esm/cli/logs/format.d.ts.map +1 -0
- package/dist/esm/cli/logs/format.js +169 -0
- package/dist/esm/cli/logs/format.js.map +1 -0
- package/dist/esm/cli/logs/index.d.ts +3 -0
- package/dist/esm/cli/logs/index.d.ts.map +1 -0
- package/dist/esm/cli/logs/index.js +3 -0
- package/dist/esm/cli/logs/index.js.map +1 -0
- package/dist/esm/cli/logs/viewer.d.ts +41 -0
- package/dist/esm/cli/logs/viewer.d.ts.map +1 -0
- package/dist/esm/cli/logs/viewer.js +412 -0
- package/dist/esm/cli/logs/viewer.js.map +1 -0
- package/dist/esm/cli/ops/operation-logger.d.ts +63 -0
- package/dist/esm/cli/ops/operation-logger.d.ts.map +1 -0
- package/dist/esm/cli/ops/operation-logger.js +142 -0
- package/dist/esm/cli/ops/operation-logger.js.map +1 -0
- package/dist/esm/cli/palette.d.ts +11 -0
- package/dist/esm/cli/palette.d.ts.map +1 -0
- package/dist/esm/cli/palette.js +240 -0
- package/dist/esm/cli/palette.js.map +1 -0
- package/dist/esm/cli/prompt.d.ts +186 -0
- package/dist/esm/cli/prompt.d.ts.map +1 -0
- package/dist/esm/cli/prompt.js +483 -0
- package/dist/esm/cli/prompt.js.map +1 -0
- package/dist/esm/cli/ui/box.d.ts +21 -0
- package/dist/esm/cli/ui/box.d.ts.map +1 -0
- package/dist/esm/cli/ui/box.js +60 -0
- package/dist/esm/cli/ui/box.js.map +1 -0
- package/dist/esm/cli/ui/clipboard.d.ts +6 -0
- package/dist/esm/cli/ui/clipboard.d.ts.map +1 -0
- package/dist/esm/cli/ui/clipboard.js +42 -0
- package/dist/esm/cli/ui/clipboard.js.map +1 -0
- package/dist/esm/cli/ui/colors.d.ts +57 -0
- package/dist/esm/cli/ui/colors.d.ts.map +1 -0
- package/dist/esm/cli/ui/colors.js +126 -0
- package/dist/esm/cli/ui/colors.js.map +1 -0
- package/dist/esm/cli/ui/index.d.ts +9 -0
- package/dist/esm/cli/ui/index.d.ts.map +1 -0
- package/dist/esm/cli/ui/index.js +7 -0
- package/dist/esm/cli/ui/index.js.map +1 -0
- package/dist/esm/cli/ui/spinner.d.ts +12 -0
- package/dist/esm/cli/ui/spinner.d.ts.map +1 -0
- package/dist/esm/cli/ui/spinner.js +78 -0
- package/dist/esm/cli/ui/spinner.js.map +1 -0
- package/dist/esm/cli/ui/symbols.d.ts +47 -0
- package/dist/esm/cli/ui/symbols.d.ts.map +1 -0
- package/dist/esm/cli/ui/symbols.js +109 -0
- package/dist/esm/cli/ui/symbols.js.map +1 -0
- package/dist/esm/cli/ui/table.d.ts +23 -0
- package/dist/esm/cli/ui/table.d.ts.map +1 -0
- package/dist/esm/cli/ui/table.js +156 -0
- package/dist/esm/cli/ui/table.js.map +1 -0
- package/dist/esm/cli/ui/terminal.d.ts +7 -0
- package/dist/esm/cli/ui/terminal.d.ts.map +1 -0
- package/dist/esm/cli/ui/terminal.js +32 -0
- package/dist/esm/cli/ui/terminal.js.map +1 -0
- package/dist/esm/config/atomic-write.d.ts +69 -0
- package/dist/esm/config/atomic-write.d.ts.map +1 -0
- package/dist/esm/config/atomic-write.js +246 -0
- package/dist/esm/config/atomic-write.js.map +1 -0
- package/dist/esm/config/db-config.d.ts +134 -0
- package/dist/esm/config/db-config.d.ts.map +1 -0
- package/dist/esm/config/db-config.js +542 -0
- package/dist/esm/config/db-config.js.map +1 -0
- package/dist/esm/config/machine-config.d.ts +85 -0
- package/dist/esm/config/machine-config.d.ts.map +1 -0
- package/dist/esm/config/machine-config.js +190 -0
- package/dist/esm/config/machine-config.js.map +1 -0
- package/dist/esm/config/paths.d.ts +64 -0
- package/dist/esm/config/paths.d.ts.map +1 -0
- package/dist/esm/config/paths.js +108 -0
- package/dist/esm/config/paths.js.map +1 -0
- package/dist/esm/config/schema.d.ts +72 -0
- package/dist/esm/config/schema.d.ts.map +1 -0
- package/dist/esm/config/schema.js +180 -0
- package/dist/esm/config/schema.js.map +1 -0
- package/dist/esm/config/token.d.ts +63 -0
- package/dist/esm/config/token.d.ts.map +1 -0
- package/dist/esm/config/token.js +104 -0
- package/dist/esm/config/token.js.map +1 -0
- package/dist/esm/execution/canceller.d.ts +41 -0
- package/dist/esm/execution/canceller.d.ts.map +1 -0
- package/dist/esm/execution/canceller.js +205 -0
- package/dist/esm/execution/canceller.js.map +1 -0
- package/dist/esm/execution/database-lookup.d.ts +56 -0
- package/dist/esm/execution/database-lookup.d.ts.map +1 -0
- package/dist/esm/execution/database-lookup.js +38 -0
- package/dist/esm/execution/database-lookup.js.map +1 -0
- package/dist/esm/execution/dispatcher.d.ts +181 -0
- package/dist/esm/execution/dispatcher.d.ts.map +1 -0
- package/dist/esm/execution/dispatcher.js +1258 -0
- package/dist/esm/execution/dispatcher.js.map +1 -0
- package/dist/esm/execution/function-effects.d.ts +209 -0
- package/dist/esm/execution/function-effects.d.ts.map +1 -0
- package/dist/esm/execution/function-effects.js +586 -0
- package/dist/esm/execution/function-effects.js.map +1 -0
- package/dist/esm/execution/introspection.d.ts +76 -0
- package/dist/esm/execution/introspection.d.ts.map +1 -0
- package/dist/esm/execution/introspection.js +442 -0
- package/dist/esm/execution/introspection.js.map +1 -0
- package/dist/esm/execution/migration-runner.d.ts +128 -0
- package/dist/esm/execution/migration-runner.d.ts.map +1 -0
- package/dist/esm/execution/migration-runner.js +754 -0
- package/dist/esm/execution/migration-runner.js.map +1 -0
- package/dist/esm/execution/non-tx-detector.d.ts +23 -0
- package/dist/esm/execution/non-tx-detector.d.ts.map +1 -0
- package/dist/esm/execution/non-tx-detector.js +215 -0
- package/dist/esm/execution/non-tx-detector.js.map +1 -0
- package/dist/esm/execution/pool.d.ts +229 -0
- package/dist/esm/execution/pool.d.ts.map +1 -0
- package/dist/esm/execution/pool.js +685 -0
- package/dist/esm/execution/pool.js.map +1 -0
- package/dist/esm/execution/query-runner.d.ts +88 -0
- package/dist/esm/execution/query-runner.d.ts.map +1 -0
- package/dist/esm/execution/query-runner.js +743 -0
- package/dist/esm/execution/query-runner.js.map +1 -0
- package/dist/esm/execution/rate-limiter.d.ts +120 -0
- package/dist/esm/execution/rate-limiter.d.ts.map +1 -0
- package/dist/esm/execution/rate-limiter.js +269 -0
- package/dist/esm/execution/rate-limiter.js.map +1 -0
- package/dist/esm/execution/search-path.d.ts +161 -0
- package/dist/esm/execution/search-path.d.ts.map +1 -0
- package/dist/esm/execution/search-path.js +270 -0
- package/dist/esm/execution/search-path.js.map +1 -0
- package/dist/esm/execution/sql-parser.d.ts +195 -0
- package/dist/esm/execution/sql-parser.d.ts.map +1 -0
- package/dist/esm/execution/sql-parser.js +683 -0
- package/dist/esm/execution/sql-parser.js.map +1 -0
- package/dist/esm/execution/statement-classifier.d.ts +103 -0
- package/dist/esm/execution/statement-classifier.d.ts.map +1 -0
- package/dist/esm/execution/statement-classifier.js +526 -0
- package/dist/esm/execution/statement-classifier.js.map +1 -0
- package/dist/esm/execution/types.d.ts +189 -0
- package/dist/esm/execution/types.d.ts.map +1 -0
- package/dist/esm/execution/types.js +22 -0
- package/dist/esm/execution/types.js.map +1 -0
- package/dist/esm/index.d.ts +34 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +38 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/permissions/auto-upgrade.d.ts +40 -0
- package/dist/esm/permissions/auto-upgrade.d.ts.map +1 -0
- package/dist/esm/permissions/auto-upgrade.js +164 -0
- package/dist/esm/permissions/auto-upgrade.js.map +1 -0
- package/dist/esm/permissions/checker.d.ts +53 -0
- package/dist/esm/permissions/checker.d.ts.map +1 -0
- package/dist/esm/permissions/checker.js +322 -0
- package/dist/esm/permissions/checker.js.map +1 -0
- package/dist/esm/permissions/manual-approval.d.ts +213 -0
- package/dist/esm/permissions/manual-approval.d.ts.map +1 -0
- package/dist/esm/permissions/manual-approval.js +503 -0
- package/dist/esm/permissions/manual-approval.js.map +1 -0
- package/dist/esm/permissions/plan-registry.d.ts +274 -0
- package/dist/esm/permissions/plan-registry.d.ts.map +1 -0
- package/dist/esm/permissions/plan-registry.js +450 -0
- package/dist/esm/permissions/plan-registry.js.map +1 -0
- package/dist/esm/permissions/role-policy.d.ts +217 -0
- package/dist/esm/permissions/role-policy.d.ts.map +1 -0
- package/dist/esm/permissions/role-policy.js +570 -0
- package/dist/esm/permissions/role-policy.js.map +1 -0
- package/dist/esm/permissions/types.d.ts +126 -0
- package/dist/esm/permissions/types.d.ts.map +1 -0
- package/dist/esm/permissions/types.js +2 -0
- package/dist/esm/permissions/types.js.map +1 -0
- package/dist/esm/protocol/constants.d.ts +72 -0
- package/dist/esm/protocol/constants.d.ts.map +1 -0
- package/dist/esm/protocol/constants.js +104 -0
- package/dist/esm/protocol/constants.js.map +1 -0
- package/dist/esm/protocol/envelope.d.ts +165 -0
- package/dist/esm/protocol/envelope.d.ts.map +1 -0
- package/dist/esm/protocol/envelope.js +263 -0
- package/dist/esm/protocol/envelope.js.map +1 -0
- package/dist/esm/protocol/errors.d.ts +33 -0
- package/dist/esm/protocol/errors.d.ts.map +1 -0
- package/dist/esm/protocol/errors.js +384 -0
- package/dist/esm/protocol/errors.js.map +1 -0
- package/dist/esm/protocol/messages.d.ts +327 -0
- package/dist/esm/protocol/messages.d.ts.map +1 -0
- package/dist/esm/protocol/messages.js +2 -0
- package/dist/esm/protocol/messages.js.map +1 -0
- package/dist/esm/protocol/serialize.d.ts +26 -0
- package/dist/esm/protocol/serialize.d.ts.map +1 -0
- package/dist/esm/protocol/serialize.js +63 -0
- package/dist/esm/protocol/serialize.js.map +1 -0
- package/dist/esm/protocol/validate.d.ts +135 -0
- package/dist/esm/protocol/validate.d.ts.map +1 -0
- package/dist/esm/protocol/validate.js +830 -0
- package/dist/esm/protocol/validate.js.map +1 -0
- package/dist/types/audit/chain.d.ts +365 -0
- package/dist/types/audit/chain.d.ts.map +1 -0
- package/dist/types/audit/cloud-client.d.ts +142 -0
- package/dist/types/audit/cloud-client.d.ts.map +1 -0
- package/dist/types/audit/cloud-writer.d.ts +57 -0
- package/dist/types/audit/cloud-writer.d.ts.map +1 -0
- package/dist/types/audit/context.d.ts +51 -0
- package/dist/types/audit/context.d.ts.map +1 -0
- package/dist/types/audit/files.d.ts +111 -0
- package/dist/types/audit/files.d.ts.map +1 -0
- package/dist/types/audit/index.d.ts +9 -0
- package/dist/types/audit/index.d.ts.map +1 -0
- package/dist/types/audit/local-writer.d.ts +255 -0
- package/dist/types/audit/local-writer.d.ts.map +1 -0
- package/dist/types/audit/redact.d.ts +151 -0
- package/dist/types/audit/redact.d.ts.map +1 -0
- package/dist/types/audit/sanitize.d.ts +78 -0
- package/dist/types/audit/sanitize.d.ts.map +1 -0
- package/dist/types/audit/sink.d.ts +278 -0
- package/dist/types/audit/sink.d.ts.map +1 -0
- package/dist/types/audit/types.d.ts +226 -0
- package/dist/types/audit/types.d.ts.map +1 -0
- package/dist/types/audit/verify-cache.d.ts +127 -0
- package/dist/types/audit/verify-cache.d.ts.map +1 -0
- package/dist/types/channels/agent-session.d.ts +228 -0
- package/dist/types/channels/agent-session.d.ts.map +1 -0
- package/dist/types/channels/data-channel.d.ts +181 -0
- package/dist/types/channels/data-channel.d.ts.map +1 -0
- package/dist/types/channels/reconnect.d.ts +142 -0
- package/dist/types/channels/reconnect.d.ts.map +1 -0
- package/dist/types/channels/types.d.ts +112 -0
- package/dist/types/channels/types.d.ts.map +1 -0
- package/dist/types/channels/wake-channel.d.ts +232 -0
- package/dist/types/channels/wake-channel.d.ts.map +1 -0
- package/dist/types/cli/banner.d.ts +2 -0
- package/dist/types/cli/banner.d.ts.map +1 -0
- package/dist/types/cli/commands/agent.d.ts +30 -0
- package/dist/types/cli/commands/agent.d.ts.map +1 -0
- package/dist/types/cli/commands/audit-verify.d.ts +19 -0
- package/dist/types/cli/commands/audit-verify.d.ts.map +1 -0
- package/dist/types/cli/commands/clean.d.ts +23 -0
- package/dist/types/cli/commands/clean.d.ts.map +1 -0
- package/dist/types/cli/commands/config-show.d.ts +2 -0
- package/dist/types/cli/commands/config-show.d.ts.map +1 -0
- package/dist/types/cli/commands/config.d.ts +6 -0
- package/dist/types/cli/commands/config.d.ts.map +1 -0
- package/dist/types/cli/commands/db-add.d.ts +16 -0
- package/dist/types/cli/commands/db-add.d.ts.map +1 -0
- package/dist/types/cli/commands/db-edit.d.ts +2 -0
- package/dist/types/cli/commands/db-edit.d.ts.map +1 -0
- package/dist/types/cli/commands/db-logs.d.ts +3 -0
- package/dist/types/cli/commands/db-logs.d.ts.map +1 -0
- package/dist/types/cli/commands/db-ls.d.ts +2 -0
- package/dist/types/cli/commands/db-ls.d.ts.map +1 -0
- package/dist/types/cli/commands/db-query.d.ts +121 -0
- package/dist/types/cli/commands/db-query.d.ts.map +1 -0
- package/dist/types/cli/commands/db-remove.d.ts +2 -0
- package/dist/types/cli/commands/db-remove.d.ts.map +1 -0
- package/dist/types/cli/commands/db-show.d.ts +2 -0
- package/dist/types/cli/commands/db-show.d.ts.map +1 -0
- package/dist/types/cli/commands/db-test.d.ts +3 -0
- package/dist/types/cli/commands/db-test.d.ts.map +1 -0
- package/dist/types/cli/commands/db.d.ts +11 -0
- package/dist/types/cli/commands/db.d.ts.map +1 -0
- package/dist/types/cli/commands/debug.d.ts +2 -0
- package/dist/types/cli/commands/debug.d.ts.map +1 -0
- package/dist/types/cli/commands/doctor.d.ts +5 -0
- package/dist/types/cli/commands/doctor.d.ts.map +1 -0
- package/dist/types/cli/commands/index.d.ts +10 -0
- package/dist/types/cli/commands/index.d.ts.map +1 -0
- package/dist/types/cli/commands/init.d.ts +2 -0
- package/dist/types/cli/commands/init.d.ts.map +1 -0
- package/dist/types/cli/commands/link.d.ts +5 -0
- package/dist/types/cli/commands/link.d.ts.map +1 -0
- package/dist/types/cli/commands/logs.d.ts +17 -0
- package/dist/types/cli/commands/logs.d.ts.map +1 -0
- package/dist/types/cli/commands/project-show.d.ts +2 -0
- package/dist/types/cli/commands/project-show.d.ts.map +1 -0
- package/dist/types/cli/commands/project.d.ts +3 -0
- package/dist/types/cli/commands/project.d.ts.map +1 -0
- package/dist/types/cli/commands/service.d.ts +123 -0
- package/dist/types/cli/commands/service.d.ts.map +1 -0
- package/dist/types/cli/commands/start.d.ts +6 -0
- package/dist/types/cli/commands/start.d.ts.map +1 -0
- package/dist/types/cli/commands/status.d.ts +2 -0
- package/dist/types/cli/commands/status.d.ts.map +1 -0
- package/dist/types/cli/commands/stop.d.ts +6 -0
- package/dist/types/cli/commands/stop.d.ts.map +1 -0
- package/dist/types/cli/daemon/error-tracker.d.ts +119 -0
- package/dist/types/cli/daemon/error-tracker.d.ts.map +1 -0
- package/dist/types/cli/daemon/fault-shutdown.d.ts +144 -0
- package/dist/types/cli/daemon/fault-shutdown.d.ts.map +1 -0
- package/dist/types/cli/daemon/index.d.ts +12 -0
- package/dist/types/cli/daemon/index.d.ts.map +1 -0
- package/dist/types/cli/daemon/pid-file.d.ts +13 -0
- package/dist/types/cli/daemon/pid-file.d.ts.map +1 -0
- package/dist/types/cli/daemon/readiness.d.ts +30 -0
- package/dist/types/cli/daemon/readiness.d.ts.map +1 -0
- package/dist/types/cli/daemon/runtime.d.ts +366 -0
- package/dist/types/cli/daemon/runtime.d.ts.map +1 -0
- package/dist/types/cli/daemon/shutdown.d.ts +7 -0
- package/dist/types/cli/daemon/shutdown.d.ts.map +1 -0
- package/dist/types/cli/daemon/signal-handlers.d.ts +3 -0
- package/dist/types/cli/daemon/signal-handlers.d.ts.map +1 -0
- package/dist/types/cli/daemon/state.d.ts +157 -0
- package/dist/types/cli/daemon/state.d.ts.map +1 -0
- package/dist/types/cli/daemon/status-file.d.ts +139 -0
- package/dist/types/cli/daemon/status-file.d.ts.map +1 -0
- package/dist/types/cli/doctor/checks.d.ts +133 -0
- package/dist/types/cli/doctor/checks.d.ts.map +1 -0
- package/dist/types/cli/doctor/fixes.d.ts +9 -0
- package/dist/types/cli/doctor/fixes.d.ts.map +1 -0
- package/dist/types/cli/doctor/index.d.ts +7 -0
- package/dist/types/cli/doctor/index.d.ts.map +1 -0
- package/dist/types/cli/index.d.ts +3 -0
- package/dist/types/cli/index.d.ts.map +1 -0
- package/dist/types/cli/interactive.d.ts +8 -0
- package/dist/types/cli/interactive.d.ts.map +1 -0
- package/dist/types/cli/logs/format.d.ts +13 -0
- package/dist/types/cli/logs/format.d.ts.map +1 -0
- package/dist/types/cli/logs/index.d.ts +3 -0
- package/dist/types/cli/logs/index.d.ts.map +1 -0
- package/dist/types/cli/logs/viewer.d.ts +41 -0
- package/dist/types/cli/logs/viewer.d.ts.map +1 -0
- package/dist/types/cli/ops/operation-logger.d.ts +63 -0
- package/dist/types/cli/ops/operation-logger.d.ts.map +1 -0
- package/dist/types/cli/palette.d.ts +11 -0
- package/dist/types/cli/palette.d.ts.map +1 -0
- package/dist/types/cli/prompt.d.ts +186 -0
- package/dist/types/cli/prompt.d.ts.map +1 -0
- package/dist/types/cli/ui/box.d.ts +21 -0
- package/dist/types/cli/ui/box.d.ts.map +1 -0
- package/dist/types/cli/ui/clipboard.d.ts +6 -0
- package/dist/types/cli/ui/clipboard.d.ts.map +1 -0
- package/dist/types/cli/ui/colors.d.ts +57 -0
- package/dist/types/cli/ui/colors.d.ts.map +1 -0
- package/dist/types/cli/ui/index.d.ts +9 -0
- package/dist/types/cli/ui/index.d.ts.map +1 -0
- package/dist/types/cli/ui/spinner.d.ts +12 -0
- package/dist/types/cli/ui/spinner.d.ts.map +1 -0
- package/dist/types/cli/ui/symbols.d.ts +47 -0
- package/dist/types/cli/ui/symbols.d.ts.map +1 -0
- package/dist/types/cli/ui/table.d.ts +23 -0
- package/dist/types/cli/ui/table.d.ts.map +1 -0
- package/dist/types/cli/ui/terminal.d.ts +7 -0
- package/dist/types/cli/ui/terminal.d.ts.map +1 -0
- package/dist/types/config/atomic-write.d.ts +69 -0
- package/dist/types/config/atomic-write.d.ts.map +1 -0
- package/dist/types/config/db-config.d.ts +134 -0
- package/dist/types/config/db-config.d.ts.map +1 -0
- package/dist/types/config/machine-config.d.ts +85 -0
- package/dist/types/config/machine-config.d.ts.map +1 -0
- package/dist/types/config/paths.d.ts +64 -0
- package/dist/types/config/paths.d.ts.map +1 -0
- package/dist/types/config/schema.d.ts +72 -0
- package/dist/types/config/schema.d.ts.map +1 -0
- package/dist/types/config/token.d.ts +63 -0
- package/dist/types/config/token.d.ts.map +1 -0
- package/dist/types/execution/canceller.d.ts +41 -0
- package/dist/types/execution/canceller.d.ts.map +1 -0
- package/dist/types/execution/database-lookup.d.ts +56 -0
- package/dist/types/execution/database-lookup.d.ts.map +1 -0
- package/dist/types/execution/dispatcher.d.ts +181 -0
- package/dist/types/execution/dispatcher.d.ts.map +1 -0
- package/dist/types/execution/function-effects.d.ts +209 -0
- package/dist/types/execution/function-effects.d.ts.map +1 -0
- package/dist/types/execution/introspection.d.ts +76 -0
- package/dist/types/execution/introspection.d.ts.map +1 -0
- package/dist/types/execution/migration-runner.d.ts +128 -0
- package/dist/types/execution/migration-runner.d.ts.map +1 -0
- package/dist/types/execution/non-tx-detector.d.ts +23 -0
- package/dist/types/execution/non-tx-detector.d.ts.map +1 -0
- package/dist/types/execution/pool.d.ts +229 -0
- package/dist/types/execution/pool.d.ts.map +1 -0
- package/dist/types/execution/query-runner.d.ts +88 -0
- package/dist/types/execution/query-runner.d.ts.map +1 -0
- package/dist/types/execution/rate-limiter.d.ts +120 -0
- package/dist/types/execution/rate-limiter.d.ts.map +1 -0
- package/dist/types/execution/search-path.d.ts +161 -0
- package/dist/types/execution/search-path.d.ts.map +1 -0
- package/dist/types/execution/sql-parser.d.ts +195 -0
- package/dist/types/execution/sql-parser.d.ts.map +1 -0
- package/dist/types/execution/statement-classifier.d.ts +103 -0
- package/dist/types/execution/statement-classifier.d.ts.map +1 -0
- package/dist/types/execution/types.d.ts +189 -0
- package/dist/types/execution/types.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/permissions/auto-upgrade.d.ts +40 -0
- package/dist/types/permissions/auto-upgrade.d.ts.map +1 -0
- package/dist/types/permissions/checker.d.ts +53 -0
- package/dist/types/permissions/checker.d.ts.map +1 -0
- package/dist/types/permissions/manual-approval.d.ts +213 -0
- package/dist/types/permissions/manual-approval.d.ts.map +1 -0
- package/dist/types/permissions/plan-registry.d.ts +274 -0
- package/dist/types/permissions/plan-registry.d.ts.map +1 -0
- package/dist/types/permissions/role-policy.d.ts +217 -0
- package/dist/types/permissions/role-policy.d.ts.map +1 -0
- package/dist/types/permissions/types.d.ts +126 -0
- package/dist/types/permissions/types.d.ts.map +1 -0
- package/dist/types/protocol/constants.d.ts +72 -0
- package/dist/types/protocol/constants.d.ts.map +1 -0
- package/dist/types/protocol/envelope.d.ts +165 -0
- package/dist/types/protocol/envelope.d.ts.map +1 -0
- package/dist/types/protocol/errors.d.ts +33 -0
- package/dist/types/protocol/errors.d.ts.map +1 -0
- package/dist/types/protocol/messages.d.ts +327 -0
- package/dist/types/protocol/messages.d.ts.map +1 -0
- package/dist/types/protocol/serialize.d.ts +26 -0
- package/dist/types/protocol/serialize.d.ts.map +1 -0
- package/dist/types/protocol/validate.d.ts +135 -0
- package/dist/types/protocol/validate.d.ts.map +1 -0
- package/package.json +116 -4
- package/scripts/generate-systemd-service.mjs +117 -0
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DENIED_READ_FUNCTION_SUFFIXES = exports.DENIED_READ_FUNCTION_PREFIXES = exports.DENIED_READ_FUNCTIONS = exports.EXECUTABLE_ROOTS = exports.NON_TRANSACTIONAL_ROOTS = exports.DDL_ROOTS = exports.READ_ROOTS = exports.WRITE_ROOTS = exports.UTILITY_ROOTS = exports.SqlParseError = exports.SqlParserUnavailableError = void 0;
|
|
4
|
+
exports.initSqlParser = initSqlParser;
|
|
5
|
+
exports.isSqlParserReady = isSqlParserReady;
|
|
6
|
+
exports.assertParserReady = assertParserReady;
|
|
7
|
+
exports.parseSql = parseSql;
|
|
8
|
+
exports.rootNodeType = rootNodeType;
|
|
9
|
+
exports.rootNode = rootNode;
|
|
10
|
+
exports.walkAst = walkAst;
|
|
11
|
+
exports.collectFunctionNames = collectFunctionNames;
|
|
12
|
+
exports.hasWritableCte = hasWritableCte;
|
|
13
|
+
exports.getSelectInto = getSelectInto;
|
|
14
|
+
exports.getLockingClauses = getLockingClauses;
|
|
15
|
+
exports.findReadSideEffects = findReadSideEffects;
|
|
16
|
+
exports.explainExecutesStatement = explainExecutesStatement;
|
|
17
|
+
exports.isDeniedReadFunction = isDeniedReadFunction;
|
|
18
|
+
exports.findDeniedReadFunction = findDeniedReadFunction;
|
|
19
|
+
exports.isNonTransactionalNode = isNonTransactionalNode;
|
|
20
|
+
/**
|
|
21
|
+
* Real PostgreSQL parser (libpg_query, compiled to WASM).
|
|
22
|
+
*
|
|
23
|
+
* This module owns the WASM lifecycle and exposes a small, typed AST helper
|
|
24
|
+
* surface. It replaces the previous token-based classifier that decided
|
|
25
|
+
* whether a statement was a read or a write by looking at the first
|
|
26
|
+
* whitespace-delimited word.
|
|
27
|
+
*
|
|
28
|
+
* Design rules:
|
|
29
|
+
* - The WASM module is loaded exactly once, at startup, and awaited.
|
|
30
|
+
* - Any failure to load is fatal to SQL execution: `assertParserReady()`
|
|
31
|
+
* throws so callers fail CLOSED rather than falling back to heuristics.
|
|
32
|
+
* - A PostgreSQL syntax error THROWS `SqlParseError`. There is no
|
|
33
|
+
* "best-effort" parse: an input the grammar rejects has no classification.
|
|
34
|
+
* - No native compilation (WASM), so `node:*-alpine` images work with no
|
|
35
|
+
* build toolchain.
|
|
36
|
+
*/
|
|
37
|
+
const pgsql_parser_1 = require("pgsql-parser");
|
|
38
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
39
|
+
let ready = false;
|
|
40
|
+
let initPromise = null;
|
|
41
|
+
class SqlParserUnavailableError extends Error {
|
|
42
|
+
constructor(cause) {
|
|
43
|
+
super('PostgreSQL parser is not available; refusing to classify SQL. ' +
|
|
44
|
+
'Start the agent via runAgent()/initSqlParser() so the parser can load.');
|
|
45
|
+
this.name = 'SqlParserUnavailableError';
|
|
46
|
+
this.cause = cause;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.SqlParserUnavailableError = SqlParserUnavailableError;
|
|
50
|
+
class SqlParseError extends Error {
|
|
51
|
+
/** libpg_query error code, e.g. 'syntax_error'. */
|
|
52
|
+
pgCode;
|
|
53
|
+
/** 1-based cursor position from PostgreSQL, 0 if unknown. */
|
|
54
|
+
cursorPosition;
|
|
55
|
+
constructor(message, pgCode = 'syntax_error', cursorPosition = 0) {
|
|
56
|
+
super(message);
|
|
57
|
+
this.name = 'SqlParseError';
|
|
58
|
+
this.pgCode = pgCode;
|
|
59
|
+
this.cursorPosition = cursorPosition;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.SqlParseError = SqlParseError;
|
|
63
|
+
/** Load the WASM parser. Idempotent and safe to call concurrently. */
|
|
64
|
+
function initSqlParser() {
|
|
65
|
+
if (ready)
|
|
66
|
+
return Promise.resolve();
|
|
67
|
+
if (!initPromise) {
|
|
68
|
+
initPromise = Promise.resolve((0, pgsql_parser_1.loadModule)())
|
|
69
|
+
.then(() => {
|
|
70
|
+
ready = true;
|
|
71
|
+
})
|
|
72
|
+
.catch((err) => {
|
|
73
|
+
initPromise = null;
|
|
74
|
+
throw new SqlParserUnavailableError(err);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return initPromise;
|
|
78
|
+
}
|
|
79
|
+
/** True once the WASM module is loaded and parsing is possible. */
|
|
80
|
+
function isSqlParserReady() {
|
|
81
|
+
return ready;
|
|
82
|
+
}
|
|
83
|
+
/** Throws unless the parser is loaded. Use at the top of any SQL path. */
|
|
84
|
+
function assertParserReady() {
|
|
85
|
+
if (!ready)
|
|
86
|
+
throw new SqlParserUnavailableError();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Parse one or more SQL statements into libpg_query raw parse nodes.
|
|
90
|
+
*
|
|
91
|
+
* @throws {SqlParserUnavailableError} if the WASM module is not loaded
|
|
92
|
+
* @throws {SqlParseError} on a PostgreSQL syntax/semantic error
|
|
93
|
+
*/
|
|
94
|
+
function parseSql(sql) {
|
|
95
|
+
assertParserReady();
|
|
96
|
+
if (typeof sql !== 'string') {
|
|
97
|
+
throw new SqlParseError('SQL must be a string', 'invalid_sql', 0);
|
|
98
|
+
}
|
|
99
|
+
// libpg_query treats an empty/comment-only input as 0 statements, which is
|
|
100
|
+
// valid. Callers decide what to do with an empty statement list.
|
|
101
|
+
try {
|
|
102
|
+
const result = (0, pgsql_parser_1.parseSync)(sql);
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
throw toSqlParseError(err);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function toSqlParseError(err) {
|
|
110
|
+
const e = err;
|
|
111
|
+
const raw = typeof e?.message === 'string' ? e.message : String(err);
|
|
112
|
+
// libpg_query formats errors as:
|
|
113
|
+
// {"message":"syntax error at or near \"x\"","funcname":"jsonErrorParse","detail":...}
|
|
114
|
+
// or a plain "syntax error at or near ..." string depending on build.
|
|
115
|
+
let message = raw;
|
|
116
|
+
let code = 'syntax_error';
|
|
117
|
+
let position = 0;
|
|
118
|
+
try {
|
|
119
|
+
const start = raw.indexOf('{');
|
|
120
|
+
if (start !== -1 && raw.endsWith('}')) {
|
|
121
|
+
const parsed = JSON.parse(raw.slice(start));
|
|
122
|
+
if (parsed.message)
|
|
123
|
+
message = parsed.message;
|
|
124
|
+
if (parsed.cursorPosition)
|
|
125
|
+
position = parsed.cursorPosition;
|
|
126
|
+
if (parsed.funcname === 'jsonErrorParse')
|
|
127
|
+
code = 'syntax_error';
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// keep the raw message
|
|
132
|
+
}
|
|
133
|
+
return new SqlParseError(message, code, position);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Root node type of a statement (e.g. 'SelectStmt', 'DropStmt').
|
|
137
|
+
* Returns 'none' for an empty node.
|
|
138
|
+
*/
|
|
139
|
+
function rootNodeType(stmt) {
|
|
140
|
+
if (!stmt || !stmt.stmt || typeof stmt.stmt !== 'object')
|
|
141
|
+
return 'none';
|
|
142
|
+
const keys = Object.keys(stmt.stmt);
|
|
143
|
+
return keys.length > 0 ? keys[0] : 'none';
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The root node payload for a statement — i.e. the value of the single root
|
|
147
|
+
* key, not the `{ NodeName: {...} }` wrapper. Callers that want to walk the
|
|
148
|
+
* whole tree should use `walkAst(stmt.stmt, …)` instead.
|
|
149
|
+
*/
|
|
150
|
+
function rootNode(stmt) {
|
|
151
|
+
const wrapper = stmt?.stmt;
|
|
152
|
+
if (!wrapper || typeof wrapper !== 'object')
|
|
153
|
+
return undefined;
|
|
154
|
+
const keys = Object.keys(wrapper);
|
|
155
|
+
return keys.length === 1 ? wrapper[keys[0]] : wrapper;
|
|
156
|
+
}
|
|
157
|
+
/** Keys that carry positional metadata, never a child node. */
|
|
158
|
+
const NON_NODE_KEYS = new Set([
|
|
159
|
+
'nodeType',
|
|
160
|
+
'location',
|
|
161
|
+
'stmt_location',
|
|
162
|
+
'stmt_len',
|
|
163
|
+
]);
|
|
164
|
+
/**
|
|
165
|
+
* Depth-first walk over every node in a parse tree, invoking `visit` on each
|
|
166
|
+
* node. libpg_query marks nodes two ways depending on level: raw parse trees
|
|
167
|
+
* wrap each node in a single-key object (e.g. `{ SelectStmt: {...} }`), while
|
|
168
|
+
* `nodeType`-tagged trees use `{ nodeType: 'SelectStmt' }`. We support both.
|
|
169
|
+
*
|
|
170
|
+
* The node name is read from the *key* that holds the child, never from the
|
|
171
|
+
* child's own keys. A wrapper can sit directly inside a list — e.g.
|
|
172
|
+
* `fromClause[0].RangeFunction.functions[0].List.items[0].FuncCall` — and a
|
|
173
|
+
* walk that only recognises a wrapper when it is the sole key of a *nested*
|
|
174
|
+
* object silently misses every node in that position. That omission is a
|
|
175
|
+
* security bug here: it made `SELECT * FROM pg_read_file('/etc/passwd') AS
|
|
176
|
+
* t(contents)` collect zero function names and classify as a read.
|
|
177
|
+
*/
|
|
178
|
+
function walkAst(node, visit) {
|
|
179
|
+
if (node === null || node === undefined || typeof node !== 'object')
|
|
180
|
+
return;
|
|
181
|
+
if (Array.isArray(node)) {
|
|
182
|
+
for (const child of node)
|
|
183
|
+
walkAst(child, visit);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const obj = node;
|
|
187
|
+
if (typeof obj.nodeType === 'string') {
|
|
188
|
+
visit(obj.nodeType, obj);
|
|
189
|
+
}
|
|
190
|
+
for (const key of Object.keys(obj)) {
|
|
191
|
+
if (NON_NODE_KEYS.has(key))
|
|
192
|
+
continue;
|
|
193
|
+
const value = obj[key];
|
|
194
|
+
if (value === null || typeof value !== 'object')
|
|
195
|
+
continue;
|
|
196
|
+
// `{ FuncCall: {...} }`: the key names the node, the value is the node.
|
|
197
|
+
if (isNodeKey(key))
|
|
198
|
+
visit(key, value);
|
|
199
|
+
walkAst(value, visit);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/** Keys that look like libpg_query node names (CamelCase, ends in a node suffix). */
|
|
203
|
+
const NODE_SUFFIXES = [
|
|
204
|
+
'Stmt',
|
|
205
|
+
'Clause',
|
|
206
|
+
'Expr',
|
|
207
|
+
'Call',
|
|
208
|
+
'Ref',
|
|
209
|
+
'Spec',
|
|
210
|
+
'Range',
|
|
211
|
+
'Target',
|
|
212
|
+
'Alias',
|
|
213
|
+
'Object',
|
|
214
|
+
'Def',
|
|
215
|
+
'Elem',
|
|
216
|
+
'Item',
|
|
217
|
+
'List',
|
|
218
|
+
'Res',
|
|
219
|
+
'With',
|
|
220
|
+
'Case',
|
|
221
|
+
'A_Expr',
|
|
222
|
+
'TypeName',
|
|
223
|
+
'SortBy',
|
|
224
|
+
'Locking',
|
|
225
|
+
'Partition',
|
|
226
|
+
'Constraint',
|
|
227
|
+
'Action',
|
|
228
|
+
'Trigger',
|
|
229
|
+
'Rule',
|
|
230
|
+
'Cmd',
|
|
231
|
+
'Option',
|
|
232
|
+
'Table',
|
|
233
|
+
'Index',
|
|
234
|
+
'Column',
|
|
235
|
+
'Func',
|
|
236
|
+
'Role',
|
|
237
|
+
'Grant',
|
|
238
|
+
];
|
|
239
|
+
function isNodeKey(key) {
|
|
240
|
+
if (!/^[A-Z]/.test(key))
|
|
241
|
+
return false;
|
|
242
|
+
if (key === 'String' || key === 'Integer' || key === 'Float' || key === 'Boolean')
|
|
243
|
+
return false;
|
|
244
|
+
return NODE_SUFFIXES.some((s) => key.endsWith(s)) || key.endsWith('Options');
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Extract every function name referenced anywhere in the statement, lower-cased
|
|
248
|
+
* and dot-joined so both `pg_read_file` and `pg_catalog.pg_read_file` are
|
|
249
|
+
* recognised. PostgreSQL folds unquoted identifiers to lower case; folding
|
|
250
|
+
* quoted ones too (`"PG_READ_FILE"`) only ever makes the match set larger,
|
|
251
|
+
* which is the safe direction.
|
|
252
|
+
*/
|
|
253
|
+
function collectFunctionNames(stmt) {
|
|
254
|
+
const names = new Set();
|
|
255
|
+
walkAst(stmt.stmt, (type, payload) => {
|
|
256
|
+
if (type !== 'FuncCall' || !payload || typeof payload !== 'object')
|
|
257
|
+
return;
|
|
258
|
+
const funcname = payload.funcname;
|
|
259
|
+
if (!Array.isArray(funcname))
|
|
260
|
+
return;
|
|
261
|
+
const parts = [];
|
|
262
|
+
for (const part of funcname) {
|
|
263
|
+
const sval = part?.String?.sval ??
|
|
264
|
+
part?.A_Const?.sval?.sval ??
|
|
265
|
+
part?.sval?.sval ??
|
|
266
|
+
(typeof part === 'string' ? part : undefined);
|
|
267
|
+
if (typeof sval === 'string')
|
|
268
|
+
parts.push(sval.toLowerCase());
|
|
269
|
+
}
|
|
270
|
+
if (parts.length > 0)
|
|
271
|
+
names.add(parts.join('.'));
|
|
272
|
+
});
|
|
273
|
+
return [...names];
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* True when the SELECT contains a data-modifying CTE
|
|
277
|
+
* (`WITH x AS (INSERT …) SELECT …`). PostgreSQL executes those even though the
|
|
278
|
+
* outer statement is a SELECT.
|
|
279
|
+
*/
|
|
280
|
+
function hasWritableCte(selectNode) {
|
|
281
|
+
const ctes = selectNode?.withClause?.ctes;
|
|
282
|
+
if (!Array.isArray(ctes))
|
|
283
|
+
return false;
|
|
284
|
+
for (const entry of ctes) {
|
|
285
|
+
const cte = entry?.CommonTableExpr ?? entry;
|
|
286
|
+
const query = cte?.ctequery;
|
|
287
|
+
const root = rootNodeType({ stmt: query });
|
|
288
|
+
if (exports.WRITE_ROOTS.has(root))
|
|
289
|
+
return true;
|
|
290
|
+
if (root === 'SelectStmt' && hasWritableCte(rootNode({ stmt: query })))
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
/** SELECT … INTO <table> creates and populates a table. */
|
|
296
|
+
function getSelectInto(selectNode) {
|
|
297
|
+
return selectNode?.intoClause ?? null;
|
|
298
|
+
}
|
|
299
|
+
/** Row-level locking clauses (FOR UPDATE / FOR SHARE / FOR NO KEY UPDATE …). */
|
|
300
|
+
function getLockingClauses(selectNode) {
|
|
301
|
+
const lc = selectNode?.lockingClause;
|
|
302
|
+
return Array.isArray(lc) ? lc : [];
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Find every read-shaped side effect in a statement.
|
|
306
|
+
*
|
|
307
|
+
* This walks *all* `SelectStmt` nodes rather than only the outermost one: a
|
|
308
|
+
* locking clause or a data-modifying CTE in a sub-select or CTE body takes the
|
|
309
|
+
* same locks and performs the same writes as one at the top level.
|
|
310
|
+
*/
|
|
311
|
+
function findReadSideEffects(stmt) {
|
|
312
|
+
const effects = { selectsInto: false, lockingClauses: [], writableCte: false };
|
|
313
|
+
walkAst(stmt.stmt, (type, payload) => {
|
|
314
|
+
if (type !== 'SelectStmt' || !payload || typeof payload !== 'object')
|
|
315
|
+
return;
|
|
316
|
+
if (getSelectInto(payload))
|
|
317
|
+
effects.selectsInto = true;
|
|
318
|
+
const locks = getLockingClauses(payload);
|
|
319
|
+
if (locks.length > 0)
|
|
320
|
+
effects.lockingClauses.push(...locks);
|
|
321
|
+
if (hasWritableCte(payload))
|
|
322
|
+
effects.writableCte = true;
|
|
323
|
+
});
|
|
324
|
+
return effects;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* True for `EXPLAIN ANALYZE`, which EXECUTES the statement it explains.
|
|
328
|
+
*
|
|
329
|
+
* libpg_query does not expose an `analyze` flag on `ExplainStmt`; the option is
|
|
330
|
+
* a `DefElem` with `defname: 'analyze'` in the `options` list, so reading a
|
|
331
|
+
* boolean field (as an earlier version did) always reported false.
|
|
332
|
+
*/
|
|
333
|
+
function explainExecutesStatement(node) {
|
|
334
|
+
const options = Array.isArray(node?.options) ? node.options : [];
|
|
335
|
+
return options.some((option) => {
|
|
336
|
+
const elem = option?.DefElem ?? option;
|
|
337
|
+
return String(elem?.defname ?? '').toLowerCase() === 'analyze';
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Root nodes that are session/transaction utilities rather than schema changes.
|
|
342
|
+
* They still require elevated capability (utility maps to `ddl` in the role
|
|
343
|
+
* policy) but they are not DDL for audit purposes. Note that PostgreSQL's
|
|
344
|
+
* ANALYZE also parses as `VacuumStmt`, so it is covered here.
|
|
345
|
+
*/
|
|
346
|
+
exports.UTILITY_ROOTS = new Set([
|
|
347
|
+
'CheckPointStmt',
|
|
348
|
+
'ClosePortalStmt',
|
|
349
|
+
'ClusterStmt',
|
|
350
|
+
'ConstraintsSetStmt',
|
|
351
|
+
'DeallocateStmt',
|
|
352
|
+
'DeclareCursorStmt',
|
|
353
|
+
'DiscardStmt',
|
|
354
|
+
'ExecuteStmt',
|
|
355
|
+
'ListenStmt',
|
|
356
|
+
'LoadStmt',
|
|
357
|
+
'LockStmt',
|
|
358
|
+
'NotifyStmt',
|
|
359
|
+
'PrepareStmt',
|
|
360
|
+
'TransactionStmt',
|
|
361
|
+
'UnlistenStmt',
|
|
362
|
+
'VacuumStmt',
|
|
363
|
+
'VariableSetStmt',
|
|
364
|
+
]);
|
|
365
|
+
/** Statements whose root node performs row modifications. */
|
|
366
|
+
exports.WRITE_ROOTS = new Set([
|
|
367
|
+
'InsertStmt',
|
|
368
|
+
'UpdateStmt',
|
|
369
|
+
'DeleteStmt',
|
|
370
|
+
'MergeStmt',
|
|
371
|
+
]);
|
|
372
|
+
/**
|
|
373
|
+
* Root nodes that are acceptable as "read only".
|
|
374
|
+
*
|
|
375
|
+
* This is an ALLOWLIST, not a denylist. Anything not listed here is not a
|
|
376
|
+
* read. That is the entire point: adding a new PostgreSQL statement type
|
|
377
|
+
* cannot accidentally make it readable.
|
|
378
|
+
*/
|
|
379
|
+
exports.READ_ROOTS = new Set(['SelectStmt', 'VariableShowStmt']);
|
|
380
|
+
/**
|
|
381
|
+
* Root nodes that modify schema, roles, or persistent database state.
|
|
382
|
+
* Anything not in READ_ROOTS or WRITE_ROOTS and not here is `utility`.
|
|
383
|
+
*/
|
|
384
|
+
exports.DDL_ROOTS = new Set([
|
|
385
|
+
'AlterTableStmt',
|
|
386
|
+
'AlterTableCmd',
|
|
387
|
+
'AlterDomainStmt',
|
|
388
|
+
'AlterEnumStmt',
|
|
389
|
+
'AlterFamilyStmt',
|
|
390
|
+
'AlterFdwStmt',
|
|
391
|
+
'AlterFunctionStmt',
|
|
392
|
+
'AlterObjectDependsStmt',
|
|
393
|
+
'AlterObjectSchemaStmt',
|
|
394
|
+
'AlterOperatorStmt',
|
|
395
|
+
'AlterPolicyStmt',
|
|
396
|
+
'AlterRoleStmt',
|
|
397
|
+
'AlterRoleSetStmt',
|
|
398
|
+
'AlterSubscriptionStmt',
|
|
399
|
+
'AlterSystemStmt',
|
|
400
|
+
'AlterTableMoveAllStmt',
|
|
401
|
+
'AlterTSDictionaryStmt',
|
|
402
|
+
'AlterTSConfigurationStmt',
|
|
403
|
+
'AlterUserMappingStmt',
|
|
404
|
+
'AlterDatabaseStmt',
|
|
405
|
+
'AlterDatabaseRefreshCollStmt',
|
|
406
|
+
'AlterDatabaseSetStmt',
|
|
407
|
+
'ClusterStmt',
|
|
408
|
+
'CommentStmt',
|
|
409
|
+
'CompositeTypeStmt',
|
|
410
|
+
'CreateAmStmt',
|
|
411
|
+
'CreateCastStmt',
|
|
412
|
+
'CreateConversionStmt',
|
|
413
|
+
'CreateDomainStmt',
|
|
414
|
+
'CreateEnumStmt',
|
|
415
|
+
'CreateEventTrigStmt',
|
|
416
|
+
'CreateExtensionStmt',
|
|
417
|
+
'CreateExtensionContentsStmt',
|
|
418
|
+
'CreateFdwStmt',
|
|
419
|
+
'CreateForeignServerStmt',
|
|
420
|
+
'CreateForeignTableStmt',
|
|
421
|
+
'CreateFunctionStmt',
|
|
422
|
+
'CreateMappingStmt',
|
|
423
|
+
'CreatePolicyStmt',
|
|
424
|
+
'CreatePLangFunctionStmt',
|
|
425
|
+
'CreateRangeStmt',
|
|
426
|
+
'CreateRoleStmt',
|
|
427
|
+
'CreateRuleStmt',
|
|
428
|
+
'CreateSchemaStmt',
|
|
429
|
+
'CreateSeqStmt',
|
|
430
|
+
'CreateStatsStmt',
|
|
431
|
+
'CreateSubscriptionStmt',
|
|
432
|
+
'CreateTableAsStmt',
|
|
433
|
+
'CreateTableSpaceStmt',
|
|
434
|
+
'CreateTransformStmt',
|
|
435
|
+
'CreateTrigStmt',
|
|
436
|
+
'CreateUserMappingStmt',
|
|
437
|
+
'CreateStmt',
|
|
438
|
+
'DefineStmt',
|
|
439
|
+
'DropOwnedStmt',
|
|
440
|
+
'DropRoleStmt',
|
|
441
|
+
'DropStmt',
|
|
442
|
+
'DropTableSpaceStmt',
|
|
443
|
+
'DropUserStmt',
|
|
444
|
+
'GrantRoleStmt',
|
|
445
|
+
'GrantStmt',
|
|
446
|
+
'IndexStmt',
|
|
447
|
+
'LockStmt',
|
|
448
|
+
'ReassignOwnedStmt',
|
|
449
|
+
'RefreshMatViewStmt',
|
|
450
|
+
'ReindexStmt',
|
|
451
|
+
'RenameStmt',
|
|
452
|
+
'RuleStmt',
|
|
453
|
+
'SecLabelStmt',
|
|
454
|
+
'TruncateStmt',
|
|
455
|
+
'ViewStmt',
|
|
456
|
+
]);
|
|
457
|
+
/**
|
|
458
|
+
* Root nodes that cannot run inside a transaction block.
|
|
459
|
+
* Used by the migration strategy detector, which previously mis-classified
|
|
460
|
+
* `DROP INDEX CONCURRENTLY` and `ALTER SYSTEM` as transactional.
|
|
461
|
+
*/
|
|
462
|
+
exports.NON_TRANSACTIONAL_ROOTS = new Set([
|
|
463
|
+
'AlterDatabaseStmt',
|
|
464
|
+
'AlterDatabaseSetStmt',
|
|
465
|
+
'AlterSubscriptionStmt',
|
|
466
|
+
'AlterSystemStmt',
|
|
467
|
+
'CheckPointStmt',
|
|
468
|
+
'ClusterStmt',
|
|
469
|
+
'ClosePortalStmt',
|
|
470
|
+
'CopyStmt',
|
|
471
|
+
'CreateDatabaseStmt',
|
|
472
|
+
'CreateSubscriptionStmt',
|
|
473
|
+
'DiscardStmt',
|
|
474
|
+
'DoStmt',
|
|
475
|
+
'DropSubscriptionStmt',
|
|
476
|
+
'IndexStmt',
|
|
477
|
+
'ListenStmt',
|
|
478
|
+
'LoadStmt',
|
|
479
|
+
'NotifyStmt',
|
|
480
|
+
'ReindexStmt',
|
|
481
|
+
'RefreshMatViewStmt',
|
|
482
|
+
'VacuumStmt',
|
|
483
|
+
'ClusterStmt',
|
|
484
|
+
'PrepareStmt',
|
|
485
|
+
'ExecuteStmt',
|
|
486
|
+
'DeclareCursorStmt',
|
|
487
|
+
]);
|
|
488
|
+
/** Roots that can execute arbitrary code or reach outside the database. */
|
|
489
|
+
exports.EXECUTABLE_ROOTS = new Set([
|
|
490
|
+
'DoStmt',
|
|
491
|
+
'CallStmt',
|
|
492
|
+
'ExecuteStmt',
|
|
493
|
+
'CreatePLangFunctionStmt',
|
|
494
|
+
]);
|
|
495
|
+
/**
|
|
496
|
+
* Functions that must never be reachable from a statement classified as a
|
|
497
|
+
* read, because they mutate state, read server files, reach other systems, or
|
|
498
|
+
* produce a side effect that escapes the transaction.
|
|
499
|
+
* Matched case-insensitively against the fully-qualified name *and* against
|
|
500
|
+
* the bare name, so `pg_catalog.pg_read_file` and `pg_read_file` both match.
|
|
501
|
+
*
|
|
502
|
+
* This list is NOT a security boundary and must not be presented as one. It is
|
|
503
|
+
* defence in depth in front of the control that is: every function a statement
|
|
504
|
+
* references is resolved against `pg_proc` and only `IMMUTABLE`, non-`SECURITY
|
|
505
|
+
* DEFINER` calls count as a read
|
|
506
|
+
* (`statement-classifier.ts` → `classifySelect`, `function-effects.ts`). That
|
|
507
|
+
* control is name-independent, which is what closes the class this list cannot:
|
|
508
|
+
* an operator's own `SECURITY DEFINER` helper around `pg_read_file`, or any
|
|
509
|
+
* VOLATILE function that INSERTs, parses as a plain `SELECT` and appears on no
|
|
510
|
+
* list at all.
|
|
511
|
+
*
|
|
512
|
+
* The claim that used to sit here — that a miss "cannot reach the host" because
|
|
513
|
+
* the connection is read-only — was FALSE. `default_transaction_read_only`
|
|
514
|
+
* constrains writes to relations and nothing else, and it does not span a
|
|
515
|
+
* second connection opened inside a function body. A read of a server file, a
|
|
516
|
+
* `NOTIFY` delivered on commit, an XID allocation, or a `dblink` round trip all
|
|
517
|
+
* succeed at `read_only`; only the write arm of a VOLATILE function is blocked.
|
|
518
|
+
* `RECOMMENDED_PG_ROLE` in `src/permissions/role-policy.ts` (the EXECUTE
|
|
519
|
+
* revokes, plus the default-privileges row that stops them decaying) is what a
|
|
520
|
+
* miss cannot get past.
|
|
521
|
+
*/
|
|
522
|
+
exports.DENIED_READ_FUNCTIONS = new Set([
|
|
523
|
+
// server filesystem
|
|
524
|
+
'pg_read_file',
|
|
525
|
+
'pg_read_binary_file',
|
|
526
|
+
'pg_read_server_file',
|
|
527
|
+
'pg_ls_dir',
|
|
528
|
+
'pg_stat_file',
|
|
529
|
+
'pg_ls_logdir',
|
|
530
|
+
'pg_ls_waldir',
|
|
531
|
+
'pg_ls_tmpdir',
|
|
532
|
+
'pg_ls_archive_statusdir',
|
|
533
|
+
// large objects
|
|
534
|
+
'lo_import',
|
|
535
|
+
'lo_export',
|
|
536
|
+
'lo_unlink',
|
|
537
|
+
'lo_truncate',
|
|
538
|
+
'lo_create',
|
|
539
|
+
'lo_open',
|
|
540
|
+
'lo_close',
|
|
541
|
+
'lo_from_bytea',
|
|
542
|
+
'lo_get',
|
|
543
|
+
'lo_put',
|
|
544
|
+
// sequences / catalogs
|
|
545
|
+
'setval',
|
|
546
|
+
'nextval',
|
|
547
|
+
'currval',
|
|
548
|
+
'lastval',
|
|
549
|
+
'set_config',
|
|
550
|
+
'pg_advisory_lock',
|
|
551
|
+
'pg_advisory_lock_shared',
|
|
552
|
+
'pg_advisory_xact_lock',
|
|
553
|
+
'pg_try_advisory_lock',
|
|
554
|
+
'pg_try_advisory_xact_lock',
|
|
555
|
+
'pg_advisory_unlock',
|
|
556
|
+
'pg_advisory_unlock_all',
|
|
557
|
+
// Notification and transaction-identity allocation.
|
|
558
|
+
//
|
|
559
|
+
// `pg_notify` is delivered when the enclosing transaction commits and is NOT
|
|
560
|
+
// rolled back with it, and PostgreSQL permits it inside a read-only
|
|
561
|
+
// transaction, so it is an exfiltration and message-injection channel that no
|
|
562
|
+
// write restriction covers. The `txid_*` / `pg_snapshot_*` /
|
|
563
|
+
// `pg_current_xact_id*` functions allocate or expose a real transaction id,
|
|
564
|
+
// which advances WAL and burns xid space — and `txid_current()` is the
|
|
565
|
+
// cheapest XID oracle there is. `pg_snapshot_xip` and `pg_snapshot_xmax` are
|
|
566
|
+
// pure readers of a snapshot, and are listed with their family rather than on
|
|
567
|
+
// their own merits. `pg_snapshot_time` is deliberately NOT listed: it was
|
|
568
|
+
// removed in PostgreSQL 13 and in every release that still has it, it is an
|
|
569
|
+
// IMMUTABLE function that only extracts a timestamp from its argument.
|
|
570
|
+
'pg_notify',
|
|
571
|
+
'pg_notify_async',
|
|
572
|
+
'txid_current',
|
|
573
|
+
'txid_current_snapshot',
|
|
574
|
+
'pg_snapshot_xip',
|
|
575
|
+
'pg_snapshot_xmax',
|
|
576
|
+
'pg_current_xact_id',
|
|
577
|
+
'pg_current_xact_id_if_assigned',
|
|
578
|
+
'pg_current_snapshot',
|
|
579
|
+
// session / server control
|
|
580
|
+
'pg_terminate_backend',
|
|
581
|
+
'pg_cancel_backend',
|
|
582
|
+
'pg_reload_conf',
|
|
583
|
+
'pg_rotate_logfile',
|
|
584
|
+
'pg_create_physical_replication_slot',
|
|
585
|
+
'pg_create_logical_replication_slot',
|
|
586
|
+
'pg_drop_replication_slot',
|
|
587
|
+
'pg_export_snapshot',
|
|
588
|
+
'pg_import_snapshot',
|
|
589
|
+
'pg_log_backend_memory_contexts',
|
|
590
|
+
// replication, failover and WAL — cluster-wide, non-transactional effects
|
|
591
|
+
'pg_promote',
|
|
592
|
+
'pg_backup_start',
|
|
593
|
+
'pg_backup_stop',
|
|
594
|
+
'pg_switch_wal',
|
|
595
|
+
'pg_create_restore_point',
|
|
596
|
+
'pg_logical_emit_message',
|
|
597
|
+
'pg_logical_slot_get_changes',
|
|
598
|
+
'pg_logical_slot_peek_changes',
|
|
599
|
+
'pg_replication_slot_advance',
|
|
600
|
+
'pg_replication_origin_create',
|
|
601
|
+
'pg_replication_origin_drop',
|
|
602
|
+
'pg_replication_origin_advance',
|
|
603
|
+
'pg_wal_replay_pause',
|
|
604
|
+
'pg_wal_replay_resume',
|
|
605
|
+
'pg_resetwal',
|
|
606
|
+
// statistics / server state
|
|
607
|
+
'pg_stat_reset',
|
|
608
|
+
'pg_stat_reset_single_table_counters',
|
|
609
|
+
// remote execution
|
|
610
|
+
'dblink',
|
|
611
|
+
'dblink_exec',
|
|
612
|
+
'postgres_fdw',
|
|
613
|
+
'file_fdw',
|
|
614
|
+
'sqlite_fdw',
|
|
615
|
+
// extension / object creation reachable from an expression context
|
|
616
|
+
'pg_tempfile',
|
|
617
|
+
'pg_file_write',
|
|
618
|
+
'pg_logdir_ls',
|
|
619
|
+
// time / resource abuse is handled by statement_timeout, listed for clarity
|
|
620
|
+
'pg_sleep',
|
|
621
|
+
'pg_sleep_for',
|
|
622
|
+
'pg_sleep_until',
|
|
623
|
+
'pg_sleep_background',
|
|
624
|
+
]);
|
|
625
|
+
/**
|
|
626
|
+
* Name prefixes denied for the same reason as {@link DENIED_READ_FUNCTIONS}.
|
|
627
|
+
*
|
|
628
|
+
* Families are matched on the bare function name so `dblink_fetch_result` and
|
|
629
|
+
* `postgres_fdw_validator` cannot be used to walk around the explicit list.
|
|
630
|
+
* Prefix rules are cheaper than enumerating every member of a function family
|
|
631
|
+
* and cannot be evaded by picking a sibling we forgot to write down.
|
|
632
|
+
*
|
|
633
|
+
* `txid_`, `pg_advisory_` and `pg_snapshot_` are here because the families
|
|
634
|
+
* grow: `pg_advisory_xact_lock_shared` and `txid_current_if_assigned` exist on
|
|
635
|
+
* some releases and not others.
|
|
636
|
+
*/
|
|
637
|
+
exports.DENIED_READ_FUNCTION_PREFIXES = [
|
|
638
|
+
'dblink',
|
|
639
|
+
'dblink_',
|
|
640
|
+
'postgres_fdw',
|
|
641
|
+
'file_fdw',
|
|
642
|
+
'sqlite_fdw',
|
|
643
|
+
'mysql_fdw',
|
|
644
|
+
'pg_read_',
|
|
645
|
+
'pg_ls_',
|
|
646
|
+
'pg_stat_file',
|
|
647
|
+
'pg_stat_reset',
|
|
648
|
+
'pg_notify',
|
|
649
|
+
'pg_advisory_',
|
|
650
|
+
'txid_',
|
|
651
|
+
'pg_snapshot_',
|
|
652
|
+
'pg_current_xact_id',
|
|
653
|
+
'pg_current_snapshot',
|
|
654
|
+
'lo_',
|
|
655
|
+
];
|
|
656
|
+
/**
|
|
657
|
+
* Name suffixes denied for the same reason as {@link DENIED_READ_FUNCTIONS}.
|
|
658
|
+
*
|
|
659
|
+
* A prefix cannot express "every function whose name ends this way", and the
|
|
660
|
+
* families that matter are named by their suffix: `dblink_exec`,
|
|
661
|
+
* `dblink_send_query`, `postgres_fdw_disconnect`, `mysql_fdw_connect_u`. They
|
|
662
|
+
* are matched on the bare function name, exactly as the prefixes are.
|
|
663
|
+
*
|
|
664
|
+
* This costs generality, not safety: a function called `x_disconnect` that does
|
|
665
|
+
* nothing is refused as a read, which is the correct direction for a control
|
|
666
|
+
* that has to be conservative about names it cannot resolve.
|
|
667
|
+
*/
|
|
668
|
+
exports.DENIED_READ_FUNCTION_SUFFIXES = [
|
|
669
|
+
'_exec',
|
|
670
|
+
'_connect_u',
|
|
671
|
+
'_connect',
|
|
672
|
+
'_disconnect',
|
|
673
|
+
'_send_query',
|
|
674
|
+
];
|
|
675
|
+
/** True when a (lower-cased, dot-joined) function name is denied in a read. */
|
|
676
|
+
function isDeniedReadFunction(name) {
|
|
677
|
+
const full = name.toLowerCase();
|
|
678
|
+
const bare = full.includes('.') ? full.slice(full.lastIndexOf('.') + 1) : full;
|
|
679
|
+
if (exports.DENIED_READ_FUNCTIONS.has(full) || exports.DENIED_READ_FUNCTIONS.has(bare))
|
|
680
|
+
return true;
|
|
681
|
+
if (exports.DENIED_READ_FUNCTION_PREFIXES.some((prefix) => bare.startsWith(prefix)))
|
|
682
|
+
return true;
|
|
683
|
+
return exports.DENIED_READ_FUNCTION_SUFFIXES.some((suffix) => bare.endsWith(suffix));
|
|
684
|
+
}
|
|
685
|
+
/** Every denylisted function a statement references. */
|
|
686
|
+
function findDeniedReadFunction(fnNames) {
|
|
687
|
+
const hits = [];
|
|
688
|
+
for (const full of fnNames) {
|
|
689
|
+
if (isDeniedReadFunction(full))
|
|
690
|
+
hits.push(full);
|
|
691
|
+
}
|
|
692
|
+
return hits;
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Node-level transactionality that the root-node set cannot express.
|
|
696
|
+
* libpg_query uses a `concurrent` boolean on IndexStmt and DropStmt.
|
|
697
|
+
*/
|
|
698
|
+
function isNonTransactionalNode(rootType, node) {
|
|
699
|
+
if (rootType === 'IndexStmt' || rootType === 'DropStmt') {
|
|
700
|
+
return node?.concurrent === true;
|
|
701
|
+
}
|
|
702
|
+
return exports.NON_TRANSACTIONAL_ROOTS.has(rootType);
|
|
703
|
+
}
|
|
704
|
+
//# sourceMappingURL=sql-parser.js.map
|