@debbl/eslint-config 2.0.1 → 2.1.1

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
@@ -1,6 +1,6 @@
1
1
  # [@debbl/eslint-config](https://github.com/Debbl/eslint-config)
2
2
 
3
- [![npm](https://img.shields.io/npm/v/@debbl/eslint-config?color=444&label=)](https://npmjs.com/package/@debbl/eslint-config)
3
+ [![npm](https://img.shields.io/npm/v/@debbl/eslint-config?label=@debbl/eslint-config&color=444&logo=npm)](https://npmjs.com/package/@debbl/eslint-config)
4
4
 
5
5
  ## 参考
6
6
 
@@ -15,6 +15,7 @@ pnpm i eslint @debbl/eslint-config -D
15
15
  ## 配置 `eslint.config.js`
16
16
 
17
17
  ### 默认启动配置
18
+
18
19
  - ignores
19
20
  - javascript
20
21
  - comments
package/dist/index.cjs CHANGED
@@ -42,6 +42,7 @@ __export(src_exports, {
42
42
  GLOB_LESS: () => GLOB_LESS,
43
43
  GLOB_MARKDOWN: () => GLOB_MARKDOWN,
44
44
  GLOB_MARKDOWN_CODE: () => GLOB_MARKDOWN_CODE,
45
+ GLOB_MDX: () => GLOB_MDX,
45
46
  GLOB_SCSS: () => GLOB_SCSS,
46
47
  GLOB_SRC: () => GLOB_SRC,
47
48
  GLOB_SRC_EXT: () => GLOB_SRC_EXT,
@@ -115,11 +116,12 @@ var GLOB_SCSS = "**/*.scss";
115
116
  var GLOB_JSON = "**/*.json";
116
117
  var GLOB_JSON5 = "**/*.json5";
117
118
  var GLOB_JSONC = "**/*.jsonc";
118
- var GLOB_MARKDOWN = "**/*.md?(x)";
119
+ var GLOB_MARKDOWN = "**/*.md";
120
+ var GLOB_MDX = "**/*.mdx";
121
+ var GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;
119
122
  var GLOB_VUE = "**/*.vue";
120
123
  var GLOB_YAML = "**/*.y?(a)ml";
121
124
  var GLOB_HTML = "**/*.htm?(l)";
122
- var GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;
123
125
  var GLOB_TESTS = [
124
126
  `**/__tests__/**/*.${GLOB_SRC_EXT}`,
125
127
  `**/*.spec.${GLOB_SRC_EXT}`,
@@ -204,21 +206,14 @@ async function interopDefault(m) {
204
206
 
205
207
  // src/configs/imports.ts
206
208
  async function imports() {
207
- const [pluginAntfu, pluginImport] = await Promise.all([
208
- interopDefault(import("eslint-plugin-antfu")),
209
- // @ts-expect-error missing types
210
- interopDefault(import("eslint-plugin-i"))
211
- ]);
209
+ const pluginImport = await interopDefault(import("eslint-plugin-i"));
212
210
  return [
213
211
  {
214
212
  name: "eslint:imports",
215
213
  plugins: {
216
- antfu: pluginAntfu,
217
214
  import: pluginImport
218
215
  },
219
216
  rules: {
220
- "antfu/import-dedupe": "error",
221
- "antfu/no-import-node-modules-by-path": "error",
222
217
  "import/first": "error",
223
218
  "import/no-duplicates": "error",
224
219
  "import/no-mutable-exports": "error",
@@ -238,11 +233,10 @@ async function imports() {
238
233
  // src/configs/javascript.ts
239
234
  var import_globals = __toESM(require("globals"), 1);
240
235
  async function javascript() {
241
- const [pluginAntfu, pluginUnusedImports] = await Promise.all([
242
- interopDefault(import("eslint-plugin-antfu")),
236
+ const pluginUnusedImports = await interopDefault(
243
237
  // @ts-expect-error missing types
244
- interopDefault(import("eslint-plugin-unused-imports"))
245
- ]);
238
+ import("eslint-plugin-unused-imports")
239
+ );
246
240
  return [
247
241
  {
248
242
  name: "eslint:javascript",
@@ -269,7 +263,6 @@ async function javascript() {
269
263
  reportUnusedDisableDirectives: true
270
264
  },
271
265
  plugins: {
272
- "antfu": pluginAntfu,
273
266
  "unused-imports": pluginUnusedImports
274
267
  },
275
268
  rules: {
@@ -596,18 +589,27 @@ async function jsonc() {
596
589
  // src/configs/markdown.ts
597
590
  async function markdown(options = {}) {
598
591
  const { componentExts = [] } = options;
592
+ const pluginMdx = await import("eslint-plugin-mdx");
593
+ const parserMdx = await import("eslint-mdx");
599
594
  return [
600
595
  {
601
596
  name: "eslint:markdown:setup",
602
597
  plugins: {
603
- // @ts-expect-error missing types
604
- markdown: await interopDefault(import("eslint-plugin-markdown"))
598
+ mdx: pluginMdx
605
599
  }
606
600
  },
607
601
  {
608
602
  name: "eslint:markdown:processor",
609
- files: [GLOB_MARKDOWN],
610
- processor: "markdown/markdown"
603
+ files: [GLOB_MARKDOWN, GLOB_MDX],
604
+ languageOptions: {
605
+ ecmaVersion: "latest",
606
+ parser: parserMdx,
607
+ sourceType: "module"
608
+ },
609
+ processor: "mdx/remark",
610
+ settings: {
611
+ "mdx/code-blocks": true
612
+ }
611
613
  },
612
614
  {
613
615
  name: "eslint:markdown:rules",
@@ -623,8 +625,6 @@ async function markdown(options = {}) {
623
625
  }
624
626
  },
625
627
  rules: {
626
- "antfu/no-cjs-exports": "off",
627
- "antfu/no-ts-export-equal": "off",
628
628
  "no-alert": "off",
629
629
  "no-console": "off",
630
630
  "no-undef": "off",
@@ -930,17 +930,15 @@ async function typescript(options) {
930
930
  parserOptions = {},
931
931
  tsconfigPath
932
932
  } = options ?? {};
933
- const [pluginTs, parserTs, pluginAntfu] = await Promise.all([
933
+ const [pluginTs, parserTs] = await Promise.all([
934
934
  interopDefault(import("@typescript-eslint/eslint-plugin")),
935
- interopDefault(import("@typescript-eslint/parser")),
936
- interopDefault(import("eslint-plugin-antfu"))
935
+ interopDefault(import("@typescript-eslint/parser"))
937
936
  ]);
938
937
  return [
939
938
  {
940
939
  // Install the plugins without globs, so they can be configured separately.
941
940
  name: "eslint:typescript:setup",
942
941
  plugins: {
943
- "antfu": pluginAntfu,
944
942
  "@typescript-eslint": pluginTs
945
943
  }
946
944
  },
@@ -962,9 +960,6 @@ async function typescript(options) {
962
960
  rules: {
963
961
  ...pluginTs.configs["eslint-recommended"].overrides[0].rules,
964
962
  ...pluginTs.configs.strict.rules,
965
- "antfu/generic-spacing": "error",
966
- "antfu/named-tuple-spacing": "error",
967
- "antfu/no-cjs-exports": "error",
968
963
  "no-dupe-class-members": "off",
969
964
  "no-invalid-this": "off",
970
965
  "no-loss-of-precision": "off",
@@ -1526,6 +1521,7 @@ var src_default = config;
1526
1521
  GLOB_LESS,
1527
1522
  GLOB_MARKDOWN,
1528
1523
  GLOB_MARKDOWN_CODE,
1524
+ GLOB_MDX,
1529
1525
  GLOB_SCSS,
1530
1526
  GLOB_SRC,
1531
1527
  GLOB_SRC_EXT,
package/dist/index.d.cts CHANGED
@@ -192,13 +192,14 @@ declare const GLOB_SCSS = "**/*.scss";
192
192
  declare const GLOB_JSON = "**/*.json";
193
193
  declare const GLOB_JSON5 = "**/*.json5";
194
194
  declare const GLOB_JSONC = "**/*.jsonc";
195
- declare const GLOB_MARKDOWN = "**/*.md?(x)";
195
+ declare const GLOB_MARKDOWN = "**/*.md";
196
+ declare const GLOB_MDX = "**/*.mdx";
197
+ declare const GLOB_MARKDOWN_CODE = "**/*.md/**/*.?([cm])[jt]s?(x)";
196
198
  declare const GLOB_VUE = "**/*.vue";
197
199
  declare const GLOB_YAML = "**/*.y?(a)ml";
198
200
  declare const GLOB_HTML = "**/*.htm?(l)";
199
- declare const GLOB_MARKDOWN_CODE = "**/*.md?(x)/**/*.?([cm])[jt]s?(x)";
200
201
  declare const GLOB_TESTS: string[];
201
202
  declare const GLOB_ALL_SRC: string[];
202
203
  declare const GLOB_EXCLUDE: string[];
203
204
 
204
- export { type Awaitable, type ConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type OptionsComponentExts, type OptionsConfig, type OptionsHasTypeScript, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type PrettierRequiredOptions, type ReactOptions, combine, comments, config, config as default, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, perfectionist, prettier, sortPackageJson, sortTsconfig, test, typescript, unicorn, vue, yml };
205
+ export { type Awaitable, type ConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MDX, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type OptionsComponentExts, type OptionsConfig, type OptionsHasTypeScript, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type PrettierRequiredOptions, type ReactOptions, combine, comments, config, config as default, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, perfectionist, prettier, sortPackageJson, sortTsconfig, test, typescript, unicorn, vue, yml };
package/dist/index.d.ts CHANGED
@@ -192,13 +192,14 @@ declare const GLOB_SCSS = "**/*.scss";
192
192
  declare const GLOB_JSON = "**/*.json";
193
193
  declare const GLOB_JSON5 = "**/*.json5";
194
194
  declare const GLOB_JSONC = "**/*.jsonc";
195
- declare const GLOB_MARKDOWN = "**/*.md?(x)";
195
+ declare const GLOB_MARKDOWN = "**/*.md";
196
+ declare const GLOB_MDX = "**/*.mdx";
197
+ declare const GLOB_MARKDOWN_CODE = "**/*.md/**/*.?([cm])[jt]s?(x)";
196
198
  declare const GLOB_VUE = "**/*.vue";
197
199
  declare const GLOB_YAML = "**/*.y?(a)ml";
198
200
  declare const GLOB_HTML = "**/*.htm?(l)";
199
- declare const GLOB_MARKDOWN_CODE = "**/*.md?(x)/**/*.?([cm])[jt]s?(x)";
200
201
  declare const GLOB_TESTS: string[];
201
202
  declare const GLOB_ALL_SRC: string[];
202
203
  declare const GLOB_EXCLUDE: string[];
203
204
 
204
- export { type Awaitable, type ConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type OptionsComponentExts, type OptionsConfig, type OptionsHasTypeScript, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type PrettierRequiredOptions, type ReactOptions, combine, comments, config, config as default, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, perfectionist, prettier, sortPackageJson, sortTsconfig, test, typescript, unicorn, vue, yml };
205
+ export { type Awaitable, type ConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MDX, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type OptionsComponentExts, type OptionsConfig, type OptionsHasTypeScript, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type PrettierRequiredOptions, type ReactOptions, combine, comments, config, config as default, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, perfectionist, prettier, sortPackageJson, sortTsconfig, test, typescript, unicorn, vue, yml };
package/dist/index.js CHANGED
@@ -38,11 +38,12 @@ var GLOB_SCSS = "**/*.scss";
38
38
  var GLOB_JSON = "**/*.json";
39
39
  var GLOB_JSON5 = "**/*.json5";
40
40
  var GLOB_JSONC = "**/*.jsonc";
41
- var GLOB_MARKDOWN = "**/*.md?(x)";
41
+ var GLOB_MARKDOWN = "**/*.md";
42
+ var GLOB_MDX = "**/*.mdx";
43
+ var GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;
42
44
  var GLOB_VUE = "**/*.vue";
43
45
  var GLOB_YAML = "**/*.y?(a)ml";
44
46
  var GLOB_HTML = "**/*.htm?(l)";
45
- var GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;
46
47
  var GLOB_TESTS = [
47
48
  `**/__tests__/**/*.${GLOB_SRC_EXT}`,
48
49
  `**/*.spec.${GLOB_SRC_EXT}`,
@@ -127,21 +128,14 @@ async function interopDefault(m) {
127
128
 
128
129
  // src/configs/imports.ts
129
130
  async function imports() {
130
- const [pluginAntfu, pluginImport] = await Promise.all([
131
- interopDefault(import("eslint-plugin-antfu")),
132
- // @ts-expect-error missing types
133
- interopDefault(import("eslint-plugin-i"))
134
- ]);
131
+ const pluginImport = await interopDefault(import("eslint-plugin-i"));
135
132
  return [
136
133
  {
137
134
  name: "eslint:imports",
138
135
  plugins: {
139
- antfu: pluginAntfu,
140
136
  import: pluginImport
141
137
  },
142
138
  rules: {
143
- "antfu/import-dedupe": "error",
144
- "antfu/no-import-node-modules-by-path": "error",
145
139
  "import/first": "error",
146
140
  "import/no-duplicates": "error",
147
141
  "import/no-mutable-exports": "error",
@@ -161,11 +155,10 @@ async function imports() {
161
155
  // src/configs/javascript.ts
162
156
  import globals from "globals";
163
157
  async function javascript() {
164
- const [pluginAntfu, pluginUnusedImports] = await Promise.all([
165
- interopDefault(import("eslint-plugin-antfu")),
158
+ const pluginUnusedImports = await interopDefault(
166
159
  // @ts-expect-error missing types
167
- interopDefault(import("eslint-plugin-unused-imports"))
168
- ]);
160
+ import("eslint-plugin-unused-imports")
161
+ );
169
162
  return [
170
163
  {
171
164
  name: "eslint:javascript",
@@ -192,7 +185,6 @@ async function javascript() {
192
185
  reportUnusedDisableDirectives: true
193
186
  },
194
187
  plugins: {
195
- "antfu": pluginAntfu,
196
188
  "unused-imports": pluginUnusedImports
197
189
  },
198
190
  rules: {
@@ -519,18 +511,27 @@ async function jsonc() {
519
511
  // src/configs/markdown.ts
520
512
  async function markdown(options = {}) {
521
513
  const { componentExts = [] } = options;
514
+ const pluginMdx = await import("eslint-plugin-mdx");
515
+ const parserMdx = await import("eslint-mdx");
522
516
  return [
523
517
  {
524
518
  name: "eslint:markdown:setup",
525
519
  plugins: {
526
- // @ts-expect-error missing types
527
- markdown: await interopDefault(import("eslint-plugin-markdown"))
520
+ mdx: pluginMdx
528
521
  }
529
522
  },
530
523
  {
531
524
  name: "eslint:markdown:processor",
532
- files: [GLOB_MARKDOWN],
533
- processor: "markdown/markdown"
525
+ files: [GLOB_MARKDOWN, GLOB_MDX],
526
+ languageOptions: {
527
+ ecmaVersion: "latest",
528
+ parser: parserMdx,
529
+ sourceType: "module"
530
+ },
531
+ processor: "mdx/remark",
532
+ settings: {
533
+ "mdx/code-blocks": true
534
+ }
534
535
  },
535
536
  {
536
537
  name: "eslint:markdown:rules",
@@ -546,8 +547,6 @@ async function markdown(options = {}) {
546
547
  }
547
548
  },
548
549
  rules: {
549
- "antfu/no-cjs-exports": "off",
550
- "antfu/no-ts-export-equal": "off",
551
550
  "no-alert": "off",
552
551
  "no-console": "off",
553
552
  "no-undef": "off",
@@ -853,17 +852,15 @@ async function typescript(options) {
853
852
  parserOptions = {},
854
853
  tsconfigPath
855
854
  } = options ?? {};
856
- const [pluginTs, parserTs, pluginAntfu] = await Promise.all([
855
+ const [pluginTs, parserTs] = await Promise.all([
857
856
  interopDefault(import("@typescript-eslint/eslint-plugin")),
858
- interopDefault(import("@typescript-eslint/parser")),
859
- interopDefault(import("eslint-plugin-antfu"))
857
+ interopDefault(import("@typescript-eslint/parser"))
860
858
  ]);
861
859
  return [
862
860
  {
863
861
  // Install the plugins without globs, so they can be configured separately.
864
862
  name: "eslint:typescript:setup",
865
863
  plugins: {
866
- "antfu": pluginAntfu,
867
864
  "@typescript-eslint": pluginTs
868
865
  }
869
866
  },
@@ -885,9 +882,6 @@ async function typescript(options) {
885
882
  rules: {
886
883
  ...pluginTs.configs["eslint-recommended"].overrides[0].rules,
887
884
  ...pluginTs.configs.strict.rules,
888
- "antfu/generic-spacing": "error",
889
- "antfu/named-tuple-spacing": "error",
890
- "antfu/no-cjs-exports": "error",
891
885
  "no-dupe-class-members": "off",
892
886
  "no-invalid-this": "off",
893
887
  "no-loss-of-precision": "off",
@@ -1448,6 +1442,7 @@ export {
1448
1442
  GLOB_LESS,
1449
1443
  GLOB_MARKDOWN,
1450
1444
  GLOB_MARKDOWN_CODE,
1445
+ GLOB_MDX,
1451
1446
  GLOB_SCSS,
1452
1447
  GLOB_SRC,
1453
1448
  GLOB_SRC_EXT,
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@debbl/eslint-config",
3
3
  "type": "module",
4
- "version": "2.0.1",
5
- "packageManager": "pnpm@8.10.5",
4
+ "version": "2.1.1",
5
+ "packageManager": "pnpm@8.11.0",
6
6
  "description": "Brendan Dash's ESLint config",
7
7
  "author": "Debbl <me@aiwan.run> (https://github.com/Debbl/)",
8
8
  "license": "MIT",
@@ -24,31 +24,32 @@
24
24
  "dist"
25
25
  ],
26
26
  "peerDependencies": {
27
- "eslint": ">=8.0.0"
27
+ "eslint": ">=8.40.0"
28
28
  },
29
29
  "dependencies": {
30
30
  "@next/eslint-plugin-next": "^14.0.3",
31
- "@typescript-eslint/eslint-plugin": "^6.11.0",
32
- "@typescript-eslint/parser": "^6.11.0",
33
- "eslint-config-prettier": "^9.0.0",
31
+ "@typescript-eslint/eslint-plugin": "^6.13.2",
32
+ "@typescript-eslint/parser": "^6.13.2",
33
+ "eslint-config-prettier": "^9.1.0",
34
34
  "eslint-define-config": "^2.0.0",
35
- "eslint-plugin-antfu": "^1.0.9",
35
+ "eslint-mdx": "^2.2.0",
36
36
  "eslint-plugin-eslint-comments": "^3.2.0",
37
37
  "eslint-plugin-i": "^2.29.0",
38
38
  "eslint-plugin-jsdoc": "^46.9.0",
39
39
  "eslint-plugin-jsonc": "^2.10.0",
40
40
  "eslint-plugin-markdown": "^3.0.1",
41
+ "eslint-plugin-mdx": "^2.2.0",
41
42
  "eslint-plugin-n": "^16.3.1",
42
43
  "eslint-plugin-no-only-tests": "^3.1.0",
43
- "eslint-plugin-perfectionist": "^2.4.0",
44
+ "eslint-plugin-perfectionist": "^2.5.0",
44
45
  "eslint-plugin-prettier": "^5.0.1",
45
46
  "eslint-plugin-react": "^7.33.2",
46
47
  "eslint-plugin-react-hooks": "^4.6.0",
47
48
  "eslint-plugin-tailwindcss": "^3.13.0",
48
49
  "eslint-plugin-unicorn": "^49.0.0",
49
50
  "eslint-plugin-unused-imports": "^3.0.0",
50
- "eslint-plugin-vitest": "^0.3.9",
51
- "eslint-plugin-vue": "^9.18.1",
51
+ "eslint-plugin-vitest": "^0.3.10",
52
+ "eslint-plugin-vue": "^9.19.2",
52
53
  "eslint-plugin-yml": "^1.10.0",
53
54
  "globals": "^13.23.0",
54
55
  "jsonc-eslint-parser": "^2.4.0",
@@ -57,20 +58,20 @@
57
58
  "yaml-eslint-parser": "^1.2.2"
58
59
  },
59
60
  "devDependencies": {
60
- "@types/eslint": "^8.44.7",
61
- "@types/node": "^20.9.2",
62
- "@types/react": "^18.2.37",
61
+ "@types/eslint": "^8.44.8",
62
+ "@types/node": "^20.10.3",
63
+ "@types/react": "^18.2.42",
63
64
  "bumpp": "^9.2.0",
64
- "eslint": "^8.54.0",
65
+ "eslint": "^8.55.0",
65
66
  "eslint-flat-config-viewer": "^0.1.3",
66
67
  "execa": "^8.0.1",
67
68
  "fast-glob": "^3.3.2",
68
- "fs-extra": "^11.1.1",
69
+ "fs-extra": "^11.2.0",
69
70
  "react": "^18.2.0",
70
71
  "sucrase": "^3.34.0",
71
- "tsup": "^8.0.0",
72
- "typescript": "^5.2.2",
73
- "vitest": "^0.34.6"
72
+ "tsup": "^8.0.1",
73
+ "typescript": "^5.3.2",
74
+ "vitest": "^1.0.1"
74
75
  },
75
76
  "scripts": {
76
77
  "build": "tsup src/index.ts --format esm,cjs --clean --dts",