relq 1.0.1 → 1.0.3

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 (194) hide show
  1. package/dist/cjs/addon/buffer/index.cjs +1881 -0
  2. package/dist/cjs/addon/pg/index.cjs +4812 -0
  3. package/dist/cjs/addon/pg-cursor/index.cjs +1451 -0
  4. package/dist/cjs/addon/pg-format/index.cjs +2270 -0
  5. package/dist/cjs/cli/commands/add.cjs +430 -25
  6. package/dist/cjs/cli/commands/branch.cjs +131 -0
  7. package/dist/cjs/cli/commands/checkout.cjs +121 -0
  8. package/dist/cjs/cli/commands/cherry-pick.cjs +282 -0
  9. package/dist/cjs/cli/commands/commit.cjs +21 -29
  10. package/dist/cjs/cli/commands/diff.cjs +144 -69
  11. package/dist/cjs/cli/commands/export.cjs +70 -11
  12. package/dist/cjs/cli/commands/fetch.cjs +42 -18
  13. package/dist/cjs/cli/commands/generate.cjs +28 -54
  14. package/dist/cjs/cli/commands/history.cjs +19 -40
  15. package/dist/cjs/cli/commands/import.cjs +305 -41
  16. package/dist/cjs/cli/commands/init.cjs +69 -59
  17. package/dist/cjs/cli/commands/introspect.cjs +4 -8
  18. package/dist/cjs/cli/commands/log.cjs +84 -15
  19. package/dist/cjs/cli/commands/merge.cjs +207 -0
  20. package/dist/cjs/cli/commands/migrate.cjs +13 -26
  21. package/dist/cjs/cli/commands/pull.cjs +321 -95
  22. package/dist/cjs/cli/commands/push.cjs +228 -52
  23. package/dist/cjs/cli/commands/remote.cjs +17 -0
  24. package/dist/cjs/cli/commands/reset.cjs +148 -0
  25. package/dist/cjs/cli/commands/resolve.cjs +191 -0
  26. package/dist/cjs/cli/commands/rollback.cjs +17 -39
  27. package/dist/cjs/cli/commands/stash.cjs +152 -0
  28. package/dist/cjs/cli/commands/status.cjs +52 -9
  29. package/dist/cjs/cli/commands/sync.cjs +30 -50
  30. package/dist/cjs/cli/commands/tag.cjs +146 -0
  31. package/dist/cjs/cli/index.cjs +117 -10
  32. package/dist/cjs/cli/utils/change-tracker.cjs +107 -3
  33. package/dist/cjs/cli/utils/cli-utils.cjs +217 -0
  34. package/dist/cjs/cli/utils/commit-manager.cjs +3 -3
  35. package/dist/cjs/cli/utils/config-loader.cjs +34 -8
  36. package/dist/cjs/cli/utils/env-loader.cjs +3 -2
  37. package/dist/cjs/cli/utils/fast-introspect.cjs +110 -4
  38. package/dist/cjs/cli/utils/git-utils.cjs +42 -161
  39. package/dist/cjs/cli/utils/pool-manager.cjs +156 -0
  40. package/dist/cjs/cli/utils/project-root.cjs +107 -0
  41. package/dist/cjs/cli/utils/relqignore.cjs +297 -38
  42. package/dist/cjs/cli/utils/repo-manager.cjs +92 -3
  43. package/dist/cjs/cli/utils/schema-comparator.cjs +301 -11
  44. package/dist/cjs/cli/utils/schema-diff.cjs +202 -1
  45. package/dist/cjs/cli/utils/schema-hash.cjs +2 -1
  46. package/dist/cjs/cli/utils/schema-introspect.cjs +9 -5
  47. package/dist/cjs/cli/utils/snapshot-manager.cjs +1 -0
  48. package/dist/cjs/cli/utils/spinner.cjs +14 -106
  49. package/dist/cjs/cli/utils/sql-generator.cjs +2 -2
  50. package/dist/cjs/cli/utils/sql-parser.cjs +94 -7
  51. package/dist/cjs/cli/utils/type-generator.cjs +28 -16
  52. package/dist/cjs/condition/array-condition-builder.cjs +1 -1
  53. package/dist/cjs/condition/condition-collector.cjs +1 -1
  54. package/dist/cjs/condition/fulltext-condition-builder.cjs +1 -1
  55. package/dist/cjs/condition/geometric-condition-builder.cjs +1 -1
  56. package/dist/cjs/condition/jsonb-condition-builder.cjs +1 -1
  57. package/dist/cjs/condition/network-condition-builder.cjs +1 -1
  58. package/dist/cjs/condition/range-condition-builder.cjs +1 -1
  59. package/dist/cjs/copy/copy-builder.cjs +1 -1
  60. package/dist/cjs/core/query-builder.cjs +1 -1
  61. package/dist/cjs/core/relq-client.cjs +2 -2
  62. package/dist/cjs/count/count-builder.cjs +1 -1
  63. package/dist/cjs/cte/cte-builder.cjs +1 -1
  64. package/dist/cjs/delete/delete-builder.cjs +1 -1
  65. package/dist/cjs/function/create-function-builder.cjs +1 -1
  66. package/dist/cjs/functions/advanced-functions.cjs +1 -1
  67. package/dist/cjs/functions/case-builder.cjs +1 -1
  68. package/dist/cjs/functions/geometric-functions.cjs +1 -1
  69. package/dist/cjs/functions/network-functions.cjs +1 -1
  70. package/dist/cjs/functions/sql-functions.cjs +1 -1
  71. package/dist/cjs/indexing/create-index-builder.cjs +1 -1
  72. package/dist/cjs/indexing/drop-index-builder.cjs +1 -1
  73. package/dist/cjs/insert/conflict-builder.cjs +1 -1
  74. package/dist/cjs/insert/insert-builder.cjs +1 -1
  75. package/dist/cjs/maintenance/vacuum-builder.cjs +1 -1
  76. package/dist/cjs/pubsub/listen-notify-builder.cjs +1 -1
  77. package/dist/cjs/pubsub/listener-connection.cjs +2 -2
  78. package/dist/cjs/raw/raw-query-builder.cjs +1 -1
  79. package/dist/cjs/schema/schema-builder.cjs +1 -1
  80. package/dist/cjs/schema-definition/table-definition.cjs +1 -1
  81. package/dist/cjs/select/aggregate-builder.cjs +1 -1
  82. package/dist/cjs/select/select-builder.cjs +1 -1
  83. package/dist/cjs/sequence/sequence-builder.cjs +1 -1
  84. package/dist/cjs/table/alter-table-builder.cjs +1 -1
  85. package/dist/cjs/table/constraint-builder.cjs +1 -1
  86. package/dist/cjs/table/create-table-builder.cjs +1 -1
  87. package/dist/cjs/table/partition-builder.cjs +1 -1
  88. package/dist/cjs/table/truncate-builder.cjs +1 -1
  89. package/dist/cjs/transaction/transaction-builder.cjs +1 -1
  90. package/dist/cjs/trigger/create-trigger-builder.cjs +1 -1
  91. package/dist/cjs/update/array-update-builder.cjs +1 -1
  92. package/dist/cjs/update/update-builder.cjs +1 -1
  93. package/dist/cjs/utils/index.cjs +1 -1
  94. package/dist/cjs/view/create-view-builder.cjs +1 -1
  95. package/dist/cjs/window/window-builder.cjs +1 -1
  96. package/dist/config.d.ts +16 -25
  97. package/dist/esm/cli/commands/add.js +399 -27
  98. package/dist/esm/cli/commands/branch.js +95 -0
  99. package/dist/esm/cli/commands/checkout.js +85 -0
  100. package/dist/esm/cli/commands/cherry-pick.js +246 -0
  101. package/dist/esm/cli/commands/commit.js +22 -30
  102. package/dist/esm/cli/commands/diff.js +144 -69
  103. package/dist/esm/cli/commands/export.js +71 -12
  104. package/dist/esm/cli/commands/fetch.js +42 -18
  105. package/dist/esm/cli/commands/generate.js +28 -54
  106. package/dist/esm/cli/commands/history.js +11 -32
  107. package/dist/esm/cli/commands/import.js +306 -42
  108. package/dist/esm/cli/commands/init.js +65 -55
  109. package/dist/esm/cli/commands/introspect.js +4 -8
  110. package/dist/esm/cli/commands/log.js +78 -10
  111. package/dist/esm/cli/commands/merge.js +171 -0
  112. package/dist/esm/cli/commands/migrate.js +13 -26
  113. package/dist/esm/cli/commands/pull.js +313 -87
  114. package/dist/esm/cli/commands/push.js +223 -47
  115. package/dist/esm/cli/commands/remote.js +14 -0
  116. package/dist/esm/cli/commands/reset.js +112 -0
  117. package/dist/esm/cli/commands/resolve.js +155 -0
  118. package/dist/esm/cli/commands/rollback.js +17 -39
  119. package/dist/esm/cli/commands/stash.js +116 -0
  120. package/dist/esm/cli/commands/status.js +20 -10
  121. package/dist/esm/cli/commands/sync.js +30 -50
  122. package/dist/esm/cli/commands/tag.js +110 -0
  123. package/dist/esm/cli/index.js +118 -11
  124. package/dist/esm/cli/utils/change-tracker.js +107 -3
  125. package/dist/esm/cli/utils/cli-utils.js +169 -0
  126. package/dist/esm/cli/utils/commit-manager.js +3 -3
  127. package/dist/esm/cli/utils/config-loader.js +34 -8
  128. package/dist/esm/cli/utils/env-loader.js +3 -2
  129. package/dist/esm/cli/utils/fast-introspect.js +110 -4
  130. package/dist/esm/cli/utils/git-utils.js +2 -124
  131. package/dist/esm/cli/utils/pool-manager.js +114 -0
  132. package/dist/esm/cli/utils/project-root.js +69 -0
  133. package/dist/esm/cli/utils/relqignore.js +278 -37
  134. package/dist/esm/cli/utils/repo-manager.js +83 -3
  135. package/dist/esm/cli/utils/schema-comparator.js +301 -11
  136. package/dist/esm/cli/utils/schema-diff.js +202 -1
  137. package/dist/esm/cli/utils/schema-hash.js +2 -1
  138. package/dist/esm/cli/utils/schema-introspect.js +9 -5
  139. package/dist/esm/cli/utils/snapshot-manager.js +1 -0
  140. package/dist/esm/cli/utils/spinner.js +1 -101
  141. package/dist/esm/cli/utils/sql-generator.js +2 -2
  142. package/dist/esm/cli/utils/sql-parser.js +94 -7
  143. package/dist/esm/cli/utils/type-generator.js +28 -16
  144. package/dist/esm/condition/array-condition-builder.js +1 -1
  145. package/dist/esm/condition/condition-collector.js +1 -1
  146. package/dist/esm/condition/fulltext-condition-builder.js +1 -1
  147. package/dist/esm/condition/geometric-condition-builder.js +1 -1
  148. package/dist/esm/condition/jsonb-condition-builder.js +1 -1
  149. package/dist/esm/condition/network-condition-builder.js +1 -1
  150. package/dist/esm/condition/range-condition-builder.js +1 -1
  151. package/dist/esm/copy/copy-builder.js +1 -1
  152. package/dist/esm/core/query-builder.js +1 -1
  153. package/dist/esm/core/relq-client.js +2 -2
  154. package/dist/esm/count/count-builder.js +1 -1
  155. package/dist/esm/cte/cte-builder.js +1 -1
  156. package/dist/esm/delete/delete-builder.js +1 -1
  157. package/dist/esm/function/create-function-builder.js +1 -1
  158. package/dist/esm/functions/advanced-functions.js +1 -1
  159. package/dist/esm/functions/case-builder.js +1 -1
  160. package/dist/esm/functions/geometric-functions.js +1 -1
  161. package/dist/esm/functions/network-functions.js +1 -1
  162. package/dist/esm/functions/sql-functions.js +1 -1
  163. package/dist/esm/indexing/create-index-builder.js +1 -1
  164. package/dist/esm/indexing/drop-index-builder.js +1 -1
  165. package/dist/esm/insert/conflict-builder.js +1 -1
  166. package/dist/esm/insert/insert-builder.js +1 -1
  167. package/dist/esm/maintenance/vacuum-builder.js +1 -1
  168. package/dist/esm/pubsub/listen-notify-builder.js +1 -1
  169. package/dist/esm/pubsub/listener-connection.js +2 -2
  170. package/dist/esm/raw/raw-query-builder.js +1 -1
  171. package/dist/esm/schema/schema-builder.js +1 -1
  172. package/dist/esm/schema-definition/table-definition.js +1 -1
  173. package/dist/esm/select/aggregate-builder.js +1 -1
  174. package/dist/esm/select/select-builder.js +1 -1
  175. package/dist/esm/sequence/sequence-builder.js +1 -1
  176. package/dist/esm/table/alter-table-builder.js +1 -1
  177. package/dist/esm/table/constraint-builder.js +1 -1
  178. package/dist/esm/table/create-table-builder.js +1 -1
  179. package/dist/esm/table/partition-builder.js +1 -1
  180. package/dist/esm/table/truncate-builder.js +1 -1
  181. package/dist/esm/transaction/transaction-builder.js +1 -1
  182. package/dist/esm/trigger/create-trigger-builder.js +1 -1
  183. package/dist/esm/update/array-update-builder.js +1 -1
  184. package/dist/esm/update/update-builder.js +1 -1
  185. package/dist/esm/utils/index.js +1 -1
  186. package/dist/esm/view/create-view-builder.js +1 -1
  187. package/dist/esm/window/window-builder.js +1 -1
  188. package/dist/index.d.ts +25 -8
  189. package/dist/schema-builder.d.ts +16 -6
  190. package/package.json +1 -1
  191. /package/dist/{addons/buffer.js → esm/addon/buffer/index.js} +0 -0
  192. /package/dist/{addons/pg.js → esm/addon/pg/index.js} +0 -0
  193. /package/dist/{addons/pg-cursor.js → esm/addon/pg-cursor/index.js} +0 -0
  194. /package/dist/{addons/pg-format.js → esm/addon/pg-format/index.js} +0 -0
