-
Notifications
You must be signed in to change notification settings - Fork 1
/
xo:config-import-order.js
93 lines (82 loc) · 1.65 KB
/
xo:config-import-order.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import semver from 'semver';
import update from '../lib/update.js';
export const description = 'Configure import/order.';
export const commit = {
type: 'config',
scope: 'xo',
subject: description,
};
const key = 'import/order';
const value = [
'error',
{
groups: [
'builtin',
'external',
'internal',
'parent',
'sibling',
'index',
'object',
'type',
],
pathGroups: [
{
pattern: 'ava',
group: 'external',
position: 'before',
},
{
pattern: '#module',
group: 'index',
position: 'after',
},
],
pathGroupsExcludedImportTypes: [],
distinctGroup: true,
'newlines-between': 'always',
alphabetize: {
order: 'asc',
orderImportKind: 'asc',
caseInsensitive: false,
},
warnOnUnassignedImports: true,
},
];
export async function postcondition({readPkg, assert}) {
const {xo, devDependencies} = await readPkg();
assert(xo?.rules?.[key] !== undefined);
assert(semver.satisfies(devDependencies.xo, '>=0.57.0'));
}
export async function precondition({readPkg, assert}) {
const {xo} = await readPkg();
assert(xo?.rules?.[key] === undefined);
}
export async function apply({
readPkg,
writePkg,
fixConfig,
install,
fixSources,
}) {
let needInstall = false;
await update({
read: readPkg,
write: writePkg,
edit(pkgjson) {
if (!semver.satisfies(pkgjson.devDependencies.xo, '>=0.57.0')) {
pkgjson.devDependencies.xo = '0.57.0';
needInstall = true;
}
pkgjson.xo.rules ??= {};
pkgjson.xo.rules[key] = value;
return pkgjson;
},
});
await fixConfig();
if (needInstall) {
await install();
}
await fixSources();
}
export const dependencies = ['sources:lint-setup'];