@pgsql/transform 18.10.0 → 18.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/facts.js CHANGED
@@ -223,9 +223,15 @@ function classifyOne(nodeTag, node) {
223
223
  }
224
224
  break;
225
225
  case 'CreateEnumStmt':
226
- case 'CreateDomainStmt':
227
226
  case 'CreateRangeStmt': {
228
- const name = nameListToQualified(node.typeName ?? node.domainname);
227
+ const name = nameListToQualified(node.typeName);
228
+ if (name)
229
+ facts.creates.push(name);
230
+ break;
231
+ }
232
+ case 'CreateDomainStmt': {
233
+ // `typeName` on a domain is the base type; the name is `domainname`.
234
+ const name = nameListToQualified(node.domainname);
229
235
  if (name)
230
236
  facts.creates.push(name);
231
237
  break;
@@ -352,6 +358,7 @@ export function classifyStatements(sql) {
352
358
  const start = stmt?.stmt_location ?? 0;
353
359
  facts.span = { start, len: stmt?.stmt_len ?? Math.max(0, sql.length - start) };
354
360
  if (stmtNode) {
361
+ facts.stmt = stmtNode;
355
362
  walkSql(stmtNode, createFactsVisitor(facts));
356
363
  }
357
364
  if (nodeTag === 'CreateFunctionStmt') {
package/facts.d.ts CHANGED
@@ -104,6 +104,14 @@ export interface StatementFacts {
104
104
  * facts without a second parse.
105
105
  */
106
106
  span: StatementSpan;
107
+ /**
108
+ * The raw parsed statement node (`{ CreateStmt: {...} }` etc.), exactly as
109
+ * the parser produced it. Facts are still read-only — the node is carried
110
+ * so consumers like `revertFor`/`verifyFor` can derive inverse or
111
+ * existence-check statements without a second parse. Absent only for
112
+ * facts constructed by hand.
113
+ */
114
+ stmt?: Record<string, any>;
107
115
  }
108
116
  /** A statement's location in the source script (byte offsets). */
109
117
  export interface StatementSpan {
package/facts.js CHANGED
@@ -226,9 +226,15 @@ function classifyOne(nodeTag, node) {
226
226
  }
227
227
  break;
228
228
  case 'CreateEnumStmt':
229
- case 'CreateDomainStmt':
230
229
  case 'CreateRangeStmt': {
231
- const name = nameListToQualified(node.typeName ?? node.domainname);
230
+ const name = nameListToQualified(node.typeName);
231
+ if (name)
232
+ facts.creates.push(name);
233
+ break;
234
+ }
235
+ case 'CreateDomainStmt': {
236
+ // `typeName` on a domain is the base type; the name is `domainname`.
237
+ const name = nameListToQualified(node.domainname);
232
238
  if (name)
233
239
  facts.creates.push(name);
234
240
  break;
@@ -355,6 +361,7 @@ function classifyStatements(sql) {
355
361
  const start = stmt?.stmt_location ?? 0;
356
362
  facts.span = { start, len: stmt?.stmt_len ?? Math.max(0, sql.length - start) };
357
363
  if (stmtNode) {
364
+ facts.stmt = stmtNode;
358
365
  (0, traverse_1.walk)(stmtNode, createFactsVisitor(facts));
359
366
  }
360
367
  if (nodeTag === 'CreateFunctionStmt') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pgsql/transform",
3
- "version": "18.10.0",
3
+ "version": "18.11.0",
4
4
  "author": "Constructive <developers@constructive.io>",
5
5
  "description": "AST-based SQL transformation, qualification, classification and closure analysis for PostgreSQL",
6
6
  "main": "index.js",
@@ -49,5 +49,5 @@
49
49
  "classify",
50
50
  "plpgsql"
51
51
  ],
52
- "gitHead": "ce8ea3fadd2549dfbe699c05c38c8a85090efc8c"
52
+ "gitHead": "f888a7701dc5abf309c0dfd04e0069375d4e7550"
53
53
  }