eslint-plugin-node-dependencies 0.5.0 → 0.7.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/README.md CHANGED
@@ -125,6 +125,7 @@ The rules with the following star :star: are included in the `plugin:node-depend
125
125
 
126
126
  | Rule ID | Description | |
127
127
  |:--------|:------------|:---|
128
+ | [node-dependencies/absolute-version](https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/absolute-version.html) | require or disallow absolute version of dependency. | |
128
129
  | [node-dependencies/no-deprecated](https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/no-deprecated.html) | disallow having dependencies on deprecate packages. | |
129
130
 
130
131
  ### Deprecated
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsonc_eslint_parser_1 = require("jsonc-eslint-parser");
4
+ const utils_1 = require("../utils");
5
+ const ast_utils_1 = require("../utils/ast-utils");
6
+ const regexp_1 = require("../utils/regexp");
7
+ const semver_1 = require("../utils/semver");
8
+ const PREFERS = ["always", "never", "ignore"];
9
+ const SCHEMA_FOR_DEPS_PROPERTIES = {
10
+ dependencies: { enum: PREFERS },
11
+ peerDependencies: { enum: PREFERS },
12
+ optionalDependencies: { enum: PREFERS },
13
+ devDependencies: { enum: PREFERS },
14
+ };
15
+ const DEFAULT = {
16
+ dependencies: "ignore",
17
+ peerDependencies: "ignore",
18
+ optionalDependencies: "ignore",
19
+ devDependencies: "always",
20
+ };
21
+ function stringToOption(option) {
22
+ return {
23
+ dependencies: option,
24
+ peerDependencies: option,
25
+ optionalDependencies: option,
26
+ devDependencies: option,
27
+ };
28
+ }
29
+ function objectToOption(option, defaults) {
30
+ return {
31
+ dependencies: option.dependencies || defaults.dependencies,
32
+ peerDependencies: option.peerDependencies || defaults.peerDependencies,
33
+ optionalDependencies: option.optionalDependencies || defaults.optionalDependencies,
34
+ devDependencies: option.devDependencies || defaults.devDependencies,
35
+ };
36
+ }
37
+ function parseOption(option) {
38
+ if (!option) {
39
+ return () => DEFAULT;
40
+ }
41
+ if (typeof option === "string") {
42
+ const objectOption = stringToOption(option);
43
+ return () => objectOption;
44
+ }
45
+ const baseOption = objectToOption(option, DEFAULT);
46
+ if (!option.overridePackages) {
47
+ return () => baseOption;
48
+ }
49
+ const overridePackages = Object.entries(option.overridePackages).map(([packageName, opt]) => {
50
+ const regexp = (0, regexp_1.toRegExp)(packageName);
51
+ return Object.assign({ test: (s) => regexp.test(s) }, (typeof opt === "string"
52
+ ? stringToOption(opt)
53
+ : objectToOption(opt, baseOption)));
54
+ });
55
+ return (name) => {
56
+ for (const overridePackage of overridePackages) {
57
+ if (overridePackage.test(name)) {
58
+ return overridePackage;
59
+ }
60
+ }
61
+ return baseOption;
62
+ };
63
+ }
64
+ exports.default = (0, utils_1.createRule)("absolute-version", {
65
+ meta: {
66
+ docs: {
67
+ description: "require or disallow absolute version of dependency.",
68
+ category: "Best Practices",
69
+ recommended: false,
70
+ },
71
+ schema: [
72
+ {
73
+ oneOf: [
74
+ { enum: PREFERS.filter((p) => p !== "ignore") },
75
+ {
76
+ type: "object",
77
+ properties: Object.assign(Object.assign({}, SCHEMA_FOR_DEPS_PROPERTIES), { overridePackages: {
78
+ type: "object",
79
+ patternProperties: {
80
+ "^(?:\\S+)$": {
81
+ oneOf: [
82
+ { enum: PREFERS },
83
+ {
84
+ type: "object",
85
+ properties: SCHEMA_FOR_DEPS_PROPERTIES,
86
+ additionalProperties: false,
87
+ },
88
+ ],
89
+ },
90
+ },
91
+ minProperties: 1,
92
+ additionalProperties: false,
93
+ } }),
94
+ additionalProperties: false,
95
+ },
96
+ ],
97
+ },
98
+ ],
99
+ messages: {},
100
+ type: "suggestion",
101
+ },
102
+ create(context) {
103
+ const getOption = parseOption(context.options[0]);
104
+ function defineVisitor(visitName) {
105
+ return (node) => {
106
+ const ver = (0, jsonc_eslint_parser_1.getStaticJSONValue)(node.value);
107
+ if (typeof ver !== "string" || ver == null) {
108
+ return;
109
+ }
110
+ const name = String((0, ast_utils_1.getKeyFromJSONProperty)(node));
111
+ const option = getOption(name)[visitName];
112
+ const semver = (0, semver_1.getSemverRange)(ver);
113
+ if (semver == null) {
114
+ return;
115
+ }
116
+ if (option === "always") {
117
+ if (isAbsoluteVersion(semver)) {
118
+ return;
119
+ }
120
+ context.report({
121
+ loc: node.value.loc,
122
+ message: "Use the absolute version instead.",
123
+ });
124
+ }
125
+ else if (option === "never") {
126
+ if (!isAbsoluteVersion(semver)) {
127
+ return;
128
+ }
129
+ context.report({
130
+ loc: node.value.loc,
131
+ message: "Do not use the absolute version.",
132
+ });
133
+ }
134
+ };
135
+ }
136
+ return (0, utils_1.defineJsonVisitor)({
137
+ dependencies: defineVisitor("dependencies"),
138
+ peerDependencies: defineVisitor("peerDependencies"),
139
+ optionalDependencies: defineVisitor("optionalDependencies"),
140
+ devDependencies: defineVisitor("devDependencies"),
141
+ });
142
+ },
143
+ });
144
+ function isAbsoluteVersion(semver) {
145
+ for (const comparators of semver.set) {
146
+ for (const comparator of comparators) {
147
+ if ((0, semver_1.isAnyComparator)(comparator)) {
148
+ return false;
149
+ }
150
+ if (comparator.operator !== "=" && comparator.operator !== "") {
151
+ return false;
152
+ }
153
+ }
154
+ }
155
+ return true;
156
+ }
@@ -93,10 +93,10 @@ function extractDependencies(metaList) {
93
93
  const dependencies = new Map();
94
94
  for (const meta of metaList) {
95
95
  for (const [m, v] of [
96
- ...meta_1.getDependencies(meta, "dependencies"),
97
- ...meta_1.getDependencies(meta, "peerDependencies"),
96
+ ...(0, meta_1.getDependencies)(meta, "dependencies"),
97
+ ...(0, meta_1.getDependencies)(meta, "peerDependencies"),
98
98
  ]) {
99
- const range = semver_2.getSemverRange(v);
99
+ const range = (0, semver_2.getSemverRange)(v);
100
100
  if (!range) {
101
101
  continue;
102
102
  }
@@ -111,7 +111,7 @@ function extractDependencies(metaList) {
111
111
  }
112
112
  return dependencies;
113
113
  }
114
- exports.default = utils_1.createRule("compat-engines", {
114
+ exports.default = (0, utils_1.createRule)("compat-engines", {
115
115
  meta: {
116
116
  docs: {
117
117
  description: "enforce the versions of the engines of the dependencies to be compatible.",
@@ -140,13 +140,13 @@ exports.default = utils_1.createRule("compat-engines", {
140
140
  const comparisonType = (_c = (_b = context.options[0]) === null || _b === void 0 ? void 0 : _b.comparisonType) !== null && _c !== void 0 ? _c : "normal";
141
141
  const selfEngines = new Map();
142
142
  function processMeta(ctx, meta) {
143
- const depEngines = meta_1.getEngines(meta);
143
+ const depEngines = (0, meta_1.getEngines)(meta);
144
144
  for (const module of ctx.engines) {
145
145
  const selfVer = selfEngines.get(module);
146
146
  const engineValue = depEngines.get(module);
147
147
  if (engineValue) {
148
148
  ctx.markAsProcessed(module);
149
- const depVer = semver_2.getSemverRange(engineValue);
149
+ const depVer = (0, semver_2.getSemverRange)(engineValue);
150
150
  if (depVer) {
151
151
  if (semver_1.default.subset(selfVer.adjust, buildAdjustRangeForDeps(comparisonType, depVer))) {
152
152
  ctx.markAsValid(module);
@@ -160,11 +160,11 @@ exports.default = utils_1.createRule("compat-engines", {
160
160
  }
161
161
  function processDependencyModule(ctx, name, ver, modules, node) {
162
162
  const currModules = [...modules, `${name}@${ver}`];
163
- processMeta(ctx, meta_1.getMetaFromNodeModules(name, ver, context));
163
+ processMeta(ctx, (0, meta_1.getMetaFromNodeModules)(name, ver, context));
164
164
  if (!ctx.hasInvalid() && ctx.isAllProcessed()) {
165
165
  return;
166
166
  }
167
- const metaData = meta_1.getMetaFromNpm(name, ver);
167
+ const metaData = (0, meta_1.getMetaFromNpm)(name, ver);
168
168
  for (const meta of metaData.cache) {
169
169
  processMeta(ctx, meta);
170
170
  if (!ctx.hasInvalid() && ctx.isAllProcessed()) {
@@ -183,7 +183,7 @@ exports.default = utils_1.createRule("compat-engines", {
183
183
  }
184
184
  for (const [module, allowedVers] of ctx.getInvalid()) {
185
185
  const selfVer = selfEngines.get(module);
186
- const depVer = semver_2.normalizeSemverRange(...allowedVers.values()) ||
186
+ const depVer = (0, semver_2.normalizeSemverRange)(...allowedVers.values()) ||
187
187
  [...allowedVers.values()].pop();
188
188
  if (semver_1.default.subset(selfVer.adjust, buildAdjustRangeForDeps(comparisonType, depVer))) {
189
189
  continue;
@@ -192,7 +192,7 @@ exports.default = utils_1.createRule("compat-engines", {
192
192
  loc: node.loc,
193
193
  message: `${currModules
194
194
  .map((m) => `"${m}"`)
195
- .join(" >> ")} is not compatible with "${module}@${semver_2.normalizeVer(selfVer.original)}". Allowed is: "${module}@${semver_2.normalizeVer(depVer)}"`,
195
+ .join(" >> ")} is not compatible with "${module}@${(0, semver_2.normalizeVer)(selfVer.original)}". Allowed is: "${module}@${(0, semver_2.normalizeVer)(depVer)}"`,
196
196
  });
