eslint-plugin-toml 0.3.0 → 0.4.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.
@@ -17,10 +17,7 @@ exports.default = (0, utils_1.createRule)("array-bracket-spacing", {
17
17
  },
18
18
  create(context) {
19
19
  return (0, utils_1.defineWrapperListener)(coreRule, context, {
20
- options: [
21
- context.options[0] || "always",
22
- ...context.options.slice(1),
23
- ],
20
+ options: [context.options[0] || "always", ...context.options.slice(1)],
24
21
  createListenerProxy(listener) {
25
22
  return {
26
23
  TOMLArray(node) {
@@ -219,8 +219,7 @@ exports.default = (0, utils_1.createRule)("indent", {
219
219
  let tokensOnSameLine = [];
220
220
  for (const token of sourceCode.getTokens(node, ITERATION_OPTS)) {
221
221
  if (tokensOnSameLine.length === 0 ||
222
- tokensOnSameLine[0].loc.start.line ===
223
- token.loc.start.line) {
222
+ tokensOnSameLine[0].loc.start.line === token.loc.start.line) {
224
223
  tokensOnSameLine.push(token);
225
224
  }
226
225
  else {
@@ -282,8 +281,7 @@ exports.default = (0, utils_1.createRule)("indent", {
282
281
  return null;
283
282
  }
284
283
  const offsetIndent = offset.offset;
285
- return (offset.expectedIndent =
286
- baseIndent + getIndentText(offsetIndent));
284
+ return (offset.expectedIndent = baseIndent + getIndentText(offsetIndent));
287
285
  }
288
286
  function processMissingLines(lineIndents) {
289
287
  const results = [];
@@ -366,15 +364,12 @@ exports.default = (0, utils_1.createRule)("indent", {
366
364
  }
367
365
  const indentCandidate = expectedIndents.find((indent, index) => {
368
366
  var _a, _b;
369
- if (indent.length <=
370
- commentLineIndent.actualIndent.length) {
367
+ if (indent.length <= commentLineIndent.actualIndent.length) {
371
368
  return true;
372
369
  }
373
370
  const prev = (_b = (_a = expectedIndents[index + 1]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : -1;
374
- return (prev <
375
- commentLineIndent.actualIndent.length &&
376
- commentLineIndent.actualIndent.length <
377
- indent.length);
371
+ return (prev < commentLineIndent.actualIndent.length &&
372
+ commentLineIndent.actualIndent.length < indent.length);
378
373
  });
379
374
  if (indentCandidate != null &&
380
375
  indentCandidate.length < expectedIndent.length) {
@@ -17,10 +17,7 @@ exports.default = (0, utils_1.createRule)("inline-table-curly-spacing", {
17
17
  },
18
18
  create(context) {
19
19
  return (0, utils_1.defineWrapperListener)(coreRule, context, {
20
- options: [
21
- context.options[0] || "always",
22
- ...context.options.slice(1),
23
- ],
20
+ options: [context.options[0] || "always", ...context.options.slice(1)],
24
21
  createListenerProxy(listener) {
25
22
  return {
26
23
  TOMLInlineTable(node) {
@@ -361,8 +361,7 @@ function create(context) {
361
361
  function verifyAlignment(node) {
362
362
  createGroups(node).forEach((group) => {
363
363
  const properties = group;
364
- if (properties.length > 0 &&
365
- isSingleLineProperties(properties)) {
364
+ if (properties.length > 0 && isSingleLineProperties(properties)) {
366
365
  verifyListSpacing(properties, multiLineOptions);
367
366
  }
368
367
  else {
@@ -376,9 +375,7 @@ function create(context) {
376
375
  TOMLKeyValue(node) {
377
376
  if (!isKeyValueProperty(node))
378
377
  return;
379
- verifySpacing(node, isSingleLine(node.parent)
380
- ? singleLineOptions
381
- : multiLineOptions);
378
+ verifySpacing(node, isSingleLine(node.parent) ? singleLineOptions : multiLineOptions);
382
379
  },
383
380
  };
384
381
  }
@@ -72,9 +72,7 @@ exports.default = (0, utils_1.createRule)("keys-order", {
72
72
  : startToken.range[1];
73
73
  const code = sourceCode.text.slice(start, body.range[1]);
74
74
  return [
75
- fixer.insertTextAfter(before, node.type === "TOMLInlineTable"
76
- ? code
77
- : `\n${code.trim()}`),
75
+ fixer.insertTextAfter(before, node.type === "TOMLInlineTable" ? code : `\n${code.trim()}`),
78
76
  fixer.removeRange([start, body.range[1]]),
79
77
  ];
80
78
  },
@@ -35,10 +35,7 @@ exports.default = (0, utils_1.createRule)("no-space-dots", {
35
35
  },
36
36
  messageId: "unexpectedBefore",
37
37
  fix(fixer) {
38
- return fixer.removeRange([
39
- prev.range[1],
40
- comma.range[0],
41
- ]);
38
+ return fixer.removeRange([prev.range[1], comma.range[0]]);
42
39
  },
43
40
  });
44
41
  }
@@ -50,10 +47,7 @@ exports.default = (0, utils_1.createRule)("no-space-dots", {
50
47
  },
51
48
  messageId: "unexpectedAfter",
52
49
  fix(fixer) {
53
- return fixer.removeRange([
54
- comma.range[1],
55
- next.range[0],
56
- ]);
50
+ return fixer.removeRange([comma.range[1], next.range[0]]);
57
51
  },
58
52
  });
59
53
  }
@@ -75,9 +75,7 @@ exports.default = (0, utils_1.createRule)("no-unreadable-number-separator", {
75
75
  let integer = false;
76
76
  if (text[index] === "0") {
77
77
  const maybeMark = text[index + 1];
78
- if (maybeMark === "x" ||
79
- maybeMark === "o" ||
80
- maybeMark === "b") {
78
+ if (maybeMark === "x" || maybeMark === "o" || maybeMark === "b") {
81
79
  index += 2;
82
80
  integer = true;
83
81
  }
@@ -90,10 +88,7 @@ exports.default = (0, utils_1.createRule)("no-unreadable-number-separator", {
90
88
  index = parsedInteger.index;
91
89
  if (text[index] === ".") {
92
90
  index++;
93
- const parsedFractional = parseCharCounts(text, index, [
94
- "E",
95
- "e",
96
- ]);
91
+ const parsedFractional = parseCharCounts(text, index, ["E", "e"]);
97
92
  fractionalCharCounts.push(...parsedFractional.charCounts);
98
93
  index = parsedFractional.index;
99
94
  }
@@ -24,9 +24,7 @@ exports.default = (0, utils_1.createRule)("padding-line-between-pairs", {
24
24
  const sourceCode = context.getSourceCode();
25
25
  function verifyPairs(prevNode, prevKeys, nextNode, nextKeys) {
26
26
  const needPadding = nextKeys.length !== prevKeys.length ||
27
- nextKeys
28
- .slice(0, -1)
29
- .some((key, index) => key !== prevKeys[index]);
27
+ nextKeys.slice(0, -1).some((key, index) => key !== prevKeys[index]);
30
28
  const tokens = sourceCode.getTokensBetween(prevNode, nextNode, {
31
29
  includeComments: true,
32
30
  });
@@ -34,7 +34,8 @@ exports.default = (0, utils_1.createRule)("precision-of-fractional-seconds", {
34
34
  function verifyText(node) {
35
35
  var _a, _b;
36
36
  const text = node.datetime;
37
- const fractional = ((_a = /^\d{4}-\d{2}-\d{2}[ Tt]\d{2}:\d{2}:\d{2}.(\d+)/u.exec(text)) === null || _a === void 0 ? void 0 : _a[1]) || ((_b = /^\d{2}:\d{2}:\d{2}.(\d+)/u.exec(text)) === null || _b === void 0 ? void 0 : _b[1]);
37
+ const fractional = ((_a = /^\d{4}-\d{2}-\d{2}[ Tt]\d{2}:\d{2}:\d{2}.(\d+)/u.exec(text)) === null || _a === void 0 ? void 0 : _a[1]) ||
38
+ ((_b = /^\d{2}:\d{2}:\d{2}.(\d+)/u.exec(text)) === null || _b === void 0 ? void 0 : _b[1]);
38
39
  if (!fractional) {
39
40
  return;
40
41
  }
@@ -1,4 +1,4 @@
1
- declare type MaxValues = {
1
+ type MaxValues = {
2
2
  "+": string;
3
3
  "-": string;
4
4
  "0x": string;
@@ -51,10 +51,7 @@ exports.default = (0, utils_1.createRule)("table-bracket-spacing", {
51
51
  tokenValue: token.value,
52
52
  },
53
53
  fix(fixer) {
54
- return fixer.removeRange([
55
- token.range[1],
56
- nextToken.range[0],
57
- ]);
54
+ return fixer.removeRange([token.range[1], nextToken.range[0]]);
58
55
  },
59
56
  });
60
57
  }
@@ -81,10 +78,7 @@ exports.default = (0, utils_1.createRule)("table-bracket-spacing", {
81
78
  tokenValue: token.value,
82
79
  },
83
80
  fix(fixer) {
84
- return fixer.removeRange([
85
- previousToken.range[1],
86
- token.range[0],
87
- ]);
81
+ return fixer.removeRange([previousToken.range[1], token.range[0]]);
88
82
  },
89
83
  });
90
84
  }
@@ -99,10 +99,7 @@ exports.default = (0, utils_1.createRule)("tables-order", {
99
99
  const code = sourceCode.text.slice(startToken.range[1], body.range[1]);
100
100
  return [
101
101
  fixer.insertTextBefore(after, `${code.trim()}\n`),
102
- fixer.removeRange([
103
- startToken.range[1],
104
- body.range[1],
105
- ]),
102
+ fixer.removeRange([startToken.range[1], body.range[1]]),
106
103
  ];
107
104
  },
108
105
  });
@@ -120,10 +117,7 @@ exports.default = (0, utils_1.createRule)("tables-order", {
120
117
  const code = sourceCode.text.slice(startToken.range[1], body.range[1]);
121
118
  return [
122
119
  fixer.insertTextAfter(before, `\n${code.trim()}`),
123
- fixer.removeRange([
124
- startToken.range[1],
125
- body.range[1],
126
- ]),
120
+ fixer.removeRange([startToken.range[1], body.range[1]]),
127
121
  ];
128
122
  },
129
123
  });
package/lib/types.d.ts CHANGED
@@ -87,8 +87,8 @@ export interface RuleContext {
87
87
  export declare namespace SourceCode {
88
88
  function splitLines(text: string): string[];
89
89
  }
90
- export declare type TOMLToken = AST.Token | AST.Comment;
91
- export declare type TOMLNodeOrToken = AST.TOMLNode | TOMLToken;
90
+ export type TOMLToken = AST.Token | AST.Comment;
91
+ export type TOMLNodeOrToken = AST.TOMLNode | TOMLToken;
92
92
  export interface SourceCode {
93
93
  text: string;
94
94
  ast: AST.TOMLProgram;
@@ -138,13 +138,13 @@ export interface SourceCode {
138
138
  getCommentsAfter(nodeOrToken: TOMLNodeOrToken): AST.Comment[];
139
139
  getCommentsInside(node: AST.TOMLNode): AST.Comment[];
140
140
  }
141
- declare type FilterPredicate = (tokenOrComment: TOMLToken) => boolean;
142
- declare type CursorWithSkipOptions = number | FilterPredicate | {
141
+ type FilterPredicate = (tokenOrComment: TOMLToken) => boolean;
142
+ type CursorWithSkipOptions = number | FilterPredicate | {
143
143
  includeComments?: boolean;
144
144
  filter?: FilterPredicate;
145
145
  skip?: number;
146
146
  };
147
- declare type CursorWithCountOptions = number | FilterPredicate | {
147
+ type CursorWithCountOptions = number | FilterPredicate | {
148
148
  includeComments?: boolean;
149
149
  filter?: FilterPredicate;
150
150
  count?: number;
@@ -155,22 +155,22 @@ interface ReportDescriptorOptionsBase {
155
155
  };
156
156
  fix?: null | ((fixer: RuleFixer) => null | Fix | IterableIterator<Fix> | Fix[]);
157
157
  }
158
- declare type SuggestionDescriptorMessage = {
158
+ type SuggestionDescriptorMessage = {
159
159
  desc: string;
160
160
  } | {
161
161
  messageId: string;
162
162
  };
163
- declare type SuggestionReportDescriptor = SuggestionDescriptorMessage & ReportDescriptorOptionsBase;
163
+ type SuggestionReportDescriptor = SuggestionDescriptorMessage & ReportDescriptorOptionsBase;
164
164
  interface ReportDescriptorOptions extends ReportDescriptorOptionsBase {
165
165
  suggest?: SuggestionReportDescriptor[] | null;
166
166
  }
167
- declare type ReportDescriptor = ReportDescriptorMessage & ReportDescriptorLocation & ReportDescriptorOptions;
168
- declare type ReportDescriptorMessage = {
167
+ type ReportDescriptor = ReportDescriptorMessage & ReportDescriptorLocation & ReportDescriptorOptions;
168
+ type ReportDescriptorMessage = {
169
169
  message: string;
170
170
  } | {
171
171
  messageId: string;
172
172
  };
173
- declare type ReportDescriptorLocation = {
173
+ type ReportDescriptorLocation = {
174
174
  node: TOMLNodeOrToken;
175
175
  } | {
176
176
  loc: SourceLocation | {
@@ -1,4 +1,4 @@
1
- export declare type CasingKind = "camelCase" | "kebab-case" | "PascalCase" | "snake_case" | "SCREAMING_SNAKE_CASE";
1
+ export type CasingKind = "camelCase" | "kebab-case" | "PascalCase" | "snake_case" | "SCREAMING_SNAKE_CASE";
2
2
  export declare const allowedCaseOptions: CasingKind[];
3
3
  export declare function kebabCase(str: string): string;
4
4
  export declare function isKebabCase(str: string): boolean;
@@ -3,7 +3,7 @@ import type * as ESTree from "estree";
3
3
  import type { Rule } from "eslint";
4
4
  import type { AST } from "toml-eslint-parser";
5
5
  export declare function createRule(ruleName: string, rule: PartialRuleModule): RuleModule;
6
- declare type CoreRuleListener = {
6
+ type CoreRuleListener = {
7
7
  [key: string]: (node: any) => void;
8
8
  };
9
9
  export declare function defineWrapperListener(coreRule: Rule.RuleModule, context: RuleContext, proxyOptions: {
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
package/package.json CHANGED
@@ -1,102 +1,103 @@
1
1
  {
2
- "name": "eslint-plugin-toml",
3
- "version": "0.3.0",
4
- "description": "This ESLint plugin provides linting rules for TOML.",
5
- "main": "lib/index.js",
6
- "files": [
7
- "lib"
8
- ],
9
- "engines": {
10
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
11
- },
12
- "scripts": {
13
- "prebuild": "npm run -s clean",
14
- "build": "npm run build:ts",
15
- "build:ts": "tsc --project ./tsconfig.build.json",
16
- "clean": "rimraf .nyc_output dist coverage",
17
- "lint": "eslint . --ext .js,.vue,.ts,.json,.md,.toml,.yaml,.yml --ignore-pattern playground",
18
- "eslint-fix": "eslint . --ext .js,.vue,.ts,.json,.md,.toml,.yaml,.yml --ignore-pattern playground --fix",
19
- "pretest:base": "cross-env DEBUG=eslint-plugin-toml*",
20
- "test:base": "mocha --require ts-node/register \"tests/src/**/*.ts\" --reporter dot --timeout 60000",
21
- "test": "npm run test:base",
22
- "cover": "nyc --reporter=lcov npm run test:base",
23
- "test:debug": "mocha --require ts-node/register --inspect \"tests/src/**/*.ts\" --reporter dot",
24
- "update": "node --require ts-node/register ./tools/update.ts && npm run eslint-fix",
25
- "new": "ts-node ./tools/new-rule.ts",
26
- "predocs:watch": "npm run build:ts",
27
- "docs:watch": "vuepress dev --debug docs",
28
- "docs:build": "npm run build:ts && vuepress build docs --no-cache",
29
- "preversion": "npm test && git add .",
30
- "version": "env-cmd -e version npm run update && git add ."
31
- },
32
- "repository": {
33
- "type": "git",
34
- "url": "git+https://github.com/ota-meshi/eslint-plugin-toml.git"
35
- },
36
- "keywords": [
37
- "eslint",
38
- "eslintplugin",
39
- "eslint-plugin",
40
- "toml",
41
- "lint",
42
- "formatter"
43
- ],
44
- "author": "Yosuke Ota",
45
- "license": "MIT",
46
- "bugs": {
47
- "url": "https://github.com/ota-meshi/eslint-plugin-toml/issues"
48
- },
49
- "homepage": "https://ota-meshi.github.io/eslint-plugin-toml/",
50
- "peerDependencies": {
51
- "eslint": ">=6.0.0"
52
- },
53
- "dependencies": {
54
- "debug": "^4.1.1",
55
- "lodash": "^4.17.19",
56
- "toml-eslint-parser": "^0.3.0"
57
- },
58
- "devDependencies": {
59
- "@ota-meshi/eslint-plugin": "^0.10.0",
60
- "@types/debug": "^4.1.5",
61
- "@types/eslint": "^7.2.0",
62
- "@types/eslint-scope": "^3.7.0",
63
- "@types/eslint-visitor-keys": "^1.0.0",
64
- "@types/estree": "^0.0.50",
65
- "@types/lodash": "^4.14.158",
66
- "@types/mocha": "^9.0.0",
67
- "@types/node": "^16.11.3",
68
- "@types/semver": "^7.3.1",
69
- "@typescript-eslint/eslint-plugin": "^5.0.0",
70
- "@typescript-eslint/parser": "^5.0.0",
71
- "cross-env": "^7.0.2",
72
- "env-cmd": "^10.1.0",
73
- "eslint": "^8.0.0",
74
- "eslint-config-prettier": "^8.0.0",
75
- "eslint-plugin-eslint-comments": "^3.2.0",
76
- "eslint-plugin-eslint-plugin": "^4.0.0",
77
- "eslint-plugin-json-schema-validator": "^1.0.0",
78
- "eslint-plugin-jsonc": "^2.0.0",
79
- "eslint-plugin-markdown": "^2.0.0-0",
80
- "eslint-plugin-node": "^11.1.0",
81
- "eslint-plugin-prettier": "^4.0.0",
82
- "eslint-plugin-regexp": "^1.0.0",
83
- "eslint-plugin-vue": "^8.0.0",
84
- "eslint-plugin-yml": "^0.10.0",
85
- "eslint4b": "^7.3.1",
86
- "espree": "^9.0.0",
87
- "mocha": "^9.0.0",
88
- "nyc": "^15.1.0",
89
- "prettier": "^2.2.1",
90
- "raw-loader": "^4.0.1",
91
- "semver": "^7.3.2",
92
- "stylelint": "^14.0.0",
93
- "stylelint-config-recommended-vue": "^1.0.0",
94
- "stylelint-config-standard": "^23.0.0",
95
- "stylelint-plugin-stylus": "^0.13.0",
96
- "ts-node": "^10.0.0",
97
- "typescript": "~4.4.3",
98
- "vue-eslint-editor": "^1.1.0",
99
- "vue-eslint-parser": "^8.0.0",
100
- "vuepress": "^1.5.2"
101
- }
2
+ "name": "eslint-plugin-toml",
3
+ "version": "0.4.0",
4
+ "description": "This ESLint plugin provides linting rules for TOML.",
5
+ "main": "lib/index.js",
6
+ "files": [
7
+ "lib"
8
+ ],
9
+ "engines": {
10
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
11
+ },
12
+ "scripts": {
13
+ "prebuild": "npm run -s clean",
14
+ "build": "npm run build:ts",
15
+ "build:ts": "tsc --project ./tsconfig.build.json",
16
+ "clean": "rimraf .nyc_output dist coverage",
17
+ "lint": "eslint . --ext .js,.vue,.ts,.json,.md,.toml,.yaml,.yml --ignore-pattern playground",
18
+ "eslint-fix": "eslint . --ext .js,.vue,.ts,.json,.md,.toml,.yaml,.yml --ignore-pattern playground --fix",
19
+ "pretest:base": "cross-env DEBUG=eslint-plugin-toml*",
20
+ "test:base": "mocha --require ts-node/register \"tests/src/**/*.ts\" --reporter dot --timeout 60000",
21
+ "test": "npm run test:base",
22
+ "cover": "nyc --reporter=lcov npm run test:base",
23
+ "test:debug": "mocha --require ts-node/register --inspect \"tests/src/**/*.ts\" --reporter dot",
24
+ "update": "node --require ts-node/register ./tools/update.ts && npm run eslint-fix",
25
+ "new": "ts-node ./tools/new-rule.ts",
26
+ "predocs:watch": "npm run build:ts",
27
+ "docs:watch": "vuepress dev --debug docs",
28
+ "docs:build": "npm run build:ts && vuepress build docs --no-cache",
29
+ "preversion": "npm test && git add .",
30
+ "version": "env-cmd -e version npm run update && git add ."
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/ota-meshi/eslint-plugin-toml.git"
35
+ },
36
+ "keywords": [
37
+ "eslint",
38
+ "eslintplugin",
39
+ "eslint-plugin",
40
+ "toml",
41
+ "lint",
42
+ "formatter"
43
+ ],
44
+ "author": "Yosuke Ota",
45
+ "funding": "https://github.com/sponsors/ota-meshi",
46
+ "license": "MIT",
47
+ "bugs": {
48
+ "url": "https://github.com/ota-meshi/eslint-plugin-toml/issues"
49
+ },
50
+ "homepage": "https://ota-meshi.github.io/eslint-plugin-toml/",
51
+ "peerDependencies": {
52
+ "eslint": ">=6.0.0"
53
+ },
54
+ "dependencies": {
55
+ "debug": "^4.1.1",
56
+ "lodash": "^4.17.19",
57
+ "toml-eslint-parser": "^0.5.0"
58
+ },
59
+ "devDependencies": {
60
+ "@ota-meshi/eslint-plugin": "^0.13.0",
61
+ "@types/debug": "^4.1.5",
62
+ "@types/eslint": "^8.0.0",
63
+ "@types/eslint-scope": "^3.7.0",
64
+ "@types/eslint-visitor-keys": "^1.0.0",
65
+ "@types/estree": "^1.0.0",
66
+ "@types/lodash": "^4.14.158",
67
+ "@types/mocha": "^10.0.0",
68
+ "@types/node": "^18.0.0",
69
+ "@types/semver": "^7.3.1",
70
+ "@typescript-eslint/eslint-plugin": "^5.0.0",
71
+ "@typescript-eslint/parser": "^5.0.0",
72
+ "cross-env": "^7.0.2",
73
+ "env-cmd": "^10.1.0",
74
+ "eslint": "^8.0.0",
75
+ "eslint-config-prettier": "^8.0.0",
76
+ "eslint-plugin-eslint-comments": "^3.2.0",
77
+ "eslint-plugin-eslint-plugin": "^5.0.0",
78
+ "eslint-plugin-json-schema-validator": "^4.0.0",
79
+ "eslint-plugin-jsonc": "^2.0.0",
80
+ "eslint-plugin-markdown": "^3.0.0",
81
+ "eslint-plugin-node": "^11.1.0",
82
+ "eslint-plugin-prettier": "^4.0.0",
83
+ "eslint-plugin-regexp": "^1.0.0",
84
+ "eslint-plugin-vue": "^9.0.0",
85
+ "eslint-plugin-yml": "^1.0.0",
86
+ "eslint4b": "^7.3.1",
87
+ "espree": "^9.0.0",
88
+ "mocha": "^10.0.0",
89
+ "nyc": "^15.1.0",
90
+ "prettier": "^2.2.1",
91
+ "raw-loader": "^4.0.1",
92
+ "semver": "^7.3.2",
93
+ "stylelint": "^14.9.1",
94
+ "stylelint-config-recommended-vue": "^1.0.0",
95
+ "stylelint-config-standard": "^29.0.0",
96
+ "stylelint-stylus": "^0.17.0",
97
+ "ts-node": "^10.0.0",
98
+ "typescript": "~4.9.0",
99
+ "vue-eslint-editor": "^1.1.0",
100
+ "vue-eslint-parser": "^9.0.0",
101
+ "vuepress": "^1.5.2"
102
+ }
102
103
  }