pipework 0.8.13 → 0.8.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/cli/commands/check.d.ts +1 -0
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +78 -33
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/scope.d.ts +4 -0
- package/dist/cli/commands/scope.d.ts.map +1 -1
- package/dist/cli/commands/scope.js +12 -2
- package/dist/cli/commands/scope.js.map +1 -1
- package/dist/cli/commands/test.d.ts +2 -0
- package/dist/cli/commands/test.d.ts.map +1 -1
- package/dist/cli/commands/test.js +11 -1
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +8 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config/namespace.d.ts +10 -0
- package/dist/core/config/namespace.d.ts.map +1 -1
- package/dist/core/config/schema.d.ts +21 -0
- package/dist/core/config/schema.d.ts.map +1 -1
- package/dist/core/config/schema.js +10 -0
- package/dist/core/config/schema.js.map +1 -1
- package/dist/data/migrate/apply.d.ts +25 -0
- package/dist/data/migrate/apply.d.ts.map +1 -1
- package/dist/data/migrate/apply.js +111 -5
- package/dist/data/migrate/apply.js.map +1 -1
- package/dist/data/migrate/diff.d.ts +3 -0
- package/dist/data/migrate/diff.d.ts.map +1 -1
- package/dist/data/migrate/diff.js +5 -1
- package/dist/data/migrate/diff.js.map +1 -1
- package/dist/data/migrate/generate.d.ts.map +1 -1
- package/dist/data/migrate/generate.js +9 -2
- package/dist/data/migrate/generate.js.map +1 -1
- package/dist/data/migrate/post-process.d.ts +8 -3
- package/dist/data/migrate/post-process.d.ts.map +1 -1
- package/dist/data/migrate/post-process.js +8 -18
- package/dist/data/migrate/post-process.js.map +1 -1
- package/dist/data/migrate/provision-framework.d.ts +14 -0
- package/dist/data/migrate/provision-framework.d.ts.map +1 -0
- package/dist/data/migrate/provision-framework.js +39 -0
- package/dist/data/migrate/provision-framework.js.map +1 -0
- package/dist/data/migrate/sql-emit.d.ts.map +1 -1
- package/dist/data/migrate/sql-emit.js +38 -14
- package/dist/data/migrate/sql-emit.js.map +1 -1
- package/dist/test/setup.d.ts +2 -1
- package/dist/test/setup.d.ts.map +1 -1
- package/dist/test/setup.js +109 -67
- package/dist/test/setup.js.map +1 -1
- package/dist/test/vitest-plugin.d.ts +4 -0
- package/dist/test/vitest-plugin.d.ts.map +1 -1
- package/dist/test/vitest-plugin.js +39 -1
- package/dist/test/vitest-plugin.js.map +1 -1
- package/dist/trace/check/coverage-check.d.ts.map +1 -1
- package/dist/trace/check/coverage-check.js +4 -2
- package/dist/trace/check/coverage-check.js.map +1 -1
- package/dist/trace/check/flow-step-site.d.ts +4 -0
- package/dist/trace/check/flow-step-site.d.ts.map +1 -1
- package/dist/trace/check/flow-step-site.js +13 -0
- package/dist/trace/check/flow-step-site.js.map +1 -1
- package/dist/trace/partition/sync.d.ts.map +1 -1
- package/dist/trace/partition/sync.js +23 -2
- package/dist/trace/partition/sync.js.map +1 -1
- package/dist/trace/partition/tables.d.ts +7 -0
- package/dist/trace/partition/tables.d.ts.map +1 -1
- package/dist/trace/partition/tables.js +7 -0
- package/dist/trace/partition/tables.js.map +1 -1
- package/dist/workspace/affected.d.ts +6 -0
- package/dist/workspace/affected.d.ts.map +1 -1
- package/dist/workspace/affected.js +5 -0
- package/dist/workspace/affected.js.map +1 -1
- package/dist/workspace/changed-files.d.ts +14 -2
- package/dist/workspace/changed-files.d.ts.map +1 -1
- package/dist/workspace/changed-files.js +50 -4
- package/dist/workspace/changed-files.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-process.js","sourceRoot":"","sources":["../../../src/data/migrate/post-process.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,oDAAoD,CAAA;AAC5E,MAAM,eAAe,GAAG,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"post-process.js","sourceRoot":"","sources":["../../../src/data/migrate/post-process.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,oDAAoD,CAAA;AAC5E,MAAM,eAAe,GAAG,mBAAmB,CAAA;AAE3C,MAAM,qBAAqB,GAAG,4BAA4B,CAAA;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACxC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAExC,MAAM,gBAAgB,GAAa,EAAE,CAAA;IACrC,IAAI,eAAe,GAAG,KAAK,CAAA;IAE3B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC1B,SAAQ;QACV,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAC3B,uCAAuC,EACvC,mBAAmB,CACpB,CAAA;YACD,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAChC,eAAe,GAAG,IAAI,CAAA;YACtB,SAAQ;QACV,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,eAAe,GAAG,IAAI,CAAA;QACxB,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,IAAI,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IAE7C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,QAAQ,CAAA;IACpB,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC;YAC/C,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,GAAG,qBAAqB,KAAK,MAAM,EAAE,CAAA;IAC3C,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DB } from '../db/index.js';
|
|
2
|
+
import type { Blueprint } from '../../core/config/schema.js';
|
|
3
|
+
import { type TracePartitionConfig } from '../../trace/partition/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Create the framework-owned partitioned tables and their day partitions on a
|
|
6
|
+
* freshly-migrated database.
|
|
7
|
+
*
|
|
8
|
+
* Trace and audit storage rides the default database only, and only when the
|
|
9
|
+
* blueprint enables `trace` or `audit`. `valve_crossing` is framework-owned but
|
|
10
|
+
* not partitioned — it ships in the application migration like any ordinary
|
|
11
|
+
* table — so it is not provisioned here. Issue #313.
|
|
12
|
+
*/
|
|
13
|
+
export declare function provisionFrameworkTables(db: DB, blueprint: Blueprint, traceConfig: TracePartitionConfig, isDefaultDatabase: boolean): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=provision-framework.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-framework.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAQ/F;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,oBAAoB,EACjC,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Provisions pipework's framework-owned partitioned tables — the trace family.
|
|
2
|
+
// `generate` deliberately keeps them out of application migrations (#313): a
|
|
3
|
+
// bare CREATE TABLE of a PARTITION BY RANGE table accepts no rows. pipework
|
|
4
|
+
// creates them itself — the parent tables, then their day partitions —
|
|
5
|
+
// wherever a database is provisioned (the test harness; see src/test/setup.ts).
|
|
6
|
+
import { sql } from '../db/sql.js';
|
|
7
|
+
import { syncTracePartitions } from '../../trace/partition/index.js';
|
|
8
|
+
import { PARTITIONED_TRACE_TABLE_NAMES } from '../../trace/partition/tables.js';
|
|
9
|
+
import { loadInternalDefinitions } from './internal-definitions.js';
|
|
10
|
+
import { buildSnapshot, EMPTY_SNAPSHOT } from './snapshot.js';
|
|
11
|
+
import { diffSnapshots, diffOpTableName } from './diff.js';
|
|
12
|
+
import { emitSQL } from './sql-emit.js';
|
|
13
|
+
import { makeTablesUnlogged } from './apply.js';
|
|
14
|
+
/**
|
|
15
|
+
* Create the framework-owned partitioned tables and their day partitions on a
|
|
16
|
+
* freshly-migrated database.
|
|
17
|
+
*
|
|
18
|
+
* Trace and audit storage rides the default database only, and only when the
|
|
19
|
+
* blueprint enables `trace` or `audit`. `valve_crossing` is framework-owned but
|
|
20
|
+
* not partitioned — it ships in the application migration like any ordinary
|
|
21
|
+
* table — so it is not provisioned here. Issue #313.
|
|
22
|
+
*/
|
|
23
|
+
export async function provisionFrameworkTables(db, blueprint, traceConfig, isDefaultDatabase) {
|
|
24
|
+
if (!isDefaultDatabase)
|
|
25
|
+
return;
|
|
26
|
+
if (blueprint.trace === undefined && blueprint.audit === undefined)
|
|
27
|
+
return;
|
|
28
|
+
const definitions = await loadInternalDefinitions(blueprint, { isDefaultDatabase });
|
|
29
|
+
const snapshot = buildSnapshot(definitions, EMPTY_SNAPSHOT.id);
|
|
30
|
+
const ops = diffSnapshots(EMPTY_SNAPSHOT, snapshot);
|
|
31
|
+
const partitionedOps = ops.filter(op => PARTITIONED_TRACE_TABLE_NAMES.has(diffOpTableName(op)));
|
|
32
|
+
// The framework tables ride a test database (this runs only from the test
|
|
33
|
+
// harness), so they are created UNLOGGED like every other test table. #325
|
|
34
|
+
for (const statement of emitSQL(partitionedOps)) {
|
|
35
|
+
await db.execute(sql.raw(makeTablesUnlogged(statement)));
|
|
36
|
+
}
|
|
37
|
+
await syncTracePartitions(db, traceConfig);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=provision-framework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-framework.js","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,uEAAuE;AACvE,gFAAgF;AAEhF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,OAAO,EAAE,mBAAmB,EAA6B,MAAM,gCAAgC,CAAA;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAM,EACN,SAAoB,EACpB,WAAiC,EACjC,iBAA0B;IAE1B,IAAI,CAAC,iBAAiB;QAAE,OAAM;IAC9B,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS;QAAE,OAAM;IAE1E,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAA;IACnF,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,CAAA;IAC9D,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;IACnD,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,6BAA6B,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAE/F,0EAA0E;IAC1E,2EAA2E;IAC3E,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,mBAAmB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;AAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-emit.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/sql-emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"sql-emit.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/sql-emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,WAAW,CAAA;AA0BlB,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAsB/C"}
|
|
@@ -7,15 +7,32 @@ function qualifiedTable(schema, name) {
|
|
|
7
7
|
return `${q(schema)}.${q(name)}`;
|
|
8
8
|
}
|
|
9
9
|
export function emitSQL(ops) {
|
|
10
|
-
|
|
10
|
+
// Foreign keys are hoisted to run after every CREATE TABLE. A from-scratch
|
|
11
|
+
// baseline creates many tables in one migration; an FK ALTER emitted next to
|
|
12
|
+
// its own CREATE TABLE fails when it references a table created further down.
|
|
13
|
+
// Collecting every FK statement and appending them keeps all referenced
|
|
14
|
+
// tables in place before any constraint is added. Issue #312.
|
|
15
|
+
const tables = [];
|
|
16
|
+
const foreignKeys = [];
|
|
11
17
|
for (const op of ops) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
if (op.type === 'create_table') {
|
|
19
|
+
tables.push(...emitCreateTable(op.table));
|
|
20
|
+
const partitioned = op.table.partitionBy !== undefined;
|
|
21
|
+
for (const fk of Object.values(op.table.foreignKeys)) {
|
|
22
|
+
foreignKeys.push(...emitAddForeignKey(op.table.name, op.table.schema, fk, partitioned));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else if (op.type === 'add_foreign_key') {
|
|
26
|
+
foreignKeys.push(...emitAddForeignKey(op.tableName, op.tableSchema, op.fk, op.tablePartitioned));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
tables.push(...emitOp(op));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return [...tables, ...foreignKeys];
|
|
15
33
|
}
|
|
16
34
|
function emitOp(op) {
|
|
17
35
|
switch (op.type) {
|
|
18
|
-
case 'create_table': return emitCreateTable(op.table);
|
|
19
36
|
case 'drop_table': return emitDropTable(op.table);
|
|
20
37
|
case 'add_column': return [emitAddColumn(op.tableName, op.tableSchema, op.column)];
|
|
21
38
|
case 'drop_column': return [emitDropColumn(op.tableName, op.tableSchema, op.column.name)];
|
|
@@ -30,7 +47,6 @@ function emitOp(op) {
|
|
|
30
47
|
case 'alter_column_drop_identity': return [emitAlterColumnDropIdentity(op.tableName, op.tableSchema, op.column)];
|
|
31
48
|
case 'create_index': return [emitCreateIndex(op.tableName, op.tableSchema, op.index)];
|
|
32
49
|
case 'drop_index': return [emitDropIndex(op.tableSchema, op.index)];
|
|
33
|
-
case 'add_foreign_key': return [emitAddForeignKey(op.tableName, op.tableSchema, op.fk)];
|
|
34
50
|
case 'drop_foreign_key': return [emitDropForeignKey(op.tableName, op.tableSchema, op.fk.name)];
|
|
35
51
|
case 'add_check': return [emitAddCheck(op.tableName, op.tableSchema, op.check.name, op.check.value)];
|
|
36
52
|
case 'drop_check': return [emitDropConstraint(op.tableName, op.tableSchema, op.check.name)];
|
|
@@ -63,9 +79,8 @@ function emitCreateTable(table) {
|
|
|
63
79
|
for (const idx of Object.values(table.indexes)) {
|
|
64
80
|
statements.push(emitCreateIndex(table.name, table.schema, idx));
|
|
65
81
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
82
|
+
// Foreign keys are not emitted here — `emitSQL` hoists them after every
|
|
83
|
+
// CREATE TABLE so forward references resolve. Issue #312.
|
|
69
84
|
return statements;
|
|
70
85
|
}
|
|
71
86
|
function columnDef(col) {
|
|
@@ -190,19 +205,28 @@ function emitDropIndex(tableSchema, idx) {
|
|
|
190
205
|
return `DROP INDEX ${q(idx.name)}`;
|
|
191
206
|
return `DROP INDEX ${q(tableSchema)}.${q(idx.name)}`;
|
|
192
207
|
}
|
|
193
|
-
function emitAddForeignKey(tableName, tableSchema, fk) {
|
|
208
|
+
function emitAddForeignKey(tableName, tableSchema, fk, tablePartitioned) {
|
|
194
209
|
const tbl = qualifiedTable(tableSchema, tableName);
|
|
195
210
|
const cols = fk.columns.map(q).join(', ');
|
|
196
211
|
const refTbl = qualifiedTable(fk.foreignSchema, fk.foreignTable);
|
|
197
212
|
const refCols = fk.foreignColumns.map(q).join(', ');
|
|
198
213
|
let stmt = `ALTER TABLE ${tbl} ADD CONSTRAINT ${q(fk.name)} FOREIGN KEY (${cols}) REFERENCES ${refTbl}(${refCols})`;
|
|
199
214
|
if (fk.onUpdate !== undefined && fk.onUpdate !== 'no action') {
|
|
200
|
-
stmt += ` ON UPDATE ${fk.onUpdate.toUpperCase()
|
|
215
|
+
stmt += ` ON UPDATE ${fk.onUpdate.toUpperCase()}`;
|
|
201
216
|
}
|
|
202
217
|
if (fk.onDelete !== undefined && fk.onDelete !== 'no action') {
|
|
203
|
-
stmt += ` ON DELETE ${fk.onDelete.toUpperCase()
|
|
204
|
-
}
|
|
205
|
-
|
|
218
|
+
stmt += ` ON DELETE ${fk.onDelete.toUpperCase()}`;
|
|
219
|
+
}
|
|
220
|
+
// A partitioned table rejects NOT VALID foreign keys — Postgres requires the
|
|
221
|
+
// constraint be created already valid. For an ordinary table, ADD ... NOT
|
|
222
|
+
// VALID paired with VALIDATE CONSTRAINT keeps neither statement holding a
|
|
223
|
+
// lock while it scans a populated table. Issue #312.
|
|
224
|
+
if (tablePartitioned)
|
|
225
|
+
return [stmt];
|
|
226
|
+
return [
|
|
227
|
+
`${stmt} NOT VALID`,
|
|
228
|
+
`ALTER TABLE ${tbl} VALIDATE CONSTRAINT ${q(fk.name)}`,
|
|
229
|
+
];
|
|
206
230
|
}
|
|
207
231
|
function emitDropForeignKey(tableName, tableSchema, fkName) {
|
|
208
232
|
return `ALTER TABLE ${qualifiedTable(tableSchema, tableName)} DROP CONSTRAINT ${q(fkName)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-emit.js","sourceRoot":"","sources":["../../../src/data/migrate/sql-emit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sql-emit.js","sourceRoot":"","sources":["../../../src/data/migrate/sql-emit.ts"],"names":[],"mappings":"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"}
|
package/dist/test/setup.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ export interface TestDatabase {
|
|
|
4
4
|
url: string;
|
|
5
5
|
appUrl: string;
|
|
6
6
|
appRole: string;
|
|
7
|
-
|
|
7
|
+
/** The per-file database that gets dropped on teardown. */
|
|
8
|
+
database: string;
|
|
8
9
|
}
|
|
9
10
|
export declare function setupTestDatabases(instance: Manifold): Promise<Map<string, TestDatabase>>;
|
|
10
11
|
export declare function teardownTestDatabases(): Promise<void>;
|
package/dist/test/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAOnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAwCD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAc/F;AAgKD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE;AAED,wBAAgB,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAEpE"}
|
package/dist/test/setup.js
CHANGED
|
@@ -4,8 +4,10 @@ import { drizzle } from '../data/query/postgres-js/index.js';
|
|
|
4
4
|
import { sql } from '../data/query/index.js';
|
|
5
5
|
import { quoteIdentifier } from '../data/db/identifiers.js';
|
|
6
6
|
import { applyMigrations } from '../data/migrate/apply.js';
|
|
7
|
+
import { provisionFrameworkTables } from '../data/migrate/provision-framework.js';
|
|
7
8
|
import { getAdminUrl, reapOrphanTestDatabases, runLockKey } from './reap.js';
|
|
8
9
|
const testDatabases = new Map();
|
|
10
|
+
const templates = new Map();
|
|
9
11
|
let adminClient = null;
|
|
10
12
|
// A random per-process fingerprint, embedded in every database and role name
|
|
11
13
|
// this run creates. It keys the advisory lock the run holds for its lifetime,
|
|
@@ -13,11 +15,18 @@ let adminClient = null;
|
|
|
13
15
|
const runNonce = randomBytes(6).toString('hex');
|
|
14
16
|
let lockClient = null;
|
|
15
17
|
let reaped = false;
|
|
18
|
+
function templateDbName(baseName) {
|
|
19
|
+
return `pipework_test_${baseName}_tmpl_${process.pid}_${runNonce}`;
|
|
20
|
+
}
|
|
16
21
|
function testDbName(baseName) {
|
|
17
22
|
return `pipework_test_${baseName}_${process.pid}_${runNonce}`;
|
|
18
23
|
}
|
|
24
|
+
// The app role is named to match what the orphan reaper derives from the
|
|
25
|
+
// *template* database name (`reap.ts` `pairedRoleName`): the template outlives
|
|
26
|
+
// every per-file clone, so when the reaper drops a leaked template it drops
|
|
27
|
+
// this role with it. Without the `_tmpl_` segment the role would leak forever.
|
|
19
28
|
function appRoleName(baseName) {
|
|
20
|
-
return `pipework_app_${baseName}
|
|
29
|
+
return `pipework_app_${baseName}_tmpl_${process.pid}_${runNonce}`;
|
|
21
30
|
}
|
|
22
31
|
export async function setupTestDatabases(instance) {
|
|
23
32
|
const databases = [...instance.config.databases()];
|
|
@@ -26,16 +35,19 @@ export async function setupTestDatabases(instance) {
|
|
|
26
35
|
await prepareRun(getAdminUrl(firstDb[1].url));
|
|
27
36
|
}
|
|
28
37
|
for (const [name, dbConfig] of databases) {
|
|
29
|
-
const
|
|
38
|
+
const template = await ensureTemplate(instance, name, dbConfig);
|
|
39
|
+
const testDb = await cloneTestDatabase(name, dbConfig, template);
|
|
30
40
|
testDatabases.set(name, testDb);
|
|
31
41
|
}
|
|
32
42
|
return testDatabases;
|
|
33
43
|
}
|
|
34
44
|
// Acquire this run's advisory lock and reap orphans before provisioning. The
|
|
35
45
|
// lock is taken before the first CREATE DATABASE so a concurrent run's reaper
|
|
36
|
-
// can never mistake this run's freshly-created, backend-less databases
|
|
37
|
-
// orphans. It is held on a dedicated
|
|
38
|
-
// so Postgres releases it only when
|
|
46
|
+
// can never mistake this run's freshly-created, backend-less databases — the
|
|
47
|
+
// per-process template included — for orphans. It is held on a dedicated
|
|
48
|
+
// connection (idle/lifetime timeouts off) so Postgres releases it only when
|
|
49
|
+
// this process dies, and is never unlocked per file: the template outlives
|
|
50
|
+
// every file's database, so the lock that protects it must outlive them too.
|
|
39
51
|
async function prepareRun(adminUrl) {
|
|
40
52
|
if (adminClient === null) {
|
|
41
53
|
adminClient = postgres(adminUrl, { max: 1, onnotice: () => { } });
|
|
@@ -54,99 +66,129 @@ async function prepareRun(adminUrl) {
|
|
|
54
66
|
}
|
|
55
67
|
}
|
|
56
68
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
69
|
+
// Build the per-process template for one database, once. Subsequent test files
|
|
70
|
+
// hit the cache and skip straight to cloning. Issue #321.
|
|
71
|
+
async function ensureTemplate(instance, name, dbConfig) {
|
|
72
|
+
const cached = templates.get(name);
|
|
73
|
+
if (cached !== undefined)
|
|
74
|
+
return cached;
|
|
75
|
+
const templateDb = templateDbName(name);
|
|
76
|
+
const templateIdent = quoteIdentifier(templateDb, 'database');
|
|
64
77
|
const admin = drizzle(adminClient);
|
|
65
|
-
await admin.execute(sql.raw(`DROP DATABASE IF EXISTS ${
|
|
66
|
-
await admin.execute(sql.raw(`CREATE DATABASE ${
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const
|
|
78
|
+
await admin.execute(sql.raw(`DROP DATABASE IF EXISTS ${templateIdent}`));
|
|
79
|
+
await admin.execute(sql.raw(`CREATE DATABASE ${templateIdent}`));
|
|
80
|
+
// #325: a test database is dropped or rolled back — durable commits are pure
|
|
81
|
+
// overhead. `synchronous_commit` is a per-database setting and does not copy
|
|
82
|
+
// with `WITH TEMPLATE`, so it is set on the template and on every clone.
|
|
83
|
+
await admin.execute(sql.raw(`ALTER DATABASE ${templateIdent} SET synchronous_commit = off`));
|
|
84
|
+
const templateUrl = new URL(dbConfig.url);
|
|
85
|
+
templateUrl.pathname = `/${templateDb}`;
|
|
86
|
+
const templateUrlStr = templateUrl.toString();
|
|
87
|
+
const templateClient = postgres(templateUrlStr, { max: 1, onnotice: () => { } });
|
|
88
|
+
const templateDbHandle = drizzle(templateClient);
|
|
72
89
|
if (dbConfig.extensions.length > 0) {
|
|
73
90
|
for (const ext of dbConfig.extensions) {
|
|
74
|
-
await
|
|
91
|
+
await templateDbHandle.execute(sql.raw(`CREATE EXTENSION IF NOT EXISTS ${quoteIdentifier(ext, 'extension')}`));
|
|
75
92
|
}
|
|
76
93
|
}
|
|
77
94
|
if (dbConfig.migrations !== undefined) {
|
|
78
95
|
await applyMigrations({
|
|
79
96
|
migrationsFolder: dbConfig.migrations,
|
|
80
97
|
migrationsTable: dbConfig.migrationTable,
|
|
81
|
-
connectionUrl:
|
|
98
|
+
connectionUrl: templateUrlStr,
|
|
82
99
|
stripConcurrently: true,
|
|
100
|
+
unloggedTables: true,
|
|
83
101
|
});
|
|
84
102
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
103
|
+
// Framework-owned partitioned tables (trace family) are kept out of app
|
|
104
|
+
// migrations (#313) — pipework creates them and their day partitions here so
|
|
105
|
+
// a traced test never hits a missing relation or a missing partition.
|
|
106
|
+
await provisionFrameworkTables(templateDbHandle, instance.config.raw, {
|
|
107
|
+
hotRetentionDays: instance.config.trace.hotRetentionDays,
|
|
108
|
+
errorRetentionDays: instance.config.trace.errorRetentionDays,
|
|
109
|
+
auditRetentionDays: instance.config.audit.retentionDays,
|
|
110
|
+
partitionLeadDays: instance.config.trace.partitionLeadDays,
|
|
111
|
+
}, name === instance.config.defaultDatabaseName());
|
|
112
|
+
await templateClient.end();
|
|
113
|
+
const appRole = appRoleName(name);
|
|
114
|
+
await provisionTemplateRole(adminClient, templateUrlStr, appRole);
|
|
115
|
+
const template = { templateDb, appRole };
|
|
116
|
+
templates.set(name, template);
|
|
117
|
+
return template;
|
|
118
|
+
}
|
|
119
|
+
// Clone one test file's database from the per-process template. A clone copies
|
|
120
|
+
// the template's tables, partitions, and in-database grants; only the cluster
|
|
121
|
+
// catalog's CONNECT privilege has to be re-granted on the new database. Issue #321.
|
|
122
|
+
async function cloneTestDatabase(name, dbConfig, template) {
|
|
123
|
+
const dbName = testDbName(name);
|
|
124
|
+
const dbIdent = quoteIdentifier(dbName, 'database');
|
|
125
|
+
const templateIdent = quoteIdentifier(template.templateDb, 'database');
|
|
126
|
+
const roleIdent = quoteIdentifier(template.appRole, 'role');
|
|
127
|
+
const admin = drizzle(adminClient);
|
|
128
|
+
await admin.execute(sql.raw(`DROP DATABASE IF EXISTS ${dbIdent}`));
|
|
129
|
+
// CREATE ... WITH TEMPLATE refuses to run while any backend is connected to
|
|
130
|
+
// the template; close out stragglers (e.g. a connection still draining).
|
|
131
|
+
await admin.execute(sql `SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = ${template.templateDb} AND pid != pg_backend_pid()`);
|
|
132
|
+
await admin.execute(sql.raw(`CREATE DATABASE ${dbIdent} WITH TEMPLATE ${templateIdent}`));
|
|
133
|
+
await admin.execute(sql.raw(`ALTER DATABASE ${dbIdent} SET synchronous_commit = off`));
|
|
134
|
+
await admin.execute(sql.raw(`GRANT CONNECT ON DATABASE ${dbIdent} TO ${roleIdent}`));
|
|
135
|
+
const testUrl = new URL(dbConfig.url);
|
|
136
|
+
testUrl.pathname = `/${dbName}`;
|
|
137
|
+
const appUrl = new URL(testUrl.toString());
|
|
138
|
+
appUrl.username = template.appRole;
|
|
139
|
+
appUrl.password = 'pipework_test';
|
|
140
|
+
return {
|
|
141
|
+
name,
|
|
142
|
+
url: testUrl.toString(),
|
|
143
|
+
appUrl: appUrl.toString(),
|
|
144
|
+
appRole: template.appRole,
|
|
145
|
+
database: dbName,
|
|
146
|
+
};
|
|
89
147
|
}
|
|
90
|
-
|
|
148
|
+
// Create the app role (cluster-global, once per process) and grant it on the
|
|
149
|
+
// template's tables, sequences, schema, and future objects. Those grants are
|
|
150
|
+
// in-database catalog rows, so every clone of the template inherits them — the
|
|
151
|
+
// role keeps a stable OID for the process lifetime, so the inherited ACL
|
|
152
|
+
// entries stay valid. Issue #321.
|
|
153
|
+
async function provisionTemplateRole(client, templateUrl, roleName) {
|
|
91
154
|
const admin = drizzle(client);
|
|
92
155
|
const roleIdent = quoteIdentifier(roleName, 'role');
|
|
93
|
-
const dbIdent = quoteIdentifier(dbName, 'database');
|
|
94
156
|
await admin.execute(sql.raw(`DO $$ BEGIN ` +
|
|
95
157
|
`IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${roleName}') THEN ` +
|
|
96
158
|
`CREATE ROLE ${roleIdent} WITH LOGIN PASSWORD 'pipework_test' NOSUPERUSER NOCREATEDB NOCREATEROLE; ` +
|
|
97
159
|
`END IF; ` +
|
|
98
160
|
`END $$`));
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
await
|
|
103
|
-
await
|
|
104
|
-
await
|
|
105
|
-
await
|
|
106
|
-
await
|
|
107
|
-
await testClient.end();
|
|
108
|
-
const appUrl = new URL(testUrl);
|
|
109
|
-
appUrl.username = roleName;
|
|
110
|
-
appUrl.password = 'pipework_test';
|
|
111
|
-
return appUrl.toString();
|
|
161
|
+
const templateClient = postgres(templateUrl, { max: 1, onnotice: () => { } });
|
|
162
|
+
const templateDb = drizzle(templateClient);
|
|
163
|
+
await templateDb.execute(sql.raw(`GRANT USAGE ON SCHEMA public TO ${roleIdent}`));
|
|
164
|
+
await templateDb.execute(sql.raw(`GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO ${roleIdent}`));
|
|
165
|
+
await templateDb.execute(sql.raw(`GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO ${roleIdent}`));
|
|
166
|
+
await templateDb.execute(sql.raw(`ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ${roleIdent}`));
|
|
167
|
+
await templateDb.execute(sql.raw(`ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO ${roleIdent}`));
|
|
168
|
+
await templateClient.end();
|
|
112
169
|
}
|
|
170
|
+
// Drop the per-file clones. The per-process template, app roles, advisory lock,
|
|
171
|
+
// and admin connection deliberately outlive a single file — the template is
|
|
172
|
+
// reused by every following file, and the lock guarding it must stay held.
|
|
173
|
+
// They are released when the process exits; a run that never gets there leaves
|
|
174
|
+
// orphans for the next run's reaper. Issue #321.
|
|
113
175
|
export async function teardownTestDatabases() {
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
await lockClient `SELECT pg_advisory_unlock(${runLockKey(runNonce).toString()}::bigint)`;
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
// Connection already gone — Postgres released the lock when it died.
|
|
120
|
-
}
|
|
121
|
-
await lockClient.end();
|
|
122
|
-
lockClient = null;
|
|
123
|
-
}
|
|
124
|
-
if (!adminClient)
|
|
176
|
+
if (adminClient === null) {
|
|
177
|
+
testDatabases.clear();
|
|
125
178
|
return;
|
|
179
|
+
}
|
|
126
180
|
const admin = drizzle(adminClient);
|
|
127
|
-
const rolesToDrop = [];
|
|
128
181
|
for (const [, testDb] of testDatabases) {
|
|
129
182
|
try {
|
|
130
|
-
const
|
|
131
|
-
await admin.execute(sql `SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = ${testDb.
|
|
132
|
-
await admin.execute(sql.raw(`DROP DATABASE IF EXISTS ${
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// Best effort cleanup
|
|
136
|
-
}
|
|
137
|
-
rolesToDrop.push(testDb.appRole);
|
|
138
|
-
}
|
|
139
|
-
for (const roleName of rolesToDrop) {
|
|
140
|
-
try {
|
|
141
|
-
await admin.execute(sql.raw(`DROP ROLE IF EXISTS ${quoteIdentifier(roleName, 'role')}`));
|
|
183
|
+
const dbIdent = quoteIdentifier(testDb.database, 'database');
|
|
184
|
+
await admin.execute(sql `SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = ${testDb.database} AND pid != pg_backend_pid()`);
|
|
185
|
+
await admin.execute(sql.raw(`DROP DATABASE IF EXISTS ${dbIdent}`));
|
|
142
186
|
}
|
|
143
187
|
catch {
|
|
144
|
-
// Best effort cleanup
|
|
188
|
+
// Best effort cleanup — a leftover clone is reaped by the next run.
|
|
145
189
|
}
|
|
146
190
|
}
|
|
147
191
|
testDatabases.clear();
|
|
148
|
-
await adminClient.end();
|
|
149
|
-
adminClient = null;
|
|
150
192
|
}
|
|
151
193
|
export function getTestDatabase(name) {
|
|
152
194
|
return testDatabases.get(name);
|
package/dist/test/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,10 @@ export interface PipeworkVitestOptions {
|
|
|
18
18
|
* one of its export subpaths) resolves through the package's `exports` field
|
|
19
19
|
* to `dist/`, which is not built during `pipework test`. This routes those
|
|
20
20
|
* specifiers to `src/` instead. Issue #301.
|
|
21
|
+
*
|
|
22
|
+
* A wildcard export subpath contributes a single `*` entry — key and value
|
|
23
|
+
* both contain one `*` (e.g. `@scope/pkg/events/*` → `<abs>/pkg/src/events/*.ts`).
|
|
24
|
+
* The resolver substitutes the matched segment into the value. Issue #311.
|
|
21
25
|
*/
|
|
22
26
|
workspacePackages?: Record<string, string>;
|
|
23
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest-plugin.d.ts","sourceRoot":"","sources":["../../src/test/vitest-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iLAAiL;IACjL,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB
|
|
1
|
+
{"version":3,"file":"vitest-plugin.d.ts","sourceRoot":"","sources":["../../src/test/vitest-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iLAAiL;IACjL,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC3C;AAwCD,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAkDhE"}
|