@typeorm/codemod 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 (76) hide show
  1. package/README.md +2 -1
  2. package/dist/cli/print-usage.js +1 -0
  3. package/dist/cli/print-usage.js.map +1 -1
  4. package/dist/cli/run-transforms.js +167 -79
  5. package/dist/cli/run-transforms.js.map +1 -1
  6. package/dist/dependencies/v1.js +1 -0
  7. package/dist/dependencies/v1.js.map +1 -1
  8. package/dist/index.js +8 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/transforms/ast-helpers.js +820 -26
  11. package/dist/transforms/ast-helpers.js.map +1 -1
  12. package/dist/transforms/stats.js +11 -0
  13. package/dist/transforms/stats.js.map +1 -1
  14. package/dist/transforms/todo.js +22 -5
  15. package/dist/transforms/todo.js.map +1 -1
  16. package/dist/transforms/v1/column-readonly.js +28 -8
  17. package/dist/transforms/v1/column-readonly.js.map +1 -1
  18. package/dist/transforms/v1/column-unsigned-numeric.js +21 -18
  19. package/dist/transforms/v1/column-unsigned-numeric.js.map +1 -1
  20. package/dist/transforms/v1/column-width-zerofill.js +9 -3
  21. package/dist/transforms/v1/column-width-zerofill.js.map +1 -1
  22. package/dist/transforms/v1/connection-options-reader.js +23 -7
  23. package/dist/transforms/v1/connection-options-reader.js.map +1 -1
  24. package/dist/transforms/v1/connection-to-datasource.js +871 -88
  25. package/dist/transforms/v1/connection-to-datasource.js.map +1 -1
  26. package/dist/transforms/v1/datasource-expo.js +79 -0
  27. package/dist/transforms/v1/datasource-expo.js.map +1 -0
  28. package/dist/transforms/v1/datasource-mongodb.js +77 -50
  29. package/dist/transforms/v1/datasource-mongodb.js.map +1 -1
  30. package/dist/transforms/v1/datasource-mssql.js +88 -44
  31. package/dist/transforms/v1/datasource-mssql.js.map +1 -1
  32. package/dist/transforms/v1/datasource-mysql-connector.js +22 -6
  33. package/dist/transforms/v1/datasource-mysql-connector.js.map +1 -1
  34. package/dist/transforms/v1/datasource-name.js +17 -14
  35. package/dist/transforms/v1/datasource-name.js.map +1 -1
  36. package/dist/transforms/v1/datasource-sap.js +51 -39
  37. package/dist/transforms/v1/datasource-sap.js.map +1 -1
  38. package/dist/transforms/v1/datasource-sqlite-options.js +4 -1
  39. package/dist/transforms/v1/datasource-sqlite-options.js.map +1 -1
  40. package/dist/transforms/v1/file-logger.js +2 -21
  41. package/dist/transforms/v1/file-logger.js.map +1 -1
  42. package/dist/transforms/v1/find-options-string-relations.js +75 -11
  43. package/dist/transforms/v1/find-options-string-relations.js.map +1 -1
  44. package/dist/transforms/v1/find-options-string-select.js +75 -13
  45. package/dist/transforms/v1/find-options-string-select.js.map +1 -1
  46. package/dist/transforms/v1/global-functions.js +79 -21
  47. package/dist/transforms/v1/global-functions.js.map +1 -1
  48. package/dist/transforms/v1/index.js +6 -1
  49. package/dist/transforms/v1/index.js.map +1 -1
  50. package/dist/transforms/v1/mongodb-stats.js +18 -11
  51. package/dist/transforms/v1/mongodb-stats.js.map +1 -1
  52. package/dist/transforms/v1/mongodb-types.js +59 -2
  53. package/dist/transforms/v1/mongodb-types.js.map +1 -1
  54. package/dist/transforms/v1/query-builder-on-conflict.js +30 -17
  55. package/dist/transforms/v1/query-builder-on-conflict.js.map +1 -1
  56. package/dist/transforms/v1/query-builder-print-sql.js +15 -12
  57. package/dist/transforms/v1/query-builder-print-sql.js.map +1 -1
  58. package/dist/transforms/v1/query-builder-replace-property-names.js +13 -12
  59. package/dist/transforms/v1/query-builder-replace-property-names.js.map +1 -1
  60. package/dist/transforms/v1/query-builder-where-expression.js +29 -12
  61. package/dist/transforms/v1/query-builder-where-expression.js.map +1 -1
  62. package/dist/transforms/v1/query-runner-loaded-tables-views.js +0 -1
  63. package/dist/transforms/v1/query-runner-loaded-tables-views.js.map +1 -1
  64. package/dist/transforms/v1/relation-count.js +3 -0
  65. package/dist/transforms/v1/relation-count.js.map +1 -1
  66. package/dist/transforms/v1/repository-abstract.js +146 -29
  67. package/dist/transforms/v1/repository-abstract.js.map +1 -1
  68. package/dist/transforms/v1/repository-exist.js +18 -1
  69. package/dist/transforms/v1/repository-exist.js.map +1 -1
  70. package/dist/transforms/v1/repository-find-by-ids.js +67 -24
  71. package/dist/transforms/v1/repository-find-by-ids.js.map +1 -1
  72. package/dist/transforms/v1/repository-find-one-by-id.js +3 -0
  73. package/dist/transforms/v1/repository-find-one-by-id.js.map +1 -1
  74. package/dist/transforms/v1/use-container.js +60 -12
  75. package/dist/transforms/v1/use-container.js.map +1 -1
  76. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"file":"datasource-mysql-connector.js","sourceRoot":"","sources":["../../../src/transforms/v1/datasource-mysql-connector.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAgD;AAEnC,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,+DAA+D,CAAA;AAE5D,MAAM,wBAAwB,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IACjE,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;IAEtB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;QACxB,GAAG,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE;KACxD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAA;QAChB,UAAU,GAAG,IAAI,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AAhBY,QAAA,wBAAwB,4BAgBpC;AAEY,QAAA,EAAE,GAAG,gCAAwB,CAAA;AAC1C,kBAAe,UAAE,CAAA"}
