@openrewrite/recipes-nodejs 0.52.0-20261007-191722 → 0.52.0-20261007-192604

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 (23) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/migrate/source-map-support/enable-source-maps-at-launch.d.ts +19 -0
  5. package/dist/migrate/source-map-support/enable-source-maps-at-launch.d.ts.map +1 -0
  6. package/dist/migrate/source-map-support/enable-source-maps-at-launch.js +311 -0
  7. package/dist/migrate/source-map-support/enable-source-maps-at-launch.js.map +1 -0
  8. package/dist/migrate/source-map-support/migrate-source-map-support-to-native.d.ts.map +1 -1
  9. package/dist/migrate/source-map-support/migrate-source-map-support-to-native.js +5 -1
  10. package/dist/migrate/source-map-support/migrate-source-map-support-to-native.js.map +1 -1
  11. package/dist/migrate/source-map-support/register-flag.d.ts +4 -0
  12. package/dist/migrate/source-map-support/register-flag.d.ts.map +1 -1
  13. package/dist/migrate/source-map-support/register-flag.js +35 -0
  14. package/dist/migrate/source-map-support/register-flag.js.map +1 -1
  15. package/dist/migrate/source-map-support/source-map-support-rewrites.d.ts.map +1 -1
  16. package/dist/migrate/source-map-support/source-map-support-rewrites.js +2 -0
  17. package/dist/migrate/source-map-support/source-map-support-rewrites.js.map +1 -1
  18. package/package.json +1 -1
  19. package/src/index.ts +2 -0
  20. package/src/migrate/source-map-support/enable-source-maps-at-launch.ts +289 -0
  21. package/src/migrate/source-map-support/migrate-source-map-support-to-native.ts +5 -1
  22. package/src/migrate/source-map-support/register-flag.ts +48 -0
  23. package/src/migrate/source-map-support/source-map-support-rewrites.ts +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAmE3E,eAAO,MAAM,MAAM,EAAE,kBAAkB,EAA+B,CAAC;AACvE,eAAO,MAAM,OAAO,EAAE,kBAAkB,EAA0C,CAAC;AACnF,eAAO,MAAM,OAAO,EAAE,kBAAkB,EAA4C,CAAC;AACrF,eAAO,MAAM,OAAO,EAAE,kBAAkB,EAA2C,CAAC;AACpF,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EAAsD,CAAC;AACxG,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EAAsD,CAAC;AACxG,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,EAAuD,CAAC;AAE1G,wBAAsB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAoE3E,eAAO,MAAM,MAAM,EAAE,kBAAkB,EAA+B,CAAC;AACvE,eAAO,MAAM,OAAO,EAAE,kBAAkB,EAA0C,CAAC;AACnF,eAAO,MAAM,OAAO,EAAE,kBAAkB,EAA4C,CAAC;AACrF,eAAO,MAAM,OAAO,EAAE,kBAAkB,EAA2C,CAAC;AACpF,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EAAsD,CAAC;AACxG,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EAAsD,CAAC;AACxG,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,EAAuD,CAAC;AAE1G,wBAAsB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D5E"}
