@intentius/chant-lexicon-sql 0.0.0-stage → 0.112.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/README.md +39 -2
- package/dist/clickhouse/apply/apply.d.ts +82 -0
- package/dist/clickhouse/apply/apply.d.ts.map +1 -0
- package/dist/clickhouse/apply/mutations.d.ts +46 -0
- package/dist/clickhouse/apply/mutations.d.ts.map +1 -0
- package/dist/clickhouse/apply/statements.d.ts +99 -0
- package/dist/clickhouse/apply/statements.d.ts.map +1 -0
- package/dist/clickhouse/catalog-types.d.ts +76 -0
- package/dist/clickhouse/catalog-types.d.ts.map +1 -0
- package/dist/clickhouse/container.d.ts +63 -0
- package/dist/clickhouse/container.d.ts.map +1 -0
- package/dist/clickhouse/engine-syntax.d.ts +43 -0
- package/dist/clickhouse/engine-syntax.d.ts.map +1 -0
- package/dist/clickhouse/entities.d.ts +183 -0
- package/dist/clickhouse/entities.d.ts.map +1 -0
- package/dist/clickhouse/http.d.ts +40 -0
- package/dist/clickhouse/http.d.ts.map +1 -0
- package/dist/clickhouse/import/generator.d.ts +16 -0
- package/dist/clickhouse/import/generator.d.ts.map +1 -0
- package/dist/clickhouse/import/ir.d.ts +52 -0
- package/dist/clickhouse/import/ir.d.ts.map +1 -0
- package/dist/clickhouse/import/live-export.d.ts +28 -0
- package/dist/clickhouse/import/live-export.d.ts.map +1 -0
- package/dist/clickhouse/import/parser.d.ts +10 -0
- package/dist/clickhouse/import/parser.d.ts.map +1 -0
- package/dist/clickhouse/live/bind.d.ts +56 -0
- package/dist/clickhouse/live/bind.d.ts.map +1 -0
- package/dist/clickhouse/live/catalog.d.ts +39 -0
- package/dist/clickhouse/live/catalog.d.ts.map +1 -0
- package/dist/clickhouse/live/describe-resources.d.ts +34 -0
- package/dist/clickhouse/live/describe-resources.d.ts.map +1 -0
- package/dist/clickhouse/overlays/codecs.d.ts +28 -0
- package/dist/clickhouse/overlays/codecs.d.ts.map +1 -0
- package/dist/clickhouse/overlays/engines.d.ts +20 -0
- package/dist/clickhouse/overlays/engines.d.ts.map +1 -0
- package/dist/clickhouse/overlays/kinds.d.ts +38 -0
- package/dist/clickhouse/overlays/kinds.d.ts.map +1 -0
- package/dist/clickhouse/overlays/projections.d.ts +27 -0
- package/dist/clickhouse/overlays/projections.d.ts.map +1 -0
- package/dist/clickhouse/overlays/skip-indexes.d.ts +10 -0
- package/dist/clickhouse/overlays/skip-indexes.d.ts.map +1 -0
- package/dist/clickhouse/overlays/ttl.d.ts +35 -0
- package/dist/clickhouse/overlays/ttl.d.ts.map +1 -0
- package/dist/clickhouse/overlays/types.d.ts +21 -0
- package/dist/clickhouse/overlays/types.d.ts.map +1 -0
- package/dist/clickhouse/ownership.d.ts +71 -0
- package/dist/clickhouse/ownership.d.ts.map +1 -0
- package/dist/clickhouse/parser.d.ts +130 -0
- package/dist/clickhouse/parser.d.ts.map +1 -0
- package/dist/clickhouse/plan/commands.d.ts +26 -0
- package/dist/clickhouse/plan/commands.d.ts.map +1 -0
- package/dist/clickhouse/plan/deep.d.ts +32 -0
- package/dist/clickhouse/plan/deep.d.ts.map +1 -0
- package/dist/clickhouse/plan/diff.d.ts +37 -0
- package/dist/clickhouse/plan/diff.d.ts.map +1 -0
- package/dist/clickhouse/plan/disruption.d.ts +17 -0
- package/dist/clickhouse/plan/disruption.d.ts.map +1 -0
- package/dist/clickhouse/plan/normalize.d.ts +97 -0
- package/dist/clickhouse/plan/normalize.d.ts.map +1 -0
- package/dist/clickhouse/plan/rebuild-handoff.d.ts +38 -0
- package/dist/clickhouse/plan/rebuild-handoff.d.ts.map +1 -0
- package/dist/clickhouse/plan/report.d.ts +6 -0
- package/dist/clickhouse/plan/report.d.ts.map +1 -0
- package/dist/clickhouse/plan/rules.d.ts +60 -0
- package/dist/clickhouse/plan/rules.d.ts.map +1 -0
- package/dist/clickhouse/plan/schema.d.ts +23 -0
- package/dist/clickhouse/plan/schema.d.ts.map +1 -0
- package/dist/clickhouse/plan/server-format.d.ts +12 -0
- package/dist/clickhouse/plan/server-format.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/backfill.d.ts +70 -0
- package/dist/clickhouse/rebuild/backfill.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/observe.d.ts +157 -0
- package/dist/clickhouse/rebuild/observe.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/op.d.ts +108 -0
- package/dist/clickhouse/rebuild/op.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/partitions.d.ts +24 -0
- package/dist/clickhouse/rebuild/partitions.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/receipts.d.ts +76 -0
- package/dist/clickhouse/rebuild/receipts.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/replicas.d.ts +78 -0
- package/dist/clickhouse/rebuild/replicas.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/steps.d.ts +151 -0
- package/dist/clickhouse/rebuild/steps.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/verify.d.ts +51 -0
- package/dist/clickhouse/rebuild/verify.d.ts.map +1 -0
- package/dist/clickhouse/testing/fake-server.d.ts +27 -0
- package/dist/clickhouse/testing/fake-server.d.ts.map +1 -0
- package/dist/clickhouse/testing/roundtrip-schema.d.ts +3 -0
- package/dist/clickhouse/testing/roundtrip-schema.d.ts.map +1 -0
- package/dist/clickhouse/testing/writable-server.d.ts +35 -0
- package/dist/clickhouse/testing/writable-server.d.ts.map +1 -0
- package/dist/clickhouse/tokens.d.ts +15 -0
- package/dist/clickhouse/tokens.d.ts.map +1 -0
- package/dist/clickhouse.d.ts +24 -0
- package/dist/clickhouse.d.ts.map +1 -0
- package/dist/codegen/classifier-page.d.ts +6 -0
- package/dist/codegen/classifier-page.d.ts.map +1 -0
- package/dist/codegen/clickhouse-module.d.ts +23 -0
- package/dist/codegen/clickhouse-module.d.ts.map +1 -0
- package/dist/codegen/docs-cli.d.ts +3 -0
- package/dist/codegen/docs-cli.d.ts.map +1 -0
- package/dist/codegen/docs.d.ts +8 -0
- package/dist/codegen/docs.d.ts.map +1 -0
- package/dist/codegen/generate-cli.d.ts +3 -0
- package/dist/codegen/generate-cli.d.ts.map +1 -0
- package/dist/codegen/generate.d.ts +40 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +7 -0
- package/dist/codegen/package.d.ts.map +1 -0
- package/dist/codegen/postgres-classifier-page.d.ts +7 -0
- package/dist/codegen/postgres-classifier-page.d.ts.map +1 -0
- package/dist/codegen/postgres-module.d.ts +30 -0
- package/dist/codegen/postgres-module.d.ts.map +1 -0
- package/dist/codegen/registry.d.ts +12 -0
- package/dist/codegen/registry.d.ts.map +1 -0
- package/dist/composites/audit-log-table.d.ts +31 -0
- package/dist/composites/audit-log-table.d.ts.map +1 -0
- package/dist/composites/catalog.d.ts +3 -0
- package/dist/composites/catalog.d.ts.map +1 -0
- package/dist/composites/cdc-mirror.d.ts +32 -0
- package/dist/composites/cdc-mirror.d.ts.map +1 -0
- package/dist/composites/clickhouse.d.ts +7 -0
- package/dist/composites/clickhouse.d.ts.map +1 -0
- package/dist/composites/events-table.d.ts +32 -0
- package/dist/composites/events-table.d.ts.map +1 -0
- package/dist/composites/index.d.ts +9 -0
- package/dist/composites/index.d.ts.map +1 -0
- package/dist/composites/join-table.d.ts +41 -0
- package/dist/composites/join-table.d.ts.map +1 -0
- package/dist/composites/postgres.d.ts +7 -0
- package/dist/composites/postgres.d.ts.map +1 -0
- package/dist/composites/refreshed-view.d.ts +32 -0
- package/dist/composites/refreshed-view.d.ts.map +1 -0
- package/dist/composites/replacing-table.d.ts +34 -0
- package/dist/composites/replacing-table.d.ts.map +1 -0
- package/dist/composites/rollup-view.d.ts +39 -0
- package/dist/composites/rollup-view.d.ts.map +1 -0
- package/dist/composites/sharded-table.d.ts +35 -0
- package/dist/composites/sharded-table.d.ts.map +1 -0
- package/dist/composites/soft-delete-table.d.ts +40 -0
- package/dist/composites/soft-delete-table.d.ts.map +1 -0
- package/dist/composites/tenant-table.d.ts +34 -0
- package/dist/composites/tenant-table.d.ts.map +1 -0
- package/dist/config.d.ts +213 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/core/apply.d.ts +89 -0
- package/dist/core/apply.d.ts.map +1 -0
- package/dist/core/classifier.d.ts +88 -0
- package/dist/core/classifier.d.ts.map +1 -0
- package/dist/core/container.d.ts +45 -0
- package/dist/core/container.d.ts.map +1 -0
- package/dist/core/cursor.d.ts +67 -0
- package/dist/core/cursor.d.ts.map +1 -0
- package/dist/core/diff.d.ts +49 -0
- package/dist/core/diff.d.ts.map +1 -0
- package/dist/core/entity.d.ts +41 -0
- package/dist/core/entity.d.ts.map +1 -0
- package/dist/core/find-templates.d.ts +69 -0
- package/dist/core/find-templates.d.ts.map +1 -0
- package/dist/core/handoff.d.ts +36 -0
- package/dist/core/handoff.d.ts.map +1 -0
- package/dist/core/index.d.ts +61 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/interpolation.d.ts +88 -0
- package/dist/core/interpolation.d.ts.map +1 -0
- package/dist/core/normalize.d.ts +18 -0
- package/dist/core/normalize.d.ts.map +1 -0
- package/dist/core/ownership.d.ts +60 -0
- package/dist/core/ownership.d.ts.map +1 -0
- package/dist/core/receipts.d.ts +28 -0
- package/dist/core/receipts.d.ts.map +1 -0
- package/dist/core/references.d.ts +37 -0
- package/dist/core/references.d.ts.map +1 -0
- package/dist/core/template.d.ts +41 -0
- package/dist/core/template.d.ts.map +1 -0
- package/dist/core/testing/http-stub.d.ts +17 -0
- package/dist/core/testing/http-stub.d.ts.map +1 -0
- package/dist/core/tokens.d.ts +102 -0
- package/dist/core/tokens.d.ts.map +1 -0
- package/dist/coverage.d.ts +25 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/detect.d.ts +15 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/dialects.d.ts +20 -0
- package/dist/dialects.d.ts.map +1 -0
- package/dist/generated/clickhouse-types.d.ts +4380 -0
- package/dist/generated/clickhouse-types.d.ts.map +1 -0
- package/dist/generated/clickhouse.d.ts +11 -0
- package/dist/generated/clickhouse.d.ts.map +1 -0
- package/dist/generated/postgres-types.d.ts +1579 -0
- package/dist/generated/postgres-types.d.ts.map +1 -0
- package/dist/generated/postgres.d.ts +9 -0
- package/dist/generated/postgres.d.ts.map +1 -0
- package/dist/import-generator.d.ts +8 -0
- package/dist/import-generator.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/init-templates.d.ts +20 -0
- package/dist/init-templates.d.ts.map +1 -0
- package/dist/integrity.json +61 -0
- package/dist/lint/audit-catalog.d.ts +10 -0
- package/dist/lint/audit-catalog.d.ts.map +1 -0
- package/dist/lint/audit-lineage.d.ts +25 -0
- package/dist/lint/audit-lineage.d.ts.map +1 -0
- package/dist/lint/post-synth/audit-entries.d.ts +8 -0
- package/dist/lint/post-synth/audit-entries.d.ts.map +1 -0
- package/dist/lint/post-synth/clickhouse-helpers.d.ts +85 -0
- package/dist/lint/post-synth/clickhouse-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/index.d.ts +3 -0
- package/dist/lint/post-synth/index.d.ts.map +1 -0
- package/dist/lint/post-synth/postgres-audit-entries.d.ts +9 -0
- package/dist/lint/post-synth/postgres-audit-entries.d.ts.map +1 -0
- package/dist/lint/post-synth/postgres-helpers.d.ts +89 -0
- package/dist/lint/post-synth/postgres-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/sql-helpers.d.ts +27 -0
- package/dist/lint/post-synth/sql-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch101.d.ts +12 -0
- package/dist/lint/post-synth/sqlch101.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch102.d.ts +9 -0
- package/dist/lint/post-synth/sqlch102.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch103.d.ts +10 -0
- package/dist/lint/post-synth/sqlch103.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch104.d.ts +9 -0
- package/dist/lint/post-synth/sqlch104.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch105.d.ts +10 -0
- package/dist/lint/post-synth/sqlch105.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch106.d.ts +11 -0
- package/dist/lint/post-synth/sqlch106.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch107.d.ts +10 -0
- package/dist/lint/post-synth/sqlch107.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch108.d.ts +11 -0
- package/dist/lint/post-synth/sqlch108.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch109.d.ts +10 -0
- package/dist/lint/post-synth/sqlch109.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch110.d.ts +12 -0
- package/dist/lint/post-synth/sqlch110.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch111.d.ts +11 -0
- package/dist/lint/post-synth/sqlch111.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch112.d.ts +12 -0
- package/dist/lint/post-synth/sqlch112.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch113.d.ts +9 -0
- package/dist/lint/post-synth/sqlch113.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch114.d.ts +8 -0
- package/dist/lint/post-synth/sqlch114.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch115.d.ts +13 -0
- package/dist/lint/post-synth/sqlch115.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch116.d.ts +10 -0
- package/dist/lint/post-synth/sqlch116.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch117.d.ts +9 -0
- package/dist/lint/post-synth/sqlch117.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch118.d.ts +10 -0
- package/dist/lint/post-synth/sqlch118.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch119.d.ts +11 -0
- package/dist/lint/post-synth/sqlch119.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch120.d.ts +10 -0
- package/dist/lint/post-synth/sqlch120.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg101.d.ts +12 -0
- package/dist/lint/post-synth/sqlpg101.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg102.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg102.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg103.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg103.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg104.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg104.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg105.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg105.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg106.d.ts +9 -0
- package/dist/lint/post-synth/sqlpg106.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg107.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg107.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg108.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg108.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg109.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg109.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg110.d.ts +12 -0
- package/dist/lint/post-synth/sqlpg110.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg111.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg111.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg112.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg112.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg113.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg113.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg114.d.ts +13 -0
- package/dist/lint/post-synth/sqlpg114.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg115.d.ts +13 -0
- package/dist/lint/post-synth/sqlpg115.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg116.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg116.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg117.d.ts +12 -0
- package/dist/lint/post-synth/sqlpg117.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg118.d.ts +12 -0
- package/dist/lint/post-synth/sqlpg118.d.ts.map +1 -0
- package/dist/lint/rules/index.d.ts +12 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lint/rules/postgres-templates.d.ts +18 -0
- package/dist/lint/rules/postgres-templates.d.ts.map +1 -0
- package/dist/lint/rules/sqlch001.d.ts +12 -0
- package/dist/lint/rules/sqlch001.d.ts.map +1 -0
- package/dist/lint/rules/sqlch002.d.ts +11 -0
- package/dist/lint/rules/sqlch002.d.ts.map +1 -0
- package/dist/lint/rules/sqlch003.d.ts +12 -0
- package/dist/lint/rules/sqlch003.d.ts.map +1 -0
- package/dist/lint/rules/sqlpg001.d.ts +16 -0
- package/dist/lint/rules/sqlpg001.d.ts.map +1 -0
- package/dist/lint/rules/sqlpg002.d.ts +12 -0
- package/dist/lint/rules/sqlpg002.d.ts.map +1 -0
- package/dist/lint/rules/sqlpg003.d.ts +16 -0
- package/dist/lint/rules/sqlpg003.d.ts.map +1 -0
- package/dist/lint/rules/sqlpg004.d.ts +21 -0
- package/dist/lint/rules/sqlpg004.d.ts.map +1 -0
- package/dist/lint/rules/templates.d.ts +23 -0
- package/dist/lint/rules/templates.d.ts.map +1 -0
- package/dist/live-dialect.d.ts +25 -0
- package/dist/live-dialect.d.ts.map +1 -0
- package/dist/lsp/catalog.d.ts +22 -0
- package/dist/lsp/catalog.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +13 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/hover.d.ts +12 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/lsp/postgres-catalog.d.ts +85 -0
- package/dist/lsp/postgres-catalog.d.ts.map +1 -0
- package/dist/lsp/postgres-template.d.ts +35 -0
- package/dist/lsp/postgres-template.d.ts.map +1 -0
- package/dist/lsp/postgres.d.ts +20 -0
- package/dist/lsp/postgres.d.ts.map +1 -0
- package/dist/lsp/refs.d.ts +8 -0
- package/dist/lsp/refs.d.ts.map +1 -0
- package/dist/lsp/registry.d.ts +4 -0
- package/dist/lsp/registry.d.ts.map +1 -0
- package/dist/lsp/template.d.ts +34 -0
- package/dist/lsp/template.d.ts.map +1 -0
- package/dist/manifest.json +8 -0
- package/dist/mcp/index.d.ts +13 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/postgres.d.ts +32 -0
- package/dist/mcp/postgres.d.ts.map +1 -0
- package/dist/meta.json +67 -0
- package/dist/okf/index.md +67 -0
- package/dist/okf/rules/SQLCH001.md +11 -0
- package/dist/okf/rules/SQLCH002.md +11 -0
- package/dist/okf/rules/SQLCH003.md +11 -0
- package/dist/okf/rules/SQLCH101.md +15 -0
- package/dist/okf/rules/SQLCH102.md +11 -0
- package/dist/okf/rules/SQLCH103.md +11 -0
- package/dist/okf/rules/SQLCH104.md +11 -0
- package/dist/okf/rules/SQLCH105.md +11 -0
- package/dist/okf/rules/SQLCH106.md +11 -0
- package/dist/okf/rules/SQLCH107.md +11 -0
- package/dist/okf/rules/SQLCH108.md +15 -0
- package/dist/okf/rules/SQLCH109.md +11 -0
- package/dist/okf/rules/SQLCH110.md +11 -0
- package/dist/okf/rules/SQLCH111.md +11 -0
- package/dist/okf/rules/SQLCH112.md +11 -0
- package/dist/okf/rules/SQLCH113.md +11 -0
- package/dist/okf/rules/SQLCH114.md +11 -0
- package/dist/okf/rules/SQLCH115.md +11 -0
- package/dist/okf/rules/SQLCH116.md +11 -0
- package/dist/okf/rules/SQLCH117.md +15 -0
- package/dist/okf/rules/SQLCH118.md +15 -0
- package/dist/okf/rules/SQLCH119.md +15 -0
- package/dist/okf/rules/SQLCH120.md +15 -0
- package/dist/okf/rules/SQLPG001.md +11 -0
- package/dist/okf/rules/SQLPG002.md +11 -0
- package/dist/okf/rules/SQLPG003.md +11 -0
- package/dist/okf/rules/SQLPG004.md +11 -0
- package/dist/okf/rules/SQLPG101.md +11 -0
- package/dist/okf/rules/SQLPG102.md +11 -0
- package/dist/okf/rules/SQLPG103.md +11 -0
- package/dist/okf/rules/SQLPG104.md +11 -0
- package/dist/okf/rules/SQLPG105.md +11 -0
- package/dist/okf/rules/SQLPG106.md +11 -0
- package/dist/okf/rules/SQLPG107.md +11 -0
- package/dist/okf/rules/SQLPG108.md +11 -0
- package/dist/okf/rules/SQLPG109.md +11 -0
- package/dist/okf/rules/SQLPG110.md +11 -0
- package/dist/okf/rules/SQLPG111.md +11 -0
- package/dist/okf/rules/SQLPG112.md +11 -0
- package/dist/okf/rules/SQLPG113.md +24 -0
- package/dist/okf/rules/SQLPG114.md +11 -0
- package/dist/okf/rules/SQLPG115.md +11 -0
- package/dist/okf/rules/SQLPG116.md +15 -0
- package/dist/okf/rules/SQLPG117.md +11 -0
- package/dist/okf/rules/SQLPG118.md +11 -0
- package/dist/okf/types/Database.md +15 -0
- package/dist/okf/types/MaterializedView.md +14 -0
- package/dist/okf/types/PostgresDomain.md +13 -0
- package/dist/okf/types/PostgresEnum.md +13 -0
- package/dist/okf/types/PostgresExtension.md +13 -0
- package/dist/okf/types/PostgresIndex.md +9 -0
- package/dist/okf/types/PostgresMaterializedView.md +13 -0
- package/dist/okf/types/PostgresSchema.md +13 -0
- package/dist/okf/types/PostgresSequence.md +13 -0
- package/dist/okf/types/PostgresTable.md +13 -0
- package/dist/okf/types/PostgresView.md +13 -0
- package/dist/okf/types/Table.md +15 -0
- package/dist/okf/types/View.md +13 -0
- package/dist/op/activities/clickhouse-apply.d.ts +56 -0
- package/dist/op/activities/clickhouse-apply.d.ts.map +1 -0
- package/dist/op/activities/clickhouse-emulator.d.ts +26 -0
- package/dist/op/activities/clickhouse-emulator.d.ts.map +1 -0
- package/dist/op/activities/clickhouse-rebuild.d.ts +43 -0
- package/dist/op/activities/clickhouse-rebuild.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +19 -0
- package/dist/op/activities/index.d.ts.map +1 -0
- package/dist/op/activities/postgres-apply.d.ts +69 -0
- package/dist/op/activities/postgres-apply.d.ts.map +1 -0
- package/dist/op/activities/postgres-emulator.d.ts +33 -0
- package/dist/op/activities/postgres-emulator.d.ts.map +1 -0
- package/dist/op/activities/postgres-migration.d.ts +48 -0
- package/dist/op/activities/postgres-migration.d.ts.map +1 -0
- package/dist/op/activity-contracts.d.ts +464 -0
- package/dist/op/activity-contracts.d.ts.map +1 -0
- package/dist/package-cli.d.ts +3 -0
- package/dist/package-cli.d.ts.map +1 -0
- package/dist/plugin.d.ts +12 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/postgres/apply/apply.d.ts +163 -0
- package/dist/postgres/apply/apply.d.ts.map +1 -0
- package/dist/postgres/apply/statements.d.ts +138 -0
- package/dist/postgres/apply/statements.d.ts.map +1 -0
- package/dist/postgres/catalog-types.d.ts +50 -0
- package/dist/postgres/catalog-types.d.ts.map +1 -0
- package/dist/postgres/container.d.ts +23 -0
- package/dist/postgres/container.d.ts.map +1 -0
- package/dist/postgres/entities.d.ts +322 -0
- package/dist/postgres/entities.d.ts.map +1 -0
- package/dist/postgres/entity-types.d.ts +17 -0
- package/dist/postgres/entity-types.d.ts.map +1 -0
- package/dist/postgres/import/generator.d.ts +28 -0
- package/dist/postgres/import/generator.d.ts.map +1 -0
- package/dist/postgres/import/ir.d.ts +24 -0
- package/dist/postgres/import/ir.d.ts.map +1 -0
- package/dist/postgres/import/live-export.d.ts +26 -0
- package/dist/postgres/import/live-export.d.ts.map +1 -0
- package/dist/postgres/keywords.d.ts +22 -0
- package/dist/postgres/keywords.d.ts.map +1 -0
- package/dist/postgres/live/bind.d.ts +76 -0
- package/dist/postgres/live/bind.d.ts.map +1 -0
- package/dist/postgres/live/catalog.d.ts +98 -0
- package/dist/postgres/live/catalog.d.ts.map +1 -0
- package/dist/postgres/live/client.d.ts +32 -0
- package/dist/postgres/live/client.d.ts.map +1 -0
- package/dist/postgres/live/describe-resources.d.ts +41 -0
- package/dist/postgres/live/describe-resources.d.ts.map +1 -0
- package/dist/postgres/migrate/backfill.d.ts +103 -0
- package/dist/postgres/migrate/backfill.d.ts.map +1 -0
- package/dist/postgres/migrate/batches.d.ts +90 -0
- package/dist/postgres/migrate/batches.d.ts.map +1 -0
- package/dist/postgres/migrate/carry.d.ts +196 -0
- package/dist/postgres/migrate/carry.d.ts.map +1 -0
- package/dist/postgres/migrate/handoff.d.ts +46 -0
- package/dist/postgres/migrate/handoff.d.ts.map +1 -0
- package/dist/postgres/migrate/names.d.ts +55 -0
- package/dist/postgres/migrate/names.d.ts.map +1 -0
- package/dist/postgres/migrate/observe.d.ts +139 -0
- package/dist/postgres/migrate/observe.d.ts.map +1 -0
- package/dist/postgres/migrate/op.d.ts +128 -0
- package/dist/postgres/migrate/op.d.ts.map +1 -0
- package/dist/postgres/migrate/receipts.d.ts +63 -0
- package/dist/postgres/migrate/receipts.d.ts.map +1 -0
- package/dist/postgres/migrate/replication.d.ts +80 -0
- package/dist/postgres/migrate/replication.d.ts.map +1 -0
- package/dist/postgres/migrate/steps.d.ts +225 -0
- package/dist/postgres/migrate/steps.d.ts.map +1 -0
- package/dist/postgres/overlays/columns.d.ts +6 -0
- package/dist/postgres/overlays/columns.d.ts.map +1 -0
- package/dist/postgres/overlays/constraints.d.ts +8 -0
- package/dist/postgres/overlays/constraints.d.ts.map +1 -0
- package/dist/postgres/overlays/indexes.d.ts +8 -0
- package/dist/postgres/overlays/indexes.d.ts.map +1 -0
- package/dist/postgres/overlays/kinds.d.ts +48 -0
- package/dist/postgres/overlays/kinds.d.ts.map +1 -0
- package/dist/postgres/overlays/partitioning.d.ts +5 -0
- package/dist/postgres/overlays/partitioning.d.ts.map +1 -0
- package/dist/postgres/overlays/relations.d.ts +6 -0
- package/dist/postgres/overlays/relations.d.ts.map +1 -0
- package/dist/postgres/overlays/storage.d.ts +28 -0
- package/dist/postgres/overlays/storage.d.ts.map +1 -0
- package/dist/postgres/overlays/type-ddl.d.ts +7 -0
- package/dist/postgres/overlays/type-ddl.d.ts.map +1 -0
- package/dist/postgres/overlays/types.d.ts +24 -0
- package/dist/postgres/overlays/types.d.ts.map +1 -0
- package/dist/postgres/parser.d.ts +216 -0
- package/dist/postgres/parser.d.ts.map +1 -0
- package/dist/postgres/plan/commands.d.ts +61 -0
- package/dist/postgres/plan/commands.d.ts.map +1 -0
- package/dist/postgres/plan/deep.d.ts +33 -0
- package/dist/postgres/plan/deep.d.ts.map +1 -0
- package/dist/postgres/plan/diff.d.ts +45 -0
- package/dist/postgres/plan/diff.d.ts.map +1 -0
- package/dist/postgres/plan/disruption.d.ts +14 -0
- package/dist/postgres/plan/disruption.d.ts.map +1 -0
- package/dist/postgres/plan/normalize.d.ts +108 -0
- package/dist/postgres/plan/normalize.d.ts.map +1 -0
- package/dist/postgres/plan/report.d.ts +6 -0
- package/dist/postgres/plan/report.d.ts.map +1 -0
- package/dist/postgres/plan/rules.d.ts +84 -0
- package/dist/postgres/plan/rules.d.ts.map +1 -0
- package/dist/postgres/plan/schema.d.ts +50 -0
- package/dist/postgres/plan/schema.d.ts.map +1 -0
- package/dist/postgres/plan/server-normalize.d.ts +26 -0
- package/dist/postgres/plan/server-normalize.d.ts.map +1 -0
- package/dist/postgres/providers/aurora.d.ts +12 -0
- package/dist/postgres/providers/aurora.d.ts.map +1 -0
- package/dist/postgres/providers/azure.d.ts +14 -0
- package/dist/postgres/providers/azure.d.ts.map +1 -0
- package/dist/postgres/providers/cloud-sql.d.ts +11 -0
- package/dist/postgres/providers/cloud-sql.d.ts.map +1 -0
- package/dist/postgres/providers/index.d.ts +35 -0
- package/dist/postgres/providers/index.d.ts.map +1 -0
- package/dist/postgres/providers/neon.d.ts +13 -0
- package/dist/postgres/providers/neon.d.ts.map +1 -0
- package/dist/postgres/providers/rds.d.ts +10 -0
- package/dist/postgres/providers/rds.d.ts.map +1 -0
- package/dist/postgres/providers/supabase.d.ts +12 -0
- package/dist/postgres/providers/supabase.d.ts.map +1 -0
- package/dist/postgres/providers/types.d.ts +59 -0
- package/dist/postgres/providers/types.d.ts.map +1 -0
- package/dist/postgres/testing/fake-client.d.ts +38 -0
- package/dist/postgres/testing/fake-client.d.ts.map +1 -0
- package/dist/postgres/testing/migration.d.ts +25 -0
- package/dist/postgres/testing/migration.d.ts.map +1 -0
- package/dist/postgres/testing/roundtrip-schema.d.ts +11 -0
- package/dist/postgres/testing/roundtrip-schema.d.ts.map +1 -0
- package/dist/postgres/testing/server.d.ts +17 -0
- package/dist/postgres/testing/server.d.ts.map +1 -0
- package/dist/postgres/testing/writable-server.d.ts +45 -0
- package/dist/postgres/testing/writable-server.d.ts.map +1 -0
- package/dist/postgres/tokens.d.ts +26 -0
- package/dist/postgres/tokens.d.ts.map +1 -0
- package/dist/postgres.d.ts +13 -0
- package/dist/postgres.d.ts.map +1 -0
- package/dist/rules/audit-entries.ts +29 -0
- package/dist/rules/clickhouse-helpers.ts +206 -0
- package/dist/rules/postgres-audit-entries.ts +29 -0
- package/dist/rules/postgres-helpers.ts +126 -0
- package/dist/rules/postgres-templates.ts +36 -0
- package/dist/rules/sql-helpers.ts +53 -0
- package/dist/rules/sqlch001.ts +53 -0
- package/dist/rules/sqlch002.ts +115 -0
- package/dist/rules/sqlch003.ts +68 -0
- package/dist/rules/sqlch101.ts +35 -0
- package/dist/rules/sqlch102.ts +23 -0
- package/dist/rules/sqlch103.ts +45 -0
- package/dist/rules/sqlch104.ts +42 -0
- package/dist/rules/sqlch105.ts +35 -0
- package/dist/rules/sqlch106.ts +27 -0
- package/dist/rules/sqlch107.ts +35 -0
- package/dist/rules/sqlch108.ts +27 -0
- package/dist/rules/sqlch109.ts +21 -0
- package/dist/rules/sqlch110.ts +29 -0
- package/dist/rules/sqlch111.ts +40 -0
- package/dist/rules/sqlch112.ts +30 -0
- package/dist/rules/sqlch113.ts +20 -0
- package/dist/rules/sqlch114.ts +26 -0
- package/dist/rules/sqlch115.ts +31 -0
- package/dist/rules/sqlch116.ts +22 -0
- package/dist/rules/sqlch117.ts +25 -0
- package/dist/rules/sqlch118.ts +26 -0
- package/dist/rules/sqlch119.ts +31 -0
- package/dist/rules/sqlch120.ts +21 -0
- package/dist/rules/sqlpg001.ts +88 -0
- package/dist/rules/sqlpg002.ts +68 -0
- package/dist/rules/sqlpg003.ts +59 -0
- package/dist/rules/sqlpg004.ts +73 -0
- package/dist/rules/sqlpg101.ts +24 -0
- package/dist/rules/sqlpg102.ts +30 -0
- package/dist/rules/sqlpg103.ts +23 -0
- package/dist/rules/sqlpg104.ts +23 -0
- package/dist/rules/sqlpg105.ts +22 -0
- package/dist/rules/sqlpg106.ts +22 -0
- package/dist/rules/sqlpg107.ts +22 -0
- package/dist/rules/sqlpg108.ts +27 -0
- package/dist/rules/sqlpg109.ts +37 -0
- package/dist/rules/sqlpg110.ts +33 -0
- package/dist/rules/sqlpg111.ts +23 -0
- package/dist/rules/sqlpg112.ts +25 -0
- package/dist/rules/sqlpg113.ts +28 -0
- package/dist/rules/sqlpg114.ts +37 -0
- package/dist/rules/sqlpg115.ts +38 -0
- package/dist/rules/sqlpg116.ts +25 -0
- package/dist/rules/sqlpg117.ts +24 -0
- package/dist/rules/sqlpg118.ts +22 -0
- package/dist/rules/templates.ts +35 -0
- package/dist/serializer.d.ts +37 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/skill-defs.d.ts +3 -0
- package/dist/skill-defs.d.ts.map +1 -0
- package/dist/spec/catalog.d.ts +125 -0
- package/dist/spec/catalog.d.ts.map +1 -0
- package/dist/spec/fetch.d.ts +43 -0
- package/dist/spec/fetch.d.ts.map +1 -0
- package/dist/spec/pin.d.ts +39 -0
- package/dist/spec/pin.d.ts.map +1 -0
- package/dist/spec/postgres-catalog.d.ts +108 -0
- package/dist/spec/postgres-catalog.d.ts.map +1 -0
- package/dist/spec/postgres-fetch.d.ts +46 -0
- package/dist/spec/postgres-fetch.d.ts.map +1 -0
- package/dist/spec/postgres-pin.d.ts +67 -0
- package/dist/spec/postgres-pin.d.ts.map +1 -0
- package/dist/types/index.d.ts +4386 -0
- package/dist/validate-cli.d.ts +3 -0
- package/dist/validate-cli.d.ts.map +1 -0
- package/dist/validate.d.ts +15 -0
- package/dist/validate.d.ts.map +1 -0
- package/package.json +74 -4
- package/src/clickhouse/apply/apply.ts +288 -0
- package/src/clickhouse/apply/mutations.ts +90 -0
- package/src/clickhouse/apply/statements.ts +393 -0
- package/src/clickhouse/catalog-types.ts +84 -0
- package/src/clickhouse/container.ts +176 -0
- package/src/clickhouse/engine-syntax.test.ts +53 -0
- package/src/clickhouse/engine-syntax.ts +173 -0
- package/src/clickhouse/entities.test.ts +188 -0
- package/src/clickhouse/entities.ts +425 -0
- package/src/clickhouse/http.ts +76 -0
- package/src/clickhouse/import/generator.ts +153 -0
- package/src/clickhouse/import/import.test.ts +157 -0
- package/src/clickhouse/import/ir.ts +171 -0
- package/src/clickhouse/import/live-export.ts +53 -0
- package/src/clickhouse/import/parser.ts +27 -0
- package/src/clickhouse/import/roundtrip.test.ts +90 -0
- package/src/clickhouse/live/bind.ts +126 -0
- package/src/clickhouse/live/catalog.ts +96 -0
- package/src/clickhouse/live/describe-resources.ts +98 -0
- package/src/clickhouse/live/live.test.ts +143 -0
- package/src/clickhouse/live/roundtrip.e2e.test.ts +93 -0
- package/src/clickhouse/overlays/codecs.ts +68 -0
- package/src/clickhouse/overlays/engines.ts +108 -0
- package/src/clickhouse/overlays/kinds.ts +38 -0
- package/src/clickhouse/overlays/projections.ts +36 -0
- package/src/clickhouse/overlays/skip-indexes.ts +44 -0
- package/src/clickhouse/overlays/ttl.ts +55 -0
- package/src/clickhouse/overlays/types.ts +58 -0
- package/src/clickhouse/ownership.test.ts +20 -0
- package/src/clickhouse/ownership.ts +103 -0
- package/src/clickhouse/parser.test.ts +166 -0
- package/src/clickhouse/parser.ts +459 -0
- package/src/clickhouse/plan/commands.ts +101 -0
- package/src/clickhouse/plan/deep.ts +124 -0
- package/src/clickhouse/plan/diff.ts +203 -0
- package/src/clickhouse/plan/disruption.ts +61 -0
- package/src/clickhouse/plan/normalize.ts +352 -0
- package/src/clickhouse/plan/plan-wiring.test.ts +77 -0
- package/src/clickhouse/plan/plan.e2e.test.ts +77 -0
- package/src/clickhouse/plan/plan.test.ts +201 -0
- package/src/clickhouse/plan/rebuild-handoff.ts +59 -0
- package/src/clickhouse/plan/report.ts +19 -0
- package/src/clickhouse/plan/rules.ts +241 -0
- package/src/clickhouse/plan/schema.ts +56 -0
- package/src/clickhouse/plan/server-format.ts +39 -0
- package/src/clickhouse/rebuild/backfill.ts +186 -0
- package/src/clickhouse/rebuild/observe.ts +380 -0
- package/src/clickhouse/rebuild/op.ts +206 -0
- package/src/clickhouse/rebuild/partitions.ts +62 -0
- package/src/clickhouse/rebuild/rebuild-replicated.e2e.test.ts +513 -0
- package/src/clickhouse/rebuild/rebuild.e2e.test.ts +351 -0
- package/src/clickhouse/rebuild/rebuild.test.ts +190 -0
- package/src/clickhouse/rebuild/receipts.ts +143 -0
- package/src/clickhouse/rebuild/replicas.test.ts +70 -0
- package/src/clickhouse/rebuild/replicas.ts +148 -0
- package/src/clickhouse/rebuild/steps.ts +382 -0
- package/src/clickhouse/rebuild/verify.ts +124 -0
- package/src/clickhouse/testdata/NOTICE +5 -0
- package/src/clickhouse/testdata/clickhouse-tests-corpus.json +302 -0
- package/src/clickhouse/testing/fake-server.ts +65 -0
- package/src/clickhouse/testing/roundtrip-schema.ts +25 -0
- package/src/clickhouse/testing/writable-server.ts +141 -0
- package/src/clickhouse/tokens.ts +28 -0
- package/src/clickhouse.ts +63 -0
- package/src/codegen/classifier-page.test.ts +16 -0
- package/src/codegen/classifier-page.ts +76 -0
- package/src/codegen/clickhouse-module.test.ts +63 -0
- package/src/codegen/clickhouse-module.ts +269 -0
- package/src/codegen/docs-cli.ts +4 -0
- package/src/codegen/docs.ts +225 -0
- package/src/codegen/generate-cli.ts +13 -0
- package/src/codegen/generate.ts +126 -0
- package/src/codegen/package.ts +36 -0
- package/src/codegen/postgres-classifier-page.ts +81 -0
- package/src/codegen/postgres-module.test.ts +77 -0
- package/src/codegen/postgres-module.ts +434 -0
- package/src/codegen/registry.ts +36 -0
- package/src/composites/audit-log-table.ts +54 -0
- package/src/composites/catalog.test.ts +61 -0
- package/src/composites/catalog.ts +529 -0
- package/src/composites/cdc-mirror.ts +54 -0
- package/src/composites/clickhouse.ts +7 -0
- package/src/composites/composites.test.ts +758 -0
- package/src/composites/events-table.ts +49 -0
- package/src/composites/index.ts +9 -0
- package/src/composites/join-table.ts +57 -0
- package/src/composites/postgres.ts +7 -0
- package/src/composites/refreshed-view.ts +46 -0
- package/src/composites/replacing-table.ts +49 -0
- package/src/composites/rollup-view.ts +55 -0
- package/src/composites/sharded-table.ts +49 -0
- package/src/composites/soft-delete-table.ts +61 -0
- package/src/composites/tenant-table.ts +50 -0
- package/src/config.ts +157 -0
- package/src/core/apply.ts +153 -0
- package/src/core/classifier.ts +186 -0
- package/src/core/container.ts +93 -0
- package/src/core/core.test.ts +254 -0
- package/src/core/cursor.ts +189 -0
- package/src/core/diff.ts +72 -0
- package/src/core/entity.ts +85 -0
- package/src/core/find-templates.ts +158 -0
- package/src/core/handoff.ts +44 -0
- package/src/core/index.ts +61 -0
- package/src/core/interpolation.ts +225 -0
- package/src/core/normalize.ts +39 -0
- package/src/core/ownership.test.ts +36 -0
- package/src/core/ownership.ts +133 -0
- package/src/core/receipts.ts +29 -0
- package/src/core/references.ts +74 -0
- package/src/core/template.ts +83 -0
- package/src/core/testing/http-stub.ts +33 -0
- package/src/core/tokens.ts +252 -0
- package/src/coverage.ts +64 -0
- package/src/detect.ts +32 -0
- package/src/dialects.ts +21 -0
- package/src/generated/clickhouse-types.ts +4386 -0
- package/src/generated/clickhouse.ts +2476 -0
- package/src/generated/index.d.ts +4386 -0
- package/src/generated/lexicon-sql.json +67 -0
- package/src/generated/postgres-types.ts +1190 -0
- package/src/generated/postgres.ts +1039 -0
- package/src/import-generator.ts +18 -0
- package/src/index.ts +21 -0
- package/src/init-templates.test.ts +108 -0
- package/src/init-templates.ts +327 -0
- package/src/lint/audit-catalog.ts +73 -0
- package/src/lint/audit-lineage.ts +47 -0
- package/src/lint/post-synth/audit-entries.ts +29 -0
- package/src/lint/post-synth/clickhouse-checks.test.ts +278 -0
- package/src/lint/post-synth/clickhouse-helpers.ts +206 -0
- package/src/lint/post-synth/index.ts +81 -0
- package/src/lint/post-synth/post-synth.test.ts +33 -0
- package/src/lint/post-synth/postgres-audit-entries.ts +29 -0
- package/src/lint/post-synth/postgres-checks.test.ts +257 -0
- package/src/lint/post-synth/postgres-helpers.ts +126 -0
- package/src/lint/post-synth/sql-helpers.ts +53 -0
- package/src/lint/post-synth/sqlch101.ts +35 -0
- package/src/lint/post-synth/sqlch102.ts +23 -0
- package/src/lint/post-synth/sqlch103.ts +45 -0
- package/src/lint/post-synth/sqlch104.ts +42 -0
- package/src/lint/post-synth/sqlch105.ts +35 -0
- package/src/lint/post-synth/sqlch106.ts +27 -0
- package/src/lint/post-synth/sqlch107.ts +35 -0
- package/src/lint/post-synth/sqlch108.ts +27 -0
- package/src/lint/post-synth/sqlch109.ts +21 -0
- package/src/lint/post-synth/sqlch110.ts +29 -0
- package/src/lint/post-synth/sqlch111.ts +40 -0
- package/src/lint/post-synth/sqlch112.ts +30 -0
- package/src/lint/post-synth/sqlch113.ts +20 -0
- package/src/lint/post-synth/sqlch114.ts +26 -0
- package/src/lint/post-synth/sqlch115.ts +31 -0
- package/src/lint/post-synth/sqlch116.ts +22 -0
- package/src/lint/post-synth/sqlch117.ts +25 -0
- package/src/lint/post-synth/sqlch118.ts +26 -0
- package/src/lint/post-synth/sqlch119.ts +31 -0
- package/src/lint/post-synth/sqlch120.ts +21 -0
- package/src/lint/post-synth/sqlpg101.ts +24 -0
- package/src/lint/post-synth/sqlpg102.ts +30 -0
- package/src/lint/post-synth/sqlpg103.ts +23 -0
- package/src/lint/post-synth/sqlpg104.ts +23 -0
- package/src/lint/post-synth/sqlpg105.ts +22 -0
- package/src/lint/post-synth/sqlpg106.ts +22 -0
- package/src/lint/post-synth/sqlpg107.ts +22 -0
- package/src/lint/post-synth/sqlpg108.ts +27 -0
- package/src/lint/post-synth/sqlpg109.ts +37 -0
- package/src/lint/post-synth/sqlpg110.ts +33 -0
- package/src/lint/post-synth/sqlpg111.ts +23 -0
- package/src/lint/post-synth/sqlpg112.ts +25 -0
- package/src/lint/post-synth/sqlpg113.ts +28 -0
- package/src/lint/post-synth/sqlpg114.ts +37 -0
- package/src/lint/post-synth/sqlpg115.ts +38 -0
- package/src/lint/post-synth/sqlpg116.ts +25 -0
- package/src/lint/post-synth/sqlpg117.ts +24 -0
- package/src/lint/post-synth/sqlpg118.ts +22 -0
- package/src/lint/rules/index.ts +13 -0
- package/src/lint/rules/postgres-templates.ts +36 -0
- package/src/lint/rules/rules.test.ts +228 -0
- package/src/lint/rules/sqlch001.ts +53 -0
- package/src/lint/rules/sqlch002.ts +115 -0
- package/src/lint/rules/sqlch003.ts +68 -0
- package/src/lint/rules/sqlpg001.ts +88 -0
- package/src/lint/rules/sqlpg002.ts +68 -0
- package/src/lint/rules/sqlpg003.ts +59 -0
- package/src/lint/rules/sqlpg004.ts +73 -0
- package/src/lint/rules/templates.ts +35 -0
- package/src/live-dialect.ts +37 -0
- package/src/lsp/catalog.ts +60 -0
- package/src/lsp/completions.test.ts +111 -0
- package/src/lsp/completions.ts +128 -0
- package/src/lsp/diagnostics.test.ts +26 -0
- package/src/lsp/hover.test.ts +90 -0
- package/src/lsp/hover.ts +113 -0
- package/src/lsp/postgres-catalog.ts +234 -0
- package/src/lsp/postgres-template.ts +161 -0
- package/src/lsp/postgres.test.ts +150 -0
- package/src/lsp/postgres.ts +270 -0
- package/src/lsp/refs.ts +53 -0
- package/src/lsp/registry.ts +19 -0
- package/src/lsp/template.ts +166 -0
- package/src/mcp/index.ts +304 -0
- package/src/mcp/mcp.test.ts +184 -0
- package/src/mcp/postgres.ts +125 -0
- package/src/op/activities/clickhouse-apply.e2e.test.ts +150 -0
- package/src/op/activities/clickhouse-apply.test.ts +265 -0
- package/src/op/activities/clickhouse-apply.ts +113 -0
- package/src/op/activities/clickhouse-emulator.test.ts +23 -0
- package/src/op/activities/clickhouse-emulator.ts +37 -0
- package/src/op/activities/clickhouse-rebuild.ts +136 -0
- package/src/op/activities/index.ts +50 -0
- package/src/op/activities/postgres-apply.e2e.test.ts +184 -0
- package/src/op/activities/postgres-apply.test.ts +304 -0
- package/src/op/activities/postgres-apply.ts +170 -0
- package/src/op/activities/postgres-emulator.test.ts +26 -0
- package/src/op/activities/postgres-emulator.ts +44 -0
- package/src/op/activities/postgres-migration.ts +182 -0
- package/src/op/activity-contracts.ts +210 -0
- package/src/package-cli.ts +17 -0
- package/src/plugin.test.ts +74 -0
- package/src/plugin.ts +242 -0
- package/src/postgres/apply/apply.ts +582 -0
- package/src/postgres/apply/statements.test.ts +155 -0
- package/src/postgres/apply/statements.ts +603 -0
- package/src/postgres/catalog-types.ts +59 -0
- package/src/postgres/container.ts +72 -0
- package/src/postgres/entities.test.ts +170 -0
- package/src/postgres/entities.ts +1016 -0
- package/src/postgres/entity-types.ts +18 -0
- package/src/postgres/import/generator.ts +176 -0
- package/src/postgres/import/import.test.ts +71 -0
- package/src/postgres/import/ir.ts +67 -0
- package/src/postgres/import/live-export.ts +53 -0
- package/src/postgres/import/live-warnings.test.ts +45 -0
- package/src/postgres/keywords.ts +40 -0
- package/src/postgres/live/bind.ts +146 -0
- package/src/postgres/live/catalog.ts +581 -0
- package/src/postgres/live/client.ts +84 -0
- package/src/postgres/live/describe-resources.ts +111 -0
- package/src/postgres/live/live.test.ts +198 -0
- package/src/postgres/live/roundtrip.e2e.test.ts +111 -0
- package/src/postgres/migrate/backfill.ts +233 -0
- package/src/postgres/migrate/batches.e2e.test.ts +163 -0
- package/src/postgres/migrate/batches.test.ts +36 -0
- package/src/postgres/migrate/batches.ts +159 -0
- package/src/postgres/migrate/carry.e2e.test.ts +335 -0
- package/src/postgres/migrate/carry.test.ts +103 -0
- package/src/postgres/migrate/carry.ts +653 -0
- package/src/postgres/migrate/handoff.ts +73 -0
- package/src/postgres/migrate/kinds.e2e.test.ts +204 -0
- package/src/postgres/migrate/migrate.e2e.test.ts +362 -0
- package/src/postgres/migrate/migrate.test.ts +322 -0
- package/src/postgres/migrate/names.ts +93 -0
- package/src/postgres/migrate/observe.ts +521 -0
- package/src/postgres/migrate/op.ts +242 -0
- package/src/postgres/migrate/receipts.ts +135 -0
- package/src/postgres/migrate/replication.ts +151 -0
- package/src/postgres/migrate/steps.ts +657 -0
- package/src/postgres/overlays/columns.ts +34 -0
- package/src/postgres/overlays/constraints.ts +56 -0
- package/src/postgres/overlays/indexes.ts +27 -0
- package/src/postgres/overlays/kinds.ts +53 -0
- package/src/postgres/overlays/partitioning.ts +26 -0
- package/src/postgres/overlays/relations.ts +29 -0
- package/src/postgres/overlays/storage.ts +75 -0
- package/src/postgres/overlays/type-ddl.ts +38 -0
- package/src/postgres/overlays/types.ts +56 -0
- package/src/postgres/parser.test.ts +214 -0
- package/src/postgres/parser.ts +1062 -0
- package/src/postgres/plan/commands.ts +124 -0
- package/src/postgres/plan/deep.ts +177 -0
- package/src/postgres/plan/diff.ts +323 -0
- package/src/postgres/plan/disruption.ts +52 -0
- package/src/postgres/plan/normalize.test.ts +148 -0
- package/src/postgres/plan/normalize.ts +542 -0
- package/src/postgres/plan/plan.e2e.test.ts +117 -0
- package/src/postgres/plan/plan.test.ts +244 -0
- package/src/postgres/plan/report.ts +24 -0
- package/src/postgres/plan/rules.ts +276 -0
- package/src/postgres/plan/schema.ts +114 -0
- package/src/postgres/plan/server-normalize.ts +123 -0
- package/src/postgres/providers/aurora.ts +45 -0
- package/src/postgres/providers/azure.ts +54 -0
- package/src/postgres/providers/cloud-sql.ts +42 -0
- package/src/postgres/providers/index.ts +90 -0
- package/src/postgres/providers/neon.ts +45 -0
- package/src/postgres/providers/providers.test.ts +136 -0
- package/src/postgres/providers/rds.ts +48 -0
- package/src/postgres/providers/supabase.ts +46 -0
- package/src/postgres/providers/types.ts +70 -0
- package/src/postgres/testdata/NOTICE +31 -0
- package/src/postgres/testdata/postgres-regress-corpus.json +460 -0
- package/src/postgres/testing/fake-client.ts +42 -0
- package/src/postgres/testing/migration.ts +52 -0
- package/src/postgres/testing/roundtrip-schema.ts +46 -0
- package/src/postgres/testing/server.ts +58 -0
- package/src/postgres/testing/writable-server.ts +188 -0
- package/src/postgres/tokens.ts +46 -0
- package/src/postgres.ts +75 -0
- package/src/serializer.test.ts +128 -0
- package/src/serializer.ts +148 -0
- package/src/skill-defs.test.ts +81 -0
- package/src/skill-defs.ts +102 -0
- package/src/skills/chant-sql-plan.md +123 -0
- package/src/skills/chant-sql-postgres-migration.md +126 -0
- package/src/skills/chant-sql-postgres-plan.md +194 -0
- package/src/skills/chant-sql-postgres.md +165 -0
- package/src/skills/chant-sql-rebuild.md +68 -0
- package/src/skills/chant-sql.md +123 -0
- package/src/spec/catalog.e2e.test.ts +29 -0
- package/src/spec/catalog.test.ts +56 -0
- package/src/spec/catalog.ts +311 -0
- package/src/spec/clickhouse-catalog.snapshot.json +5246 -0
- package/src/spec/fetch.test.ts +77 -0
- package/src/spec/fetch.ts +112 -0
- package/src/spec/pin.ts +47 -0
- package/src/spec/postgres-catalog-14.snapshot.json +3494 -0
- package/src/spec/postgres-catalog-15.snapshot.json +3529 -0
- package/src/spec/postgres-catalog-16.snapshot.json +3597 -0
- package/src/spec/postgres-catalog-17.snapshot.json +3656 -0
- package/src/spec/postgres-catalog-18.snapshot.json +3747 -0
- package/src/spec/postgres-catalog.test.ts +43 -0
- package/src/spec/postgres-catalog.ts +301 -0
- package/src/spec/postgres-fetch.test.ts +75 -0
- package/src/spec/postgres-fetch.ts +112 -0
- package/src/spec/postgres-pin.test.ts +64 -0
- package/src/spec/postgres-pin.ts +101 -0
- package/src/typecheck.test.ts +104 -0
- package/src/validate-cli.ts +6 -0
- package/src/validate.ts +149 -0
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `sql` namespace in `chant.config.ts`.
|
|
3
|
+
*
|
|
4
|
+
* ```ts
|
|
5
|
+
* import type { ChantConfig } from "@intentius/chant/config";
|
|
6
|
+
* import "@intentius/chant-lexicon-sql"; // brings the `sql` key into ChantConfig
|
|
7
|
+
*
|
|
8
|
+
* export default {
|
|
9
|
+
* lexicons: ["sql"],
|
|
10
|
+
* sql: {
|
|
11
|
+
* dialect: "clickhouse",
|
|
12
|
+
* profiles: {
|
|
13
|
+
* staging: { url: "http://clickhouse.staging:8123", user: { env: "CH_USER" }, password: { env: "CH_PASSWORD" } },
|
|
14
|
+
* prod: { url: "https://clickhouse.example.com:8443", user: { env: "CH_USER" }, password: { env: "CH_PROD_PASSWORD" }, databases: ["analytics"] },
|
|
15
|
+
* },
|
|
16
|
+
* },
|
|
17
|
+
* } satisfies ChantConfig;
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* A profile is keyed by chant environment, as `grafana.profiles.<env>` is:
|
|
21
|
+
* the server `chant import --from <env>`, `chant lifecycle diff <env> --live`
|
|
22
|
+
* and `plan` read. Credentials are named by their environment variable, never
|
|
23
|
+
* written in the config. An environment with no profile falls back to
|
|
24
|
+
* `CLICKHOUSE_URL`, `CLICKHOUSE_USER` and `CLICKHOUSE_PASSWORD`, or for
|
|
25
|
+
* Postgres `POSTGRES_URL`, `POSTGRES_USER` and `POSTGRES_PASSWORD`. A profile
|
|
26
|
+
* whose `url` is `postgres://` or `postgresql://` is a Postgres server.
|
|
27
|
+
*
|
|
28
|
+
* `dialect` names the database a project's schema is for. Declarations carry
|
|
29
|
+
* their dialect in their own type (a ClickHouse table is `ClickHouse::Table`),
|
|
30
|
+
* so the setting is for the things a declaration cannot answer: which dialect
|
|
31
|
+
* a live environment is read as on import, and which dialect's checks run on
|
|
32
|
+
* output that names none. It defaults to `clickhouse`, the first dialect.
|
|
33
|
+
* `postgres` is the second (#3289). A list (`dialect: ["clickhouse",
|
|
34
|
+
* "postgres"]`) is accepted for a workspace with members of more than one
|
|
35
|
+
* dialect (#3047 question 1); one build still holds one dialect.
|
|
36
|
+
*
|
|
37
|
+
* `provider` (#3282) names the managed Postgres service, on the namespace or
|
|
38
|
+
* on one profile: `sql: { dialect: "postgres", provider: "rds" }`, or
|
|
39
|
+
* `profiles: { prod: { url, provider: "aurora" } }`. A provider's data lives
|
|
40
|
+
* in `@intentius/chant-lexicon-sql/postgres` (`providerData`).
|
|
41
|
+
*/
|
|
42
|
+
import { z } from "zod";
|
|
43
|
+
import type { ChantConfig } from "@intentius/chant/config";
|
|
44
|
+
export declare const sqlProfileSchema: z.ZodObject<{
|
|
45
|
+
/**
|
|
46
|
+
* Where the server is. ClickHouse: the base URL of its HTTP interface
|
|
47
|
+
* (`http://clickhouse:8123`). Postgres: a connection URL
|
|
48
|
+
* (`postgres://db.internal:5432/shop`), with no password in it; the scheme
|
|
49
|
+
* is what makes a profile a Postgres one.
|
|
50
|
+
*/
|
|
51
|
+
url: z.ZodString;
|
|
52
|
+
/** The user, named by its environment variable. `default` when omitted. */
|
|
53
|
+
user: z.ZodOptional<z.ZodObject<{
|
|
54
|
+
env: z.ZodString;
|
|
55
|
+
}, z.core.$strict>>;
|
|
56
|
+
/** The password, named by its environment variable. */
|
|
57
|
+
password: z.ZodOptional<z.ZodObject<{
|
|
58
|
+
env: z.ZodString;
|
|
59
|
+
}, z.core.$strict>>;
|
|
60
|
+
/**
|
|
61
|
+
* The databases this environment's schema lives in. Import reads these and
|
|
62
|
+
* nothing else; when omitted, every database except the server's own
|
|
63
|
+
* (`system`, `information_schema`, `INFORMATION_SCHEMA`).
|
|
64
|
+
*/
|
|
65
|
+
databases: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
66
|
+
/** The database an unqualified declaration is created in. `default` when omitted. */
|
|
67
|
+
defaultDatabase: z.ZodOptional<z.ZodString>;
|
|
68
|
+
/**
|
|
69
|
+
* Postgres: the schemas this environment's schema lives in. Import and
|
|
70
|
+
* observation read these and nothing else; when omitted, every schema except
|
|
71
|
+
* the server's own (`pg_catalog`, `information_schema`, `pg_toast`, the temp
|
|
72
|
+
* schemas).
|
|
73
|
+
*/
|
|
74
|
+
schemas: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
75
|
+
/** Postgres: the schema an unqualified declaration is created in. `public` when omitted. */
|
|
76
|
+
defaultSchema: z.ZodOptional<z.ZodString>;
|
|
77
|
+
/**
|
|
78
|
+
* The managed service this environment's Postgres runs on, when it differs
|
|
79
|
+
* from `sql.provider`. Import reads the provider's own roles, schemas and
|
|
80
|
+
* extensions as foreign.
|
|
81
|
+
*/
|
|
82
|
+
provider: z.ZodOptional<z.ZodEnum<{
|
|
83
|
+
rds: "rds";
|
|
84
|
+
aurora: "aurora";
|
|
85
|
+
"cloud-sql": "cloud-sql";
|
|
86
|
+
azure: "azure";
|
|
87
|
+
neon: "neon";
|
|
88
|
+
supabase: "supabase";
|
|
89
|
+
}>>;
|
|
90
|
+
/**
|
|
91
|
+
* Postgres apply: how long one statement waits for its lock before it
|
|
92
|
+
* fails (`lock_timeout`), in milliseconds, so a change blocked behind a
|
|
93
|
+
* long query fails fast instead of queueing every query behind it. 5000
|
|
94
|
+
* when omitted.
|
|
95
|
+
*/
|
|
96
|
+
lockTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
97
|
+
/**
|
|
98
|
+
* Postgres apply: the `statement_timeout` for a statement that changes only
|
|
99
|
+
* the catalog, in milliseconds. 60000 when omitted.
|
|
100
|
+
*/
|
|
101
|
+
statementTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
102
|
+
/**
|
|
103
|
+
* Postgres apply: the `statement_timeout` for a statement that reads or
|
|
104
|
+
* rewrites every row (a table rewrite, a constraint validation, a
|
|
105
|
+
* `CONCURRENTLY` index build), in milliseconds. 0, no limit, when omitted.
|
|
106
|
+
*/
|
|
107
|
+
scanTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
108
|
+
}, z.core.$strict>;
|
|
109
|
+
export declare const sqlConfigSchema: z.ZodObject<{
|
|
110
|
+
/** The dialect, or the dialects, the project's schema is for. */
|
|
111
|
+
dialect: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
112
|
+
clickhouse: "clickhouse";
|
|
113
|
+
postgres: "postgres";
|
|
114
|
+
}>, z.ZodArray<z.ZodEnum<{
|
|
115
|
+
clickhouse: "clickhouse";
|
|
116
|
+
postgres: "postgres";
|
|
117
|
+
}>>]>>;
|
|
118
|
+
/**
|
|
119
|
+
* The managed Postgres service the project deploys to (`rds`, `aurora`,
|
|
120
|
+
* `cloud-sql`, `azure`, `neon`, `supabase`). SQLPG004 reads it to refuse an
|
|
121
|
+
* extension the provider does not allow. Omit it for a self-hosted server.
|
|
122
|
+
*/
|
|
123
|
+
provider: z.ZodOptional<z.ZodEnum<{
|
|
124
|
+
rds: "rds";
|
|
125
|
+
aurora: "aurora";
|
|
126
|
+
"cloud-sql": "cloud-sql";
|
|
127
|
+
azure: "azure";
|
|
128
|
+
neon: "neon";
|
|
129
|
+
supabase: "supabase";
|
|
130
|
+
}>>;
|
|
131
|
+
/**
|
|
132
|
+
* The Postgres major the project targets. The editor completes and hovers
|
|
133
|
+
* only what that major has (a function added in 18 is not offered at 16);
|
|
134
|
+
* without it, the newest supported major is used.
|
|
135
|
+
*/
|
|
136
|
+
postgresMajor: z.ZodOptional<z.ZodNumber>;
|
|
137
|
+
/** One server per chant environment. */
|
|
138
|
+
profiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
139
|
+
/**
|
|
140
|
+
* Where the server is. ClickHouse: the base URL of its HTTP interface
|
|
141
|
+
* (`http://clickhouse:8123`). Postgres: a connection URL
|
|
142
|
+
* (`postgres://db.internal:5432/shop`), with no password in it; the scheme
|
|
143
|
+
* is what makes a profile a Postgres one.
|
|
144
|
+
*/
|
|
145
|
+
url: z.ZodString;
|
|
146
|
+
/** The user, named by its environment variable. `default` when omitted. */
|
|
147
|
+
user: z.ZodOptional<z.ZodObject<{
|
|
148
|
+
env: z.ZodString;
|
|
149
|
+
}, z.core.$strict>>;
|
|
150
|
+
/** The password, named by its environment variable. */
|
|
151
|
+
password: z.ZodOptional<z.ZodObject<{
|
|
152
|
+
env: z.ZodString;
|
|
153
|
+
}, z.core.$strict>>;
|
|
154
|
+
/**
|
|
155
|
+
* The databases this environment's schema lives in. Import reads these and
|
|
156
|
+
* nothing else; when omitted, every database except the server's own
|
|
157
|
+
* (`system`, `information_schema`, `INFORMATION_SCHEMA`).
|
|
158
|
+
*/
|
|
159
|
+
databases: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
160
|
+
/** The database an unqualified declaration is created in. `default` when omitted. */
|
|
161
|
+
defaultDatabase: z.ZodOptional<z.ZodString>;
|
|
162
|
+
/**
|
|
163
|
+
* Postgres: the schemas this environment's schema lives in. Import and
|
|
164
|
+
* observation read these and nothing else; when omitted, every schema except
|
|
165
|
+
* the server's own (`pg_catalog`, `information_schema`, `pg_toast`, the temp
|
|
166
|
+
* schemas).
|
|
167
|
+
*/
|
|
168
|
+
schemas: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
169
|
+
/** Postgres: the schema an unqualified declaration is created in. `public` when omitted. */
|
|
170
|
+
defaultSchema: z.ZodOptional<z.ZodString>;
|
|
171
|
+
/**
|
|
172
|
+
* The managed service this environment's Postgres runs on, when it differs
|
|
173
|
+
* from `sql.provider`. Import reads the provider's own roles, schemas and
|
|
174
|
+
* extensions as foreign.
|
|
175
|
+
*/
|
|
176
|
+
provider: z.ZodOptional<z.ZodEnum<{
|
|
177
|
+
rds: "rds";
|
|
178
|
+
aurora: "aurora";
|
|
179
|
+
"cloud-sql": "cloud-sql";
|
|
180
|
+
azure: "azure";
|
|
181
|
+
neon: "neon";
|
|
182
|
+
supabase: "supabase";
|
|
183
|
+
}>>;
|
|
184
|
+
/**
|
|
185
|
+
* Postgres apply: how long one statement waits for its lock before it
|
|
186
|
+
* fails (`lock_timeout`), in milliseconds, so a change blocked behind a
|
|
187
|
+
* long query fails fast instead of queueing every query behind it. 5000
|
|
188
|
+
* when omitted.
|
|
189
|
+
*/
|
|
190
|
+
lockTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
191
|
+
/**
|
|
192
|
+
* Postgres apply: the `statement_timeout` for a statement that changes only
|
|
193
|
+
* the catalog, in milliseconds. 60000 when omitted.
|
|
194
|
+
*/
|
|
195
|
+
statementTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
196
|
+
/**
|
|
197
|
+
* Postgres apply: the `statement_timeout` for a statement that reads or
|
|
198
|
+
* rewrites every row (a table rewrite, a constraint validation, a
|
|
199
|
+
* `CONCURRENTLY` index build), in milliseconds. 0, no limit, when omitted.
|
|
200
|
+
*/
|
|
201
|
+
scanTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
202
|
+
}, z.core.$strict>>>;
|
|
203
|
+
}, z.core.$strict>;
|
|
204
|
+
export type SqlProfile = z.infer<typeof sqlProfileSchema>;
|
|
205
|
+
export type SqlConfig = z.infer<typeof sqlConfigSchema>;
|
|
206
|
+
declare module "@intentius/chant/config" {
|
|
207
|
+
interface ChantConfig {
|
|
208
|
+
sql?: SqlConfig;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/** Compile-time proof that the augmentation above reaches `ChantConfig`. */
|
|
212
|
+
export type SqlConfigNamespace = NonNullable<ChantConfig["sql"]>;
|
|
213
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAY3D,eAAO,MAAM,gBAAgB;IAC3B;;;;;OAKG;;IAEH,2EAA2E;;;;IAE3E,uDAAuD;;;;IAEvD;;;;OAIG;;IAEH,qFAAqF;;IAErF;;;;;OAKG;;IAEH,4FAA4F;;IAE5F;;;;OAIG;;;;;;;;;IAEH;;;;;OAKG;;IAEH;;;OAGG;;IAEH;;;;OAIG;;kBAEH,CAAC;AAcH,eAAO,MAAM,eAAe;IAC1B,iEAAiE;;;;;;;;IAEjE;;;;OAIG;;;;;;;;;IAEH;;;;OAIG;;IAMH,wCAAwC;;QArFxC;;;;;WAKG;;QAEH,2EAA2E;;;;QAE3E,uDAAuD;;;;QAEvD;;;;WAIG;;QAEH,qFAAqF;;QAErF;;;;;WAKG;;QAEH,4FAA4F;;QAE5F;;;;WAIG;;;;;;;;;QAEH;;;;;WAKG;;QAEH;;;WAGG;;QAEH;;;;WAIG;;;kBAqCH,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,OAAO,QAAQ,yBAAyB,CAAC;IACvC,UAAU,WAAW;QACnB,GAAG,CAAC,EAAE,SAAS,CAAC;KACjB;CACF;AAED,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The applier's plumbing, the same in every dialect (lexicon-authoring/
|
|
3
|
+
* applying.mdx): reading a build's output, the outcome's tri-state (applied,
|
|
4
|
+
* not attempted, and failed for a statement the server refused), its
|
|
5
|
+
* projection onto core's apply envelope, and the ownership marker an apply
|
|
6
|
+
* stamps and prunes by.
|
|
7
|
+
*
|
|
8
|
+
* What a dialect's applier decides for itself: the statements a change takes,
|
|
9
|
+
* which changes it refuses and why, how it waits for the server, and how a
|
|
10
|
+
* prune drops an object.
|
|
11
|
+
*/
|
|
12
|
+
import type { ChantConfig } from "@intentius/chant/config";
|
|
13
|
+
import type { OwnershipMarker } from "@intentius/chant/ownership";
|
|
14
|
+
import { type AppliedResource, type ApplyRef, type ApplyResult, type NotAttemptedResource, type PrunedResource } from "@intentius/chant/apply";
|
|
15
|
+
/** One object of a build's output, as the serializer wrote it. */
|
|
16
|
+
export interface BuildObject {
|
|
17
|
+
export: string;
|
|
18
|
+
type: string;
|
|
19
|
+
ddl: string;
|
|
20
|
+
/** The export names it references (a column reference by its object's export). */
|
|
21
|
+
dependsOn: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The objects a `chant build` output declares for `dialect`, in creation
|
|
25
|
+
* order, each passed through `map`. Takes the sql lexicon's primary output,
|
|
26
|
+
* or a multi-lexicon output holding it under `sql`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function readBuildObjects<T>(json: string, dialect: string, map: (o: BuildObject, index: number) => T): T[];
|
|
29
|
+
/** An object the server refused a statement for: attempted, and not converged. */
|
|
30
|
+
export interface FailedObject extends ApplyRef {
|
|
31
|
+
error: string;
|
|
32
|
+
/** The statements that did run before the one that failed. */
|
|
33
|
+
statements: string[];
|
|
34
|
+
}
|
|
35
|
+
/** What an apply did, per object. Every declared object is in exactly one of applied, not attempted or failed. */
|
|
36
|
+
export interface SqlApplyOutcome {
|
|
37
|
+
/** The server's address. */
|
|
38
|
+
target: string;
|
|
39
|
+
/** Where the binding came from, e.g. `sql.profiles.<env>`. */
|
|
40
|
+
source: string;
|
|
41
|
+
applied: Array<AppliedResource & {
|
|
42
|
+
statements: string[];
|
|
43
|
+
}>;
|
|
44
|
+
pruned: Array<PrunedResource & {
|
|
45
|
+
statement: string;
|
|
46
|
+
}>;
|
|
47
|
+
notAttempted: NotAttemptedResource[];
|
|
48
|
+
failed: FailedObject[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* An apply in which the server refused a statement. The envelope has no
|
|
52
|
+
* bucket for "attempted and not converged", so the applier finishes the rest
|
|
53
|
+
* and throws this, carrying the outcome.
|
|
54
|
+
*/
|
|
55
|
+
export declare class SqlApplyError<O extends SqlApplyOutcome = SqlApplyOutcome> extends Error {
|
|
56
|
+
readonly outcome: O;
|
|
57
|
+
constructor(
|
|
58
|
+
/** The dialect as a message names it: `ClickHouse`. */
|
|
59
|
+
dialect: string, outcome: O);
|
|
60
|
+
}
|
|
61
|
+
/** An outcome in which nothing was attempted: every object not attempted with one reason. */
|
|
62
|
+
export declare function notAttemptedOutcome(refs: readonly ApplyRef[], reason: NotAttemptedResource["reason"], detail: string): SqlApplyOutcome;
|
|
63
|
+
/**
|
|
64
|
+
* Project an apply outcome onto core's apply envelope. The outcome keeps what
|
|
65
|
+
* the envelope has no room for: the statements each object took and the
|
|
66
|
+
* server they went to.
|
|
67
|
+
*/
|
|
68
|
+
export declare function toApplyResult(outcome: SqlApplyOutcome): ApplyResult;
|
|
69
|
+
/**
|
|
70
|
+
* The marker to stamp and prune by: `stack` and `ownershipEnv` when passed,
|
|
71
|
+
* else the project's `ownership` config. Undefined without a stack. `who`
|
|
72
|
+
* names the caller in the error for an env an apply cannot resolve.
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolveOwnershipMarker(args: {
|
|
75
|
+
stack?: string;
|
|
76
|
+
ownershipEnv?: string;
|
|
77
|
+
}, config: Pick<ChantConfig, "ownership"> | undefined, who: string): OwnershipMarker | undefined;
|
|
78
|
+
/** Changes grouped by the object they change, in order. */
|
|
79
|
+
export declare function changesByObject<C extends {
|
|
80
|
+
object: string;
|
|
81
|
+
}>(changes: readonly C[]): Map<string, C[]>;
|
|
82
|
+
/**
|
|
83
|
+
* The declared objects `dependsOn` names that are not on the server: declared
|
|
84
|
+
* in this build, and not created or found in this apply. An object with any
|
|
85
|
+
* is not attempted, `dependency-failed`, with {@link dependencyFailedDetail}.
|
|
86
|
+
*/
|
|
87
|
+
export declare function missingDependencies(self: string, dependsOn: readonly string[], declared: ReadonlySet<string>, onServer: ReadonlySet<string>): string[];
|
|
88
|
+
export declare const dependencyFailedDetail: (missing: readonly string[]) => string;
|
|
89
|
+
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/core/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAMhC,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAajH;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,kHAAkH;AAClH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,eAAe,GAAG;QAAE,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,CAAE,SAAQ,KAAK;IAIjF,QAAQ,CAAC,OAAO,EAAE,CAAC;;IAFnB,uDAAuD;IACvD,OAAO,EAAE,MAAM,EACN,OAAO,EAAE,CAAC;CAStB;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,EAAE,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAEtI;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAMnE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/C,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,SAAS,EAClD,GAAG,EAAE,MAAM,GACV,eAAe,GAAG,SAAS,CAU7B;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAIrG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAEtJ;AAED,eAAO,MAAM,sBAAsB,GAAI,SAAS,SAAS,MAAM,EAAE,KAAG,MAC0C,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The change classifier's framework, the same in every dialect: the shape of
|
|
3
|
+
* a rule, a classified change, `classifyDisruption()` over a dialect's rules,
|
|
4
|
+
* and the text report.
|
|
5
|
+
*
|
|
6
|
+
* The classes are data, one set per dialect. ClickHouse classes a change by
|
|
7
|
+
* whether `ALTER` can make it (metadata, background rewrite, rebuild); another
|
|
8
|
+
* dialect classes by the lock a change takes and whether it rewrites the
|
|
9
|
+
* table. Each dialect declares its classes with {@link ChangeClasses} and its
|
|
10
|
+
* rules with {@link classifierRule}, every rule citing the database's own
|
|
11
|
+
* documentation for the restriction behind it.
|
|
12
|
+
*/
|
|
13
|
+
import type { DisruptionQuery, DisruptionVerdict, Disruption } from "@intentius/chant/lifecycle/disruption";
|
|
14
|
+
/** One way a declared object can change, the class of change it is on the server, and why. */
|
|
15
|
+
export interface ClassifierRule<C extends string = string> {
|
|
16
|
+
id: string;
|
|
17
|
+
class: C;
|
|
18
|
+
title: string;
|
|
19
|
+
/** The restriction, in a sentence. */
|
|
20
|
+
restriction: string;
|
|
21
|
+
/** The documentation page the restriction is stated on. */
|
|
22
|
+
cite: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const classifierRule: <C extends string>(id: string, cls: C, title: string, restriction: string, cite: string) => ClassifierRule<C>;
|
|
25
|
+
/** A dialect's change classes as data: their order in a report, their labels, and what each costs to apply. */
|
|
26
|
+
export interface ChangeClasses<C extends string> {
|
|
27
|
+
/** The order a report counts the classes in. */
|
|
28
|
+
order: readonly C[];
|
|
29
|
+
/** Each class as a report names it. */
|
|
30
|
+
label: Readonly<Record<C, string>>;
|
|
31
|
+
/** Each class as `classifyDisruption()` reports it. */
|
|
32
|
+
disruption: Readonly<Record<C, Disruption>>;
|
|
33
|
+
}
|
|
34
|
+
/** One classified change to one object. */
|
|
35
|
+
export interface ClassifiedChange<R extends string = string, C extends string = string> {
|
|
36
|
+
/** The object's identity. */
|
|
37
|
+
object: string;
|
|
38
|
+
/** What changed, e.g. `columns.kind.type`, `orderBy`, `name`. */
|
|
39
|
+
field: string;
|
|
40
|
+
before?: string;
|
|
41
|
+
after?: string;
|
|
42
|
+
rule: R;
|
|
43
|
+
class: C;
|
|
44
|
+
/** Data is removed and not recoverable. */
|
|
45
|
+
destructive?: boolean;
|
|
46
|
+
/** What a reader should know besides the rule. */
|
|
47
|
+
note?: string;
|
|
48
|
+
}
|
|
49
|
+
/** A classified change from `before` to `after`, its class read from `rules`. */
|
|
50
|
+
export declare function classifiedChange<R extends string, C extends string>(rules: Readonly<Record<R, ClassifierRule<C>>>, object: string, field: string, rule: R, before?: unknown, after?: unknown, extra?: Partial<ClassifiedChange<R, C>>): ClassifiedChange<R, C>;
|
|
51
|
+
/** The changes between two schemas, and hints for the author. */
|
|
52
|
+
export interface ChangeSet<Ch extends ClassifiedChange = ClassifiedChange> {
|
|
53
|
+
changes: Ch[];
|
|
54
|
+
/** Hints for the author: a drop and an add that look like a rename. */
|
|
55
|
+
hints: string[];
|
|
56
|
+
}
|
|
57
|
+
export interface DisruptionClassifier<R extends string, C extends string> {
|
|
58
|
+
/** The entity type prefix the dialect's objects carry (`ClickHouse::`); other types are left out. */
|
|
59
|
+
typePrefix: string;
|
|
60
|
+
rules: Readonly<Record<R, ClassifierRule<C>>>;
|
|
61
|
+
classes: Pick<ChangeClasses<C>, "disruption">;
|
|
62
|
+
/** The rule a changed path falls under, `ambiguous` when the path alone cannot say, undefined when no rule covers it. */
|
|
63
|
+
ruleFor(path: string): R | "ambiguous" | undefined;
|
|
64
|
+
/** The detail of an `unknown` verdict: why the paths cannot decide, and what does. */
|
|
65
|
+
ambiguousDetail: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* `classifyDisruption()` over a dialect's rules: each update's disruption is
|
|
69
|
+
* the worst class among its changed paths, and `unknown` when any path cannot
|
|
70
|
+
* be classified from the path alone.
|
|
71
|
+
*/
|
|
72
|
+
export declare function classifyDisruptionWith<R extends string, C extends string>(classifier: DisruptionClassifier<R, C>, options: {
|
|
73
|
+
environment: string;
|
|
74
|
+
changes: DisruptionQuery[];
|
|
75
|
+
}): Record<string, DisruptionVerdict>;
|
|
76
|
+
/**
|
|
77
|
+
* A change set as text, for a terminal or a pull request: each object's
|
|
78
|
+
* changes with their class, rule, restriction and citation, then a count per
|
|
79
|
+
* class and the hints. `trailer` is the dialect's closing lines (what a plan
|
|
80
|
+
* refuses and what to run instead); it is left out when nothing changed.
|
|
81
|
+
*/
|
|
82
|
+
export declare function renderChangeSet<R extends string, C extends string>(diff: ChangeSet<ClassifiedChange<R, C>>, opts: {
|
|
83
|
+
title?: string;
|
|
84
|
+
rules: Readonly<Record<R, ClassifierRule<C>>>;
|
|
85
|
+
classes: Pick<ChangeClasses<C>, "order" | "label">;
|
|
86
|
+
trailer?: readonly string[];
|
|
87
|
+
}): string;
|
|
88
|
+
//# sourceMappingURL=classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/core/classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAE5G,8FAA8F;AAC9F,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,EAAE,IAAI,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,MAAM,EAAE,aAAa,MAAM,EAAE,MAAM,MAAM,KAAG,cAAc,CAAC,CAAC,CAMtI,CAAC;AAEH,+GAA+G;AAC/G,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM;IAC7C,gDAAgD;IAChD,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,uCAAuC;IACvC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACnC,uDAAuD;IACvD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;CAC7C;AAED,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IACpF,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,CAAC,CAAC;IACT,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACjE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,OAAO,EAChB,KAAK,CAAC,EAAE,OAAO,EACf,KAAK,GAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAM,GAC1C,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAUxB;AAED,iEAAiE;AACjE,MAAM,WAAW,SAAS,CAAC,EAAE,SAAS,gBAAgB,GAAG,gBAAgB;IACvE,OAAO,EAAE,EAAE,EAAE,CAAC;IACd,uEAAuE;IACvE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAMD,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM;IACtE,qGAAqG;IACrG,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC9C,yHAAyH;IACzH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC;IACnD,sFAAsF;IACtF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACvE,UAAU,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EACtC,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,GAC3D,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAkCnC;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAChE,IAAI,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACvJ,MAAM,CA2BR"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A throwaway database server in a container, for every dialect: started on a
|
|
3
|
+
* random loopback port under a unique name, waited on until it answers, and
|
|
4
|
+
* always removed.
|
|
5
|
+
*
|
|
6
|
+
* Generation uses it on a pin move to read the pinned server's catalog, and
|
|
7
|
+
* the live tests use it so every container chant starts is started and
|
|
8
|
+
* cleaned up one way. What "answers" means (an HTTP ping, a query) and the
|
|
9
|
+
* image's environment are the dialect's.
|
|
10
|
+
*/
|
|
11
|
+
/** True when a Docker daemon answers. Tests that need a server skip when this is false. */
|
|
12
|
+
export declare function dockerAvailable(): Promise<boolean>;
|
|
13
|
+
/** A container name no other run picks: `<prefix>-<pid>-<random>`. */
|
|
14
|
+
export declare function uniqueContainerName(prefix: string): string;
|
|
15
|
+
/** The loopback host port Docker published for `containerPort` on `name`. */
|
|
16
|
+
export declare function publishedPort(name: string, containerPort: number): Promise<string>;
|
|
17
|
+
export interface ScratchContainer {
|
|
18
|
+
/** The container's name, for a log line. */
|
|
19
|
+
name: string;
|
|
20
|
+
/** The loopback host port `containerPort` is published on. */
|
|
21
|
+
port: string;
|
|
22
|
+
/** Remove the container. Safe to call twice. */
|
|
23
|
+
stop(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Run `image` detached, publish `containerPort` on a random loopback port,
|
|
27
|
+
* and wait until `ready(port)` is true, polling every half second. Pulls the
|
|
28
|
+
* image when it is not present, which is the one network step here. On any
|
|
29
|
+
* failure the container is removed before the error is thrown.
|
|
30
|
+
*/
|
|
31
|
+
export declare function startScratchContainer(options: {
|
|
32
|
+
image: string;
|
|
33
|
+
namePrefix: string;
|
|
34
|
+
containerPort: number;
|
|
35
|
+
env?: Readonly<Record<string, string>>;
|
|
36
|
+
ready: (port: string) => Promise<boolean>;
|
|
37
|
+
readyTimeoutMs: number;
|
|
38
|
+
/** What the container did not do in time, for the error: `did not answer /ping`. */
|
|
39
|
+
notReady: string;
|
|
40
|
+
/** Called with the container's name once it is running, before the readiness wait. */
|
|
41
|
+
onStarted?: (name: string) => void;
|
|
42
|
+
/** Remove the container's anonymous volumes with it (an image that declares a `VOLUME`, as `postgres` does). */
|
|
43
|
+
removeVolumes?: boolean;
|
|
44
|
+
}): Promise<ScratchContainer>;
|
|
45
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/core/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,2FAA2F;AAC3F,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,6EAA6E;AAC7E,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKxF;AAED,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,gHAAgH;IAChH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwB5B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dialect-neutral half of a hand-written CREATE parser (chant #3196,
|
|
3
|
+
* #3278): a cursor over a statement's significant tokens, keyword and
|
|
4
|
+
* punctuation tests, spans, and expressions kept as balanced token spans.
|
|
5
|
+
*
|
|
6
|
+
* Statement structure is a dialect's to parse; expressions are not parsed. An
|
|
7
|
+
* expression (a default, a key, a view's SELECT) is a span of tokens: its
|
|
8
|
+
* source text, verbatim, and the interpolations inside it. A dialect parser
|
|
9
|
+
* extends {@link SqlCursor} with its statements, and says where an expression
|
|
10
|
+
* stops ({@link SqlCursor.stopsAt}) and how a token nests
|
|
11
|
+
* ({@link SqlCursor.depthChange}).
|
|
12
|
+
*/
|
|
13
|
+
import { type Token } from "./tokens.js";
|
|
14
|
+
/** A run of tokens [from, to) in the token list, trivia included. */
|
|
15
|
+
export interface Span {
|
|
16
|
+
from: number;
|
|
17
|
+
to: number;
|
|
18
|
+
/** Value indexes of the interpolations inside the span. */
|
|
19
|
+
refs: number[];
|
|
20
|
+
}
|
|
21
|
+
/** Whether `t` is a bare word, any of `words`, case-insensitively. */
|
|
22
|
+
export declare const kw: (t: Token | undefined, ...words: string[]) => boolean;
|
|
23
|
+
/** `name` with its identifier quotes taken off and doubled quotes undone; `quotes` are the dialect's identifier quotes. */
|
|
24
|
+
export declare const unquoteWith: (text: string, quotes: string) => string;
|
|
25
|
+
export declare class SqlCursor {
|
|
26
|
+
protected readonly tokens: Token[];
|
|
27
|
+
/** Indexes of the significant (non-trivia) tokens. */
|
|
28
|
+
protected readonly sig: number[];
|
|
29
|
+
protected p: number;
|
|
30
|
+
constructor(tokens: Token[]);
|
|
31
|
+
protected peek(n?: number): Token | undefined;
|
|
32
|
+
/** Token-list index of the significant token `n` ahead. */
|
|
33
|
+
protected idx(n?: number): number;
|
|
34
|
+
protected next(): Token;
|
|
35
|
+
fail(message: string, t?: Token | undefined): never;
|
|
36
|
+
protected lastToken(): Token | undefined;
|
|
37
|
+
protected accept(...words: string[]): boolean;
|
|
38
|
+
protected expect(...words: string[]): void;
|
|
39
|
+
/** Whether the next significant tokens are the bare words `words`, in order. */
|
|
40
|
+
protected is(...words: string[]): boolean;
|
|
41
|
+
/** Accept a sequence of bare words, all of them or none. */
|
|
42
|
+
protected acceptSeq(...words: string[]): boolean;
|
|
43
|
+
protected isPunct(c: string, n?: number): boolean;
|
|
44
|
+
protected acceptPunct(c: string): boolean;
|
|
45
|
+
protected expectPunct(c: string): void;
|
|
46
|
+
protected atEnd(): boolean;
|
|
47
|
+
protected span(from: number, refs: number[]): Span;
|
|
48
|
+
/**
|
|
49
|
+
* Whether the expression being read stops at the current token, a top-level
|
|
50
|
+
* bare word: by default when it is one of `stop`. A dialect overrides this
|
|
51
|
+
* for its multi-word stops (ClickHouse stops at `ORDER` only before `BY`).
|
|
52
|
+
*/
|
|
53
|
+
protected stopsAt(stop: readonly string[]): boolean;
|
|
54
|
+
/** How `t` changes the nesting depth of an expression: `(` opens and `)` closes. */
|
|
55
|
+
protected depthChange(t: Token): number;
|
|
56
|
+
/**
|
|
57
|
+
* An expression as a token span: everything up to a top-level `,` (unless
|
|
58
|
+
* `stopAtComma` is false), `)` or `;`, or a top-level stop word. Nesting is
|
|
59
|
+
* balanced, not parsed.
|
|
60
|
+
*/
|
|
61
|
+
protected expr(stop?: readonly string[], stopAtComma?: boolean): Span;
|
|
62
|
+
/** `( ... )` balanced: the span between the parentheses. */
|
|
63
|
+
protected parenthesized(): Span;
|
|
64
|
+
/** A comma-separated expression list as one span. */
|
|
65
|
+
protected exprList(stop?: readonly string[]): Span;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/core/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA4B,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEhE,qEAAqE;AACrE,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,sEAAsE;AACtE,eAAO,MAAM,EAAE,GAAI,GAAG,KAAK,GAAG,SAAS,EAAE,GAAG,OAAO,MAAM,EAAE,KAAG,OACiB,CAAC;AAEhF,2HAA2H;AAC3H,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,KAAG,MAK1D,CAAC;AAEF,qBAAa,SAAS;IAKR,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;IAJ9C,sDAAsD;IACtD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,CAAC,SAAK;gBAEe,MAAM,EAAE,KAAK,EAAE;IAI9C,SAAS,CAAC,IAAI,CAAC,CAAC,SAAI,GAAG,KAAK,GAAG,SAAS;IAKxC,2DAA2D;IAC3D,SAAS,CAAC,GAAG,CAAC,CAAC,SAAI,GAAG,MAAM;IAI5B,SAAS,CAAC,IAAI,IAAI,KAAK;IAOvB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAE,KAAK,GAAG,SAAuB,GAAG,KAAK;IAMhE,SAAS,CAAC,SAAS,IAAI,KAAK,GAAG,SAAS;IAKxC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAQ7C,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAI1C,gFAAgF;IAChF,SAAS,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAIzC,4DAA4D;IAC5D,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAMhD,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,OAAO;IAK5C,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAQzC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAItC,SAAS,CAAC,KAAK,IAAI,OAAO;IAI1B,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlD;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO;IAKnD,oFAAoF;IACpF,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM;IAMvC;;;;OAIG;IACH,SAAS,CAAC,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAAO,EAAE,WAAW,UAAO,GAAG,IAAI;IAoBtE,4DAA4D;IAC5D,SAAS,CAAC,aAAa,IAAI,IAAI;IAY/B,qDAAqD;IACrD,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAE,SAAS,MAAM,EAAO,GAAG,IAAI;CAWvD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity and renames between two schemas, the same in every dialect
|
|
3
|
+
* (#3047 question 3).
|
|
4
|
+
*
|
|
5
|
+
* An object is identified by its key: its export name between two revisions
|
|
6
|
+
* of the declarations, its qualified name against a live server, which has no
|
|
7
|
+
* export names. An `after` object whose key is new but whose `previously` hint
|
|
8
|
+
* (`-- previously: <old name>`) names a `before` object with no `after`
|
|
9
|
+
* counterpart is that object, renamed. What changed inside a matched pair,
|
|
10
|
+
* and how each change is classed, is the dialect's.
|
|
11
|
+
*/
|
|
12
|
+
/** One side of a comparison: an object's identity and its canonical definition. */
|
|
13
|
+
export interface Keyed<O> {
|
|
14
|
+
/** The object's identity in the comparison: an export name, or a qualified name against live. */
|
|
15
|
+
key: string;
|
|
16
|
+
canonical: O;
|
|
17
|
+
}
|
|
18
|
+
export type IdentityMatch<O> = {
|
|
19
|
+
kind: "created";
|
|
20
|
+
after: Keyed<O>;
|
|
21
|
+
} | {
|
|
22
|
+
kind: "matched";
|
|
23
|
+
before: Keyed<O>;
|
|
24
|
+
after: Keyed<O>;
|
|
25
|
+
} | {
|
|
26
|
+
kind: "dropped";
|
|
27
|
+
before: Keyed<O>;
|
|
28
|
+
};
|
|
29
|
+
export interface IdentityRules<O> {
|
|
30
|
+
/** The object's qualified name, which a `previously` hint may name. */
|
|
31
|
+
qualified(o: O): string;
|
|
32
|
+
/** The `-- previously: <old name>` hint on the object, if any. */
|
|
33
|
+
previously(o: O): string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* The qualified names a hint may mean, tried in order after the hint as a
|
|
36
|
+
* key: the hint itself, and for a dialect with schemas or databases the hint
|
|
37
|
+
* qualified with the object's own.
|
|
38
|
+
*/
|
|
39
|
+
previousNames(o: O, previously: string): readonly string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Match `after` to `before` by key, then by rename hint. Returns every `after`
|
|
43
|
+
* object in order, created or matched, then every `before` object no `after`
|
|
44
|
+
* object matched, dropped.
|
|
45
|
+
*/
|
|
46
|
+
export declare function matchByIdentity<O>(before: readonly Keyed<O>[], after: readonly Keyed<O>[], rules: IdentityRules<O>): IdentityMatch<O>[];
|
|
47
|
+
/** The names whose values differ between two records, sorted. */
|
|
48
|
+
export declare function changedEntries(before: Readonly<Record<string, string>>, after: Readonly<Record<string, string>>): string[];
|
|
49
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,mFAAmF;AACnF,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,iGAAiG;IACjG,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,CAAC;CACd;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,uEAAuE;IACvE,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IACxB,kEAAkE;IAClE,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CAC5D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAwBvI;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAE1H"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The entity base every dialect's objects share: the Declarable fields core
|
|
3
|
+
* reads, the hidden-property construction that keeps them out of a build's
|
|
4
|
+
* props, and the column references (`${t.columns.x}`) a relation hands out.
|
|
5
|
+
*
|
|
6
|
+
* A dialect subclasses {@link SqlObject} with its own entity types
|
|
7
|
+
* (`ClickHouse::Table`), builds its entities with {@link makeSqlEntity} on its
|
|
8
|
+
* subclass's prototype, and recognizes its own objects by their type prefix.
|
|
9
|
+
*/
|
|
10
|
+
import { DECLARABLE_MARKER, type Declarable } from "@intentius/chant/declarable";
|
|
11
|
+
import { AttrRef } from "@intentius/chant/attrref";
|
|
12
|
+
/** The lexicon every dialect's entities belong to. */
|
|
13
|
+
export declare const SQL_LEXICON = "sql";
|
|
14
|
+
/** The members a schema object has besides its props, in every dialect. */
|
|
15
|
+
export declare abstract class SqlObject implements Declarable {
|
|
16
|
+
readonly [DECLARABLE_MARKER]: true;
|
|
17
|
+
readonly lexicon: "sql";
|
|
18
|
+
readonly entityType: string;
|
|
19
|
+
readonly kind: "resource";
|
|
20
|
+
/** The name the object is referred to by in SQL, qualified as the dialect writes it. */
|
|
21
|
+
readonly sqlName: string;
|
|
22
|
+
/** The parsed definition; each entity kind narrows it. */
|
|
23
|
+
readonly props: object;
|
|
24
|
+
/**
|
|
25
|
+
* Everything the DDL references, enumerable so core's dependency graph and
|
|
26
|
+
* `chant graph` see the edges.
|
|
27
|
+
*/
|
|
28
|
+
readonly dependsOn: readonly unknown[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One entity on `prototype` (a dialect's {@link SqlObject} subclass). Every
|
|
32
|
+
* field but `dependsOn` is hidden, so a build's props are the parsed
|
|
33
|
+
* definition alone. With `columnNames`, the entity gets a frozen `columns`
|
|
34
|
+
* record holding one {@link AttrRef} per column.
|
|
35
|
+
*/
|
|
36
|
+
export declare function makeSqlEntity<T extends SqlObject>(prototype: T, entityType: string, sqlName: string, props: object, columnNames: readonly string[] | undefined, dependsOn: unknown[]): T;
|
|
37
|
+
/** Whether `value` is a sql lexicon entity whose type starts with `typePrefix` (`ClickHouse::`). */
|
|
38
|
+
export declare function isSqlObjectOf(value: unknown, typePrefix: string): value is SqlObject;
|
|
39
|
+
/** A column reference: an AttrRef whose parent `isOwner` accepts. */
|
|
40
|
+
export declare function isColumnRefOf(value: unknown, isOwner: (parent: unknown) => boolean): value is AttrRef;
|
|
41
|
+
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/core/entity.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,sDAAsD;AACtD,eAAO,MAAM,WAAW,QAAQ,CAAC;AAEjC,2EAA2E;AAC3E,8BAAsB,SAAU,YAAW,UAAU;IACnD,SAAiB,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IAC3C,SAAiB,OAAO,EAAE,KAAK,CAAC;IAChC,SAAiB,UAAU,EAAE,MAAM,CAAC;IACpC,SAAiB,IAAI,EAAE,UAAU,CAAC;IAClC,wFAAwF;IACxF,SAAiB,OAAO,EAAE,MAAM,CAAC;IACjC,0DAA0D;IAC1D,SAAiB,KAAK,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,SAAiB,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;CAChD;AAKD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,EAC/C,SAAS,EAAE,CAAC,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAC1C,SAAS,EAAE,OAAO,EAAE,GACnB,CAAC,CAeH;AAED,oGAAoG;AACpG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CASpF;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,KAAK,IAAI,OAAO,CAKrG"}
|