@typeorm/codemod 1.0.1 → 1.0.3-nightly.20261009

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 (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -1
  3. package/dist/cli/print-usage.js +1 -0
  4. package/dist/cli/print-usage.js.map +1 -1
  5. package/dist/cli/run-transforms.js +167 -79
  6. package/dist/cli/run-transforms.js.map +1 -1
  7. package/dist/dependencies/v1.js +1 -0
  8. package/dist/dependencies/v1.js.map +1 -1
  9. package/dist/index.js +8 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/transforms/ast-helpers.js +820 -26
  12. package/dist/transforms/ast-helpers.js.map +1 -1
  13. package/dist/transforms/stats.js +11 -0
  14. package/dist/transforms/stats.js.map +1 -1
  15. package/dist/transforms/todo.js +22 -5
  16. package/dist/transforms/todo.js.map +1 -1
  17. package/dist/transforms/v1/column-readonly.js +28 -8
  18. package/dist/transforms/v1/column-readonly.js.map +1 -1
  19. package/dist/transforms/v1/column-unsigned-numeric.js +21 -18
  20. package/dist/transforms/v1/column-unsigned-numeric.js.map +1 -1
  21. package/dist/transforms/v1/column-width-zerofill.js +9 -3
  22. package/dist/transforms/v1/column-width-zerofill.js.map +1 -1
  23. package/dist/transforms/v1/connection-options-reader.js +23 -7
  24. package/dist/transforms/v1/connection-options-reader.js.map +1 -1
  25. package/dist/transforms/v1/connection-to-datasource.js +871 -88
  26. package/dist/transforms/v1/connection-to-datasource.js.map +1 -1
  27. package/dist/transforms/v1/datasource-expo.js +79 -0
  28. package/dist/transforms/v1/datasource-expo.js.map +1 -0
  29. package/dist/transforms/v1/datasource-mongodb.js +77 -50
  30. package/dist/transforms/v1/datasource-mongodb.js.map +1 -1
  31. package/dist/transforms/v1/datasource-mssql.js +88 -44
  32. package/dist/transforms/v1/datasource-mssql.js.map +1 -1
  33. package/dist/transforms/v1/datasource-mysql-connector.js +22 -6
  34. package/dist/transforms/v1/datasource-mysql-connector.js.map +1 -1
  35. package/dist/transforms/v1/datasource-name.js +17 -14
  36. package/dist/transforms/v1/datasource-name.js.map +1 -1
  37. package/dist/transforms/v1/datasource-sap.js +51 -39
  38. package/dist/transforms/v1/datasource-sap.js.map +1 -1
  39. package/dist/transforms/v1/datasource-sqlite-options.js +4 -1
  40. package/dist/transforms/v1/datasource-sqlite-options.js.map +1 -1
  41. package/dist/transforms/v1/file-logger.js +2 -21
  42. package/dist/transforms/v1/file-logger.js.map +1 -1
  43. package/dist/transforms/v1/find-options-string-relations.js +75 -11
  44. package/dist/transforms/v1/find-options-string-relations.js.map +1 -1
  45. package/dist/transforms/v1/find-options-string-select.js +75 -13
  46. package/dist/transforms/v1/find-options-string-select.js.map +1 -1
  47. package/dist/transforms/v1/global-functions.js +79 -21
  48. package/dist/transforms/v1/global-functions.js.map +1 -1
  49. package/dist/transforms/v1/index.js +6 -1
  50. package/dist/transforms/v1/index.js.map +1 -1
  51. package/dist/transforms/v1/mongodb-stats.js +18 -11
  52. package/dist/transforms/v1/mongodb-stats.js.map +1 -1
  53. package/dist/transforms/v1/mongodb-types.js +62 -2
  54. package/dist/transforms/v1/mongodb-types.js.map +1 -1
  55. package/dist/transforms/v1/query-builder-on-conflict.js +30 -17
  56. package/dist/transforms/v1/query-builder-on-conflict.js.map +1 -1
  57. package/dist/transforms/v1/query-builder-print-sql.js +15 -12
  58. package/dist/transforms/v1/query-builder-print-sql.js.map +1 -1
  59. package/dist/transforms/v1/query-builder-replace-property-names.js +13 -12
  60. package/dist/transforms/v1/query-builder-replace-property-names.js.map +1 -1
  61. package/dist/transforms/v1/query-builder-where-expression.js +29 -12
  62. package/dist/transforms/v1/query-builder-where-expression.js.map +1 -1
  63. package/dist/transforms/v1/query-runner-loaded-tables-views.js +0 -1
  64. package/dist/transforms/v1/query-runner-loaded-tables-views.js.map +1 -1
  65. package/dist/transforms/v1/relation-count.js +3 -0
  66. package/dist/transforms/v1/relation-count.js.map +1 -1
  67. package/dist/transforms/v1/repository-abstract.js +146 -29
  68. package/dist/transforms/v1/repository-abstract.js.map +1 -1
  69. package/dist/transforms/v1/repository-exist.js +18 -1
  70. package/dist/transforms/v1/repository-exist.js.map +1 -1
  71. package/dist/transforms/v1/repository-find-by-ids.js +67 -24
  72. package/dist/transforms/v1/repository-find-by-ids.js.map +1 -1
  73. package/dist/transforms/v1/repository-find-one-by-id.js +3 -0
  74. package/dist/transforms/v1/repository-find-one-by-id.js.map +1 -1
  75. package/dist/transforms/v1/use-container.js +60 -12
  76. package/dist/transforms/v1/use-container.js.map +1 -1
  77. package/package.json +16 -17
@@ -25,7 +25,21 @@ const removedGlobals = new Set([
25
25
  "getMongoManager",
26
26
  "getMongoRepository",
27
27
  ]);
28
- // Simple replacements: getX(args) → dataSource.x(args)
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
- if (callReplacements.size > 0 || getConnectionLocals.size > 0) {
92
- root.find(j.CallExpression).forEach((astPath) => {
93
- const callee = astPath.node.callee;
94
- if (callee.type !== "Identifier")
95
- return;
96
- // `getConnection()` → `dataSource`. Named connections are gone
97
- // in v1 — rewrite `getConnection("name")` to `dataSource` too
98
- // (the argument is dropped) and flag so the user knows to
99
- // reconfigure for multi-DataSource setups.
100
- if (getConnectionLocals.has(callee.name)) {
101
- const hadArg = astPath.node.arguments.length > 0;
102
- j(astPath).replaceWith(j.identifier("dataSource"));
103
- hasChanges = true;
104
- if (hadArg)
105
- hasNamedConnection = true;
106
- return;
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
- const replacement = callReplacements.get(callee.name);
109
- if (replacement && rewriteSimpleCall(j, astPath, replacement)) {
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":"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"}
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;;;GAGG;AACU,QAAA,UAAU,GAAG;IACtB,sBAAsB;IACtB,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,cAAc;IACd,qBAAqB;IACrB,kBAAkB;IAClB,aAAa;IACb,sBAAsB;IACtB,oBAAoB;IACpB,4BAA4B;IAC5B,gCAAgC;IAChC,uBAAuB;IACvB,0BAA0B;IAC1B,iBAAiB;IACjB,uBAAuB;IACvB,UAAU;CACb,CAAA;AAED,kBAAe,IAAA,yBAAW,EAAC,kBAAU,CAAC,CAAA"}
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((path) => {
29
- const parentNode = path.parent.node;
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
- (0, todo_1.addTodoComment)(parentNode, message, j);
39
+ host = parentNode;
32
40
  }
33
41
  else if (parentNode.type === "AwaitExpression") {
34
- const grandparentNode = path.parent.parent.node;
42
+ const grandparentNode = callPath.parent.parent.node;
35
43
  if (grandparentNode.type === "ExpressionStatement") {
36
- (0, todo_1.addTodoComment)(grandparentNode, message, j);
37
- }
38
- else {
39
- (0, todo_1.addTodoComment)(path.node, message, j);
44
+ host = grandparentNode;
40
45
  }
41
46
  }
42
- else {
43
- (0, todo_1.addTodoComment)(path.node, message, j);
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,gDAAgD;AAChD,kCAAwC;AACxC,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,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,MAAM,OAAO,GAAG,yDAAyD,CAAA;IAEzE,sBAAsB;IACtB,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,IAAI,EAAE,EAAE;QAChB,MAAM,UAAU,GAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;QACzC,IAAI,UAAU,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC5C,IAAA,qBAAc,EAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QAC1C,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/C,MAAM,eAAe,GAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;YACrD,IAAI,eAAe,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACjD,IAAA,qBAAc,EAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACJ,IAAA,qBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;YACzC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAA,qBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QACzC,CAAC;QACD,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;AAtCY,QAAA,YAAY,gBAsCxB;AAEY,QAAA,EAAE,GAAG,oBAAY,CAAA;AAC9B,kBAAe,UAAE,CAAA"}
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,68 @@ 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();
115
+ for (const spec of existingPath.node.specifiers ?? []) {
116
+ if (spec.type === "ExportSpecifier" &&
117
+ spec.local?.type === "Identifier") {
118
+ existingNames.add(spec.local.name);
119
+ }
120
+ }
121
+ for (const spec of moved) {
122
+ if (spec.type === "ExportSpecifier" &&
123
+ spec.local?.type === "Identifier" &&
124
+ !existingNames.has(spec.local.name)) {
125
+ existingPath.node.specifiers?.push(spec);
126
+ }
127
+ }
128
+ }
129
+ else {
130
+ const newExport = j.exportNamedDeclaration(null, moved, j.stringLiteral("mongodb"));
131
+ // Preserve the source declaration's exportKind so moved `export type`
132
+ // specifiers don't get silently promoted to value exports.
133
+ if (sourceNode.exportKind) {
134
+ newExport.exportKind = sourceNode.exportKind;
135
+ }
136
+ exportPath.insertAfter(newExport);
137
+ }
138
+ });
79
139
  return hasChanges ? root.toSource() : undefined;
80
140
  };
81
141
  exports.mongodbTypes = mongodbTypes;
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb-types.js","sourceRoot":"","sources":["../../../src/transforms/v1/mongodb-types.ts"],"names":[],"mappings":"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"}
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((path) => {
27
- const arg = path.node.arguments[0];
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
- // Replace .onConflict("DO NOTHING") with .orIgnore()
31
- if (path.node.callee.type === "MemberExpression") {
32
- path.node.callee.property = j.identifier("orIgnore");
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
- else {
38
- const message = "`onConflict()` was removed — use `orIgnore()` or `orUpdate()` instead";
39
- const parentNode = path.parent.node;
40
- if (parentNode.type === "ExpressionStatement") {
41
- (0, todo_1.addTodoComment)(parentNode, message, j);
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,kCAAwC;AACxC,oCAAgC;AAEnB,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,iFAAiF,CAAA;AACxE,QAAA,MAAM,GAAG,IAAI,CAAA;AAEnB,MAAM,sBAAsB,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IAC/D,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,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,YAAY,EAAE;SACvD;KACJ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,IAAA,4BAAc,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAEjD,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,qDAAqD;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;gBACpD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;gBACxB,UAAU,GAAG,IAAI,CAAA;YACrB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,OAAO,GACT,uEAAuE,CAAA;YAC3E,MAAM,UAAU,GAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;YACzC,IAAI,UAAU,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAC5C,IAAA,qBAAc,EAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACJ,IAAA,qBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;YACzC,CAAC;YACD,UAAU,GAAG,IAAI,CAAA;YACjB,QAAQ,GAAG,IAAI,CAAA;QACnB,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;AA1CY,QAAA,sBAAsB,0BA0ClC;AAEY,QAAA,EAAE,GAAG,8BAAsB,CAAA;AACxC,kBAAe,UAAE,CAAA"}
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((path) => {
28
- // Walk up to find the enclosing ExpressionStatement
29
- let current = path.parent;
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
- (0, todo_1.addTodoComment)(node, message, j);
34
- break;
35
- }
36
- if (node.type === "VariableDeclaration") {
37
- (0, todo_1.addTodoComment)(node, message, j);
38
- break;
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,kCAAwC;AACxC,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,IAAI,EAAE,EAAE;QAChB,oDAAoD;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,OAAO,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,GAAS,OAAO,CAAC,IAAI,CAAA;YAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACtC,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;gBAChC,MAAK;YACT,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACtC,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;gBAChC,MAAK;YACT,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,CAAC;QACD,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;AAvCY,QAAA,oBAAoB,wBAuChC;AAEY,QAAA,EAAE,GAAG,4BAAoB,CAAA;AACtC,kBAAe,UAAE,CAAA"}
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
- root.find(j.ClassMethod, {
24
- key: { type: "Identifier", name: "replacePropertyNames" },
25
- }).forEach((path) => {
26
- (0, todo_1.addTodoComment)(path.node, message, j);
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
- // Also check for MethodDefinition (alternative AST representation)
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((path) => {
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,kCAAwC;AACxC,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,iEAAiE;IACjE,MAAM,OAAO,GACT,0FAA0F,CAAA;IAE9F,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,IAAI,EAAE,EAAE;QAChB,IAAA,qBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QACrC,UAAU,GAAG,IAAI,CAAA;QACjB,QAAQ,GAAG,IAAI,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,mEAAmE;IACnE,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,IAAI,EAAE,EAAE;QAChB,IAAA,qBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QACrC,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;AAjCY,QAAA,gCAAgC,oCAiC5C;AAEY,QAAA,EAAE,GAAG,wCAAgC,CAAA;AAClD,kBAAe,UAAE,CAAA"}
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
- // Rename in imports
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((path) => {
18
- path.node.imported.name = "WhereExpressionBuilder";
19
- if (path.node.local?.type === "Identifier" &&
20
- path.node.local?.name === "WhereExpression") {
21
- path.node.local.name = "WhereExpressionBuilder";
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
- // Rename in type references
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((path) => {
29
- if (path.node.typeName.type === "Identifier") {
30
- path.node.typeName.name = "WhereExpressionBuilder";
31
- hasChanges = true;
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
  };