pipework 0.27.1 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.29.0
4
+
5
+ - **New: `closeSetupConnections()` lets a consumer close the harness's setup connections before their own `afterAll` looks at the database.** The connections `useSetupDb()` opens are closed by `setupPipeworkTests`' own `afterAll`, and under vitest's `sequence.hooks: 'stack'` that hook runs *after* every setupFile `afterAll` — so a teardown-time observer sampling `pg_stat_activity` to name leaked backends saw every setup connection still open and could not tell them from a real leak. The internal `_closeSetupConnections` was not reachable through the `pipework/test` entry, leaving copying `useSetupDb` app-side purely to win the hook order as the only way out. `closeSetupConnections()` is now exported from `pipework/test`: close first, then sample, and what remains is a true survivor set. It is idempotent, a connection that throws on close is still tolerated, and calling it early does not disturb the harness's own teardown — the pool still closes and the databases still drop afterwards. A later `useSetupDb()` opens a fresh connection. Hook order is unchanged for everyone else.
6
+
7
+ ## 0.28.0
8
+
9
+ - **Fix: a queue column of the wrong type or nullability is caught at startup, not by a fence that silently never matches.** 0.27.0 made the queue check compare column names, so a table missing `claim_token` fails loudly. A column can still be present under the right name and be the wrong column: `ALTER COLUMN ... SET DATA TYPE` and `DROP NOT NULL` are migration steps a consumer can skip exactly as they can skip an `ADD COLUMN`, and the result is quieter than a missing column — `claim_token` as `text` compares wrong against a `uuid` rather than erroring, so a fence built on it never matches and nothing says why. The check now compares each required column's type and nullability too, and reports a drifted column the way it reports a missing one: which table, which database, which column, what the definition requires, what the database has, and the generate-then-migrate cure. What counts as compatible is deliberate. Type is canonical identity rather than spelling — the definition's declared type is resolved through Postgres's own `to_regtype` and the OID compared, so `timestamptz` and `timestamp with time zone` agree without a hand-maintained alias table. Length and precision are ignored: `varchar(64)` against `varchar(128)` is not drift, because a check that reports false drift on a healthy table gets switched off. Nullability is reported in one direction only — nullable where the definition requires NOT NULL breaks a promise the definition makes; stricter than the definition asks cannot, and may be deliberate. Defaults are not compared. Still two queries whatever the number of queues, and still read from `pg_attribute`, so an unprivileged role is not told to migrate when the cure is a GRANT. Note this is newly blocking on upgrade: a consumer whose queue table has drifted starts on 0.27.x and gets a startup refusal on 0.28.0 — that is the point of the check, and the cure it names is `pipework generate` then `pipework migrate`.
10
+
3
11
  ## 0.27.1
4
12
 
5
13
  - **The missing-test-URL refusal says where to set the variable.** Configuring a database in test mode without its test URL threw `Missing test database URL: environment variable "X" is not set` with the hint `Set X in your .env file or environment` — wrong on both counts, since `.env` is the last file the loader reads and the wrong tier for a test URL. The hint now names `.env.test`, with `.env.test.local` for a machine-local value — the tiers the loader actually reads first.
@@ -1,20 +1,33 @@
1
1
  import type { ValidationIssue } from './types.js';
2
2
  import type { ResolvedDatabase } from '../config/load.js';
3
- /** A registered queue table that is absent, or present with columns missing. */
3
+ /** A required column whose type or nullability in the database contradicts the definition. */
4
+ export interface QueueColumnDrift {
5
+ readonly column: string;
6
+ /** Present when the type differs; the definition's spelling and the database's. */
7
+ readonly requiredType?: string;
8
+ readonly foundType?: string;
9
+ /** True when the definition requires NOT NULL and the column is nullable. */
10
+ readonly nullableButRequired?: boolean;
11
+ }
12
+ /** A registered queue table that is absent, or present with columns missing or drifted. */
4
13
  export interface QueueTableProblem {
5
14
  readonly table: string;
6
15
  /** Empty when the table itself is absent. */
7
16
  readonly missingColumns: readonly string[];
17
+ /** Omitted entirely when no present column has drifted. */
18
+ readonly driftedColumns?: readonly QueueColumnDrift[];
8
19
  }
