@jamesaphoenix/tx-test-utils 0.5.6 → 0.5.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"reset-helpers.d.ts","sourceRoot":"","sources":["../../src/database/reset-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAoB1C;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,IAAI,QAAQ,KAAG,IAmBlD,CAAA"}
1
+ {"version":3,"file":"reset-helpers.d.ts","sourceRoot":"","sources":["../../src/database/reset-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AA8C1C;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,IAAI,QAAQ,KAAG,IAgBlD,CAAA"}
@@ -14,19 +14,33 @@ const SQLITE_SEQUENCE_EXISTS_SQL = `
14
14
  AND name = 'sqlite_sequence'
15
15
  LIMIT 1
16
16
  `;
17
+ const resetMetadataCache = new WeakMap();
18
+ const loadResetMetadata = (db) => {
19
+ const cached = resetMetadataCache.get(db);
20
+ if (cached) {
21
+ return cached;
22
+ }
23
+ const tableRows = db.prepare(RESETTABLE_TABLES_SQL).all();
24
+ const hasSqliteSequence = Boolean(db.prepare(SQLITE_SEQUENCE_EXISTS_SQL).get());
25
+ const metadata = {
26
+ tableNames: tableRows.map((row) => row.name),
27
+ hasSqliteSequence,
28
+ };
29
+ resetMetadataCache.set(db, metadata);
30
+ return metadata;
31
+ };
17
32
  /**
18
33
  * Reset all mutable tables in a test database while preserving schema/migration metadata.
19
34
  *
20
35
  * Runs deletes in a single transaction to reduce WAL churn in large test suites.
21
36
  */
22
37
  export const resetDatabaseTables = (db) => {
23
- const tables = db.prepare(RESETTABLE_TABLES_SQL).all();
24
- const hasSqliteSequence = Boolean(db.prepare(SQLITE_SEQUENCE_EXISTS_SQL).get());
38
+ const { tableNames, hasSqliteSequence } = loadResetMetadata(db);
25
39
  db.run("PRAGMA foreign_keys = OFF");
26
40
  try {
27
41
  db.transaction(() => {
28
- for (const { name } of tables) {
29
- db.exec(`DELETE FROM "${name}"`);
42
+ for (const tableName of tableNames) {
43
+ db.exec(`DELETE FROM "${tableName}"`);
30
44
  }
31
45
  if (hasSqliteSequence) {
32
46
  db.exec("DELETE FROM sqlite_sequence");
@@ -1 +1 @@
1
- {"version":3,"file":"reset-helpers.js","sourceRoot":"","sources":["../../src/database/reset-helpers.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG;;;;;;;;CAQ7B,CAAA;AAED,MAAM,0BAA0B,GAAG;;;;;;CAMlC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAY,EAAQ,EAAE;IACxD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAA6B,CAAA;IACjF,MAAM,iBAAiB,GAAG,OAAO,CAC/B,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAyC,CACpF,CAAA;IAED,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IACnC,IAAI,CAAC;QACH,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;gBAC9B,EAAE,CAAC,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAA;YAClC,CAAC;YACD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;YACxC,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;IACpC,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"reset-helpers.js","sourceRoot":"","sources":["../../src/database/reset-helpers.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG;;;;;;;;CAQ7B,CAAA;AAED,MAAM,0BAA0B,GAAG;;;;;;CAMlC,CAAA;AAOD,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAA2B,CAAA;AAEjE,MAAM,iBAAiB,GAAG,CAAC,EAAY,EAAiB,EAAE;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAA6B,CAAA;IACpF,MAAM,iBAAiB,GAAG,OAAO,CAC/B,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAyC,CACpF,CAAA;IAED,MAAM,QAAQ,GAAkB;QAC9B,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5C,iBAAiB;KAClB,CAAA;IACD,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IACpC,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAY,EAAQ,EAAE;IACxD,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAE/D,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IACnC,IAAI,CAAC;QACH,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,EAAE,CAAC,IAAI,CAAC,gBAAgB,SAAS,GAAG,CAAC,CAAA;YACvC,CAAC;YACD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;YACxC,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;IACpC,CAAC;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamesaphoenix/tx-test-utils",
3
- "version": "0.5.6",
3
+ "version": "0.5.7",
4
4
  "description": "Test utilities, factories, fixtures, and helpers for tx monorepo",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",