@ivanmaxlogiudice/eslint-config 1.0.8 → 1.0.10

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
@@ -32,7 +32,7 @@ With [`"type": "module"`](https://nodejs.org/api/packages.html#type) in `package
32
32
  // eslint.config.js
33
33
  import config from '@ivanmaxlogiudice/eslint-config'
34
34
 
35
- export default config()
35
+ export default await config()
36
36
  ```
37
37
 
38
38
  With CJS:
@@ -44,6 +44,32 @@ const config = require('@ivanmaxlogiudice/eslint-config').default
44
44
  module.exports = config()
45
45
  ```
46
46
 
47
+ Combined with legacy config:
48
+
49
+ ```js
50
+ // eslint.config.js
51
+ const config = require('@ivanmaxlogiudice/eslint-config').default
52
+ const { FlatCompat } = require('@eslint/eslintrc')
53
+
54
+ const compat = new FlatCompat()
55
+
56
+ module.exports = config(
57
+ {
58
+ ignores: [],
59
+ },
60
+
61
+ // Legacy config
62
+ ...compat.config({
63
+ extends: [
64
+ 'eslint:recommended',
65
+ // Other extends...
66
+ ],
67
+ })
68
+
69
+ // Other flat configs...
70
+ )
71
+ ```
72
+
47
73
  > Note that `.eslintignore` no longer works in Flat config, see [customization](#customization) for more details.
48
74
 
49
75
  ### Add script for package.json
@@ -61,17 +87,18 @@ For example:
61
87
 
62
88
  ### Migration
63
89
 
64
- We provided an experimental cli tool to help you migrate from the legacy config to the new flat config.
90
+ We provided an experimental CLI tool to help you migrate from the legacy config to the new flat config.
91
+ You can use the `-y` / `--yes` flag to skip the promps and use the default values.
65
92
 
66
93
  ```bash
67
94
  # npm
68
- npx @ivanmaxlogiudice/eslint-config migrate
95
+ npx @ivanmaxlogiudice/eslint-config@latest -y
69
96
 
70
97
  # pnpm
71
- pnpm dlx @ivanmaxlogiudice/eslint-config migrate
98
+ pnpm dlx @ivanmaxlogiudice/eslint-config@latest -y
72
99
  ```
73
100
 
74
- Before running the migration, make sure to commit your changes first.
101
+ Before running the migration, make sure to commit your unsaved changes first.
75
102
 
76
103
  ## VS Code support (auto fix)
77
104
 
@@ -134,7 +161,7 @@ Normally you only need to import the `config` preset:
134
161
  // eslint.config.js
135
162
  import config from '@ivanmaxlogiudice/eslint-config'
136
163
 
137
- export default config()
164
+ export default await config()
138
165
  ```
139
166
 
140
167
  And that's it! Or you can configure each integration individually, for example:
@@ -143,7 +170,7 @@ And that's it! Or you can configure each integration individually, for example:
143
170
  // eslint.config.js
144
171
  import config from '@ivanmaxlogiudice/eslint-config'
145
172
 
146
- export default config({
173
+ export default await config({
147
174
  // Enable stylistic formatting rules
148
175
  // stylistic: true,
149
176
 
@@ -175,7 +202,7 @@ The `config` factory function also accepts any number of arbitrary custom config
175
202
  // eslint.config.js
176
203
  import config from '@ivanmaxlogiudice/eslint-config'
177
204
 
178
- export default config(
205
+ export default await config(
179
206
  {
180
207
  // Configuration
181
208
  },
@@ -278,7 +305,7 @@ Certain rules would only be enabled in specific files, for example, `ts/*` rules
278
305
  // eslint.config.js
279
306
  import config from '@ivanmaxlogiudice/eslint-config'
280
307
 
281
- export default config(
308
+ export default await config(
282
309
  {
283
310
  typescript: true,
284
311
  vue: true
@@ -305,7 +332,7 @@ We also provided an `overrides` options to make it easier:
305
332
  // eslint.config.js
306
333
  import config from '@ivanmaxlogiudice/eslint-config'
307
334
 
308
- export default config({
335
+ export default await config({
309
336
  overrides: {
310
337
  typescript: {
311
338
  'ts/consistent-type-definitions': ['error', 'interface'],
@@ -327,7 +354,7 @@ You can optionally enable the [type aware rules](https://typescript-eslint.io/li
327
354
  // eslint.config.js
328
355
  import config from '@ivanmaxlogiudice/eslint-config'
329
356
 
330
- export default config({
357
+ export default await config({
331
358
  typescript: {
332
359
  tsconfigPath: 'tsconfig.json',
333
360
 
package/bin/index.js CHANGED
File without changes
package/dist/cli.cjs CHANGED
@@ -35,12 +35,12 @@ var import_picocolors4 = __toESM(require("picocolors"), 1);
35
35
  var import_picocolors = __toESM(require("picocolors"), 1);
36
36
 
37
37
  // package.json
38
- var version = "1.0.8";
38
+ var version = "1.0.10";
39
39
  var devDependencies = {
40
40
  "@types/eslint": "^8.44.7",
41
41
  "@types/fs-extra": "^11.0.4",
42
- "@types/node": "^20.9.2",
43
- "@types/prompts": "^2.4.8",
42
+ "@types/node": "^20.9.3",
43
+ "@types/prompts": "^2.4.9",
44
44
  bumpp: "^9.2.0",
45
45
  eslint: "^8.54.0",
46
46
  "eslint-flat-config-viewer": "^0.1.3",
@@ -49,8 +49,8 @@ var devDependencies = {
49
49
  "fs-extra": "^11.1.1",
50
50
  "lint-staged": "^15.1.0",
51
51
  "simple-git-hooks": "^2.9.0",
52
- tsup: "^7.3.0",
53
- typescript: "^5.2.2",
52
+ tsup: "^8.0.1",
53
+ typescript: "^5.3.2",
54
54
  vitest: "^0.34.6"
55
55
  };
56
56
 
@@ -101,7 +101,7 @@ var vscodeSettingsString = `
101
101
  ]
102
102
  `;
103
103
 
104
- // src/cli/migrate.ts
104
+ // src/cli/run.ts
105
105
  var import_node_fs = __toESM(require("fs"), 1);
106
106
  var import_promises = __toESM(require("fs/promises"), 1);
107
107
  var import_node_path = __toESM(require("path"), 1);
@@ -130,10 +130,10 @@ function isGitClean() {
130
130
  }
131
131
  }
132
132
 
133
- // src/cli/migrate.ts
134
- var SKIP_PROMPT = !!import_node_process2.default.env.SKIP_PROMPT;
135
- var SKIP_GIT_CHECK = !!import_node_process2.default.env.SKIP_GIT_CHECK;
136
- async function migrate() {
133
+ // src/cli/run.ts
134
+ async function run(options = {}) {
135
+ const SKIP_PROMPT = !!import_node_process2.default.env.SKIP_PROMPT || options.yes;
136
+ const SKIP_GIT_CHECK = !!import_node_process2.default.env.SKIP_GIT_CHECK;
137
137
  const cwd = import_node_process2.default.cwd();
138
138
  const pathPackageJSON = import_node_path.default.join(import_node_process2.default.cwd(), "package.json");
139
139
  const pathESLintConfig = import_node_path.default.join(import_node_process2.default.cwd(), "eslint.config.js");
@@ -207,7 +207,8 @@ ${WARN} You can now remove those files manually: `);
207
207
  ${WARN} You can now remove those dependencies: `);
208
208
  console.log(` ${import_picocolors3.default.red("-")} ${import_picocolors3.default.dim(legacyDependencies.join(", "))}`);
209
209
  }
210
- const updateESLintVersion = pkg.devDependencies?.eslint ? pkg.devDependencies.eslint !== "latest" && pkg.devDependencies.eslint.match(/\d+/)?.[0] < 8 : true;
210
+ const eslintVersion = pkg.devDependencies?.eslint || pkg.dependencies?.eslint;
211
+ const updateESLintVersion = eslintVersion ? eslintVersion !== "latest" && eslintVersion.match(/\d+/)?.[0] < 8 : true;
211
212
  let prompResult = {
212
213
  updateESLintVersion,
213
214
  updateVscodeSettings: true
@@ -223,8 +224,8 @@ ${WARN} You can now remove those dependencies: `);
223
224
  type: "confirm"
224
225
  },
225
226
  {
226
- initial: true,
227
- message: "Update ESLint to the latest version?",
227
+ initial: updateESLintVersion,
228
+ message: `Update ESLint to the latest version? (${updateESLintVersion ? import_picocolors3.default.green("Yes") : import_picocolors3.default.red("No")})`,
228
229
  name: "updateESLintVersion",
229
230
  type: "confirm"
230
231
  }
@@ -259,8 +260,11 @@ ${WARN} You can now remove those dependencies: `);
259
260
  `);
260
261
  }
261
262
  }
262
- if (prompResult.updateESLintVersion) {
263
- pkg.devDependencies.eslint = devDependencies.eslint;
263
+ if (prompResult.updateESLintVersion ?? true) {
264
+ if (pkg.dependencies?.eslint)
265
+ pkg.dependencies.eslint = devDependencies.eslint;
266
+ else
267
+ pkg.devDependencies.eslint = devDependencies.eslint;
264
268
  await import_promises.default.writeFile(pathPackageJSON, JSON.stringify(pkg, null, pkgIndent));
265
269
  console.log(`${CHECK} Updated ${import_picocolors3.default.green("eslint")} to the version ${import_picocolors3.default.yellow(devDependencies.eslint)}.
266
270
  `);
@@ -274,7 +278,7 @@ ${WARN} You can now remove those dependencies: `);
274
278
  var cli = (0, import_cac.cac)(
275
279
  import_picocolors4.default.green("@ivanmaxlogiudice/eslint-config")
276
280
  );
277
- cli.command("migrate", "Migrate from legacy config to new flat config").action(migrate);
281
+ cli.command("", "Run the initialization or migration").option("-y, --yes", "Skip prompts and use default values", { type: [Boolean] }).action(run);
278
282
  cli.help();
279
283
  cli.version(`${import_picocolors4.default.bold(version)}`);
280
284
  cli.parse();
package/dist/cli.js CHANGED
@@ -6,12 +6,12 @@ import c4 from "picocolors";
6
6
  import c from "picocolors";
7
7
 
8
8
  // package.json
9
- var version = "1.0.8";
9
+ var version = "1.0.10";
10
10
  var devDependencies = {
11
11
  "@types/eslint": "^8.44.7",
12
12
  "@types/fs-extra": "^11.0.4",
13
- "@types/node": "^20.9.2",
14
- "@types/prompts": "^2.4.8",
13
+ "@types/node": "^20.9.3",
14
+ "@types/prompts": "^2.4.9",
15
15
  bumpp: "^9.2.0",
16
16
  eslint: "^8.54.0",
17
17
  "eslint-flat-config-viewer": "^0.1.3",
@@ -20,8 +20,8 @@ var devDependencies = {
20
20
  "fs-extra": "^11.1.1",
21
21
  "lint-staged": "^15.1.0",
22
22
  "simple-git-hooks": "^2.9.0",
23
- tsup: "^7.3.0",
24
- typescript: "^5.2.2",
23
+ tsup: "^8.0.1",
24
+ typescript: "^5.3.2",
25
25
  vitest: "^0.34.6"
26
26
  };
27
27
 
@@ -72,7 +72,7 @@ var vscodeSettingsString = `
72
72
  ]
73
73
  `;
74
74
 
75
- // src/cli/migrate.ts
75
+ // src/cli/run.ts
76
76
  import fs from "node:fs";
77
77
  import fsp from "node:fs/promises";
78
78
  import path from "node:path";
@@ -101,10 +101,10 @@ function isGitClean() {
101
101
  }
102
102
  }
103
103
 
104
- // src/cli/migrate.ts
105
- var SKIP_PROMPT = !!process2.env.SKIP_PROMPT;
106
- var SKIP_GIT_CHECK = !!process2.env.SKIP_GIT_CHECK;
107
- async function migrate() {
104
+ // src/cli/run.ts
105
+ async function run(options = {}) {
106
+ const SKIP_PROMPT = !!process2.env.SKIP_PROMPT || options.yes;
107
+ const SKIP_GIT_CHECK = !!process2.env.SKIP_GIT_CHECK;
108
108
  const cwd = process2.cwd();
109
109
  const pathPackageJSON = path.join(process2.cwd(), "package.json");
110
110
  const pathESLintConfig = path.join(process2.cwd(), "eslint.config.js");
@@ -178,7 +178,8 @@ ${WARN} You can now remove those files manually: `);
178
178
  ${WARN} You can now remove those dependencies: `);
179
179
  console.log(` ${c3.red("-")} ${c3.dim(legacyDependencies.join(", "))}`);
180
180
  }
181
- const updateESLintVersion = pkg.devDependencies?.eslint ? pkg.devDependencies.eslint !== "latest" && pkg.devDependencies.eslint.match(/\d+/)?.[0] < 8 : true;
181
+ const eslintVersion = pkg.devDependencies?.eslint || pkg.dependencies?.eslint;
182
+ const updateESLintVersion = eslintVersion ? eslintVersion !== "latest" && eslintVersion.match(/\d+/)?.[0] < 8 : true;
182
183
  let prompResult = {
183
184
  updateESLintVersion,
184
185
  updateVscodeSettings: true
@@ -194,8 +195,8 @@ ${WARN} You can now remove those dependencies: `);
194
195
  type: "confirm"
195
196
  },
196
197
  {
197
- initial: true,
198
- message: "Update ESLint to the latest version?",
198
+ initial: updateESLintVersion,
199
+ message: `Update ESLint to the latest version? (${updateESLintVersion ? c3.green("Yes") : c3.red("No")})`,
199
200
  name: "updateESLintVersion",
200
201
  type: "confirm"
201
202
  }
@@ -230,8 +231,11 @@ ${WARN} You can now remove those dependencies: `);
230
231
  `);
231
232
  }
232
233
  }
233
- if (prompResult.updateESLintVersion) {
234
- pkg.devDependencies.eslint = devDependencies.eslint;
234
+ if (prompResult.updateESLintVersion ?? true) {
235
+ if (pkg.dependencies?.eslint)
236
+ pkg.dependencies.eslint = devDependencies.eslint;
237
+ else
238
+ pkg.devDependencies.eslint = devDependencies.eslint;
235
239
  await fsp.writeFile(pathPackageJSON, JSON.stringify(pkg, null, pkgIndent));
236
240
  console.log(`${CHECK} Updated ${c3.green("eslint")} to the version ${c3.yellow(devDependencies.eslint)}.
237
241
  `);
@@ -245,7 +249,7 @@ ${WARN} You can now remove those dependencies: `);
245
249
  var cli = cac(
246
250
  c4.green("@ivanmaxlogiudice/eslint-config")
247
251
  );
248
- cli.command("migrate", "Migrate from legacy config to new flat config").action(migrate);
252
+ cli.command("", "Run the initialization or migration").option("-y, --yes", "Skip prompts and use default values", { type: [Boolean] }).action(run);
249
253
  cli.help();
250
254
  cli.version(`${c4.bold(version)}`);
251
255
  cli.parse();
package/package.json CHANGED
@@ -1,115 +1,113 @@
1
1
  {
2
- "name": "@ivanmaxlogiudice/eslint-config",
3
- "version": "1.0.8",
4
- "packageManager": "pnpm@8.10.5",
5
- "description": "Personal ESLint config",
6
- "type": "module",
7
- "keywords": [
8
- "eslint-config"
9
- ],
10
- "license": "MIT",
11
- "homepage": "https://github.com/ivanmaxlogiudice/eslint-config#readme",
12
- "bugs": {
13
- "url": "https://github.com/ivanmaxlogiudice/eslint-config/issues"
14
- },
15
- "repository": {
16
- "type": "git",
17
- "url": "git+https://github.com/ivanmaxlogiudice/eslint-config.git"
18
- },
19
- "files": [
20
- "bin",
21
- "dist"
22
- ],
23
- "main": "./dist/index.js",
24
- "types": "./dist/index.d.ts",
25
- "exports": {
26
- ".": {
27
- "import": "./dist/index.js",
28
- "require": "./dist/index.cjs"
29
- }
30
- },
31
- "bin": "./bin/index.js",
32
- "publishConfig": {
33
- "access": "public"
34
- },
35
- "scripts": {
36
- "build": "tsup --format esm,cjs --clean --dts",
37
- "stub": "tsup --format esm",
38
- "dev": "tsup --format esm,cjs --watch & eslint-flat-config-viewer",
39
- "lint": "pnpm run stub && eslint .",
40
- "prepack": "pnpm run build",
41
- "release": "bumpp && pnpm publish",
42
- "test": "vitest",
43
- "typecheck": "tsc --noEmit",
44
- "prepare": "simple-git-hooks"
45
- },
46
- "peerDependencies": {
47
- "eslint": ">=8.0.0"
48
- },
49
- "dependencies": {
50
- "@antfu/eslint-define-config": "1.23.0-2",
51
- "@eslint-types/jsdoc": "46.9.0",
52
- "@eslint-types/typescript-eslint": "^6.11.0",
53
- "@eslint-types/unicorn": "^49.0.0",
54
- "@eslint/js": "^8.54.0",
55
- "@stylistic/eslint-plugin": "^1.4.0",
56
- "@typescript-eslint/eslint-plugin": "^6.11.0",
57
- "@typescript-eslint/parser": "^6.11.0",
58
- "@unocss/eslint-plugin": "^0.57.5",
59
- "cac": "^6.7.14",
60
- "detect-indent": "^7.0.1",
61
- "eslint-config-flat-gitignore": "^0.1.1",
62
- "eslint-plugin-antfu": "^1.0.9",
63
- "eslint-plugin-eslint-comments": "^3.2.0",
64
- "eslint-plugin-i": "^2.29.0",
65
- "eslint-plugin-jsdoc": "^46.9.0",
66
- "eslint-plugin-jsonc": "^2.10.0",
67
- "eslint-plugin-markdown": "^3.0.1",
68
- "eslint-plugin-n": "^16.3.1",
69
- "eslint-plugin-no-only-tests": "^3.1.0",
70
- "eslint-plugin-perfectionist": "^2.4.0",
71
- "eslint-plugin-promise": "^6.1.1",
72
- "eslint-plugin-unicorn": "^49.0.0",
73
- "eslint-plugin-unused-imports": "^3.0.0",
74
- "eslint-plugin-vitest": "^0.3.9",
75
- "eslint-plugin-vue": "^9.18.1",
76
- "eslint-plugin-yml": "^1.10.0",
77
- "globals": "^13.23.0",
78
- "jsonc-eslint-parser": "^2.4.0",
79
- "local-pkg": "^0.5.0",
80
- "parse-gitignore": "^2.0.0",
81
- "picocolors": "^1.0.0",
82
- "prompts": "^2.4.2",
83
- "vue-eslint-parser": "^9.3.2",
84
- "yaml-eslint-parser": "^1.2.2"
85
- },
86
- "devDependencies": {
87
- "@types/eslint": "^8.44.7",
88
- "@types/fs-extra": "^11.0.4",
89
- "@types/node": "^20.9.2",
90
- "@types/prompts": "^2.4.8",
91
- "bumpp": "^9.2.0",
92
- "eslint": "^8.54.0",
93
- "eslint-flat-config-viewer": "^0.1.3",
94
- "execa": "^8.0.1",
95
- "fast-glob": "^3.3.2",
96
- "fs-extra": "^11.1.1",
97
- "lint-staged": "^15.1.0",
98
- "simple-git-hooks": "^2.9.0",
99
- "tsup": "^7.3.0",
100
- "typescript": "^5.2.2",
101
- "vitest": "^0.34.6"
102
- },
103
- "workspaces": [
104
- "fixtures/*"
105
- ],
106
- "engines": {
107
- "node": ">=18.12.0"
108
- },
109
- "simple-git-hooks": {
110
- "pre-commit": "pnpm lint-staged"
111
- },
112
- "lint-staged": {
113
- "*": "eslint --fix"
2
+ "name": "@ivanmaxlogiudice/eslint-config",
3
+ "version": "1.0.10",
4
+ "packageManager": "pnpm@8.10.5",
5
+ "description": "Personal ESLint config",
6
+ "type": "module",
7
+ "keywords": [
8
+ "eslint-config"
9
+ ],
10
+ "license": "MIT",
11
+ "homepage": "https://github.com/ivanmaxlogiudice/eslint-config#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/ivanmaxlogiudice/eslint-config/issues"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/ivanmaxlogiudice/eslint-config.git"
18
+ },
19
+ "files": [
20
+ "bin",
21
+ "dist"
22
+ ],
23
+ "main": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "import": "./dist/index.js",
28
+ "require": "./dist/index.cjs"
114
29
  }
115
- }
30
+ },
31
+ "bin": "./bin/index.js",
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "peerDependencies": {
36
+ "eslint": ">=8.40.0"
37
+ },
38
+ "dependencies": {
39
+ "@antfu/eslint-define-config": "1.23.0-2",
40
+ "@eslint-types/jsdoc": "46.9.0",
41
+ "@eslint-types/typescript-eslint": "^6.12.0",
42
+ "@eslint-types/unicorn": "^49.0.0",
43
+ "@eslint/js": "^8.54.0",
44
+ "@stylistic/eslint-plugin": "^1.4.0",
45
+ "@typescript-eslint/eslint-plugin": "^6.12.0",
46
+ "@typescript-eslint/parser": "^6.12.0",
47
+ "@unocss/eslint-plugin": "^0.57.7",
48
+ "cac": "^6.7.14",
49
+ "detect-indent": "^7.0.1",
50
+ "eslint-config-flat-gitignore": "^0.1.1",
51
+ "eslint-plugin-antfu": "^1.0.10",
52
+ "eslint-plugin-eslint-comments": "^3.2.0",
53
+ "eslint-plugin-i": "^2.29.0",
54
+ "eslint-plugin-jsdoc": "^46.9.0",
55
+ "eslint-plugin-jsonc": "^2.10.0",
56
+ "eslint-plugin-markdown": "^3.0.1",
57
+ "eslint-plugin-n": "^16.3.1",
58
+ "eslint-plugin-no-only-tests": "^3.1.0",
59
+ "eslint-plugin-perfectionist": "^2.4.0",
60
+ "eslint-plugin-promise": "^6.1.1",
61
+ "eslint-plugin-unicorn": "^49.0.0",
62
+ "eslint-plugin-unused-imports": "^3.0.0",
63
+ "eslint-plugin-vitest": "^0.3.10",
64
+ "eslint-plugin-vue": "^9.18.1",
65
+ "eslint-plugin-yml": "^1.10.0",
66
+ "globals": "^13.23.0",
67
+ "jsonc-eslint-parser": "^2.4.0",
68
+ "local-pkg": "^0.5.0",
69
+ "parse-gitignore": "^2.0.0",
70
+ "picocolors": "^1.0.0",
71
+ "prompts": "^2.4.2",
72
+ "vue-eslint-parser": "^9.3.2",
73
+ "yaml-eslint-parser": "^1.2.2"
74
+ },
75
+ "devDependencies": {
76
+ "@types/eslint": "^8.44.7",
77
+ "@types/fs-extra": "^11.0.4",
78
+ "@types/node": "^20.9.3",
79
+ "@types/prompts": "^2.4.9",
80
+ "bumpp": "^9.2.0",
81
+ "eslint": "^8.54.0",
82
+ "eslint-flat-config-viewer": "^0.1.3",
83
+ "execa": "^8.0.1",
84
+ "fast-glob": "^3.3.2",
85
+ "fs-extra": "^11.1.1",
86
+ "lint-staged": "^15.1.0",
87
+ "simple-git-hooks": "^2.9.0",
88
+ "tsup": "^8.0.1",
89
+ "typescript": "^5.3.2",
90
+ "vitest": "^0.34.6"
91
+ },
92
+ "workspaces": [
93
+ "fixtures/*"
94
+ ],
95
+ "engines": {
96
+ "node": ">=18.12.0"
97
+ },
98
+ "simple-git-hooks": {
99
+ "pre-commit": "pnpm lint-staged"
100
+ },
101
+ "lint-staged": {
102
+ "*": "eslint --fix"
103
+ },
104
+ "scripts": {
105
+ "build": "tsup --format esm,cjs --clean --dts",
106
+ "stub": "tsup --format esm",
107
+ "dev": "tsup --format esm,cjs --watch & eslint-flat-config-viewer",
108
+ "lint": "pnpm run stub && eslint .",
109
+ "release": "bumpp && pnpm publish",
110
+ "test": "vitest",
111
+ "typecheck": "tsc --noEmit"
112
+ }
113
+ }