package/dist/index.js CHANGED
@@ -60,6 +60,7 @@ const find_hpagent_manual_migrations_1 = require("./migrate/hpagent/find-hpagent
60
60
  const swap_hpagent_dependency_1 = require("./migrate/hpagent/swap-hpagent-dependency");
61
61
  const migrate_source_map_support_to_native_1 = require("./migrate/source-map-support/migrate-source-map-support-to-native");
62
62
  const find_source_map_support_manual_migrations_1 = require("./migrate/source-map-support/find-source-map-support-manual-migrations");
63
+ const enable_source_maps_at_launch_1 = require("./migrate/source-map-support/enable-source-maps-at-launch");
63
64
  const replace_source_map_support_install_1 = require("./migrate/source-map-support/replace-source-map-support-install");
64
65
  const replace_source_map_support_register_in_package_json_1 = require("./migrate/source-map-support/replace-source-map-support-register-in-package-json");
65
66
  const replace_source_map_support_register_in_mocha_config_1 = require("./migrate/source-map-support/replace-source-map-support-register-in-mocha-config");
@@ -130,6 +131,7 @@ function activate(marketplace) {
130
131
  yield marketplace.install(swap_hpagent_dependency_1.SwapHpagentDependency, exports.Hpagent);
131
132
  yield marketplace.install(migrate_source_map_support_to_native_1.MigrateSourceMapSupportToNative, exports.SourceMapSupport);
132
133
  yield marketplace.install(replace_source_map_support_install_1.ReplaceSourceMapSupportInstall, exports.SourceMapSupport);
134
+ yield marketplace.install(enable_source_maps_at_launch_1.EnableSourceMapsAtLaunch, exports.SourceMapSupport);
133
135
  yield marketplace.install(replace_source_map_support_register_in_package_json_1.ReplaceSourceMapSupportRegisterInPackageJson, exports.SourceMapSupport);
134
136
  yield marketplace.install(replace_source_map_support_register_in_mocha_config_1.ReplaceSourceMapSupportRegisterInMochaConfig, exports.SourceMapSupport);
135
137
  yield marketplace.install(find_source_map_support_manual_migrations_1.FindSourceMapSupportManualMigrations, exports.SourceMapSupport);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { ExecutionContext, ScanningRecipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ interface Accumulator {
3
+ declined: string[];
4
+ binTargets: string[];
5
+ rewritableShebangs: string[];
6
+ launchableScripts: string[];
7
+ packageDirs: string[];
8
+ }
9
+ export declare class EnableSourceMapsAtLaunch extends ScanningRecipe<Accumulator> {
10
+ readonly name = "org.openrewrite.node.migrate.source-map-support.enable-source-maps-at-launch";
11
+ readonly displayName = "Enable native source maps at launch and drop `source-map-support`";
12
+ readonly description: string;
13
+ readonly tags: string[];
14
+ initialValue(_ctx: ExecutionContext): Accumulator;
15
+ scanner(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>>;
16
+ editorWithData(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>>;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=enable-source-maps-at-launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable-source-maps-at-launch.d.ts","sourceRoot":"","sources":["../../../src/migrate/source-map-support/enable-source-maps-at-launch.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,gBAAgB,EAAE,cAAc,EAAQ,WAAW,EAAC,MAAM,sBAAsB,CAAC;AASzF,UAAU,WAAW;IAEjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAE7B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB;AAaD,qBAAa,wBAAyB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACrE,QAAQ,CAAC,IAAI,kFAAkF;IAC/F,QAAQ,CAAC,WAAW,uEAAuE;IAC3F,QAAQ,CAAC,WAAW,SAOgD;IACpE,QAAQ,CAAC,IAAI,WAA0B;IAEvC,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW;IAI3C,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAkEtE,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAgGtF"}
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EnableSourceMapsAtLaunch = void 0;
13
+ const rewrite_1 = require("@openrewrite/rewrite");
14
+ const java_1 = require("@openrewrite/rewrite/java");
15
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
16
+ const json_1 = require("@openrewrite/rewrite/json");
17
+ const text_1 = require("@openrewrite/rewrite/text");
18
+ const package_json_support_1 = require("../package-json-support");
19
+ const register_flag_1 = require("./register-flag");
20
+ const source_map_support_support_1 = require("./source-map-support-support");
21
+ function packageOf(path, packageDirs) {
22
+ const candidates = packageDirs.filter(dir => dir === '' || path.startsWith(dir + '/'));
23
+ return candidates.sort((a, b) => b.length - a.length)[0];
24
+ }
25
+ function joinPath(dir, rest) {
26
+ const normalized = rest.replace(/^\.\//, '');
27
+ return dir === '' ? normalized : `${dir}/${normalized}`;
28
+ }
29
+ class EnableSourceMapsAtLaunch extends rewrite_1.ScanningRecipe {
30
+ constructor() {
31
+ super(...arguments);
32
+ this.name = "org.openrewrite.node.migrate.source-map-support.enable-source-maps-at-launch";
33
+ this.displayName = "Enable native source maps at launch and drop `source-map-support`";
34
+ this.description = "Where `source-map-support` is installed too late for `process.setSourceMapsEnabled(true)` " +
35
+ "to stand in for it — in an ES module, every `import` is evaluated before any statement runs, so the call " +
36
+ "would only map what loads after it — this puts `--enable-source-maps` on whatever launches the process " +
37
+ "instead, which Node applies before the first module loads. The flag goes into the package's `bin` shebang " +
38
+ "(as `#!/usr/bin/env -S node --enable-source-maps`) and into any `package.json` script that runs `node` or " +
39
+ "`mocha` directly. The `install()` call and `register` import are then redundant and are removed, rather " +
40
+ "than replaced by a call that would map less. A package with no launcher this recipe can reach is left " +
41
+ "alone and reported by `FindSourceMapSupportManualMigrations`.";
42
+ this.tags = ["source-map-support"];
43
+ }
44
+ initialValue(_ctx) {
45
+ return { declined: [], binTargets: [], rewritableShebangs: [], launchableScripts: [], packageDirs: [] };
46
+ }
47
+ scanner(acc) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ const js = new class extends source_map_support_support_1.SourceMapSupportVisitor {
50
+ visitShebang(shebang, p) {
51
+ const _super = Object.create(null, {
52
+ visitShebang: { get: () => super.visitShebang }
53
+ });
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ if ((0, register_flag_1.shebangWithSourceMapsFlag)(shebang.text))
56
+ acc.rewritableShebangs.push((0, source_map_support_support_1.sourcePathOf)(this.cursor));
57
+ return _super.visitShebang.call(this, shebang, p);
58
+ });
59
+ }
60
+ visitImportDeclaration(jsImport, p) {
61
+ const _super = Object.create(null, {
62
+ visitImportDeclaration: { get: () => super.visitImportDeclaration }
63
+ });
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ var _a, _b;
66
+ if (!jsImport.importClause && register_flag_1.REGISTER_MODULES.has((_b = (0, source_map_support_support_1.stringLiteral)((_a = jsImport.moduleSpecifier) === null || _a === void 0 ? void 0 : _a.element)) !== null && _b !== void 0 ? _b : '')) {
67
+ this.recordIfDeclined();
68
+ }
69
+ return _super.visitImportDeclaration.call(this, jsImport, p);
70
+ });
71
+ }
72
+ visitMethodInvocation(method, p) {
73
+ const _super = Object.create(null, {
74
+ visitMethodInvocation: { get: () => super.visitMethodInvocation }
75
+ });
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ if (this.isInstall(method) || isRegisterRequire(method))
78
+ this.recordIfDeclined();
79
+ return _super.visitMethodInvocation.call(this, method, p);
80
+ });
81
+ }
82
+ recordIfDeclined() {
83
+ if (this.mapsEverythingLoaded())
84
+ return;
85
+ const path = (0, source_map_support_support_1.sourcePathOf)(this.cursor);
86
+ if (!acc.declined.includes(path))
87
+ acc.declined.push(path);
88
+ }
89
+ };
90
+ const json = new class extends json_1.JsonVisitor {
91
+ visitDocument(doc, p) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ var _a;
94
+ if (!(0, package_json_support_1.isPackageJson)(doc.sourcePath) || !(0, json_1.isObject)(doc.value))
95
+ return doc;
96
+ const dir = (0, package_json_support_1.dirOf)(doc.sourcePath);
97
+ if (!acc.packageDirs.includes(dir))
98
+ acc.packageDirs.push(dir);
99
+ const root = doc.value;
100
+ for (const padded of root.members) {
101
+ if (!(0, json_1.isMember)(padded.element))
102
+ continue;
103
+ const member = padded.element;
104
+ const key = (_a = (0, json_1.getMemberKeyName)(member)) !== null && _a !== void 0 ? _a : '';
105
+ if (key === 'bin') {
106
+ for (const target of binTargetsOf(member.value))
107
+ acc.binTargets.push(joinPath(dir, target));
108
+ }
109
+ else if (key === 'scripts' && (0, json_1.isObject)(member.value)) {
110
+ const launchable = member.value.members.some(entry => {
111
+ if (!(0, json_1.isMember)(entry.element))
112
+ return false;
113
+ const value = entry.element.value;
114
+ return (0, json_1.isLiteral)(value) && typeof value.value === 'string' && (0, register_flag_1.launchesNode)(value.value);
115
+ });
116
+ if (launchable && !acc.launchableScripts.includes(dir))
117
+ acc.launchableScripts.push(dir);
118
+ }
119
+ }
120
+ return doc;
121
+ });
122
+ }
123
+ };
124
+ return new class extends rewrite_1.TreeVisitor {
125
+ accept(tree, p) {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ if (tree.kind === javascript_1.JS.Kind.CompilationUnit)
128
+ return js.visit(tree, p);
129
+ if (tree.kind === json_1.Json.Kind.Document)
130
+ return json.visit(tree, p);
131
+ if (tree.kind === text_1.PlainText.Kind.PlainText) {
132
+ const text = tree;
133
+ const first = text.text.split('\n', 1)[0];
134
+ if ((0, register_flag_1.shebangWithSourceMapsFlag)(first))
135
+ acc.rewritableShebangs.push(text.sourcePath);
136
+ }
137
+ return tree;
138
+ });
139
+ }
140
+ };
141
+ });
142
+ }
143
+ editorWithData(acc) {
144
+ return __awaiter(this, void 0, void 0, function* () {
145
+ const packageOfPath = (path) => enclosingPackage(path, acc.packageDirs);
146
+ const shebangsFor = (dir) => acc.rewritableShebangs.filter(path => packageOfPath(path) === dir &&
147
+ (acc.declined.includes(path) || acc.binTargets.includes(path)));
148
+ const declinedPackages = new Set(acc.declined.map(packageOfPath));
149
+ const flagged = new Set([...declinedPackages].filter(dir => acc.launchableScripts.includes(dir) || shebangsFor(dir).length > 0));
150
+ const removeSites = new Set(acc.declined.filter(path => flagged.has(packageOfPath(path))));
151
+ const shebangsToFlag = new Set([...flagged].flatMap(shebangsFor));
152
+ const scriptPackages = new Set([...flagged].filter(dir => shebangsFor(dir).length === 0));
153
+ const js = new class extends javascript_1.JavaScriptVisitor {
154
+ visitJsCompilationUnit(cu, p) {
155
+ const _super = Object.create(null, {
156
+ visitJsCompilationUnit: { get: () => super.visitJsCompilationUnit }
157
+ });
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ const flagShebang = shebangsToFlag.has(cu.sourcePath);
160
+ const removeHere = removeSites.has(cu.sourcePath);
161
+ if (!flagShebang && !removeHere)
162
+ return cu;
163
+ let statements = cu.statements;
164
+ if (flagShebang) {
165
+ statements = statements.map(padded => {
166
+ if (padded.element.kind !== javascript_1.JS.Kind.Shebang)
167
+ return padded;
168
+ const flagged = (0, register_flag_1.shebangWithSourceMapsFlag)(padded.element.text);
169
+ return flagged ? Object.assign(Object.assign({}, padded), { element: Object.assign(Object.assign({}, padded.element), { text: flagged }) }) : padded;
170
+ });
171
+ }
172
+ if (removeHere) {
173
+ statements = withoutStatements(statements, s => isRedundantEntryPoint(s));
174
+ }
175
+ const result = statements === cu.statements ? cu : Object.assign(Object.assign({}, cu), { statements });
176
+ const visited = yield _super.visitJsCompilationUnit.call(this, result, p);
177
+ if (removeHere) {
178
+ (0, javascript_1.maybeUnbind)(this, { module: 'source-map-support' });
179
+ (0, javascript_1.maybeUnbind)(this, { module: 'source-map-support', member: 'install' });
180
+ }
181
+ return visited;
182
+ });
183
+ }
184
+ };
185
+ const json = new class extends json_1.JsonVisitor {
186
+ visitDocument(doc, p) {
187
+ return __awaiter(this, void 0, void 0, function* () {
188
+ if (!(0, package_json_support_1.isPackageJson)(doc.sourcePath) || !(0, json_1.isObject)(doc.value))
189
+ return doc;
190
+ if (!scriptPackages.has((0, package_json_support_1.dirOf)(doc.sourcePath)))
191
+ return doc;
192
+ const root = doc.value;
193
+ let changed = false;
194
+ const members = root.members.map(padded => {
195
+ if (!(0, json_1.isMember)(padded.element))
196
+ return padded;
197
+ const member = padded.element;
198
+ if ((0, json_1.getMemberKeyName)(member) !== 'scripts' || !(0, json_1.isObject)(member.value))
199
+ return padded;
200
+ const scripts = member.value;
201
+ let sectionChanged = false;
202
+ const entries = scripts.members.map(entry => {
203
+ if (!(0, json_1.isMember)(entry.element))
204
+ return entry;
205
+ const script = entry.element;
206
+ const value = script.value;
207
+ if (!(0, json_1.isLiteral)(value) || typeof value.value !== 'string')
208
+ return entry;
209
+ const updated = (0, register_flag_1.addSourceMapsFlag)(value.value);
210
+ if (updated === value.value)
211
+ return entry;
212
+ sectionChanged = true;
213
+ return Object.assign(Object.assign({}, entry), { element: Object.assign(Object.assign({}, script), { value: Object.assign(Object.assign({}, value), { value: updated, source: JSON.stringify(updated) }) }) });
214
+ });
215
+ if (!sectionChanged)
216
+ return padded;
217
+ changed = true;
218
+ return Object.assign(Object.assign({}, padded), { element: Object.assign(Object.assign({}, member), { value: Object.assign(Object.assign({}, scripts), { members: entries }) }) });
219
+ });
220
+ return changed ? Object.assign(Object.assign({}, doc), { value: Object.assign(Object.assign({}, root), { members }) }) : doc;
221
+ });
222
+ }
223
+ };
224
+ return new class extends rewrite_1.TreeVisitor {
225
+ accept(tree, p) {
226
+ return __awaiter(this, void 0, void 0, function* () {
227
+ if (tree.kind === javascript_1.JS.Kind.CompilationUnit)
228
+ return js.visit(tree, p);
229
+ if (tree.kind === json_1.Json.Kind.Document)
230
+ return json.visit(tree, p);
231
+ if (tree.kind === text_1.PlainText.Kind.PlainText) {
232
+ const text = tree;
233
+ if (!shebangsToFlag.has(text.sourcePath))
234
+ return tree;
235
+ const lines = text.text.split('\n');
236
+ const flagged = (0, register_flag_1.shebangWithSourceMapsFlag)(lines[0]);
237
+ if (!flagged)
238
+ return tree;
239
+ return Object.assign(Object.assign({}, text), { text: [flagged, ...lines.slice(1)].join('\n') });
240
+ }
241
+ return tree;
242
+ });
243
+ }
244
+ };
245
+ });
246
+ }
247
+ }
248
+ exports.EnableSourceMapsAtLaunch = EnableSourceMapsAtLaunch;
249
+ function withoutStatements(statements, remove) {
250
+ const kept = [];
251
+ let pendingWhitespace;
252
+ for (const padded of statements) {
253
+ if (remove(padded.element)) {
254
+ pendingWhitespace !== null && pendingWhitespace !== void 0 ? pendingWhitespace : (pendingWhitespace = padded.element.prefix.whitespace);
255
+ continue;
256
+ }
257
+ kept.push(pendingWhitespace === undefined ? padded : Object.assign(Object.assign({}, padded), { element: Object.assign(Object.assign({}, padded.element), { prefix: Object.assign(Object.assign({}, padded.element.prefix), { whitespace: pendingWhitespace }) }) }));
258
+ pendingWhitespace = undefined;
259
+ }
260
+ return kept;
261
+ }
262
+ function enclosingPackage(path, packageDirs) {
263
+ var _a;
264
+ return (_a = packageOf(path, packageDirs)) !== null && _a !== void 0 ? _a : '';
265
+ }
266
+ function isRegisterRequire(m) {
267
+ var _a, _b;
268
+ return !m.select && m.name.simpleName === 'require' &&
269
+ register_flag_1.REGISTER_MODULES.has((_b = (0, source_map_support_support_1.stringLiteral)((_a = m.arguments.elements[0]) === null || _a === void 0 ? void 0 : _a.element)) !== null && _b !== void 0 ? _b : '');
270
+ }
271
+ function isRedundantEntryPoint(statement) {
272
+ var _a, _b;
273
+ if (statement.kind === javascript_1.JS.Kind.Import) {
274
+ const imp = statement;
275
+ return !imp.importClause && (0, source_map_support_support_1.isSourceMapSupport)((0, source_map_support_support_1.stringLiteral)((_a = imp.moduleSpecifier) === null || _a === void 0 ? void 0 : _a.element));
276
+ }
277
+ const expression = statement.kind === javascript_1.JS.Kind.ExpressionStatement
278
+ ? statement.expression
279
+ : statement;
280
+ const call = (expression === null || expression === void 0 ? void 0 : expression.kind) === javascript_1.JS.Kind.Await ? expression.expression : expression;
281
+ if ((call === null || call === void 0 ? void 0 : call.kind) !== java_1.J.Kind.MethodInvocation)
282
+ return false;
283
+ const m = call;
284
+ if (isRegisterRequire(m))
285
+ return true;
286
+ if (m.name.simpleName !== 'install')
287
+ return false;
288
+ const select = (_b = m.select) === null || _b === void 0 ? void 0 : _b.element;
289
+ return (select === null || select === void 0 ? void 0 : select.kind) === java_1.J.Kind.MethodInvocation
290
+ ? (0, source_map_support_support_1.isSourceMapSupport)(requiredModuleOf(select))
291
+ : select !== undefined;
292
+ }
293
+ function requiredModuleOf(m) {
294
+ var _a;
295
+ return !m.select && m.name.simpleName === 'require'
296
+ ? (0, source_map_support_support_1.stringLiteral)((_a = m.arguments.elements[0]) === null || _a === void 0 ? void 0 : _a.element)
297
+ : undefined;
298
+ }
299
+ function binTargetsOf(value) {
300
+ if ((0, json_1.isLiteral)(value))
301
+ return typeof value.value === 'string' ? [value.value] : [];
302
+ if (!(0, json_1.isObject)(value))
303
+ return [];
304
+ return value.members.flatMap(padded => {
305
+ if (!(0, json_1.isMember)(padded.element))
306
+ return [];
307
+ const entry = padded.element.value;
308
+ return (0, json_1.isLiteral)(entry) && typeof entry.value === 'string' ? [entry.value] : [];
309
+ });
310
+ }
311
+ //# sourceMappingURL=enable-source-maps-at-launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable-source-maps-at-launch.js","sourceRoot":"","sources":["../../../src/migrate/source-map-support/enable-source-maps-at-launch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-source-map-support-to-native.d.ts","sourceRoot":"","sources":["../../../src/migrate/source-map-support/migrate-source-map-support-to-native.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAK5C,qBAAa,+BAAgC,SAAQ,MAAM;IACvD,QAAQ,CAAC,IAAI,0FAA0F;IACvG,QAAQ,CAAC,WAAW,gEAAgE;IACpF,QAAQ,CAAC,WAAW,SAM6F;IACjH,QAAQ,CAAC,IAAI,WAA0B;IAEjC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAOxC"}
1
+ {"version":3,"file":"migrate-source-map-support-to-native.d.ts","sourceRoot":"","sources":["../../../src/migrate/source-map-support/migrate-source-map-support-to-native.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAK5C,qBAAa,+BAAgC,SAAQ,MAAM;IACvD,QAAQ,CAAC,IAAI,0FAA0F;IACvG,QAAQ,CAAC,WAAW,gEAAgE;IACpF,QAAQ,CAAC,WAAW,SAU6F;IACjH,QAAQ,CAAC,IAAI,WAA0B;IAEjC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAOxC"}
@@ -21,7 +21,11 @@ class MigrateSourceMapSupportToNative extends rewrite_1.Recipe {
21
21
  this.displayName = "Migrate `source-map-support` to Node.js native source maps";
22
22
  this.description = "Replaces the `source-map-support` package with Node.js's built-in source map support. " +
23
23
  "Where Node is launched from `package.json` scripts or mocha/ava configuration, `source-map-support/register` becomes " +
24
- "the `--enable-source-maps` flag; in code, `install()` and `register` imports become `process.setSourceMapsEnabled(true)`. " +
24
+ "the `--enable-source-maps` flag; in code, `install()` and `register` imports become " +
25
+ "`process.setSourceMapsEnabled(true)` where that maps everything the module loads. Where it would not " +
26
+ "— in an ES module every `import` is evaluated before any statement runs — the flag goes on the " +
27
+ "launcher instead, in the package's `bin` shebang or a `node` script, and the entry point is removed " +
28
+ "as redundant. " +
25
29
  "Uses with no native equivalent (custom `retrieveSourceMap`, browser bundles, webpack banners) are left in place, and " +
26
30
  "the dependency is removed from each `package.json` that declares it, with the lock file updated to match. " +
27
31
  "Everything left in place is recorded in the `SourceMapSupportManualMigrationSteps` data table with a " +
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-source-map-support-to-native.js","sourceRoot":"","sources":["../../../src/migrate/source-map-support/migrate-source-map-support-to-native.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,kDAA4C;AAC5C,2GAAiG;AACjG,+GAAqG;AACrG,+EAA6E;AAE7E,MAAa,+BAAgC,SAAQ,gBAAM;IAA3D;;QACa,SAAI,GAAG,sFAAsF,CAAC;QAC9F,gBAAW,GAAG,4DAA4D,CAAC;QAC3E,gBAAW,GAAG,wFAAwF;YAC3G,uHAAuH;YACvH,4HAA4H;YAC5H,uHAAuH;YACvH,4GAA4G;YAC5G,uGAAuG;YACvG,4GAA4G,CAAC;QACxG,SAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAS3C,CAAC;IAPS,UAAU;;YACZ,OAAO;gBACH,GAAG,IAAA,4DAA8B,GAAE;gBACnC,IAAI,gFAAoC,EAAE;gBAC1C,IAAI,oFAAsC,EAAE;aAC/C,CAAC;QACN,CAAC;KAAA;CACJ;AAnBD,0EAmBC"}
1
+ {"version":3,"file":"migrate-source-map-support-to-native.js","sourceRoot":"","sources":["../../../src/migrate/source-map-support/migrate-source-map-support-to-native.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,kDAA4C;AAC5C,2GAAiG;AACjG,+GAAqG;AACrG,+EAA6E;AAE7E,MAAa,+BAAgC,SAAQ,gBAAM;IAA3D;;QACa,SAAI,GAAG,sFAAsF,CAAC;QAC9F,gBAAW,GAAG,4DAA4D,CAAC;QAC3E,gBAAW,GAAG,wFAAwF;YAC3G,uHAAuH;YACvH,sFAAsF;YACtF,uGAAuG;YACvG,iGAAiG;YACjG,sGAAsG;YACtG,gBAAgB;YAChB,uHAAuH;YACvH,4GAA4G;YAC5G,uGAAuG;YACvG,4GAA4G,CAAC;QACxG,SAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAS3C,CAAC;IAPS,UAAU;;YACZ,OAAO;gBACH,GAAG,IAAA,4DAA8B,GAAE;gBACnC,IAAI,gFAAoC,EAAE;gBAC1C,IAAI,oFAAsC,EAAE;aAC/C,CAAC;QACN,CAAC;KAAA;CACJ;AAvBD,0EAuBC"}
@@ -1,3 +1,7 @@
1
1
  export declare const REGISTER_MODULES: Set<string>;
2
+ export declare function hasSourceMapsFlag(text: string): boolean;
3
+ export declare function launchesNode(script: string): boolean;
4
+ export declare function addSourceMapsFlag(script: string): string;
5
+ export declare function shebangWithSourceMapsFlag(line: string): string | undefined;
2
6
  export declare function replaceRegisterFlag(script: string): string;
3
7
  //# sourceMappingURL=register-flag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-flag.d.ts","sourceRoot":"","sources":["../../../src/migrate/source-map-support/register-flag.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,aAG3B,CAAC;AA4BH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY1D"}
1
+ {"version":3,"file":"register-flag.d.ts","sourceRoot":"","sources":["../../../src/migrate/source-map-support/register-flag.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,aAG3B,CAAC;AA4BH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMpD;AAOD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOxD;AAOD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1E;AAOD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY1D"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.REGISTER_MODULES = void 0;
4
+ exports.hasSourceMapsFlag = hasSourceMapsFlag;
5
+ exports.launchesNode = launchesNode;
6
+ exports.addSourceMapsFlag = addSourceMapsFlag;
7
+ exports.shebangWithSourceMapsFlag = shebangWithSourceMapsFlag;
4
8
  exports.replaceRegisterFlag = replaceRegisterFlag;
5
9
  exports.REGISTER_MODULES = new Set([
6
10
  'source-map-support/register', 'source-map-support/register.js',
@@ -22,6 +26,37 @@ function commandOf(segment) {
22
26
  }
23
27
  return undefined;
24
28
  }
29
+ const SHEBANG = /^#!(\s*\S*\/env\s+)(-S\s+)?node(?=\s|$)(.*)$/;
30
+ const ENABLE_FLAG = '--enable-source-maps';
31
+ function hasSourceMapsFlag(text) {
32
+ return new RegExp(`(^|\\s)${ENABLE_FLAG}(\\s|$)`).test(text);
33
+ }
34
+ function launchesNode(script) {
35
+ return script.split(/(\s*(?:&&|\|\||;|\|)\s*)/).some((part, i) => {
36
+ var _a;
37
+ if (i % 2 === 1 || !NODE_FLAG_COMMANDS.has((_a = commandOf(part)) !== null && _a !== void 0 ? _a : ''))
38
+ return false;
39
+ if (/(^|\s)(?:-e|--eval|-p|--print)(?=\s|$)/.test(part))
40
+ return false;
41
+ return !/(^|\s)node_modules\//.test(part);
42
+ });
43
+ }
44
+ function addSourceMapsFlag(script) {
45
+ const parts = script.split(/(\s*(?:&&|\|\||;|\|)\s*)/);
46
+ return parts.map((part, i) => {
47
+ var _a;
48
+ if (i % 2 === 1 || !NODE_FLAG_COMMANDS.has((_a = commandOf(part)) !== null && _a !== void 0 ? _a : '') || hasSourceMapsFlag(part))
49
+ return part;
50
+ return part.replace(/(^|\s)((?:\S*[\\/])?(?:node|mocha|_mocha))(?=\s|$)/, `$1$2 ${ENABLE_FLAG}`);
51
+ }).join('');
52
+ }
53
+ function shebangWithSourceMapsFlag(line) {
54
+ const match = SHEBANG.exec(line);
55
+ if (!match || hasSourceMapsFlag(line))
56
+ return undefined;
57
+ const [, env, dashS, rest] = match;
58
+ return `#!${env}${dashS !== null && dashS !== void 0 ? dashS : '-S '}node ${ENABLE_FLAG}${rest}`;
59
+ }
25
60
  function replaceRegisterFlag(script) {
26
61
  const parts = script.split(/(\s*(?:&&|\|\||;|\|)\s*)/);
27
62
  return parts.map((part, i) => {
@@ -1 +1 @@
1
- {"version":3,"file":"register-flag.js","sourceRoot":"","sources":["../../../src/migrate/source-map-support/register-flag.ts"],"names":[],"mappings":";;;AAqCA,kDAYC;AA3CY,QAAA,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACpC,6BAA6B,EAAE,gCAAgC;IAC/D,0CAA0C,EAAE,6CAA6C;CAC5F,CAAC,CAAC;AAGH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGhE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5E,MAAM,gBAAgB,GAAG,0GAA0G,CAAC;AACpI,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAGlD,SAAS,SAAS,CAAC,OAAe;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAOD,SAAgB,mBAAmB,CAAC,MAAc;IAE9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/E,IAAI,OAAO,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;YAC3D,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAC;YACvB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,GAAG,IAAI,sBAAsB,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"register-flag.js","sourceRoot":"","sources":["../../../src/migrate/source-map-support/register-flag.ts"],"names":[],"mappings":";;;AAqCA,8CAEC;AAOD,oCAMC;AAOD,8CAOC;AAOD,8DAKC;AAOD,kDAYC;AA3FY,QAAA,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACpC,6BAA6B,EAAE,gCAAgC;IAC/D,0CAA0C,EAAE,6CAA6C;CAC5F,CAAC,CAAC;AAGH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGhE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5E,MAAM,gBAAgB,GAAG,0GAA0G,CAAC;AACpI,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAGlD,SAAS,SAAS,CAAC,OAAe;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,MAAM,OAAO,GAAG,8CAA8C,CAAC;AAE/D,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAE3C,SAAgB,iBAAiB,CAAC,IAAY;IAC1C,OAAO,IAAI,MAAM,CAAC,UAAU,WAAW,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAOD,SAAgB,YAAY,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;;QAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QAChF,IAAI,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACP,CAAC;AAOD,SAAgB,iBAAiB,CAAC,MAAc;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1G,OAAO,IAAI,CAAC,OAAO,CAAC,oDAAoD,EAAE,QAAQ,WAAW,EAAE,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC;AAOD,SAAgB,yBAAyB,CAAC,IAAY;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IACnC,OAAO,KAAK,GAAG,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,KAAK,QAAQ,WAAW,GAAG,IAAI,EAAE,CAAC;AACjE,CAAC;AAOD,SAAgB,mBAAmB,CAAC,MAAc;IAE9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/E,IAAI,OAAO,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;YAC3D,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAC;YACvB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,GAAG,IAAI,sBAAsB,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"source-map-support-rewrites.d.ts","sourceRoot":"","sources":["../../../src/migrate/source-map-support/source-map-support-rewrites.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAM5C,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAMzD"}
1
+ {"version":3,"file":"source-map-support-rewrites.d.ts","sourceRoot":"","sources":["../../../src/migrate/source-map-support/source-map-support-rewrites.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAO5C,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAQzD"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sourceMapSupportRewriteRecipes = sourceMapSupportRewriteRecipes;
4
+ const enable_source_maps_at_launch_1 = require("./enable-source-maps-at-launch");
4
5
  const replace_source_map_support_install_1 = require("./replace-source-map-support-install");
5
6
  const replace_source_map_support_register_in_package_json_1 = require("./replace-source-map-support-register-in-package-json");
6
7
  const replace_source_map_support_register_in_mocha_config_1 = require("./replace-source-map-support-register-in-mocha-config");
@@ -9,6 +10,7 @@ function sourceMapSupportRewriteRecipes() {
9
10
  new replace_source_map_support_register_in_package_json_1.ReplaceSourceMapSupportRegisterInPackageJson(),
10
11
  new replace_source_map_support_register_in_mocha_config_1.ReplaceSourceMapSupportRegisterInMochaConfig(),
11
12
  new replace_source_map_support_install_1.ReplaceSourceMapSupportInstall(),
13
+ new enable_source_maps_at_launch_1.EnableSourceMapsAtLaunch(),
12
14
  ];
13
15
  }
14
16
  //# sourceMappingURL=source-map-support-rewrites.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source-map-support-rewrites.js","sourceRoot":"","sources":["../../../src/migrate/source-map-support/source-map-support-rewrites.ts"],"names":[],"mappings":";;AAYA,wEAMC;AAXD,6FAAoF;AACpF,+HAAmH;AACnH,+HAAmH;AAGnH,SAAgB,8BAA8B;IAC1C,OAAO;QACH,IAAI,kGAA4C,EAAE;QAClD,IAAI,kGAA4C,EAAE;QAClD,IAAI,mEAA8B,EAAE;KACvC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"source-map-support-rewrites.js","sourceRoot":"","sources":["../../../src/migrate/source-map-support/source-map-support-rewrites.ts"],"names":[],"mappings":";;AAaA,wEAQC;AAdD,iFAAwE;AACxE,6FAAoF;AACpF,+HAAmH;AACnH,+HAAmH;AAGnH,SAAgB,8BAA8B;IAC1C,OAAO;QACH,IAAI,kGAA4C,EAAE;QAClD,IAAI,kGAA4C,EAAE;QAClD,IAAI,mEAA8B,EAAE;QAEpC,IAAI,uDAAwB,EAAE;KACjC,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrewrite/recipes-nodejs",
3
- "version": "0.52.0-20261007-191722",
3
+ "version": "0.52.0-20261007-192604",
4
4
  "license": "Moderne Proprietary",
5
5
  "description": "OpenRewrite recipes for Node.js library migrations.",
6
6
  "homepage": "https://github.com/moderneinc/rewrite-node",
package/src/index.ts CHANGED
@@ -53,6 +53,7 @@ import {FindHpagentManualMigrations} from "./migrate/hpagent/find-hpagent-manual
53
53
  import {SwapHpagentDependency} from "./migrate/hpagent/swap-hpagent-dependency";
54
54
  import {MigrateSourceMapSupportToNative} from "./migrate/source-map-support/migrate-source-map-support-to-native";
55
55
  import {FindSourceMapSupportManualMigrations} from "./migrate/source-map-support/find-source-map-support-manual-migrations";
56
+ import {EnableSourceMapsAtLaunch} from "./migrate/source-map-support/enable-source-maps-at-launch";
56
57
  import {ReplaceSourceMapSupportInstall} from "./migrate/source-map-support/replace-source-map-support-install";
57
58
  import {ReplaceSourceMapSupportRegisterInPackageJson} from "./migrate/source-map-support/replace-source-map-support-register-in-package-json";
58
59
  import {ReplaceSourceMapSupportRegisterInMochaConfig} from "./migrate/source-map-support/replace-source-map-support-register-in-mocha-config";
@@ -128,6 +129,7 @@ export async function activate(marketplace: RecipeMarketplace): Promise<void> {
128
129
  await marketplace.install(SwapHpagentDependency, Hpagent);
129
130
  await marketplace.install(MigrateSourceMapSupportToNative, SourceMapSupport);
130
131
  await marketplace.install(ReplaceSourceMapSupportInstall, SourceMapSupport);
132
+ await marketplace.install(EnableSourceMapsAtLaunch, SourceMapSupport);
131
133
  await marketplace.install(ReplaceSourceMapSupportRegisterInPackageJson, SourceMapSupport);
132
134
  await marketplace.install(ReplaceSourceMapSupportRegisterInMochaConfig, SourceMapSupport);
133
135
  await marketplace.install(FindSourceMapSupportManualMigrations, SourceMapSupport);
@@ -0,0 +1,289 @@
1
+ /*
2
+ * Copyright 2026 the original author or authors.
3
+ *
4
+ * Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
5
+ */
6
+
7
+ import {ExecutionContext, ScanningRecipe, Tree, TreeVisitor} from "@openrewrite/rewrite";
8
+ import {J} from "@openrewrite/rewrite/java";
9
+ import {JavaScriptVisitor, JS, maybeUnbind} from "@openrewrite/rewrite/javascript";
10
+ import {getMemberKeyName, isLiteral, isMember, isObject, Json, JsonVisitor} from "@openrewrite/rewrite/json";
11
+ import {PlainText} from "@openrewrite/rewrite/text";
12
+ import {dirOf, isPackageJson} from "../package-json-support";
13
+ import {addSourceMapsFlag, launchesNode, REGISTER_MODULES, shebangWithSourceMapsFlag} from "./register-flag";
14
+ import {isSourceMapSupport, SourceMapSupportVisitor, sourcePathOf, stringLiteral} from "./source-map-support-support";
15
+
16
+ interface Accumulator {
17
+ /** Files holding an `install()` or `register` entry point the in-place rewrite declines. */
18
+ declined: string[];
19
+ /** `bin` targets each `package.json` declares, as repo-relative paths. */
20
+ binTargets: string[];
21
+ /** Files whose shebang can carry Node's flags. */
22
+ rewritableShebangs: string[];
23
+ /** Packages with a script that runs Node directly, which can take the flag. */
24
+ launchableScripts: string[];
25
+ /** Every `package.json` directory, so a source can be attributed to its package. */
26
+ packageDirs: string[];
27
+ }
28
+
29
+ /** The nearest enclosing directory that is a package, for a repo-relative path. */
30
+ function packageOf(path: string, packageDirs: string[]): string | undefined {
31
+ const candidates = packageDirs.filter(dir => dir === '' || path.startsWith(dir + '/'));
32
+ return candidates.sort((a, b) => b.length - a.length)[0];
33
+ }
34
+
35
+ function joinPath(dir: string, rest: string): string {
36
+ const normalized = rest.replace(/^\.\//, '');
37
+ return dir === '' ? normalized : `${dir}/${normalized}`;
38
+ }
39
+
40
+ export class EnableSourceMapsAtLaunch extends ScanningRecipe<Accumulator> {
41
+ readonly name = "org.openrewrite.node.migrate.source-map-support.enable-source-maps-at-launch";
42
+ readonly displayName = "Enable native source maps at launch and drop `source-map-support`";
43
+ readonly description = "Where `source-map-support` is installed too late for `process.setSourceMapsEnabled(true)` " +
44
+ "to stand in for it — in an ES module, every `import` is evaluated before any statement runs, so the call " +
45
+ "would only map what loads after it — this puts `--enable-source-maps` on whatever launches the process " +
46
+ "instead, which Node applies before the first module loads. The flag goes into the package's `bin` shebang " +
47
+ "(as `#!/usr/bin/env -S node --enable-source-maps`) and into any `package.json` script that runs `node` or " +
48
+ "`mocha` directly. The `install()` call and `register` import are then redundant and are removed, rather " +
49
+ "than replaced by a call that would map less. A package with no launcher this recipe can reach is left " +
50
+ "alone and reported by `FindSourceMapSupportManualMigrations`.";
51
+ readonly tags = ["source-map-support"];
52
+
53
+ initialValue(_ctx: ExecutionContext): Accumulator {
54
+ return {declined: [], binTargets: [], rewritableShebangs: [], launchableScripts: [], packageDirs: []};
55
+ }
56
+
57
+ async scanner(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>> {
58
+ const js = new class extends SourceMapSupportVisitor<ExecutionContext> {
59
+ protected override async visitShebang(shebang: JS.Shebang, p: ExecutionContext): Promise<J | undefined> {
60
+ if (shebangWithSourceMapsFlag(shebang.text)) acc.rewritableShebangs.push(sourcePathOf(this.cursor));
61
+ return super.visitShebang(shebang, p);
62
+ }
63
+
64
+ protected override async visitImportDeclaration(jsImport: JS.Import, p: ExecutionContext): Promise<J | undefined> {
65
+ if (!jsImport.importClause && REGISTER_MODULES.has(stringLiteral(jsImport.moduleSpecifier?.element) ?? '')) {
66
+ this.recordIfDeclined();
67
+ }
68
+ return super.visitImportDeclaration(jsImport, p);
69
+ }
70
+
71
+ protected override async visitMethodInvocation(method: J.MethodInvocation, p: ExecutionContext): Promise<J | undefined> {
72
+ if (this.isInstall(method) || isRegisterRequire(method)) this.recordIfDeclined();
73
+ return super.visitMethodInvocation(method, p);
74
+ }
75
+
76
+ /** Only a site the in-place rewrite turns down is this recipe's business. */
77
+ private recordIfDeclined(): void {
78
+ if (this.mapsEverythingLoaded()) return;
79
+ const path = sourcePathOf(this.cursor);
80
+ if (!acc.declined.includes(path)) acc.declined.push(path);
81
+ }
82
+ };
83
+
84
+ const json = new class extends JsonVisitor<ExecutionContext> {
85
+ protected override async visitDocument(doc: Json.Document, p: ExecutionContext): Promise<Json | undefined> {
86
+ if (!isPackageJson(doc.sourcePath) || !isObject(doc.value)) return doc;
87
+ const dir = dirOf(doc.sourcePath);
88
+ if (!acc.packageDirs.includes(dir)) acc.packageDirs.push(dir);
89
+ const root = doc.value as Json.Object;
90
+ for (const padded of root.members) {
91
+ if (!isMember(padded.element)) continue;
92
+ const member = padded.element as Json.Member;
93
+ const key = getMemberKeyName(member) ?? '';
94
+ if (key === 'bin') {
95
+ for (const target of binTargetsOf(member.value)) acc.binTargets.push(joinPath(dir, target));
96
+ } else if (key === 'scripts' && isObject(member.value)) {
97
+ const launchable = (member.value as Json.Object).members.some(entry => {
98
+ if (!isMember(entry.element)) return false;
99
+ const value = (entry.element as Json.Member).value;
100
+ return isLiteral(value) && typeof value.value === 'string' && launchesNode(value.value);
101
+ });
102
+ if (launchable && !acc.launchableScripts.includes(dir)) acc.launchableScripts.push(dir);
103
+ }
104
+ }
105
+ return doc;
106
+ }
107
+ };
108
+
109
+ return new class extends TreeVisitor<Tree, ExecutionContext> {
110
+ protected override async accept(tree: Tree, p: ExecutionContext): Promise<Tree | undefined> {
111
+ if (tree.kind === JS.Kind.CompilationUnit) return js.visit(tree, p);
112
+ if (tree.kind === Json.Kind.Document) return json.visit(tree, p);
113
+ if (tree.kind === PlainText.Kind.PlainText) {
114
+ const text = tree as PlainText;
115
+ const first = text.text.split('\n', 1)[0];
116
+ if (shebangWithSourceMapsFlag(first)) acc.rewritableShebangs.push(text.sourcePath);
117
+ }
118
+ return tree;
119
+ }
120
+ };
121
+ }
122
+
123
+ async editorWithData(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>> {
124
+ const packageOfPath = (path: string) => enclosingPackage(path, acc.packageDirs);
125
+
126
+ // A package can take the flag if a script runs Node, or if a shebang this recipe can rewrite
127
+ // belongs to it — either the declining file's own or one its `bin` points at.
128
+ const shebangsFor = (dir: string) => acc.rewritableShebangs.filter(path =>
129
+ packageOfPath(path) === dir &&
130
+ (acc.declined.includes(path) || acc.binTargets.includes(path)));
131
+
132
+ const declinedPackages = new Set(acc.declined.map(packageOfPath));
133
+ const flagged = new Set([...declinedPackages].filter(dir =>
134
+ acc.launchableScripts.includes(dir) || shebangsFor(dir).length > 0));
135
+
136
+ const removeSites = new Set(acc.declined.filter(path => flagged.has(packageOfPath(path))));
137
+ const shebangsToFlag = new Set([...flagged].flatMap(shebangsFor));
138
+ // A shebang already puts the flag on the process this package launches, so its scripts —
139
+ // which may run unrelated tools — are left as they are.
140
+ const scriptPackages = new Set([...flagged].filter(dir => shebangsFor(dir).length === 0));
141
+
142
+ const js = new class extends JavaScriptVisitor<ExecutionContext> {
143
+ protected override async visitJsCompilationUnit(cu: JS.CompilationUnit, p: ExecutionContext): Promise<J | undefined> {
144
+ const flagShebang = shebangsToFlag.has(cu.sourcePath);
145
+ const removeHere = removeSites.has(cu.sourcePath);
146
+ if (!flagShebang && !removeHere) return cu;
147
+
148
+ let statements = cu.statements;
149
+ if (flagShebang) {
150
+ statements = statements.map(padded => {
151
+ if (padded.element.kind !== JS.Kind.Shebang) return padded;
152
+ const flagged = shebangWithSourceMapsFlag((padded.element as JS.Shebang).text);
153
+ return flagged ? {...padded, element: {...padded.element, text: flagged} as JS.Shebang} : padded;
154
+ });
155
+ }
156
+ if (removeHere) {
157
+ statements = withoutStatements(statements, s => isRedundantEntryPoint(s));
158
+ }
159
+ const result = statements === cu.statements ? cu : {...cu, statements} as JS.CompilationUnit;
160
+ const visited = await super.visitJsCompilationUnit(result, p) as JS.CompilationUnit;
161
+ if (removeHere) {
162
+ // The launch flag covers the whole process, so nothing needs the module any more.
163
+ maybeUnbind(this, {module: 'source-map-support'});
164
+ maybeUnbind(this, {module: 'source-map-support', member: 'install'});
165
+ }
166
+ return visited;
167
+ }
168
+ };
169
+
170
+ const json = new class extends JsonVisitor<ExecutionContext> {
171
+ protected override async visitDocument(doc: Json.Document, p: ExecutionContext): Promise<Json | undefined> {
172
+ if (!isPackageJson(doc.sourcePath) || !isObject(doc.value)) return doc;
173
+ if (!scriptPackages.has(dirOf(doc.sourcePath))) return doc;
174
+ const root = doc.value as Json.Object;
175
+ let changed = false;
176
+ const members = root.members.map(padded => {
177
+ if (!isMember(padded.element)) return padded;
178
+ const member = padded.element as Json.Member;
179
+ if (getMemberKeyName(member) !== 'scripts' || !isObject(member.value)) return padded;
180
+ const scripts = member.value as Json.Object;
181
+ let sectionChanged = false;
182
+ const entries = scripts.members.map(entry => {
183
+ if (!isMember(entry.element)) return entry;
184
+ const script = entry.element as Json.Member;
185
+ const value = script.value;
186
+ if (!isLiteral(value) || typeof value.value !== 'string') return entry;
187
+ const updated = addSourceMapsFlag(value.value);
188
+ if (updated === value.value) return entry;
189
+ sectionChanged = true;
190
+ return {
191
+ ...entry,
192
+ element: {...script, value: {...value, value: updated, source: JSON.stringify(updated)}} as Json.Member
193
+ };
194
+ });
195
+ if (!sectionChanged) return padded;
196
+ changed = true;
197
+ return {...padded, element: {...member, value: {...scripts, members: entries}} as Json.Member};
198
+ });
199
+ return changed ? {...doc, value: {...root, members}} as Json.Document : doc;
200
+ }
201
+ };
202
+
203
+ return new class extends TreeVisitor<Tree, ExecutionContext> {
204
+ protected override async accept(tree: Tree, p: ExecutionContext): Promise<Tree | undefined> {
205
+ if (tree.kind === JS.Kind.CompilationUnit) return js.visit(tree, p);
206
+ if (tree.kind === Json.Kind.Document) return json.visit(tree, p);
207
+ if (tree.kind === PlainText.Kind.PlainText) {
208
+ const text = tree as PlainText;
209
+ if (!shebangsToFlag.has(text.sourcePath)) return tree;
210
+ const lines = text.text.split('\n');
211
+ const flagged = shebangWithSourceMapsFlag(lines[0]);
212
+ if (!flagged) return tree;
213
+ return {...text, text: [flagged, ...lines.slice(1)].join('\n')} as PlainText;
214
+ }
215
+ return tree;
216
+ }
217
+ };
218
+ }
219
+ }
220
+
221
+ /**
222
+ * Drops the statements `remove` selects, handing the first of a removed run its successor's place
223
+ * in the layout, so the blank line that separated it from what came before isn't left behind. Only
224
+ * the whitespace moves: a comment sits in the prefix of the statement it documents, so taking the
225
+ * successor's prefix wholesale would delete the comment that belongs to it.
226
+ */
227
+ function withoutStatements(statements: J.RightPadded<any>[], remove: (s: J) => boolean): J.RightPadded<any>[] {
228
+ const kept: J.RightPadded<any>[] = [];
229
+ let pendingWhitespace: string | undefined;
230
+ for (const padded of statements) {
231
+ if (remove(padded.element)) {
232
+ pendingWhitespace ??= (padded.element.prefix as J.Space).whitespace;
233
+ continue;
234
+ }
235
+ kept.push(pendingWhitespace === undefined ? padded : {
236
+ ...padded,
237
+ element: {...padded.element, prefix: {...padded.element.prefix, whitespace: pendingWhitespace}}
238
+ });
239
+ pendingWhitespace = undefined;
240
+ }
241
+ return kept;
242
+ }
243
+
244
+ /** The innermost package a repo-relative path belongs to, of those the scan saw. */
245
+ function enclosingPackage(path: string, packageDirs: string[]): string {
246
+ return packageOf(path, packageDirs) ?? '';
247
+ }
248
+
249
+ /** `require('source-map-support/register')`, which loads the module for its side effect alone. */
250
+ function isRegisterRequire(m: J.MethodInvocation): boolean {
251
+ return !m.select && m.name.simpleName === 'require' &&
252
+ REGISTER_MODULES.has(stringLiteral(m.arguments.elements[0]?.element) ?? '');
253
+ }
254
+
255
+ /** Whether a top-level statement exists only to install source-map-support. */
256
+ function isRedundantEntryPoint(statement: J): boolean {
257
+ if (statement.kind === JS.Kind.Import) {
258
+ const imp = statement as JS.Import;
259
+ return !imp.importClause && isSourceMapSupport(stringLiteral(imp.moduleSpecifier?.element));
260
+ }
261
+ const expression = statement.kind === JS.Kind.ExpressionStatement
262
+ ? (statement as JS.ExpressionStatement).expression
263
+ : statement;
264
+ const call = expression?.kind === JS.Kind.Await ? (expression as JS.Await).expression : expression;
265
+ if (call?.kind !== J.Kind.MethodInvocation) return false;
266
+ const m = call as J.MethodInvocation;
267
+ if (isRegisterRequire(m)) return true;
268
+ if (m.name.simpleName !== 'install') return false;
269
+ const select = m.select?.element;
270
+ return select?.kind === J.Kind.MethodInvocation
271
+ ? isSourceMapSupport(requiredModuleOf(select as J.MethodInvocation))
272
+ : select !== undefined;
273
+ }
274
+
275
+ function requiredModuleOf(m: J.MethodInvocation): string | undefined {
276
+ return !m.select && m.name.simpleName === 'require'
277
+ ? stringLiteral(m.arguments.elements[0]?.element)
278
+ : undefined;
279
+ }
280
+
281
+ function binTargetsOf(value: Json.Value): string[] {
282
+ if (isLiteral(value)) return typeof value.value === 'string' ? [value.value] : [];
283
+ if (!isObject(value)) return [];
284
+ return (value as Json.Object).members.flatMap(padded => {
285
+ if (!isMember(padded.element)) return [];
286
+ const entry = (padded.element as Json.Member).value;
287
+ return isLiteral(entry) && typeof entry.value === 'string' ? [entry.value] : [];
288
+ });
289
+ }
@@ -14,7 +14,11 @@ export class MigrateSourceMapSupportToNative extends Recipe {
14
14
  readonly displayName = "Migrate `source-map-support` to Node.js native source maps";
15
15
  readonly description = "Replaces the `source-map-support` package with Node.js's built-in source map support. " +
16
16
  "Where Node is launched from `package.json` scripts or mocha/ava configuration, `source-map-support/register` becomes " +
17
- "the `--enable-source-maps` flag; in code, `install()` and `register` imports become `process.setSourceMapsEnabled(true)`. " +
17
+ "the `--enable-source-maps` flag; in code, `install()` and `register` imports become " +
18
+ "`process.setSourceMapsEnabled(true)` where that maps everything the module loads. Where it would not " +
19
+ "— in an ES module every `import` is evaluated before any statement runs — the flag goes on the " +
20
+ "launcher instead, in the package's `bin` shebang or a `node` script, and the entry point is removed " +
21
+ "as redundant. " +
18
22
  "Uses with no native equivalent (custom `retrieveSourceMap`, browser bundles, webpack banners) are left in place, and " +
19
23
  "the dependency is removed from each `package.json` that declares it, with the lock file updated to match. " +
20
24
  "Everything left in place is recorded in the `SourceMapSupportManualMigrationSteps` data table with a " +
@@ -30,6 +30,54 @@ function commandOf(segment: string): string | undefined {
30
30
  return undefined;
31
31
  }
32
32
 
33
+ /** A `#!/usr/bin/env node` line, which `env -S` lets carry Node's own flags. */
34
+ const SHEBANG = /^#!(\s*\S*\/env\s+)(-S\s+)?node(?=\s|$)(.*)$/;
35
+
36
+ const ENABLE_FLAG = '--enable-source-maps';
37
+
38
+ export function hasSourceMapsFlag(text: string): boolean {
39
+ return new RegExp(`(^|\\s)${ENABLE_FLAG}(\\s|$)`).test(text);
40
+ }
41
+
42
+ /**
43
+ * Whether any part of a shell command launches this package's own code under Node. An inline
44
+ * `node -e` program and a `node_modules/...` entry point are Node processes too, but neither loads
45
+ * the module whose entry point is being removed, so neither is a launcher worth flagging.
46
+ */
47
+ export function launchesNode(script: string): boolean {
48
+ return script.split(/(\s*(?:&&|\|\||;|\|)\s*)/).some((part, i) => {
49
+ if (i % 2 === 1 || !NODE_FLAG_COMMANDS.has(commandOf(part) ?? '')) return false;
50
+ if (/(^|\s)(?:-e|--eval|-p|--print)(?=\s|$)/.test(part)) return false;
51
+ return !/(^|\s)node_modules\//.test(part);
52
+ });
53
+ }
54
+
55
+ /**
56
+ * Adds `--enable-source-maps` to each part of a shell command that runs Node or mocha, so the flag
57
+ * is in place before any module loads. Parts running anything else are left alone, since a flag
58
+ * they don't recognize would fail them.
59
+ */
60
+ export function addSourceMapsFlag(script: string): string {
61
+ const parts = script.split(/(\s*(?:&&|\|\||;|\|)\s*)/);
62
+ return parts.map((part, i) => {
63
+ if (i % 2 === 1 || !NODE_FLAG_COMMANDS.has(commandOf(part) ?? '') || hasSourceMapsFlag(part)) return part;
64
+ // Straight after the command, where Node's own flags have to sit: anything later is the script's.
65
+ return part.replace(/(^|\s)((?:\S*[\\/])?(?:node|mocha|_mocha))(?=\s|$)/, `$1$2 ${ENABLE_FLAG}`);
66
+ }).join('');
67
+ }
68
+
69
+ /**
70
+ * The shebang with `--enable-source-maps` added, or undefined where the line isn't a plain
71
+ * `env node` shebang. `env -S` is what allows an argument at all; without it the kernel hands
72
+ * `node --enable-source-maps` to `env` as a single program name.
73
+ */
74
+ export function shebangWithSourceMapsFlag(line: string): string | undefined {
75
+ const match = SHEBANG.exec(line);
76
+ if (!match || hasSourceMapsFlag(line)) return undefined;
77
+ const [, env, dashS, rest] = match;
78
+ return `#!${env}${dashS ?? '-S '}node ${ENABLE_FLAG}${rest}`;
79
+ }
80
+
33
81
  /**
34
82
  * Replaces `-r source-map-support/register` with `--enable-source-maps` in each part of a shell
35
83
  * command that runs Node or mocha. Parts that run anything else are left alone, since a flag they
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import {Recipe} from "@openrewrite/rewrite";
8
+ import {EnableSourceMapsAtLaunch} from "./enable-source-maps-at-launch";
8
9
  import {ReplaceSourceMapSupportInstall} from "./replace-source-map-support-install";
9
10
  import {ReplaceSourceMapSupportRegisterInPackageJson} from "./replace-source-map-support-register-in-package-json";
10
11
  import {ReplaceSourceMapSupportRegisterInMochaConfig} from "./replace-source-map-support-register-in-mocha-config";
@@ -15,5 +16,7 @@ export function sourceMapSupportRewriteRecipes(): Recipe[] {
15
16
  new ReplaceSourceMapSupportRegisterInPackageJson(),
16
17
  new ReplaceSourceMapSupportRegisterInMochaConfig(),
17
18
  new ReplaceSourceMapSupportInstall(),
19
+ // Last of the rewrites: it takes the entry points the in-place rewrite turned down.
20
+ new EnableSourceMapsAtLaunch(),
18
21
  ];
19
22
  }