1
+ {"version":3,"file":"datasource-mysql-connector.js","sourceRoot":"","sources":["../../../src/transforms/v1/datasource-mysql-connector.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAKuB;AAEV,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,uEAAuE,CAAA;AAE3E,yEAAyE;AACzE,oEAAoE;AACpE,+DAA+D;AAC/D,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,CAAC,GAAqB,EAAW,EAAE,CAC/D,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;IACtB,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAA;IACtE,IAAI,IAAA,sCAAwB,EAAC,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACxD,MAAM,OAAO,GAAG,IAAA,4BAAc,EAAC,IAAA,gCAAkB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3D,OAAO,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS,CAAA;AACvD,CAAC,CAAC,CAAA;AAEC,MAAM,wBAAwB,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IACjE,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;IAEtB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9C,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAM;QAElD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CACF,CAAC,CACG,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;YACtD,IAAA,sCAAwB,EAAC,CAAC,CAAC,KAAK,kBAAkB,CACrD,CACR,CAAA;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;YAClC,UAAU,GAAG,IAAI,CAAA;QACrB,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AAzBY,QAAA,wBAAwB,4BAyBpC;AAEY,QAAA,EAAE,GAAG,gCAAwB,CAAA;AAC1C,kBAAe,UAAE,CAAA"}
@@ -14,6 +14,14 @@ const datasourceName = (file, api) => {
14
14
  const root = j(file.source);
15
15
  if (!(0, ast_helpers_1.fileImportsFrom)(root, j, "typeorm"))
16
16
  return undefined;
17
+ // Restrict matches to local bindings that resolve to TypeORM's
18
+ // DataSource/Connection types or `createConnection`. Without this, a
19
+ // user class called `Connection` or a `createConnection` from an unrelated
20
+ // package would have its `{ name }` option silently stripped.
21
+ const dataSourceNames = (0, ast_helpers_1.expandLocalNamesForImports)(root, j, "typeorm", new Set(["DataSource", "Connection"]));
22
+ const createConnectionNames = (0, ast_helpers_1.expandLocalNamesForImports)(root, j, "typeorm", new Set(["createConnection"]));
23
+ if (dataSourceNames.size === 0 && createConnectionNames.size === 0)
24
+ return undefined;
17
25
  let hasChanges = false;
18
26
  const removeNameFromObject = (arg) => {
19
27
  if (arg?.type !== "ObjectExpression")
@@ -22,22 +30,17 @@ const datasourceName = (file, api) => {
22
30
  hasChanges = true;
23
31
  }
24
32
  };
25
- // new DataSource({ name: ... })
26
- root.find(j.NewExpression, {
27
- callee: { type: "Identifier", name: "DataSource" },
28
- }).forEach((path) => {
29
- removeNameFromObject(path.node.arguments[0]);
30
- });
31
- // new Connection({ name: ... })
32
- root.find(j.NewExpression, {
33
- callee: { type: "Identifier", name: "Connection" },
34
- }).forEach((path) => {
33
+ root.find(j.NewExpression).forEach((path) => {
34
+ const callee = path.node.callee;
35
+ if (callee.type !== "Identifier" || !dataSourceNames.has(callee.name))
36
+ return;
35
37
  removeNameFromObject(path.node.arguments[0]);
36
38
  });
37
- // createConnection({ name: ... })
38
- root.find(j.CallExpression, {
39
- callee: { type: "Identifier", name: "createConnection" },
40
- }).forEach((path) => {
39
+ root.find(j.CallExpression).forEach((path) => {
40
+ const callee = path.node.callee;
41
+ if (callee.type !== "Identifier" ||
42
+ !createConnectionNames.has(callee.name))
43
+ return;
41
44
  removeNameFromObject(path.node.arguments[0]);
42
45
  });
43
46
  return hasChanges ? root.toSource() : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"datasource-name.js","sourceRoot":"","sources":["../../../src/transforms/v1/datasource-name.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAwE;AAE3D,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,2DAA2D,CAAA;AAE/D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAEhC,MAAM,cAAc,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IACvD,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;IAEtB,MAAM,oBAAoB,GAAG,CAAC,GAAwB,EAAE,EAAE;QACtD,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB;YAAE,OAAM;QAE5C,IAAI,IAAA,oCAAsB,EAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;YAC7C,UAAU,GAAG,IAAI,CAAA;QACrB,CAAC;IACL,CAAC,CAAA;IAED,gCAAgC;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE;QACvB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;KACrD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,gCAAgC;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE;QACvB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;KACrD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,kCAAkC;IAClC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;QACxB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE;KAC3D,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AAtCY,QAAA,cAAc,kBAsC1B;AAEY,QAAA,EAAE,GAAG,sBAAc,CAAA;AAChC,kBAAe,UAAE,CAAA"}
1
+ {"version":3,"file":"datasource-name.js","sourceRoot":"","sources":["../../../src/transforms/v1/datasource-name.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAIuB;AAEV,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,2DAA2D,CAAA;AAE/D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAEhC,MAAM,cAAc,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IACvD,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,+DAA+D;IAC/D,qEAAqE;IACrE,2EAA2E;IAC3E,8DAA8D;IAC9D,MAAM,eAAe,GAAG,IAAA,wCAA0B,EAC9C,IAAI,EACJ,CAAC,EACD,SAAS,EACT,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CACxC,CAAA;IACD,MAAM,qBAAqB,GAAG,IAAA,wCAA0B,EACpD,IAAI,EACJ,CAAC,EACD,SAAS,EACT,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAChC,CAAA;IACD,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAC;QAC9D,OAAO,SAAS,CAAA;IAEpB,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,MAAM,oBAAoB,GAAG,CAAC,GAAwB,EAAE,EAAE;QACtD,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB;YAAE,OAAM;QAC5C,IAAI,IAAA,oCAAsB,EAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;YAC7C,UAAU,GAAG,IAAI,CAAA;QACrB,CAAC;IACL,CAAC,CAAA;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACjE,OAAM;QACV,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;QAC/B,IACI,MAAM,CAAC,IAAI,KAAK,YAAY;YAC5B,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAEvC,OAAM;QACV,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AApDY,QAAA,cAAc,kBAoD1B;AAEY,QAAA,EAAE,GAAG,sBAAc,CAAA;AAChC,kBAAe,UAAE,CAAA"}
@@ -8,6 +8,25 @@ const node_path_1 = __importDefault(require("node:path"));
8
8
  const ast_helpers_1 = require("../ast-helpers");
9
9
  exports.name = node_path_1.default.basename(__filename, node_path_1.default.extname(__filename));
10
10
  exports.description = "rename and remove deprecated SAP HANA connection options";
11
+ const getKeyName = (key) => {
12
+ if (key.type === "Identifier")
13
+ return key.name;
14
+ return (0, ast_helpers_1.getStringValue)(key);
15
+ };
16
+ const renameKey = (key, newName) => {
17
+ if (key.type === "Identifier") {
18
+ key.name = newName;
19
+ }
20
+ else {
21
+ (0, ast_helpers_1.setStringValue)(key, newName);
22
+ }
23
+ };
24
+ // Matches `{ type: "sap", ... }` objects — only then are SAP-specific
25
+ // option renames safe to apply (avoids clobbering unrelated user code).
26
+ // Peels TS wrappers so `type: "sap" as const` also matches.
27
+ const isSapOptions = (obj) => obj.properties.some((p) => (p.type === "ObjectProperty" || p.type === "Property") &&
28
+ getKeyName(p.key) === "type" &&
29
+ (0, ast_helpers_1.getStringValue)((0, ast_helpers_1.unwrapTsExpression)(p.value)) === "sap");
11
30
  const datasourceSap = (file, api) => {
12
31
  const j = api.jscodeshift;
13
32
  const root = j(file.source);
@@ -23,48 +42,41 @@ const datasourceSap = (file, api) => {
23
42
  idleTimeout: "maxPooledIdleTime",
24
43
  };
25
44
  const poolRemoves = new Set(["min", "maxWaitingRequests", "checkInterval"]);
26
- const getKeyName = (key) => {
27
- if (key.type === "Identifier")
28
- return key.name;
29
- return (0, ast_helpers_1.getStringValue)(key);
30
- };
31
- const renameKey = (key, newName) => {
32
- if (key.type === "Identifier") {
33
- key.name = newName;
34
- }
35
- else {
36
- (0, ast_helpers_1.setStringValue)(key, newName);
37
- }
38
- };
39
- // Rename top-level options
40
- root.find(j.ObjectProperty).forEach((path) => {
41
- const name = getKeyName(path.node.key);
42
- if (name === null)
43
- return;
44
- // Top-level renames
45
- if (topLevelRenames[name]) {
46
- renameKey(path.node.key, topLevelRenames[name]);
47
- hasChanges = true;
45
+ root.find(j.ObjectExpression).forEach((objPath) => {
46
+ if (!isSapOptions(objPath.node))
48
47
  return;
49
- }
50
- // Pool property handling — check if inside a pool object
51
- if (poolRenames[name] || poolRemoves.has(name)) {
52
- const parent = path.parent;
53
- if (parent.node.type !== "ObjectExpression")
54
- return;
55
- const grandparent = parent.parent;
56
- if (grandparent.node.type !== "ObjectProperty")
57
- return;
58
- const gpNode = grandparent.node;
59
- if (getKeyName(gpNode.key) !== "pool")
60
- return;
61
- if (poolRemoves.has(name)) {
62
- j(path).remove();
48
+ for (const prop of objPath.node.properties) {
49
+ if (prop.type !== "ObjectProperty")
50
+ continue;
51
+ const propName = getKeyName(prop.key);
52
+ if (propName === null)
53
+ continue;
54
+ if (topLevelRenames[propName]) {
55
+ renameKey(prop.key, topLevelRenames[propName]);
63
56
  hasChanges = true;
57
+ continue;
64
58
  }
65
- else if (poolRenames[name]) {
66
- renameKey(path.node.key, poolRenames[name]);
67
- hasChanges = true;
59
+ if (propName === "pool" && prop.value.type === "ObjectExpression") {
60
+ const poolObj = prop.value;
61
+ const filtered = poolObj.properties.filter((inner) => {
62
+ if (inner.type !== "ObjectProperty")
63
+ return true;
64
+ const innerName = getKeyName(inner.key);
65
+ if (innerName === null)
66
+ return true;
67
+ if (poolRemoves.has(innerName)) {
68
+ hasChanges = true;
69
+ return false;
70
+ }
71
+ if (poolRenames[innerName]) {
72
+ renameKey(inner.key, poolRenames[innerName]);
73
+ hasChanges = true;
74
+ }
75
+ return true;
76
+ });
77
+ if (filtered.length !== poolObj.properties.length) {
78
+ poolObj.properties = filtered;
79
+ }
68
80
  }
69
81
  }
70
82
  });
@@ -1 +1 @@
1
- {"version":3,"file":"datasource-sap.js","sourceRoot":"","sources":["../../../src/transforms/v1/datasource-sap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datasource-sap.js","sourceRoot":"","sources":["../../../src/transforms/v1/datasource-sap.ts"],"names":[],"mappings":"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"}
@@ -54,8 +54,11 @@ const datasourceSqliteOptions = (file, api) => {
54
54
  if (keyName !== "busyTimeout")
55
55
  continue;
56
56
  // Replace the key with an identifier — `"timeout"` doesn't need
57
- // quoting and prettier would strip the quotes anyway.
57
+ // quoting and prettier would strip the quotes anyway. Clear
58
+ // `computed` so `["busyTimeout"]: …` rewrites to a plain
59
+ // `timeout: …` instead of `[timeout]: …`.
58
60
  prop.key = j.identifier("timeout");
61
+ prop.computed = false;
59
62
  hasChanges = true;
60
63
  }
61
64
  if ((0, ast_helpers_1.removeObjectProperties)(objPath.node, new Set(["flags"]))) {
@@ -1 +1 @@
1
- {"version":3,"file":"datasource-sqlite-options.js","sourceRoot":"","sources":["../../../src/transforms/v1/datasource-sqlite-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datasource-sqlite-options.js","sourceRoot":"","sources":["../../../src/transforms/v1/datasource-sqlite-options.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAuE;AAE1D,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,uEAAuE,CAAA;AAE3E,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAC9B,QAAQ;IACR,gBAAgB;IAChB,OAAO;IACP,WAAW;IACX,SAAS;IACT,cAAc;IACd,cAAc;IACd,MAAM;CACT,CAAC,CAAA;AAEF,MAAM,eAAe,GAAG,CAAC,GAAqB,EAAW,EAAE;IACvD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC7D,SAAQ;QACZ,CAAC;QACD,MAAM,OAAO,GACT,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY;YAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;YACf,CAAC,CAAC,IAAA,4BAAc,EAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,OAAO,KAAK,MAAM;YAAE,SAAQ;QAChC,MAAM,KAAK,GAAG,IAAA,4BAAc,EAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO,KAAK,KAAK,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AAEM,MAAM,uBAAuB,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IAChE,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAA;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAE3B,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9C,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAM;QAE1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC7D,SAAQ;YACZ,CAAC;YACD,MAAM,OAAO,GACT,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY;gBAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;gBACf,CAAC,CAAC,IAAA,4BAAc,EAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAClC,IAAI,OAAO,KAAK,aAAa;gBAAE,SAAQ;YACvC,gEAAgE;YAChE,4DAA4D;YAC5D,yDAAyD;YACzD,0CAA0C;YAC1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;YAClC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,UAAU,GAAG,IAAI,CAAA;QACrB,CAAC;QAED,IAAI,IAAA,oCAAsB,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,UAAU,GAAG,IAAI,CAAA;QACrB,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AAjCY,QAAA,uBAAuB,2BAiCnC;AAEY,QAAA,EAAE,GAAG,+BAAuB,CAAA;AACzC,kBAAe,UAAE,CAAA"}
@@ -23,13 +23,6 @@ const isNullishLiteral = (node) => {
23
23
  return true;
24
24
  return n.type === "Literal" && n.value === null;
25
25
  };
26
- // Extracts a string from `StringLiteral` or string-valued `Literal`; else null.
27
- const asStringLiteral = (node) => {
28
- const n = node;
29
- if (n.type !== "StringLiteral" && n.type !== "Literal")
30
- return null;
31
- return typeof n.value === "string" ? n.value : null;
32
- };
33
26
  // Locates the `logPath` property in an options object expression, alongside
34
27
  // whether the object also contains a spread (which could contribute the key).
35
28
  const findLogPathProperty = (obj) => {
@@ -49,24 +42,12 @@ const findLogPathProperty = (obj) => {
49
42
  }
50
43
  return { value: undefined, hasSpread };
51
44
  };
52
- const unwrapTsExpression = (node) => {
53
- let current = node;
54
- while (current.type === "TSAsExpression" ||
55
- current.type === "TSNonNullExpression" ||
56
- current.type === "TSSatisfiesExpression" ||
57
- current.type === "TSTypeAssertion") {
58
- if (!current.expression)
59
- break;
60
- current = current.expression;
61
- }
62
- return current;
63
- };
64
45
  const inspectOptionsArg = (argNode) => {
65
46
  // Missing / explicit nullish → same as omitting options, flag.
66
47
  if (isNullishLiteral(argNode)) {
67
48
  return { hasOption: false, isAbsolute: false };
68
49
  }
69
- const unwrapped = unwrapTsExpression(argNode);
50
+ const unwrapped = (0, ast_helpers_1.unwrapTsExpression)(argNode);
70
51
  // Dynamic options (variable, function call, etc.) — trust the user.
71
52
  if (unwrapped.type !== "ObjectExpression") {
72
53
  return { hasOption: true, isAbsolute: true };
@@ -82,7 +63,7 @@ const inspectOptionsArg = (argNode) => {
82
63
  if (isNullishLiteral(value)) {
83
64
  return { hasOption: false, isAbsolute: false };
84
65
  }
85
- const str = asStringLiteral(value);
66
+ const str = (0, ast_helpers_1.getStringValue)(value);
86
67
  if (str !== null) {
87
68
  return { hasOption: true, isAbsolute: isAbsolutePath(str) };
88
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-logger.js","sourceRoot":"","sources":["../../../src/transforms/v1/file-logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-logger.js","sourceRoot":"","sources":["../../../src/transforms/v1/file-logger.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,kCAAwD;AACxD,oCAAgC;AAChC,gDAIuB;AAEV,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GACpB,4HAA4H,CAAA;AACnH,QAAA,MAAM,GAAG,IAAI,CAAA;AAE1B,MAAM,cAAc,GAAG,CAAC,OAAe,EAAW,EAAE,CAChD,mBAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,mBAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAEpE,wEAAwE;AACxE,MAAM,gBAAgB,GAAG,CAAC,IAAsB,EAAW,EAAE;IACzD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACnC,MAAM,CAAC,GAAG,IAIT,CAAA;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAA;IAClE,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAA;IACzC,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAA;AACnD,CAAC,CAAA;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG,CACxB,GAAqB,EAC0B,EAAE;IACjD,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAChC,SAAS,GAAG,IAAI,CAAA;YAChB,SAAQ;QACZ,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB;YAAE,SAAQ;QAC5C,MAAM,OAAO,GACT,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY;YAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;YACf,CAAC,CAAC,IAAA,4BAAc,EAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAA;IACtE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CACtB,OAAyB,EACkB,EAAE;IAC7C,+DAA+D;IAC/D,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IAClD,CAAC;IACD,MAAM,SAAS,GAAG,IAAA,gCAAkB,EAAC,OAAQ,CAAC,CAAA;IAC9C,oEAAoE;IACpE,IAAI,SAAS,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACxC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;IAChD,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAC5C,SAA6B,CAChC,CAAA;IACD,uEAAuE;IACvE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS;YACZ,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YACvC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IACjD,CAAC;IACD,gEAAgE;IAChE,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IAClD,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,4BAAc,EAAC,KAA6C,CAAC,CAAA;IACzE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACf,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/D,CAAC;IACD,iEAAiE;IACjE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;AAChD,CAAC,CAAA;AAEM,MAAM,UAAU,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IACnD,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAA;IACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,sEAAsE;IACtE,uEAAuE;IACvE,yEAAyE;IACzE,MAAM,UAAU,GAAG,IAAA,oCAAsB,EAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;IAE3E,8DAA8D;IAC9D,qEAAqE;IACrE,gCAAgC;IAChC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;IAExC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE;QAC3B,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;KAC/B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YACtC,IACI,CAAC,CAAC,IAAI,KAAK,0BAA0B;gBACrC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,EAChC,CAAC;gBACC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACpC,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE;QAC5B,IAAI,EAAE;YACF,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;SAClD;KACJ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QACxB,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB;YAAE,OAAM;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QAC5B,IAAI,CAAC,GAAG,IAAI,IAAA,4BAAc,EAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAM;QAErD,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAClC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAExE,MAAM,OAAO,GACT,wJAAwJ,CAAA;IAE5J,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;QAC5B,IACI,MAAM,CAAC,IAAI,KAAK,YAAY;YAC5B,UAAU,CAAC,GAAG,CAAE,MAA2B,CAAC,IAAI,CAAC,EACnD,CAAC;YACC,OAAO,IAAI,CAAA;QACf,CAAC;QACD,IACI,MAAM,CAAC,IAAI,KAAK,kBAAkB;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;YACnC,cAAc,CAAC,GAAG,CAAE,MAAM,CAAC,MAA2B,CAAC,IAAI,CAAC;YAC5D,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;YACpC,MAAM,CAAC,QAA6B,CAAC,IAAI,KAAK,YAAY,EAC7D,CAAC;YACC,OAAO,IAAI,CAAA;QACf,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAE/D,IAAI,SAAS,IAAI,UAAU;YAAE,OAAM;QAEnC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,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;gBACnC,IAAI,CAAC,IAAI,KAAK,iBAAiB;gBAC/B,IAAI,CAAC,IAAI,KAAK,0BAA0B;gBACxC,IAAI,CAAC,IAAI,KAAK,wBAAwB;gBACtC,IAAI,CAAC,IAAI,KAAK,eAAe;gBAC7B,IAAI,CAAC,IAAI,KAAK,oBAAoB,EACpC,CAAC;gBACC,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBACjC,IAAA,qBAAc,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;oBAChC,UAAU,GAAG,IAAI,CAAA;oBACjB,QAAQ,GAAG,IAAI,CAAA;gBACnB,CAAC;gBACD,MAAK;YACT,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,CAAC;IACL,CAAC,CAAC,CAAA;IAEN,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;AAtGY,QAAA,UAAU,cAsGtB;AAEY,QAAA,EAAE,GAAG,kBAAU,CAAA;AAC5B,kBAAe,UAAE,CAAA"}
@@ -3,11 +3,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fn = exports.findOptionsStringRelations = exports.description = exports.name = void 0;
6
+ exports.fn = exports.findOptionsStringRelations = exports.manual = exports.description = exports.name = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const ast_helpers_1 = require("../ast-helpers");
9
+ const todo_1 = require("../todo");
10
+ const stats_1 = require("../stats");
9
11
  exports.name = node_path_1.default.basename(__filename, node_path_1.default.extname(__filename));
10
12
  exports.description = "replace string-array `relations` with object syntax";
13
+ exports.manual = true;
14
+ // `relations` differs from `select` in one important way: v0 supported
15
+ // dot-paths (`"posts.comments"`) that must become nested objects in v1
16
+ // (`{ posts: { comments: true } }`). For a dynamic expression we can't
17
+ // tell at transform time whether the values contain dots, so we wrap with
18
+ // `Object.fromEntries(...map(r => [r, true]))` AND attach a comment
19
+ // noting that dot-paths need manual nesting.
20
+ const DYNAMIC_RELATIONS_DOT_PATH_NOTE = '`relations` now takes an object. If the dynamic list contains dot-paths like `"posts.comments"`, the wrap below produces `{ "posts.comments": true }` — convert those to nested objects manually: `{ posts: { comments: true } }`.';
21
+ // Bound variables / member-access values may already hold v1 object form
22
+ // instead of `string[]`, so wrapping would crash at runtime. Leave a
23
+ // comment with the conversion snippets so the user picks the right option.
24
+ const BOUND_RELATIONS_MESSAGE = "`relations` no longer accepts a string array. This value references a variable whose shape can't be determined statically — if it holds `string[]`, wrap it: `Object.fromEntries(<expr>?.map(r => [r, true]) ?? [])` (dot-paths need extra nesting handling). If it already holds the v1 object shape, no change needed.";
11
25
  /**
12
26
  * Convert an array of dot-path strings into a nested object structure.
13
27
  *
@@ -34,26 +48,76 @@ function convertRelationsArrayToObject(values) {
34
48
  }
35
49
  return result;
36
50
  }
51
+ // Builds `Object.fromEntries(<expr>?.map(r => [r, true]) ?? [])` — the
52
+ // optional-chain + nullish fallback keeps the migrated code runnable when
53
+ // the dynamic expression evaluates to `undefined`/`null` (e.g.
54
+ // `relations: flag ? ["posts"] : undefined`). v0 would have skipped the
55
+ // property in that case; the wrap here emits an empty object, matching.
56
+ const wrapDynamicStringArray = (j, expr) => {
57
+ const optionalMapCall = j.callExpression(j.optionalMemberExpression(expr, j.identifier("map")), [
58
+ j.arrowFunctionExpression([j.identifier("r")], j.arrayExpression([j.identifier("r"), j.literal(true)])),
59
+ ]);
60
+ return j.callExpression(j.memberExpression(j.identifier("Object"), j.identifier("fromEntries")), [j.logicalExpression("??", optionalMapCall, j.arrayExpression([]))]);
61
+ };
37
62
  const findOptionsStringRelations = (file, api) => {
38
63
  const j = api.jscodeshift;
39
64
  const root = j(file.source);
40
- if (!(0, ast_helpers_1.fileImportsFrom)(root, j, "typeorm"))
41
- return undefined;
42
65
  let hasChanges = false;
43
- // Find object properties named "relations" whose value is an array of strings
66
+ let hasTodos = false;
44
67
  root.find(j.ObjectProperty, {
45
68
  key: { name: "relations" },
46
- }).forEach((path) => {
47
- const value = path.node.value;
48
- if (value.type !== "ArrayExpression")
69
+ }).forEach((propPath) => {
70
+ if (!(0, ast_helpers_1.isFindMethodCallArgument)(propPath))
71
+ return;
72
+ const value = propPath.node.value;
73
+ if (value.type === "ArrayExpression") {
74
+ const strings = value.elements.map((el) => el && (0, ast_helpers_1.getStringValue)(el));
75
+ if (strings.some((s) => s === null || s === undefined))
76
+ return;
77
+ const result = convertRelationsArrayToObject(strings);
78
+ propPath.node.value = buildObjectExpression(j, result);
79
+ hasChanges = true;
80
+ return;
81
+ }
82
+ // Already in v1 object form — nothing to do.
83
+ if (value.type === "ObjectExpression")
49
84
  return;
50
- const strings = value.elements.map((el) => el && (0, ast_helpers_1.getStringValue)(el));
51
- if (strings.some((s) => s === null || s === undefined))
85
+ // Already wrapped by a previous pass — don't double-wrap, and don't
86
+ // re-add the dot-path comment (`hasTodoComment` would dedupe it anyway).
87
+ if ((0, ast_helpers_1.isObjectFromEntriesCall)(value))
52
88
  return;
53
- const result = convertRelationsArrayToObject(strings);
54
- path.node.value = buildObjectExpression(j, result);
89
+ const walkToStatement = (message) => {
90
+ let current = propPath.parent;
91
+ while (current) {
92
+ const t = current.node.type;
93
+ if (t.endsWith("Statement") || t === "VariableDeclaration") {
94
+ if (!(0, todo_1.hasTodoComment)(current.node, message)) {
95
+ (0, todo_1.addTodoComment)(current.node, message, j);
96
+ hasTodos = true;
97
+ }
98
+ return;
99
+ }
100
+ current = current.parent;
101
+ }
102
+ };
103
+ // Bound variable / member access — value might already be in v1
104
+ // object shape. Leave a comment instead of wrapping.
105
+ if (value.type === "Identifier" ||
106
+ value.type === "MemberExpression" ||
107
+ value.type === "OptionalMemberExpression") {
108
+ walkToStatement(BOUND_RELATIONS_MESSAGE);
109
+ hasChanges = true;
110
+ return;
111
+ }
112
+ // Inline dynamic value (CallExpression, ConditionalExpression, etc.)
113
+ // — wrap with `Object.fromEntries(...)`. Attach the dot-path comment
114
+ // because nesting can't be detected statically.
115
+ propPath.node.value = wrapDynamicStringArray(j, value);
55
116
  hasChanges = true;
117
+ walkToStatement(DYNAMIC_RELATIONS_DOT_PATH_NOTE);
56
118
  });
119
+ if (hasTodos)
120
+ stats_1.stats.count.todo(api, exports.name, file);
57
121
  return hasChanges ? root.toSource() : undefined;
58
122
  };
59
123
  exports.findOptionsStringRelations = findOptionsStringRelations;
@@ -1 +1 @@
1
- {"version":3,"file":"find-options-string-relations.js","sourceRoot":"","sources":["../../../src/transforms/v1/find-options-string-relations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-options-string-relations.js","sourceRoot":"","sources":["../../../src/transforms/v1/find-options-string-relations.ts"],"names":[],"mappings":"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"}
@@ -3,33 +3,95 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fn = exports.findOptionsStringSelect = exports.description = exports.name = void 0;
6
+ exports.fn = exports.findOptionsStringSelect = exports.manual = exports.description = exports.name = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const ast_helpers_1 = require("../ast-helpers");
9
+ const todo_1 = require("../todo");
10
+ const stats_1 = require("../stats");
9
11
  exports.name = node_path_1.default.basename(__filename, node_path_1.default.extname(__filename));
10
12
  exports.description = "replace string-array `select` with object syntax";
13
+ exports.manual = true;
14
+ // Bound variables / member-access values may already hold v1 object form
15
+ // (`{ id: true }`) instead of `string[]` — wrapping them with
16
+ // `Object.fromEntries(...)` would crash at runtime. Leave a comment so the
17
+ // user can convert manually based on the actual runtime type.
18
+ const BOUND_SELECT_MESSAGE = "`select` no longer accepts a string array. This value references a variable whose shape can't be determined statically — if it holds `string[]`, wrap it: `Object.fromEntries(<expr>?.map(f => [f, true]) ?? [])`. If it already holds the v1 object shape `{ field: true }`, no change needed.";
19
+ // Builds `Object.fromEntries(<expr>?.map(f => [f, true]) ?? [])` — wraps
20
+ // a `string[]`-returning expression into the v1 `{ [field]: true }` object
21
+ // at runtime. The optional-chain + nullish fallback preserves v0 semantics
22
+ // for patterns like `select: flag ? ["id"] : undefined`, where the original
23
+ // code would simply skip `select` and the post-migration code must do the
24
+ // same (empty object = no explicit selection = all columns).
25
+ const wrapDynamicStringArray = (j, expr) => {
26
+ const optionalMapCall = j.callExpression(j.optionalMemberExpression(expr, j.identifier("map")), [
27
+ j.arrowFunctionExpression([j.identifier("f")], j.arrayExpression([j.identifier("f"), j.literal(true)])),
28
+ ]);
29
+ return j.callExpression(j.memberExpression(j.identifier("Object"), j.identifier("fromEntries")), [j.logicalExpression("??", optionalMapCall, j.arrayExpression([]))]);
30
+ };
31
+ // Walks up to the enclosing Statement / VariableDeclaration and attaches
32
+ // the bound-variable comment there (recast drops comments placed on
33
+ // inner expressions). Returns true when a new comment was added.
34
+ const attachBoundTodo = (propPath, j) => {
35
+ let current = propPath.parent;
36
+ while (current) {
37
+ const t = current.node.type;
38
+ if (t.endsWith("Statement") || t === "VariableDeclaration") {
39
+ if ((0, todo_1.hasTodoComment)(current.node, BOUND_SELECT_MESSAGE))
40
+ return false;
41
+ (0, todo_1.addTodoComment)(current.node, BOUND_SELECT_MESSAGE, j);
42
+ return true;
43
+ }
44
+ current = current.parent;
45
+ }
46
+ return false;
47
+ };
11
48
  const findOptionsStringSelect = (file, api) => {
12
49
  const j = api.jscodeshift;
13
50
  const root = j(file.source);
14
- if (!(0, ast_helpers_1.fileImportsFrom)(root, j, "typeorm"))
15
- return undefined;
16
51
  let hasChanges = false;
17
- // Find object properties named "select" whose value is an array of strings
52
+ let hasTodos = false;
18
53
  root.find(j.ObjectProperty, {
19
54
  key: { name: "select" },
20
- }).forEach((path) => {
21
- const value = path.node.value;
22
- if (value.type !== "ArrayExpression")
55
+ }).forEach((propPath) => {
56
+ // Gate on call-site shape, not file-level typeorm import, so we still
57
+ // fire in NestJS-style service files that only pull TypeORM types via
58
+ // a wrapper module.
59
+ if (!(0, ast_helpers_1.isFindMethodCallArgument)(propPath))
60
+ return;
61
+ const value = propPath.node.value;
62
+ if (value.type === "ArrayExpression") {
63
+ const strings = value.elements.map((el) => el && (0, ast_helpers_1.getStringValue)(el));
64
+ if (strings.some((s) => s === null || s === undefined))
65
+ return;
66
+ propPath.node.value = j.objectExpression(strings.map((s) => j.property("init", j.identifier(s), j.literal(true))));
67
+ hasChanges = true;
68
+ return;
69
+ }
70
+ // Already in v1 object form — nothing to do.
71
+ if (value.type === "ObjectExpression")
72
+ return;
73
+ // Already wrapped by a previous pass — don't double-wrap.
74
+ if ((0, ast_helpers_1.isObjectFromEntriesCall)(value))
23
75
  return;
24
- const elements = value.elements;
25
- const strings = elements.map((el) => el && (0, ast_helpers_1.getStringValue)(el));
26
- if (strings.some((s) => s === null || s === undefined))
76
+ // Bound variable / member access — the value might already be in v1
77
+ // object shape (a partially-migrated codebase), so wrapping would
78
+ // crash at runtime. Leave a comment instead.
79
+ if (value.type === "Identifier" ||
80
+ value.type === "MemberExpression" ||
81
+ value.type === "OptionalMemberExpression") {
82
+ if (attachBoundTodo(propPath, j))
83
+ hasTodos = true;
84
+ hasChanges = true;
27
85
  return;
28
- // Convert ["id", "name"] → { id: true, name: true }
29
- const properties = strings.map((s) => j.property("init", j.identifier(s), j.literal(true)));
30
- path.node.value = j.objectExpression(properties);
86
+ }
87
+ // Inline dynamic value (CallExpression, ConditionalExpression, etc.)
88
+ // — wrap unconditionally; v0 only accepted `string[]` so the runtime
89
+ // shape is known to be the array form.
90
+ propPath.node.value = wrapDynamicStringArray(j, value);
31
91
  hasChanges = true;
32
92
  });
93
+ if (hasTodos)
94
+ stats_1.stats.count.todo(api, exports.name, file);
33
95
  return hasChanges ? root.toSource() : undefined;
34
96
  };
35
97
  exports.findOptionsStringSelect = findOptionsStringSelect;
@@ -1 +1 @@
1
- {"version":3,"file":"find-options-string-select.js","sourceRoot":"","sources":["../../../src/transforms/v1/find-options-string-select.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,gDAAgE;AAEnD,QAAA,IAAI,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1D,QAAA,WAAW,GAAG,kDAAkD,CAAA;AAEtE,MAAM,uBAAuB,GAAG,CAAC,IAAc,EAAE,GAAQ,EAAE,EAAE;IAChE,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;IAEtB,2EAA2E;IAC3E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;QACxB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC1B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;YAAE,OAAM;QAE5C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,IAAA,4BAAc,EAAC,EAAE,CAAC,CAAC,CAAA;QAC9D,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC;YAAE,OAAM;QAE9D,oDAAoD;QACpD,MAAM,UAAU,GAAI,OAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACvD,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAChD,UAAU,GAAG,IAAI,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC,CAAA;AA7BY,QAAA,uBAAuB,2BA6BnC;AAEY,QAAA,EAAE,GAAG,+BAAuB,CAAA;AACzC,kBAAe,UAAE,CAAA"}
1
+ {"version":3,"file":"find-options-string-select.js","sourceRoot":"","sources":["../../../src/transforms/v1/find-options-string-select.ts"],"names":[],"mappings":"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"}