@antelopejs/postgres 0.2.2 → 0.2.4
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 +28 -15
- package/dist/config.d.ts +1 -0
- package/dist/config.js +7 -3
- package/dist/config.js.map +1 -1
- package/dist/connect-failure.d.ts +1 -0
- package/dist/connect-failure.js +39 -0
- package/dist/connect-failure.js.map +1 -0
- package/dist/connection.d.ts +2 -1
- package/dist/connection.js +19 -2
- package/dist/connection.js.map +1 -1
- package/dist/implementations/catalog/index.js +3 -6
- package/dist/implementations/catalog/index.js.map +1 -1
- package/dist/implementations/database/coerce.js +20 -20
- package/dist/implementations/database/coerce.js.map +1 -1
- package/dist/implementations/database/context.d.ts +1 -0
- package/dist/implementations/database/context.js +4 -0
- package/dist/implementations/database/context.js.map +1 -1
- package/dist/implementations/database/convergence.d.ts +22 -0
- package/dist/implementations/database/convergence.js +183 -0
- package/dist/implementations/database/convergence.js.map +1 -0
- package/dist/implementations/database/cursors.js +3 -0
- package/dist/implementations/database/cursors.js.map +1 -1
- package/dist/implementations/database/ddl.d.ts +5 -26
- package/dist/implementations/database/ddl.js +15 -191
- package/dist/implementations/database/ddl.js.map +1 -1
- package/dist/implementations/database/external-column-profile.js +6 -1
- package/dist/implementations/database/external-column-profile.js.map +1 -1
- package/dist/implementations/database/external-discovery.js +5 -5
- package/dist/implementations/database/external-discovery.js.map +1 -1
- package/dist/implementations/database/external-measures.js.map +1 -1
- package/dist/implementations/database/external-payload.d.ts +2 -2
- package/dist/implementations/database/external-payload.js +23 -13
- package/dist/implementations/database/external-payload.js.map +1 -1
- package/dist/implementations/database/external-schema.d.ts +2 -2
- package/dist/implementations/database/external-schema.js +3 -3
- package/dist/implementations/database/external-schema.js.map +1 -1
- package/dist/implementations/database/external-types.js +23 -16
- package/dist/implementations/database/external-types.js.map +1 -1
- package/dist/implementations/database/external-writes.d.ts +7 -1
- package/dist/implementations/database/external-writes.js +22 -21
- package/dist/implementations/database/external-writes.js.map +1 -1
- package/dist/implementations/database/feed-pipeline.js +3 -2
- package/dist/implementations/database/feed-pipeline.js.map +1 -1
- package/dist/implementations/database/feeds.d.ts +1 -1
- package/dist/implementations/database/feeds.js +36 -45
- package/dist/implementations/database/feeds.js.map +1 -1
- package/dist/implementations/database/fields.d.ts +9 -13
- package/dist/implementations/database/fields.js +25 -21
- package/dist/implementations/database/fields.js.map +1 -1
- package/dist/implementations/database/guards.d.ts +5 -0
- package/dist/implementations/database/guards.js +23 -0
- package/dist/implementations/database/guards.js.map +1 -0
- package/dist/implementations/database/introspect.d.ts +1 -1
- package/dist/implementations/database/listener.js +9 -3
- package/dist/implementations/database/listener.js.map +1 -1
- package/dist/implementations/database/migrate.d.ts +2 -2
- package/dist/implementations/database/migrate.js +10 -10
- package/dist/implementations/database/migrate.js.map +1 -1
- package/dist/implementations/database/payload.d.ts +3 -3
- package/dist/implementations/database/payload.js +4 -4
- package/dist/implementations/database/pipeline.d.ts +6 -2
- package/dist/implementations/database/pipeline.js +4 -1
- package/dist/implementations/database/pipeline.js.map +1 -1
- package/dist/implementations/database/query.js +12 -7
- package/dist/implementations/database/query.js.map +1 -1
- package/dist/implementations/database/reaper.js +6 -4
- package/dist/implementations/database/reaper.js.map +1 -1
- package/dist/implementations/database/relation.d.ts +2 -12
- package/dist/implementations/database/relation.js +5 -141
- package/dist/implementations/database/relation.js.map +1 -1
- package/dist/implementations/database/render.d.ts +11 -0
- package/dist/implementations/database/render.js +147 -0
- package/dist/implementations/database/render.js.map +1 -0
- package/dist/implementations/database/result.d.ts +2 -2
- package/dist/implementations/database/result.js +18 -19
- package/dist/implementations/database/result.js.map +1 -1
- package/dist/implementations/database/row-source.d.ts +10 -10
- package/dist/implementations/database/row-source.js +22 -19
- package/dist/implementations/database/row-source.js.map +1 -1
- package/dist/implementations/database/schema.d.ts +2 -2
- package/dist/implementations/database/schema.js +19 -19
- package/dist/implementations/database/schema.js.map +1 -1
- package/dist/implementations/database/selection.js +13 -7
- package/dist/implementations/database/selection.js.map +1 -1
- package/dist/implementations/database/sql.d.ts +7 -3
- package/dist/implementations/database/sql.js.map +1 -1
- package/dist/implementations/database/stage.js +3 -2
- package/dist/implementations/database/stage.js.map +1 -1
- package/dist/implementations/database/stages-aggregate.js +7 -5
- package/dist/implementations/database/stages-aggregate.js.map +1 -1
- package/dist/implementations/database/stages-array.js.map +1 -1
- package/dist/implementations/database/stages-core.js +2 -1
- package/dist/implementations/database/stages-core.js.map +1 -1
- package/dist/implementations/database/stages-date.js +2 -1
- package/dist/implementations/database/stages-date.js.map +1 -1
- package/dist/implementations/database/stages-group.js +11 -6
- package/dist/implementations/database/stages-group.js.map +1 -1
- package/dist/implementations/database/stages-join.js +13 -11
- package/dist/implementations/database/stages-join.js.map +1 -1
- package/dist/implementations/database/stages-numeric.js.map +1 -1
- package/dist/implementations/database/stages-object.js +1 -1
- package/dist/implementations/database/stages-object.js.map +1 -1
- package/dist/implementations/database/stages-projection.js +9 -8
- package/dist/implementations/database/stages-projection.js.map +1 -1
- package/dist/implementations/database/stages-rows.js +10 -8
- package/dist/implementations/database/stages-rows.js.map +1 -1
- package/dist/implementations/database/stages-selection.js +6 -4
- package/dist/implementations/database/stages-selection.js.map +1 -1
- package/dist/implementations/database/stages-string.js +7 -6
- package/dist/implementations/database/stages-string.js.map +1 -1
- package/dist/implementations/database/subquery.d.ts +1 -1
- package/dist/implementations/database/subquery.js +7 -5
- package/dist/implementations/database/subquery.js.map +1 -1
- package/dist/implementations/database/types.d.ts +5 -5
- package/dist/implementations/database/types.js +11 -11
- package/dist/implementations/database/types.js.map +1 -1
- package/dist/implementations/database/utils.js +2 -1
- package/dist/implementations/database/utils.js.map +1 -1
- package/dist/implementations/database/value.d.ts +1 -1
- package/dist/implementations/database/value.js +34 -33
- package/dist/implementations/database/value.js.map +1 -1
- package/dist/implementations/database/writes-atomic.js +6 -5
- package/dist/implementations/database/writes-atomic.js.map +1 -1
- package/dist/implementations/database/writes-identity.js +18 -19
- package/dist/implementations/database/writes-identity.js.map +1 -1
- package/dist/implementations/database/writes-insert.js +16 -22
- package/dist/implementations/database/writes-insert.js.map +1 -1
- package/dist/implementations/database/writes-shared.d.ts +1 -1
- package/dist/implementations/database/writes-shared.js +11 -7
- package/dist/implementations/database/writes-shared.js.map +1 -1
- package/dist/implementations/database/writes.d.ts +22 -1
- package/dist/implementations/database/writes.js +6 -3
- package/dist/implementations/database/writes.js.map +1 -1
- package/dist/test/catalog-owned.test.js +2 -0
- package/dist/test/catalog-owned.test.js.map +1 -1
- package/dist/test/contention.test.js.map +1 -1
- package/dist/test/duplicate-key.test.js +13 -10
- package/dist/test/duplicate-key.test.js.map +1 -1
- package/dist/test/indexes.test.js +7 -7
- package/dist/test/indexes.test.js.map +1 -1
- package/dist/test/unit/coerce.spec.js +7 -7
- package/dist/test/unit/coerce.spec.js.map +1 -1
- package/dist/test/unit/config.spec.js +3 -1
- package/dist/test/unit/config.spec.js.map +1 -1
- package/dist/test/unit/connect-failure.spec.d.ts +1 -0
- package/dist/test/unit/connect-failure.spec.js +50 -0
- package/dist/test/unit/connect-failure.spec.js.map +1 -0
- package/dist/test/unit/connection.spec.js +16 -18
- package/dist/test/unit/connection.spec.js.map +1 -1
- package/dist/test/unit/convergence.spec.d.ts +1 -0
- package/dist/test/unit/convergence.spec.js +347 -0
- package/dist/test/unit/convergence.spec.js.map +1 -0
- package/dist/test/unit/cursors-fixture.d.ts +79 -0
- package/dist/test/unit/cursors-fixture.js +245 -0
- package/dist/test/unit/cursors-fixture.js.map +1 -0
- package/dist/test/unit/cursors.spec.js +138 -718
- package/dist/test/unit/cursors.spec.js.map +1 -1
- package/dist/test/unit/cursors.teardown.spec.d.ts +1 -0
- package/dist/test/unit/cursors.teardown.spec.js +322 -0
- package/dist/test/unit/cursors.teardown.spec.js.map +1 -0
- package/dist/test/unit/cursors.window.spec.d.ts +1 -0
- package/dist/test/unit/cursors.window.spec.js +78 -0
- package/dist/test/unit/cursors.window.spec.js.map +1 -0
- package/dist/test/unit/ddl-fixture.d.ts +5 -0
- package/dist/test/unit/ddl-fixture.js +19 -0
- package/dist/test/unit/ddl-fixture.js.map +1 -0
- package/dist/test/unit/ddl.spec.js +39 -380
- package/dist/test/unit/ddl.spec.js.map +1 -1
- package/dist/test/unit/expression-array-fixture.d.ts +17 -0
- package/dist/test/unit/expression-array-fixture.js +63 -0
- package/dist/test/unit/expression-array-fixture.js.map +1 -0
- package/dist/test/unit/expression-array-walk.spec.d.ts +1 -0
- package/dist/test/unit/expression-array-walk.spec.js +235 -0
- package/dist/test/unit/expression-array-walk.spec.js.map +1 -0
- package/dist/test/unit/expression-array.spec.js +48 -322
- package/dist/test/unit/expression-array.spec.js.map +1 -1
- package/dist/test/unit/expression-date.spec.js +4 -3
- package/dist/test/unit/expression-date.spec.js.map +1 -1
- package/dist/test/unit/expression-fixture.d.ts +15 -0
- package/dist/test/unit/expression-fixture.js +40 -0
- package/dist/test/unit/expression-fixture.js.map +1 -0
- package/dist/test/unit/expression-numeric.spec.js +10 -8
- package/dist/test/unit/expression-numeric.spec.js.map +1 -1
- package/dist/test/unit/expression-object.spec.js +3 -4
- package/dist/test/unit/expression-object.spec.js.map +1 -1
- package/dist/test/unit/expression-predicate.spec.d.ts +1 -0
- package/dist/test/unit/expression-predicate.spec.js +231 -0
- package/dist/test/unit/expression-predicate.spec.js.map +1 -0
- package/dist/test/unit/expression-stages.spec.js +0 -5
- package/dist/test/unit/expression-stages.spec.js.map +1 -1
- package/dist/test/unit/expression-string.spec.js +2 -5
- package/dist/test/unit/expression-string.spec.js.map +1 -1
- package/dist/test/unit/expression.spec.js +44 -292
- package/dist/test/unit/expression.spec.js.map +1 -1
- package/dist/test/unit/external-comparisons.spec.js +5 -5
- package/dist/test/unit/external-comparisons.spec.js.map +1 -1
- package/dist/test/unit/external-types.spec.js +2 -3
- package/dist/test/unit/external-types.spec.js.map +1 -1
- package/dist/test/unit/feeds.spec.js +40 -23
- package/dist/test/unit/feeds.spec.js.map +1 -1
- package/dist/test/unit/fields.spec.js +15 -9
- package/dist/test/unit/fields.spec.js.map +1 -1
- package/dist/test/unit/invalid-fixture.d.ts +3 -0
- package/dist/test/unit/invalid-fixture.js +11 -0
- package/dist/test/unit/invalid-fixture.js.map +1 -0
- package/dist/test/unit/payload.spec.js.map +1 -1
- package/dist/test/unit/pipeline-aggregate.spec.js +14 -14
- package/dist/test/unit/pipeline-aggregate.spec.js.map +1 -1
- package/dist/test/unit/pipeline-fixture.d.ts +25 -6
- package/dist/test/unit/pipeline-fixture.js +21 -11
- package/dist/test/unit/pipeline-fixture.js.map +1 -1
- package/dist/test/unit/pipeline-group-fixture.d.ts +2 -0
- package/dist/test/unit/pipeline-group-fixture.js +6 -0
- package/dist/test/unit/pipeline-group-fixture.js.map +1 -0
- package/dist/test/unit/pipeline-group.spec.js +15 -248
- package/dist/test/unit/pipeline-group.spec.js.map +1 -1
- package/dist/test/unit/pipeline-lookup.spec.js +13 -10
- package/dist/test/unit/pipeline-lookup.spec.js.map +1 -1
- package/dist/test/unit/pipeline-projection.spec.js +12 -13
- package/dist/test/unit/pipeline-projection.spec.js.map +1 -1
- package/dist/test/unit/pipeline-rows.spec.js +21 -18
- package/dist/test/unit/pipeline-rows.spec.js.map +1 -1
- package/dist/test/unit/pipeline-selection.spec.js +6 -4
- package/dist/test/unit/pipeline-selection.spec.js.map +1 -1
- package/dist/test/unit/pipeline-stages.spec.js +23 -35
- package/dist/test/unit/pipeline-stages.spec.js.map +1 -1
- package/dist/test/unit/pipeline-substream.spec.d.ts +1 -0
- package/dist/test/unit/pipeline-substream.spec.js +246 -0
- package/dist/test/unit/pipeline-substream.spec.js.map +1 -0
- package/dist/test/unit/pipeline.spec.js +1 -1
- package/dist/test/unit/query.spec.js +6 -2
- package/dist/test/unit/query.spec.js.map +1 -1
- package/dist/test/unit/reaper.spec.js +4 -3
- package/dist/test/unit/reaper.spec.js.map +1 -1
- package/dist/test/unit/relation.spec.js +37 -36
- package/dist/test/unit/relation.spec.js.map +1 -1
- package/dist/test/unit/result.spec.js +13 -11
- package/dist/test/unit/result.spec.js.map +1 -1
- package/dist/test/unit/row-source.spec.js +1 -1
- package/dist/test/unit/row-source.spec.js.map +1 -1
- package/dist/test/unit/schema.spec.js +5 -2
- package/dist/test/unit/schema.spec.js.map +1 -1
- package/dist/test/unit/selection.spec.js +7 -3
- package/dist/test/unit/selection.spec.js.map +1 -1
- package/dist/test/unit/types.spec.js +6 -6
- package/dist/test/unit/types.spec.js.map +1 -1
- package/dist/test/unit/writes-atomic.spec.js +2 -2
- package/dist/test/unit/writes-atomic.spec.js.map +1 -1
- package/dist/test/unit/writes-insert.spec.js +5 -4
- package/dist/test/unit/writes-insert.spec.js.map +1 -1
- package/dist/test/unit/writes-replace.spec.js +6 -6
- package/dist/test/unit/writes-replace.spec.js.map +1 -1
- package/dist/test/unit/writes-target.spec.js +3 -3
- package/dist/test/unit/writes-target.spec.js.map +1 -1
- package/dist/test/unit/writes-update-fixture.d.ts +9 -0
- package/dist/test/unit/writes-update-fixture.js +20 -0
- package/dist/test/unit/writes-update-fixture.js.map +1 -0
- package/dist/test/unit/writes-update-mapper.spec.d.ts +1 -0
- package/dist/test/unit/writes-update-mapper.spec.js +123 -0
- package/dist/test/unit/writes-update-mapper.spec.js.map +1 -0
- package/dist/test/unit/writes-update.spec.js +42 -171
- package/dist/test/unit/writes-update.spec.js.map +1 -1
- package/dist/test-external/catalog.test.js +11 -1
- package/dist/test-external/catalog.test.js.map +1 -1
- package/dist/test-external/native.test.js +8 -6
- package/dist/test-external/native.test.js.map +1 -1
- package/dist/test-external/reads.test.js +20 -22
- package/dist/test-external/reads.test.js.map +1 -1
- package/dist/test-external/refusals.test.js +45 -24
- package/dist/test-external/refusals.test.js.map +1 -1
- package/dist/test-external/registration.test.js +4 -2
- package/dist/test-external/registration.test.js.map +1 -1
- package/dist/test-external/sales.d.ts +9 -2
- package/dist/test-external/sales.js.map +1 -1
- package/dist/test-external/unreachable.test.d.ts +1 -0
- package/dist/test-external/unreachable.test.js +83 -0
- package/dist/test-external/unreachable.test.js.map +1 -0
- package/dist/test-external/writes.test.js +71 -37
- package/dist/test-external/writes.test.js.map +1 -1
- package/package.json +22 -7
package/README.md
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
<a href="https://www.npmjs.com/package/@antelopejs/postgres"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/postgres?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
5
5
|
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/postgres?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
6
|
-
<a href="https://discord.gg/
|
|
6
|
+
<a href="https://discord.gg/g4pFt6eXqu"><img src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000" alt="Discord"></a>
|
|
7
7
|
<a href="https://interfaces.antelopejs.com/docs/database"><img src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000" alt="Documentation"></a>
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
10
|
The PostgreSQL backend of AntelopeJS: it runs the database interface's queries on PostgreSQL with the [`pg`](https://github.com/brianc/node-postgres) driver, mapping schema definitions onto real relational tables with native column types and indexes. It can also serve tables that already exist in a database it does not own.
|
|
11
11
|
|
|
12
|
+
Part of [AntelopeJS](https://github.com/AntelopeJS/antelopejs). Used by [AntelopeJS DMS](https://github.com/AntelopeJS/dms), the open-source back office for your PostgreSQL, MongoDB or RethinkDB database.
|
|
13
|
+
|
|
12
14
|
## Interfaces
|
|
13
15
|
|
|
14
16
|
| Interface | Documentation |
|
|
@@ -81,7 +83,7 @@ Then follow the [database interface guide](https://framework.antelopejs.com/docs
|
|
|
81
83
|
Unlike the document-store backends, this module treats schema field declarations as real
|
|
82
84
|
DDL: each AntelopeJS schema becomes a PostgreSQL schema, each table a real table, and each
|
|
83
85
|
declared scalar field a natively typed, natively indexable column. Queries compile to a single
|
|
84
|
-
SQL statement
|
|
86
|
+
SQL statement. Filters become `WHERE` clauses, joins become `JOIN`s, and a `filter` or `orderBy`
|
|
85
87
|
over a declared field reaches its btree index.
|
|
86
88
|
|
|
87
89
|
- One PostgreSQL schema per AntelopeJS schema id
|
|
@@ -101,23 +103,34 @@ the only construct used above PostgreSQL 9.5.
|
|
|
101
103
|
|
|
102
104
|
This repository documents what is specific to the PostgreSQL backend:
|
|
103
105
|
|
|
104
|
-
| |
|
|
105
|
-
| ---------------------------------------------- |
|
|
106
|
-
| [Storage and schema](./docs/storage.md) | What a registered schema becomes in the database, the field-type table, what reaches an index, and how registration converges
|
|
107
|
-
| [Configuration](./docs/configuration.md) | Every option `construct` accepts
|
|
108
|
-
| [External mode](./docs/external-mode.md) | Reading tables the module did not create, in a database it does not own
|
|
109
|
-
| [Change feeds](./docs/change-feeds.md) | `changes()`, its ordering guarantee, its retention contract and its blind spots
|
|
110
|
-
| [Errors and refusals](./docs/errors.md) | Everything the module refuses, with the message it refuses by
|
|
111
|
-
| [Behaviour worth knowing](./docs/behaviour.md) | Things that answer rather than throw, where the answer may surprise you
|
|
106
|
+
| | |
|
|
107
|
+
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
108
|
+
| [Storage and schema](./docs/storage.md) | What a registered schema becomes in the database, the field-type table, what reaches an index, and how registration converges |
|
|
109
|
+
| [Configuration](./docs/configuration.md) | Every option `construct` accepts |
|
|
110
|
+
| [External mode](./docs/external-mode.md) | Reading tables the module did not create, in a database it does not own |
|
|
111
|
+
| [Change feeds](./docs/change-feeds.md) | `changes()`, its ordering guarantee, its retention contract and its blind spots |
|
|
112
|
+
| [Errors and refusals](./docs/errors.md) | Everything the module refuses, with the message it refuses by |
|
|
113
|
+
| [Behaviour worth knowing](./docs/behaviour.md) | Things that answer rather than throw, where the answer may surprise you, including where this backend differs from the MongoDB and RethinkDB ones |
|
|
112
114
|
|
|
113
115
|
## Compatibility
|
|
114
116
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
|
118
|
-
|
|
|
117
|
+
<!-- antelopejs-docs-compat:start -->
|
|
118
|
+
|
|
119
|
+
| Package | Supported | Tested with |
|
|
120
|
+
| ---------------------------------------- | ---------------- | ----------- |
|
|
121
|
+
| `@antelopejs/interface-core` | `>=0.1.1 <1.0.0` | `0.2.0` |
|
|
122
|
+
| `@antelopejs/interface-database` | `>=0.2.0 <0.3.0` | `0.2.0` |
|
|
123
|
+
| `@antelopejs/interface-database-catalog` | `>=0.0.3 <0.1.0` | `0.0.3` |
|
|
124
|
+
|
|
125
|
+
<!-- antelopejs-docs-compat:end -->
|
|
126
|
+
|
|
127
|
+
| Package | Supported range |
|
|
128
|
+
| ---------------------------------------- | ---------------- |
|
|
129
|
+
| `@antelopejs/interface-database` | `>=0.2.0 <0.3.0` |
|
|
130
|
+
| `@antelopejs/interface-database-catalog` | `>=0.0.3 <0.1.0` |
|
|
131
|
+
| `@antelopejs/interface-core` | `>=0.1.1 <1.0.0` |
|
|
119
132
|
|
|
120
|
-
The module is developed and tested against `@antelopejs/core` `^1.14.0` on Node.js
|
|
133
|
+
The module is developed and tested against `@antelopejs/core` `^1.14.0` on Node.js 24 (the `.nvmrc` version CI runs), with the `pg` driver `^8.22.0` and PostgreSQL 18.
|
|
121
134
|
|
|
122
135
|
## Contributing
|
|
123
136
|
|
package/dist/config.d.ts
CHANGED
|
@@ -35,4 +35,5 @@ export interface ResolvedOptions {
|
|
|
35
35
|
export declare function SetOptions(options?: Options): ResolvedOptions;
|
|
36
36
|
export declare function GetOptions(): ResolvedOptions;
|
|
37
37
|
export declare function IsExternal(): boolean;
|
|
38
|
+
export declare function IsCatalogEnabled(): Promise<boolean>;
|
|
38
39
|
export declare function ClearOptions(): void;
|
package/dist/config.js
CHANGED
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SetOptions = SetOptions;
|
|
4
4
|
exports.GetOptions = GetOptions;
|
|
5
5
|
exports.IsExternal = IsExternal;
|
|
6
|
+
exports.IsCatalogEnabled = IsCatalogEnabled;
|
|
6
7
|
exports.ClearOptions = ClearOptions;
|
|
8
|
+
const runtime_1 = require("@antelopejs/interface-core/runtime");
|
|
7
9
|
const DEFAULT_URL = "postgres://postgres@localhost:5432/antelopejs";
|
|
8
10
|
const DEFAULT_MODE = "owned";
|
|
9
11
|
const MODES = ["owned", "external"];
|
|
@@ -28,9 +30,7 @@ function PositiveSafeInteger(option, supplied, fallback) {
|
|
|
28
30
|
if (supplied === undefined) {
|
|
29
31
|
return fallback;
|
|
30
32
|
}
|
|
31
|
-
if (
|
|
32
|
-
!Number.isSafeInteger(supplied) ||
|
|
33
|
-
supplied < SMALLEST_POSITIVE_INTEGER) {
|
|
33
|
+
if (!Number.isSafeInteger(supplied) || supplied < SMALLEST_POSITIVE_INTEGER) {
|
|
34
34
|
throw new Error(`${option} must be a positive safe integer, received ${String(supplied)}`);
|
|
35
35
|
}
|
|
36
36
|
return supplied;
|
|
@@ -85,6 +85,10 @@ function GetOptions() {
|
|
|
85
85
|
function IsExternal() {
|
|
86
86
|
return GetOptions().mode === "external";
|
|
87
87
|
}
|
|
88
|
+
async function IsCatalogEnabled() {
|
|
89
|
+
const configured = GetOptions().catalog.enabled;
|
|
90
|
+
return configured ?? (await (0, runtime_1.GetRuntimeInfo)()).dev;
|
|
91
|
+
}
|
|
88
92
|
function ClearOptions() {
|
|
89
93
|
resolved = undefined;
|
|
90
94
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function DescribeConnectFailure(err: Error, url: string): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DescribeConnectFailure = DescribeConnectFailure;
|
|
4
|
+
const DEFAULT_PORT = "5432";
|
|
5
|
+
const UNANSWERED_CODES = new Set(["ECONNREFUSED", "ENOTFOUND", "ETIMEDOUT"]);
|
|
6
|
+
const SSL_REQUIRED_MARKER = "no encryption";
|
|
7
|
+
function Endpoint(url) {
|
|
8
|
+
try {
|
|
9
|
+
const parsed = new URL(url);
|
|
10
|
+
return `${parsed.hostname}:${parsed.port || DEFAULT_PORT}`;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return "the configured host";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function Sentence(code, message, url) {
|
|
17
|
+
if (code === "28P01") {
|
|
18
|
+
return "wrong user or password";
|
|
19
|
+
}
|
|
20
|
+
if (code === "3D000") {
|
|
21
|
+
return "the database does not exist";
|
|
22
|
+
}
|
|
23
|
+
if (UNANSWERED_CODES.has(code)) {
|
|
24
|
+
return `the server is not answering at ${Endpoint(url)}`;
|
|
25
|
+
}
|
|
26
|
+
if (code === "28000" && message.includes(SSL_REQUIRED_MARKER)) {
|
|
27
|
+
return "the server requires SSL";
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
function DescribeConnectFailure(err, url) {
|
|
32
|
+
const code = "code" in err ? String(err.code) : undefined;
|
|
33
|
+
if (!code) {
|
|
34
|
+
return err.message;
|
|
35
|
+
}
|
|
36
|
+
const sentence = Sentence(code, err.message, url) ?? err.message;
|
|
37
|
+
return `${sentence} (${code})`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=connect-failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-failure.js","sourceRoot":"","sources":["../src/connect-failure.ts"],"names":[],"mappings":";;AAyCA,wDAOC;AAhDD,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAE7E,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAE5C,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,qBAAqB,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CACf,IAAY,EACZ,OAAe,EACf,GAAW;IAEX,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,6BAA6B,CAAC;IACvC,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,kCAAkC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC9D,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,SAAgB,sBAAsB,CAAC,GAAU,EAAE,GAAW;IAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC;IACjE,OAAO,GAAG,QAAQ,KAAK,IAAI,GAAG,CAAC;AACjC,CAAC"}
|
package/dist/connection.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Pool, type PoolClient, type QueryResult, type QueryResultRow } from "pg";
|
|
2
2
|
import { type Options } from "./config";
|
|
3
|
-
export type BeforeDisconnect = () =>
|
|
3
|
+
export type BeforeDisconnect = () => void | PromiseLike<void>;
|
|
4
4
|
export type PoolTeardown = () => Promise<void>;
|
|
5
5
|
export declare function GuardPool(created: Pool): Pool;
|
|
6
6
|
export declare function Connect(options?: Options): Promise<void>;
|
|
@@ -8,6 +8,7 @@ export declare function RegisterBeforeDisconnect(callback: BeforeDisconnect): ()
|
|
|
8
8
|
export declare function SettleBeforeDisconnect(endPool: PoolTeardown): Promise<void>;
|
|
9
9
|
export declare function Disconnect(): Promise<void>;
|
|
10
10
|
export declare function GetPool(): Pool;
|
|
11
|
+
export declare function AssertConnected(): void;
|
|
11
12
|
export declare function Query<T extends QueryResultRow = QueryResultRow>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
|
|
12
13
|
export declare function GuardHeldClient(client: PoolClient): PoolClient;
|
|
13
14
|
export declare function AcquireClient(): Promise<PoolClient>;
|
package/dist/connection.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.RegisterBeforeDisconnect = RegisterBeforeDisconnect;
|
|
|
6
6
|
exports.SettleBeforeDisconnect = SettleBeforeDisconnect;
|
|
7
7
|
exports.Disconnect = Disconnect;
|
|
8
8
|
exports.GetPool = GetPool;
|
|
9
|
+
exports.AssertConnected = AssertConnected;
|
|
9
10
|
exports.Query = Query;
|
|
10
11
|
exports.GuardHeldClient = GuardHeldClient;
|
|
11
12
|
exports.AcquireClient = AcquireClient;
|
|
@@ -13,16 +14,20 @@ exports.GetSchemaPrefix = GetSchemaPrefix;
|
|
|
13
14
|
const pg_1 = require("pg");
|
|
14
15
|
const logger_1 = require("./logger");
|
|
15
16
|
const config_1 = require("./config");
|
|
16
|
-
const
|
|
17
|
+
const connect_failure_1 = require("./connect-failure");
|
|
18
|
+
const NOT_CONNECTED = "PostgreSQL adapter is not connected";
|
|
19
|
+
const NOT_CONSTRUCTED = "construct() has not run yet";
|
|
17
20
|
const SESSION_SETTINGS = "SET TIME ZONE 'UTC'; SET DateStyle = 'ISO, MDY'";
|
|
18
21
|
const CLIENT_ERROR = "error";
|
|
19
22
|
const HELD_CLIENT_FAILED = "the connection under a borrowed PostgreSQL client failed while it was checked out";
|
|
20
23
|
const IDLE_CLIENT_FAILED = "the connection under an idle pooled PostgreSQL client failed";
|
|
21
24
|
const CONNECTED = "connected to PostgreSQL";
|
|
22
25
|
const DISCONNECTED = "disconnected from PostgreSQL";
|
|
26
|
+
const STARTED_UNCONNECTED = "could not connect to PostgreSQL; the instance starts without a connection and refuses every call until the project reloads";
|
|
23
27
|
const SLOW_ACQUIRE_MS = 10_000;
|
|
24
28
|
const SLOW_ACQUIRE = `no PostgreSQL client has become available in ${SLOW_ACQUIRE_MS} ms: either every pooled connection is checked out — a cursor holds one for as long as it is iterated — or a new connection is not being answered. Raise pool.max, or set pool.connectionTimeoutMillis to fail rather than wait`;
|
|
25
29
|
let pool;
|
|
30
|
+
let connectFailure;
|
|
26
31
|
let isWaiting = false;
|
|
27
32
|
const beforeDisconnect = new Set();
|
|
28
33
|
function PinSession(client) {
|
|
@@ -38,6 +43,9 @@ function GuardPool(created) {
|
|
|
38
43
|
created.on(CLIENT_ERROR, ReportIdleClientError);
|
|
39
44
|
return created;
|
|
40
45
|
}
|
|
46
|
+
async function ToleratesConnectFailure() {
|
|
47
|
+
return (0, config_1.IsExternal)() && (await (0, config_1.IsCatalogEnabled)());
|
|
48
|
+
}
|
|
41
49
|
async function Connect(options) {
|
|
42
50
|
await Disconnect();
|
|
43
51
|
const resolved = (0, config_1.SetOptions)(options);
|
|
@@ -53,6 +61,11 @@ async function Connect(options) {
|
|
|
53
61
|
}
|
|
54
62
|
catch (err) {
|
|
55
63
|
await created.end();
|
|
64
|
+
if (err instanceof Error && (await ToleratesConnectFailure())) {
|
|
65
|
+
connectFailure = (0, connect_failure_1.DescribeConnectFailure)(err, resolved.url);
|
|
66
|
+
logger_1.Logger.Warn(STARTED_UNCONNECTED, connectFailure);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
56
69
|
(0, config_1.ClearOptions)();
|
|
57
70
|
throw err;
|
|
58
71
|
}
|
|
@@ -72,6 +85,7 @@ async function SettleBeforeDisconnect(endPool) {
|
|
|
72
85
|
async function EndPool() {
|
|
73
86
|
const current = pool;
|
|
74
87
|
pool = undefined;
|
|
88
|
+
connectFailure = undefined;
|
|
75
89
|
(0, config_1.ClearOptions)();
|
|
76
90
|
if (current) {
|
|
77
91
|
await current.end();
|
|
@@ -83,10 +97,13 @@ async function Disconnect() {
|
|
|
83
97
|
}
|
|
84
98
|
function GetPool() {
|
|
85
99
|
if (!pool) {
|
|
86
|
-
throw new Error(NOT_CONNECTED);
|
|
100
|
+
throw new Error(`${NOT_CONNECTED}: ${connectFailure ?? NOT_CONSTRUCTED}`);
|
|
87
101
|
}
|
|
88
102
|
return pool;
|
|
89
103
|
}
|
|
104
|
+
function AssertConnected() {
|
|
105
|
+
GetPool();
|
|
106
|
+
}
|
|
90
107
|
function Query(sql, params) {
|
|
91
108
|
return GetPool().query(sql, params);
|
|
92
109
|
}
|
package/dist/connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ exports.DescribeRelations = DescribeRelations;
|
|
|
6
6
|
exports.Profile = Profile;
|
|
7
7
|
exports.CheckReference = CheckReference;
|
|
8
8
|
exports.SampleRows = SampleRows;
|
|
9
|
-
const runtime_1 = require("@antelopejs/interface-core/runtime");
|
|
10
9
|
const config_1 = require("../../config");
|
|
10
|
+
const connection_1 = require("../../connection");
|
|
11
11
|
const external_discovery_1 = require("../database/external-discovery");
|
|
12
12
|
const external_measures_1 = require("../database/external-measures");
|
|
13
13
|
const external_profile_1 = require("../database/external-profile");
|
|
@@ -15,17 +15,14 @@ const external_reference_1 = require("../database/external-reference");
|
|
|
15
15
|
const external_rows_1 = require("../database/external-rows");
|
|
16
16
|
const OWNED_REFUSAL = "the catalog describes a database an external instance was pointed at; this instance owns its tables";
|
|
17
17
|
const DEVELOPMENT_REFUSAL = "the catalog is a development tool: it answers under ajs project dev or run, or with catalog.enabled";
|
|
18
|
-
async function IsEnabled() {
|
|
19
|
-
const configured = (0, config_1.GetOptions)().catalog.enabled;
|
|
20
|
-
return configured ?? (await (0, runtime_1.GetRuntimeInfo)()).dev;
|
|
21
|
-
}
|
|
22
18
|
async function Guard() {
|
|
23
19
|
if (!(0, config_1.IsExternal)()) {
|
|
24
20
|
throw new Error(OWNED_REFUSAL);
|
|
25
21
|
}
|
|
26
|
-
if (!(await
|
|
22
|
+
if (!(await (0, config_1.IsCatalogEnabled)())) {
|
|
27
23
|
throw new Error(DEVELOPMENT_REFUSAL);
|
|
28
24
|
}
|
|
25
|
+
(0, connection_1.AssertConnected)();
|
|
29
26
|
}
|
|
30
27
|
async function Info() {
|
|
31
28
|
await Guard();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/implementations/catalog/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/implementations/catalog/index.ts"],"names":[],"mappings":";;AA+CA,oBAGC;AAED,sCAKC;AAED,8CAaC;AAED,0BAKC;AAED,wCAKC;AAED,gCAGC;AA9ED,yCAA4D;AAC5D,iDAAmD;AACnD,uEAOwC;AACxC,qEAA6D;AAC7D,mEAA+D;AAC/D,uEAAsE;AACtE,6DAA+D;AAE/D,MAAM,aAAa,GACjB,qGAAqG,CAAC;AACxG,MAAM,mBAAmB,GACvB,qGAAqG,CAAC;AAMxG,KAAK,UAAU,KAAK;IAClB,IAAI,CAAC,IAAA,mBAAU,GAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAA,yBAAgB,GAAE,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAA,4BAAe,GAAE,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,IAAI;IACxB,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,IAAA,6BAAQ,GAAE,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,OAAkB;IAElB,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,IAAA,gCAAY,EAAC,MAAM,IAAA,qCAAgB,EAAC,OAAO,CAAC,EAAE,8BAAS,CAAC,CAAC;AAClE,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,SAAmB;IAEnB,MAAM,KAAK,EAAE,CAAC;IACd,MAAM,IAAI,GAAG,MAAM,IAAA,0CAAqB,EAAC,SAAS,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,iCAAY,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,IAAA,gCAAY,EAAC,IAAI,EAAE,gCAAW,CAAC,CAAC;AACzC,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,OAAuB;IAEvB,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,IAAA,kCAAe,EAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,KAAqB;IAErB,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,IAAA,yCAAoB,EAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,OAAsB;IACrD,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,IAAA,kCAAkB,EAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -26,35 +26,35 @@ function UnifySameKind(left, right) {
|
|
|
26
26
|
return (0, types_1.ArrayOf)(Unify(left.elem, right.elem));
|
|
27
27
|
}
|
|
28
28
|
if (left.kind === "json" && right.kind === "json") {
|
|
29
|
-
return (0, types_1.JsonOf)(
|
|
29
|
+
return (0, types_1.JsonOf)(UnifyKeyTypes(left.keys, right.keys));
|
|
30
30
|
}
|
|
31
31
|
return left;
|
|
32
32
|
}
|
|
33
|
-
function
|
|
33
|
+
function UnifyKeyTypes(left, right) {
|
|
34
34
|
if (!left || !right) {
|
|
35
35
|
return undefined;
|
|
36
36
|
}
|
|
37
|
-
const
|
|
37
|
+
const keyTypes = {};
|
|
38
38
|
for (const [name, type] of Object.entries(left)) {
|
|
39
39
|
if (Object.hasOwn(right, name)) {
|
|
40
|
-
|
|
40
|
+
keyTypes[name] = Unify(type, right[name]);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
return Object.keys(
|
|
43
|
+
return Object.keys(keyTypes).length > 0 ? keyTypes : undefined;
|
|
44
44
|
}
|
|
45
45
|
function Widen(left, right) {
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
if (!
|
|
46
|
+
const leftKeys = (0, types_1.KeyTypesOf)(left);
|
|
47
|
+
const rightKeys = (0, types_1.KeyTypesOf)(right);
|
|
48
|
+
if (!leftKeys || !rightKeys) {
|
|
49
49
|
return Unify(left, right);
|
|
50
50
|
}
|
|
51
|
-
const
|
|
52
|
-
for (const [name, type] of Object.entries(
|
|
53
|
-
|
|
54
|
-
? Unify(
|
|
51
|
+
const keyTypes = { ...leftKeys };
|
|
52
|
+
for (const [name, type] of Object.entries(rightKeys)) {
|
|
53
|
+
keyTypes[name] = Object.hasOwn(leftKeys, name)
|
|
54
|
+
? Unify(leftKeys[name], type)
|
|
55
55
|
: type;
|
|
56
56
|
}
|
|
57
|
-
return (0, types_1.JsonOf)(
|
|
57
|
+
return (0, types_1.JsonOf)(keyTypes);
|
|
58
58
|
}
|
|
59
59
|
function Cast(value, target) {
|
|
60
60
|
if (value.type.kind === target.kind) {
|
|
@@ -123,12 +123,12 @@ function UnifyOperands(left, right, operator = EQUALITY) {
|
|
|
123
123
|
return NativePair(left, right, pair, operator);
|
|
124
124
|
}
|
|
125
125
|
const EQUALITY = "=";
|
|
126
|
-
const MIRRORED =
|
|
127
|
-
">"
|
|
128
|
-
"<"
|
|
129
|
-
">="
|
|
130
|
-
"<="
|
|
131
|
-
|
|
126
|
+
const MIRRORED = new Map([
|
|
127
|
+
[">", "<"],
|
|
128
|
+
["<", ">"],
|
|
129
|
+
[">=", "<="],
|
|
130
|
+
["<=", ">="],
|
|
131
|
+
]);
|
|
132
132
|
function NativeSide(native, type) {
|
|
133
133
|
return { sql: native.sql, type };
|
|
134
134
|
}
|
|
@@ -154,7 +154,7 @@ function NativePair(left, right, pair, operator) {
|
|
|
154
154
|
};
|
|
155
155
|
}
|
|
156
156
|
if (right.native && type.kind === right.type.kind) {
|
|
157
|
-
const mirrored = MIRRORED
|
|
157
|
+
const mirrored = MIRRORED.get(operator) ?? operator;
|
|
158
158
|
const converted = right.native.bind(pair.left.sql, mirrored);
|
|
159
159
|
return {
|
|
160
160
|
left: { sql: converted, type },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coerce.js","sourceRoot":"","sources":["../../../src/implementations/database/coerce.ts"],"names":[],"mappings":";;AAqCA,sBAWC;
|
|
1
|
+
{"version":3,"file":"coerce.js","sourceRoot":"","sources":["../../../src/implementations/database/coerce.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import type { OriginResolver } from "./selection";
|
|
|
5
5
|
import { type Compiled, ParamCollector } from "./sql";
|
|
6
6
|
export type SubqueryProvider = (stages: QueryStage[]) => Compiled;
|
|
7
7
|
export type ArgumentBinding = RowSource | SubqueryProvider | Compiled;
|
|
8
|
+
export declare function IsSubqueryProvider(binding: ArgumentBinding): binding is SubqueryProvider;
|
|
8
9
|
type ExpressionCompiler = (stages: QueryStage[], context: DecodingContext, source?: RowSource) => Compiled;
|
|
9
10
|
export type SubqueryCompiler = (stages: QueryStage[], context: DecodingContext) => Compiled;
|
|
10
11
|
type RelationCompiler = (stages: QueryStage[], context: DecodingContext) => Relation;
|
|
@@ -4,8 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.DecodingContext = void 0;
|
|
7
|
+
exports.IsSubqueryProvider = IsSubqueryProvider;
|
|
7
8
|
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
9
|
const sql_1 = require("./sql");
|
|
10
|
+
function IsSubqueryProvider(binding) {
|
|
11
|
+
return typeof binding === "function";
|
|
12
|
+
}
|
|
9
13
|
const ALIAS_PREFIX = "t";
|
|
10
14
|
class DecodingContext {
|
|
11
15
|
compilers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/implementations/database/context.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/implementations/database/context.ts"],"names":[],"mappings":";;;;;;AAaA,gDAIC;AAjBD,8DAAiC;AAMjC,+BAAsD;AAOtD,SAAgB,kBAAkB,CAChC,OAAwB;IAExB,OAAO,OAAO,OAAO,KAAK,UAAU,CAAC;AACvC,CAAC;AAoCD,MAAM,YAAY,GAAG,GAAG,CAAC;AAQzB,MAAa,eAAe;IAkBP;IACD;IAlBF,MAAM,GAAG,IAAI,oBAAc,EAAE,CAAC;IAE7B,QAAQ,GAAoC,EAAE,CAAC;IACxD,YAAY,GAAG,CAAC,CAAC;IAazB,YACmB,SAAoB,EACrB,aAA8B;QAD7B,cAAS,GAAT,SAAS,CAAW;QACrB,kBAAa,GAAb,aAAa,CAAiB;IAC7C,CAAC;IAGG,OAAO;QACZ,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IAEM,SAAS;QACd,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;IACjD,CAAC;IAEM,IAAI,CAAC,EAAU,EAAE,OAAwB;QAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,EAAU;QACnB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnB,CAAC,CAAC,SAAS,CAAC;QACd,IAAA,qBAAM,EAAC,OAAO,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,UAAU,CAAC,MAAoB,EAAE,MAAkB;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAEM,QAAQ,CAAC,MAAoB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAGM,QAAQ,CAAC,MAAoB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;CACF;AA3DD,0CA2DC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MigrationMode } from "../../config";
|
|
2
|
+
import { type TablePlan } from "./ddl";
|
|
3
|
+
export interface ActualColumn {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly type: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ActualIndex {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly signature?: string;
|
|
10
|
+
readonly valid: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface ActualTable {
|
|
13
|
+
readonly columns: readonly ActualColumn[];
|
|
14
|
+
readonly indexes: readonly ActualIndex[];
|
|
15
|
+
}
|
|
16
|
+
export interface ConvergencePlan {
|
|
17
|
+
statements: string[];
|
|
18
|
+
indexStatements: string[];
|
|
19
|
+
warnings: string[];
|
|
20
|
+
}
|
|
21
|
+
export declare function PlanIndexStatements(schemaName: string, plan: TablePlan, actual: ActualTable): string[];
|
|
22
|
+
export declare function PlanTable(schemaName: string, plan: TablePlan, actual: ActualTable, mode: MigrationMode): ConvergencePlan;
|