@rawsql-ts/ztd-cli 0.16.0 → 0.19.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.
Files changed (242) hide show
  1. package/README.md +532 -353
  2. package/package.json +35 -17
  3. package/templates/.editorconfig +16 -16
  4. package/templates/.prettierignore +2 -2
  5. package/templates/.prettierrc +24 -24
  6. package/templates/AGENTS.md +30 -325
  7. package/templates/CONTEXT.md +11 -0
  8. package/templates/CONTEXT.webapi.md +11 -0
  9. package/templates/DESIGN.md +17 -0
  10. package/templates/DEV_NOTES.md +14 -0
  11. package/templates/PROMPT_DOGFOOD.webapi.md +49 -0
  12. package/templates/README.md +46 -217
  13. package/templates/README.webapi.md +38 -0
  14. package/templates/scripts/local-source-guard.mjs +189 -0
  15. package/templates/src/AGENTS.md +26 -0
  16. package/templates/src/application/AGENTS.md +15 -0
  17. package/templates/src/application/README.md +6 -0
  18. package/templates/src/catalog/AGENTS.md +28 -0
  19. package/templates/src/catalog/runtime/AGENTS.md +28 -0
  20. package/templates/src/catalog/runtime/_coercions.local-source.ts +30 -0
  21. package/templates/src/catalog/runtime/_coercions.ts +30 -0
  22. package/templates/src/catalog/runtime/_smoke.runtime.ts +21 -0
  23. package/templates/src/catalog/specs/AGENTS.md +41 -0
  24. package/templates/src/catalog/specs/_smoke.spec.arktype.ts +21 -0
  25. package/templates/src/catalog/specs/_smoke.spec.zod.ts +20 -0
  26. package/templates/src/db/sql-client-adapters.ts +32 -0
  27. package/templates/src/db/sql-client.ts +24 -24
  28. package/templates/src/domain/AGENTS.md +15 -0
  29. package/templates/src/domain/README.md +6 -0
  30. package/templates/src/infrastructure/AGENTS.md +14 -0
  31. package/templates/src/infrastructure/README.md +6 -0
  32. package/templates/src/infrastructure/db/AGENTS.md +14 -0
  33. package/templates/src/infrastructure/db/sql-client-adapters.ts +34 -0
  34. package/templates/src/infrastructure/db/sql-client.ts +24 -0
  35. package/templates/src/infrastructure/persistence/AGENTS.md +18 -0
  36. package/templates/src/infrastructure/persistence/README.md +8 -0
  37. package/templates/src/infrastructure/persistence/repositories/AGENTS.md +17 -0
  38. package/templates/src/infrastructure/persistence/repositories/tables/AGENTS.md +20 -0
  39. package/templates/src/infrastructure/persistence/repositories/tables/README.md +5 -0
  40. package/templates/src/infrastructure/persistence/repositories/views/AGENTS.md +16 -0
  41. package/templates/src/infrastructure/persistence/repositories/views/README.md +5 -0
  42. package/templates/src/infrastructure/telemetry/AGENTS.md +14 -0
  43. package/templates/src/infrastructure/telemetry/consoleRepositoryTelemetry.ts +66 -0
  44. package/templates/src/infrastructure/telemetry/repositoryTelemetry.ts +26 -0
  45. package/templates/src/infrastructure/telemetry/types.ts +48 -0
  46. package/templates/src/jobs/AGENTS.md +25 -0
  47. package/templates/src/jobs/README.md +3 -0
  48. package/templates/src/local/sql-contract.ts +1 -0
  49. package/templates/src/presentation/AGENTS.md +15 -0
  50. package/templates/src/presentation/http/AGENTS.md +15 -0
  51. package/templates/src/presentation/http/README.md +6 -0
  52. package/templates/src/repositories/AGENTS.md +30 -0
  53. package/templates/src/repositories/tables/AGENTS.md +29 -0
  54. package/templates/src/repositories/tables/README.md +5 -0
  55. package/templates/src/repositories/views/AGENTS.md +25 -0
  56. package/templates/src/repositories/views/README.md +5 -0
  57. package/templates/src/sql/AGENTS.md +30 -0
  58. package/templates/src/sql/README.md +6 -0
  59. package/templates/tests/AGENTS.md +29 -169
  60. package/templates/tests/generated/AGENTS.md +23 -0
  61. package/templates/tests/smoke.test.ts +25 -0
  62. package/templates/tests/smoke.validation.test.ts +34 -0
  63. package/templates/tests/support/AGENTS.md +24 -0
  64. package/templates/tests/support/global-setup.ts +15 -30
  65. package/templates/tests/support/testkit-client.ts +14 -742
  66. package/templates/tests/support/testkit-client.webapi.ts +14 -0
  67. package/templates/tests/ztd-layout.generated.ts +6 -6
  68. package/templates/tsconfig.json +15 -8
  69. package/templates/vitest.config.ts +13 -13
  70. package/templates/ztd/AGENTS.md +23 -74
  71. package/templates/ztd/README.md +6 -15
  72. package/templates/ztd/ddl/AGENTS.md +26 -0
  73. package/templates/ztd/ddl/demo.sql +74 -0
  74. package/LICENSE +0 -21
  75. package/dist/commands/ddl.d.ts +0 -7
  76. package/dist/commands/ddl.js +0 -118
  77. package/dist/commands/ddl.js.map +0 -1
  78. package/dist/commands/diff.d.ts +0 -10
  79. package/dist/commands/diff.js +0 -38
  80. package/dist/commands/diff.js.map +0 -1
  81. package/dist/commands/genEntities.d.ts +0 -6
  82. package/dist/commands/genEntities.js +0 -50
  83. package/dist/commands/genEntities.js.map +0 -1
  84. package/dist/commands/init.d.ts +0 -66
  85. package/dist/commands/init.js +0 -838
  86. package/dist/commands/init.js.map +0 -1
  87. package/dist/commands/lint.d.ts +0 -59
  88. package/dist/commands/lint.js +0 -338
  89. package/dist/commands/lint.js.map +0 -1
  90. package/dist/commands/options.d.ts +0 -9
  91. package/dist/commands/options.js +0 -48
  92. package/dist/commands/options.js.map +0 -1
  93. package/dist/commands/pull.d.ts +0 -10
  94. package/dist/commands/pull.js +0 -105
  95. package/dist/commands/pull.js.map +0 -1
  96. package/dist/commands/ztdConfig.d.ts +0 -23
  97. package/dist/commands/ztdConfig.js +0 -202
  98. package/dist/commands/ztdConfig.js.map +0 -1
  99. package/dist/commands/ztdConfigCommand.d.ts +0 -5
  100. package/dist/commands/ztdConfigCommand.js +0 -157
  101. package/dist/commands/ztdConfigCommand.js.map +0 -1
  102. package/dist/index.d.ts +0 -2
  103. package/dist/index.js +0 -22
  104. package/dist/index.js.map +0 -1
  105. package/dist/utils/agents.d.ts +0 -1
  106. package/dist/utils/agents.js +0 -48
  107. package/dist/utils/agents.js.map +0 -1
  108. package/dist/utils/collectSqlFiles.d.ts +0 -9
  109. package/dist/utils/collectSqlFiles.js +0 -58
  110. package/dist/utils/collectSqlFiles.js.map +0 -1
  111. package/dist/utils/connectionSummary.d.ts +0 -3
  112. package/dist/utils/connectionSummary.js +0 -29
  113. package/dist/utils/connectionSummary.js.map +0 -1
  114. package/dist/utils/dbConnection.d.ts +0 -29
  115. package/dist/utils/dbConnection.js +0 -210
  116. package/dist/utils/dbConnection.js.map +0 -1
  117. package/dist/utils/fs.d.ts +0 -1
  118. package/dist/utils/fs.js +0 -12
  119. package/dist/utils/fs.js.map +0 -1
  120. package/dist/utils/normalizePulledSchema.d.ts +0 -12
  121. package/dist/utils/normalizePulledSchema.js +0 -213
  122. package/dist/utils/normalizePulledSchema.js.map +0 -1
  123. package/dist/utils/pgDump.d.ts +0 -11
  124. package/dist/utils/pgDump.js +0 -55
  125. package/dist/utils/pgDump.js.map +0 -1
  126. package/dist/utils/sqlLintHelpers.d.ts +0 -18
  127. package/dist/utils/sqlLintHelpers.js +0 -270
  128. package/dist/utils/sqlLintHelpers.js.map +0 -1
  129. package/dist/utils/typeMapper.d.ts +0 -4
  130. package/dist/utils/typeMapper.js +0 -76
  131. package/dist/utils/typeMapper.js.map +0 -1
  132. package/dist/utils/ztdProjectConfig.d.ts +0 -40
  133. package/dist/utils/ztdProjectConfig.js +0 -167
  134. package/dist/utils/ztdProjectConfig.js.map +0 -1
  135. package/templates/dist/drivers/pg-testkit/src/driver/PgTestkitClient.d.ts +0 -38
  136. package/templates/dist/drivers/pg-testkit/src/driver/PgTestkitClient.js +0 -117
  137. package/templates/dist/drivers/pg-testkit/src/driver/PgTestkitClient.js.map +0 -1
  138. package/templates/dist/drivers/pg-testkit/src/driver/createPgTestkitPool.d.ts +0 -4
  139. package/templates/dist/drivers/pg-testkit/src/driver/createPgTestkitPool.js +0 -71
  140. package/templates/dist/drivers/pg-testkit/src/driver/createPgTestkitPool.js.map +0 -1
  141. package/templates/dist/drivers/pg-testkit/src/index.d.ts +0 -5
  142. package/templates/dist/drivers/pg-testkit/src/index.js +0 -11
  143. package/templates/dist/drivers/pg-testkit/src/index.js.map +0 -1
  144. package/templates/dist/drivers/pg-testkit/src/proxy/wrapPgClient.d.ts +0 -3
  145. package/templates/dist/drivers/pg-testkit/src/proxy/wrapPgClient.js +0 -79
  146. package/templates/dist/drivers/pg-testkit/src/proxy/wrapPgClient.js.map +0 -1
  147. package/templates/dist/drivers/pg-testkit/src/types.d.ts +0 -69
  148. package/templates/dist/drivers/pg-testkit/src/types.js +0 -3
  149. package/templates/dist/drivers/pg-testkit/src/types.js.map +0 -1
  150. package/templates/dist/drivers/pg-testkit/src/utils/fixtureState.d.ts +0 -15
  151. package/templates/dist/drivers/pg-testkit/src/utils/fixtureState.js +0 -34
  152. package/templates/dist/drivers/pg-testkit/src/utils/fixtureState.js.map +0 -1
  153. package/templates/dist/drivers/pg-testkit/src/utils/fixtureValidation.d.ts +0 -12
  154. package/templates/dist/drivers/pg-testkit/src/utils/fixtureValidation.js +0 -53
  155. package/templates/dist/drivers/pg-testkit/src/utils/fixtureValidation.js.map +0 -1
  156. package/templates/dist/mapper-core/src/index.d.ts +0 -160
  157. package/templates/dist/mapper-core/src/index.js +0 -637
  158. package/templates/dist/mapper-core/src/index.js.map +0 -1
  159. package/templates/dist/testkit-core/src/errors/index.d.ts +0 -49
  160. package/templates/dist/testkit-core/src/errors/index.js +0 -111
  161. package/templates/dist/testkit-core/src/errors/index.js.map +0 -1
  162. package/templates/dist/testkit-core/src/fixtures/ColumnAffinity.d.ts +0 -5
  163. package/templates/dist/testkit-core/src/fixtures/ColumnAffinity.js +0 -29
  164. package/templates/dist/testkit-core/src/fixtures/ColumnAffinity.js.map +0 -1
  165. package/templates/dist/testkit-core/src/fixtures/DdlFixtureLoader.d.ts +0 -37
  166. package/templates/dist/testkit-core/src/fixtures/DdlFixtureLoader.js +0 -182
  167. package/templates/dist/testkit-core/src/fixtures/DdlFixtureLoader.js.map +0 -1
  168. package/templates/dist/testkit-core/src/fixtures/FixtureProvider.d.ts +0 -20
  169. package/templates/dist/testkit-core/src/fixtures/FixtureProvider.js +0 -121
  170. package/templates/dist/testkit-core/src/fixtures/FixtureProvider.js.map +0 -1
  171. package/templates/dist/testkit-core/src/fixtures/FixtureStore.d.ts +0 -51
  172. package/templates/dist/testkit-core/src/fixtures/FixtureStore.js +0 -199
  173. package/templates/dist/testkit-core/src/fixtures/FixtureStore.js.map +0 -1
  174. package/templates/dist/testkit-core/src/fixtures/TableDefinitionSchemaRegistry.d.ts +0 -10
  175. package/templates/dist/testkit-core/src/fixtures/TableDefinitionSchemaRegistry.js +0 -28
  176. package/templates/dist/testkit-core/src/fixtures/TableDefinitionSchemaRegistry.js.map +0 -1
  177. package/templates/dist/testkit-core/src/fixtures/TableNameResolver.d.ts +0 -18
  178. package/templates/dist/testkit-core/src/fixtures/TableNameResolver.js +0 -80
  179. package/templates/dist/testkit-core/src/fixtures/TableNameResolver.js.map +0 -1
  180. package/templates/dist/testkit-core/src/fixtures/ddlLint.d.ts +0 -59
  181. package/templates/dist/testkit-core/src/fixtures/ddlLint.js +0 -489
  182. package/templates/dist/testkit-core/src/fixtures/ddlLint.js.map +0 -1
  183. package/templates/dist/testkit-core/src/fixtures/naming.d.ts +0 -1
  184. package/templates/dist/testkit-core/src/fixtures/naming.js +0 -6
  185. package/templates/dist/testkit-core/src/fixtures/naming.js.map +0 -1
  186. package/templates/dist/testkit-core/src/index.d.ts +0 -17
  187. package/templates/dist/testkit-core/src/index.js +0 -47
  188. package/templates/dist/testkit-core/src/index.js.map +0 -1
  189. package/templates/dist/testkit-core/src/logger/NoopLogger.d.ts +0 -8
  190. package/templates/dist/testkit-core/src/logger/NoopLogger.js +0 -16
  191. package/templates/dist/testkit-core/src/logger/NoopLogger.js.map +0 -1
  192. package/templates/dist/testkit-core/src/provider/TestkitProvider.d.ts +0 -57
  193. package/templates/dist/testkit-core/src/provider/TestkitProvider.js +0 -149
  194. package/templates/dist/testkit-core/src/provider/TestkitProvider.js.map +0 -1
  195. package/templates/dist/testkit-core/src/rewriter/ResultSelectRewriter.d.ts +0 -43
  196. package/templates/dist/testkit-core/src/rewriter/ResultSelectRewriter.js +0 -473
  197. package/templates/dist/testkit-core/src/rewriter/ResultSelectRewriter.js.map +0 -1
  198. package/templates/dist/testkit-core/src/rewriter/SelectAnalyzer.d.ts +0 -9
  199. package/templates/dist/testkit-core/src/rewriter/SelectAnalyzer.js +0 -38
  200. package/templates/dist/testkit-core/src/rewriter/SelectAnalyzer.js.map +0 -1
  201. package/templates/dist/testkit-core/src/rewriter/SelectFixtureRewriter.d.ts +0 -42
  202. package/templates/dist/testkit-core/src/rewriter/SelectFixtureRewriter.js +0 -298
  203. package/templates/dist/testkit-core/src/rewriter/SelectFixtureRewriter.js.map +0 -1
  204. package/templates/dist/testkit-core/src/sql/SqliteValuesBuilder.d.ts +0 -12
  205. package/templates/dist/testkit-core/src/sql/SqliteValuesBuilder.js +0 -63
  206. package/templates/dist/testkit-core/src/sql/SqliteValuesBuilder.js.map +0 -1
  207. package/templates/dist/testkit-core/src/types/index.d.ts +0 -69
  208. package/templates/dist/testkit-core/src/types/index.js +0 -3
  209. package/templates/dist/testkit-core/src/types/index.js.map +0 -1
  210. package/templates/dist/testkit-core/src/utils/queryHelpers.d.ts +0 -28
  211. package/templates/dist/testkit-core/src/utils/queryHelpers.js +0 -81
  212. package/templates/dist/testkit-core/src/utils/queryHelpers.js.map +0 -1
  213. package/templates/dist/writer-core/src/index.d.ts +0 -34
  214. package/templates/dist/writer-core/src/index.js +0 -115
  215. package/templates/dist/writer-core/src/index.js.map +0 -1
  216. package/templates/dist/ztd-cli/templates/src/db/sql-client.d.ts +0 -20
  217. package/templates/dist/ztd-cli/templates/src/db/sql-client.js +0 -3
  218. package/templates/dist/ztd-cli/templates/src/db/sql-client.js.map +0 -1
  219. package/templates/dist/ztd-cli/templates/src/repositories/user-accounts.d.ts +0 -36
  220. package/templates/dist/ztd-cli/templates/src/repositories/user-accounts.js +0 -85
  221. package/templates/dist/ztd-cli/templates/src/repositories/user-accounts.js.map +0 -1
  222. package/templates/dist/ztd-cli/templates/tests/generated/ztd-row-map.generated.d.ts +0 -20
  223. package/templates/dist/ztd-cli/templates/tests/generated/ztd-row-map.generated.js +0 -33
  224. package/templates/dist/ztd-cli/templates/tests/generated/ztd-row-map.generated.js.map +0 -1
  225. package/templates/dist/ztd-cli/templates/tests/support/global-setup.d.ts +0 -10
  226. package/templates/dist/ztd-cli/templates/tests/support/global-setup.js +0 -29
  227. package/templates/dist/ztd-cli/templates/tests/support/global-setup.js.map +0 -1
  228. package/templates/dist/ztd-cli/templates/tests/support/testkit-client.d.ts +0 -66
  229. package/templates/dist/ztd-cli/templates/tests/support/testkit-client.js +0 -552
  230. package/templates/dist/ztd-cli/templates/tests/support/testkit-client.js.map +0 -1
  231. package/templates/dist/ztd-cli/templates/tests/user-profiles.test.d.ts +0 -1
  232. package/templates/dist/ztd-cli/templates/tests/user-profiles.test.js +0 -82
  233. package/templates/dist/ztd-cli/templates/tests/user-profiles.test.js.map +0 -1
  234. package/templates/dist/ztd-cli/templates/tests/writer-constraints.test.d.ts +0 -1
  235. package/templates/dist/ztd-cli/templates/tests/writer-constraints.test.js +0 -29
  236. package/templates/dist/ztd-cli/templates/tests/writer-constraints.test.js.map +0 -1
  237. package/templates/dist/ztd-cli/templates/tests/ztd-layout.generated.d.ts +0 -7
  238. package/templates/dist/ztd-cli/templates/tests/ztd-layout.generated.js +0 -10
  239. package/templates/dist/ztd-cli/templates/tests/ztd-layout.generated.js.map +0 -1
  240. package/templates/src/repositories/user-accounts.ts +0 -179
  241. package/templates/tests/user-profiles.test.ts +0 -161
  242. package/templates/tests/writer-constraints.test.ts +0 -32
