@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 +9 -2
- package/facts.d.ts +8 -0
- package/facts.js +9 -2
- package/package.json +2 -2
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
|
|
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
|
|
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.
|
|
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": "
|
|
52
|
+
"gitHead": "f888a7701dc5abf309c0dfd04e0069375d4e7550"
|
|
53
53
|
}
|