9
20
  export declare function queueTableMessage(table: string, database: string): string;
10
21
  export declare function queueColumnsMessage(table: string, database: string, missing: readonly string[]): string;
11
- /** The message for one problem, whichever kind it is. */
22
+ export declare function queueColumnDriftMessage(table: string, database: string, drifted: readonly QueueColumnDrift[]): string;
23
+ /** The message for one problem, whichever kinds it carries. */
12
24
  export declare function queueTableProblemMessage(problem: QueueTableProblem, database: string): string;
13
25
  /**
14
26
  * Registered queue tables that are absent from the database at `url`, or
15
- * present without every column their definition requires. Opens a short-lived
16
- * probe connection, mirroring validateConnectivity. Two queries total,
17
- * whatever the number of queues.
27
+ * present without every column their definition requires, or present with a
28
+ * required column whose type or nullability contradicts the definition.
29
+ * Opens a short-lived probe connection, mirroring validateConnectivity. Two
30
+ * queries total, whatever the number of queues.
18
31
  */
19
32
  export declare function queueTableProblems(url: string, timeoutMs?: number): Promise<QueueTableProblem[]>;
20
33
  /** Startup-validation leg: every registered queue's table must exist, in shape, in the default database (where queue migrations are emitted). */
@@ -1 +1 @@
1
- {"version":3,"file":"queue-tables.d.ts","sourceRoot":"","sources":["../../../src/core/validation/queue-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAgBzD,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CASvG;AAED,yDAAyD;AACzD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI7F;AAYD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAwDpG;AAED,iJAAiJ;AACjJ,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,gBAAgB,EAC3B,SAAS,SAAO,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CAY5B"}
1
+ {"version":3,"file":"queue-tables.d.ts","sourceRoot":"","sources":["../../../src/core/validation/queue-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAuBzD,8FAA8F;AAC9F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,mFAAmF;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CACvC;AAED,2FAA2F;AAC3F,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;CACtD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CASvG;AAaD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,gBAAgB,EAAE,GACnC,MAAM,CASR;AAED,+DAA+D;AAC/D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY7F;AAsED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiGpG;AAED,iJAAiJ;AACjJ,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,gBAAgB,EAC3B,SAAS,SAAO,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CAY5B"}
@@ -14,26 +14,93 @@ export function queueColumnsMessage(table, database, missing) {
14
14
  `regenerated or applied. Run \`pipework generate\`, then \`pipework migrate\`. ` +
15
15
  `(Extra columns of your own are fine; only missing ones are reported.)`);
16
16
  }
17
- /** The message for one problem, whichever kind it is. */
17
+ function driftClause(drift) {
18
+ const parts = [];
19
+ if (drift.requiredType !== undefined && drift.foundType !== undefined) {
20
+ parts.push(`requires ${drift.requiredType} but the database has ${drift.foundType}`);
21
+ }
22
+ if (drift.nullableButRequired === true) {
23
+ parts.push('requires NOT NULL but the database allows nulls');
24
+ }
25
+ return `"${drift.column}" ${parts.join(', and ')}`;
26
+ }
27
+ export function queueColumnDriftMessage(table, database, drifted) {
28
+ const plural = drifted.length === 1 ? 'column' : 'columns';
29
+ return (`queue table "${table}" in database "${database}" has ${plural} the queue definition disagrees with: ` +
30
+ `${drifted.map(driftClause).join('; ')}. The table predates the current definition — the migration ` +
31
+ `that alters ${drifted.length === 1 ? 'it' : 'them'} has not been regenerated or applied. ` +
32
+ `Run \`pipework generate\`, then \`pipework migrate\`. ` +
33
+ `(Length and precision are not compared, and a column stricter than the definition asks is fine.)`);
34
+ }
35
+ /** The message for one problem, whichever kinds it carries. */
18
36
  export function queueTableProblemMessage(problem, database) {
19
- return problem.missingColumns.length === 0
20
- ? queueTableMessage(problem.table, database)
21
- : queueColumnsMessage(problem.table, database, problem.missingColumns);
37
+ if (problem.missingColumns.length === 0 && (problem.driftedColumns ?? []).length === 0) {
38
+ return queueTableMessage(problem.table, database);
39
+ }
40
+ const parts = [];
41
+ if (problem.missingColumns.length > 0) {
42
+ parts.push(queueColumnsMessage(problem.table, database, problem.missingColumns));
43
+ }
44
+ if (problem.driftedColumns !== undefined && problem.driftedColumns.length > 0) {
45
+ parts.push(queueColumnDriftMessage(problem.table, database, problem.driftedColumns));
46
+ }
47
+ return parts.join(' ');
22
48
  }
23
- /** DB column names the definition requires — read off the table it builds, never a second list. */
49
+ /** Columns the definition requires — read off the table it builds, never a second list. */
24
50
  function requiredColumns() {
25
51
  const required = new Map();
26
52
  for (const [table, definition] of queueDefinitions()) {
27
- const names = Object.values(getTableColumns(definition.table())).map(c => c.name);
28
- required.set(table, new Set(names));
53
+ const columns = Object.values(getTableColumns(definition.table())).map(c => ({
54
+ name: c.name,
55
+ sqlType: c.getSQLType(),
56
+ notNull: c.notNull,
57
+ }));
58
+ required.set(table, columns);
29
59
  }
30
60
  return required;
31
61
  }
62
+ /**
63
+ * What counts as compatible, and why:
64
+ *
65
+ * - Type is compared as canonical type identity, not spelling: the
66
+ * definition's declared type is resolved through Postgres's own
67
+ * `to_regtype` and the resulting OID compared against the column's
68
+ * `atttypid`. `timestamptz` and `timestamp with time zone` are then the
69
+ * same thing without a hand-maintained alias table that can rot. A type
70
+ * Postgres cannot resolve (to_regtype returns NULL — an enum or domain the
71
+ * database has not got) is not reported as drift: the missing type would
72
+ * have shown up as a missing table or column, and guessing here would
73
+ * report false drift. Note the arm swallows a pseudo-type too: `serial` is
74
+ * not a type Postgres resolves, so a column ever declared that way would be
75
+ * skipped silently, with no missing column to reveal it.
76
+ * - Type modifiers (length, precision) are ignored. varchar(64) vs
77
+ * varchar(128) is not reported: comparing typmod invites false drift on
78
+ * healthy tables, and a check that cries wolf gets switched off, which
79
+ * leaves things worse than not checking at all.
80
+ * - Nullability is reported in one direction only. A column the definition
81
+ * requires NOT NULL that is nullable in the database breaks a promise the
82
+ * definition makes, so it is reported. Stricter in the database than the
83
+ * definition asks cannot violate anything the definition promises, and a
84
+ * consumer may have tightened it deliberately, so it is not.
85
+ * - Defaults are not compared at all (out of scope for 0.28.0).
86
+ */
87
+ function columnDrift(required, actual, expectedOid) {
88
+ const typeDiffers = expectedOid !== undefined && expectedOid !== actual.typeOid;
89
+ const nullableButRequired = required.notNull && !actual.notNull;
90
+ if (!typeDiffers && !nullableButRequired)
91
+ return undefined;
92
+ return {
93
+ column: required.name,
94
+ ...(typeDiffers ? { requiredType: required.sqlType, foundType: actual.typeName } : {}),
95
+ ...(nullableButRequired ? { nullableButRequired: true } : {}),
96
+ };
97
+ }
32
98
  /**
33
99
  * Registered queue tables that are absent from the database at `url`, or
34
- * present without every column their definition requires. Opens a short-lived
35
- * probe connection, mirroring validateConnectivity. Two queries total,
36
- * whatever the number of queues.
100
+ * present without every column their definition requires, or present with a
101
+ * required column whose type or nullability contradicts the definition.
102
+ * Opens a short-lived probe connection, mirroring validateConnectivity. Two
103
+ * queries total, whatever the number of queues.
37
104
  */
38
105
  export async function queueTableProblems(url, timeoutMs = 5000) {
39
106
  const required = requiredColumns();
@@ -54,27 +121,51 @@ export async function queueTableProblems(url, timeoutMs = 5000) {
54
121
  `;
55
122
  const present = new Set(presence.filter(r => r.present).map(r => r.name));
56
123
  const actual = new Map();
124
+ const expectedOids = new Map();
125
+ const typeNames = [...new Set([...present].flatMap(t => (required.get(t) ?? []).map(c => c.sqlType)))];
57
126
  if (present.size > 0) {
58
127
  // pg_attribute, not information_schema.columns: that view is filtered to
59
128
  // columns the current role holds a privilege on, so a role with CONNECT
60
129
  // and USAGE but no table grants would read zero columns and be told to
61
130
  // migrate when the cure is a GRANT. attnum > 0 AND NOT attisdropped
62
- // excludes system and dropped columns.
63
- const rows = await sql `
64
- SELECT c.relname AS table_name, a.attname AS column_name
65
- FROM pg_attribute a
66
- JOIN pg_class c ON c.oid = a.attrelid
67
- JOIN pg_namespace n ON n.oid = c.relnamespace
68
- WHERE n.nspname = 'public' AND c.relname = ANY(${[...present]}::text[])
69
- AND a.attnum > 0 AND NOT a.attisdropped
131
+ // excludes system and dropped columns. The definition's declared types
132
+ // are canonicalised by the same round trip (to_regtype), so this stays
133
+ // two queries whatever the number of queues; format_type without a
134
+ // typmod prints the found type the way the definition spells it.
135
+ const [row] = await sql `
136
+ SELECT
137
+ (
138
+ SELECT coalesce(json_agg(json_build_object(
139
+ 'table_name', c.relname, 'column_name', a.attname,
140
+ 'type_oid', a.atttypid::int, 'not_null', a.attnotnull,
141
+ 'type_name', format_type(a.atttypid, NULL)
142
+ )), '[]'::json)
143
+ FROM pg_attribute a
144
+ JOIN pg_class c ON c.oid = a.attrelid
145
+ JOIN pg_namespace n ON n.oid = c.relnamespace
146
+ WHERE n.nspname = 'public' AND c.relname = ANY(${[...present]}::text[])
147
+ AND a.attnum > 0 AND NOT a.attisdropped
148
+ ) AS columns,
149
+ (
150
+ SELECT coalesce(json_agg(json_build_object('name', t, 'oid', to_regtype(t)::oid::int)), '[]'::json)
151
+ FROM unnest(${typeNames}::text[]) AS t
152
+ ) AS types
70
153
  `;
71
- for (const row of rows) {
72
- let set = actual.get(row.table_name);
73
- if (set === undefined) {
74
- set = new Set();
75
- actual.set(row.table_name, set);
154
+ for (const column of row?.columns ?? []) {
155
+ let columns = actual.get(column.table_name);
156
+ if (columns === undefined) {
157
+ columns = new Map();
158
+ actual.set(column.table_name, columns);
76
159
  }
77
- set.add(row.column_name);
160
+ columns.set(column.column_name, {
161
+ typeOid: column.type_oid,
162
+ typeName: column.type_name,
163
+ notNull: column.not_null,
164
+ });
165
+ }
166
+ for (const type of row?.types ?? []) {
167
+ if (type.oid !== null && type.oid !== 0)
168
+ expectedOids.set(type.name, type.oid);
78
169
  }
79
170
  }
80
171
  const problems = [];
@@ -83,10 +174,26 @@ export async function queueTableProblems(url, timeoutMs = 5000) {
83
174
  problems.push({ table, missingColumns: [] });
84
175
  continue;
85
176
  }
86
- const have = actual.get(table) ?? new Set();
87
- const missing = [...(required.get(table) ?? new Set())].filter(c => !have.has(c));
88
- if (missing.length > 0)
89
- problems.push({ table, missingColumns: missing });
177
+ const have = actual.get(table) ?? new Map();
178
+ const missing = [];
179
+ const drifted = [];
180
+ for (const column of required.get(table) ?? []) {
181
+ const found = have.get(column.name);
182
+ if (found === undefined) {
183
+ missing.push(column.name);
184
+ continue;
185
+ }
186
+ // The unprivileged-role case: pg_attribute is readable by anyone, so a
187
+ // present column always carries its real type here.
188
+ const drift = columnDrift(column, found, expectedOids.get(column.sqlType));
189
+ if (drift !== undefined)
190
+ drifted.push(drift);
191
+ }
192
+ if (missing.length > 0 || drifted.length > 0) {
193
+ problems.push(drifted.length > 0
194
+ ? { table, missingColumns: missing, driftedColumns: drifted }
195
+ : { table, missingColumns: missing });
196
+ }
90
197
  }
91
198
  return problems;
92
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"queue-tables.js","sourceRoot":"","sources":["../../../src/core/validation/queue-tables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue-tables.js","sourceRoot":"","sources":["../../../src/core/validation/queue-tables.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { loadEnvFiles } from '../core/config/env.js';
3
3
  import { discoverForTestFork } from './discover-fork.js';
4
4
  import { setupTestDatabases, teardownTestDatabases } from './setup.js';
5
5
  import { beginTestIsolation, endTestIsolation } from './plugin.js';
6
- import { _setTestState, _closeSetupConnections, useTestDb } from './vitest.js';
6
+ import { _setTestState, closeSetupConnections, useTestDb } from './vitest.js';
7
7
  loadEnvFiles();
8
8
  let _testContext = null;
9
9
  const instance = await discoverForTestFork();
@@ -17,7 +17,7 @@ beforeAll(async () => {
17
17
  await setupTestDatabases(instance);
18
18
  });
19
19
  afterAll(async () => {
20
- await _closeSetupConnections();
20
+ await closeSetupConnections();
21
21
  await instance.pool.closeAll();
22
22
  await teardownTestDatabases();
23
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"auto-setup.js","sourceRoot":"","sources":["../../src/test/auto-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAA;AACpF,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE9E,YAAY,EAAE,CAAA;AAEd,IAAI,YAAY,GAAuB,IAAI,CAAA;AAE3C,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAA;AAE5C,aAAa,CAAC,QAAQ,CAAC,CAAA;AAEvB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;AAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC;IAAC,UAAsC,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,CAAA;AAC9D,CAAC;AAED,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,sBAAsB,EAAE,CAAA;IAC9B,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC9B,MAAM,qBAAqB,EAAE,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,YAAY,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACjD,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC9C,YAAY,GAAG,IAAI,CAAA;QACnB,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"auto-setup.js","sourceRoot":"","sources":["../../src/test/auto-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAA;AACpF,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE7E,YAAY,EAAE,CAAA;AAEd,IAAI,YAAY,GAAuB,IAAI,CAAA;AAE3C,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAA;AAE5C,aAAa,CAAC,QAAQ,CAAC,CAAA;AAEvB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;AAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC;IAAC,UAAsC,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,CAAA;AAC9D,CAAC;AAED,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,qBAAqB,EAAE,CAAA;IAC7B,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC9B,MAAM,qBAAqB,EAAE,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,YAAY,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACjD,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC9C,YAAY,GAAG,IAAI,CAAA;QACnB,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  export { setupTestDatabases, teardownTestDatabases, getTestDatabase, getTestDatabases, type TestDatabase } from './setup.js';
2
2
  export { beginTestIsolation, endTestIsolation, type TestContext, type TestDatabaseConnections } from './plugin.js';
3
- export { setupPipeworkTests, useTestDb, useSetupDb, useTestInstance, withFlow, type WithFlowOptions } from './vitest.js';
3
+ export { setupPipeworkTests, useTestDb, useSetupDb, useTestInstance, closeSetupConnections, withFlow, type WithFlowOptions } from './vitest.js';
4
4
  export { mockAuth, asTenant } from './auth.js';
5
5
  export { withContext, withJobContext, type WithContextOptions } from './context.js';
6
6
  export { pipework as vitestPlugin, type PipeworkVitestOptions } from './vitest-plugin.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5H,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAClH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AACxH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,GAAG,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5H,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAClH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC/I,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,GAAG,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  export { setupTestDatabases, teardownTestDatabases, getTestDatabase, getTestDatabases } from './setup.js';
2
2
  export { beginTestIsolation, endTestIsolation } from './plugin.js';
3
- export { setupPipeworkTests, useTestDb, useSetupDb, useTestInstance, withFlow } from './vitest.js';
3
+ export { setupPipeworkTests, useTestDb, useSetupDb, useTestInstance, closeSetupConnections, withFlow } from './vitest.js';
4
4
  export { mockAuth, asTenant } from './auth.js';
5
5
  export { withContext, withJobContext } from './context.js';
6
6
  export { pipework as vitestPlugin } from './vitest-plugin.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAA;AAC5H,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAkD,MAAM,aAAa,CAAA;AAClH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAwB,MAAM,aAAa,CAAA;AACxH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,QAAQ,IAAI,YAAY,EAA8B,MAAM,oBAAoB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,GAAG,EAA+C,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAA;AAC5H,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAkD,MAAM,aAAa,CAAA;AAClH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,QAAQ,EAAwB,MAAM,aAAa,CAAA;AAC/I,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,QAAQ,IAAI,YAAY,EAA8B,MAAM,oBAAoB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,GAAG,EAA+C,MAAM,oBAAoB,CAAA"}
@@ -7,7 +7,21 @@ export declare function _setTestState(instance: Manifold, testContext?: TestCont
7
7
  export declare function setupPipeworkTests(configOrInstance: Blueprint | Manifold): Manifold;
8
8
  export declare function useTestDb(name?: string): DB;
9
9
  export declare function useSetupDb(name?: string): DB;
10
- export declare function _closeSetupConnections(): Promise<void>;
10
+ /**
11
+ * Close every connection `useSetupDb()` has opened, and forget them.
12
+ *
13
+ * The harness closes these in `setupPipeworkTests`' own `afterAll`. Under
14
+ * vitest's `sequence.hooks: 'stack'` that hook runs *after* a consumer's
15
+ * setupFile `afterAll`, so a teardown-time observer — one sampling
16
+ * `pg_stat_activity` to name leaked backends, say — sees every setup
17
+ * connection still open and cannot tell them from a real leak. Call this
18
+ * first, then sample: what remains is a true survivor set.
19
+ *
20
+ * Idempotent, and safe to call before the harness's own teardown — that
21
+ * teardown still closes the pool and drops the databases afterwards. A later
22
+ * `useSetupDb()` opens a fresh connection.
23
+ */
24
+ export declare function closeSetupConnections(): Promise<void>;
11
25
  export declare function _isInTestIsolation(): boolean;
12
26
  export declare function useTestInstance(): Manifold;
13
27
  export interface WithFlowOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGnD,OAAO,EAA0H,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAEtK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAO5E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAKxF;AAED,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CA0BnF;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAiC3C;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAyC5C;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK5D;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,eAAe,IAAI,QAAQ,CAS1C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGnD,OAAO,EAA0H,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAEtK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAO5E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAKxF;AAED,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CA0BnF;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAiC3C;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAyC5C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3D;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,eAAe,IAAI,QAAQ,CAS1C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA"}
@@ -19,7 +19,7 @@ export function setupPipeworkTests(configOrInstance) {
19
19
  await setupTestDatabases(instance);
20
20
  });
21
21
  afterAll(async () => {
22
- await _closeSetupConnections();
22
+ await closeSetupConnections();
23
23
  await instance.pool.closeAll();
24
24
  await teardownTestDatabases();
25
25
  });
@@ -94,7 +94,21 @@ export function useSetupDb(name) {
94
94
  },
95
95
  });
96
96
  }
97
- export async function _closeSetupConnections() {
97
+ /**
98
+ * Close every connection `useSetupDb()` has opened, and forget them.
99
+ *
100
+ * The harness closes these in `setupPipeworkTests`' own `afterAll`. Under
101
+ * vitest's `sequence.hooks: 'stack'` that hook runs *after* a consumer's
102
+ * setupFile `afterAll`, so a teardown-time observer — one sampling
103
+ * `pg_stat_activity` to name leaked backends, say — sees every setup
104
+ * connection still open and cannot tell them from a real leak. Call this
105
+ * first, then sample: what remains is a true survivor set.
106
+ *
107
+ * Idempotent, and safe to call before the harness's own teardown — that
108
+ * teardown still closes the pool and drops the databases afterwards. A later
109
+ * `useSetupDb()` opens a fresh connection.
110
+ */
111
+ export async function closeSetupConnections() {
98
112
  for (const [, conn] of _setupConnections) {
99
113
  try {
100
114
  await conn.close();
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAInE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAA;AAEtK,OAAO,EAAkD,MAAM,aAAa,CAAA;AAE5E,IAAI,YAAY,GAAuB,IAAI,CAAA;AAC3C,IAAI,SAAS,GAAoB,IAAI,CAAA;AAErC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAuD,CAAA;AAExF,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,WAAgC;IAChF,SAAS,GAAG,QAAQ,CAAA;IACpB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,YAAY,GAAG,WAAW,CAAA;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,gBAAsC;IACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAA;IACnG,SAAS,GAAG,QAAQ,CAAA;IAEpB,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,sBAAsB,EAAE,CAAA;QAC9B,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC9B,MAAM,qBAAqB,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,YAAY,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YAC9C,YAAY,GAAG,IAAI,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,YAAY,GAAG,IAAI,CAAA;IAEzB,SAAS,OAAO;QACd,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,2CAA2C;gBAC3C,oFAAoF;gBACpF,qEAAqE,CACtE,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,IAAI,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAA;QACrE,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzD,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,iBAAiB,SAAS,EAAE,CACnE,CAAA;QACH,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,EAAQ,EAAE;QACzB,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ;YACzB,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;YACpB,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YACtD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC3E,CAAC;QACD,GAAG,CAAC,OAAO,EAAE,IAAI;YACf,OAAO,IAAI,IAAI,OAAO,EAAE,CAAA;QAC1B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,MAAM,YAAY,GAAG,IAAI,CAAA;IAEzB,SAAS,OAAO;QACd,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,4CAA4C;gBAC5C,mCAAmC;gBACnC,uDAAuD,CACxD,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,IAAI,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAA;QAErE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,OAAO,CAAA;QAErC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,6BAA6B,MAAM,0BAA0B;gBAC7D,mEAAmE;gBACnE,6EAA6E,CAC9E,CAAA;QACH,CAAC;QAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAC1C,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,EAAQ,EAAE;QACzB,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ;YACzB,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;YACpB,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YACtD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC3E,CAAC;QACD,GAAG,CAAC,OAAO,EAAE,IAAI;YACf,OAAO,IAAI,IAAI,OAAO,EAAE,CAAA;QAC1B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACxD,CAAC;IACD,iBAAiB,CAAC,KAAK,EAAE,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,YAAY,KAAK,IAAI,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,4CAA4C;YAC5C,mCAAmC;YACnC,uDAAuD,CACxD,CAAA;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,WAAwC,EAAE,OAAiB;IAC3F,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,2CAA2C;YAC3C,mCAAmC;YACnC,uDAAuD,CACxD,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAA;IACpE,MAAM,EAAE,GAAG,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAQ,CAAA;IAErE,MAAM,GAAG,GAAG,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAEpF,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,CAAe,CAAA;AAClD,CAAC;AAED,SAAS,UAAU,CAAC,CAAuB;IACzC,OAAO,MAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.27.1",
3
+ "version": "0.29.0",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -189,7 +189,7 @@
189
189
  "lint": "eslint src --max-warnings 0",
190
190
  "lint:boundaries": "node scripts/check-boundaries.js",
191
191
  "lint:jsdoc": "node scripts/check-jsdoc.js",
192
- "type-check:tests": "tsc --noEmit -p tsconfig.stryker.json",
192
+ "type-check:tests": "tsc --noEmit -p tsconfig.test.json",
193
193
  "generate:reference": "node scripts/generate-reference.js",
194
194
  "test": "vitest run",
195
195
  "test:isolation": "vitest run --config vitest.isolation.config.ts",