@zmdb/sql 1.0.0-beta.1

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 (98) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +35 -0
  3. package/dist/aggregations/index.d.ts +30 -0
  4. package/dist/aggregations/index.d.ts.map +1 -0
  5. package/dist/aggregations/index.js +52 -0
  6. package/dist/aggregations/index.js.map +1 -0
  7. package/dist/clauses.d.ts +112 -0
  8. package/dist/clauses.d.ts.map +1 -0
  9. package/dist/clauses.js +267 -0
  10. package/dist/clauses.js.map +1 -0
  11. package/dist/comments/index.d.ts +26 -0
  12. package/dist/comments/index.d.ts.map +1 -0
  13. package/dist/comments/index.js +28 -0
  14. package/dist/comments/index.js.map +1 -0
  15. package/dist/compiled-query.d.ts +12 -0
  16. package/dist/compiled-query.d.ts.map +1 -0
  17. package/dist/compiled-query.js +2 -0
  18. package/dist/compiled-query.js.map +1 -0
  19. package/dist/dialects/index.d.ts +19 -0
  20. package/dist/dialects/index.d.ts.map +1 -0
  21. package/dist/dialects/index.js +43 -0
  22. package/dist/dialects/index.js.map +1 -0
  23. package/dist/dialects/protocol.d.ts +230 -0
  24. package/dist/dialects/protocol.d.ts.map +1 -0
  25. package/dist/dialects/protocol.js +230 -0
  26. package/dist/dialects/protocol.js.map +1 -0
  27. package/dist/errors.d.ts +9 -0
  28. package/dist/errors.d.ts.map +1 -0
  29. package/dist/errors.js +17 -0
  30. package/dist/errors.js.map +1 -0
  31. package/dist/expressions/index.d.ts +50 -0
  32. package/dist/expressions/index.d.ts.map +1 -0
  33. package/dist/expressions/index.js +77 -0
  34. package/dist/expressions/index.js.map +1 -0
  35. package/dist/extensions/index.d.ts +85 -0
  36. package/dist/extensions/index.d.ts.map +1 -0
  37. package/dist/extensions/index.js +120 -0
  38. package/dist/extensions/index.js.map +1 -0
  39. package/dist/fts/index.d.ts +28 -0
  40. package/dist/fts/index.d.ts.map +1 -0
  41. package/dist/fts/index.js +110 -0
  42. package/dist/fts/index.js.map +1 -0
  43. package/dist/index.d.ts +128 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +364 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/introspect/types.d.ts +58 -0
  48. package/dist/introspect/types.d.ts.map +1 -0
  49. package/dist/introspect/types.js +2 -0
  50. package/dist/introspect/types.js.map +1 -0
  51. package/dist/joins/index.d.ts +20 -0
  52. package/dist/joins/index.d.ts.map +1 -0
  53. package/dist/joins/index.js +24 -0
  54. package/dist/joins/index.js.map +1 -0
  55. package/dist/migrations/types.d.ts +100 -0
  56. package/dist/migrations/types.d.ts.map +1 -0
  57. package/dist/migrations/types.js +2 -0
  58. package/dist/migrations/types.js.map +1 -0
  59. package/dist/quoting.d.ts +40 -0
  60. package/dist/quoting.d.ts.map +1 -0
  61. package/dist/quoting.js +98 -0
  62. package/dist/quoting.js.map +1 -0
  63. package/dist/schema-objects/extensions.d.ts +5 -0
  64. package/dist/schema-objects/extensions.d.ts.map +1 -0
  65. package/dist/schema-objects/extensions.js +9 -0
  66. package/dist/schema-objects/extensions.js.map +1 -0
  67. package/dist/schema-objects/index.d.ts +25 -0
  68. package/dist/schema-objects/index.d.ts.map +1 -0
  69. package/dist/schema-objects/index.js +86 -0
  70. package/dist/schema-objects/index.js.map +1 -0
  71. package/dist/schema-objects/types.d.ts +62 -0
  72. package/dist/schema-objects/types.d.ts.map +1 -0
  73. package/dist/schema-objects/types.js +2 -0
  74. package/dist/schema-objects/types.js.map +1 -0
  75. package/dist/set-ops/index.d.ts +16 -0
  76. package/dist/set-ops/index.d.ts.map +1 -0
  77. package/dist/set-ops/index.js +41 -0
  78. package/dist/set-ops/index.js.map +1 -0
  79. package/package.json +70 -0
  80. package/src/aggregations/index.ts +127 -0
  81. package/src/clauses.ts +387 -0
  82. package/src/comments/index.ts +49 -0
  83. package/src/compiled-query.ts +12 -0
  84. package/src/dialects/index.ts +103 -0
  85. package/src/dialects/protocol.ts +478 -0
  86. package/src/errors.ts +18 -0
  87. package/src/expressions/index.ts +127 -0
  88. package/src/extensions/index.ts +235 -0
  89. package/src/fts/index.ts +157 -0
  90. package/src/index.ts +685 -0
  91. package/src/introspect/types.ts +60 -0
  92. package/src/joins/index.ts +69 -0
  93. package/src/migrations/types.ts +93 -0
  94. package/src/quoting.ts +111 -0
  95. package/src/schema-objects/extensions.ts +12 -0
  96. package/src/schema-objects/index.ts +125 -0
  97. package/src/schema-objects/types.ts +73 -0
  98. package/src/set-ops/index.ts +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/joins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAElB,KAAK,SAAS,EAQf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAG5E,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAW7D,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,cAAc,CAAC;IACxG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,aAAa,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,cAAc,CAAC;IAC3G,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,cAAc,CAAC;IACvG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,aAAa,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,cAAc,CAAC;IAC1G,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,cAAc,CAAC;IACxG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,aAAa,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,cAAc,CAAC;IAC3G,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC;IAC/D,UAAU,CAAC,UAAU,EAAE,SAAS,mBAAmB,EAAE,GAAG,cAAc,CAAC;IACvE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,CAAC;IAC1D,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IACjC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAClC,OAAO,IAAI,aAAa,CAAC;CAC1B;AAqBD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,cAAc,CAEhB"}
