@typeorm/codemod 1.0.1 → 1.0.2
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/README.md +1 -0
- package/dist/cli/print-usage.js +1 -0
- package/dist/cli/print-usage.js.map +1 -1
- package/dist/cli/run-transforms.js +167 -79
- package/dist/cli/run-transforms.js.map +1 -1
- package/dist/dependencies/v1.js +1 -0
- package/dist/dependencies/v1.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/transforms/ast-helpers.js +641 -17
- package/dist/transforms/ast-helpers.js.map +1 -1
- package/dist/transforms/stats.js +11 -0
- package/dist/transforms/stats.js.map +1 -1
- package/dist/transforms/todo.js +22 -5
- package/dist/transforms/todo.js.map +1 -1
- package/dist/transforms/v1/column-unsigned-numeric.js +21 -18
- package/dist/transforms/v1/column-unsigned-numeric.js.map +1 -1
- package/dist/transforms/v1/connection-options-reader.js +23 -7
- package/dist/transforms/v1/connection-options-reader.js.map +1 -1
- package/dist/transforms/v1/connection-to-datasource.js +613 -77
- package/dist/transforms/v1/connection-to-datasource.js.map +1 -1
- package/dist/transforms/v1/datasource-expo.js +79 -0
- package/dist/transforms/v1/datasource-expo.js.map +1 -0
- package/dist/transforms/v1/datasource-mongodb.js +77 -50
- package/dist/transforms/v1/datasource-mongodb.js.map +1 -1
- package/dist/transforms/v1/datasource-mssql.js +88 -44
- package/dist/transforms/v1/datasource-mssql.js.map +1 -1
- package/dist/transforms/v1/datasource-mysql-connector.js +22 -6
- package/dist/transforms/v1/datasource-mysql-connector.js.map +1 -1
- package/dist/transforms/v1/datasource-name.js +17 -14
- package/dist/transforms/v1/datasource-name.js.map +1 -1
- package/dist/transforms/v1/datasource-sap.js +51 -39
- package/dist/transforms/v1/datasource-sap.js.map +1 -1
- package/dist/transforms/v1/file-logger.js +2 -21
- package/dist/transforms/v1/file-logger.js.map +1 -1
- package/dist/transforms/v1/find-options-string-relations.js +75 -11
- package/dist/transforms/v1/find-options-string-relations.js.map +1 -1
- package/dist/transforms/v1/find-options-string-select.js +75 -13
- package/dist/transforms/v1/find-options-string-select.js.map +1 -1
- package/dist/transforms/v1/global-functions.js +79 -21
- package/dist/transforms/v1/global-functions.js.map +1 -1
- package/dist/transforms/v1/index.js +6 -1
- package/dist/transforms/v1/index.js.map +1 -1
- package/dist/transforms/v1/mongodb-stats.js +18 -11
- package/dist/transforms/v1/mongodb-stats.js.map +1 -1
- package/dist/transforms/v1/mongodb-types.js +59 -2
- package/dist/transforms/v1/mongodb-types.js.map +1 -1
- package/dist/transforms/v1/query-builder-on-conflict.js +30 -17
- package/dist/transforms/v1/query-builder-on-conflict.js.map +1 -1
- package/dist/transforms/v1/query-builder-print-sql.js +15 -12
- package/dist/transforms/v1/query-builder-print-sql.js.map +1 -1
- package/dist/transforms/v1/query-builder-replace-property-names.js +13 -12
- package/dist/transforms/v1/query-builder-replace-property-names.js.map +1 -1
- package/dist/transforms/v1/query-builder-where-expression.js +29 -12
- package/dist/transforms/v1/query-builder-where-expression.js.map +1 -1
- package/dist/transforms/v1/query-runner-loaded-tables-views.js +0 -1
- package/dist/transforms/v1/query-runner-loaded-tables-views.js.map +1 -1
- package/dist/transforms/v1/relation-count.js +3 -0
- package/dist/transforms/v1/relation-count.js.map +1 -1
- package/dist/transforms/v1/repository-abstract.js +146 -29
- package/dist/transforms/v1/repository-abstract.js.map +1 -1
- package/dist/transforms/v1/repository-exist.js +18 -1
- package/dist/transforms/v1/repository-exist.js.map +1 -1
- package/dist/transforms/v1/repository-find-by-ids.js +67 -24
- package/dist/transforms/v1/repository-find-by-ids.js.map +1 -1
- package/dist/transforms/v1/repository-find-one-by-id.js +3 -0
- package/dist/transforms/v1/repository-find-one-by-id.js.map +1 -1
- package/dist/transforms/v1/use-container.js +60 -12
- package/dist/transforms/v1/use-container.js.map +1 -1
- package/package.json +1 -1
|
@@ -25,7 +25,21 @@ const removedGlobals = new Set([
|
|
|
25
25
|
"getMongoManager",
|
|
26
26
|
"getMongoRepository",
|
|
27
27
|
]);
|
|
28
|
-
//
|
|
28
|
+
// Removed globals that have NO automatic rewrite — each call site gets a
|
|
29
|
+
// comment explaining the manual migration path. Without this, the import
|
|
30
|
+
// is stripped but the call remains, producing a ReferenceError at runtime
|
|
31
|
+
// with no trace in the codemod output.
|
|
32
|
+
const manualRemovedGlobals = {
|
|
33
|
+
createConnection: "`createConnection()` was removed — instantiate a `DataSource` and call `.initialize()` instead: `const dataSource = new DataSource(options); await dataSource.initialize()`",
|
|
34
|
+
createConnections: "`createConnections()` was removed — instantiate one `DataSource` per configuration and call `.initialize()` on each; multi-connection setups must be managed explicitly",
|
|
35
|
+
getConnectionManager: "`getConnectionManager()` was removed — the global `ConnectionManager` singleton no longer exists; hold and share `DataSource` instances directly",
|
|
36
|
+
getConnectionOptions: "`getConnectionOptions()` was removed — load your ormconfig manually and pass the object into `new DataSource(options)`",
|
|
37
|
+
getSqljsManager: "`getSqljsManager()` was removed — access the sql.js-specific API via `(dataSource.driver as SqljsDriver)` on your initialized DataSource",
|
|
38
|
+
};
|
|
39
|
+
// Simple replacements: `getX()` rewrites to either a property access
|
|
40
|
+
// (`getManager()` → `dataSource.manager`) or a method call
|
|
41
|
+
// (`getRepository(User)` → `dataSource.getRepository(User)`); see
|
|
42
|
+
// `rewriteSimpleCall` for the heuristic that picks the right shape.
|
|
29
43
|
const simpleReplacements = {
|
|
30
44
|
getManager: "dataSource.manager",
|
|
31
45
|
getRepository: "dataSource.getRepository",
|
|
@@ -38,6 +52,11 @@ const todoHostTypes = new Set([
|
|
|
38
52
|
"ExpressionStatement",
|
|
39
53
|
"VariableDeclaration",
|
|
40
54
|
"ReturnStatement",
|
|
55
|
+
// Class field initializer — `conn = createConnection()` inside a class
|
|
56
|
+
// body has no enclosing Statement/VariableDeclaration, so the walk
|
|
57
|
+
// must recognise the property itself as a host.
|
|
58
|
+
"ClassProperty",
|
|
59
|
+
"PropertyDefinition",
|
|
41
60
|
]);
|
|
42
61
|
const rewriteSimpleCall = (j, astPath, replacement) => {
|
|
43
62
|
const parts = replacement.split(".");
|
|
@@ -88,32 +107,71 @@ const globalFunctions = (file, api) => {
|
|
|
88
107
|
}
|
|
89
108
|
const getConnectionLocals = (0, ast_helpers_1.getLocalNamesForImport)(root, j, "typeorm", "getConnection");
|
|
90
109
|
let hasNamedConnection = false;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
// Build lookup: local-name → manual-removal comment message, so aliased
|
|
111
|
+
// imports like `import { createConnection as cc } from "typeorm"` still
|
|
112
|
+
// get their call sites flagged.
|
|
113
|
+
const manualTodos = new Map();
|
|
114
|
+
for (const [funcName, message] of Object.entries(manualRemovedGlobals)) {
|
|
115
|
+
for (const localName of (0, ast_helpers_1.getLocalNamesForImport)(root, j, "typeorm", funcName)) {
|
|
116
|
+
manualTodos.set(localName, message);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Rewrites `getConnection()` → `dataSource`, stripping the argument.
|
|
120
|
+
// Sets `hasNamedConnection` when the call had a named-connection arg.
|
|
121
|
+
const rewriteGetConnection = (astPath) => {
|
|
122
|
+
const hadArg = astPath.node.arguments.length > 0;
|
|
123
|
+
j(astPath).replaceWith(j.identifier("dataSource"));
|
|
124
|
+
if (hadArg)
|
|
125
|
+
hasNamedConnection = true;
|
|
126
|
+
return true;
|
|
127
|
+
};
|
|
128
|
+
// Attaches a manual-migration comment to the enclosing statement of
|
|
129
|
+
// `astPath`. Returns whether anything changed.
|
|
130
|
+
const attachManualTodo = (astPath, manualMessage) => {
|
|
131
|
+
let current = astPath;
|
|
132
|
+
while (current) {
|
|
133
|
+
const node = current.node;
|
|
134
|
+
if (todoHostTypes.has(node.type)) {
|
|
135
|
+
if (!(0, todo_1.hasTodoComment)(node, manualMessage)) {
|
|
136
|
+
(0, todo_1.addTodoComment)(node, manualMessage, j);
|
|
137
|
+
}
|
|
138
|
+
return true;
|
|
107
139
|
}
|
|
108
|
-
|
|
109
|
-
|
|
140
|
+
current = current.parent;
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
};
|
|
144
|
+
const handleCallSite = (astPath) => {
|
|
145
|
+
const callee = astPath.node.callee;
|
|
146
|
+
if (callee.type !== "Identifier")
|
|
147
|
+
return;
|
|
148
|
+
if (getConnectionLocals.has(callee.name)) {
|
|
149
|
+
if (rewriteGetConnection(astPath))
|
|
110
150
|
hasChanges = true;
|
|
111
|
-
|
|
112
|
-
}
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const replacement = callReplacements.get(callee.name);
|
|
154
|
+
if (replacement && rewriteSimpleCall(j, astPath, replacement)) {
|
|
155
|
+
hasChanges = true;
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const manualMessage = manualTodos.get(callee.name);
|
|
159
|
+
if (manualMessage && attachManualTodo(astPath, manualMessage)) {
|
|
160
|
+
hasChanges = true;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
if (callReplacements.size > 0 ||
|
|
164
|
+
getConnectionLocals.size > 0 ||
|
|
165
|
+
manualTodos.size > 0) {
|
|
166
|
+
root.find(j.CallExpression).forEach(handleCallSite);
|
|
113
167
|
}
|
|
114
168
|
if ((0, ast_helpers_1.removeImportSpecifiers)(root, j, "typeorm", removedGlobals)) {
|
|
115
169
|
hasChanges = true;
|
|
116
170
|
}
|
|
171
|
+
// Remove re-exports of deprecated globals (barrel-file pattern)
|
|
172
|
+
if ((0, ast_helpers_1.removeReExportSpecifiers)(root, j, "typeorm", removedGlobals)) {
|
|
173
|
+
hasChanges = true;
|
|
174
|
+
}
|
|
117
175
|
if (hasChanges) {
|
|
118
176
|
annotateFirstDataSourceUsage(root, j, hasNamedConnection);
|
|
119
177
|
stats_1.stats.count.todo(api, exports.name, file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-functions.js","sourceRoot":"","sources":["../../../src/transforms/v1/global-functions.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAU5B,
|
|
1
|
+
{"version":3,"file":"global-functions.js","sourceRoot":"","sources":["../../../src/transforms/v1/global-functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ const columnWidthZerofill = __importStar(require("./column-width-zerofill"));
|
|
|
40
40
|
const connectionManager = __importStar(require("./connection-manager"));
|
|
41
41
|
const connectionOptionsReader = __importStar(require("./connection-options-reader"));
|
|
42
42
|
const connectionToDataSource = __importStar(require("./connection-to-datasource"));
|
|
43
|
+
const datasourceExpo = __importStar(require("./datasource-expo"));
|
|
43
44
|
const datasourceMongodb = __importStar(require("./datasource-mongodb"));
|
|
44
45
|
const datasourceMssql = __importStar(require("./datasource-mssql"));
|
|
45
46
|
const datasourceMysqlConnector = __importStar(require("./datasource-mysql-connector"));
|
|
@@ -75,9 +76,13 @@ exports.upgradingGuide = "https://typeorm.io/docs/releases/1.0/upgrading-from-0.
|
|
|
75
76
|
/**
|
|
76
77
|
* Ordered list of v1 transforms. Order matters — connection renames
|
|
77
78
|
* must run first so subsequent transforms see DataSource, not Connection.
|
|
79
|
+
* `datasourceName` also runs before `globalFunctions` so it can still see
|
|
80
|
+
* the `createConnection` import while rewriting `createConnection({ name })`
|
|
81
|
+
* arguments before the import is stripped.
|
|
78
82
|
*/
|
|
79
83
|
exports.transforms = [
|
|
80
84
|
connectionToDataSource,
|
|
85
|
+
datasourceName,
|
|
81
86
|
globalFunctions,
|
|
82
87
|
repositoryFindByIds,
|
|
83
88
|
repositoryFindOneById,
|
|
@@ -99,7 +104,6 @@ exports.transforms = [
|
|
|
99
104
|
mongodbTypes,
|
|
100
105
|
datasourceMssql,
|
|
101
106
|
datasourceSap,
|
|
102
|
-
datasourceName,
|
|
103
107
|
columnUnsignedNumeric,
|
|
104
108
|
repositoryAbstract,
|
|
105
109
|
relationCount,
|
|
@@ -111,6 +115,7 @@ exports.transforms = [
|
|
|
111
115
|
findOptionsStringRelations,
|
|
112
116
|
connectionManager,
|
|
113
117
|
connectionOptionsReader,
|
|
118
|
+
datasourceExpo,
|
|
114
119
|
fileLogger,
|
|
115
120
|
];
|
|
116
121
|
exports.default = (0, transformer_1.transformer)(exports.transforms);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transforms/v1/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAmD;AACnD,iFAAkE;AAClE,6EAA8D;AAC9D,wEAAyD;AACzD,qFAAsE;AACtE,mFAAoE;AACpE,wEAAyD;AACzD,oEAAqD;AACrD,uFAAwE;AACxE,kEAAmD;AACnD,gEAAiD;AACjD,qFAAsE;AACtE,+EAAgE;AAChE,0DAA2C;AAC3C,qEAAsD;AACtD,gFAAiE;AACjE,4FAA6E;AAC7E,sFAAuE;AACvE,oEAAqD;AACrD,uEAAwD;AACxD,8DAA+C;AAC/C,8DAA+C;AAC/C,gGAAiF;AACjF,oFAAqE;AACrE,gFAAiE;AACjE,gFAAiE;AACjE,yGAA0F;AAC1F,8FAA+E;AAC/E,iGAAkF;AAClF,gEAAiD;AACjD,0EAA2D;AAC3D,oEAAqD;AACrD,8EAA+D;AAC/D,mFAAoE;AACpE,8DAA+C;AAC/C,gDAA4C;AAE/B,QAAA,WAAW,GAAG,6BAA6B,CAAA;AAC3C,QAAA,cAAc,GACvB,yDAAyD,CAAA;AAE7D
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transforms/v1/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAmD;AACnD,iFAAkE;AAClE,6EAA8D;AAC9D,wEAAyD;AACzD,qFAAsE;AACtE,mFAAoE;AACpE,kEAAmD;AACnD,wEAAyD;AACzD,oEAAqD;AACrD,uFAAwE;AACxE,kEAAmD;AACnD,gEAAiD;AACjD,qFAAsE;AACtE,+EAAgE;AAChE,0DAA2C;AAC3C,qEAAsD;AACtD,gFAAiE;AACjE,4FAA6E;AAC7E,sFAAuE;AACvE,oEAAqD;AACrD,uEAAwD;AACxD,8DAA+C;AAC/C,8DAA+C;AAC/C,gGAAiF;AACjF,oFAAqE;AACrE,gFAAiE;AACjE,gFAAiE;AACjE,yGAA0F;AAC1F,8FAA+E;AAC/E,iGAAkF;AAClF,gEAAiD;AACjD,0EAA2D;AAC3D,oEAAqD;AACrD,8EAA+D;AAC/D,mFAAoE;AACpE,8DAA+C;AAC/C,gDAA4C;AAE/B,QAAA,WAAW,GAAG,6BAA6B,CAAA;AAC3C,QAAA,cAAc,GACvB,yDAAyD,CAAA;AAE7D;;;;;;GAMG;AACU,QAAA,UAAU,GAAG;IACtB,sBAAsB;IACtB,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,qBAAqB;IACrB,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,4BAA4B;IAC5B,2BAA2B;IAC3B,cAAc;IACd,mBAAmB;IACnB,oBAAoB;IACpB,eAAe;IACf,oBAAoB;IACpB,YAAY;IACZ,wBAAwB;IACxB,uBAAuB;IACvB,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,aAAa;IACb,qBAAqB;IACrB,kBAAkB;IAClB,aAAa;IACb,sBAAsB;IACtB,oBAAoB;IACpB,4BAA4B;IAC5B,gCAAgC;IAChC,uBAAuB;IACvB,0BAA0B;IAC1B,iBAAiB;IACjB,uBAAuB;IACvB,cAAc;IACd,UAAU;CACb,CAAA;AAED,kBAAe,IAAA,yBAAW,EAAC,kBAAU,CAAC,CAAA"}
|
|
@@ -16,32 +16,39 @@ const mongodbStats = (file, api) => {
|
|
|
16
16
|
const root = j(file.source);
|
|
17
17
|
if (!(0, ast_helpers_1.fileImportsFrom)(root, j, "typeorm"))
|
|
18
18
|
return undefined;
|
|
19
|
+
const bindings = (0, ast_helpers_1.collectRepositoryBindings)(root, j);
|
|
19
20
|
let hasChanges = false;
|
|
20
21
|
let hasTodos = false;
|
|
21
22
|
const message = "`stats()` was removed — use the MongoDB driver directly";
|
|
22
|
-
// Find .stats() calls
|
|
23
23
|
root.find(j.CallExpression, {
|
|
24
24
|
callee: {
|
|
25
25
|
type: "MemberExpression",
|
|
26
26
|
property: { type: "Identifier", name: "stats" },
|
|
27
27
|
},
|
|
28
|
-
}).forEach((
|
|
29
|
-
const
|
|
28
|
+
}).forEach((callPath) => {
|
|
29
|
+
const callee = callPath.node.callee;
|
|
30
|
+
if (callee.type !== "MemberExpression")
|
|
31
|
+
return;
|
|
32
|
+
if (!(0, ast_helpers_1.isRepositoryReceiver)(callee.object, bindings))
|
|
33
|
+
return;
|
|
34
|
+
// Prefer attaching the comment to the enclosing statement. Comments
|
|
35
|
+
// on bare CallExpressions are often dropped by recast during printing.
|
|
36
|
+
let host = callPath.node;
|
|
37
|
+
const parentNode = callPath.parent.node;
|
|
30
38
|
if (parentNode.type === "ExpressionStatement") {
|
|
31
|
-
|
|
39
|
+
host = parentNode;
|
|
32
40
|
}
|
|
33
41
|
else if (parentNode.type === "AwaitExpression") {
|
|
34
|
-
const grandparentNode =
|
|
42
|
+
const grandparentNode = callPath.parent.parent.node;
|
|
35
43
|
if (grandparentNode.type === "ExpressionStatement") {
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
(0, todo_1.addTodoComment)(path.node, message, j);
|
|
44
|
+
host = grandparentNode;
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
if ((0, todo_1.hasTodoComment)(host, message)) {
|
|
48
|
+
hasChanges = true;
|
|
49
|
+
return;
|
|
44
50
|
}
|
|
51
|
+
(0, todo_1.addTodoComment)(host, message, j);
|
|
45
52
|
hasChanges = true;
|
|
46
53
|
hasTodos = true;
|
|
47
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb-stats.js","sourceRoot":"","sources":["../../../src/transforms/v1/mongodb-stats.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,
|
|
1
|
+
{"version":3,"file":"mongodb-stats.js","sourceRoot":"","sources":["../../../src/transforms/v1/mongodb-stats.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAIuB;AACvB,kCAAwD;AACxD,oCAAgC;AAEnB,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GAAG,6CAA6C,CAAA;AAC3D,QAAA,MAAM,GAAG,IAAI,CAAA;AAEnB,MAAM,YAAY,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IACrD,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAA;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAE3B,IAAI,CAAC,IAAA,6BAAe,EAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAE1D,MAAM,QAAQ,GAAG,IAAA,uCAAyB,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAEnD,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,MAAM,OAAO,GAAG,yDAAyD,CAAA;IAEzE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;QACxB,MAAM,EAAE;YACJ,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;SAClD;KACJ,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA;QACnC,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB;YAAE,OAAM;QAC9C,IAAI,CAAC,IAAA,kCAAoB,EAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;YAAE,OAAM;QAE1D,oEAAoE;QACpE,uEAAuE;QACvE,IAAI,IAAI,GAAS,QAAQ,CAAC,IAAI,CAAA;QAC9B,MAAM,UAAU,GAAS,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAA;QAC7C,IAAI,UAAU,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC5C,IAAI,GAAG,UAAU,CAAA;QACrB,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/C,MAAM,eAAe,GAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;YACzD,IAAI,eAAe,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACjD,IAAI,GAAG,eAAe,CAAA;YAC1B,CAAC;QACL,CAAC;QACD,IAAI,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAChC,UAAU,GAAG,IAAI,CAAA;YACjB,OAAM;QACV,CAAC;QACD,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QAChC,UAAU,GAAG,IAAI,CAAA;QACjB,QAAQ,GAAG,IAAI,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ;QAAE,aAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,YAAI,EAAE,IAAI,CAAC,CAAA;IAE/C,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AA/CY,QAAA,YAAY,gBA+CxB;AAEY,QAAA,EAAE,GAAG,oBAAY,CAAA;AAC9B,kBAAe,UAAE,CAAA"}
|
|
@@ -55,14 +55,12 @@ const mongodbTypes = (file, api) => {
|
|
|
55
55
|
if (movedSpecifiers.length === 0)
|
|
56
56
|
return;
|
|
57
57
|
hasChanges = true;
|
|
58
|
-
// Update or remove the typeorm import
|
|
59
58
|
if (remaining?.length === 0) {
|
|
60
59
|
j(importPath).remove();
|
|
61
60
|
}
|
|
62
61
|
else if (remaining) {
|
|
63
62
|
importPath.node.specifiers = remaining;
|
|
64
63
|
}
|
|
65
|
-
// Check if there's already a mongodb import
|
|
66
64
|
const existingMongoImport = root.find(j.ImportDeclaration, {
|
|
67
65
|
source: { value: "mongodb" },
|
|
68
66
|
});
|
|
@@ -76,6 +74,65 @@ const mongodbTypes = (file, api) => {
|
|
|
76
74
|
createNewImport(j, root, importPath, movedSpecifiers);
|
|
77
75
|
}
|
|
78
76
|
});
|
|
77
|
+
// Move re-exports from typeorm to mongodb (barrel-file pattern).
|
|
78
|
+
// `export { ObjectId } from "typeorm"` → `export { ObjectId } from "mongodb"`.
|
|
79
|
+
root.find(j.ExportNamedDeclaration, {
|
|
80
|
+
source: { value: "typeorm" },
|
|
81
|
+
}).forEach((exportPath) => {
|
|
82
|
+
const moved = [];
|
|
83
|
+
const remaining = exportPath.node.specifiers?.filter((spec) => {
|
|
84
|
+
if (spec.type === "ExportSpecifier" &&
|
|
85
|
+
spec.local?.type === "Identifier" &&
|
|
86
|
+
movedTypes.has(spec.local.name)) {
|
|
87
|
+
moved.push(spec);
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
});
|
|
92
|
+
if (moved.length === 0)
|
|
93
|
+
return;
|
|
94
|
+
hasChanges = true;
|
|
95
|
+
if (remaining?.length === 0) {
|
|
96
|
+
j(exportPath).remove();
|
|
97
|
+
}
|
|
98
|
+
else if (remaining) {
|
|
99
|
+
exportPath.node.specifiers = remaining;
|
|
100
|
+
}
|
|
101
|
+
// Merge into an existing `export { ... } from "mongodb"` if present —
|
|
102
|
+
// appending a fresh declaration unconditionally would produce a
|
|
103
|
+
// duplicate named export and fail at parse time. Skip type-only
|
|
104
|
+
// declarations (`export type { ... }`) because `ObjectId` is a runtime
|
|
105
|
+
// value; merging into a type-only export would strip its runtime form.
|
|
106
|
+
const sourceNode = exportPath.node;
|
|
107
|
+
const existingMongoExport = root
|
|
108
|
+
.find(j.ExportNamedDeclaration, {
|
|
109
|
+
source: { value: "mongodb" },
|
|
110
|
+
})
|
|
111
|
+
.filter((p) => p.node.exportKind !== "type");
|
|
112
|
+
if (existingMongoExport.length > 0) {
|
|
113
|
+
const existingPath = existingMongoExport.at(0).get();
|
|
114
|
+
const existingNames = new Set(existingPath.node.specifiers
|
|
115
|
+
?.filter((s) => s.type === "ExportSpecifier" &&
|
|
116
|
+
s.local?.type === "Identifier")
|
|
117
|
+
.map((s) => s.local?.name ?? "") ?? []);
|
|
118
|
+
for (const spec of moved) {
|
|
119
|
+
if (spec.type === "ExportSpecifier" &&
|
|
120
|
+
spec.local?.type === "Identifier" &&
|
|
121
|
+
!existingNames.has(spec.local.name)) {
|
|
122
|
+
existingPath.node.specifiers?.push(spec);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const newExport = j.exportNamedDeclaration(null, moved, j.stringLiteral("mongodb"));
|
|
128
|
+
// Preserve the source declaration's exportKind so moved `export type`
|
|
129
|
+
// specifiers don't get silently promoted to value exports.
|
|
130
|
+
if (sourceNode.exportKind) {
|
|
131
|
+
newExport.exportKind = sourceNode.exportKind;
|
|
132
|
+
}
|
|
133
|
+
exportPath.insertAfter(newExport);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
79
136
|
return hasChanges ? root.toSource() : undefined;
|
|
80
137
|
};
|
|
81
138
|
exports.mongodbTypes = mongodbTypes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb-types.js","sourceRoot":"","sources":["../../../src/transforms/v1/mongodb-types.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;
|
|
1
|
+
{"version":3,"file":"mongodb-types.js","sourceRoot":"","sources":["../../../src/transforms/v1/mongodb-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,22 @@ const stats_1 = require("../stats");
|
|
|
11
11
|
exports.name = node_path_1.default.basename(__filename, node_path_1.default.extname(__filename));
|
|
12
12
|
exports.description = "flag removed `onConflict()` for manual migration to `orIgnore()` / `orUpdate()`";
|
|
13
13
|
exports.manual = true;
|
|
14
|
+
// Walks up from `startPath` and returns the first statement-like ancestor
|
|
15
|
+
// a leading line-comment survives recast printing on. Returns null when no
|
|
16
|
+
// such ancestor is reachable (caller should skip the comment rather than
|
|
17
|
+
// attach it to a CallExpression, where it would be silently dropped).
|
|
18
|
+
const findTodoHost = (startPath) => {
|
|
19
|
+
let current = startPath.parent;
|
|
20
|
+
while (current) {
|
|
21
|
+
const nodeType = current.node.type;
|
|
22
|
+
if (nodeType.endsWith("Statement") ||
|
|
23
|
+
nodeType === "VariableDeclaration") {
|
|
24
|
+
return current.node;
|
|
25
|
+
}
|
|
26
|
+
current = current.parent;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
};
|
|
14
30
|
const queryBuilderOnConflict = (file, api) => {
|
|
15
31
|
const j = api.jscodeshift;
|
|
16
32
|
const root = j(file.source);
|
|
@@ -23,29 +39,26 @@ const queryBuilderOnConflict = (file, api) => {
|
|
|
23
39
|
type: "MemberExpression",
|
|
24
40
|
property: { type: "Identifier", name: "onConflict" },
|
|
25
41
|
},
|
|
26
|
-
}).forEach((
|
|
27
|
-
const arg =
|
|
42
|
+
}).forEach((callPath) => {
|
|
43
|
+
const arg = callPath.node.arguments[0];
|
|
28
44
|
const argValue = arg ? (0, ast_helpers_1.getStringValue)(arg) : null;
|
|
29
45
|
if (argValue && /DO\s+NOTHING/i.test(argValue)) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
path.node.arguments = [];
|
|
46
|
+
if (callPath.node.callee.type === "MemberExpression") {
|
|
47
|
+
callPath.node.callee.property = j.identifier("orIgnore");
|
|
48
|
+
callPath.node.arguments = [];
|
|
34
49
|
hasChanges = true;
|
|
35
50
|
}
|
|
51
|
+
return;
|
|
36
52
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
else {
|
|
44
|
-
(0, todo_1.addTodoComment)(path.node, message, j);
|
|
45
|
-
}
|
|
46
|
-
hasChanges = true;
|
|
47
|
-
hasTodos = true;
|
|
53
|
+
const message = "`onConflict()` was removed — use `orIgnore()` or `orUpdate()` instead";
|
|
54
|
+
const host = findTodoHost(callPath);
|
|
55
|
+
if (!host)
|
|
56
|
+
return;
|
|
57
|
+
if (!(0, todo_1.hasTodoComment)(host, message)) {
|
|
58
|
+
(0, todo_1.addTodoComment)(host, message, j);
|
|
48
59
|
}
|
|
60
|
+
hasChanges = true;
|
|
61
|
+
hasTodos = true;
|
|
49
62
|
});
|
|
50
63
|
if (hasTodos)
|
|
51
64
|
stats_1.stats.count.todo(api, exports.name, file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder-on-conflict.js","sourceRoot":"","sources":["../../../src/transforms/v1/query-builder-on-conflict.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"query-builder-on-conflict.js","sourceRoot":"","sources":["../../../src/transforms/v1/query-builder-on-conflict.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,23 +24,26 @@ const queryBuilderPrintSql = (file, api) => {
|
|
|
24
24
|
type: "MemberExpression",
|
|
25
25
|
property: { name: "printSql" },
|
|
26
26
|
},
|
|
27
|
-
}).forEach((
|
|
28
|
-
// Walk up to
|
|
29
|
-
|
|
27
|
+
}).forEach((callPath) => {
|
|
28
|
+
// Walk up to the enclosing statement (ExpressionStatement or
|
|
29
|
+
// VariableDeclaration). If we reach the root without finding one,
|
|
30
|
+
// leave the file untouched — attaching a comment to a non-statement
|
|
31
|
+
// node is usually dropped by recast, and `hasChanges = true` with no
|
|
32
|
+
// actual edit would misreport the transform as having emitted a comment.
|
|
33
|
+
let current = callPath.parent;
|
|
30
34
|
while (current) {
|
|
31
35
|
const node = current.node;
|
|
32
|
-
if (node.type === "ExpressionStatement"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
if (node.type === "ExpressionStatement" ||
|
|
37
|
+
node.type === "VariableDeclaration") {
|
|
38
|
+
if (!(0, todo_1.hasTodoComment)(node, message)) {
|
|
39
|
+
(0, todo_1.addTodoComment)(node, message, j);
|
|
40
|
+
}
|
|
41
|
+
hasChanges = true;
|
|
42
|
+
hasTodos = true;
|
|
43
|
+
return;
|
|
39
44
|
}
|
|
40
45
|
current = current.parent;
|
|
41
46
|
}
|
|
42
|
-
hasChanges = true;
|
|
43
|
-
hasTodos = true;
|
|
44
47
|
});
|
|
45
48
|
if (hasTodos)
|
|
46
49
|
stats_1.stats.count.todo(api, exports.name, file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder-print-sql.js","sourceRoot":"","sources":["../../../src/transforms/v1/query-builder-print-sql.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"query-builder-print-sql.js","sourceRoot":"","sources":["../../../src/transforms/v1/query-builder-print-sql.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAgD;AAChD,kCAAwD;AACxD,oCAAgC;AAEnB,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,0FAA0F,CAAA;AACjF,QAAA,MAAM,GAAG,IAAI,CAAA;AAEnB,MAAM,oBAAoB,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IAC7D,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAA;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAE3B,IAAI,CAAC,IAAA,6BAAe,EAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAE1D,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,MAAM,OAAO,GACT,uFAAuF,CAAA;IAE3F,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;QACxB,MAAM,EAAE;YACJ,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;SACjC;KACJ,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACpB,6DAA6D;QAC7D,kEAAkE;QAClE,oEAAoE;QACpE,qEAAqE;QACrE,yEAAyE;QACzE,IAAI,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC7B,OAAO,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,GAAS,OAAO,CAAC,IAAI,CAAA;YAC/B,IACI,IAAI,CAAC,IAAI,KAAK,qBAAqB;gBACnC,IAAI,CAAC,IAAI,KAAK,qBAAqB,EACrC,CAAC;gBACC,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBACjC,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;gBACpC,CAAC;gBACD,UAAU,GAAG,IAAI,CAAA;gBACjB,QAAQ,GAAG,IAAI,CAAA;gBACf,OAAM;YACV,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ;QAAE,aAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,YAAI,EAAE,IAAI,CAAC,CAAA;IAE/C,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AA5CY,QAAA,oBAAoB,wBA4ChC;AAEY,QAAA,EAAE,GAAG,4BAAoB,CAAA;AACtC,kBAAe,UAAE,CAAA"}
|
|
@@ -18,23 +18,24 @@ const queryBuilderReplacePropertyNames = (file, api) => {
|
|
|
18
18
|
return undefined;
|
|
19
19
|
let hasChanges = false;
|
|
20
20
|
let hasTodos = false;
|
|
21
|
-
// Find method declarations named replacePropertyNames in classes
|
|
22
21
|
const message = "`replacePropertyNames` was removed — property name replacement is now handled internally";
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
const flag = (node) => {
|
|
23
|
+
if ((0, todo_1.hasTodoComment)(node, message)) {
|
|
24
|
+
hasChanges = true;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
(0, todo_1.addTodoComment)(node, message, j);
|
|
27
28
|
hasChanges = true;
|
|
28
29
|
hasTodos = true;
|
|
29
|
-
}
|
|
30
|
-
|
|
30
|
+
};
|
|
31
|
+
root.find(j.ClassMethod, {
|
|
32
|
+
key: { type: "Identifier", name: "replacePropertyNames" },
|
|
33
|
+
}).forEach((p) => flag(p.node));
|
|
34
|
+
// MethodDefinition is an alternative AST shape some parsers emit for the
|
|
35
|
+
// same construct; cover both so the transform is parser-agnostic.
|
|
31
36
|
root.find(j.MethodDefinition, {
|
|
32
37
|
key: { type: "Identifier", name: "replacePropertyNames" },
|
|
33
|
-
}).forEach((
|
|
34
|
-
(0, todo_1.addTodoComment)(path.node, message, j);
|
|
35
|
-
hasChanges = true;
|
|
36
|
-
hasTodos = true;
|
|
37
|
-
});
|
|
38
|
+
}).forEach((p) => flag(p.node));
|
|
38
39
|
if (hasTodos)
|
|
39
40
|
stats_1.stats.count.todo(api, exports.name, file);
|
|
40
41
|
return hasChanges ? root.toSource() : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder-replace-property-names.js","sourceRoot":"","sources":["../../../src/transforms/v1/query-builder-replace-property-names.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"query-builder-replace-property-names.js","sourceRoot":"","sources":["../../../src/transforms/v1/query-builder-replace-property-names.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAgD;AAChD,kCAAwD;AACxD,oCAAgC;AAEnB,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,gEAAgE,CAAA;AACvD,QAAA,MAAM,GAAG,IAAI,CAAA;AAEnB,MAAM,gCAAgC,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IACzE,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAA;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAE3B,IAAI,CAAC,IAAA,6BAAe,EAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAE1D,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,MAAM,OAAO,GACT,0FAA0F,CAAA;IAE9F,MAAM,IAAI,GAAG,CAAC,IAAU,EAAQ,EAAE;QAC9B,IAAI,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAChC,UAAU,GAAG,IAAI,CAAA;YACjB,OAAM;QACV,CAAC;QACD,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QAChC,UAAU,GAAG,IAAI,CAAA;QACjB,QAAQ,GAAG,IAAI,CAAA;IACnB,CAAC,CAAA;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;QACrB,GAAG,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,EAAE;KAC5D,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAE/B,yEAAyE;IACzE,kEAAkE;IAClE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE;QAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,EAAE;KAC5D,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAE/B,IAAI,QAAQ;QAAE,aAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,YAAI,EAAE,IAAI,CAAC,CAAA;IAE/C,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AAnCY,QAAA,gCAAgC,oCAmC5C;AAEY,QAAA,EAAE,GAAG,wCAAgC,CAAA;AAClD,kBAAe,UAAE,CAAA"}
|
|
@@ -5,31 +5,48 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.fn = exports.queryBuilderWhereExpression = exports.description = exports.name = void 0;
|
|
7
7
|
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const ast_helpers_1 = require("../ast-helpers");
|
|
8
9
|
exports.name = node_path_1.default.basename(__filename, node_path_1.default.extname(__filename));
|
|
9
10
|
exports.description = "rename `WhereExpression` to `WhereExpressionBuilder`";
|
|
10
11
|
const queryBuilderWhereExpression = (file, api) => {
|
|
11
12
|
const j = api.jscodeshift;
|
|
12
13
|
const root = j(file.source);
|
|
13
14
|
let hasChanges = false;
|
|
14
|
-
|
|
15
|
+
if (!(0, ast_helpers_1.fileImportsFrom)(root, j, "typeorm"))
|
|
16
|
+
return undefined;
|
|
17
|
+
// Only rename TS type references that resolve to a TypeORM import —
|
|
18
|
+
// a local `interface WhereExpression {}` or an import from another
|
|
19
|
+
// package must not be rewritten.
|
|
20
|
+
const whereExpressionLocalNames = (0, ast_helpers_1.expandLocalNamesForImports)(root, j, "typeorm", new Set(["WhereExpression"]));
|
|
15
21
|
root.find(j.ImportSpecifier, {
|
|
16
22
|
imported: { name: "WhereExpression" },
|
|
17
|
-
}).forEach((
|
|
18
|
-
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
}).forEach((importPath) => {
|
|
24
|
+
const parent = importPath.parent.node;
|
|
25
|
+
if (parent.type !== "ImportDeclaration" ||
|
|
26
|
+
parent.source.value !== "typeorm") {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
importPath.node.imported.name = "WhereExpressionBuilder";
|
|
30
|
+
if (importPath.node.local?.type === "Identifier" &&
|
|
31
|
+
importPath.node.local?.name === "WhereExpression") {
|
|
32
|
+
importPath.node.local.name = "WhereExpressionBuilder";
|
|
22
33
|
}
|
|
23
34
|
hasChanges = true;
|
|
24
35
|
});
|
|
25
|
-
|
|
36
|
+
if ((0, ast_helpers_1.renameReExportSpecifiers)(root, j, "typeorm", {
|
|
37
|
+
WhereExpression: "WhereExpressionBuilder",
|
|
38
|
+
})) {
|
|
39
|
+
hasChanges = true;
|
|
40
|
+
}
|
|
26
41
|
root.find(j.TSTypeReference, {
|
|
27
42
|
typeName: { name: "WhereExpression" },
|
|
28
|
-
}).forEach((
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
}).forEach((refPath) => {
|
|
44
|
+
if (refPath.node.typeName.type !== "Identifier")
|
|
45
|
+
return;
|
|
46
|
+
if (!whereExpressionLocalNames.has(refPath.node.typeName.name))
|
|
47
|
+
return;
|
|
48
|
+
refPath.node.typeName.name = "WhereExpressionBuilder";
|
|
49
|
+
hasChanges = true;
|
|
33
50
|
});
|
|
34
51
|
return hasChanges ? root.toSource() : undefined;
|
|
35
52
|
};
|