197
197
  }
198
198
  if (ctx.isAllProcessed()) {
@@ -200,26 +200,26 @@ exports.default = utils_1.createRule("compat-engines", {
200
200
  }
201
201
  if (deep) {
202
202
  for (const [n, ranges] of extractDependencies(metaList)) {
203
- const v = semver_2.normalizeSemverRange(...ranges);
203
+ const v = (0, semver_2.normalizeSemverRange)(...ranges);
204
204
  if (v)
205
205
  processDependencyModule(ctx.nextContext(), n, v.raw, currModules, node);
206
206
  }
207
207
  }
208
208
  }
209
- return utils_1.compositingVisitors({
209
+ return (0, utils_1.compositingVisitors)({
210
210
  JSONExpressionStatement(node) {
211
211
  const expr = node.expression;
212
212
  if (expr.type !== "JSONObjectExpression") {
213
213
  return;
214
214
  }
215
- const enginesNode = expr.properties.find((p) => ast_utils_1.getKeyFromJSONProperty(p) === "engines");
215
+ const enginesNode = expr.properties.find((p) => (0, ast_utils_1.getKeyFromJSONProperty)(p) === "engines");
216
216
  if (!enginesNode) {
217
217
  return;
218
218
  }
219
- for (const [key, val] of meta_1.getEngines({
220
- engines: jsonc_eslint_parser_1.getStaticJSONValue(enginesNode.value),
219
+ for (const [key, val] of (0, meta_1.getEngines)({
220
+ engines: (0, jsonc_eslint_parser_1.getStaticJSONValue)(enginesNode.value),
221
221
  })) {
222
- const selfVer = semver_2.getSemverRange(val);
222
+ const selfVer = (0, semver_2.getSemverRange)(val);
223
223
  if (!selfVer) {
224
224
  continue;
225
225
  }
@@ -229,13 +229,13 @@ exports.default = utils_1.createRule("compat-engines", {
229
229
  });
230
230
  }
231
231
  },
232
- }, utils_1.defineJsonVisitor({
232
+ }, (0, utils_1.defineJsonVisitor)({
233
233
  "dependencies, peerDependencies"(node) {
234
234
  if (selfEngines.size === 0) {
235
235
  return;
236
236
  }
237
- const name = ast_utils_1.getKeyFromJSONProperty(node);
238
- const ver = jsonc_eslint_parser_1.getStaticJSONValue(node.value);
237
+ const name = (0, ast_utils_1.getKeyFromJSONProperty)(node);
238
+ const ver = (0, jsonc_eslint_parser_1.getStaticJSONValue)(node.value);
239
239
  if (typeof name !== "string" || typeof ver !== "string") {
240
240
  return;
241
241
  }
@@ -4,7 +4,7 @@ const jsonc_eslint_parser_1 = require("jsonc-eslint-parser");
4
4
  const utils_1 = require("../utils");
5
5
  const ast_utils_1 = require("../utils/ast-utils");
6
6
  const meta_1 = require("../utils/meta");
7
- exports.default = utils_1.createRule("no-deprecated", {
7
+ exports.default = (0, utils_1.createRule)("no-deprecated", {
8
8
  meta: {
9
9
  docs: {
10
10
  description: "disallow having dependencies on deprecate packages.",
@@ -29,18 +29,18 @@ exports.default = utils_1.createRule("no-deprecated", {
29
29
  return {};
30
30
  }
31
31
  const devDependencies = Boolean((_a = context.options[0]) === null || _a === void 0 ? void 0 : _a.devDependencies);
32
- return utils_1.defineJsonVisitor({
32
+ return (0, utils_1.defineJsonVisitor)({
33
33
  [devDependencies
34
34
  ? "dependencies, peerDependencies, devDependencies"
35
35
  : "dependencies, peerDependencies"](node) {
36
- const name = ast_utils_1.getKeyFromJSONProperty(node);
37
- const ver = jsonc_eslint_parser_1.getStaticJSONValue(node.value);
36
+ const name = (0, ast_utils_1.getKeyFromJSONProperty)(node);
37
+ const ver = (0, jsonc_eslint_parser_1.getStaticJSONValue)(node.value);
38
38
  if (typeof name !== "string" ||
39
39
  typeof ver !== "string" ||
40
40
  !ver) {
41
41
  return;
42
42
  }
43
- const meta = meta_1.getMetaFromNpm(name, ver).get();
43
+ const meta = (0, meta_1.getMetaFromNpm)(name, ver).get();
44
44
  const deprecated = meta && meta.length && meta[meta.length - 1].deprecated;
45
45
  if (deprecated) {
46
46
  context.report({
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("../utils");
7
7
  const compat_engines_1 = __importDefault(require("./compat-engines"));
8
- exports.default = utils_1.createRule("valid-engines", {
8
+ exports.default = (0, utils_1.createRule)("valid-engines", {
9
9
  meta: Object.assign(Object.assign({}, compat_engines_1.default.meta), { docs: Object.assign(Object.assign({}, compat_engines_1.default.meta.docs), { replacedBy: ["compat-engines"] }), deprecated: true }),
10
10
  create: compat_engines_1.default.create,
11
11
  });
@@ -4,7 +4,7 @@ const jsonc_eslint_parser_1 = require("jsonc-eslint-parser");
4
4
  const utils_1 = require("../utils");
5
5
  const ast_utils_1 = require("../utils/ast-utils");
6
6
  const semver_1 = require("../utils/semver");
7
- exports.default = utils_1.createRule("valid-semver", {
7
+ exports.default = (0, utils_1.createRule)("valid-semver", {
8
8
  meta: {
9
9
  docs: {
10
10
  description: "enforce versions that is valid as a semantic version.",
@@ -19,9 +19,9 @@ exports.default = utils_1.createRule("valid-semver", {
19
19
  if (!context.parserServices.isJSON) {
20
20
  return {};
21
21
  }
22
- return utils_1.defineJsonVisitor({
22
+ return (0, utils_1.defineJsonVisitor)({
23
23
  engines(node) {
24
- const ver = jsonc_eslint_parser_1.getStaticJSONValue(node.value);
24
+ const ver = (0, jsonc_eslint_parser_1.getStaticJSONValue)(node.value);
25
25
  if (typeof ver !== "string" || ver == null) {
26
26
  context.report({
27
27
  loc: node.value.loc,
@@ -29,7 +29,7 @@ exports.default = utils_1.createRule("valid-semver", {
29
29
  });
30
30
  return;
31
31
  }
32
- if (semver_1.getSemverRange(ver) == null) {
32
+ if ((0, semver_1.getSemverRange)(ver) == null) {
33
33
  context.report({
34
34
  loc: node.value.loc,
35
35
  message: `"${ver}" is invalid.`,
@@ -37,11 +37,11 @@ exports.default = utils_1.createRule("valid-semver", {
37
37
  }
38
38
  },
39
39
  "dependencies, peerDependencies, devDependencies"(node) {
40
- const name = ast_utils_1.getKeyFromJSONProperty(node);
40
+ const name = (0, ast_utils_1.getKeyFromJSONProperty)(node);
41
41
  if (typeof name !== "string") {
42
42
  return;
43
43
  }
44
- const ver = jsonc_eslint_parser_1.getStaticJSONValue(node.value);
44
+ const ver = (0, jsonc_eslint_parser_1.getStaticJSONValue)(node.value);
45
45
  if (typeof ver !== "string" || ver == null) {
46
46
  context.report({
47
47
  loc: node.value.loc,
@@ -52,7 +52,7 @@ exports.default = utils_1.createRule("valid-semver", {
52
52
  if (maybeDepId(ver)) {
53
53
  return;
54
54
  }
55
- if (semver_1.getSemverRange(ver) == null) {
55
+ if ((0, semver_1.getSemverRange)(ver) == null) {
56
56
  context.report({
57
57
  loc: node.value.loc,
58
58
  message: `"${ver}" is invalid.`,
@@ -10,7 +10,8 @@ function getKeyFromJSONProperty(node) {
10
10
  exports.getKeyFromJSONProperty = getKeyFromJSONProperty;
11
11
  function getKey(node) {
12
12
  let parent = node.parent;
13
- while (parent.type === "JSONUnaryExpression") {
13
+ while (parent.type === "JSONUnaryExpression" ||
14
+ parent.type === "JSONBinaryExpression") {
14
15
  parent = parent.parent;
15
16
  }
16
17
  if (parent.type === "JSONExpressionStatement") {
@@ -34,7 +34,7 @@ function defineJsonVisitor(visitor) {
34
34
  stack = {
35
35
  node,
36
36
  upper: stack,
37
- key: ast_utils_1.getKey(node),
37
+ key: (0, ast_utils_1.getKey)(node),
38
38
  };
39
39
  },
40
40
  "JSONObjectExpression, JSONArrayExpression:exit"() {
@@ -28,9 +28,9 @@ function getMetaFromNodeModules(name, ver, context) {
28
28
  const req = module_1.default.createRequire(relativeTo);
29
29
  const pkg = req(`${name}/package.json`);
30
30
  if (maybeMeta(pkg)) {
31
- const vr = semver_1.getSemverRange(ver);
31
+ const vr = (0, semver_1.getSemverRange)(ver);
32
32
  if (typeof pkg.version === "string" &&
33
- (!vr || semver_2.satisfies(pkg.version, vr))) {
33
+ (!vr || (0, semver_2.satisfies)(pkg.version, vr))) {
34
34
  return pkg;
35
35
  }
36
36
  }
@@ -46,7 +46,7 @@ function getMetaFromNpm(name, ver) {
46
46
  if (trimmed.startsWith("npm:")) {
47
47
  let parsed = null;
48
48
  try {
49
- parsed = npm_package_arg_1.default(`${trimmed.slice(4).trim()}`);
49
+ parsed = (0, npm_package_arg_1.default)(`${trimmed.slice(4).trim()}`);
50
50
  }
51
51
  catch (_b) {
52
52
  }
@@ -64,9 +64,9 @@ function getMetaFromNpm(name, ver) {
64
64
  }
65
65
  exports.getMetaFromNpm = getMetaFromNpm;
66
66
  function getMetaFromNpmView(name, verOrTag) {
67
- const range = semver_1.getSemverRange(verOrTag);
67
+ const range = (0, semver_1.getSemverRange)(verOrTag);
68
68
  if (range) {
69
- const min = semver_2.minVersion(range);
69
+ const min = (0, semver_2.minVersion)(range);
70
70
  if (min) {
71
71
  const isTargetVersion = (meta) => {
72
72
  if (!meta.version) {
@@ -80,7 +80,7 @@ function getMetaFromNpmView(name, verOrTag) {
80
80
  const metaList = cache.data.meta.filter(isTargetVersion);
81
81
  let alive = cache.alive;
82
82
  if (!alive) {
83
- const maxNext = semver_1.maxNextVersion(range);
83
+ const maxNext = (0, semver_1.maxNextVersion)(range);
84
84
  if (maxNext) {
85
85
  alive = cache.data.meta.some((m) => m.version && maxNext.compare(m.version) <= 0);
86
86
  }
@@ -234,7 +234,7 @@ function makeDirs(dir) {
234
234
  }
235
235
  }
236
236
  function exec(command, args) {
237
- const result = child_process_1.spawnSync(command, args, {
237
+ const result = (0, child_process_1.spawnSync)(command, args, {
238
238
  windowsHide: true,
239
239
  maxBuffer: Infinity,
240
240
  });
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toRegExp = void 0;
4
+ function toRegExp(str) {
5
+ const regexp = parseRegExp(str);
6
+ if (regexp) {
7
+ return regexp;
8
+ }
9
+ return { test: (s) => s === str };
10
+ }
11
+ exports.toRegExp = toRegExp;
12
+ function parseRegExp(str) {
13
+ if (!str.startsWith("/")) {
14
+ return null;
15
+ }
16
+ const lastSlashIndex = str.lastIndexOf("/");
17
+ if (lastSlashIndex <= 1) {
18
+ return null;
19
+ }
20
+ return new RegExp(str.slice(1, lastSlashIndex), str.slice(lastSlashIndex + 1));
21
+ }
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.rules = void 0;
7
+ const absolute_version_1 = __importDefault(require("../rules/absolute-version"));
7
8
  const compat_engines_1 = __importDefault(require("../rules/compat-engines"));
8
9
  const no_deprecated_1 = __importDefault(require("../rules/no-deprecated"));
9
10
  const valid_engines_1 = __importDefault(require("../rules/valid-engines"));
10
11
  const valid_semver_1 = __importDefault(require("../rules/valid-semver"));
11
12
  exports.rules = [
13
+ absolute_version_1.default,
12
14
  compat_engines_1.default,
13
15
  no_deprecated_1.default,
14
16
  valid_engines_1.default,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.maxNextVersion = exports.normalizeSemverRange = exports.normalizeVer = exports.getSemverRange = void 0;
3
+ exports.isAnyComparator = exports.maxNextVersion = exports.normalizeSemverRange = exports.normalizeVer = exports.getSemverRange = void 0;
4
4
  const semver_1 = require("semver");
5
5
  function getSemverRange(value) {
6
6
  if (value == null) {
@@ -37,14 +37,14 @@ function normalizeSemverRange(...values) {
37
37
  let consume = false;
38
38
  let target = { range: normalizedVer, comparators };
39
39
  for (const [k, data] of map) {
40
- if (semver_1.subset(target.range, data.range)) {
40
+ if ((0, semver_1.subset)(target.range, data.range)) {
41
41
  consume = true;
42
42
  break;
43
43
  }
44
- if (semver_1.subset(data.range, target.range)) {
44
+ if ((0, semver_1.subset)(data.range, target.range)) {
45
45
  map.delete(k);
46
46
  }
47
- if (semver_1.intersects(target.range, data.range)) {
47
+ if ((0, semver_1.intersects)(target.range, data.range)) {
48
48
  const newComparators = joinComparators(comparators, data.comparators);
49
49
  if (newComparators) {
50
50
  target = {
@@ -86,10 +86,10 @@ function normalizeComparators(comparators) {
86
86
  if (rangeComparator.min.operator === ">=" &&
87
87
  rangeComparator.max.operator === "<") {
88
88
  if (rangeComparator.min.semver.major !== 0 &&
89
- semver_1.inc(rangeComparator.min.semver.version, "premajor") ===
89
+ (0, semver_1.inc)(rangeComparator.min.semver.version, "premajor") ===
90
90
  rangeComparator.max.semver.version)
91
91
  return `^${rangeComparator.min.semver.version}`;
92
- if (semver_1.inc(rangeComparator.min.semver.version, "preminor") ===
92
+ if ((0, semver_1.inc)(rangeComparator.min.semver.version, "preminor") ===
93
93
  rangeComparator.max.semver.version)
94
94
  return `~${rangeComparator.min.semver.version}`;
95
95
  }
@@ -171,6 +171,9 @@ function maxNextVersion(range) {
171
171
  let max = null;
172
172
  let hasMin = false;
173
173
  for (const comparator of comparators) {
174
+ if (isAnyComparator(comparator)) {
175
+ return null;
176
+ }
174
177
  const compVer = new semver_1.SemVer(comparator.semver.version);
175
178
  if (comparator.operator === "<=" ||
176
179
  comparator.operator === "<" ||
@@ -178,7 +181,7 @@ function maxNextVersion(range) {
178
181
  if (comparator.operator === "<=") {
179
182
  compVer.inc("prerelease");
180
183
  }
181
- if (!max || semver_1.lt(max, compVer)) {
184
+ if (!max || (0, semver_1.lt)(max, compVer)) {
182
185
  max = compVer;
183
186
  }
184
187
  }
@@ -188,7 +191,7 @@ function maxNextVersion(range) {
188
191
  }
189
192
  }
190
193
  if (max) {
191
- if (!maxVer || semver_1.lt(maxVer, max)) {
194
+ if (!maxVer || (0, semver_1.lt)(maxVer, max)) {
192
195
  maxVer = max;
193
196
  }
194
197
  }
@@ -201,3 +204,7 @@ function maxNextVersion(range) {
201
204
  return maxVer;
202
205
  }
203
206
  exports.maxNextVersion = maxNextVersion;
207
+ function isAnyComparator(comparator) {
208
+ return !comparator.semver.version;
209
+ }
210
+ exports.isAnyComparator = isAnyComparator;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-node-dependencies",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "ESLint plugin to check Node.js dependencies.",
5
5
  "engines": {
6
6
  "node": "^12 || >=14"
@@ -41,6 +41,7 @@
41
41
  "json"
42
42
  ],
43
43
  "author": "Yosuke Ota (https://github.com/ota-meshi)",
44
+ "funding": "https://github.com/sponsors/ota-meshi",
44
45
  "license": "MIT",
45
46
  "bugs": {
46
47
  "url": "https://github.com/ota-meshi/eslint-plugin-node-dependencies/issues"
@@ -50,49 +51,50 @@
50
51
  "eslint": ">=6.0.0"
51
52
  },
52
53
  "devDependencies": {
53
- "@ota-meshi/eslint-plugin": "^0.8.0",
54
+ "@ota-meshi/eslint-plugin": "^0.10.0",
54
55
  "@types/chai": "^4.2.18",
55
- "@types/eslint": "^7.2.0",
56
+ "@types/eslint": "^8.0.0",
56
57
  "@types/eslint-scope": "^3.7.0",
57
58
  "@types/eslint-visitor-keys": "^1.0.0",
58
- "@types/estree": "^0.0.50",
59
+ "@types/estree": "^0.0.51",
59
60
  "@types/mocha": "^9.0.0",
60
- "@types/node": "^14.14.39",
61
+ "@types/node": "^16.0.0",
61
62
  "@types/npm-package-arg": "^6.1.1",
62
63
  "@types/semver": "^7.3.8",
63
- "@typescript-eslint/eslint-plugin": "^4.14.0",
64
- "@typescript-eslint/parser": "^4.14.0",
64
+ "@typescript-eslint/eslint-plugin": "^5.0.0",
65
+ "@typescript-eslint/parser": "^5.0.0",
65
66
  "chai": "^4.3.4",
66
67
  "env-cmd": "^10.1.0",
67
- "eslint": "^7.3.0",
68
+ "eslint": "^8.0.0",
68
69
  "eslint-config-prettier": "^8.0.0",
69
70
  "eslint-plugin-eslint-comments": "^3.2.0",
70
- "eslint-plugin-eslint-plugin": "^3.0.0",
71
- "eslint-plugin-json-schema-validator": "^1.0.9",
72
- "eslint-plugin-jsonc": "^1.0.0",
71
+ "eslint-plugin-eslint-plugin": "^4.0.0",
72
+ "eslint-plugin-json-schema-validator": "^2.0.0",
73
+ "eslint-plugin-jsonc": "^2.0.0",
73
74
  "eslint-plugin-node": "^11.1.0",
74
- "eslint-plugin-node-dependencies": "^0.4.0",
75
- "eslint-plugin-prettier": "^3.4.0",
75
+ "eslint-plugin-node-dependencies": "^0.6.0",
76
+ "eslint-plugin-prettier": "^4.0.0",
76
77
  "eslint-plugin-regexp": "^1.0.0",
77
- "eslint-plugin-vue": "^7.5.0",
78
- "eslint-plugin-yml": "^0.10.0",
78
+ "eslint-plugin-vue": "^8.0.0",
79
+ "eslint-plugin-yml": "^0.14.0",
79
80
  "eslint4b": "^7.3.1",
80
81
  "mocha": "^9.0.0",
81
82
  "mocha-chai-jest-snapshot": "^1.1.2",
82
83
  "nyc": "^15.1.0",
83
84
  "prettier": "^2.0.5",
84
85
  "raw-loader": "^4.0.1",
85
- "stylelint": "^13.6.1",
86
- "stylelint-config-standard": "^22.0.0",
87
- "stylelint-plugin-stylus": "^0.11.0",
86
+ "stylelint": "^14.0.0",
87
+ "stylelint-config-recommended-vue": "^1.0.0",
88
+ "stylelint-config-standard": "^25.0.0",
89
+ "stylelint-plugin-stylus": "^0.13.0",
88
90
  "ts-node": "^10.0.0",
89
91
  "typescript": "^4.0.0",
90
92
  "vue-eslint-editor": "^1.1.0",
91
- "vue-eslint-parser": "^7.4.1",
93
+ "vue-eslint-parser": "^8.0.0",
92
94
  "vuepress": "^1.5.2"
93
95
  },
94
96
  "dependencies": {
95
- "jsonc-eslint-parser": "^1.1.0",
97
+ "jsonc-eslint-parser": "^1 || ^2.0.2",
96
98
  "npm-package-arg": "^8.1.5",
97
99
  "semver": "^7.3.5"
98
100
  }