mwts 1.3.0 → 2.0.1
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 +56 -7
- package/dist/eslint.config.js +88 -0
- package/dist/eslint.ignores.js +3 -0
- package/dist/src/clean.d.ts +0 -1
- package/dist/src/clean.js +1 -2
- package/dist/src/clean.js.map +1 -1
- package/dist/src/cli.d.ts +3 -2
- package/dist/src/cli.js +86 -17
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +7 -2
- package/dist/src/index.js +84 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/init.d.ts +1 -6
- package/dist/src/init.js +136 -26
- package/dist/src/init.js.map +1 -1
- package/dist/src/migrate.d.ts +2 -0
- package/dist/src/migrate.js +97 -0
- package/dist/src/migrate.js.map +1 -0
- package/dist/src/util.d.ts +3 -5
- package/dist/src/util.js +16 -12
- package/dist/src/util.js.map +1 -1
- package/eslint.config.js +89 -0
- package/eslint.ignores.js +1 -0
- package/package.json +35 -33
- package/tsconfig-midway.json +5 -7
- package/tsconfig.json +8 -5
- package/.eslintrc.json +0 -58
- package/dist/.eslintrc.json +0 -58
- package/dist/src/clean.d.ts.map +0 -1
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/init.d.ts.map +0 -1
- package/dist/src/util.d.ts.map +0 -1
package/dist/src/init.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.addScripts = addScripts;
|
|
4
|
+
exports.addDependencies = addDependencies;
|
|
5
|
+
exports.installDefaultTemplate = installDefaultTemplate;
|
|
6
|
+
exports.init = init;
|
|
4
7
|
const cp = require("child_process");
|
|
5
8
|
const fs = require("fs");
|
|
6
9
|
const inquirer = require("inquirer");
|
|
@@ -9,7 +12,6 @@ const ncp_1 = require("ncp");
|
|
|
9
12
|
const util = require("util");
|
|
10
13
|
const util_1 = require("./util");
|
|
11
14
|
const chalk = require("chalk");
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
13
15
|
const pkg = require('../../package.json');
|
|
14
16
|
const ncpp = util.promisify(ncp_1.ncp);
|
|
15
17
|
const DEFAULT_PACKAGE_JSON = {
|
|
@@ -23,6 +25,69 @@ const DEFAULT_PACKAGE_JSON = {
|
|
|
23
25
|
keywords: [],
|
|
24
26
|
scripts: { test: 'echo "Error: no test specified" && exit 1' },
|
|
25
27
|
};
|
|
28
|
+
const ESLINT_CONFIG = `module.exports = [
|
|
29
|
+
{
|
|
30
|
+
ignores: ['dist/', '**/node_modules/'],
|
|
31
|
+
},
|
|
32
|
+
...require('mwts'),
|
|
33
|
+
];
|
|
34
|
+
`;
|
|
35
|
+
const ESLINT_STYLISTIC_CONFIG = `const stylistic = require('@stylistic/eslint-plugin');
|
|
36
|
+
|
|
37
|
+
module.exports = [
|
|
38
|
+
{
|
|
39
|
+
ignores: ['dist/', '**/node_modules/'],
|
|
40
|
+
},
|
|
41
|
+
...require('mwts'),
|
|
42
|
+
{
|
|
43
|
+
plugins: {
|
|
44
|
+
'@stylistic': stylistic,
|
|
45
|
+
},
|
|
46
|
+
rules: {
|
|
47
|
+
'prettier/prettier': 'off',
|
|
48
|
+
'@stylistic/semi': ['error', 'always'],
|
|
49
|
+
'@stylistic/quotes': ['warn', 'single', { avoidEscape: true }],
|
|
50
|
+
'@stylistic/comma-dangle': ['error', 'always-multiline'],
|
|
51
|
+
'@stylistic/arrow-parens': ['error', 'as-needed'],
|
|
52
|
+
'@stylistic/object-curly-spacing': ['error', 'always'],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
`;
|
|
57
|
+
const ESLINT_BIOME_CONFIG = `
|
|
58
|
+
module.exports = [
|
|
59
|
+
{
|
|
60
|
+
ignores: ['dist/', '**/node_modules/'],
|
|
61
|
+
},
|
|
62
|
+
...require('mwts'),
|
|
63
|
+
{
|
|
64
|
+
rules: {
|
|
65
|
+
'prettier/prettier': 'off',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
`;
|
|
70
|
+
const BIOME_CONFIG = `{
|
|
71
|
+
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
72
|
+
"formatter": {
|
|
73
|
+
"enabled": true,
|
|
74
|
+
"indentStyle": "space",
|
|
75
|
+
"indentWidth": 2,
|
|
76
|
+
"lineWidth": 80
|
|
77
|
+
},
|
|
78
|
+
"javascript": {
|
|
79
|
+
"formatter": {
|
|
80
|
+
"quoteStyle": "single",
|
|
81
|
+
"trailingCommas": "es5",
|
|
82
|
+
"semicolons": "always",
|
|
83
|
+
"arrowParentheses": "asNeeded"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
`;
|
|
88
|
+
function getFormatterMode(options) {
|
|
89
|
+
return options.formatterMode || 'prettier';
|
|
90
|
+
}
|
|
26
91
|
async function query(message, question, defaultVal, options) {
|
|
27
92
|
if (options.yes) {
|
|
28
93
|
return true;
|
|
@@ -67,7 +132,6 @@ async function addScripts(packageJson, options) {
|
|
|
67
132
|
install = await query(message, 'Replace', false, options);
|
|
68
133
|
}
|
|
69
134
|
if (install) {
|
|
70
|
-
// eslint-disable-next-line require-atomic-updates
|
|
71
135
|
packageJson.scripts[script] = scripts[script];
|
|
72
136
|
edits = true;
|
|
73
137
|
}
|
|
@@ -75,7 +139,6 @@ async function addScripts(packageJson, options) {
|
|
|
75
139
|
}
|
|
76
140
|
return edits;
|
|
77
141
|
}
|
|
78
|
-
exports.addScripts = addScripts;
|
|
79
142
|
async function addDependencies(packageJson, options) {
|
|
80
143
|
let edits = false;
|
|
81
144
|
const deps = {
|
|
@@ -97,15 +160,47 @@ async function addDependencies(packageJson, options) {
|
|
|
97
160
|
install = await query(message, 'Overwrite', false, options);
|
|
98
161
|
}
|
|
99
162
|
if (install) {
|
|
100
|
-
// eslint-disable-next-line require-atomic-updates
|
|
101
163
|
packageJson.devDependencies[dep] = deps[dep];
|
|
102
164
|
edits = true;
|
|
103
165
|
}
|
|
104
166
|
}
|
|
105
167
|
}
|
|
168
|
+
if (getFormatterMode(options) === 'stylistic') {
|
|
169
|
+
const dep = '@stylistic/eslint-plugin';
|
|
170
|
+
const target = '^5.5.0';
|
|
171
|
+
let install = true;
|
|
172
|
+
const existing = packageJson.devDependencies[dep];
|
|
173
|
+
if (existing !== target) {
|
|
174
|
+
if (existing) {
|
|
175
|
+
const message = `Already have devDependency for ${chalk.bold(dep)}:\n` +
|
|
176
|
+
`-${chalk.red(existing)}\n+${chalk.green(target)}`;
|
|
177
|
+
install = await query(message, 'Overwrite', false, options);
|
|
178
|
+
}
|
|
179
|
+
if (install) {
|
|
180
|
+
packageJson.devDependencies[dep] = target;
|
|
181
|
+
edits = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (getFormatterMode(options) === 'biome') {
|
|
186
|
+
const dep = '@biomejs/biome';
|
|
187
|
+
const target = '^1.9.4';
|
|
188
|
+
let install = true;
|
|
189
|
+
const existing = packageJson.devDependencies[dep];
|
|
190
|
+
if (existing !== target) {
|
|
191
|
+
if (existing) {
|
|
192
|
+
const message = `Already have devDependency for ${chalk.bold(dep)}:\n` +
|
|
193
|
+
`-${chalk.red(existing)}\n+${chalk.green(target)}`;
|
|
194
|
+
install = await query(message, 'Overwrite', false, options);
|
|
195
|
+
}
|
|
196
|
+
if (install) {
|
|
197
|
+
packageJson.devDependencies[dep] = target;
|
|
198
|
+
edits = true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
106
202
|
return edits;
|
|
107
203
|
}
|
|
108
|
-
exports.addDependencies = addDependencies;
|
|
109
204
|
function formatJson(object) {
|
|
110
205
|
const json = JSON.stringify(object, null, ' ');
|
|
111
206
|
return `${json}\n`;
|
|
@@ -121,10 +216,6 @@ async function writePackageJson(packageJson, options) {
|
|
|
121
216
|
};
|
|
122
217
|
options.logger.dir(preview);
|
|
123
218
|
}
|
|
124
|
-
exports.ESLINT_CONFIG = {
|
|
125
|
-
extends: './node_modules/mwts/',
|
|
126
|
-
};
|
|
127
|
-
exports.ESLINT_IGNORE = 'dist/\n';
|
|
128
219
|
async function generateConfigFile(options, filename, contents) {
|
|
129
220
|
let existing;
|
|
130
221
|
try {
|
|
@@ -136,7 +227,9 @@ async function generateConfigFile(options, filename, contents) {
|
|
|
136
227
|
/* not found, create it. */
|
|
137
228
|
}
|
|
138
229
|
else {
|
|
139
|
-
throw new Error(`Unknown error reading ${filename}: ${err.message}
|
|
230
|
+
throw new Error(`Unknown error reading ${filename}: ${err.message}`, {
|
|
231
|
+
cause: exc,
|
|
232
|
+
});
|
|
140
233
|
}
|
|
141
234
|
}
|
|
142
235
|
let writeFile = true;
|
|
@@ -156,10 +249,13 @@ async function generateConfigFile(options, filename, contents) {
|
|
|
156
249
|
}
|
|
157
250
|
}
|
|
158
251
|
async function generateESLintConfig(options) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
252
|
+
const formatterMode = getFormatterMode(options);
|
|
253
|
+
const config = formatterMode === 'stylistic'
|
|
254
|
+
? ESLINT_STYLISTIC_CONFIG
|
|
255
|
+
: formatterMode === 'biome'
|
|
256
|
+
? ESLINT_BIOME_CONFIG
|
|
257
|
+
: ESLINT_CONFIG;
|
|
258
|
+
return generateConfigFile(options, './eslint.config.js', config);
|
|
163
259
|
}
|
|
164
260
|
async function generateTsConfig(options) {
|
|
165
261
|
const config = formatJson({
|
|
@@ -170,12 +266,22 @@ async function generateTsConfig(options) {
|
|
|
170
266
|
return generateConfigFile(options, './tsconfig.json', config);
|
|
171
267
|
}
|
|
172
268
|
async function generatePrettierConfig(options) {
|
|
269
|
+
if (getFormatterMode(options) === 'stylistic' ||
|
|
270
|
+
getFormatterMode(options) === 'biome') {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
173
273
|
const style = `module.exports = {
|
|
174
|
-
...require('mwts/.prettierrc.json')
|
|
175
|
-
}
|
|
274
|
+
...require('mwts/.prettierrc.json'),
|
|
275
|
+
};
|
|
176
276
|
`;
|
|
177
277
|
return generateConfigFile(options, './.prettierrc.js', style);
|
|
178
278
|
}
|
|
279
|
+
async function generateBiomeConfig(options) {
|
|
280
|
+
if (getFormatterMode(options) !== 'biome') {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
return generateConfigFile(options, './biome.json', BIOME_CONFIG + '\n');
|
|
284
|
+
}
|
|
179
285
|
async function installDefaultTemplate(options) {
|
|
180
286
|
const cwd = process.cwd();
|
|
181
287
|
const sourceDirName = path.join(__dirname, '../template');
|
|
@@ -202,7 +308,6 @@ async function installDefaultTemplate(options) {
|
|
|
202
308
|
options.logger.log('Default template installed.');
|
|
203
309
|
return true;
|
|
204
310
|
}
|
|
205
|
-
exports.installDefaultTemplate = installDefaultTemplate;
|
|
206
311
|
async function init(options) {
|
|
207
312
|
let generatedPackageJson = false;
|
|
208
313
|
let packageJson;
|
|
@@ -212,7 +317,9 @@ async function init(options) {
|
|
|
212
317
|
catch (exc) {
|
|
213
318
|
const err = (0, util_1.safeError)(exc);
|
|
214
319
|
if (err.code !== 'ENOENT') {
|
|
215
|
-
throw new Error(`Unable to open package.json file: ${err.message}
|
|
320
|
+
throw new Error(`Unable to open package.json file: ${err.message}`, {
|
|
321
|
+
cause: exc,
|
|
322
|
+
});
|
|
216
323
|
}
|
|
217
324
|
const generate = await query(`${chalk.bold('package.json')} does not exist.`, 'Generate', true, options);
|
|
218
325
|
if (!generate) {
|
|
@@ -222,18 +329,22 @@ async function init(options) {
|
|
|
222
329
|
packageJson = DEFAULT_PACKAGE_JSON;
|
|
223
330
|
generatedPackageJson = true;
|
|
224
331
|
}
|
|
225
|
-
const addedDeps = await
|
|
226
|
-
|
|
332
|
+
const [addedDeps, addedScripts] = await Promise.all([
|
|
333
|
+
addDependencies(packageJson, options),
|
|
334
|
+
addScripts(packageJson, options),
|
|
335
|
+
]);
|
|
227
336
|
if (generatedPackageJson || addedDeps || addedScripts) {
|
|
228
337
|
await writePackageJson(packageJson, options);
|
|
229
338
|
}
|
|
230
339
|
else {
|
|
231
340
|
options.logger.log('No edits needed in package.json.');
|
|
232
341
|
}
|
|
233
|
-
await
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
342
|
+
await Promise.all([
|
|
343
|
+
generateTsConfig(options),
|
|
344
|
+
generateESLintConfig(options),
|
|
345
|
+
generatePrettierConfig(options),
|
|
346
|
+
generateBiomeConfig(options),
|
|
347
|
+
]);
|
|
237
348
|
await installDefaultTemplate(options);
|
|
238
349
|
// Run `npm install` after initial setup so `npm run lint` works right away.
|
|
239
350
|
if (!options.dryRun) {
|
|
@@ -243,5 +354,4 @@ async function init(options) {
|
|
|
243
354
|
}
|
|
244
355
|
return true;
|
|
245
356
|
}
|
|
246
|
-
exports.init = init;
|
|
247
357
|
//# sourceMappingURL=init.js.map
|
package/dist/src/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.migrate = migrate;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const util_1 = require("./util");
|
|
7
|
+
const DEFAULT_ESLINT_IGNORES = ['dist/', '**/node_modules/'];
|
|
8
|
+
function parseIgnorePatterns(contents) {
|
|
9
|
+
return contents
|
|
10
|
+
.split(/\r?\n/u)
|
|
11
|
+
.map(line => line.trim())
|
|
12
|
+
.filter(line => line && !line.startsWith('#'));
|
|
13
|
+
}
|
|
14
|
+
function formatIgnoreConfig(patterns) {
|
|
15
|
+
const escaped = patterns.map(pattern => `'${pattern.replace(/'/gu, "\\'")}'`);
|
|
16
|
+
return `module.exports = [${escaped.join(', ')}]\n`;
|
|
17
|
+
}
|
|
18
|
+
function buildMigratedEslintConfig(ignorePatterns) {
|
|
19
|
+
const ignoreList = formatIgnoreConfig(ignorePatterns).replace(/^module\.exports = /u, '');
|
|
20
|
+
return `const mwtsConfig = require('mwts/eslint.config.js');
|
|
21
|
+
|
|
22
|
+
const compatConfig = mwtsConfig.map(config => {
|
|
23
|
+
const parserOptions = config?.languageOptions?.parserOptions;
|
|
24
|
+
if (!parserOptions) {
|
|
25
|
+
return config;
|
|
26
|
+
}
|
|
27
|
+
const { project, projectService, ...nextParserOptions } = parserOptions;
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
...config,
|
|
31
|
+
languageOptions: {
|
|
32
|
+
...config.languageOptions,
|
|
33
|
+
parserOptions: nextParserOptions,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
module.exports = [
|
|
39
|
+
{
|
|
40
|
+
ignores: ${ignoreList.trim()},
|
|
41
|
+
},
|
|
42
|
+
...compatConfig,
|
|
43
|
+
{
|
|
44
|
+
rules: {
|
|
45
|
+
'@typescript-eslint/no-floating-promises': 'off',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
`;
|
|
50
|
+
}
|
|
51
|
+
async function migrate(options) {
|
|
52
|
+
const root = options.targetRootDir;
|
|
53
|
+
const eslintConfigCandidates = [
|
|
54
|
+
'eslint.config.js',
|
|
55
|
+
'eslint.config.cjs',
|
|
56
|
+
'eslint.config.mjs',
|
|
57
|
+
];
|
|
58
|
+
const hasFlatConfig = eslintConfigCandidates.some(candidate => fs.existsSync(path.join(root, candidate)));
|
|
59
|
+
if (hasFlatConfig) {
|
|
60
|
+
options.logger.log('Detected existing eslint.config.*; skip migration.');
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
const legacyEslintConfig = path.join(root, '.eslintrc.json');
|
|
64
|
+
const legacyEslintIgnore = path.join(root, '.eslintignore');
|
|
65
|
+
const targetEslintConfig = path.join(root, 'eslint.config.js');
|
|
66
|
+
if (!fs.existsSync(legacyEslintConfig)) {
|
|
67
|
+
options.logger.log('No .eslintrc.json found. Nothing to migrate in current directory.');
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
let ignorePatterns = DEFAULT_ESLINT_IGNORES;
|
|
72
|
+
if (fs.existsSync(legacyEslintIgnore)) {
|
|
73
|
+
const parsedIgnorePatterns = parseIgnorePatterns(fs.readFileSync(legacyEslintIgnore, 'utf8'));
|
|
74
|
+
if (parsedIgnorePatterns.length > 0) {
|
|
75
|
+
ignorePatterns = parsedIgnorePatterns;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
options.logger.log('Writing eslint.config.js...');
|
|
79
|
+
if (!options.dryRun) {
|
|
80
|
+
fs.writeFileSync(targetEslintConfig, buildMigratedEslintConfig(ignorePatterns), 'utf8');
|
|
81
|
+
}
|
|
82
|
+
options.logger.log('Backing up legacy ESLint files...');
|
|
83
|
+
if (!options.dryRun) {
|
|
84
|
+
fs.renameSync(legacyEslintConfig, `${legacyEslintConfig}.bak`);
|
|
85
|
+
if (fs.existsSync(legacyEslintIgnore)) {
|
|
86
|
+
fs.renameSync(legacyEslintIgnore, `${legacyEslintIgnore}.bak`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
catch (exc) {
|
|
92
|
+
const err = (0, util_1.safeError)(exc);
|
|
93
|
+
options.logger.error(`Migration failed: ${err.message}`);
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/src/util.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import * as fs from 'fs';
|
|
3
2
|
import * as ncp from 'ncp';
|
|
4
3
|
export declare const readFilep: ReadFileP;
|
|
5
4
|
export declare const rimrafp: (arg1: string) => Promise<void>;
|
|
6
|
-
export declare const writeFileAtomicp: (
|
|
7
|
-
export declare const ncpp: (source: string, destination: string, options?: ncp.Options
|
|
5
|
+
export declare const writeFileAtomicp: (filename: string, data: string) => Promise<void>;
|
|
6
|
+
export declare const ncpp: (source: string, destination: string, options?: ncp.Options) => Promise<void>;
|
|
8
7
|
export interface Bag<T> {
|
|
9
8
|
[script: string]: T;
|
|
10
9
|
}
|
|
@@ -24,7 +23,7 @@ export declare function safeError(err: unknown): NodeJS.ErrnoException;
|
|
|
24
23
|
*/
|
|
25
24
|
export interface ConfigFile {
|
|
26
25
|
files?: string[];
|
|
27
|
-
compilerOptions?: unknown
|
|
26
|
+
compilerOptions?: Record<string, unknown>;
|
|
28
27
|
include?: string[];
|
|
29
28
|
exclude?: string[];
|
|
30
29
|
extends?: string[] | string;
|
|
@@ -45,4 +44,3 @@ export declare function getPkgManagerCommand(isYarnUsed?: boolean): string;
|
|
|
45
44
|
*/
|
|
46
45
|
export declare function getTSConfig(rootDir: string, customReadFilep?: ReadFileP): Promise<ConfigFile>;
|
|
47
46
|
export declare function readJSON(filepath: string): unknown;
|
|
48
|
-
//# sourceMappingURL=util.d.ts.map
|
package/dist/src/util.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ncpp = exports.writeFileAtomicp = exports.rimrafp = exports.readFilep = void 0;
|
|
4
|
+
exports.readJsonp = readJsonp;
|
|
5
|
+
exports.nop = nop;
|
|
6
|
+
exports.safeError = safeError;
|
|
7
|
+
exports.isYarnUsed = isYarnUsed;
|
|
8
|
+
exports.getPkgManagerCommand = getPkgManagerCommand;
|
|
9
|
+
exports.getTSConfig = getTSConfig;
|
|
10
|
+
exports.readJSON = readJSON;
|
|
4
11
|
const fs = require("fs");
|
|
5
12
|
const path = require("path");
|
|
6
13
|
const rimraf = require("rimraf");
|
|
@@ -10,19 +17,18 @@ const writeFileAtomic = require("write-file-atomic");
|
|
|
10
17
|
const JSON5 = require("json5");
|
|
11
18
|
exports.readFilep = (0, util_1.promisify)(fs.readFile);
|
|
12
19
|
exports.rimrafp = (0, util_1.promisify)(rimraf);
|
|
13
|
-
|
|
20
|
+
const writeFileAtomicp = (filename, data) => writeFileAtomic(filename, data);
|
|
21
|
+
exports.writeFileAtomicp = writeFileAtomicp;
|
|
14
22
|
exports.ncpp = (0, util_1.promisify)(ncp.ncp);
|
|
15
23
|
async function readJsonp(jsonPath) {
|
|
16
24
|
const contents = await (0, exports.readFilep)(jsonPath, 'utf8');
|
|
17
25
|
return JSON5.parse(contents);
|
|
18
26
|
}
|
|
19
|
-
exports.readJsonp = readJsonp;
|
|
20
27
|
function nop() {
|
|
21
28
|
/* empty */
|
|
22
29
|
}
|
|
23
|
-
exports.nop = nop;
|
|
24
30
|
function safeError(err) {
|
|
25
|
-
if (err
|
|
31
|
+
if (err === null || err === undefined) {
|
|
26
32
|
return new Error(`(${err})`);
|
|
27
33
|
}
|
|
28
34
|
if (err instanceof Error) {
|
|
@@ -30,7 +36,6 @@ function safeError(err) {
|
|
|
30
36
|
}
|
|
31
37
|
return new Error(`${err}`);
|
|
32
38
|
}
|
|
33
|
-
exports.safeError = safeError;
|
|
34
39
|
/**
|
|
35
40
|
* Recursively iterate through the dependency chain until we reach the end of
|
|
36
41
|
* the dependency chain or encounter a circular reference
|
|
@@ -85,8 +90,9 @@ async function getBase(filePath, customReadFilep, readFiles, currentDir) {
|
|
|
85
90
|
*/
|
|
86
91
|
function combineTSConfig(base, inherited) {
|
|
87
92
|
const result = { compilerOptions: {} };
|
|
93
|
+
const compilerOptions = Object.assign({}, base.compilerOptions || {}, inherited.compilerOptions || {});
|
|
88
94
|
Object.assign(result, base, inherited);
|
|
89
|
-
|
|
95
|
+
result.compilerOptions = compilerOptions;
|
|
90
96
|
delete result.extends;
|
|
91
97
|
return result;
|
|
92
98
|
}
|
|
@@ -101,11 +107,9 @@ function isYarnUsed(existsSync = fs.existsSync) {
|
|
|
101
107
|
}
|
|
102
108
|
return existsSync('yarn.lock');
|
|
103
109
|
}
|
|
104
|
-
exports.isYarnUsed = isYarnUsed;
|
|
105
110
|
function getPkgManagerCommand(isYarnUsed) {
|
|
106
111
|
return ((isYarnUsed ? 'yarn' : 'npm') + (process.platform === 'win32' ? '.cmd' : ''));
|
|
107
112
|
}
|
|
108
|
-
exports.getPkgManagerCommand = getPkgManagerCommand;
|
|
109
113
|
/**
|
|
110
114
|
* Find the tsconfig.json, read it, and return parsed contents.
|
|
111
115
|
* @param rootDir Directory where the tsconfig.json should be found.
|
|
@@ -117,7 +121,6 @@ async function getTSConfig(rootDir, customReadFilep) {
|
|
|
117
121
|
const readArr = new Set();
|
|
118
122
|
return getBase('tsconfig.json', customReadFilep, readArr, rootDir);
|
|
119
123
|
}
|
|
120
|
-
exports.getTSConfig = getTSConfig;
|
|
121
124
|
function readJSON(filepath) {
|
|
122
125
|
const content = fs.readFileSync(filepath, 'utf8');
|
|
123
126
|
try {
|
|
@@ -125,8 +128,9 @@ function readJSON(filepath) {
|
|
|
125
128
|
}
|
|
126
129
|
catch (exc) {
|
|
127
130
|
const err = safeError(exc);
|
|
128
|
-
throw new Error(`Failed to parse JSON file '${content}' for: ${err.message}
|
|
131
|
+
throw new Error(`Failed to parse JSON file '${content}' for: ${err.message}`, {
|
|
132
|
+
cause: exc,
|
|
133
|
+
});
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
|
-
exports.readJSON = readJSON;
|
|
132
136
|
//# sourceMappingURL=util.js.map
|
package/dist/src/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const eslint = require('@eslint/js');
|
|
4
|
+
const tseslint = require('typescript-eslint');
|
|
5
|
+
const prettierConfig = require('eslint-config-prettier');
|
|
6
|
+
const pluginN = require('eslint-plugin-n');
|
|
7
|
+
const pluginPrettier = require('eslint-plugin-prettier');
|
|
8
|
+
const globals = require('globals');
|
|
9
|
+
const ignores = require('./eslint.ignores.js');
|
|
10
|
+
const defineConfig = require('eslint/config').defineConfig;
|
|
11
|
+
|
|
12
|
+
module.exports = defineConfig([
|
|
13
|
+
{ ignores },
|
|
14
|
+
eslint.configs.recommended,
|
|
15
|
+
prettierConfig,
|
|
16
|
+
{
|
|
17
|
+
languageOptions: {
|
|
18
|
+
globals: globals.node,
|
|
19
|
+
},
|
|
20
|
+
plugins: {
|
|
21
|
+
n: pluginN,
|
|
22
|
+
prettier: pluginPrettier,
|
|
23
|
+
},
|
|
24
|
+
rules: {
|
|
25
|
+
'prettier/prettier': 'error',
|
|
26
|
+
'block-scoped-var': 'error',
|
|
27
|
+
eqeqeq: 'error',
|
|
28
|
+
'no-var': 'error',
|
|
29
|
+
'prefer-const': 'error',
|
|
30
|
+
'eol-last': 'error',
|
|
31
|
+
'prefer-arrow-callback': 'error',
|
|
32
|
+
'no-trailing-spaces': 'error',
|
|
33
|
+
quotes: ['warn', 'single', { avoidEscape: true }],
|
|
34
|
+
'no-restricted-properties': [
|
|
35
|
+
'error',
|
|
36
|
+
{
|
|
37
|
+
object: 'describe',
|
|
38
|
+
property: 'only',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
object: 'it',
|
|
42
|
+
property: 'only',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
files: ['**/.prettierrc.js', '**/eslint.config.js', '**/eslint.ignores.js'],
|
|
49
|
+
languageOptions: {
|
|
50
|
+
sourceType: 'commonjs',
|
|
51
|
+
globals: globals.node,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
files: ['**/*.ts', '**/*.tsx'],
|
|
56
|
+
extends: [tseslint.configs.recommended],
|
|
57
|
+
languageOptions: {
|
|
58
|
+
parser: tseslint.parser,
|
|
59
|
+
parserOptions: {
|
|
60
|
+
ecmaVersion: 2018,
|
|
61
|
+
sourceType: 'module',
|
|
62
|
+
project: './tsconfig.json',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
rules: {
|
|
66
|
+
'@typescript-eslint/ban-ts-comment': 'warn',
|
|
67
|
+
'@typescript-eslint/no-floating-promises': 'error',
|
|
68
|
+
'@typescript-eslint/no-non-null-assertion': 'off',
|
|
69
|
+
'@typescript-eslint/no-use-before-define': 'off',
|
|
70
|
+
'@typescript-eslint/no-warning-comments': 'off',
|
|
71
|
+
'@typescript-eslint/no-empty-function': 'off',
|
|
72
|
+
'@typescript-eslint/no-unused-vars': 'warn',
|
|
73
|
+
'@typescript-eslint/no-var-requires': 'off',
|
|
74
|
+
'@typescript-eslint/no-require-imports': 'off',
|
|
75
|
+
'@typescript-eslint/no-empty-object-type': 'off',
|
|
76
|
+
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
77
|
+
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
78
|
+
'@typescript-eslint/ban-types': 'off',
|
|
79
|
+
'@typescript-eslint/camelcase': 'off',
|
|
80
|
+
'n/no-missing-import': 'off',
|
|
81
|
+
'n/no-empty-function': 'off',
|
|
82
|
+
'n/no-unsupported-features/es-syntax': 'off',
|
|
83
|
+
'n/no-missing-require': 'off',
|
|
84
|
+
'n/shebang': 'off',
|
|
85
|
+
'no-dupe-class-members': 'off',
|
|
86
|
+
'require-atomic-updates': 'off',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = ['dist/', '**/node_modules/', 'template/', 'test/fixtures/'];
|