@@ -0,0 +1,24 @@
1
+ import { frozenQuery, joinClauses, joinMethods, queryTelemetry, tailClause, tailMethods, whereClause, } from '../clauses.js';
2
+ import {} from '../index.js';
3
+ import { quoteTable } from '../quoting.js';
4
+ function make(d, s, telemetry) {
5
+ const next = (patch) => make(d, { ...s, ...patch }, telemetry);
6
+ return {
7
+ ...joinMethods(s.joins, next),
8
+ ...tailMethods(s, next),
9
+ where: (col, op, value) => next({ wheres: [...s.wheres, { col, op, value }] }),
10
+ whereGroup: predicates => next({ wheres: [...s.wheres, { kind: 'group', predicates, connector: 'AND' }] }),
11
+ compile: () => {
12
+ const params = [];
13
+ const text = `SELECT * FROM ${quoteTable(d, s.table)}` +
14
+ joinClauses(d, s.joins, params) +
15
+ whereClause(d, s.wheres, params) +
16
+ tailClause(d, s);
17
+ return frozenQuery(text, params, queryTelemetry(d, 'SELECT', s.table, telemetry));
18
+ },
19
+ };
20
+ }
21
+ export function joinableSelectFrom(table, dialect, options) {
22
+ return make(dialect, { table, joins: [], wheres: [], orderBys: [] }, options?.telemetry === true);
23
+ }
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/joins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAiD,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA4B3C,SAAS,IAAI,CAAC,CAAgB,EAAE,CAAQ,EAAE,SAAkB;IAC1D,MAAM,IAAI,GAAG,CAAC,KAAqB,EAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/F,OAAO;QACL,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;QAC7B,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC;QACvB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC9E,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1G,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,MAAM,IAAI,GACR,iBAAiB,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;gBACzC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC/B,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;gBAChC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACpF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,OAAsB,EACtB,OAA8B;IAE9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC;AACpG,CAAC"}
@@ -0,0 +1,100 @@
1
+ export interface ExtensionType {
2
+ readonly extension: string;
3
+ readonly name: string;
4
+ readonly args?: readonly (string | number)[];
5
+ }
6
+ export interface ColumnSnapshot {
7
+ readonly name: string;
8
+ /**
9
+ * The **abstract** column type — `'timestamp'`, not `'TIMESTAMPTZ'`.
10
+ *
11
+ * A snapshot is a record of what the schema says, so it must not name a dialect: the
12
+ * same snapshot is diffed and then emitted for Postgres, MySQL and SQLite. `ddlType`
13
+ * is where it becomes a real one.
14
+ */
15
+ readonly type: string | ExtensionType;
16
+ readonly nullable: boolean;
17
+ readonly primaryKey: boolean;
18
+ /** `varchar(255)` → `255`. MySQL rejects a `VARCHAR` with no length. */
19
+ readonly length?: number | undefined;
20
+ /** Carried so dialect-specific DDL can validate or emit the declaration. */
21
+ readonly unique?: boolean;
22
+ }
23
+ export interface TableOptions {
24
+ readonly shardKey?: readonly string[];
25
+ readonly sortKey?: readonly string[];
26
+ readonly rowstore?: true;
27
+ }
28
+ export type ReferentialAction = 'cascade' | 'restrict' | 'set null' | 'set default' | 'no action';
29
+ export interface ForeignKeySnapshot {
30
+ readonly name: string;
31
+ readonly columns: readonly string[];
32
+ readonly targetTable: string;
33
+ readonly targetColumns: readonly string[];
34
+ readonly onDelete: ReferentialAction;
35
+ readonly onUpdate: ReferentialAction;
36
+ }
37
+ export interface TableSnapshot {
38
+ readonly name: string;
39
+ readonly columns: readonly ColumnSnapshot[];
40
+ /** Ordered by declaration, independently of the deterministically sorted columns. */
41
+ readonly primaryKey: readonly string[];
42
+ readonly foreignKeys: readonly ForeignKeySnapshot[];
43
+ readonly tableOptions?: TableOptions;
44
+ }
45
+ export interface SchemaSnapshot {
46
+ readonly version: 1;
47
+ readonly tables: readonly TableSnapshot[];
48
+ readonly extensions: readonly ExtensionSnapshot[];
49
+ }
50
+ export interface ExtensionSnapshot {
51
+ readonly name: string;
52
+ readonly schema?: string;
53
+ }
54
+ export type ChangeOp = {
55
+ readonly kind: 'create_extension';
56
+ readonly name: string;
57
+ readonly schema?: string;
58
+ } | {
59
+ readonly kind: 'create_table';
60
+ readonly table: string;
61
+ readonly columns: readonly ColumnSnapshot[];
62
+ readonly primaryKey: readonly string[];
63
+ readonly foreignKeys: readonly ForeignKeySnapshot[];
64
+ readonly tableOptions?: TableOptions;
65
+ } | {
66
+ readonly kind: 'drop_table';
67
+ readonly table: string;
68
+ } | {
69
+ readonly kind: 'add_column';
70
+ readonly table: string;
71
+ readonly column: ColumnSnapshot;
72
+ } | {
73
+ readonly kind: 'drop_column';
74
+ readonly table: string;
75
+ readonly column: string;
76
+ } | {
77
+ readonly kind: 'alter_column_type';
78
+ readonly table: string;
79
+ readonly column: string;
80
+ readonly from: string | ExtensionType;
81
+ readonly to: string | ExtensionType;
82
+ /** Required by dialects whose ALTER COLUMN restates nullability. */
83
+ readonly fromNullable?: boolean;
84
+ /** Required by dialects whose ALTER COLUMN restates nullability. */
85
+ readonly toNullable?: boolean;
86
+ } | {
87
+ readonly kind: 'alter_primary_key';
88
+ readonly table: string;
89
+ readonly from: readonly string[];
90
+ readonly to: readonly string[];
91
+ } | {
92
+ readonly kind: 'add_foreign_key';
93
+ readonly table: string;
94
+ readonly fk: ForeignKeySnapshot;
95
+ } | {
96
+ readonly kind: 'drop_foreign_key';
97
+ readonly table: string;
98
+ readonly name: string;
99
+ };
100
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/migrations/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/migrations/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { type DialectTarget } from './dialects/index.js';
2
+ /**
3
+ * Safely quote a single SQL identifier (table name, column name, alias, etc.)
4
+ * according to the target database dialect, escaping internal quote characters.
5
+ *
6
+ * PostgreSQL & SQLite: double quotes (`"`), escaping internal double quotes as `""`.
7
+ * MySQL: backticks (`` ` ``), escaping internal backticks as ``` `` ```.
8
+ */
9
+ export declare function quoteIdentifier(dialect: DialectTarget, identifier: string): string;
10
+ /**
11
+ * Safely quote a column reference that may be dot-qualified (e.g. `schema.table.column` or `table.*`).
12
+ * Each identifier segment is quoted individually, while wildcard `*` segments remain unquoted.
13
+ */
14
+ export declare function quoteColumn(dialect: DialectTarget, col: string): string;
15
+ /** The primary table named by a table specification, without an optional alias. */
16
+ export declare function unaliasedTable(tableSpec: string): string;
17
+ /**
18
+ * Safely quote a table specification, which may be a table name (optionally dot-qualified)
19
+ * or a table alias expression (e.g. `table as alias` or `schema.table AS alias`).
20
+ *
21
+ * Uses manual scanning for `AS` boundaries to avoid polynomial regex backtracking (ReDoS)
22
+ * on arbitrary table specification inputs.
23
+ */
24
+ export declare function quoteTable(dialect: DialectTarget, tableSpec: string): string;
25
+ /**
26
+ * Generates dialect-specific 1-based parameter placeholders:
27
+ * - PostgreSQL uses numbered sequential indices (`$1`, `$2`, ...)
28
+ * - MySQL and SQLite use positional tokens (`?`)
29
+ */
30
+ export declare function formatPlaceholder(dialect: DialectTarget, index: number): string;
31
+ /**
32
+ * Renumbers numbered (`$n`) or named (`@pN`) placeholders by adding an offset.
33
+ * Positional `?` placeholders are already ordered by the parameter array and are unchanged.
34
+ *
35
+ * Note: Designed for compiler-generated SQL where literal values are always
36
+ * parameterized into placeholders. Does not parse raw SQL string literals or comments
37
+ * where a generated placeholder pattern might appear as literal text.
38
+ */
39
+ export declare function renumberPlaceholders(text: string, offset: number, dialect: DialectTarget): string;
40
+ //# sourceMappingURL=quoting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quoting.d.ts","sourceRoot":"","sources":["../src/quoting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAExE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAIlF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvE;AAmCD,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAI5E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAS/E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CASjG"}
@@ -0,0 +1,98 @@
1
+ import { dialectTraits } from './dialects/index.js';
2
+ /**
3
+ * Safely quote a single SQL identifier (table name, column name, alias, etc.)
4
+ * according to the target database dialect, escaping internal quote characters.
5
+ *
6
+ * PostgreSQL & SQLite: double quotes (`"`), escaping internal double quotes as `""`.
7
+ * MySQL: backticks (`` ` ``), escaping internal backticks as ``` `` ```.
8
+ */
9
+ export function quoteIdentifier(dialect, identifier) {
10
+ const [open, close] = dialectTraits(dialect).quote;
11
+ const escaped = identifier.replaceAll(close, close + close);
12
+ return `${open}${escaped}${close}`;
13
+ }
14
+ /**
15
+ * Safely quote a column reference that may be dot-qualified (e.g. `schema.table.column` or `table.*`).
16
+ * Each identifier segment is quoted individually, while wildcard `*` segments remain unquoted.
17
+ */
18
+ export function quoteColumn(dialect, col) {
19
+ return col
20
+ .split('.')
21
+ .map(segment => (segment === '*' ? '*' : quoteIdentifier(dialect, segment)))
22
+ .join('.');
23
+ }
24
+ function isWhitespace(ch) {
25
+ return ch !== undefined && /\s/.test(ch);
26
+ }
27
+ function splitTableSpec(tableSpec) {
28
+ const trimmed = tableSpec.trim();
29
+ const lower = trimmed.toLowerCase();
30
+ let searchIndex = 0;
31
+ while (searchIndex < lower.length) {
32
+ const asIndex = lower.indexOf('as', searchIndex);
33
+ if (asIndex === -1) {
34
+ break;
35
+ }
36
+ const hasSpaceBefore = isWhitespace(trimmed[asIndex - 1]);
37
+ const hasSpaceAfter = isWhitespace(trimmed[asIndex + 2]);
38
+ if (hasSpaceBefore && hasSpaceAfter) {
39
+ const table = trimmed.slice(0, asIndex).trim();
40
+ const alias = trimmed.slice(asIndex + 2).trim();
41
+ if (table.length > 0 && alias.length > 0) {
42
+ return { table, alias };
43
+ }
44
+ }
45
+ searchIndex = asIndex + 2;
46
+ }
47
+ return { table: trimmed };
48
+ }
49
+ /** The primary table named by a table specification, without an optional alias. */
50
+ export function unaliasedTable(tableSpec) {
51
+ return splitTableSpec(tableSpec).table;
52
+ }
53
+ /**
54
+ * Safely quote a table specification, which may be a table name (optionally dot-qualified)
55
+ * or a table alias expression (e.g. `table as alias` or `schema.table AS alias`).
56
+ *
57
+ * Uses manual scanning for `AS` boundaries to avoid polynomial regex backtracking (ReDoS)
58
+ * on arbitrary table specification inputs.
59
+ */
60
+ export function quoteTable(dialect, tableSpec) {
61
+ const { table, alias } = splitTableSpec(tableSpec);
62
+ const tablePart = quoteColumn(dialect, table);
63
+ return alias === undefined ? tablePart : `${tablePart} AS ${quoteIdentifier(dialect, alias)}`;
64
+ }
65
+ /**
66
+ * Generates dialect-specific 1-based parameter placeholders:
67
+ * - PostgreSQL uses numbered sequential indices (`$1`, `$2`, ...)
68
+ * - MySQL and SQLite use positional tokens (`?`)
69
+ */
70
+ export function formatPlaceholder(dialect, index) {
71
+ switch (dialectTraits(dialect).placeholder) {
72
+ case 'numbered':
73
+ return `$${index}`;
74
+ case 'positional':
75
+ return '?';
76
+ case 'named':
77
+ return `@p${index}`;
78
+ }
79
+ }
80
+ /**
81
+ * Renumbers numbered (`$n`) or named (`@pN`) placeholders by adding an offset.
82
+ * Positional `?` placeholders are already ordered by the parameter array and are unchanged.
83
+ *
84
+ * Note: Designed for compiler-generated SQL where literal values are always
85
+ * parameterized into placeholders. Does not parse raw SQL string literals or comments
86
+ * where a generated placeholder pattern might appear as literal text.
87
+ */
88
+ export function renumberPlaceholders(text, offset, dialect) {
89
+ switch (dialectTraits(dialect).placeholder) {
90
+ case 'numbered':
91
+ return text.replace(/\$(\d+)/g, (_match, n) => `$${offset + Number(n)}`);
92
+ case 'named':
93
+ return text.replace(/@p(\d+)/g, (_match, n) => `@p${offset + Number(n)}`);
94
+ case 'positional':
95
+ return text;
96
+ }
97
+ }
98
+ //# sourceMappingURL=quoting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quoting.js","sourceRoot":"","sources":["../src/quoting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type SqlDialect } from '../index.js';
2
+ import type { ExtensionDef } from './types.js';
3
+ export type { ExtensionDef } from './types.js';
4
+ export declare function createExtensionDdl(definition: ExtensionDef, dialect: SqlDialect): string;
5
+ //# sourceMappingURL=extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/schema-objects/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAMxF"}
@@ -0,0 +1,9 @@
1
+ import {} from '../index.js';
2
+ export function createExtensionDdl(definition, dialect) {
3
+ const statements = dialect.migrations.emitSchemaObject({ kind: 'create_extension', definition });
4
+ if (statements.length !== 1 || statements[0] === undefined) {
5
+ throw new TypeError(`${dialect.name} extension emission must return exactly one statement`);
6
+ }
7
+ return statements[0];
8
+ }
9
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/schema-objects/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,aAAa,CAAC;AAK9C,MAAM,UAAU,kBAAkB,CAAC,UAAwB,EAAE,OAAmB;IAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC,CAAC;IACjG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,uDAAuD,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { DialectSqlType, MigrationDialect, SqlDialect } from '../dialects/index.js';
2
+ import { UnsupportedFeatureError } from '../errors.js';
3
+ import type { ColumnSnapshot } from '../migrations/types.js';
4
+ import type { GeneratedColumn, IndexDef, RlsPolicy, RoutineDef, SequenceDef, ViewDef } from './types.js';
5
+ export { UnsupportedFeatureError };
6
+ export { createExtensionDdl, type ExtensionDef } from './extensions.js';
7
+ export type { GeneratedColumn, IndexColumn, IndexDef, IndexMethod, RlsPolicy, RoutineDef, RoutineSqlType, SequenceDef, ViewDef, } from './types.js';
8
+ export type DdlSqlType = DialectSqlType;
9
+ export declare function ddlType(dialect: SqlDialect | MigrationDialect, column: ColumnSnapshot): string;
10
+ export declare function quoteId(dialect: SqlDialect, id: string): string;
11
+ export declare function createIndexDdl(definition: IndexDef, dialect: SqlDialect): string;
12
+ export declare function checkConstraintDdl(table: string, name: string, expression: string, dialect: SqlDialect): string;
13
+ export declare function createViewDdl(definition: ViewDef, dialect: SqlDialect): string;
14
+ export declare function dropViewDdl(name: string, dialect: SqlDialect, materialized?: boolean): string;
15
+ export declare function createSequenceDdl(definition: SequenceDef, dialect: SqlDialect): string;
16
+ export declare function generatedColumnDdl(definition: GeneratedColumn, dialect: SqlDialect): string;
17
+ export declare function createSchemaDdl(name: string, dialect: SqlDialect): string;
18
+ export declare function qualify(schema: string, object: string, dialect: SqlDialect): string;
19
+ export declare function enableRlsDdl(table: string, dialect: SqlDialect): string;
20
+ export declare function createPolicyDdl(definition: RlsPolicy, dialect: SqlDialect): string;
21
+ export declare function createRoutineDdl(definition: RoutineDef, dialect: SqlDialect): string;
22
+ export declare function dropRoutineDdl(definition: RoutineDef, dialect: SqlDialect): string;
23
+ export declare function replaceRoutineStatements(previous: RoutineDef | undefined, next: RoutineDef, dialect: SqlDialect): readonly string[];
24
+ export declare function routineFingerprint(definition: RoutineDef): string;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema-objects/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAyB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChH,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEzG,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,YAAY,EACV,eAAe,EACf,WAAW,EACX,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAcxC,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAE9F;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAEhF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAE/G;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAE9E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAM7F;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAEtF;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAE3F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAEzE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAEnF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAEvE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAElF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAEpF;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAElF;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,UAAU,GAClB,SAAS,MAAM,EAAE,CAMnB;AAUD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUjE"}
@@ -0,0 +1,86 @@
1
+ import { UnsupportedFeatureError } from '../errors.js';
2
+ import { quoteIdentifier } from '../quoting.js';
3
+ export { UnsupportedFeatureError };
4
+ export { createExtensionDdl } from './extensions.js';
5
+ function migrationsOf(dialect) {
6
+ return 'migrations' in dialect ? dialect.migrations : dialect;
7
+ }
8
+ function exactlyOne(dialect, operation) {
9
+ const statements = dialect.migrations.emitSchemaObject(operation);
10
+ if (statements.length !== 1 || statements[0] === undefined) {
11
+ throw new TypeError(`${dialect.name} schema-object emission must return exactly one statement`);
12
+ }
13
+ return statements[0];
14
+ }
15
+ export function ddlType(dialect, column) {
16
+ return migrationsOf(dialect).ddlType(column);
17
+ }
18
+ export function quoteId(dialect, id) {
19
+ return quoteIdentifier(dialect, id);
20
+ }
21
+ export function createIndexDdl(definition, dialect) {
22
+ return exactlyOne(dialect, { kind: 'create_index', definition });
23
+ }
24
+ export function checkConstraintDdl(table, name, expression, dialect) {
25
+ return exactlyOne(dialect, { kind: 'check_constraint', table, name, expression });
26
+ }
27
+ export function createViewDdl(definition, dialect) {
28
+ return exactlyOne(dialect, { kind: 'create_view', definition });
29
+ }
30
+ export function dropViewDdl(name, dialect, materialized) {
31
+ return exactlyOne(dialect, {
32
+ kind: 'drop_view',
33
+ name,
34
+ ...(materialized === undefined ? {} : { materialized }),
35
+ });
36
+ }
37
+ export function createSequenceDdl(definition, dialect) {
38
+ return exactlyOne(dialect, { kind: 'create_sequence', definition });
39
+ }
40
+ export function generatedColumnDdl(definition, dialect) {
41
+ return exactlyOne(dialect, { kind: 'generated_column', definition });
42
+ }
43
+ export function createSchemaDdl(name, dialect) {
44
+ return exactlyOne(dialect, { kind: 'create_schema', name });
45
+ }
46
+ export function qualify(schema, object, dialect) {
47
+ return `${quoteId(dialect, schema)}.${quoteId(dialect, object)}`;
48
+ }
49
+ export function enableRlsDdl(table, dialect) {
50
+ return exactlyOne(dialect, { kind: 'enable_rls', table });
51
+ }
52
+ export function createPolicyDdl(definition, dialect) {
53
+ return exactlyOne(dialect, { kind: 'create_policy', definition });
54
+ }
55
+ export function createRoutineDdl(definition, dialect) {
56
+ return exactlyOne(dialect, { kind: 'create_routine', definition });
57
+ }
58
+ export function dropRoutineDdl(definition, dialect) {
59
+ return exactlyOne(dialect, { kind: 'drop_routine', definition });
60
+ }
61
+ export function replaceRoutineStatements(previous, next, dialect) {
62
+ return dialect.migrations.emitSchemaObject({
63
+ kind: 'replace_routine',
64
+ ...(previous === undefined ? {} : { previous }),
65
+ next,
66
+ });
67
+ }
68
+ function normalizedRoutineBody(body) {
69
+ return body
70
+ .split('\n')
71
+ .map(line => line.replace(/\s+$/u, ''))
72
+ .join('\n')
73
+ .replace(/\n+$/u, '');
74
+ }
75
+ export function routineFingerprint(definition) {
76
+ return JSON.stringify([
77
+ definition.kind,
78
+ definition.name,
79
+ definition.params.map(parameter => [parameter.name, parameter.type, parameter.mode ?? null]),
80
+ definition.returns === undefined ? null : [definition.returns.type, definition.returns.setof ?? null],
81
+ definition.language ?? null,
82
+ definition.deterministic ?? null,
83
+ normalizedRoutineBody(definition.body),
84
+ ]);
85
+ }
86
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-objects/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ export type IndexMethod = 'btree' | 'hash' | 'gin' | 'gist' | 'brin' | 'ivfflat' | 'hnsw';
2
+ export type IndexColumn = string | {
3
+ readonly column: string;
4
+ readonly opclass?: string;
5
+ } | {
6
+ readonly expr: string;
7
+ readonly opclass?: string;
8
+ };
9
+ export interface IndexDef {
10
+ name: string;
11
+ table: string;
12
+ columns: readonly IndexColumn[];
13
+ unique?: boolean;
14
+ where?: string;
15
+ method?: IndexMethod;
16
+ with?: Readonly<Record<string, number>>;
17
+ }
18
+ export interface ViewDef {
19
+ name: string;
20
+ select: string;
21
+ materialized?: boolean;
22
+ }
23
+ export interface SequenceDef {
24
+ name: string;
25
+ start?: number;
26
+ increment?: number;
27
+ }
28
+ export interface GeneratedColumn {
29
+ name: string;
30
+ type: string;
31
+ expression: string;
32
+ stored?: boolean;
33
+ }
34
+ export interface RlsPolicy {
35
+ name: string;
36
+ table: string;
37
+ using: string;
38
+ command?: 'ALL' | 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE';
39
+ }
40
+ export type RoutineSqlType = 'serial' | 'integer' | 'bigint' | 'numeric' | 'text' | 'varchar' | 'boolean' | 'timestamp' | 'json' | 'jsonEnum';
41
+ export interface RoutineDef {
42
+ readonly kind: 'function' | 'procedure';
43
+ readonly name: string;
44
+ readonly params: readonly {
45
+ readonly name: string;
46
+ readonly type: RoutineSqlType;
47
+ readonly mode?: 'in' | 'out' | 'inout';
48
+ }[];
49
+ readonly returns?: {
50
+ readonly type: RoutineSqlType | 'void';
51
+ readonly setof?: boolean;
52
+ };
53
+ readonly language?: string;
54
+ readonly deterministic?: boolean;
55
+ readonly body: string;
56
+ }
57
+ export interface ExtensionDef {
58
+ readonly name: string;
59
+ readonly schema?: string;
60
+ readonly version?: string;
61
+ }
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema-objects/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAC1F,MAAM,MAAM,WAAW,GACnB,MAAM,GACN;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC7D;AAED,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,WAAW,GACX,MAAM,GACN,UAAU,CAAC;AAEf,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;KACxC,EAAE,CAAC;IACJ,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACxF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema-objects/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { DialectTarget } from '../dialects/index.js';
2
+ import { type CompiledQuery } from '../index.js';
3
+ export type SetOp = 'union' | 'unionAll' | 'intersect' | 'except';
4
+ export declare const SET_KEYWORD: Record<SetOp, string>;
5
+ /**
6
+ * Combine compiled queries with a set operator. Numbered and named placeholders
7
+ * continue across fragments; positional `?` placeholders keep parameter-array order.
8
+ * Single query ⇒ passthrough; empty ⇒ throw.
9
+ */
10
+ export declare function setOperation(op: SetOp, queries: readonly CompiledQuery[], dialect: DialectTarget): CompiledQuery;
11
+ export interface BatchHandle {
12
+ readonly statements: readonly CompiledQuery[];
13
+ execute<R>(runner: (stmts: readonly CompiledQuery[]) => Promise<readonly R[]>): Promise<readonly R[]>;
14
+ }
15
+ export declare function batch(statements: readonly CompiledQuery[]): BatchHandle;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/set-ops/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElE,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAK7C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,aAAa,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CAahH;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;CACvG;AACD,wBAAgB,KAAK,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,GAAG,WAAW,CAQvE"}
@@ -0,0 +1,41 @@
1
+ import {} from '../index.js';
2
+ import { renumberPlaceholders } from '../quoting.js';
3
+ export const SET_KEYWORD = {
4
+ union: 'UNION',
5
+ unionAll: 'UNION ALL',
6
+ intersect: 'INTERSECT',
7
+ except: 'EXCEPT',
8
+ };
9
+ /**
10
+ * Combine compiled queries with a set operator. Numbered and named placeholders
11
+ * continue across fragments; positional `?` placeholders keep parameter-array order.
12
+ * Single query ⇒ passthrough; empty ⇒ throw.
13
+ */
14
+ export function setOperation(op, queries, dialect) {
15
+ const [first] = queries;
16
+ if (!first)
17
+ throw new Error('setOperation requires at least one query');
18
+ if (queries.length === 1)
19
+ return first;
20
+ const params = [];
21
+ const fragments = queries.map(q => {
22
+ const offset = params.length;
23
+ const text = renumberPlaceholders(q.text, offset, dialect);
24
+ for (const p of q.parameters)
25
+ params.push(p);
26
+ return text;
27
+ });
28
+ const text = fragments.join(` ${SET_KEYWORD[op]} `);
29
+ return Object.freeze({ text, parameters: Object.freeze(params) });
30
+ }
31
+ export function batch(statements) {
32
+ return {
33
+ statements,
34
+ async execute(runner) {
35
+ if (statements.length === 0)
36
+ return [];
37
+ return runner(statements);
38
+ },
39
+ };
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/set-ops/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAIrD,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAAS,EAAE,OAAiC,EAAE,OAAsB;IAC/F,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC;AAOD,MAAM,UAAU,KAAK,CAAC,UAAoC;IACxD,OAAO;QACL,UAAU;QACV,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}