@sxzz/eslint-config 3.5.0 → 3.5.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/index.cjs +3 -336
- package/package.json +8 -8
- package/src/markdown.js +1 -0
package/index.cjs
CHANGED
|
@@ -5,9 +5,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
9
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
-
};
|
|
11
8
|
var __export = (target, all2) => {
|
|
12
9
|
for (var name in all2)
|
|
13
10
|
__defProp(target, name, { get: all2[name], enumerable: true });
|
|
@@ -30,337 +27,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
30
27
|
));
|
|
31
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
32
29
|
|
|
33
|
-
// node_modules/.pnpm/eslint-plugin-unused-imports@3.0.0_@typescript-eslint+eslint-plugin@6.4.1_eslint@8.48.0/node_modules/eslint-plugin-unused-imports/lib/rules/predicates.js
|
|
34
|
-
var require_predicates = __commonJS({
|
|
35
|
-
"node_modules/.pnpm/eslint-plugin-unused-imports@3.0.0_@typescript-eslint+eslint-plugin@6.4.1_eslint@8.48.0/node_modules/eslint-plugin-unused-imports/lib/rules/predicates.js"(exports) {
|
|
36
|
-
"use strict";
|
|
37
|
-
exports.unusedVarsPredicate = (problem, context) => {
|
|
38
|
-
const { node } = problem;
|
|
39
|
-
const { parent } = node;
|
|
40
|
-
if (parent == null) {
|
|
41
|
-
return problem;
|
|
42
|
-
}
|
|
43
|
-
switch (parent.type) {
|
|
44
|
-
case "ImportSpecifier":
|
|
45
|
-
case "ImportDefaultSpecifier":
|
|
46
|
-
case "ImportNamespaceSpecifier":
|
|
47
|
-
return false;
|
|
48
|
-
default:
|
|
49
|
-
return problem;
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
var commaFilter = { filter: (token) => token.value === "," };
|
|
53
|
-
var includeCommentsFilter = { includeComments: true };
|
|
54
|
-
exports.unusedImportsPredicate = (problem, context) => {
|
|
55
|
-
const { sourceCode } = context;
|
|
56
|
-
const { node } = problem;
|
|
57
|
-
const { parent } = node;
|
|
58
|
-
if (parent == null) {
|
|
59
|
-
return problem;
|
|
60
|
-
}
|
|
61
|
-
switch (parent.type) {
|
|
62
|
-
case "ImportSpecifier":
|
|
63
|
-
case "ImportDefaultSpecifier":
|
|
64
|
-
case "ImportNamespaceSpecifier":
|
|
65
|
-
break;
|
|
66
|
-
default:
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
problem.fix = (fixer) => {
|
|
70
|
-
if (!parent) {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
const grandParent = parent.parent;
|
|
74
|
-
if (!grandParent) {
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
if (grandParent.specifiers.length === 1) {
|
|
78
|
-
const nextToken = sourceCode.getTokenAfter(grandParent, includeCommentsFilter);
|
|
79
|
-
const newLinesBetween = nextToken ? nextToken.loc.start.line - grandParent.loc.start.line : 0;
|
|
80
|
-
const endOfReplaceRange = nextToken ? nextToken.range[0] : grandParent.range[1];
|
|
81
|
-
const count = Math.max(0, newLinesBetween - 1);
|
|
82
|
-
return [
|
|
83
|
-
fixer.remove(grandParent),
|
|
84
|
-
fixer.replaceTextRange([grandParent.range[1], endOfReplaceRange], "\n".repeat(count))
|
|
85
|
-
];
|
|
86
|
-
}
|
|
87
|
-
if (parent !== grandParent.specifiers[grandParent.specifiers.length - 1]) {
|
|
88
|
-
const comma = sourceCode.getTokenAfter(parent, commaFilter);
|
|
89
|
-
const prevNode = sourceCode.getTokenBefore(parent);
|
|
90
|
-
return [
|
|
91
|
-
fixer.removeRange([prevNode.range[1], parent.range[0]]),
|
|
92
|
-
fixer.remove(parent),
|
|
93
|
-
fixer.remove(comma)
|
|
94
|
-
];
|
|
95
|
-
}
|
|
96
|
-
if (grandParent.specifiers.filter((specifier) => specifier.type === "ImportSpecifier").length === 1) {
|
|
97
|
-
const start = sourceCode.getTokenBefore(parent, commaFilter);
|
|
98
|
-
const end = sourceCode.getTokenAfter(parent, { filter: (token) => token.value === "}" });
|
|
99
|
-
return fixer.removeRange([start.range[0], end.range[1]]);
|
|
100
|
-
}
|
|
101
|
-
return fixer.removeRange([
|
|
102
|
-
sourceCode.getTokenBefore(parent, commaFilter).range[0],
|
|
103
|
-
parent.range[1]
|
|
104
|
-
]);
|
|
105
|
-
};
|
|
106
|
-
return problem;
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
// node_modules/.pnpm/eslint-rule-composer@0.3.0/node_modules/eslint-rule-composer/lib/rule-composer.js
|
|
112
|
-
var require_rule_composer = __commonJS({
|
|
113
|
-
"node_modules/.pnpm/eslint-rule-composer@0.3.0/node_modules/eslint-rule-composer/lib/rule-composer.js"(exports, module2) {
|
|
114
|
-
"use strict";
|
|
115
|
-
function normalizeMultiArgReportCall() {
|
|
116
|
-
if (arguments.length === 1) {
|
|
117
|
-
return arguments[0];
|
|
118
|
-
}
|
|
119
|
-
if (typeof arguments[1] === "string") {
|
|
120
|
-
return {
|
|
121
|
-
node: arguments[0],
|
|
122
|
-
message: arguments[1],
|
|
123
|
-
data: arguments[2],
|
|
124
|
-
fix: arguments[3]
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
node: arguments[0],
|
|
129
|
-
loc: arguments[1],
|
|
130
|
-
message: arguments[2],
|
|
131
|
-
data: arguments[3],
|
|
132
|
-
fix: arguments[4]
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
function normalizeReportLoc(descriptor) {
|
|
136
|
-
if (descriptor.loc) {
|
|
137
|
-
if (descriptor.loc.start) {
|
|
138
|
-
return descriptor.loc;
|
|
139
|
-
}
|
|
140
|
-
return { start: descriptor.loc, end: null };
|
|
141
|
-
}
|
|
142
|
-
return descriptor.node.loc;
|
|
143
|
-
}
|
|
144
|
-
function normalizeMessagePlaceholders(descriptor, messageIds) {
|
|
145
|
-
const message = typeof descriptor.messageId === "string" ? messageIds[descriptor.messageId] : descriptor.message;
|
|
146
|
-
if (!descriptor.data) {
|
|
147
|
-
return {
|
|
148
|
-
message,
|
|
149
|
-
data: typeof descriptor.messageId === "string" ? {} : null
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
const normalizedData = /* @__PURE__ */ Object.create(null);
|
|
153
|
-
const interpolatedMessage = message.replace(/\{\{\s*([^{}]+?)\s*\}\}/g, (fullMatch, term) => {
|
|
154
|
-
if (term in descriptor.data) {
|
|
155
|
-
normalizedData[term] = descriptor.data[term];
|
|
156
|
-
return descriptor.data[term];
|
|
157
|
-
}
|
|
158
|
-
return fullMatch;
|
|
159
|
-
});
|
|
160
|
-
return {
|
|
161
|
-
message: interpolatedMessage,
|
|
162
|
-
data: Object.freeze(normalizedData)
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
function getRuleMeta(rule) {
|
|
166
|
-
return typeof rule === "object" && rule.meta && typeof rule.meta === "object" ? rule.meta : {};
|
|
167
|
-
}
|
|
168
|
-
function getMessageIds(rule) {
|
|
169
|
-
const meta = getRuleMeta(rule);
|
|
170
|
-
return meta.messages && typeof rule.meta.messages === "object" ? meta.messages : {};
|
|
171
|
-
}
|
|
172
|
-
function getReportNormalizer(rule) {
|
|
173
|
-
const messageIds = getMessageIds(rule);
|
|
174
|
-
return function normalizeReport() {
|
|
175
|
-
const descriptor = normalizeMultiArgReportCall.apply(null, arguments);
|
|
176
|
-
const interpolatedMessageAndData = normalizeMessagePlaceholders(descriptor, messageIds);
|
|
177
|
-
return {
|
|
178
|
-
node: descriptor.node,
|
|
179
|
-
message: interpolatedMessageAndData.message,
|
|
180
|
-
messageId: typeof descriptor.messageId === "string" ? descriptor.messageId : null,
|
|
181
|
-
data: typeof descriptor.messageId === "string" ? interpolatedMessageAndData.data : null,
|
|
182
|
-
loc: normalizeReportLoc(descriptor),
|
|
183
|
-
fix: descriptor.fix
|
|
184
|
-
};
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
function getRuleCreateFunc(rule) {
|
|
188
|
-
return typeof rule === "function" ? rule : rule.create;
|
|
189
|
-
}
|
|
190
|
-
function removeMessageIfMessageIdPresent(reportDescriptor) {
|
|
191
|
-
const newDescriptor = Object.assign({}, reportDescriptor);
|
|
192
|
-
if (typeof reportDescriptor.messageId === "string" && typeof reportDescriptor.message === "string") {
|
|
193
|
-
delete newDescriptor.message;
|
|
194
|
-
}
|
|
195
|
-
return newDescriptor;
|
|
196
|
-
}
|
|
197
|
-
module2.exports = Object.freeze({
|
|
198
|
-
filterReports(rule, predicate) {
|
|
199
|
-
return Object.freeze({
|
|
200
|
-
create(context) {
|
|
201
|
-
const filename = context.getFilename();
|
|
202
|
-
const sourceCode = context.getSourceCode();
|
|
203
|
-
const settings = context.settings;
|
|
204
|
-
const options = context.options;
|
|
205
|
-
return getRuleCreateFunc(rule)(
|
|
206
|
-
Object.freeze(
|
|
207
|
-
Object.create(
|
|
208
|
-
context,
|
|
209
|
-
{
|
|
210
|
-
report: {
|
|
211
|
-
enumerable: true,
|
|
212
|
-
value() {
|
|
213
|
-
const reportDescriptor = getReportNormalizer(rule).apply(null, arguments);
|
|
214
|
-
if (predicate(reportDescriptor, {
|
|
215
|
-
sourceCode,
|
|
216
|
-
settings,
|
|
217
|
-
options,
|
|
218
|
-
filename
|
|
219
|
-
})) {
|
|
220
|
-
context.report(removeMessageIfMessageIdPresent(reportDescriptor));
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
)
|
|
226
|
-
)
|
|
227
|
-
);
|
|
228
|
-
},
|
|
229
|
-
schema: rule.schema,
|
|
230
|
-
meta: getRuleMeta(rule)
|
|
231
|
-
});
|
|
232
|
-
},
|
|
233
|
-
mapReports(rule, iteratee) {
|
|
234
|
-
return Object.freeze({
|
|
235
|
-
create(context) {
|
|
236
|
-
const filename = context.getFilename();
|
|
237
|
-
const sourceCode = context.getSourceCode();
|
|
238
|
-
const settings = context.settings;
|
|
239
|
-
const options = context.options;
|
|
240
|
-
return getRuleCreateFunc(rule)(
|
|
241
|
-
Object.freeze(
|
|
242
|
-
Object.create(
|
|
243
|
-
context,
|
|
244
|
-
{
|
|
245
|
-
report: {
|
|
246
|
-
enumerable: true,
|
|
247
|
-
value() {
|
|
248
|
-
context.report(
|
|
249
|
-
removeMessageIfMessageIdPresent(
|
|
250
|
-
iteratee(
|
|
251
|
-
getReportNormalizer(rule).apply(null, arguments),
|
|
252
|
-
{
|
|
253
|
-
sourceCode,
|
|
254
|
-
settings,
|
|
255
|
-
options,
|
|
256
|
-
filename
|
|
257
|
-
}
|
|
258
|
-
)
|
|
259
|
-
)
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
)
|
|
265
|
-
)
|
|
266
|
-
);
|
|
267
|
-
},
|
|
268
|
-
schema: rule.schema,
|
|
269
|
-
meta: getRuleMeta(rule)
|
|
270
|
-
});
|
|
271
|
-
},
|
|
272
|
-
joinReports(rules) {
|
|
273
|
-
return Object.freeze({
|
|
274
|
-
create(context) {
|
|
275
|
-
return rules.map((rule) => getRuleCreateFunc(rule)(context)).reduce(
|
|
276
|
-
(allListeners, ruleListeners) => Object.keys(ruleListeners).reduce(
|
|
277
|
-
(combinedListeners, key) => {
|
|
278
|
-
const currentListener = combinedListeners[key];
|
|
279
|
-
const ruleListener = ruleListeners[key];
|
|
280
|
-
if (currentListener) {
|
|
281
|
-
return Object.assign({}, combinedListeners, {
|
|
282
|
-
[key]() {
|
|
283
|
-
currentListener.apply(null, arguments);
|
|
284
|
-
ruleListener.apply(null, arguments);
|
|
285
|
-
}
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
return Object.assign({}, combinedListeners, { [key]: ruleListener });
|
|
289
|
-
},
|
|
290
|
-
allListeners
|
|
291
|
-
),
|
|
292
|
-
/* @__PURE__ */ Object.create(null)
|
|
293
|
-
);
|
|
294
|
-
},
|
|
295
|
-
meta: Object.freeze({
|
|
296
|
-
messages: Object.assign.apply(
|
|
297
|
-
null,
|
|
298
|
-
[/* @__PURE__ */ Object.create(null)].concat(rules.map(getMessageIds))
|
|
299
|
-
),
|
|
300
|
-
fixable: "code"
|
|
301
|
-
})
|
|
302
|
-
});
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
// node_modules/.pnpm/eslint-plugin-unused-imports@3.0.0_@typescript-eslint+eslint-plugin@6.4.1_eslint@8.48.0/node_modules/eslint-plugin-unused-imports/lib/rules/no-unused-vars.js
|
|
309
|
-
var require_no_unused_vars = __commonJS({
|
|
310
|
-
"node_modules/.pnpm/eslint-plugin-unused-imports@3.0.0_@typescript-eslint+eslint-plugin@6.4.1_eslint@8.48.0/node_modules/eslint-plugin-unused-imports/lib/rules/no-unused-vars.js"(exports, module2) {
|
|
311
|
-
"use strict";
|
|
312
|
-
var { unusedVarsPredicate } = require_predicates();
|
|
313
|
-
var ruleComposer = require_rule_composer();
|
|
314
|
-
var rule;
|
|
315
|
-
try {
|
|
316
|
-
const tslint = require("@typescript-eslint/eslint-plugin");
|
|
317
|
-
rule = tslint.rules["no-unused-vars"];
|
|
318
|
-
} catch (_) {
|
|
319
|
-
const eslint = require("eslint");
|
|
320
|
-
rule = new eslint.Linter().getRules().get("no-unused-vars");
|
|
321
|
-
}
|
|
322
|
-
rule.meta.fixable = "code";
|
|
323
|
-
rule.meta.docs.url = "https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-vars.md";
|
|
324
|
-
module2.exports = ruleComposer.filterReports(rule, unusedVarsPredicate);
|
|
325
|
-
}
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
// node_modules/.pnpm/eslint-plugin-unused-imports@3.0.0_@typescript-eslint+eslint-plugin@6.4.1_eslint@8.48.0/node_modules/eslint-plugin-unused-imports/lib/rules/no-unused-imports.js
|
|
329
|
-
var require_no_unused_imports = __commonJS({
|
|
330
|
-
"node_modules/.pnpm/eslint-plugin-unused-imports@3.0.0_@typescript-eslint+eslint-plugin@6.4.1_eslint@8.48.0/node_modules/eslint-plugin-unused-imports/lib/rules/no-unused-imports.js"(exports, module2) {
|
|
331
|
-
"use strict";
|
|
332
|
-
var { unusedImportsPredicate } = require_predicates();
|
|
333
|
-
var ruleComposer = require_rule_composer();
|
|
334
|
-
var rule;
|
|
335
|
-
try {
|
|
336
|
-
const tslint = require("@typescript-eslint/eslint-plugin");
|
|
337
|
-
rule = tslint.rules["no-unused-vars"];
|
|
338
|
-
} catch (_) {
|
|
339
|
-
const eslint = require("eslint");
|
|
340
|
-
rule = new eslint.Linter().getRules().get("no-unused-vars");
|
|
341
|
-
}
|
|
342
|
-
rule.meta.fixable = "code";
|
|
343
|
-
rule.meta.docs.url = "https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-imports.md";
|
|
344
|
-
rule.meta.docs.extendsBaseRule = false;
|
|
345
|
-
module2.exports = ruleComposer.filterReports(rule, unusedImportsPredicate);
|
|
346
|
-
}
|
|
347
|
-
});
|
|
348
|
-
|
|
349
|
-
// node_modules/.pnpm/eslint-plugin-unused-imports@3.0.0_@typescript-eslint+eslint-plugin@6.4.1_eslint@8.48.0/node_modules/eslint-plugin-unused-imports/lib/index.js
|
|
350
|
-
var require_lib = __commonJS({
|
|
351
|
-
"node_modules/.pnpm/eslint-plugin-unused-imports@3.0.0_@typescript-eslint+eslint-plugin@6.4.1_eslint@8.48.0/node_modules/eslint-plugin-unused-imports/lib/index.js"(exports, module2) {
|
|
352
|
-
"use strict";
|
|
353
|
-
var noUnusedVars = require_no_unused_vars();
|
|
354
|
-
var noUnusedImports = require_no_unused_imports();
|
|
355
|
-
module2.exports.rules = {
|
|
356
|
-
"no-unused-vars": noUnusedVars,
|
|
357
|
-
"no-unused-imports": noUnusedImports,
|
|
358
|
-
"no-unused-vars-ts": noUnusedVars,
|
|
359
|
-
"no-unused-imports-ts": noUnusedImports
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
});
|
|
363
|
-
|
|
364
30
|
// index.js
|
|
365
31
|
var eslint_config_exports = {};
|
|
366
32
|
__export(eslint_config_exports, {
|
|
@@ -415,7 +81,7 @@ var import_js = __toESM(require("@eslint/js"), 1);
|
|
|
415
81
|
var import_eslint_plugin_import = __toESM(require("eslint-plugin-import"), 1);
|
|
416
82
|
var import_eslint_plugin_unicorn = __toESM(require("eslint-plugin-unicorn"), 1);
|
|
417
83
|
var import_eslint_plugin_antfu = __toESM(require("eslint-plugin-antfu"), 1);
|
|
418
|
-
var import_eslint_plugin_unused_imports = __toESM(
|
|
84
|
+
var import_eslint_plugin_unused_imports = __toESM(require("eslint-plugin-unused-imports"), 1);
|
|
419
85
|
|
|
420
86
|
// src/shared.js
|
|
421
87
|
var GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
|
|
@@ -832,7 +498,8 @@ var markdown = [
|
|
|
832
498
|
"no-undef": "off",
|
|
833
499
|
"no-unused-expressions": "off",
|
|
834
500
|
"no-unused-vars": "off",
|
|
835
|
-
"unused-imports/no-unused-vars": "off"
|
|
501
|
+
"unused-imports/no-unused-vars": "off",
|
|
502
|
+
"unused-imports/no-unused-imports": "off"
|
|
836
503
|
}
|
|
837
504
|
}
|
|
838
505
|
];
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sxzz/eslint-config",
|
|
3
|
-
"version": "3.5.
|
|
4
|
-
"packageManager": "pnpm@8.7.
|
|
3
|
+
"version": "3.5.2",
|
|
4
|
+
"packageManager": "pnpm@8.7.1",
|
|
5
5
|
"description": "ESLint config for @sxzz.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@eslint/js": "^8.48.0",
|
|
35
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
36
|
-
"@typescript-eslint/parser": "^6.
|
|
37
|
-
"@unocss/eslint-plugin": "^0.55.
|
|
35
|
+
"@typescript-eslint/eslint-plugin": "^6.5.0",
|
|
36
|
+
"@typescript-eslint/parser": "^6.5.0",
|
|
37
|
+
"@unocss/eslint-plugin": "^0.55.6",
|
|
38
38
|
"eslint-config-prettier": "^9.0.0",
|
|
39
39
|
"eslint-define-config": "^1.23.0",
|
|
40
40
|
"eslint-plugin-antfu": "^0.41.0",
|
|
@@ -44,21 +44,21 @@
|
|
|
44
44
|
"eslint-plugin-markdown": "^3.0.1",
|
|
45
45
|
"eslint-plugin-prettier": "^5.0.0",
|
|
46
46
|
"eslint-plugin-unicorn": "^48.0.1",
|
|
47
|
+
"eslint-plugin-unused-imports": "^3.0.0",
|
|
47
48
|
"eslint-plugin-vue": "^9.17.0",
|
|
48
49
|
"eslint-plugin-yml": "^1.8.0",
|
|
49
50
|
"globals": "^13.21.0",
|
|
50
51
|
"jsonc-eslint-parser": "^2.3.0",
|
|
51
52
|
"local-pkg": "^0.4.3",
|
|
52
|
-
"prettier": "^3.0.
|
|
53
|
+
"prettier": "^3.0.3",
|
|
53
54
|
"vue-eslint-parser": "^9.3.1",
|
|
54
55
|
"yaml-eslint-parser": "^1.2.2"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"@sxzz/prettier-config": "^1.0.4",
|
|
58
|
-
"@types/node": "^20.5.
|
|
59
|
+
"@types/node": "^20.5.9",
|
|
59
60
|
"bumpp": "^9.2.0",
|
|
60
61
|
"eslint": "^8.48.0",
|
|
61
|
-
"eslint-plugin-unused-imports": "^3.0.0",
|
|
62
62
|
"tsup": "^7.2.0",
|
|
63
63
|
"typescript": "^5.2.2"
|
|
64
64
|
},
|