@atlaskit/codemod-cli 0.11.4 → 0.12.0
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/CHANGELOG.md +17 -0
- package/dist/cjs/cli.js +72 -75
- package/dist/cjs/filepath.js +29 -83
- package/dist/cjs/index.js +3 -6
- package/dist/cjs/main.js +165 -441
- package/dist/cjs/presets/css-to-design-tokens/css-to-design-tokens.js +44 -135
- package/dist/cjs/presets/css-to-design-tokens/utils/legacy-colors.js +3 -4
- package/dist/cjs/presets/css-to-design-tokens/utils/meta.js +6 -29
- package/dist/cjs/presets/index.js +2 -9
- package/dist/cjs/presets/styled-to-emotion/styled-to-emotion.js +13 -25
- package/dist/cjs/presets/theme-to-design-tokens/theme-to-design-tokens.js +34 -82
- package/dist/cjs/presets/theme-to-design-tokens/utils/ast-meta.js +14 -41
- package/dist/cjs/presets/theme-to-design-tokens/utils/ast.js +0 -2
- package/dist/cjs/presets/theme-to-design-tokens/utils/color.js +9 -28
- package/dist/cjs/presets/theme-to-design-tokens/utils/fuzzy-search.js +44 -106
- package/dist/cjs/presets/theme-to-design-tokens/utils/legacy-colors.js +3 -3
- package/dist/cjs/presets/theme-to-design-tokens/utils/named-colors.js +1 -1
- package/dist/cjs/presets/theme-to-design-tokens/utils/tokens.js +2 -22
- package/dist/cjs/sinceRef.js +36 -92
- package/dist/cjs/transforms.js +27 -72
- package/dist/cjs/types.js +2 -45
- package/dist/cjs/utils.js +7 -20
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/filepath.js +7 -5
- package/dist/es2019/main.js +17 -51
- package/dist/es2019/presets/css-to-design-tokens/css-to-design-tokens.js +19 -51
- package/dist/es2019/presets/css-to-design-tokens/utils/legacy-colors.js +0 -1
- package/dist/es2019/presets/css-to-design-tokens/utils/meta.js +0 -6
- package/dist/es2019/presets/index.js +1 -1
- package/dist/es2019/presets/styled-to-emotion/styled-to-emotion.js +1 -4
- package/dist/es2019/presets/theme-to-design-tokens/theme-to-design-tokens.js +4 -14
- package/dist/es2019/presets/theme-to-design-tokens/utils/ast-meta.js +2 -11
- package/dist/es2019/presets/theme-to-design-tokens/utils/color.js +2 -7
- package/dist/es2019/presets/theme-to-design-tokens/utils/fuzzy-search.js +38 -95
- package/dist/es2019/presets/theme-to-design-tokens/utils/tokens.js +0 -1
- package/dist/es2019/sinceRef.js +2 -11
- package/dist/es2019/transforms.js +3 -13
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/utils.js +1 -12
- package/dist/es2019/version.json +1 -1
- package/dist/esm/cli.js +53 -57
- package/dist/esm/filepath.js +51 -63
- package/dist/esm/main.js +221 -322
- package/dist/esm/presets/css-to-design-tokens/css-to-design-tokens.js +33 -71
- package/dist/esm/presets/css-to-design-tokens/utils/legacy-colors.js +0 -1
- package/dist/esm/presets/css-to-design-tokens/utils/meta.js +0 -6
- package/dist/esm/presets/index.js +1 -1
- package/dist/esm/presets/styled-to-emotion/styled-to-emotion.js +1 -4
- package/dist/esm/presets/theme-to-design-tokens/theme-to-design-tokens.js +4 -15
- package/dist/esm/presets/theme-to-design-tokens/utils/ast-meta.js +2 -11
- package/dist/esm/presets/theme-to-design-tokens/utils/color.js +2 -7
- package/dist/esm/presets/theme-to-design-tokens/utils/fuzzy-search.js +38 -95
- package/dist/esm/presets/theme-to-design-tokens/utils/tokens.js +0 -1
- package/dist/esm/sinceRef.js +49 -65
- package/dist/esm/transforms.js +4 -14
- package/dist/esm/types.js +1 -11
- package/dist/esm/utils.js +1 -12
- package/dist/esm/version.json +1 -1
- package/package.json +2 -2
- package/tmp/api-report-tmp.d.ts +0 -66
package/dist/cjs/main.js
CHANGED
|
@@ -1,498 +1,222 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = main;
|
|
9
|
-
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
|
|
14
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
|
|
16
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
8
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
19
|
-
|
|
20
9
|
var _fs = _interopRequireDefault(require("fs"));
|
|
21
|
-
|
|
22
10
|
var _projectorSpawn = _interopRequireDefault(require("projector-spawn"));
|
|
23
|
-
|
|
24
11
|
var _enquirer = require("enquirer");
|
|
25
|
-
|
|
26
12
|
var _semver = _interopRequireDefault(require("semver"));
|
|
27
|
-
|
|
28
13
|
var _utils = require("./utils");
|
|
29
|
-
|
|
30
14
|
var _transforms = require("./transforms");
|
|
31
|
-
|
|
32
15
|
var _types = require("./types");
|
|
33
|
-
|
|
34
16
|
var _sinceRef = require("./sinceRef");
|
|
35
|
-
|
|
36
17
|
var _filepath = require("./filepath");
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
18
|
+
const jscodeshift = require.resolve('.bin/jscodeshift');
|
|
19
|
+
const applyTransformMeta = transforms => transforms.map(transform => {
|
|
20
|
+
const moduleMatch = transform.dir.match(/\/@atlaskit\/[^\/]+\//);
|
|
21
|
+
if (moduleMatch) {
|
|
22
|
+
const moduleName = moduleMatch[0].substring(1, moduleMatch[0].length - 1);
|
|
23
|
+
const transformName = transform.name === 'index' ? transform.dir.slice(transform.dir.lastIndexOf('/') + 1) : transform.name;
|
|
24
|
+
return {
|
|
25
|
+
...transform,
|
|
26
|
+
id: `${moduleName}: ${transformName}`
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const presetMatch = transform.dir.match(/\/codemod-cli\/.+\/presets/);
|
|
30
|
+
if (presetMatch) {
|
|
31
|
+
const transformName = transform.name === 'index' ? transform.dir.slice(transform.dir.lastIndexOf('/') + 1) : transform.name;
|
|
32
|
+
return {
|
|
33
|
+
...transform,
|
|
34
|
+
id: `@atlaskit/codemod-cli: ${transformName}`
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
...transform,
|
|
39
|
+
id: `${transform.dir}/${transform.name}`
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
const getTransformPrompt = async transforms => {
|
|
43
|
+
const transformMeta = applyTransformMeta(transforms);
|
|
44
|
+
return await new _enquirer.AutoComplete({
|
|
45
|
+
message: 'Select which transform would you like to run? 🤔',
|
|
46
|
+
limit: 18,
|
|
47
|
+
choices: transformMeta.map(({
|
|
48
|
+
id,
|
|
49
|
+
name,
|
|
50
|
+
dir
|
|
51
|
+
}) => id ? id : `${dir}/${name}`),
|
|
52
|
+
result: choice => transformMeta.find(({
|
|
53
|
+
id,
|
|
54
|
+
dir
|
|
55
|
+
}) => id === choice || dir === choice)
|
|
56
|
+
}).run();
|
|
57
|
+
};
|
|
58
|
+
const resolveTransform = async (flags, transforms) => {
|
|
59
|
+
if (flags.preset) {
|
|
60
|
+
const transform = transforms.find(({
|
|
61
|
+
name
|
|
62
|
+
}) => name === flags.preset);
|
|
63
|
+
if (!transform) {
|
|
64
|
+
console.warn(`No preset found for: ${_chalk.default.bgRed(flags.preset)}`);
|
|
65
|
+
} else {
|
|
66
|
+
return transform; // Return only if transform found.
|
|
60
67
|
}
|
|
68
|
+
}
|
|
61
69
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
if (flags.transform && (0, _transforms.hasTransform)(flags.transform)) {
|
|
71
|
+
return (0, _transforms.parseTransformPath)(flags.transform);
|
|
72
|
+
}
|
|
73
|
+
if (flags.transform && !(0, _transforms.hasTransform)(flags.transform)) {
|
|
74
|
+
console.warn(`No available transform found for: ${_chalk.default.bgRed(flags.transform)}`);
|
|
75
|
+
}
|
|
76
|
+
return await getTransformPrompt(transforms);
|
|
77
|
+
};
|
|
78
|
+
const runTransform = async (filePaths, transform, flags) => {
|
|
79
|
+
const {
|
|
80
|
+
logger
|
|
81
|
+
} = flags;
|
|
82
|
+
logger.log(_chalk.default.green(`Running transform '${_chalk.default.bold(transform.name)}' over ${_chalk.default.bold(filePaths.join(', '))}...`));
|
|
83
|
+
let codemodDirs = filePaths;
|
|
84
|
+
if (flags.filterPaths) {
|
|
85
|
+
logger.log(_chalk.default.green(`Running filtering logic for module ${transform.module}...`));
|
|
86
|
+
codemodDirs = await (0, _filepath.findDependentPackagePaths)(filePaths, transform.module);
|
|
87
|
+
if (codemodDirs.length === 0) {
|
|
88
|
+
// Fallback to non-filter logic if filtering returns no directories
|
|
89
|
+
logger.log(_chalk.default.yellow(`Could not filter source paths for ${transform.module}, falling back to running over all specified paths. (See --no-filter-paths flag)`));
|
|
90
|
+
codemodDirs = filePaths;
|
|
91
|
+
} else {
|
|
92
|
+
logger.log(_chalk.default.green(`Running transform '${_chalk.default.bold(transform.name)}' over filtered dirs ${_chalk.default.bold(codemodDirs.join(', '))}...`));
|
|
70
93
|
}
|
|
94
|
+
}
|
|
95
|
+
logger.log(_chalk.default.green(`Transforming files matching these extensions '${_chalk.default.bold(flags.extensions)}'...`));
|
|
96
|
+
const transformPath = (0, _transforms.getTransformPath)(transform);
|
|
71
97
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
98
|
+
// Limit CPUs to 8 to prevent issues when running on CI with a large amount of cpus
|
|
99
|
+
const args = [`--transform=${transformPath}`, `--ignore-pattern=${flags.ignorePattern}`, `--parser=${flags.parser}`, `--extensions=${flags.extensions}`, '--cpus=8', ...codemodDirs];
|
|
100
|
+
if (flags.failOnError) {
|
|
101
|
+
args.unshift('--fail-on-error');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// To avoid https://github.com/facebook/jscodeshift/issues/424 where the jscodeshift.js file is `CRLF` ending.
|
|
105
|
+
// The workaround to use only the `node_modules` indicated in this ticket will not work as we run this code as CLI in products repository
|
|
106
|
+
// that may not have jscodeshift installed.
|
|
107
|
+
const jscodeshiftContent = _fs.default.readFileSync(jscodeshift, 'utf8');
|
|
108
|
+
const jscodeshiftContentNew = (0, _utils.fixLineEnding)(jscodeshiftContent, 'LF');
|
|
109
|
+
_fs.default.writeFileSync(jscodeshift, jscodeshiftContentNew);
|
|
110
|
+
await (0, _projectorSpawn.default)(jscodeshift, args, {
|
|
111
|
+
stdio: 'inherit'
|
|
75
112
|
});
|
|
76
113
|
};
|
|
77
|
-
|
|
78
|
-
var getTransformPrompt = /*#__PURE__*/function () {
|
|
79
|
-
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(transforms) {
|
|
80
|
-
var transformMeta;
|
|
81
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
82
|
-
while (1) {
|
|
83
|
-
switch (_context.prev = _context.next) {
|
|
84
|
-
case 0:
|
|
85
|
-
transformMeta = applyTransformMeta(transforms);
|
|
86
|
-
_context.next = 3;
|
|
87
|
-
return new _enquirer.AutoComplete({
|
|
88
|
-
message: 'Select which transform would you like to run? 🤔',
|
|
89
|
-
limit: 18,
|
|
90
|
-
choices: transformMeta.map(function (_ref2) {
|
|
91
|
-
var id = _ref2.id,
|
|
92
|
-
name = _ref2.name,
|
|
93
|
-
dir = _ref2.dir;
|
|
94
|
-
return id ? id : "".concat(dir, "/").concat(name);
|
|
95
|
-
}),
|
|
96
|
-
result: function result(choice) {
|
|
97
|
-
return transformMeta.find(function (_ref3) {
|
|
98
|
-
var id = _ref3.id,
|
|
99
|
-
dir = _ref3.dir;
|
|
100
|
-
return id === choice || dir === choice;
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}).run();
|
|
104
|
-
|
|
105
|
-
case 3:
|
|
106
|
-
return _context.abrupt("return", _context.sent);
|
|
107
|
-
|
|
108
|
-
case 4:
|
|
109
|
-
case "end":
|
|
110
|
-
return _context.stop();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}, _callee);
|
|
114
|
-
}));
|
|
115
|
-
|
|
116
|
-
return function getTransformPrompt(_x) {
|
|
117
|
-
return _ref.apply(this, arguments);
|
|
118
|
-
};
|
|
119
|
-
}();
|
|
120
|
-
|
|
121
|
-
var resolveTransform = /*#__PURE__*/function () {
|
|
122
|
-
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(flags, transforms) {
|
|
123
|
-
var transform;
|
|
124
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
125
|
-
while (1) {
|
|
126
|
-
switch (_context2.prev = _context2.next) {
|
|
127
|
-
case 0:
|
|
128
|
-
if (!flags.preset) {
|
|
129
|
-
_context2.next = 7;
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
transform = transforms.find(function (_ref5) {
|
|
134
|
-
var name = _ref5.name;
|
|
135
|
-
return name === flags.preset;
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
if (transform) {
|
|
139
|
-
_context2.next = 6;
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
console.warn("No preset found for: ".concat(_chalk.default.bgRed(flags.preset)));
|
|
144
|
-
_context2.next = 7;
|
|
145
|
-
break;
|
|
146
|
-
|
|
147
|
-
case 6:
|
|
148
|
-
return _context2.abrupt("return", transform);
|
|
149
|
-
|
|
150
|
-
case 7:
|
|
151
|
-
if (!(flags.transform && (0, _transforms.hasTransform)(flags.transform))) {
|
|
152
|
-
_context2.next = 9;
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
return _context2.abrupt("return", (0, _transforms.parseTransformPath)(flags.transform));
|
|
157
|
-
|
|
158
|
-
case 9:
|
|
159
|
-
if (flags.transform && !(0, _transforms.hasTransform)(flags.transform)) {
|
|
160
|
-
console.warn("No available transform found for: ".concat(_chalk.default.bgRed(flags.transform)));
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
_context2.next = 12;
|
|
164
|
-
return getTransformPrompt(transforms);
|
|
165
|
-
|
|
166
|
-
case 12:
|
|
167
|
-
return _context2.abrupt("return", _context2.sent);
|
|
168
|
-
|
|
169
|
-
case 13:
|
|
170
|
-
case "end":
|
|
171
|
-
return _context2.stop();
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}, _callee2);
|
|
175
|
-
}));
|
|
176
|
-
|
|
177
|
-
return function resolveTransform(_x2, _x3) {
|
|
178
|
-
return _ref4.apply(this, arguments);
|
|
179
|
-
};
|
|
180
|
-
}();
|
|
181
|
-
|
|
182
|
-
var runTransform = /*#__PURE__*/function () {
|
|
183
|
-
var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(filePaths, transform, flags) {
|
|
184
|
-
var logger, codemodDirs, transformPath, args, jscodeshiftContent, jscodeshiftContentNew;
|
|
185
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
186
|
-
while (1) {
|
|
187
|
-
switch (_context3.prev = _context3.next) {
|
|
188
|
-
case 0:
|
|
189
|
-
logger = flags.logger;
|
|
190
|
-
logger.log(_chalk.default.green("Running transform '".concat(_chalk.default.bold(transform.name), "' over ").concat(_chalk.default.bold(filePaths.join(', ')), "...")));
|
|
191
|
-
codemodDirs = filePaths;
|
|
192
|
-
|
|
193
|
-
if (!flags.filterPaths) {
|
|
194
|
-
_context3.next = 9;
|
|
195
|
-
break;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
logger.log(_chalk.default.green("Running filtering logic for module ".concat(transform.module, "...")));
|
|
199
|
-
_context3.next = 7;
|
|
200
|
-
return (0, _filepath.findDependentPackagePaths)(filePaths, transform.module);
|
|
201
|
-
|
|
202
|
-
case 7:
|
|
203
|
-
codemodDirs = _context3.sent;
|
|
204
|
-
|
|
205
|
-
if (codemodDirs.length === 0) {
|
|
206
|
-
// Fallback to non-filter logic if filtering returns no directories
|
|
207
|
-
logger.log(_chalk.default.yellow("Could not filter source paths for ".concat(transform.module, ", falling back to running over all specified paths. (See --no-filter-paths flag)")));
|
|
208
|
-
codemodDirs = filePaths;
|
|
209
|
-
} else {
|
|
210
|
-
logger.log(_chalk.default.green("Running transform '".concat(_chalk.default.bold(transform.name), "' over filtered dirs ").concat(_chalk.default.bold(codemodDirs.join(', ')), "...")));
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
case 9:
|
|
214
|
-
logger.log(_chalk.default.green("Transforming files matching these extensions '".concat(_chalk.default.bold(flags.extensions), "'...")));
|
|
215
|
-
transformPath = (0, _transforms.getTransformPath)(transform); // Limit CPUs to 8 to prevent issues when running on CI with a large amount of cpus
|
|
216
|
-
|
|
217
|
-
args = ["--transform=".concat(transformPath), "--ignore-pattern=".concat(flags.ignorePattern), "--parser=".concat(flags.parser), "--extensions=".concat(flags.extensions), '--cpus=8'].concat((0, _toConsumableArray2.default)(codemodDirs));
|
|
218
|
-
|
|
219
|
-
if (flags.failOnError) {
|
|
220
|
-
args.unshift('--fail-on-error');
|
|
221
|
-
} // To avoid https://github.com/facebook/jscodeshift/issues/424 where the jscodeshift.js file is `CRLF` ending.
|
|
222
|
-
// The workaround to use only the `node_modules` indicated in this ticket will not work as we run this code as CLI in products repository
|
|
223
|
-
// that may not have jscodeshift installed.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
jscodeshiftContent = _fs.default.readFileSync(jscodeshift, 'utf8');
|
|
227
|
-
jscodeshiftContentNew = (0, _utils.fixLineEnding)(jscodeshiftContent, 'LF');
|
|
228
|
-
|
|
229
|
-
_fs.default.writeFileSync(jscodeshift, jscodeshiftContentNew);
|
|
230
|
-
|
|
231
|
-
_context3.next = 18;
|
|
232
|
-
return (0, _projectorSpawn.default)(jscodeshift, args, {
|
|
233
|
-
stdio: 'inherit'
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
case 18:
|
|
237
|
-
case "end":
|
|
238
|
-
return _context3.stop();
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}, _callee3);
|
|
242
|
-
}));
|
|
243
|
-
|
|
244
|
-
return function runTransform(_x4, _x5, _x6) {
|
|
245
|
-
return _ref6.apply(this, arguments);
|
|
246
|
-
};
|
|
247
|
-
}();
|
|
248
|
-
|
|
249
|
-
var parsePkg = function parsePkg(pkg) {
|
|
114
|
+
const parsePkg = pkg => {
|
|
250
115
|
if (!pkg.startsWith('@')) {
|
|
251
116
|
throw new _types.ValidationError('Package names must be fully qualified and begin with "@"');
|
|
252
117
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
var parts = pkg.split('@');
|
|
257
|
-
|
|
118
|
+
let name = pkg;
|
|
119
|
+
let version = null;
|
|
120
|
+
const parts = pkg.split('@');
|
|
258
121
|
if (parts.length > 2) {
|
|
259
|
-
name =
|
|
122
|
+
name = `@${parts[1]}`;
|
|
260
123
|
version = parts[parts.length - 1];
|
|
261
124
|
}
|
|
262
|
-
|
|
263
125
|
return {
|
|
264
|
-
name
|
|
265
|
-
version
|
|
126
|
+
name,
|
|
127
|
+
version
|
|
266
128
|
};
|
|
267
129
|
};
|
|
268
|
-
|
|
269
|
-
var parsePackagesFlag = function parsePackagesFlag(packages) {
|
|
130
|
+
const parsePackagesFlag = packages => {
|
|
270
131
|
return packages.split(',').map(parsePkg);
|
|
271
132
|
};
|
|
272
|
-
|
|
273
|
-
var validatePackages = function validatePackages(packages, errorCallback) {
|
|
133
|
+
const validatePackages = (packages, errorCallback) => {
|
|
274
134
|
if (!packages) {
|
|
275
135
|
return;
|
|
276
136
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
var version = null;
|
|
281
|
-
|
|
137
|
+
const errors = [];
|
|
138
|
+
const transformedPackages = packages.map(pkg => {
|
|
139
|
+
let version = null;
|
|
282
140
|
if (pkg.version != null) {
|
|
283
141
|
if (_semver.default.validRange(pkg.version)) {
|
|
284
142
|
version = _semver.default.valid(_semver.default.minVersion(pkg.version));
|
|
285
143
|
} else {
|
|
286
|
-
errors.push(
|
|
144
|
+
errors.push(`Invalid version "${pkg.version}" for package "${pkg.name}"`);
|
|
287
145
|
}
|
|
288
146
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
version
|
|
292
|
-
}
|
|
147
|
+
return {
|
|
148
|
+
...pkg,
|
|
149
|
+
version
|
|
150
|
+
};
|
|
293
151
|
});
|
|
294
|
-
|
|
295
152
|
if (errors.length > 0) {
|
|
296
153
|
errorCallback && errorCallback(errors);
|
|
297
154
|
}
|
|
298
|
-
|
|
299
155
|
return transformedPackages;
|
|
300
156
|
};
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
_context4.next = 7;
|
|
320
|
-
break;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
unvalidatedPackages = parsePackagesFlag(flags.packages);
|
|
324
|
-
packages = validatePackages(unvalidatedPackages, function (errors) {
|
|
325
|
-
throw new _types.ValidationError(errors.join('\n'));
|
|
326
|
-
});
|
|
327
|
-
_context4.next = 12;
|
|
328
|
-
break;
|
|
329
|
-
|
|
330
|
-
case 7:
|
|
331
|
-
if (!flags.sinceRef) {
|
|
332
|
-
_context4.next = 12;
|
|
333
|
-
break;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
_context4.next = 10;
|
|
337
|
-
return (0, _sinceRef.getPackagesSinceRef)(flags.sinceRef);
|
|
338
|
-
|
|
339
|
-
case 10:
|
|
340
|
-
_unvalidatedPackages = _context4.sent;
|
|
341
|
-
packages = validatePackages(_unvalidatedPackages, function (errors) {
|
|
342
|
-
throw new Error("Detected invalid previous versions of packages upgraded since \"".concat(flags.sinceRef, "\". Previous versions must be valid semver.\n").concat(errors.join('\n')));
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
case 12:
|
|
346
|
-
return _context4.abrupt("return", {
|
|
347
|
-
packages: packages
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
case 13:
|
|
351
|
-
case "end":
|
|
352
|
-
return _context4.stop();
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}, _callee4);
|
|
356
|
-
}));
|
|
357
|
-
|
|
358
|
-
return function parseArgs(_x7, _x8) {
|
|
359
|
-
return _ref7.apply(this, arguments);
|
|
157
|
+
const parseArgs = async (input, flags) => {
|
|
158
|
+
let packages;
|
|
159
|
+
if (!input[0]) {
|
|
160
|
+
throw new _types.ValidationError('Please supply a path to the source files you wish to modify');
|
|
161
|
+
}
|
|
162
|
+
if (flags.packages) {
|
|
163
|
+
const unvalidatedPackages = parsePackagesFlag(flags.packages);
|
|
164
|
+
packages = validatePackages(unvalidatedPackages, errors => {
|
|
165
|
+
throw new _types.ValidationError(errors.join('\n'));
|
|
166
|
+
});
|
|
167
|
+
} else if (flags.sinceRef) {
|
|
168
|
+
const unvalidatedPackages = await (0, _sinceRef.getPackagesSinceRef)(flags.sinceRef);
|
|
169
|
+
packages = validatePackages(unvalidatedPackages, errors => {
|
|
170
|
+
throw new Error(`Detected invalid previous versions of packages upgraded since "${flags.sinceRef}". Previous versions must be valid semver.\n${errors.join('\n')}`);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
packages
|
|
360
175
|
};
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
var defaultFlags = {
|
|
176
|
+
};
|
|
177
|
+
const defaultFlags = {
|
|
364
178
|
parser: 'babel',
|
|
365
179
|
extensions: 'js',
|
|
366
180
|
ignorePattern: 'node_modules',
|
|
367
181
|
logger: console
|
|
368
182
|
};
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
if (!(shouldHavePackages && (packages === null || packages === void 0 ? void 0 : packages.length) === 0)) {
|
|
402
|
-
_context5.next = 13;
|
|
403
|
-
break;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
logger.log(_chalk.default.gray("Did not find updated packages, exiting"));
|
|
407
|
-
return _context5.abrupt("return", {
|
|
408
|
-
transforms: []
|
|
409
|
-
});
|
|
410
|
-
|
|
411
|
-
case 13:
|
|
412
|
-
availableTransforms = (0, _transforms.getTransforms)(packages);
|
|
413
|
-
|
|
414
|
-
if (!(availableTransforms.length === 0)) {
|
|
415
|
-
_context5.next = 16;
|
|
416
|
-
break;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
throw new _types.NoTransformsExistError('No codemods available. Please make sure you have the latest version of the packages you are trying to upgrade before running the codemod');
|
|
420
|
-
|
|
421
|
-
case 16:
|
|
422
|
-
if (!packages) {
|
|
423
|
-
_context5.next = 20;
|
|
424
|
-
break;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
_context5.t0 = availableTransforms;
|
|
428
|
-
_context5.next = 24;
|
|
429
|
-
break;
|
|
430
|
-
|
|
431
|
-
case 20:
|
|
432
|
-
_context5.next = 22;
|
|
433
|
-
return resolveTransform(flags, availableTransforms);
|
|
434
|
-
|
|
435
|
-
case 22:
|
|
436
|
-
_context5.t1 = _context5.sent;
|
|
437
|
-
_context5.t0 = [_context5.t1];
|
|
438
|
-
|
|
439
|
-
case 24:
|
|
440
|
-
transforms = _context5.t0;
|
|
441
|
-
transformsWithModule = transforms.map(function (transform) {
|
|
442
|
-
return _objectSpread(_objectSpread({}, transform), {}, {
|
|
443
|
-
module: (0, _transforms.getTransformModule)(transform)
|
|
444
|
-
});
|
|
445
|
-
});
|
|
446
|
-
logger.log(_chalk.default.cyan("Running the following transforms \n".concat(_chalk.default.bold(transformsWithModule.map(function (transform) {
|
|
447
|
-
return "".concat(transform.module, ": ").concat(transform.name);
|
|
448
|
-
}).join('\n')))));
|
|
449
|
-
_iterator = _createForOfIteratorHelper(transformsWithModule);
|
|
450
|
-
_context5.prev = 28;
|
|
451
|
-
|
|
452
|
-
_iterator.s();
|
|
453
|
-
|
|
454
|
-
case 30:
|
|
455
|
-
if ((_step = _iterator.n()).done) {
|
|
456
|
-
_context5.next = 36;
|
|
457
|
-
break;
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
transform = _step.value;
|
|
461
|
-
_context5.next = 34;
|
|
462
|
-
return runTransform(input, transform, flags);
|
|
463
|
-
|
|
464
|
-
case 34:
|
|
465
|
-
_context5.next = 30;
|
|
466
|
-
break;
|
|
467
|
-
|
|
468
|
-
case 36:
|
|
469
|
-
_context5.next = 41;
|
|
470
|
-
break;
|
|
471
|
-
|
|
472
|
-
case 38:
|
|
473
|
-
_context5.prev = 38;
|
|
474
|
-
_context5.t2 = _context5["catch"](28);
|
|
475
|
-
|
|
476
|
-
_iterator.e(_context5.t2);
|
|
477
|
-
|
|
478
|
-
case 41:
|
|
479
|
-
_context5.prev = 41;
|
|
480
|
-
|
|
481
|
-
_iterator.f();
|
|
482
|
-
|
|
483
|
-
return _context5.finish(41);
|
|
484
|
-
|
|
485
|
-
case 44:
|
|
486
|
-
return _context5.abrupt("return", {
|
|
487
|
-
transforms: transformsWithModule
|
|
488
|
-
});
|
|
489
|
-
|
|
490
|
-
case 45:
|
|
491
|
-
case "end":
|
|
492
|
-
return _context5.stop();
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
}, _callee5, null, [[28, 38, 41, 44]]);
|
|
183
|
+
async function main(input, userFlags) {
|
|
184
|
+
const flags = {
|
|
185
|
+
...defaultFlags,
|
|
186
|
+
...userFlags
|
|
187
|
+
};
|
|
188
|
+
const logger = flags.logger;
|
|
189
|
+
const {
|
|
190
|
+
packages
|
|
191
|
+
} = await parseArgs(input, flags);
|
|
192
|
+
const {
|
|
193
|
+
_PACKAGE_VERSION_ = '0.0.0-dev'
|
|
194
|
+
} = process.env;
|
|
195
|
+
logger.log(_chalk.default.bgBlue(_chalk.default.black(`📚 Atlassian-Frontend codemod library @ ${_PACKAGE_VERSION_} 📚`)));
|
|
196
|
+
if (packages && packages.length > 0) {
|
|
197
|
+
logger.log(_chalk.default.gray(`Searching for codemods for newer versions of the following packages: ${packages.map(pkg => `${pkg.name}${pkg.version ? '@' + pkg.version : ''}`)}`));
|
|
198
|
+
}
|
|
199
|
+
const shouldHavePackages = flags.sinceRef || flags.packages && flags.packages.length > 0;
|
|
200
|
+
if (shouldHavePackages && (packages === null || packages === void 0 ? void 0 : packages.length) === 0) {
|
|
201
|
+
logger.log(_chalk.default.gray(`Did not find updated packages, exiting`));
|
|
202
|
+
return {
|
|
203
|
+
transforms: []
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
const availableTransforms = (0, _transforms.getTransforms)(packages);
|
|
207
|
+
if (availableTransforms.length === 0) {
|
|
208
|
+
throw new _types.NoTransformsExistError('No codemods available. Please make sure you have the latest version of the packages you are trying to upgrade before running the codemod');
|
|
209
|
+
}
|
|
210
|
+
const transforms = packages ? availableTransforms : [await resolveTransform(flags, availableTransforms)];
|
|
211
|
+
const transformsWithModule = transforms.map(transform => ({
|
|
212
|
+
...transform,
|
|
213
|
+
module: (0, _transforms.getTransformModule)(transform)
|
|
496
214
|
}));
|
|
497
|
-
|
|
215
|
+
logger.log(_chalk.default.cyan(`Running the following transforms \n${_chalk.default.bold(transformsWithModule.map(transform => `${transform.module}: ${transform.name}`).join('\n'))}`));
|
|
216
|
+
for (const transform of transformsWithModule) {
|
|
217
|
+
await runTransform(input, transform, flags);
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
transforms: transformsWithModule
|
|
221
|
+
};
|
|
498
222
|
}
|