@@ -1 +0,0 @@
1
- {"version":3,"file":"ztdProjectConfig.js","sourceRoot":"","sources":["../../src/utils/ztdProjectConfig.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- import type { QueryResult, QueryResultRow } from 'pg';
2
- import type { CreatePgTestkitClientOptions, PgQueryInput, PgQueryable, TableRowsFixture } from '../types';
3
- /**
4
- * Lightweight client that rewrites CRUD/SELECT statements into fixture-backed SELECTs
5
- * and delegates execution to a real `pg` connection.
6
- *
7
- * Consumers can use this in place of `pg.Client` during tests; production code can stay
8
- * unaware of pg-testkit as long as it relies on the standard `query` API.
9
- */
10
- export declare class PgTestkitClient {
11
- private readonly options;
12
- private readonly scopedRows?;
13
- private connection?;
14
- private readonly rewriter;
15
- private readonly tableNameResolver;
16
- constructor(options: CreatePgTestkitClientOptions, scopedRows?: TableRowsFixture[] | undefined, seedConnection?: PgQueryable);
17
- /**
18
- * Executes SQL after rewriting it to use fixture-backed CTEs. CRUD statements are converted
19
- * to result-producing SELECTs; unsupported DDL is ignored.
20
- *
21
- * @param textOrConfig SQL text or pg QueryConfig
22
- * @param values Optional positional parameters
23
- * @returns pg-style QueryResult with rows simulated from fixtures
24
- */
25
- query<T extends QueryResultRow = QueryResultRow>(textOrConfig: PgQueryInput, values?: unknown[]): Promise<QueryResult<T>>;
26
- /**
27
- * Derives a scoped client that overlays additional fixtures while reusing the same connection.
28
- */
29
- withFixtures(fixtures: TableRowsFixture[]): PgTestkitClient;
30
- /**
31
- * Disposes the underlying connection or returns it to the pool if `release` is available.
32
- */
33
- close(): Promise<void>;
34
- private getConnection;
35
- private buildEmptyResult;
36
- }
37
- /** Factory that instantiates a `PgTestkitClient` with the provided fixture-driven options. */
38
- export declare const createPgTestkitClient: (options: CreatePgTestkitClientOptions) => PgTestkitClient;
@@ -1,117 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPgTestkitClient = exports.PgTestkitClient = void 0;
4
- const testkit_core_1 = require("@rawsql-ts/testkit-core");
5
- const fixtureValidation_1 = require("../utils/fixtureValidation");
6
- const fixtureState_1 = require("../utils/fixtureState");
7
- /**
8
- * Lightweight client that rewrites CRUD/SELECT statements into fixture-backed SELECTs
9
- * and delegates execution to a real `pg` connection.
10
- *
11
- * Consumers can use this in place of `pg.Client` during tests; production code can stay
12
- * unaware of pg-testkit as long as it relies on the standard `query` API.
13
- */
14
- class PgTestkitClient {
15
- constructor(options, scopedRows, seedConnection) {
16
- var _a, _b;
17
- this.options = options;
18
- this.scopedRows = scopedRows;
19
- // Keep a resolver around so every fixture/DDL lookup uses the same schema rules.
20
- this.tableNameResolver = new testkit_core_1.TableNameResolver({
21
- defaultSchema: options.defaultSchema,
22
- searchPath: options.searchPath,
23
- });
24
- // Align DDL metadata and explicit overrides under the shared resolver rules.
25
- const fixturesState = (0, fixtureState_1.resolveFixtureState)({
26
- ddl: options.ddl,
27
- tableDefinitions: options.tableDefinitions,
28
- tableRows: options.tableRows,
29
- }, this.tableNameResolver);
30
- // Combine the base and scoped fixtures so they are validated exactly once through the resolver.
31
- const mergedTableRows = [...((_a = options.tableRows) !== null && _a !== void 0 ? _a : []), ...(scopedRows !== null && scopedRows !== void 0 ? scopedRows : [])];
32
- (0, fixtureValidation_1.validateFixtureRowsAgainstTableDefinitions)(mergedTableRows, fixturesState.tableDefinitions, 'tableRows', this.tableNameResolver);
33
- const fixtureStore = new testkit_core_1.DefaultFixtureProvider(fixturesState.tableDefinitions, fixturesState.tableRows, this.tableNameResolver);
34
- this.rewriter = new testkit_core_1.ResultSelectRewriter(fixtureStore, (_b = options.missingFixtureStrategy) !== null && _b !== void 0 ? _b : 'error', options.formatterOptions, this.tableNameResolver);
35
- this.connection = seedConnection;
36
- }
37
- /**
38
- * Executes SQL after rewriting it to use fixture-backed CTEs. CRUD statements are converted
39
- * to result-producing SELECTs; unsupported DDL is ignored.
40
- *
41
- * @param textOrConfig SQL text or pg QueryConfig
42
- * @param values Optional positional parameters
43
- * @returns pg-style QueryResult with rows simulated from fixtures
44
- */
45
- async query(textOrConfig, values) {
46
- var _a, _b, _c;
47
- const sql = typeof textOrConfig === 'string' ? textOrConfig : textOrConfig.text;
48
- if (!sql) {
49
- throw new Error('Query text is required for pg-testkit execution.');
50
- }
51
- // Rewrite CRUD and SELECT statements into fixture-backed SELECT queries.
52
- const rewritten = this.rewriter.rewrite(sql, this.scopedRows);
53
- if (!rewritten.sql) {
54
- return this.buildEmptyResult('NOOP');
55
- }
56
- // Align caller-supplied parameters with the rewritten placeholders to keep numbering contiguous.
57
- const incomingParams = typeof textOrConfig === 'string'
58
- ? values
59
- : (_a = values !== null && values !== void 0 ? values : textOrConfig.values) !== null && _a !== void 0 ? _a : textOrConfig.params;
60
- const normalizeResult = (0, testkit_core_1.alignRewrittenParameters)(rewritten.sql, incomingParams);
61
- const payload = typeof textOrConfig === 'string'
62
- ? normalizeResult.sql
63
- : { ...textOrConfig, text: normalizeResult.sql, values: normalizeResult.params };
64
- const connection = await this.getConnection();
65
- (_c = (_b = this.options).onExecute) === null || _c === void 0 ? void 0 : _c.call(_b, normalizeResult.sql, normalizeResult.params, rewritten.fixturesApplied);
66
- const rawResult = typeof payload === 'string'
67
- ? await connection.query(payload, normalizeResult.params)
68
- : await connection.query(payload);
69
- return (0, testkit_core_1.applyCountWrapper)(rawResult, rewritten.sourceCommand, rewritten.isCountWrapper);
70
- }
71
- /**
72
- * Derives a scoped client that overlays additional fixtures while reusing the same connection.
73
- */
74
- withFixtures(fixtures) {
75
- return new PgTestkitClient(this.options, fixtures, this.connection);
76
- }
77
- /**
78
- * Disposes the underlying connection or returns it to the pool if `release` is available.
79
- */
80
- async close() {
81
- if (!this.connection) {
82
- return;
83
- }
84
- const closable = this.connection;
85
- this.connection = undefined;
86
- if (typeof closable.release === 'function') {
87
- closable.release();
88
- return;
89
- }
90
- if (typeof closable.end === 'function') {
91
- await closable.end();
92
- }
93
- }
94
- async getConnection() {
95
- if (this.connection) {
96
- return this.connection;
97
- }
98
- this.connection = await this.options.connectionFactory();
99
- return this.connection;
100
- }
101
- buildEmptyResult(command) {
102
- return {
103
- command,
104
- rowCount: 0,
105
- oid: 0,
106
- rows: [],
107
- fields: [],
108
- };
109
- }
110
- }
111
- exports.PgTestkitClient = PgTestkitClient;
112
- /** Factory that instantiates a `PgTestkitClient` with the provided fixture-driven options. */
113
- const createPgTestkitClient = (options) => {
114
- return new PgTestkitClient(options);
115
- };
116
- exports.createPgTestkitClient = createPgTestkitClient;
117
- //# sourceMappingURL=PgTestkitClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PgTestkitClient.js","sourceRoot":"","sources":["../../../../../../../drivers/pg-testkit/src/driver/PgTestkitClient.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Pool } from 'pg';
2
- import type { CreatePgTestkitPoolOptions, TableRowsFixture } from '../types';
3
- /** Builds a pool whose clients rewrite CRUD traffic through pg-testkit while leaving transactions alone. */
4
- export declare const createPgTestkitPool: (connectionString: string, ...fixturesOrOptions: Array<TableRowsFixture | CreatePgTestkitPoolOptions>) => Pool;
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPgTestkitPool = void 0;
4
- const pg_1 = require("pg");
5
- const PgTestkitClient_1 = require("./PgTestkitClient");
6
- const TRANSACTION_COMMAND_RE = /^\s*(BEGIN|COMMIT|ROLLBACK|SAVEPOINT|RELEASE)/i;
7
- const isPoolOptions = (value) => {
8
- return (typeof value === 'object' &&
9
- value !== null &&
10
- ('ddl' in value || 'tableRows' in value || 'tableDefinitions' in value));
11
- };
12
- /** Builds a pool whose clients rewrite CRUD traffic through pg-testkit while leaving transactions alone. */
13
- const createPgTestkitPool = (connectionString, ...fixturesOrOptions) => {
14
- var _a;
15
- const hasOptions = fixturesOrOptions.length > 0 && isPoolOptions(fixturesOrOptions[fixturesOrOptions.length - 1]);
16
- const poolOptions = hasOptions
17
- ? fixturesOrOptions[fixturesOrOptions.length - 1]
18
- : undefined;
19
- const baseFixtures = hasOptions
20
- ? fixturesOrOptions.slice(0, -1)
21
- : fixturesOrOptions;
22
- // Combine ad-hoc rows with option-provided ones so callers can mix styles.
23
- const combinedFixtures = [...baseFixtures, ...((_a = poolOptions === null || poolOptions === void 0 ? void 0 : poolOptions.tableRows) !== null && _a !== void 0 ? _a : [])];
24
- class TestkitClient extends pg_1.Client {
25
- constructor() {
26
- super(...arguments);
27
- this.testkit = (0, PgTestkitClient_1.createPgTestkitClient)({
28
- connectionFactory: async () => this.buildRawConnection(),
29
- tableRows: combinedFixtures,
30
- ddl: poolOptions === null || poolOptions === void 0 ? void 0 : poolOptions.ddl,
31
- tableDefinitions: poolOptions === null || poolOptions === void 0 ? void 0 : poolOptions.tableDefinitions,
32
- defaultSchema: poolOptions === null || poolOptions === void 0 ? void 0 : poolOptions.defaultSchema,
33
- searchPath: poolOptions === null || poolOptions === void 0 ? void 0 : poolOptions.searchPath,
34
- });
35
- }
36
- buildRawConnection() {
37
- const baseQuery = pg_1.Client.prototype.query;
38
- // Forward rewritten SQL to the original pg client so transactional commands stay bound to the pool.
39
- const rawConnection = {
40
- query: (queryTextOrConfig, values) => baseQuery.call(this, queryTextOrConfig, values),
41
- };
42
- return rawConnection;
43
- }
44
- query(...args) {
45
- var _a;
46
- const [queryTextOrConfig, valuesOrCallback, callbackOrUndefined] = args;
47
- const callback = typeof valuesOrCallback === 'function' ? valuesOrCallback : callbackOrUndefined;
48
- const values = typeof valuesOrCallback === 'function' ? undefined : valuesOrCallback;
49
- const sqlText = typeof queryTextOrConfig === 'string' ? queryTextOrConfig : queryTextOrConfig.text;
50
- const configPayload = typeof queryTextOrConfig === 'string' ? undefined : queryTextOrConfig;
51
- const normalizedValues = (_a = values !== null && values !== void 0 ? values : configPayload === null || configPayload === void 0 ? void 0 : configPayload.values) !== null && _a !== void 0 ? _a : configPayload === null || configPayload === void 0 ? void 0 : configPayload.params;
52
- // Allow explicit transaction control to reach Pg without interference.
53
- if (sqlText && TRANSACTION_COMMAND_RE.test(sqlText)) {
54
- return pg_1.Client.prototype.query.apply(this, args);
55
- }
56
- const execution = this.testkit.query(queryTextOrConfig, normalizedValues);
57
- // Surface callback behavior when the caller provided the older pg query signature.
58
- if (typeof callback === 'function') {
59
- execution
60
- .then((result) => callback(null, result))
61
- .catch((error) => callback(error, undefined));
62
- return undefined;
63
- }
64
- return execution;
65
- }
66
- }
67
- const poolConfig = { connectionString, Client: TestkitClient };
68
- return new pg_1.Pool(poolConfig);
69
- };
70
- exports.createPgTestkitPool = createPgTestkitPool;
71
- //# sourceMappingURL=createPgTestkitPool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPgTestkitPool.js","sourceRoot":"","sources":["../../../../../../../drivers/pg-testkit/src/driver/createPgTestkitPool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export type { CreatePgTestkitClientOptions, CreatePgTestkitPoolOptions, PgQueryInput, PgQueryable, WrapPgClientOptions, WrappedPgClient, } from './types';
2
- export type { TableRowsFixture } from '@rawsql-ts/testkit-core';
3
- export { createPgTestkitClient, PgTestkitClient } from './driver/PgTestkitClient';
4
- export { createPgTestkitPool } from './driver/createPgTestkitPool';
5
- export { wrapPgClient } from './proxy/wrapPgClient';
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wrapPgClient = exports.createPgTestkitPool = exports.PgTestkitClient = exports.createPgTestkitClient = void 0;
4
- var PgTestkitClient_1 = require("./driver/PgTestkitClient");
5
- Object.defineProperty(exports, "createPgTestkitClient", { enumerable: true, get: function () { return PgTestkitClient_1.createPgTestkitClient; } });
6
- Object.defineProperty(exports, "PgTestkitClient", { enumerable: true, get: function () { return PgTestkitClient_1.PgTestkitClient; } });
7
- var createPgTestkitPool_1 = require("./driver/createPgTestkitPool");
8
- Object.defineProperty(exports, "createPgTestkitPool", { enumerable: true, get: function () { return createPgTestkitPool_1.createPgTestkitPool; } });
9
- var wrapPgClient_1 = require("./proxy/wrapPgClient");
10
- Object.defineProperty(exports, "wrapPgClient", { enumerable: true, get: function () { return wrapPgClient_1.wrapPgClient; } });
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../drivers/pg-testkit/src/index.ts"],"names":[],"mappings":";;;AASA,4DAAkF;AAAzE,wHAAA,qBAAqB,OAAA;AAAE,kHAAA,eAAe,OAAA;AAC/C,oEAAmE;AAA1D,0HAAA,mBAAmB,OAAA;AAC5B,qDAAoD;AAA3C,4GAAA,YAAY,OAAA"}
@@ -1,3 +0,0 @@
1
- import type { PgQueryable, WrapPgClientOptions, WrappedPgClient } from '../types';
2
- /** Wraps an existing Postgres client with fixture-aware query rewriting. */
3
- export declare const wrapPgClient: <T extends PgQueryable>(client: T, options: WrapPgClientOptions) => WrappedPgClient<T>;
@@ -1,79 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wrapPgClient = void 0;
4
- const testkit_core_1 = require("@rawsql-ts/testkit-core");
5
- const fixtureValidation_1 = require("../utils/fixtureValidation");
6
- const fixtureState_1 = require("../utils/fixtureState");
7
- const buildEmptyResult = (command = 'NOOP') => ({
8
- command,
9
- rowCount: 0,
10
- oid: 0,
11
- rows: [],
12
- fields: [],
13
- });
14
- /** Wraps an existing Postgres client with fixture-aware query rewriting. */
15
- const wrapPgClient = (client, options) => {
16
- var _a;
17
- // Keep resolver configuration in sync with the pg-testkit options.
18
- const tableNameResolver = new testkit_core_1.TableNameResolver({
19
- defaultSchema: options.defaultSchema,
20
- searchPath: options.searchPath,
21
- });
22
- // Align shared fixtures with the resolver so every consumer sees the same schema snapshot.
23
- const fixtureState = (0, fixtureState_1.resolveFixtureState)({
24
- ddl: options.ddl,
25
- tableDefinitions: options.tableDefinitions,
26
- tableRows: options.tableRows,
27
- }, tableNameResolver);
28
- // Ensure the provided fixtures align with the shared definitions before creating the fixture store.
29
- (0, fixtureValidation_1.validateFixtureRowsAgainstTableDefinitions)(options.tableRows, fixtureState.tableDefinitions, 'wrap tableRows', tableNameResolver);
30
- const fixtureStore = new testkit_core_1.DefaultFixtureProvider(fixtureState.tableDefinitions, fixtureState.tableRows, tableNameResolver);
31
- const rewriter = new testkit_core_1.ResultSelectRewriter(fixtureStore, (_a = options.missingFixtureStrategy) !== null && _a !== void 0 ? _a : 'error', options.formatterOptions, tableNameResolver);
32
- const buildProxy = (scopedFixtures) => {
33
- return new Proxy(client, {
34
- get(target, prop, receiver) {
35
- if (prop === 'withFixtures') {
36
- return (fixtures) => {
37
- // Confirm each overlay matches the resolved definitions before reusing the proxy.
38
- (0, fixtureValidation_1.validateFixtureRowsAgainstTableDefinitions)(fixtures, fixtureState.tableDefinitions, 'scoped fixtures', tableNameResolver);
39
- return buildProxy(fixtures);
40
- };
41
- }
42
- const value = Reflect.get(target, prop, receiver);
43
- if (prop === 'query' && typeof value === 'function') {
44
- return async (textOrConfig, values) => {
45
- var _a, _b;
46
- const sql = typeof textOrConfig === 'string' ? textOrConfig : textOrConfig.text;
47
- if (!sql) {
48
- return value.apply(target, [textOrConfig, values]);
49
- }
50
- // Inject fixture-backed CTEs into CRUD/SELECT statements and skip unsupported DDL.
51
- const rewritten = rewriter.rewrite(sql, scopedFixtures);
52
- if (!rewritten.sql) {
53
- return buildEmptyResult();
54
- }
55
- // Align caller parameters with the rewritten SQL so placeholders stay contiguous.
56
- const incomingParams = typeof textOrConfig === 'string'
57
- ? values
58
- : (_a = values !== null && values !== void 0 ? values : textOrConfig.values) !== null && _a !== void 0 ? _a : textOrConfig.params;
59
- const normalized = (0, testkit_core_1.alignRewrittenParameters)(rewritten.sql, incomingParams);
60
- const payload = typeof textOrConfig === 'string'
61
- ? normalized.sql
62
- : { ...textOrConfig, text: normalized.sql, values: normalized.params };
63
- let result = typeof payload === 'string'
64
- ? await value.call(target, payload, normalized.params)
65
- : await value.call(target, payload);
66
- (_b = options.onExecute) === null || _b === void 0 ? void 0 : _b.call(options, normalized.sql, normalized.params, rewritten.fixturesApplied);
67
- // Normalize rowCount/command only when the rewriter produced a count-wrapper SELECT.
68
- result = (0, testkit_core_1.applyCountWrapper)(result, rewritten.sourceCommand, rewritten.isCountWrapper);
69
- return result;
70
- };
71
- }
72
- return typeof value === 'function' ? value.bind(target) : value;
73
- },
74
- });
75
- };
76
- return buildProxy();
77
- };
78
- exports.wrapPgClient = wrapPgClient;
79
- //# sourceMappingURL=wrapPgClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapPgClient.js","sourceRoot":"","sources":["../../../../../../../drivers/pg-testkit/src/proxy/wrapPgClient.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- import type { QueryConfig, QueryResult, QueryResultRow } from 'pg';
2
- import type { FixtureTableDefinition, MissingFixtureStrategy, SqlFormatterOptions, TableDefinitionModel, TableDefinitionRegistry } from 'rawsql-ts';
3
- export type { TableDefinitionModel } from 'rawsql-ts';
4
- import type { TableRowsFixture } from '@rawsql-ts/testkit-core';
5
- import type { DdlFixtureLoaderOptions } from '@rawsql-ts/testkit-core';
6
- interface SchemaResolutionOptions {
7
- defaultSchema?: string;
8
- searchPath?: string[];
9
- }
10
- /** Rows-only fixtures authored by pg-testkit consumers. */
11
- export type PgTableRowsFixture = TableRowsFixture;
12
- /** Table definitions shared across testkits and derived from DDL. */
13
- export type PgTableDefinition = TableDefinitionModel;
14
- /** Snapshot returned after fixture resolution, containing the tables, resolver-generated registry, and the applied fixture names. */
15
- export interface PgFixtureSnapshot {
16
- fixtureTables: FixtureTableDefinition[];
17
- tableDefinitions: TableDefinitionRegistry;
18
- fixturesApplied: string[];
19
- }
20
- /** Resolves fixture overrides and exposes the most recently applied snapshot. */
21
- export interface PgFixtureProvider {
22
- resolve(overrides?: TableRowsFixture[]): PgFixtureSnapshot;
23
- }
24
- /** Input accepted by driver query helpers (raw SQL or pg `QueryConfig`). */
25
- export type PgQueryInput = string | QueryConfig<unknown[]>;
26
- /** Represents a Postgres client that can execute queries during testing. */
27
- export interface PgQueryable {
28
- query<T extends QueryResultRow = QueryResultRow>(queryTextOrConfig: PgQueryInput, values?: unknown[]): Promise<QueryResult<T>>;
29
- end?(): Promise<void> | void;
30
- release?(): void;
31
- }
32
- /**
33
- * Options accepted when creating a PgTestkit client, including the
34
- * connection factory and fixture resolution hooks.
35
- */
36
- export interface CreatePgTestkitClientOptions extends SchemaResolutionOptions {
37
- connectionFactory: () => PgQueryable | Promise<PgQueryable>;
38
- tableDefinitions?: TableDefinitionModel[];
39
- tableRows?: TableRowsFixture[];
40
- formatterOptions?: SqlFormatterOptions;
41
- missingFixtureStrategy?: MissingFixtureStrategy;
42
- onExecute?(sql: string, params?: unknown[] | QueryConfig['values'], fixtures?: string[]): void;
43
- /** Directories whose SQL files are converted into fixtures automatically. */
44
- ddl?: DdlFixtureLoaderOptions;
45
- }
46
- /**
47
- * Options accepted when wrapping an existing Postgres client, mirroring
48
- * creation options but omitting the connection factory.
49
- */
50
- export interface WrapPgClientOptions extends SchemaResolutionOptions {
51
- tableDefinitions?: TableDefinitionModel[];
52
- tableRows?: TableRowsFixture[];
53
- formatterOptions?: SqlFormatterOptions;
54
- missingFixtureStrategy?: MissingFixtureStrategy;
55
- onExecute?(sql: string, params?: unknown[] | QueryConfig['values'], fixtures?: string[]): void;
56
- /** Shared DDL directory configuration used to infer fixtures for wrapped clients. */
57
- ddl?: DdlFixtureLoaderOptions;
58
- }
59
- /** Extends any Pg client instance with fixture-aware helper methods. */
60
- export type WrappedPgClient<T> = T & {
61
- withFixtures(fixtures: TableRowsFixture[]): WrappedPgClient<T>;
62
- };
63
- export interface CreatePgTestkitPoolOptions extends SchemaResolutionOptions {
64
- tableDefinitions?: TableDefinitionModel[];
65
- tableRows?: TableRowsFixture[];
66
- /** DDL paths that should populate the base fixture set for the pool. */
67
- ddl?: DdlFixtureLoaderOptions;
68
- }
69
- export type { TableRowsFixture } from '@rawsql-ts/testkit-core';
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../drivers/pg-testkit/src/types.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import type { DdlFixtureLoaderOptions, DdlProcessedFixture, TableRowsFixture } from '@rawsql-ts/testkit-core';
2
- import type { TableDefinitionModel } from 'rawsql-ts';
3
- import type { TableNameResolver } from '@rawsql-ts/testkit-core';
4
- export interface FixtureResolutionOptions {
5
- tableDefinitions?: TableDefinitionModel[];
6
- tableRows?: TableRowsFixture[];
7
- ddl?: DdlFixtureLoaderOptions;
8
- }
9
- export interface ResolvedFixtureState {
10
- ddlFixtures: DdlProcessedFixture[];
11
- tableDefinitions: TableDefinitionModel[];
12
- tableRows: TableRowsFixture[];
13
- }
14
- /** Produces the merged fixture metadata for any pg-testkit entry point. */
15
- export declare function resolveFixtureState(options: FixtureResolutionOptions, tableNameResolver: TableNameResolver): ResolvedFixtureState;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveFixtureState = resolveFixtureState;
4
- const testkit_core_1 = require("@rawsql-ts/testkit-core");
5
- /** Produces the merged fixture metadata for any pg-testkit entry point. */
6
- function resolveFixtureState(options, tableNameResolver) {
7
- var _a, _b, _c, _d, _e;
8
- // Load DDL-derived fixtures when directories were supplied so every consumer shares the same resolver rules.
9
- const loader = ((_b = (_a = options.ddl) === null || _a === void 0 ? void 0 : _a.directories) === null || _b === void 0 ? void 0 : _b.length)
10
- ? new testkit_core_1.DdlFixtureLoader({
11
- ...options.ddl,
12
- tableNameResolver,
13
- })
14
- : undefined;
15
- const ddlFixtures = (_c = loader === null || loader === void 0 ? void 0 : loader.getFixtures()) !== null && _c !== void 0 ? _c : [];
16
- // Combine generated definitions with any explicit metadata the caller provided.
17
- const tableDefinitions = [
18
- ...ddlFixtures.map((fixture) => fixture.tableDefinition),
19
- ...((_d = options.tableDefinitions) !== null && _d !== void 0 ? _d : []),
20
- ];
21
- // Merge DDL-sourced rows ahead of caller-supplied fixtures so overrides take precedence.
22
- const tableRows = [
23
- ...ddlFixtures.flatMap((fixture) => fixture.rows && fixture.rows.length
24
- ? [{ tableName: fixture.tableDefinition.name, rows: fixture.rows }]
25
- : []),
26
- ...((_e = options.tableRows) !== null && _e !== void 0 ? _e : []),
27
- ];
28
- return {
29
- ddlFixtures,
30
- tableDefinitions,
31
- tableRows,
32
- };
33
- }
34
- //# sourceMappingURL=fixtureState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixtureState.js","sourceRoot":"","sources":["../../../../../../../drivers/pg-testkit/src/utils/fixtureState.ts"],"names":[],"mappings":";;AAkBA,kDAkCC;AAnDD,0DAA2D;AAgB3D,2EAA2E;AAC3E,SAAgB,mBAAmB,CACjC,OAAiC,EACjC,iBAAoC;;IAEpC,6GAA6G;IAC7G,MAAM,MAAM,GAAG,CAAA,MAAA,MAAA,OAAO,CAAC,GAAG,0CAAE,WAAW,0CAAE,MAAM;QAC7C,CAAC,CAAC,IAAI,+BAAgB,CAAC;YACnB,GAAG,OAAO,CAAC,GAAG;YACd,iBAAiB;SAClB,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,WAAW,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,EAAE,mCAAI,EAAE,CAAC;IAEhD,gFAAgF;IAChF,MAAM,gBAAgB,GAAG;QACvB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAA4B,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;QAC7E,GAAG,CAAC,MAAA,OAAO,CAAC,gBAAgB,mCAAI,EAAE,CAAC;KACpC,CAAC;IAEF,yFAAyF;IACzF,MAAM,SAAS,GAAuB;QACpC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,OAA4B,EAAE,EAAE,CACtD,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;YACjC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACnE,CAAC,CAAC,EAAE,CACP;QACD,GAAG,CAAC,MAAA,OAAO,CAAC,SAAS,mCAAI,EAAE,CAAC;KAC7B,CAAC;IAEF,OAAO;QACL,WAAW;QACX,gBAAgB;QAChB,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { TableDefinitionModel, TableRowsFixture } from '../types';
2
- import type { TableNameResolver } from '@rawsql-ts/testkit-core';
3
- /**
4
- * Validates fixture rows against table definitions, ensuring every referenced
5
- * table and column exists in the configured DDL or explicit definitions.
6
- *
7
- * @param tableRows - Fixtures to validate; undefined or empty arrays are no-ops.
8
- * @param tableDefinitions - Table metadata to validate against.
9
- * @param contextLabel - Optional label prefixed to thrown error messages for clarity.
10
- * @throws Error when a fixture references a missing table or column.
11
- */
12
- export declare const validateFixtureRowsAgainstTableDefinitions: (tableRows: TableRowsFixture[] | undefined, tableDefinitions: TableDefinitionModel[], contextLabel?: string, tableNameResolver?: TableNameResolver) => void;
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateFixtureRowsAgainstTableDefinitions = void 0;
4
- const rawsql_ts_1 = require("rawsql-ts");
5
- const normalizeColumnName = (value) => value.toLowerCase();
6
- /**
7
- * Validates fixture rows against table definitions, ensuring every referenced
8
- * table and column exists in the configured DDL or explicit definitions.
9
- *
10
- * @param tableRows - Fixtures to validate; undefined or empty arrays are no-ops.
11
- * @param tableDefinitions - Table metadata to validate against.
12
- * @param contextLabel - Optional label prefixed to thrown error messages for clarity.
13
- * @throws Error when a fixture references a missing table or column.
14
- */
15
- const validateFixtureRowsAgainstTableDefinitions = (tableRows, tableDefinitions, contextLabel, tableNameResolver) => {
16
- var _a;
17
- if (!(tableRows === null || tableRows === void 0 ? void 0 : tableRows.length)) {
18
- return;
19
- }
20
- const prefix = contextLabel ? `${contextLabel}: ` : '';
21
- // Build a lookup keyed by resolved table names so definitions can be resolved quickly.
22
- const definitionLookup = new Map();
23
- for (const definition of tableDefinitions) {
24
- const key = (_a = tableNameResolver === null || tableNameResolver === void 0 ? void 0 : tableNameResolver.resolve(definition.name)) !== null && _a !== void 0 ? _a : (0, rawsql_ts_1.normalizeTableName)(definition.name);
25
- definitionLookup.set(key, definition);
26
- }
27
- const columnCache = new Map();
28
- for (const fixture of tableRows) {
29
- const resolvedTableName = tableNameResolver
30
- ? tableNameResolver.resolve(fixture.tableName, (candidate) => definitionLookup.has(candidate))
31
- : (0, rawsql_ts_1.normalizeTableName)(fixture.tableName);
32
- const tableDefinition = definitionLookup.get(resolvedTableName);
33
- if (!tableDefinition) {
34
- throw new Error(`${prefix}Table '${fixture.tableName}' is not defined by the configured DDL or explicit table definitions.`);
35
- }
36
- // Memoize column metadata for each resolved table to avoid repeated work.
37
- let columnNames = columnCache.get(resolvedTableName);
38
- if (!columnNames) {
39
- columnNames = new Set(tableDefinition.columns.map((column) => normalizeColumnName(column.name)));
40
- columnCache.set(resolvedTableName, columnNames);
41
- }
42
- // Validate each row so mistyped columns surface immediately during setup.
43
- for (const row of fixture.rows) {
44
- for (const column of Object.keys(row)) {
45
- if (!columnNames.has(normalizeColumnName(column))) {
46
- throw new Error(`${prefix}Column '${column}' not found in table '${fixture.tableName}'. Please fix the fixture to match the DDL.`);
47
- }
48
- }
49
- }
50
- }
51
- };
52
- exports.validateFixtureRowsAgainstTableDefinitions = validateFixtureRowsAgainstTableDefinitions;
53
- //# sourceMappingURL=fixtureValidation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixtureValidation.js","sourceRoot":"","sources":["../../../../../../../drivers/pg-testkit/src/utils/fixtureValidation.ts"],"names":[],"mappings":";;;AAAA,yCAA+C;AAI/C,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAE3E;;;;;;;;GAQG;AACI,MAAM,0CAA0C,GAAG,CACxD,SAAyC,EACzC,gBAAwC,EACxC,YAAqB,EACrB,iBAAqC,EAC/B,EAAE;;IACR,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvD,uFAAuF;IACvF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAgC,CAAC;IACjE,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,mCAAI,IAAA,8BAAkB,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/F,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEnD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,iBAAiB,GAAG,iBAAiB;YACzC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9F,CAAC,CAAC,IAAA,8BAAkB,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,UAAU,OAAO,CAAC,SAAS,uEAAuE,CAC5G,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,IAAI,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjG,WAAW,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAClD,CAAC;QAED,0EAA0E;QAC1E,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAClD,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,WAAW,MAAM,yBAAyB,OAAO,CAAC,SAAS,6CAA6C,CAClH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAlDW,QAAA,0CAA0C,8CAkDrD"}