@happyvertical/smrt-core 0.40.69 → 0.40.70
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/AGENTS.md +29 -4
- package/README.md +20 -1
- package/agents/query-bounds.md +45 -0
- package/agents/schema-paths.md +328 -0
- package/dist/browser.d.ts +1 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +2 -1
- package/dist/class.d.ts.map +1 -1
- package/dist/class.js +28 -4
- package/dist/class.js.map +1 -1
- package/dist/collection.d.ts +101 -2
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +224 -43
- package/dist/collection.js.map +1 -1
- package/dist/database.d.ts +8 -0
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +16 -8
- package/dist/database.js.map +1 -1
- package/dist/db-errors.d.ts +105 -0
- package/dist/db-errors.d.ts.map +1 -0
- package/dist/db-errors.js +382 -0
- package/dist/db-errors.js.map +1 -0
- package/dist/decorators/index.d.ts +17 -1
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +65 -7
- package/dist/decorators/index.js.map +1 -1
- package/dist/dispatch/bus.d.ts.map +1 -1
- package/dist/dispatch/bus.js +4 -3
- package/dist/dispatch/bus.js.map +1 -1
- package/dist/errors.d.ts +30 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +34 -2
- package/dist/errors.js.map +1 -1
- package/dist/generators/changes-route.d.ts.map +1 -1
- package/dist/generators/changes-route.js +6 -3
- package/dist/generators/changes-route.js.map +1 -1
- package/dist/generators/mcp-runtime-template.d.ts +8 -0
- package/dist/generators/mcp-runtime-template.d.ts.map +1 -1
- package/dist/generators/mcp-runtime-template.js +38 -4
- package/dist/generators/mcp-runtime-template.js.map +1 -1
- package/dist/generators/mcp.d.ts +16 -0
- package/dist/generators/mcp.d.ts.map +1 -1
- package/dist/generators/mcp.js +41 -3
- package/dist/generators/mcp.js.map +1 -1
- package/dist/generators/rest.d.ts +22 -0
- package/dist/generators/rest.d.ts.map +1 -1
- package/dist/generators/rest.js +34 -3
- package/dist/generators/rest.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/manifest/static-manifest.js +1 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/migrations/differ.d.ts +202 -8
- package/dist/migrations/differ.d.ts.map +1 -1
- package/dist/migrations/differ.js +604 -46
- package/dist/migrations/differ.js.map +1 -1
- package/dist/migrations/generator.d.ts +31 -4
- package/dist/migrations/generator.d.ts.map +1 -1
- package/dist/migrations/generator.js +49 -5
- package/dist/migrations/generator.js.map +1 -1
- package/dist/migrations/index.d.ts +3 -2
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +5 -3
- package/dist/migrations/orchestrate.js +35 -6
- package/dist/migrations/orchestrate.js.map +1 -1
- package/dist/migrations/sqlite-rebuild.d.ts +142 -0
- package/dist/migrations/sqlite-rebuild.d.ts.map +1 -0
- package/dist/migrations/sqlite-rebuild.js +514 -0
- package/dist/migrations/sqlite-rebuild.js.map +1 -0
- package/dist/migrations/tracker.d.ts +114 -1
- package/dist/migrations/tracker.d.ts.map +1 -1
- package/dist/migrations/tracker.js +331 -16
- package/dist/migrations/tracker.js.map +1 -1
- package/dist/migrations/types.d.ts +19 -4
- package/dist/migrations/types.d.ts.map +1 -1
- package/dist/migrations.js +5 -3
- package/dist/object.d.ts +45 -6
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +60 -13
- package/dist/object.js.map +1 -1
- package/dist/postgres-timeouts.d.ts +240 -0
- package/dist/postgres-timeouts.d.ts.map +1 -0
- package/dist/postgres-timeouts.js +204 -0
- package/dist/postgres-timeouts.js.map +1 -0
- package/dist/query-bounds.d.ts +97 -0
- package/dist/query-bounds.d.ts.map +1 -0
- package/dist/query-bounds.js +173 -0
- package/dist/query-bounds.js.map +1 -0
- package/dist/registry/types.d.ts +32 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry.js +1 -1
- package/dist/scanner/types.d.ts +5 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/scanner/types.js.map +1 -1
- package/dist/schema/ddl/base-strategy.d.ts.map +1 -1
- package/dist/schema/ddl/base-strategy.js +2 -2
- package/dist/schema/ddl/base-strategy.js.map +1 -1
- package/dist/schema/generator.d.ts +70 -5
- package/dist/schema/generator.d.ts.map +1 -1
- package/dist/schema/generator.js +124 -6
- package/dist/schema/generator.js.map +1 -1
- package/dist/schema/index.d.ts +3 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +4 -1
- package/dist/schema/live-parity.d.ts +90 -0
- package/dist/schema/live-parity.d.ts.map +1 -0
- package/dist/schema/live-parity.js +600 -0
- package/dist/schema/live-parity.js.map +1 -0
- package/dist/schema/manifest-schema.d.ts +121 -0
- package/dist/schema/manifest-schema.d.ts.map +1 -0
- package/dist/schema/manifest-schema.js +267 -0
- package/dist/schema/manifest-schema.js.map +1 -0
- package/dist/schema/schema-aggregator.d.ts +24 -10
- package/dist/schema/schema-aggregator.d.ts.map +1 -1
- package/dist/schema/schema-aggregator.js +35 -90
- package/dist/schema/schema-aggregator.js.map +1 -1
- package/dist/schema/system-table-shapes.d.ts +52 -0
- package/dist/schema/system-table-shapes.d.ts.map +1 -0
- package/dist/schema/system-table-shapes.js +174 -0
- package/dist/schema/system-table-shapes.js.map +1 -0
- package/dist/schema/types.d.ts +103 -4
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/utils.d.ts +1 -0
- package/dist/schema/utils.d.ts.map +1 -1
- package/dist/schema/utils.js +3 -1
- package/dist/schema/utils.js.map +1 -1
- package/dist/schema.js +4 -1
- package/dist/smrt-knowledge.json +18 -6
- package/dist/sync/apply.d.ts.map +1 -1
- package/dist/sync/apply.js +9 -16
- package/dist/sync/apply.js.map +1 -1
- package/dist/testing/database.d.ts.map +1 -1
- package/dist/testing/database.js +1 -0
- package/dist/testing/database.js.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.js +71 -5
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
- package/dist/vite-plugin/web-collections.d.ts.map +1 -1
- package/dist/vite-plugin/web-collections.js +6 -4
- package/dist/vite-plugin/web-collections.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,13 +1,32 @@
|
|
|
1
|
-
import { SchemaChange, SchemaDefinition, SchemaDiff } from '../schema/types.js';
|
|
1
|
+
import { SchemaChange, SchemaDefinition, SchemaDiff, SQLDataType } from '../schema/types.js';
|
|
2
2
|
import { DatabaseInterface } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Options for schema comparison
|
|
5
5
|
*/
|
|
6
6
|
export interface DiffOptions {
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Emit executable `DROP TABLE` entries (`dropped_tables`) for tables that
|
|
9
|
+
* exist in the database but not in the manifest. Default: false. Orphan
|
|
10
|
+
* tables are always *reported* via `SchemaDiff.orphan_tables` regardless.
|
|
11
|
+
*/
|
|
8
12
|
includeDroppedTables?: boolean;
|
|
9
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Emit executable `drop_column` changes for columns that exist in the
|
|
15
|
+
* database but not in the manifest. Default: false. Orphan columns are
|
|
16
|
+
* always *reported* as `orphan_column` advisories regardless — a NOT NULL
|
|
17
|
+
* orphan without a default is flagged as a warning because every ORM
|
|
18
|
+
* insert (which never supplies the column) will fail on it (#2369).
|
|
19
|
+
*/
|
|
10
20
|
includeDroppedColumns?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Execute constraint relaxations instead of only reporting them:
|
|
23
|
+
* `DROP NOT NULL` / `DROP DEFAULT` on live columns that are stricter than
|
|
24
|
+
* the manifest, and `DROP NOT NULL` on orphan NOT NULL columns. Default:
|
|
25
|
+
* false — relaxations are reported as advisories with the suggested SQL.
|
|
26
|
+
* Strengthening repairs (`SET NOT NULL`, `SET DEFAULT`) are always emitted
|
|
27
|
+
* where the engine supports `ALTER COLUMN` (#2369).
|
|
28
|
+
*/
|
|
29
|
+
relaxColumns?: boolean;
|
|
11
30
|
/**
|
|
12
31
|
* Drop indexes that exist in the database but are absent from the manifest
|
|
13
32
|
* AND are not functionally equivalent to anything in the manifest. Default:
|
|
@@ -38,6 +57,31 @@ export interface DiffOptions {
|
|
|
38
57
|
legacyTimezone: 'UTC';
|
|
39
58
|
};
|
|
40
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Name of the unique index that backs a `unique: true` column. Mirrors the
|
|
62
|
+
* `<table>_<column>_key` name PostgreSQL gives the implicit index of an
|
|
63
|
+
* inline column UNIQUE constraint, so the same column ends up with the same
|
|
64
|
+
* index name on every engine and the orphan-index sweep treats it as
|
|
65
|
+
* constraint-owned.
|
|
66
|
+
*/
|
|
67
|
+
export declare function uniqueColumnIndexName(tableName: string, columnName: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* True when a change is report-only: it carries an advisory and no
|
|
70
|
+
* executable statement. Such changes never reach the migration stream.
|
|
71
|
+
*/
|
|
72
|
+
export declare function isAdvisoryOnlyChange(change: SchemaChange): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* True for an info-level report-only change: listed in `SchemaDiff.changes`
|
|
75
|
+
* for visibility but not counted by `has_changes` (a harmless orphan column,
|
|
76
|
+
* a live default the manifest no longer declares).
|
|
77
|
+
*/
|
|
78
|
+
export declare function isInfoOnlyChange(change: SchemaChange): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* True when a change has no executable DDL: `type_mismatch`, an advisory-only
|
|
81
|
+
* change, or a change whose only SQL is an advisory comment (e.g. a SQLite
|
|
82
|
+
* `ALTER COLUMN` the engine cannot perform in place).
|
|
83
|
+
*/
|
|
84
|
+
export declare function isManualOrAdvisoryChange(change: SchemaChange): boolean;
|
|
41
85
|
/**
|
|
42
86
|
* Normalize a partial-index `WHERE` predicate so semantically-identical
|
|
43
87
|
* clauses from different sources compare equal (issue #1692).
|
|
@@ -67,6 +111,33 @@ export declare function normalizeIndexPredicate(where?: string | null): string;
|
|
|
67
111
|
* `pg_indexes.indexdef`. Returns '' for a non-partial index.
|
|
68
112
|
*/
|
|
69
113
|
export declare function extractIndexPredicate(createIndexSql: string): string;
|
|
114
|
+
/**
|
|
115
|
+
* Canonical form of a column default for drift comparison (#2369).
|
|
116
|
+
*
|
|
117
|
+
* The manifest side is the DDL fragment `formatDefaultValue()` would emit
|
|
118
|
+
* (`'anon'`, `0`, `TRUE`, `'{}'`, `current_timestamp`); the database side is
|
|
119
|
+
* whatever the catalog reports, which each engine renders differently:
|
|
120
|
+
* PostgreSQL appends casts (`'anon'::text`, `'{}'::jsonb`, `'-1'::integer`)
|
|
121
|
+
* and upper-cases `CURRENT_TIMESTAMP`, DuckDB wraps booleans
|
|
122
|
+
* (`CAST('t' AS BOOLEAN)`), SQLite echoes the literal verbatim. Both sides
|
|
123
|
+
* are reduced by the *manifest column type* to a `{kind, key}` pair:
|
|
124
|
+
*
|
|
125
|
+
* - `none` — no default (`undefined`, empty, or the `NULL` keyword)
|
|
126
|
+
* - `now` — the current-timestamp family (`current_timestamp`, `now()`,
|
|
127
|
+
* `transaction_timestamp()`, `datetime('now')`)
|
|
128
|
+
* - `number` — numeric columns, compared by numeric value
|
|
129
|
+
* - `bool` — boolean columns (`true`/`false`/`t`/`f`/`1`/`0`)
|
|
130
|
+
* - `text` — string literal contents (JSON columns compare the parsed
|
|
131
|
+
* value when both sides parse)
|
|
132
|
+
* - `func` — other function calls / keywords, compared lowercase and
|
|
133
|
+
* whitespace-collapsed
|
|
134
|
+
* - `raw` — could not be classified; callers must skip the comparison
|
|
135
|
+
* rather than risk a false positive
|
|
136
|
+
*/
|
|
137
|
+
export declare function canonicalizeDefault(fragment: string | undefined, columnType: SQLDataType): {
|
|
138
|
+
kind: 'none' | 'now' | 'number' | 'bool' | 'text' | 'func' | 'raw';
|
|
139
|
+
key: string;
|
|
140
|
+
};
|
|
70
141
|
/**
|
|
71
142
|
* SchemaComparer class for comparing manifest schemas to database
|
|
72
143
|
*/
|
|
@@ -85,9 +156,88 @@ export declare class SchemaComparer {
|
|
|
85
156
|
*/
|
|
86
157
|
compareTable(tableName: string, manifest: SchemaDefinition): Promise<SchemaChange[]>;
|
|
87
158
|
/**
|
|
88
|
-
* Compare columns between manifest and database
|
|
159
|
+
* Compare columns between manifest and database.
|
|
160
|
+
*
|
|
161
|
+
* Three families of drift (#2369):
|
|
162
|
+
*
|
|
163
|
+
* 1. **Missing column** — emit `add_column` with an executable plan for the
|
|
164
|
+
* engine (see {@link generateAddColumnChanges}).
|
|
165
|
+
* 2. **Existing column** — type drift (as before), then nullability and
|
|
166
|
+
* default drift (see {@link compareColumnConstraints}).
|
|
167
|
+
* 3. **Orphan column** (in DB, not in manifest) — always reported. With
|
|
168
|
+
* `includeDroppedColumns` it becomes an executable `drop_column`; a
|
|
169
|
+
* NOT NULL orphan without a default is a `warning` advisory because ORM
|
|
170
|
+
* inserts never supply it and will fail (`23502`); with `relaxColumns`
|
|
171
|
+
* that orphan gets an executable `DROP NOT NULL` where the engine allows.
|
|
89
172
|
*/
|
|
90
173
|
private compareColumns;
|
|
174
|
+
/**
|
|
175
|
+
* Compare nullability and default between a manifest column and the live
|
|
176
|
+
* column, emitting `alter_column` changes (#2369).
|
|
177
|
+
*
|
|
178
|
+
* Rules:
|
|
179
|
+
* - Primary-key columns are owned by the PK constraint (SQLite reports a
|
|
180
|
+
* `TEXT PRIMARY KEY` as nullable while PostgreSQL/DuckDB imply NOT NULL),
|
|
181
|
+
* so they are skipped entirely.
|
|
182
|
+
* - Strengthening (`SET NOT NULL`, `SET DEFAULT`) is emitted as executable
|
|
183
|
+
* SQL on engines with `ALTER COLUMN` (PostgreSQL/DuckDB). A `SET NOT NULL`
|
|
184
|
+
* is preceded by a backfill of the manifest default when there is one;
|
|
185
|
+
* without a default the live data is probed and, if NULLs exist, the
|
|
186
|
+
* change is reported as manual with the suggested backfill instead of
|
|
187
|
+
* emitting an ALTER the engine would reject mid-batch.
|
|
188
|
+
* - Relaxing (`DROP NOT NULL`, `DROP DEFAULT`) is reported as an advisory
|
|
189
|
+
* unless `relaxColumns` is set, in which case it is executable.
|
|
190
|
+
* - SQLite has no `ALTER COLUMN`; every alteration is reported as manual
|
|
191
|
+
* (advisory-comment SQL) until the table-rebuild path (#2370) lands.
|
|
192
|
+
* - Defaults are compared through {@link canonicalizeDefault}; when either
|
|
193
|
+
* side cannot be canonicalized the comparison is skipped rather than
|
|
194
|
+
* risking a false positive that would churn every run.
|
|
195
|
+
*/
|
|
196
|
+
private compareColumnConstraints;
|
|
197
|
+
/**
|
|
198
|
+
* Assemble an `alter_column` change.
|
|
199
|
+
*
|
|
200
|
+
* - `statements: null` means the engine cannot alter the column in place
|
|
201
|
+
* (SQLite): the change is reported as manual with advisory-comment SQL.
|
|
202
|
+
* - `relaxation` marks a weakening change: without `relaxColumns` it is
|
|
203
|
+
* emitted as a report-only advisory (no SQL); with it, the statements are
|
|
204
|
+
* executable.
|
|
205
|
+
*/
|
|
206
|
+
private buildAlterColumnChange;
|
|
207
|
+
/**
|
|
208
|
+
* Describe a DB column that has no manifest counterpart. Blocking when it
|
|
209
|
+
* is NOT NULL without a default: ORM inserts never supply it, so every
|
|
210
|
+
* insert fails with a not-null violation while `db:status` would otherwise
|
|
211
|
+
* say the schema is in sync (#2369).
|
|
212
|
+
*/
|
|
213
|
+
private describeOrphanColumn;
|
|
214
|
+
/**
|
|
215
|
+
* Remediation hint for a relaxation advisory. On engines with `ALTER
|
|
216
|
+
* COLUMN` the flag executes it; SQLite cannot relax in place, so the hint
|
|
217
|
+
* says so instead of implying the flag will act (#2370).
|
|
218
|
+
*/
|
|
219
|
+
private relaxHint;
|
|
220
|
+
private describeDbColumn;
|
|
221
|
+
/**
|
|
222
|
+
* Whether the engine can alter nullability/defaults of an existing column
|
|
223
|
+
* in place. SQLite cannot (`ALTER TABLE ... ALTER COLUMN` does not exist);
|
|
224
|
+
* PostgreSQL, DuckDB and the DuckDB-backed JSON adapter can.
|
|
225
|
+
*/
|
|
226
|
+
private supportsAlterColumn;
|
|
227
|
+
private generateSetDefaultSQL;
|
|
228
|
+
/**
|
|
229
|
+
* Live-data probe: does the table hold any row? Used to decide whether an
|
|
230
|
+
* added required column without a default can be enforced NOT NULL right
|
|
231
|
+
* away. Errors (adapter without raw query, etc.) resolve to `true` so the
|
|
232
|
+
* caller takes the conservative path.
|
|
233
|
+
*/
|
|
234
|
+
private tableHasRows;
|
|
235
|
+
/**
|
|
236
|
+
* Live-data probe: does the column hold any NULL? Used before emitting a
|
|
237
|
+
* `SET NOT NULL` that has no default to backfill with. Errors resolve to
|
|
238
|
+
* `true` (conservative: report instead of emitting an ALTER that fails).
|
|
239
|
+
*/
|
|
240
|
+
private columnHasNulls;
|
|
91
241
|
private isUuidTextEquivalentColumn;
|
|
92
242
|
private isStructuralUuidCompatibleColumn;
|
|
93
243
|
/**
|
|
@@ -244,9 +394,40 @@ export declare class SchemaComparer {
|
|
|
244
394
|
private generatePostgresTimestampPreflightSQL;
|
|
245
395
|
private quoteLiteral;
|
|
246
396
|
/**
|
|
247
|
-
*
|
|
397
|
+
* Plan the changes that add a missing column so the emitted DDL is
|
|
398
|
+
* executable on the active engine (#2369).
|
|
399
|
+
*
|
|
400
|
+
* Engines disagree on what `ALTER TABLE ... ADD COLUMN` may carry inline
|
|
401
|
+
* (probed on SQLite 3.4x/3.5x, DuckDB 1.4.x, PostgreSQL 16/17):
|
|
402
|
+
*
|
|
403
|
+
* | clause | SQLite | DuckDB | PostgreSQL |
|
|
404
|
+
* |-----------------|--------------------------------|----------|---------------------|
|
|
405
|
+
* | NOT NULL + DEF | ok | rejected | ok |
|
|
406
|
+
* | NOT NULL, no DEF| ok on empty, rejected populated| rejected | ok empty, rej. pop. |
|
|
407
|
+
* | UNIQUE | rejected | rejected | ok |
|
|
408
|
+
* | DEFAULT | ok | ok | ok |
|
|
409
|
+
* | CHECK | ok | rejected | ok |
|
|
410
|
+
*
|
|
411
|
+
* so the plan is:
|
|
412
|
+
* - `NOT NULL` with a default: inline on SQLite/PostgreSQL (existing rows
|
|
413
|
+
* receive the default); DuckDB adds with `DEFAULT` then a separate
|
|
414
|
+
* `ALTER COLUMN ... SET NOT NULL`.
|
|
415
|
+
* - `NOT NULL` without a default: enforced only when the table is empty
|
|
416
|
+
* (inline on SQLite/PostgreSQL, `SET NOT NULL` step on DuckDB). On a
|
|
417
|
+
* populated table there is nothing to backfill with, so the column is
|
|
418
|
+
* added nullable and a manual `alter_column` (`set_not_null`) is reported
|
|
419
|
+
* with the exact remediation instead of emitting DDL every engine rejects.
|
|
420
|
+
* - `UNIQUE`: inline on PostgreSQL (a real constraint); SQLite/DuckDB get a
|
|
421
|
+
* separate `CREATE UNIQUE INDEX <table>_<col>_key` (the PostgreSQL
|
|
422
|
+
* constraint-index name, so the orphan sweep leaves it alone).
|
|
423
|
+
* - `CHECK`: inline where accepted; DuckDB rejects it in ADD COLUMN, so it
|
|
424
|
+
* is dropped there with a warning (SMRT's generators never emit `check`).
|
|
425
|
+
*
|
|
426
|
+
* The primary `add_column` change carries the whole plan in
|
|
427
|
+
* `sqlStatements` (and the last statement in `sql`) so both the CLI and the
|
|
428
|
+
* orchestrator execute it as one unit.
|
|
248
429
|
*/
|
|
249
|
-
private
|
|
430
|
+
private generateAddColumnChanges;
|
|
250
431
|
/**
|
|
251
432
|
* Generate SQL for dropping a column
|
|
252
433
|
*/
|
|
@@ -262,6 +443,11 @@ export declare class SchemaComparer {
|
|
|
262
443
|
* reject partial indexes — the predicate is dropped so the emitted DDL stays
|
|
263
444
|
* executable (a partial index degrades to a full index there). The predicate
|
|
264
445
|
* is trimmed and a redundant leading `WHERE` stripped for robustness.
|
|
446
|
+
*
|
|
447
|
+
* `IF NOT EXISTS` matches the canonical `generateIndexes()` DDL path and
|
|
448
|
+
* makes a retry after a partially applied batch repair the schema instead of
|
|
449
|
+
* erroring on the indexes that did land (issue #2362). All three engines
|
|
450
|
+
* (SQLite, PostgreSQL, DuckDB) accept the clause.
|
|
265
451
|
*/
|
|
266
452
|
private generateAddIndexSQL;
|
|
267
453
|
/**
|
|
@@ -285,11 +471,19 @@ export declare class SchemaComparer {
|
|
|
285
471
|
*/
|
|
286
472
|
export declare function generateSchemaDiff(db: DatabaseInterface, manifestSchemas: Record<string, SchemaDefinition>, options?: DiffOptions): Promise<SchemaDiff>;
|
|
287
473
|
/**
|
|
288
|
-
* Check if a diff has any actionable changes
|
|
474
|
+
* Check if a diff has any actionable changes — a table to create or drop, or
|
|
475
|
+
* a change with executable DDL. Incompatible type mismatches, report-only
|
|
476
|
+
* advisories (orphan columns/indexes, relaxations the caller has not opted
|
|
477
|
+
* into) and comment-only changes (SQLite in-place limitations, live data
|
|
478
|
+
* blocking a repair) are not actionable; they surface through
|
|
479
|
+
* `unactionableChanges` / the CLI's manual bucket instead.
|
|
289
480
|
*/
|
|
290
481
|
export declare function hasActionableChanges(diff: SchemaDiff): boolean;
|
|
291
482
|
/**
|
|
292
|
-
* Get SQL statements from a diff for execution
|
|
483
|
+
* Get SQL statements from a diff for execution. Advisory-only changes carry
|
|
484
|
+
* no statements and are skipped; comment-only statements (SQLite in-place
|
|
485
|
+
* limitations) pass through unchanged so callers can filter them the way
|
|
486
|
+
* they already do for `type_upgrade`.
|
|
293
487
|
*/
|
|
294
488
|
export declare function getSQLFromDiff(diff: SchemaDiff): string[];
|
|
295
489
|
//# sourceMappingURL=differ.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../src/migrations/differ.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../src/migrations/differ.ts"],"names":[],"mappings":"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"}
|