@turbo/codemod 1.7.1-canary.1 → 1.7.1-canary.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.
- package/README.md +50 -1
- package/dist/cli.js +857 -0
- package/dist/transforms/add-package-manager.js +284 -102
- package/dist/transforms/create-turbo-config.js +262 -65
- package/dist/transforms/migrate-env-var-dependencies.js +265 -60
- package/dist/transforms/set-default-outputs.js +258 -65
- package/package.json +25 -20
- package/dist/getPackageManagerVersion.js +0 -42
- package/dist/getWorkspaceImplementation.js +0 -73
- package/dist/git.js +0 -56
- package/dist/index.js +0 -300
- package/dist/logger.js +0 -46
- package/dist/runTransform.js +0 -44
- package/dist/types.js +0 -18
package/dist/index.js
DELETED
@@ -1,300 +0,0 @@
|
|
1
|
-
#!/usr/bin/env node
|
2
|
-
"use strict";
|
3
|
-
var __create = Object.create;
|
4
|
-
var __defProp = Object.defineProperty;
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
7
|
-
var __getProtoOf = Object.getPrototypeOf;
|
8
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
11
|
-
for (let key of __getOwnPropNames(from))
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
14
|
-
}
|
15
|
-
return to;
|
16
|
-
};
|
17
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
18
|
-
|
19
|
-
// src/index.ts
|
20
|
-
var import_chalk2 = __toESM(require("chalk"));
|
21
|
-
var import_globby = __toESM(require("globby"));
|
22
|
-
var import_inquirer = __toESM(require("inquirer"));
|
23
|
-
var import_meow = __toESM(require("meow"));
|
24
|
-
var import_update_check = __toESM(require("update-check"));
|
25
|
-
|
26
|
-
// package.json
|
27
|
-
var package_default = {
|
28
|
-
name: "@turbo/codemod",
|
29
|
-
version: "1.7.1-canary.1",
|
30
|
-
description: "Provides Codemod transformations to help upgrade your Turborepo codebase when a feature is deprecated.",
|
31
|
-
homepage: "https://turbo.build/repo",
|
32
|
-
license: "MPL-2.0",
|
33
|
-
repository: {
|
34
|
-
type: "git",
|
35
|
-
url: "https://github.com/vercel/turbo",
|
36
|
-
directory: "packages/turbo-codemod"
|
37
|
-
},
|
38
|
-
bugs: {
|
39
|
-
url: "https://github.com/vercel/turbo/issues"
|
40
|
-
},
|
41
|
-
bin: "dist/index.js",
|
42
|
-
scripts: {
|
43
|
-
build: "tsup",
|
44
|
-
test: "jest",
|
45
|
-
lint: "eslint src/**/*.ts",
|
46
|
-
"check-types": "tsc --noEmit"
|
47
|
-
},
|
48
|
-
dependencies: {
|
49
|
-
chalk: "2.4.2",
|
50
|
-
execa: "5.1.1",
|
51
|
-
"find-up": "4.1.0",
|
52
|
-
"fs-extra": "^10.0.0",
|
53
|
-
globby: "11.1.0",
|
54
|
-
"gradient-string": "^2.0.0",
|
55
|
-
inquirer: "^8.0.0",
|
56
|
-
"is-git-clean": "^1.1.0",
|
57
|
-
meow: "^7.1.1",
|
58
|
-
ora: "4.1.1",
|
59
|
-
rimraf: "^3.0.2",
|
60
|
-
semver: "^7.3.5",
|
61
|
-
"update-check": "^1.5.4"
|
62
|
-
},
|
63
|
-
devDependencies: {
|
64
|
-
"@types/chalk-animation": "^1.6.0",
|
65
|
-
"@types/fs-extra": "^9.0.13",
|
66
|
-
"@types/gradient-string": "^1.1.2",
|
67
|
-
"@types/inquirer": "^7.3.1",
|
68
|
-
"@types/jest": "^27.4.0",
|
69
|
-
"@types/node": "^16.11.12",
|
70
|
-
"@types/semver": "^7.3.9",
|
71
|
-
deepmerge: "^4.2.2",
|
72
|
-
eslint: "^7.23.0",
|
73
|
-
jest: "^27.4.3",
|
74
|
-
semver: "^7.3.5",
|
75
|
-
"strip-ansi": "^6.0.1",
|
76
|
-
"ts-jest": "^27.1.1",
|
77
|
-
tsconfig: "workspace:*",
|
78
|
-
tsup: "^5.10.3",
|
79
|
-
"turbo-types": "workspace:*",
|
80
|
-
typescript: "^4.5.5"
|
81
|
-
},
|
82
|
-
files: [
|
83
|
-
"dist"
|
84
|
-
],
|
85
|
-
publishConfig: {
|
86
|
-
access: "public"
|
87
|
-
}
|
88
|
-
};
|
89
|
-
|
90
|
-
// src/getWorkspaceImplementation.ts
|
91
|
-
var import_find_up = __toESM(require("find-up"));
|
92
|
-
var import_path = __toESM(require("path"));
|
93
|
-
var cache = {};
|
94
|
-
function getWorkspaceImplementationAndLockFile(cwd) {
|
95
|
-
if (cache[cwd]) {
|
96
|
-
return cache[cwd];
|
97
|
-
}
|
98
|
-
const lockFile = import_find_up.default.sync(["yarn.lock", "pnpm-workspace.yaml", "package-lock.json"], {
|
99
|
-
cwd
|
100
|
-
});
|
101
|
-
if (!lockFile) {
|
102
|
-
return;
|
103
|
-
}
|
104
|
-
switch (import_path.default.basename(lockFile)) {
|
105
|
-
case "yarn.lock":
|
106
|
-
cache[cwd] = {
|
107
|
-
implementation: "yarn",
|
108
|
-
lockFile
|
109
|
-
};
|
110
|
-
break;
|
111
|
-
case "pnpm-workspace.yaml":
|
112
|
-
cache[cwd] = {
|
113
|
-
implementation: "pnpm",
|
114
|
-
lockFile
|
115
|
-
};
|
116
|
-
break;
|
117
|
-
case "package-lock.json":
|
118
|
-
cache[cwd] = {
|
119
|
-
implementation: "npm",
|
120
|
-
lockFile
|
121
|
-
};
|
122
|
-
break;
|
123
|
-
}
|
124
|
-
return cache[cwd];
|
125
|
-
}
|
126
|
-
function getWorkspaceImplementation(cwd) {
|
127
|
-
var _a;
|
128
|
-
return (_a = getWorkspaceImplementationAndLockFile(cwd)) == null ? void 0 : _a.implementation;
|
129
|
-
}
|
130
|
-
|
131
|
-
// src/git.ts
|
132
|
-
var import_chalk = __toESM(require("chalk"));
|
133
|
-
var import_is_git_clean = __toESM(require("is-git-clean"));
|
134
|
-
function checkGitStatus(force) {
|
135
|
-
let clean = false;
|
136
|
-
let errorMessage = "Unable to determine if git directory is clean";
|
137
|
-
try {
|
138
|
-
clean = import_is_git_clean.default.sync(process.cwd());
|
139
|
-
errorMessage = "Git directory is not clean";
|
140
|
-
} catch (err) {
|
141
|
-
if (err && err.stderr && err.stderr.indexOf("not a git repository") >= 0) {
|
142
|
-
clean = true;
|
143
|
-
}
|
144
|
-
}
|
145
|
-
if (!clean) {
|
146
|
-
if (force) {
|
147
|
-
console.log(`WARNING: ${errorMessage}. Forcibly continuing...`);
|
148
|
-
} else {
|
149
|
-
console.log("Thank you for using @turbo/codemod!");
|
150
|
-
console.log(import_chalk.default.yellow("\nBut before we continue, please stash or commit your git changes."));
|
151
|
-
console.log("\nYou may use the --force flag to override this safety check.");
|
152
|
-
process.exit(1);
|
153
|
-
}
|
154
|
-
}
|
155
|
-
}
|
156
|
-
|
157
|
-
// src/runTransform.ts
|
158
|
-
var import_path2 = __toESM(require("path"));
|
159
|
-
var transformerDirectory = import_path2.default.join(__dirname, "transforms");
|
160
|
-
function runTransform({
|
161
|
-
files,
|
162
|
-
flags,
|
163
|
-
transformer
|
164
|
-
}) {
|
165
|
-
const transformerPath = import_path2.default.join(transformerDirectory, `${transformer}.js`);
|
166
|
-
return require(transformerPath).default(files, flags);
|
167
|
-
}
|
168
|
-
|
169
|
-
// src/index.ts
|
170
|
-
var help = `
|
171
|
-
Usage:
|
172
|
-
$ npx @turbo/codemod <transform> <path> <...options>
|
173
|
-
|
174
|
-
If <path> is not provided up front you will be prompted for it.
|
175
|
-
|
176
|
-
Options:
|
177
|
-
--force Bypass Git safety checks and forcibly run codemods
|
178
|
-
--dry Dry run (no changes are made to files)
|
179
|
-
--print Print transformed files to your terminal
|
180
|
-
--list List all codemods
|
181
|
-
--help, -h Show this help message
|
182
|
-
--version, -v Show the version of this script
|
183
|
-
`;
|
184
|
-
var TRANSFORMER_INQUIRER_CHOICES = [
|
185
|
-
{
|
186
|
-
name: "add-package-manager: Set the `packageManager` key in root `package.json` file",
|
187
|
-
value: "add-package-manager",
|
188
|
-
introducedIn: "1.1.0"
|
189
|
-
},
|
190
|
-
{
|
191
|
-
name: 'create-turbo-config: Create the `turbo.json` file from an existing "turbo" key in `package.json`',
|
192
|
-
value: "create-turbo-config",
|
193
|
-
introducedIn: "1.1.0"
|
194
|
-
},
|
195
|
-
{
|
196
|
-
name: 'migrate-env-var-dependencies: Migrate environment variable dependencies from "dependsOn" to "env" in `turbo.json`',
|
197
|
-
value: "migrate-env-var-dependencies",
|
198
|
-
introducedIn: "1.5.0"
|
199
|
-
},
|
200
|
-
{
|
201
|
-
name: 'set-default-outputs: Add the "outputs" key with defaults where it is missing in `turbo.json`',
|
202
|
-
value: "set-default-outputs",
|
203
|
-
introducedIn: "1.7.0"
|
204
|
-
}
|
205
|
-
];
|
206
|
-
run().then(notifyUpdate).catch(async (reason) => {
|
207
|
-
console.log();
|
208
|
-
console.log("Aborting installation.");
|
209
|
-
if (reason.command) {
|
210
|
-
console.log(` ${import_chalk2.default.cyan(reason.command)} has failed.`);
|
211
|
-
} else {
|
212
|
-
console.log(import_chalk2.default.red("Unexpected error. Please report it as a bug:"));
|
213
|
-
console.log(reason);
|
214
|
-
}
|
215
|
-
console.log();
|
216
|
-
await notifyUpdate();
|
217
|
-
process.exit(1);
|
218
|
-
});
|
219
|
-
async function run() {
|
220
|
-
let cli = (0, import_meow.default)(help, {
|
221
|
-
booleanDefault: void 0,
|
222
|
-
flags: {
|
223
|
-
help: { type: "boolean", default: false, alias: "h" },
|
224
|
-
list: { type: "boolean", default: false },
|
225
|
-
force: { type: "boolean", default: false },
|
226
|
-
dry: { type: "boolean", default: false },
|
227
|
-
print: { type: "boolean", default: false },
|
228
|
-
version: { type: "boolean", default: false, alias: "v" }
|
229
|
-
},
|
230
|
-
description: "Codemods for updating Turborepo codebases."
|
231
|
-
});
|
232
|
-
if (cli.flags.help)
|
233
|
-
cli.showHelp();
|
234
|
-
if (cli.flags.version)
|
235
|
-
cli.showVersion();
|
236
|
-
if (cli.flags.list)
|
237
|
-
listTransforms();
|
238
|
-
if (!cli.flags.dry) {
|
239
|
-
checkGitStatus(cli.flags.force);
|
240
|
-
}
|
241
|
-
if (cli.input[0] && !TRANSFORMER_INQUIRER_CHOICES.find((x) => x.value === cli.input[0])) {
|
242
|
-
console.error("Invalid transform choice, pick one of:");
|
243
|
-
console.error(TRANSFORMER_INQUIRER_CHOICES.map((x) => "- " + x.value).join("\n"));
|
244
|
-
process.exit(1);
|
245
|
-
}
|
246
|
-
const answers = await import_inquirer.default.prompt([
|
247
|
-
{
|
248
|
-
type: "input",
|
249
|
-
name: "files",
|
250
|
-
message: "On which directory should the codemods be applied?",
|
251
|
-
when: !cli.input[1],
|
252
|
-
default: ".",
|
253
|
-
filter: (files2) => files2.trim()
|
254
|
-
},
|
255
|
-
{
|
256
|
-
type: "list",
|
257
|
-
name: "transformer",
|
258
|
-
message: "Which transform would you like to apply?",
|
259
|
-
when: !cli.input[0],
|
260
|
-
pageSize: TRANSFORMER_INQUIRER_CHOICES.length,
|
261
|
-
choices: TRANSFORMER_INQUIRER_CHOICES
|
262
|
-
}
|
263
|
-
]);
|
264
|
-
const { files, transformer } = answers;
|
265
|
-
const filesBeforeExpansion = cli.input[1] || files;
|
266
|
-
const filesExpanded = expandFilePathsIfNeeded([filesBeforeExpansion]);
|
267
|
-
const selectedTransformer = cli.input[0] || transformer;
|
268
|
-
if (!filesExpanded.length) {
|
269
|
-
console.log(`No files found matching ${filesBeforeExpansion.join(" ")}`);
|
270
|
-
return null;
|
271
|
-
}
|
272
|
-
return runTransform({
|
273
|
-
files: filesExpanded,
|
274
|
-
flags: cli.flags,
|
275
|
-
transformer: selectedTransformer
|
276
|
-
});
|
277
|
-
}
|
278
|
-
var update = (0, import_update_check.default)(package_default).catch(() => null);
|
279
|
-
async function notifyUpdate() {
|
280
|
-
try {
|
281
|
-
const res = await update;
|
282
|
-
if (res == null ? void 0 : res.latest) {
|
283
|
-
const ws = getWorkspaceImplementation(process.cwd());
|
284
|
-
console.log();
|
285
|
-
console.log(import_chalk2.default.yellow.bold("A new version of `@turbo/codemod` is available!"));
|
286
|
-
console.log("You can update by running: " + import_chalk2.default.cyan(ws === "yarn" ? "yarn global add @turbo/codemod" : ws === "pnpm" ? "pnpm i -g @turbo/codemod" : "npm i -g @turbo/codemod"));
|
287
|
-
console.log();
|
288
|
-
}
|
289
|
-
process.exit();
|
290
|
-
} catch (_e) {
|
291
|
-
}
|
292
|
-
}
|
293
|
-
function listTransforms() {
|
294
|
-
console.log(TRANSFORMER_INQUIRER_CHOICES.map((x) => `- ${import_chalk2.default.cyan(x.value)}`).join("\n"));
|
295
|
-
process.exit(0);
|
296
|
-
}
|
297
|
-
function expandFilePathsIfNeeded(filesBeforeExpansion) {
|
298
|
-
const shouldExpandFiles = filesBeforeExpansion.some((file) => file.includes("*"));
|
299
|
-
return shouldExpandFiles ? import_globby.default.sync(filesBeforeExpansion) : filesBeforeExpansion;
|
300
|
-
}
|
package/dist/logger.js
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __create = Object.create;
|
3
|
-
var __defProp = Object.defineProperty;
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
|
-
var __export = (target, all) => {
|
9
|
-
for (var name in all)
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
11
|
-
};
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
14
|
-
for (let key of __getOwnPropNames(from))
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17
|
-
}
|
18
|
-
return to;
|
19
|
-
};
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
21
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
22
|
-
|
23
|
-
// src/logger.ts
|
24
|
-
var logger_exports = {};
|
25
|
-
__export(logger_exports, {
|
26
|
-
error: () => error,
|
27
|
-
ok: () => ok,
|
28
|
-
skip: () => skip
|
29
|
-
});
|
30
|
-
module.exports = __toCommonJS(logger_exports);
|
31
|
-
var import_chalk = __toESM(require("chalk"));
|
32
|
-
function skip(...args) {
|
33
|
-
console.log(import_chalk.default.yellow.inverse(` SKIP `), ...args);
|
34
|
-
}
|
35
|
-
function error(...args) {
|
36
|
-
console.log(import_chalk.default.red.inverse(` ERROR `), ...args);
|
37
|
-
}
|
38
|
-
function ok(...args) {
|
39
|
-
console.log(import_chalk.default.green.inverse(` OK `), ...args);
|
40
|
-
}
|
41
|
-
// Annotate the CommonJS export names for ESM import in node:
|
42
|
-
0 && (module.exports = {
|
43
|
-
error,
|
44
|
-
ok,
|
45
|
-
skip
|
46
|
-
});
|
package/dist/runTransform.js
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __create = Object.create;
|
3
|
-
var __defProp = Object.defineProperty;
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
|
-
var __export = (target, all) => {
|
9
|
-
for (var name in all)
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
11
|
-
};
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
14
|
-
for (let key of __getOwnPropNames(from))
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17
|
-
}
|
18
|
-
return to;
|
19
|
-
};
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
21
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
22
|
-
|
23
|
-
// src/runTransform.ts
|
24
|
-
var runTransform_exports = {};
|
25
|
-
__export(runTransform_exports, {
|
26
|
-
runTransform: () => runTransform,
|
27
|
-
transformerDirectory: () => transformerDirectory
|
28
|
-
});
|
29
|
-
module.exports = __toCommonJS(runTransform_exports);
|
30
|
-
var import_path = __toESM(require("path"));
|
31
|
-
var transformerDirectory = import_path.default.join(__dirname, "transforms");
|
32
|
-
function runTransform({
|
33
|
-
files,
|
34
|
-
flags,
|
35
|
-
transformer
|
36
|
-
}) {
|
37
|
-
const transformerPath = import_path.default.join(transformerDirectory, `${transformer}.js`);
|
38
|
-
return require(transformerPath).default(files, flags);
|
39
|
-
}
|
40
|
-
// Annotate the CommonJS export names for ESM import in node:
|
41
|
-
0 && (module.exports = {
|
42
|
-
runTransform,
|
43
|
-
transformerDirectory
|
44
|
-
});
|
package/dist/types.js
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __defProp = Object.defineProperty;
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
8
|
-
for (let key of __getOwnPropNames(from))
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
11
|
-
}
|
12
|
-
return to;
|
13
|
-
};
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
15
|
-
|
16
|
-
// src/types.ts
|
17
|
-
var types_exports = {};
|
18
|
-
module.exports = __toCommonJS(types_exports);
|