eslint-plugin-package-json 0.3.0 → 0.3.2
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/.github/actions/prepare/action.yml +12 -0
- package/.github/workflows/format.yml +15 -0
- package/.github/workflows/lint-eslint-docs.yml +16 -0
- package/.github/workflows/lint.yml +15 -0
- package/.github/workflows/test.yml +1 -4
- package/.github/workflows/tsc.yml +15 -0
- package/.vscode/extensions.json +3 -0
- package/.vscode/launch.json +14 -15
- package/.vscode/settings.json +4 -0
- package/README.md +19 -7
- package/docs/rules/order-properties.md +5 -1
- package/docs/rules/sort-collections.md +5 -1
- package/docs/rules/valid-local-dependency.md +3 -5
- package/docs/rules/valid-package-def.md +3 -5
- package/lib/createRule.d.ts +30 -0
- package/lib/createRule.d.ts.map +1 -0
- package/lib/createRule.js +5 -6
- package/lib/index.d.ts +41 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +19 -17
- package/lib/rules/order-properties.d.ts +6 -0
- package/lib/rules/order-properties.d.ts.map +1 -0
- package/lib/rules/order-properties.js +31 -35
- package/lib/rules/sort-collections.d.ts +6 -0
- package/lib/rules/sort-collections.d.ts.map +1 -0
- package/lib/rules/sort-collections.js +22 -42
- package/lib/rules/valid-local-dependency.d.ts +6 -0
- package/lib/rules/valid-local-dependency.d.ts.map +1 -0
- package/lib/rules/valid-local-dependency.js +29 -48
- package/lib/rules/valid-package-def.d.ts +6 -0
- package/lib/rules/valid-package-def.d.ts.map +1 -0
- package/lib/rules/valid-package-def.js +13 -28
- package/lib/tests/rules/order-properties.test.d.ts +2 -0
- package/lib/tests/rules/order-properties.test.d.ts.map +1 -0
- package/lib/tests/rules/order-properties.test.js +223 -0
- package/lib/tests/rules/ruleTester.d.ts +10 -0
- package/lib/tests/rules/ruleTester.d.ts.map +1 -0
- package/lib/tests/rules/ruleTester.js +7 -0
- package/lib/tests/rules/sort-collections.test.d.ts +2 -0
- package/lib/tests/rules/sort-collections.test.d.ts.map +1 -0
- package/lib/tests/rules/sort-collections.test.js +64 -0
- package/lib/tests/rules/valid-local-dependency.test.d.ts +2 -0
- package/lib/tests/rules/valid-local-dependency.test.d.ts.map +1 -0
- package/lib/tests/rules/valid-local-dependency.test.js +232 -0
- package/lib/tests/rules/valid-package-def.test.d.ts +2 -0
- package/lib/tests/rules/valid-package-def.test.d.ts.map +1 -0
- package/lib/tests/rules/valid-package-def.test.js +65 -0
- package/package.json +17 -16
- package/src/createRule.ts +49 -0
- package/src/index.ts +17 -0
- package/src/rules/order-properties.ts +122 -0
- package/src/rules/sort-collections.ts +96 -0
- package/src/rules/valid-local-dependency.ts +73 -0
- package/src/rules/valid-package-def.ts +45 -0
- package/src/tests/globalSetup.js +7 -0
- package/{tests/lib/rules/order-properties.js → src/tests/rules/order-properties.test.ts} +5 -16
- package/src/tests/rules/ruleTester.ts +17 -0
- package/{tests/lib/rules/sort-collections.js → src/tests/rules/sort-collections.test.ts} +2 -8
- package/{tests/lib/rules/valid-local-dependency.js → src/tests/rules/valid-local-dependency.test.ts} +33 -45
- package/{tests/lib/rules/valid-package-def.js → src/tests/rules/valid-package-def.test.ts} +2 -12
- package/tsconfig.json +13 -0
- package/vitest.config.ts +15 -0
- package/tests/lib/rules/ruleTester.js +0 -7
- /package/{tests/lib → src/tests}/__fixtures__/invalid-top-level-property-order/package.json +0 -0
- /package/{tests/lib → src/tests}/__fixtures__/unalphabetized-collections/package.json +0 -0
- /package/{tests/lib → src/tests}/__fixtures__/valid-local-dependency/gotcha/package.json/gotcha/package.json +0 -0
- /package/{tests/lib → src/tests}/__fixtures__/valid-local-dependency/package.json +0 -0
|
@@ -1,75 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const createRule_js_1 = require("../createRule.js");
|
|
9
8
|
//------------------------------------------------------------------------------
|
|
10
9
|
// Rule Definition
|
|
11
10
|
//------------------------------------------------------------------------------
|
|
12
|
-
|
|
13
|
-
module.exports = createRule({
|
|
11
|
+
exports.default = (0, createRule_js_1.createRule)({
|
|
14
12
|
meta: {
|
|
15
13
|
docs: {
|
|
16
|
-
description:
|
|
17
|
-
'Checks existence of local dependencies in the package.json',
|
|
14
|
+
description: 'Checks existence of local dependencies in the package.json',
|
|
18
15
|
category: 'Best Practices',
|
|
19
16
|
recommended: true
|
|
20
17
|
}
|
|
21
18
|
},
|
|
22
|
-
|
|
23
|
-
create: function(context) {
|
|
19
|
+
create: function (context) {
|
|
24
20
|
return {
|
|
25
21
|
'Program:exit'() {
|
|
26
22
|
const original = JSON.parse(context.sourceCode.text);
|
|
27
|
-
const {
|
|
28
|
-
dependencies,
|
|
29
|
-
peerDependencies,
|
|
30
|
-
devDependencies
|
|
31
|
-
} = original;
|
|
32
|
-
|
|
23
|
+
const { dependencies, peerDependencies, devDependencies } = original;
|
|
33
24
|
const depObjs = [
|
|
34
25
|
Object.entries(dependencies || {}),
|
|
35
26
|
Object.entries(peerDependencies || {}),
|
|
36
27
|
Object.entries(devDependencies || {})
|
|
37
28
|
];
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
context
|
|
44
|
-
.getFilename()
|
|
45
|
-
.replace(/package\.json/g, '/'),
|
|
46
|
-
value.replace(new RegExp(localPath, 'g'), ''),
|
|
47
|
-
'/package.json'
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
try {
|
|
51
|
-
if (!require.resolve(filePath)) {
|
|
52
|
-
context.report({
|
|
53
|
-
node: context.sourceCode.ast,
|
|
54
|
-
message: `The package ${key} does not exist given the specified path: ${value}.`
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
} catch (e) {
|
|
29
|
+
depObjs.forEach(obj => obj.forEach(([key, value]) => {
|
|
30
|
+
const response = (localPath) => {
|
|
31
|
+
const filePath = path_1.default.join(context.filename.replace(/package\.json/g, '/'), value.replace(new RegExp(localPath, 'g'), ''), '/package.json');
|
|
32
|
+
try {
|
|
33
|
+
if (!require.resolve(filePath)) {
|
|
58
34
|
context.report({
|
|
59
35
|
node: context.sourceCode.ast,
|
|
60
36
|
message: `The package ${key} does not exist given the specified path: ${value}.`
|
|
61
37
|
});
|
|
62
38
|
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
if (value.startsWith('link:')) {
|
|
66
|
-
response('link:');
|
|
67
39
|
}
|
|
68
|
-
|
|
69
|
-
|
|
40
|
+
catch (e) {
|
|
41
|
+
context.report({
|
|
42
|
+
node: context.sourceCode.ast,
|
|
43
|
+
message: `The package ${key} does not exist given the specified path: ${value}.`
|
|
44
|
+
});
|
|
70
45
|
}
|
|
71
|
-
}
|
|
72
|
-
|
|
46
|
+
};
|
|
47
|
+
if (value.startsWith('link:')) {
|
|
48
|
+
response('link:');
|
|
49
|
+
}
|
|
50
|
+
if (value.startsWith('file:')) {
|
|
51
|
+
response('file:');
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
73
54
|
}
|
|
74
55
|
};
|
|
75
56
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valid-package-def.d.ts","sourceRoot":"","sources":["../../src/rules/valid-package-def.ts"],"names":[],"mappings":";;;;AAgBA,wBA4BG"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
//------------------------------------------------------------------------------
|
|
6
|
-
// Rule Definition
|
|
7
|
-
//------------------------------------------------------------------------------
|
|
8
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const package_json_validator_1 = require("package-json-validator");
|
|
4
|
+
const createRule_js_1 = require("../createRule.js");
|
|
9
5
|
// package-json-validator does not correctly recognize shorthand for repositories and alternate dependency statements, so we discard those values.
|
|
10
6
|
// it also enforces a stricter code for NPM than is really appropriate,
|
|
11
7
|
// so we disable some other errors here.
|
|
@@ -14,35 +10,24 @@ const unusedErrorPatterns = [
|
|
|
14
10
|
/^Invalid version range for .+?: file:/i,
|
|
15
11
|
/^author field should have name/i
|
|
16
12
|
];
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
unusedErrorPatterns.every(pattern => !pattern.test(errorText));
|
|
20
|
-
|
|
21
|
-
module.exports = createRule({
|
|
13
|
+
const isUsableError = (errorText) => unusedErrorPatterns.every(pattern => !pattern.test(errorText));
|
|
14
|
+
exports.default = (0, createRule_js_1.createRule)({
|
|
22
15
|
meta: {
|
|
23
16
|
docs: {
|
|
24
|
-
description:
|
|
25
|
-
'Enforce that package.json has all properties required by NPM spec',
|
|
17
|
+
description: 'Enforce that package.json has all properties required by NPM spec',
|
|
26
18
|
category: 'Best Practices',
|
|
27
19
|
recommended: true
|
|
28
20
|
}
|
|
29
21
|
},
|
|
30
|
-
|
|
31
|
-
create: function(context) {
|
|
22
|
+
create: function (context) {
|
|
32
23
|
return {
|
|
33
24
|
'Program:exit'() {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
message &&
|
|
41
|
-
context.report({
|
|
42
|
-
node: context.sourceCode.ast,
|
|
43
|
-
message
|
|
44
|
-
})
|
|
45
|
-
);
|
|
25
|
+
const validation = package_json_validator_1.PJV.validate(context.sourceCode.text);
|
|
26
|
+
validation.errors?.filter(isUsableError).forEach(message => message &&
|
|
27
|
+
context.report({
|
|
28
|
+
node: context.sourceCode.ast,
|
|
29
|
+
message
|
|
30
|
+
}));
|
|
46
31
|
}
|
|
47
32
|
};
|
|
48
33
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-properties.test.d.ts","sourceRoot":"","sources":["../../../src/tests/rules/order-properties.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const order_properties_1 = __importDefault(require("../../rules/order-properties"));
|
|
7
|
+
const ruleTester_1 = require("./ruleTester");
|
|
8
|
+
ruleTester_1.ruleTester.run('order-properties', order_properties_1.default, {
|
|
9
|
+
invalid: [
|
|
10
|
+
{
|
|
11
|
+
code: `{
|
|
12
|
+
"name": "invalid-top-level-property-order",
|
|
13
|
+
"scripts": {
|
|
14
|
+
"test": "tape"
|
|
15
|
+
},
|
|
16
|
+
"version": "1.0.0",
|
|
17
|
+
"description": "npm made me this way",
|
|
18
|
+
"main": "index.js",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/fake/github.git"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
`,
|
|
25
|
+
errors: [
|
|
26
|
+
{
|
|
27
|
+
message: 'Package top-level properties are not ordered in the npm standard way. Run the ESLint auto-fixer to correct.'
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
filename: 'package.json',
|
|
31
|
+
output: `{
|
|
32
|
+
"name": "invalid-top-level-property-order",
|
|
33
|
+
"version": "1.0.0",
|
|
34
|
+
"description": "npm made me this way",
|
|
35
|
+
"main": "index.js",
|
|
36
|
+
"scripts": {
|
|
37
|
+
"test": "tape"
|
|
38
|
+
},
|
|
39
|
+
"repository": {
|
|
40
|
+
"type": "git",
|
|
41
|
+
"url": "git+https://github.com/fake/github.git"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
`
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
code: `{
|
|
48
|
+
"name": "invalid-top-level-property-order",
|
|
49
|
+
"scripts": {
|
|
50
|
+
"test": "tape"
|
|
51
|
+
},
|
|
52
|
+
"version": "1.0.0",
|
|
53
|
+
"description": "npm made me this way",
|
|
54
|
+
"main": "index.js",
|
|
55
|
+
"repository": {
|
|
56
|
+
"type": "git",
|
|
57
|
+
"url": "git+https://github.com/fake/github.git"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
`,
|
|
61
|
+
errors: [
|
|
62
|
+
{
|
|
63
|
+
message: 'Package top-level properties are not ordered in the npm standard way. Run the ESLint auto-fixer to correct.'
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
filename: 'package.json',
|
|
67
|
+
options: [{ order: 'legacy' }],
|
|
68
|
+
output: `{
|
|
69
|
+
"name": "invalid-top-level-property-order",
|
|
70
|
+
"version": "1.0.0",
|
|
71
|
+
"description": "npm made me this way",
|
|
72
|
+
"main": "index.js",
|
|
73
|
+
"scripts": {
|
|
74
|
+
"test": "tape"
|
|
75
|
+
},
|
|
76
|
+
"repository": {
|
|
77
|
+
"type": "git",
|
|
78
|
+
"url": "git+https://github.com/fake/github.git"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
`
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
code: `{
|
|
85
|
+
"name": "invalid-top-level-property-order",
|
|
86
|
+
"scripts": {
|
|
87
|
+
"test": "tape"
|
|
88
|
+
},
|
|
89
|
+
"version": "1.0.0",
|
|
90
|
+
"description": "npm made me this way",
|
|
91
|
+
"main": "index.js",
|
|
92
|
+
"repository": {
|
|
93
|
+
"type": "git",
|
|
94
|
+
"url": "git+https://github.com/fake/github.git"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
`,
|
|
98
|
+
errors: [
|
|
99
|
+
{
|
|
100
|
+
message: 'Package top-level properties are not ordered in the npm standard way. Run the ESLint auto-fixer to correct.'
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
filename: 'package.json',
|
|
104
|
+
options: [{ order: 'sort-package-json' }],
|
|
105
|
+
output: `{
|
|
106
|
+
"name": "invalid-top-level-property-order",
|
|
107
|
+
"version": "1.0.0",
|
|
108
|
+
"description": "npm made me this way",
|
|
109
|
+
"repository": {
|
|
110
|
+
"type": "git",
|
|
111
|
+
"url": "git+https://github.com/fake/github.git"
|
|
112
|
+
},
|
|
113
|
+
"main": "index.js",
|
|
114
|
+
"scripts": {
|
|
115
|
+
"test": "tape"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
`
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
code: `{
|
|
122
|
+
"name": "invalid-top-level-property-order",
|
|
123
|
+
"scripts": {
|
|
124
|
+
"test": "tape"
|
|
125
|
+
},
|
|
126
|
+
"version": "1.0.0",
|
|
127
|
+
"description": "npm made me this way",
|
|
128
|
+
"main": "index.js",
|
|
129
|
+
"repository": {
|
|
130
|
+
"type": "git",
|
|
131
|
+
"url": "git+https://github.com/fake/github.git"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
`,
|
|
135
|
+
errors: [
|
|
136
|
+
{
|
|
137
|
+
message: 'Package top-level properties are not ordered in the npm standard way. Run the ESLint auto-fixer to correct.'
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
filename: 'package.json',
|
|
141
|
+
options: [{ order: ['version', 'name', 'repository'] }],
|
|
142
|
+
output: `{
|
|
143
|
+
"version": "1.0.0",
|
|
144
|
+
"name": "invalid-top-level-property-order",
|
|
145
|
+
"repository": {
|
|
146
|
+
"type": "git",
|
|
147
|
+
"url": "git+https://github.com/fake/github.git"
|
|
148
|
+
},
|
|
149
|
+
"description": "npm made me this way",
|
|
150
|
+
"main": "index.js",
|
|
151
|
+
"scripts": {
|
|
152
|
+
"test": "tape"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
`
|
|
156
|
+
}
|
|
157
|
+
],
|
|
158
|
+
valid: [
|
|
159
|
+
`{
|
|
160
|
+
"name": "treat-yo-self",
|
|
161
|
+
"version": "1.1.1",
|
|
162
|
+
"description": "Once a year.",
|
|
163
|
+
"keywords": [
|
|
164
|
+
"modern",
|
|
165
|
+
"master"
|
|
166
|
+
]
|
|
167
|
+
}`,
|
|
168
|
+
`{
|
|
169
|
+
"name": "treat-yo-self",
|
|
170
|
+
"version": "0.1.0",
|
|
171
|
+
"private": true,
|
|
172
|
+
"description": "Once a year.",
|
|
173
|
+
"keywords": [
|
|
174
|
+
"modern",
|
|
175
|
+
"master"
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
`,
|
|
179
|
+
{
|
|
180
|
+
code: `{
|
|
181
|
+
"version": "1.1.1",
|
|
182
|
+
"name": "treat-yo-self",
|
|
183
|
+
"description": "Once a year.",
|
|
184
|
+
"keywords": [
|
|
185
|
+
"modern",
|
|
186
|
+
"master"
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
`,
|
|
190
|
+
options: [{ order: ['version', 'name'] }]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
code: `{
|
|
194
|
+
"name": "treat-yo-self",
|
|
195
|
+
"version": "1.1.1",
|
|
196
|
+
"description": "Once a year.",
|
|
197
|
+
"keywords": [
|
|
198
|
+
"modern",
|
|
199
|
+
"master"
|
|
200
|
+
],
|
|
201
|
+
"exports": {
|
|
202
|
+
"import": "./index.js",
|
|
203
|
+
"require": "./index.js"
|
|
204
|
+
},
|
|
205
|
+
"main": "index.js"
|
|
206
|
+
}`,
|
|
207
|
+
options: [{ order: 'sort-package-json' }]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
code: `{
|
|
211
|
+
"name": "treat-yo-self",
|
|
212
|
+
"version": "1.1.1",
|
|
213
|
+
"description": "Once a year.",
|
|
214
|
+
"main": "index.js",
|
|
215
|
+
"exports": {
|
|
216
|
+
"import": "./index.js",
|
|
217
|
+
"require": "./index.js"
|
|
218
|
+
}
|
|
219
|
+
}`,
|
|
220
|
+
options: [{ order: 'legacy' }]
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RuleTester } from 'eslint';
|
|
2
|
+
import { PackageJsonRuleModule } from '../../createRule';
|
|
3
|
+
export type JsonRuleTester = RuleTester & {
|
|
4
|
+
run: (name: string, rule: PackageJsonRuleModule, tests: {
|
|
5
|
+
valid?: Array<string | RuleTester.ValidTestCase> | undefined;
|
|
6
|
+
invalid?: RuleTester.InvalidTestCase[] | undefined;
|
|
7
|
+
}) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const ruleTester: JsonRuleTester;
|
|
10
|
+
//# sourceMappingURL=ruleTester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleTester.d.ts","sourceRoot":"","sources":["../../../src/tests/rules/ruleTester.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG;IACtC,GAAG,EAAE,CACD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE;QACH,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;QAC7D,OAAO,CAAC,EAAE,UAAU,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC;KACtD,KACA,IAAI,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,UAAU,gBAEH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-collections.test.d.ts","sourceRoot":"","sources":["../../../src/tests/rules/sort-collections.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const sort_collections_1 = __importDefault(require("../../rules/sort-collections"));
|
|
7
|
+
const ruleTester_js_1 = require("./ruleTester.js");
|
|
8
|
+
//------------------------------------------------------------------------------
|
|
9
|
+
// Tests
|
|
10
|
+
//------------------------------------------------------------------------------
|
|
11
|
+
ruleTester_js_1.ruleTester.run('sort-collections', sort_collections_1.default, {
|
|
12
|
+
valid: [
|
|
13
|
+
{
|
|
14
|
+
code: `{
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "webpack",
|
|
17
|
+
"watch": "webpack-dev-server"
|
|
18
|
+
}
|
|
19
|
+
}`,
|
|
20
|
+
filename: 'package.json'
|
|
21
|
+
},
|
|
22
|
+
// ignore if custom include rule
|
|
23
|
+
{
|
|
24
|
+
code: `{
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "webpack",
|
|
27
|
+
"watch": "webpack-dev-server"
|
|
28
|
+
}
|
|
29
|
+
}`,
|
|
30
|
+
filename: 'package.json',
|
|
31
|
+
options: [['devDependencies']]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
code: `{
|
|
35
|
+
"scripts": { "watch": "out of order...", "build": "but okay" }
|
|
36
|
+
}`,
|
|
37
|
+
filename: 'not-a-package.json',
|
|
38
|
+
options: [['devDependencies']]
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
invalid: [
|
|
42
|
+
{
|
|
43
|
+
code: `{
|
|
44
|
+
"scripts": {
|
|
45
|
+
"watch": "webpack-dev-server",
|
|
46
|
+
"build": "webpack"
|
|
47
|
+
}
|
|
48
|
+
}`,
|
|
49
|
+
filename: 'package.json',
|
|
50
|
+
errors: [
|
|
51
|
+
{
|
|
52
|
+
message: 'Package scripts are not alphabetized',
|
|
53
|
+
type: 'JSONProperty'
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
output: `{
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "webpack",
|
|
59
|
+
"watch": "webpack-dev-server"
|
|
60
|
+
}
|
|
61
|
+
}`
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valid-local-dependency.test.d.ts","sourceRoot":"","sources":["../../../src/tests/rules/valid-local-dependency.test.ts"],"names":[],"mappings":""}
|