@@ -1,108 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.colors = void 0;
4
- exports.createSpinner = createSpinner;
5
- exports.progressBar = progressBar;
6
- exports.formatBytes = formatBytes;
7
- exports.formatDuration = formatDuration;
8
- const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
9
- const SPINNER_INTERVAL = 80;
10
- function createSpinner() {
11
- let intervalId = null;
12
- let frameIndex = 0;
13
- let currentMessage = '';
14
- let isSpinning = false;
15
- const clearLine = () => {
16
- process.stdout.write('\r\x1b[K');
17
- };
18
- const render = () => {
19
- if (!isSpinning)
20
- return;
21
- clearLine();
22
- const frame = SPINNER_FRAMES[frameIndex];
23
- process.stdout.write(`\x1b[36m${frame}\x1b[0m ${currentMessage}`);
24
- frameIndex = (frameIndex + 1) % SPINNER_FRAMES.length;
25
- };
26
- return {
27
- start(message) {
28
- if (isSpinning)
29
- this.stop();
30
- currentMessage = message;
31
- isSpinning = true;
32
- frameIndex = 0;
33
- intervalId = setInterval(render, SPINNER_INTERVAL);
34
- render();
35
- },
36
- update(message) {
37
- currentMessage = message;
38
- },
39
- succeed(message) {
40
- this.stop();
41
- console.log(`\x1b[32m✓\x1b[0m ${message || currentMessage}`);
42
- },
43
- fail(message) {
44
- this.stop();
45
- console.log(`\x1b[31m✗\x1b[0m ${message || currentMessage}`);
46
- },
47
- info(message) {
48
- this.stop();
49
- console.log(`\x1b[34mℹ\x1b[0m ${message || currentMessage}`);
50
- },
51
- warn(message) {
52
- this.stop();
53
- console.log(`\x1b[33m⚠\x1b[0m ${message || currentMessage}`);
54
- },
55
- stop() {
56
- if (intervalId) {
57
- clearInterval(intervalId);
58
- intervalId = null;
59
- }
60
- if (isSpinning) {
61
- clearLine();
62
- isSpinning = false;
63
- }
64
- }
65
- };
66
- }
67
- exports.colors = {
68
- reset: '\x1b[0m',
69
- bold: (text) => `\x1b[1m${text}\x1b[0m`,
70
- dim: (text) => `\x1b[2m${text}\x1b[0m`,
71
- red: (text) => `\x1b[31m${text}\x1b[0m`,
72
- green: (text) => `\x1b[32m${text}\x1b[0m`,
73
- yellow: (text) => `\x1b[33m${text}\x1b[0m`,
74
- blue: (text) => `\x1b[34m${text}\x1b[0m`,
75
- magenta: (text) => `\x1b[35m${text}\x1b[0m`,
76
- cyan: (text) => `\x1b[36m${text}\x1b[0m`,
77
- gray: (text) => `\x1b[90m${text}\x1b[0m`,
78
- white: (text) => `\x1b[37m${text}\x1b[0m`,
79
- success: (text) => `\x1b[32m${text}\x1b[0m`,
80
- error: (text) => `\x1b[31m${text}\x1b[0m`,
81
- warning: (text) => `\x1b[33m${text}\x1b[0m`,
82
- info: (text) => `\x1b[34m${text}\x1b[0m`,
83
- muted: (text) => `\x1b[90m${text}\x1b[0m`,
84
- };
85
- function progressBar(current, total, width = 30) {
86
- const percentage = Math.min(100, Math.round((current / total) * 100));
87
- const filled = Math.round((percentage / 100) * width);
88
- const empty = width - filled;
89
- const bar = '█'.repeat(filled) + '░'.repeat(empty);
90
- return `\x1b[36m${bar}\x1b[0m ${percentage}%`;
91
- }
92
- function formatBytes(bytes) {
93
- if (bytes === 0)
94
- return '0 B';
95
- const k = 1024;
96
- const sizes = ['B', 'KB', 'MB', 'GB'];
97
- const i = Math.floor(Math.log(bytes) / Math.log(k));
98
- return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;
99
- }
100
- function formatDuration(ms) {
101
- if (ms < 1000)
102
- return `${ms}ms`;
103
- if (ms < 60000)
104
- return `${(ms / 1000).toFixed(1)}s`;
105
- const minutes = Math.floor(ms / 60000);
106
- const seconds = Math.round((ms % 60000) / 1000);
107
- return `${minutes}m ${seconds}s`;
108
- }
3
+ exports.success = exports.confirm = exports.requireInit = exports.hint = exports.warning = exports.error = exports.fatal = exports.formatDuration = exports.formatBytes = exports.progressBar = exports.createSpinner = exports.colors = void 0;
4
+ var cli_utils_1 = require("./cli-utils.cjs");
5
+ Object.defineProperty(exports, "colors", { enumerable: true, get: function () { return cli_utils_1.colors; } });
6
+ Object.defineProperty(exports, "createSpinner", { enumerable: true, get: function () { return cli_utils_1.createSpinner; } });
7
+ Object.defineProperty(exports, "progressBar", { enumerable: true, get: function () { return cli_utils_1.progressBar; } });
8
+ Object.defineProperty(exports, "formatBytes", { enumerable: true, get: function () { return cli_utils_1.formatBytes; } });
9
+ Object.defineProperty(exports, "formatDuration", { enumerable: true, get: function () { return cli_utils_1.formatDuration; } });
10
+ Object.defineProperty(exports, "fatal", { enumerable: true, get: function () { return cli_utils_1.fatal; } });
11
+ Object.defineProperty(exports, "error", { enumerable: true, get: function () { return cli_utils_1.error; } });
12
+ Object.defineProperty(exports, "warning", { enumerable: true, get: function () { return cli_utils_1.warning; } });
13
+ Object.defineProperty(exports, "hint", { enumerable: true, get: function () { return cli_utils_1.hint; } });
14
+ Object.defineProperty(exports, "requireInit", { enumerable: true, get: function () { return cli_utils_1.requireInit; } });
15
+ Object.defineProperty(exports, "confirm", { enumerable: true, get: function () { return cli_utils_1.confirm; } });
16
+ Object.defineProperty(exports, "success", { enumerable: true, get: function () { return cli_utils_1.success; } });
@@ -222,7 +222,7 @@ function generateColumnSQL(col) {
222
222
  if (col.identityGeneration) {
223
223
  parts.push(`GENERATED ${col.identityGeneration} AS IDENTITY`);
224
224
  }
225
- if (!col.isNullable && !col.isPrimaryKey) {
225
+ if (!col.isNullable && !col.isPrimaryKey && !col.identityGeneration) {
226
226
  parts.push('NOT NULL');
227
227
  }
228
228
  if (col.defaultValue !== null && col.defaultValue !== undefined && !col.isGenerated) {
@@ -340,7 +340,7 @@ function generateIndexSQL(index, tableName) {
340
340
  if (index.expression) {
341
341
  parts.push(`(${index.expression})`);
342
342
  }
343
- else if (index.columns && index.columns.length > 0) {
343
+ else if (index.columns && Array.isArray(index.columns) && index.columns.length > 0) {
344
344
  const cols = index.columns.map(c => quoteColumnRef(c)).join(', ');
345
345
  parts.push(`(${cols})`);
346
346
  }
@@ -13,6 +13,9 @@ function parseSqlFile(sqlContent) {
13
13
  const sequences = [];
14
14
  const collations = [];
15
15
  const foreignTables = [];
16
+ const views = [];
17
+ const materializedViews = [];
18
+ const foreignServers = [];
16
19
  const extensions = [];
17
20
  const partitions = [];
18
21
  const cleanedSql = removeComments(sqlContent);
@@ -25,7 +28,14 @@ function parseSqlFile(sqlContent) {
25
28
  parseTables(cleanedSql, tables, partitions, enums, domains);
26
29
  parseIndexes(cleanedSql, tables);
27
30
  parseForeignTables(cleanedSql, foreignTables);
28
- return { tables, enums, domains, compositeTypes, sequences, collations, foreignTables, extensions, partitions };
31
+ parseViews(cleanedSql, views);
32
+ parseMaterializedViews(cleanedSql, materializedViews);
33
+ parseForeignServers(cleanedSql, foreignServers);
34
+ return {
35
+ tables, enums, domains, compositeTypes, sequences, collations,
36
+ foreignTables, views, materializedViews, foreignServers,
37
+ extensions, partitions
38
+ };
29
39
  }
30
40
  function removeComments(sql) {
31
41
  let result = sql.replace(/\/\*[\s\S]*?\*\//g, '');
@@ -117,11 +127,11 @@ function parseCompositeTypeBody(body) {
117
127
  const trimmed = line.trim();
118
128
  if (!trimmed)
119
129
  continue;
120
- const attrMatch = trimmed.match(/^(\w+)\s+(.+)$/);
130
+ const attrMatch = trimmed.match(/^(?:"([^"]+)"|(\w+))\s+(.+)$/);
121
131
  if (attrMatch) {
122
132
  attributes.push({
123
- name: attrMatch[1],
124
- type: attrMatch[2].trim().replace(/,\s*$/, ''),
133
+ name: attrMatch[1] || attrMatch[2],
134
+ type: attrMatch[3].trim().replace(/,\s*$/, ''),
125
135
  });
126
136
  }
127
137
  }
@@ -620,9 +630,9 @@ function extractMaxLength(type) {
620
630
  }
621
631
  function parseConstraint(def) {
622
632
  const upper = def.toUpperCase();
623
- const namedMatch = def.match(/CONSTRAINT\s+(\w+)\s+(.+)/i);
624
- const constraintDef = namedMatch ? namedMatch[2] : def;
625
- const constraintName = namedMatch ? namedMatch[1] : '';
633
+ const namedMatch = def.match(/CONSTRAINT\s+(?:"([^"]+)"|(\w+))\s+(.+)/is);
634
+ const constraintDef = namedMatch ? namedMatch[3] : def;
635
+ const constraintName = namedMatch ? (namedMatch[1] || namedMatch[2]) : '';
626
636
  const constraintUpper = constraintDef.toUpperCase();
627
637
  if (constraintUpper.startsWith('PRIMARY KEY')) {
628
638
  const colsMatch = constraintDef.match(/PRIMARY\s+KEY\s*\(\s*([^)]+)\s*\)/i);
@@ -998,4 +1008,81 @@ function parseComments(sql) {
998
1008
  }
999
1009
  return comments;
1000
1010
  }
1011
+ function parseViews(sql, views) {
1012
+ const viewRegex = /CREATE\s+(?:OR\s+REPLACE\s+)?VIEW\s+(?:IF\s+NOT\s+EXISTS\s+)?(?:(?:"?(\w+)"?\.)?"?(\w+)"?)\s*(?:\(([^)]+)\))?\s+AS\s+([\s\S]+?)(?:;|\s+WITH\s+(?:CASCADED|LOCAL)\s+CHECK\s+OPTION\s*;)/gi;
1013
+ let match;
1014
+ while ((match = viewRegex.exec(sql)) !== null) {
1015
+ const schema = match[1] || 'public';
1016
+ const name = match[2];
1017
+ const columnsStr = match[3];
1018
+ const definition = match[4].trim();
1019
+ const columns = columnsStr
1020
+ ? columnsStr.split(',').map(c => c.trim().replace(/"/g, ''))
1021
+ : undefined;
1022
+ views.push({
1023
+ name,
1024
+ schema,
1025
+ definition,
1026
+ columns,
1027
+ });
1028
+ }
1029
+ const simpleViewRegex = /CREATE\s+(?:OR\s+REPLACE\s+)?VIEW\s+(?:IF\s+NOT\s+EXISTS\s+)?(?:(?:"?(\w+)"?\.)?"?(\w+)"?)\s*AS\s+(SELECT[\s\S]+?);/gi;
1030
+ while ((match = simpleViewRegex.exec(sql)) !== null) {
1031
+ const schema = match[1] || 'public';
1032
+ const name = match[2];
1033
+ const definition = match[3].trim();
1034
+ if (views.some(v => v.name === name))
1035
+ continue;
1036
+ views.push({
1037
+ name,
1038
+ schema,
1039
+ definition,
1040
+ });
1041
+ }
1042
+ }
1043
+ function parseMaterializedViews(sql, materializedViews) {
1044
+ const mviewRegex = /CREATE\s+MATERIALIZED\s+VIEW\s+(?:IF\s+NOT\s+EXISTS\s+)?(?:(?:"?(\w+)"?\.)?"?(\w+)"?)\s*(?:\(([^)]+)\))?\s+AS\s+([\s\S]+?)(?:WITH\s+(NO\s+)?DATA\s*)?;/gi;
1045
+ let match;
1046
+ while ((match = mviewRegex.exec(sql)) !== null) {
1047
+ const schema = match[1] || 'public';
1048
+ const name = match[2];
1049
+ const columnsStr = match[3];
1050
+ const definition = match[4].trim();
1051
+ const withNoData = match[5] !== undefined;
1052
+ const columns = columnsStr
1053
+ ? columnsStr.split(',').map(c => c.trim().replace(/"/g, ''))
1054
+ : undefined;
1055
+ materializedViews.push({
1056
+ name,
1057
+ schema,
1058
+ definition,
1059
+ columns,
1060
+ withData: !withNoData,
1061
+ });
1062
+ }
1063
+ }
1064
+ function parseForeignServers(sql, foreignServers) {
1065
+ const serverRegex = /CREATE\s+SERVER\s+(?:IF\s+NOT\s+EXISTS\s+)?"?(\w+)"?\s+FOREIGN\s+DATA\s+WRAPPER\s+"?(\w+)"?\s*(?:OPTIONS\s*\(([^)]+)\))?;/gi;
1066
+ let match;
1067
+ while ((match = serverRegex.exec(sql)) !== null) {
1068
+ const name = match[1];
1069
+ const fdwName = match[2];
1070
+ const optionsStr = match[3];
1071
+ const options = {};
1072
+ if (optionsStr) {
1073
+ const optParts = optionsStr.split(',');
1074
+ for (const part of optParts) {
1075
+ const optMatch = part.trim().match(/(\w+)\s+'([^']+)'/);
1076
+ if (optMatch) {
1077
+ options[optMatch[1]] = optMatch[2];
1078
+ }
1079
+ }
1080
+ }
1081
+ foreignServers.push({
1082
+ name,
1083
+ fdwName,
1084
+ options: Object.keys(options).length > 0 ? options : undefined,
1085
+ });
1086
+ }
1087
+ }
1001
1088
  exports.default = parseSqlFile;
@@ -703,8 +703,18 @@ function formatDefaultValue(val, col, domainMap) {
703
703
  }
704
704
  if (cleaned === "'[]'" || cleaned === 'ARRAY[]')
705
705
  return 'emptyArray()';
706
+ const isJsonColumn = col.dataType.toLowerCase().includes('json');
707
+ if (isJsonColumn && cleaned.startsWith("'") && cleaned.endsWith("'")) {
708
+ const jsonStr = cleaned.slice(1, -1).replace(/''/g, "'");
709
+ try {
710
+ const parsed = JSON.parse(jsonStr);
711
+ return JSON.stringify(parsed);
712
+ }
713
+ catch {
714
+ }
715
+ }
706
716
  const pgArrayMatch = cleaned.match(/^'?\{([^}]*)\}'?$/);
707
- if (pgArrayMatch) {
717
+ if (pgArrayMatch && !isJsonColumn) {
708
718
  const contents = pgArrayMatch[1];
709
719
  if (contents === '') {
710
720
  return 'emptyArray()';
@@ -739,16 +749,6 @@ function formatDefaultValue(val, col, domainMap) {
739
749
  }
740
750
  return 'emptyArray()';
741
751
  }
742
- const isJsonColumn = col.dataType.toLowerCase().includes('json');
743
- if (isJsonColumn && cleaned.startsWith("'") && cleaned.endsWith("'")) {
744
- const jsonStr = cleaned.slice(1, -1).replace(/''/g, "'");
745
- try {
746
- const parsed = JSON.parse(jsonStr);
747
- return JSON.stringify(parsed);
748
- }
749
- catch {
750
- }
751
- }
752
752
  if (cleaned.startsWith("'") && cleaned.endsWith("'")) {
753
753
  const str = cleaned.slice(1, -1).replace(/'/g, "\\'");
754
754
  return `'${str}'`;
@@ -1432,6 +1432,17 @@ function parseCheckValue(value, camelCase) {
1432
1432
  if (/^-?\d+(\.\d+)?$/.test(value)) {
1433
1433
  return value;
1434
1434
  }
1435
+ const castMatch = value.match(/^\(?(.+?)\)?::[a-z_][a-z0-9_]*(\[\])?$/i);
1436
+ if (castMatch) {
1437
+ const innerValue = castMatch[1].trim();
1438
+ if (/^-?\d+(\.\d+)?$/.test(innerValue)) {
1439
+ return innerValue;
1440
+ }
1441
+ if (/^'.*'$/.test(innerValue)) {
1442
+ return innerValue;
1443
+ }
1444
+ return parseCheckValue(innerValue, camelCase);
1445
+ }
1435
1446
  if (/^TRUE$/i.test(value))
1436
1447
  return 'true';
1437
1448
  if (/^FALSE$/i.test(value))
@@ -1553,16 +1564,17 @@ function generateDefineTable(table, camelCase = true, childPartitions, enumNames
1553
1564
  if (enumMatch) {
1554
1565
  const colName = enumMatch[1];
1555
1566
  const valuesStr = enumMatch[2];
1556
- const values = valuesStr
1557
- .match(/'([^']+)'/g)
1558
- ?.map(v => v.replace(/'/g, '')) || [];
1567
+ const values = valuesStr.match(/'([^']+)'/g)?.map(v => v.replace(/'/g, '')) || [];
1559
1568
  if (values.length > 0) {
1560
- columnChecks.set(colName.toLowerCase(), values);
1569
+ columnChecks.set(colName, values);
1561
1570
  }
1562
1571
  }
1563
1572
  }
1564
1573
  const columns = table.columns
1565
- .map(col => generateColumnDef(col, seenColumns, camelCase, columnChecks.get(col.name.toLowerCase()), enumNames, domainNames, compositeNames, domainMap))
1574
+ .map(col => {
1575
+ const checkValues = columnChecks.get(col.name);
1576
+ return generateColumnDef(col, seenColumns, camelCase, checkValues, enumNames, domainNames, compositeNames, domainMap);
1577
+ })
1566
1578
  .filter(Boolean);
1567
1579
  const columnNames = Array.from(seenColumns);
1568
1580
  const indexesFn = table.indexes ? generateIndexes(table.indexes, columnNames, camelCase) : null;
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ArrayConditionCollector = void 0;
7
7
  exports.buildArrayConditionSQL = buildArrayConditionSQL;
8
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
8
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
9
9
  const array_string_condition_builder_1 = require("./array-string-condition-builder.cjs");
10
10
  const array_numeric_condition_builder_1 = require("./array-numeric-condition-builder.cjs");
11
11
  const array_specialized_condition_builder_1 = require("./array-specialized-condition-builder.cjs");
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ConditionCollector = void 0;
7
7
  exports.buildConditionSQL = buildConditionSQL;
8
8
  exports.buildConditionsSQL = buildConditionsSQL;
9
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
9
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
10
10
  const jsonb_condition_builder_1 = require("./jsonb-condition-builder.cjs");
11
11
  const array_condition_builder_1 = require("./array-condition-builder.cjs");
12
12
  const fulltext_condition_builder_1 = require("./fulltext-condition-builder.cjs");
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FulltextConditionCollector = void 0;
7
7
  exports.buildFulltextConditionSQL = buildFulltextConditionSQL;
8
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
8
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
9
9
  class FulltextConditionCollector {
10
10
  parent;
11
11
  constructor(parent) {
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.GeometricConditionCollector = void 0;
7
7
  exports.buildGeometricConditionSQL = buildGeometricConditionSQL;
8
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
8
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
9
9
  class GeometricConditionCollector {
10
10
  parent;
11
11
  constructor(parent) {
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.JsonbConditionCollector = void 0;
7
7
  exports.buildJsonbConditionSQL = buildJsonbConditionSQL;
8
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
8
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
9
9
  class JsonbConditionCollector {
10
10
  parent;
11
11
  constructor(parent) {
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.NetworkConditionCollector = void 0;
7
7
  exports.buildNetworkConditionSQL = buildNetworkConditionSQL;
8
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
8
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
9
9
  class NetworkConditionCollector {
10
10
  parent;
11
11
  constructor(parent) {
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RangeConditionCollector = void 0;
7
7
  exports.buildRangeConditionSQL = buildRangeConditionSQL;
8
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
8
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
9
9
  class RangeConditionCollector {
10
10
  parent;
11
11
  constructor(parent) {
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CopyFromBuilder = exports.CopyToBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const relq_errors_1 = require("../errors/relq-errors.cjs");
9
9
  class CopyToBuilder {
10
10
  tableName;
@@ -31,7 +31,7 @@ const explain_builder_1 = require("../explain/explain-builder.cjs");
31
31
  const listen_notify_builder_1 = require("../pubsub/listen-notify-builder.cjs");
32
32
  const vacuum_builder_1 = require("../maintenance/vacuum-builder.cjs");
33
33
  const copy_builder_1 = require("../copy/copy-builder.cjs");
34
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
34
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
35
35
  class TypedSelectBuilder {
36
36
  builder;
37
37
  constructor(builder) {
@@ -53,7 +53,7 @@ const pool_defaults_1 = require("../utils/pool-defaults.cjs");
53
53
  const relq_errors_1 = require("../errors/relq-errors.cjs");
54
54
  const pagination_types_1 = require("../types/pagination-types.cjs");
55
55
  const type_coercion_1 = require("../utils/type-coercion.cjs");
56
- const pg_cursor_1 = __importDefault(require("../../addons/pg-cursor.js"));
56
+ const pg_cursor_1 = __importDefault(require("../addon/pg-cursor/index.cjs"));
57
57
  const INTERNAL = Symbol('relq-internal');
58
58
  let PgPool = null;
59
59
  let PgClient = null;
@@ -79,7 +79,7 @@ function registerGlobalCleanupHandlers() {
79
79
  async function loadPg() {
80
80
  if (!PgPool || !PgClient) {
81
81
  try {
82
- const pg = await Promise.resolve().then(() => __importStar(require("../../addons/pg.js")));
82
+ const pg = await Promise.resolve().then(() => __importStar(require("../addon/pg/index.cjs")));
83
83
  PgPool = pg.Pool;
84
84
  PgClient = pg.Client;
85
85
  return { Pool: pg.Pool, Client: pg.Client };
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CountBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const condition_collector_1 = require("../condition/condition-collector.cjs");
9
9
  class CountBuilder {
10
10
  tableName;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CTEBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const select_builder_1 = require("../select/select-builder.cjs");
9
9
  const insert_builder_1 = require("../insert/insert-builder.cjs");
10
10
  const update_builder_1 = require("../update/update-builder.cjs");
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DeleteBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const condition_collector_1 = require("../condition/condition-collector.cjs");
9
9
  const select_builder_1 = require("../select/select-builder.cjs");
10
10
  const count_builder_1 = require("../count/count-builder.cjs");
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DropFunctionBuilder = exports.CreateFunctionBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const relq_errors_1 = require("../errors/relq-errors.cjs");
9
9
  class CreateFunctionBuilder {
10
10
  functionName;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Conditional = exports.Aggregate = exports.Jsonb = exports.Array = exports.ConditionalFunctions = exports.AggregateFunctions = exports.JsonbFunctions = exports.ArrayFunctions = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const sql_functions_1 = require("./sql-functions.cjs");
9
9
  class ArrayFunctions {
10
10
  static array_length(array, dimension = 1) {
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CaseBuilder = void 0;
7
7
  exports.Case = Case;
8
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
8
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
9
9
  class CaseBuilder {
10
10
  expression;
11
11
  whenClauses = [];
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.GeometricFunctions = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const sql_functions_1 = require("./sql-functions.cjs");
9
9
  class GeometricFunctions {
10
10
  static area(column) {
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.NetworkFunctions = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const sql_functions_1 = require("./sql-functions.cjs");
9
9
  class NetworkFunctions {
10
10
  static abbrev(column) {
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Math = exports.DateTime = exports.String = exports.MathFunctions = exports.DateTimeFunctions = exports.StringFunctions = exports.SqlFunction = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  class SqlFunction {
9
9
  expression;
10
10
  constructor(expression) {
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CreateIndexBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  class CreateIndexBuilder {
9
9
  tableName;
10
10
  indexName;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ReindexBuilder = exports.DropIndexBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  class DropIndexBuilder {
9
9
  indexName;
10
10
  ifExistsFlag = false;
@@ -8,7 +8,7 @@ exports.createExcludedProxy = createExcludedProxy;
8
8
  exports.createRowProxy = createRowProxy;
9
9
  exports.createSqlHelpers = createSqlHelpers;
10
10
  exports.buildConflictUpdateSql = buildConflictUpdateSql;
11
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
11
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
12
12
  function isColumnRef(value) {
13
13
  return typeof value === 'object' && value !== null && value.__type === 'column_ref';
14
14
  }
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.InsertBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  const case_converter_1 = require("../utils/case-converter.cjs");
9
9
  const select_builder_1 = require("../select/select-builder.cjs");
10
10
  const count_builder_1 = require("../count/count-builder.cjs");
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AnalyzeBuilder = exports.VacuumBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  class VacuumBuilder {
9
9
  tables = [];
10
10
  columns = new Map();
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.NotifyBuilder = exports.UnlistenBuilder = exports.ListenBuilder = void 0;
7
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
7
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
8
8
  class ListenBuilder {
9
9
  channelName;
10
10
  constructor(channelName) {
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ListenerConnection = void 0;
7
7
  const events_1 = require("events");
8
- const pg_1 = require("../../addons/pg.js");
9
- const pg_format_1 = __importDefault(require("../../addons/pg-format.js"));
8
+ const pg_1 = require("../addon/pg/index.cjs");
9
+ const pg_format_1 = __importDefault(require("../addon/pg-format/index.cjs"));
10
10
  class ListenerConnection extends events_1.EventEmitter {
11
11
  client = null;
12
12
  config;