From 1818a076e2fe0d8b610ece0ebf447d4749f0f898 Mon Sep 17 00:00:00 2001 From: Eva1ent Date: Wed, 20 Dec 2023 00:49:12 +0800 Subject: [PATCH] refactor: minor improvements --- package.json | 8 +- packages/core/docs/README.md | 41 --------- packages/core/src/api/index.ts | 1 - .../src/component/component-Identifier.ts | 2 +- .../component/component-collector-legacy.ts | 4 +- .../core/src/component/component-collector.ts | 4 +- packages/core/src/hook/hook-collector.ts | 4 +- packages/core/src/index.ts | 3 +- packages/core/src/internal/index.ts | 1 - .../is-member-expression-of-react-member.ts | 48 ----------- .../core/src/{api/api.ts => react-api.ts} | 2 +- packages/core/src/utils/index.ts | 1 - packages/core/src/utils/uid.ts | 3 - pnpm-lock.yaml | 86 +++++++++---------- 14 files changed, 59 insertions(+), 149 deletions(-) delete mode 100644 packages/core/src/api/index.ts delete mode 100644 packages/core/src/internal/is-member-expression-of-react-member.ts rename packages/core/src/{api/api.ts => react-api.ts} (97%) delete mode 100644 packages/core/src/utils/index.ts delete mode 100644 packages/core/src/utils/uid.ts diff --git a/package.json b/package.json index 4f574394f..85a7d89bc 100644 --- a/package.json +++ b/package.json @@ -68,9 +68,9 @@ "@typescript-eslint/eslint-plugin": "6.15.0", "@typescript-eslint/parser": ">=6.15.0", "@typescript-eslint/rule-tester": "6.15.0", - "@vitest/ui": "1.0.4", + "@vitest/ui": "1.1.0", "bun": "1.0.18", - "bun-types": "1.0.18-canary.20231218T214637", + "bun-types": "1.0.18-canary.20231219T140126", "cspell": "8.1.3", "dedent": "1.5.1", "dprint": "0.44.0", @@ -85,7 +85,7 @@ "eslint-plugin-vitest": "0.3.18", "fast-equals": "5.0.1", "husky": "8.0.3", - "knip": "3.8.2", + "knip": "3.8.3", "markdownlint": "0.32.1", "pathe": "1.1.1", "publint": "0.2.6", @@ -105,7 +105,7 @@ "typedoc-plugin-mermaid": "1.10.0", "typedoc-plugin-rename-defaults": "0.7.0", "typescript": ">=5.3.3", - "vitest": "1.0.4" + "vitest": "1.1.0" }, "peerDependencies": { "@typescript-eslint/parser": ">=6.15.0", diff --git a/packages/core/docs/README.md b/packages/core/docs/README.md index ba00312a9..636b3188d 100644 --- a/packages/core/docs/README.md +++ b/packages/core/docs/README.md @@ -30,7 +30,6 @@ - [ERFunctionComponentFlag](README.md#erfunctioncomponentflag-1) - [RE\_COMPONENT\_NAME](README.md#re_component_name) - [RE\_HOOK\_NAME](README.md#re_hook_name) -- [uid](README.md#uid) ### Functions @@ -68,7 +67,6 @@ - [isFunctionOfRenderMethod](README.md#isfunctionofrendermethod) - [isInsideReactHook](README.md#isinsidereacthook) - [isInsideRenderMethod](README.md#isinsiderendermethod) -- [isMemberExpressionOfReactMember](README.md#ismemberexpressionofreactmember) - [isMemo](README.md#ismemo) - [isMemoCall](README.md#ismemocall) - [isPureComponent](README.md#ispurecomponent) @@ -240,12 +238,6 @@ ___ • `Const` **RE\_HOOK\_NAME**: `RegExp` -___ - -### uid - -• `Const` **uid**: `default` - ## Functions ### componentCollector @@ -914,39 +906,6 @@ It will be removed in the future ___ -### isMemberExpressionOfReactMember - -▸ **isMemberExpressionOfReactMember**(`pragmaMemberName`, `memberName`): (`node`: `TSESTree.MemberExpression`, `context`: `RuleContext`, `pragma?`: `string`) => `boolean` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `pragmaMemberName` | `string` | -| `memberName` | `string` | - -#### Returns - -`fn` - -A function that checks if a given node is a member expression of a Pragma member. - -▸ (`node`, `context`, `pragma?`): `boolean` - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `node` | `TSESTree.MemberExpression` | -| `context` | `RuleContext` | -| `pragma?` | `string` | - -##### Returns - -`boolean` - -___ - ### isMemo ▸ **isMemo**(`node`, `context`): `boolean` diff --git a/packages/core/src/api/index.ts b/packages/core/src/api/index.ts deleted file mode 100644 index d158c5764..000000000 --- a/packages/core/src/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./api"; diff --git a/packages/core/src/component/component-Identifier.ts b/packages/core/src/component/component-Identifier.ts index 8d8a5a8b0..3c57ba48f 100644 --- a/packages/core/src/component/component-Identifier.ts +++ b/packages/core/src/component/component-Identifier.ts @@ -4,7 +4,7 @@ import { O } from "@eslint-react/tools"; import type { RuleContext } from "@eslint-react/types"; import type { TSESTree } from "@typescript-eslint/types"; -import { isForwardRefCall, isMemoCall } from "../api"; +import { isForwardRefCall, isMemoCall } from "../react-api"; function isMemoOrForwardRefCall(node: TSESTree.Node, context: RuleContext) { if (node.type !== NodeType.CallExpression) { diff --git a/packages/core/src/component/component-collector-legacy.ts b/packages/core/src/component/component-collector-legacy.ts index f624754f8..73dc617b6 100644 --- a/packages/core/src/component/component-collector-legacy.ts +++ b/packages/core/src/component/component-collector-legacy.ts @@ -3,12 +3,14 @@ import { getPragmaFromContext } from "@eslint-react/jsx"; import { O } from "@eslint-react/tools"; import type { RuleContext } from "@eslint-react/types"; import type { ESLintUtils, TSESTree } from "@typescript-eslint/utils"; +import ShortUniqueId from "short-unique-id"; import { match, P } from "ts-pattern"; -import { uid } from "../utils"; import type { ERClassComponent } from "./component"; import { ERClassComponentFlag } from "./component-flag"; +const uid = new ShortUniqueId({ length: 10 }); + /** * Check if a node is a React class component * @param node The AST node to check diff --git a/packages/core/src/component/component-collector.ts b/packages/core/src/component/component-collector.ts index b77d7d5aa..bdf43c622 100644 --- a/packages/core/src/component/component-collector.ts +++ b/packages/core/src/component/component-collector.ts @@ -14,10 +14,10 @@ import { F, MutList, MutRef, O } from "@eslint-react/tools"; import type { RuleContext } from "@eslint-react/types"; import { type TSESTree } from "@typescript-eslint/types"; import type { ESLintUtils } from "@typescript-eslint/utils"; +import ShortUniqueId from "short-unique-id"; import { match } from "ts-pattern"; import { unsafeIsReactHookCall } from "../hook"; -import { uid } from "../utils"; import type { ERFunctionComponent } from "./component"; import { DEFAULT_COMPONENT_COLLECTOR_HINT, ERComponentCollectorHint } from "./component-collector-hint"; import { ERFunctionComponentFlag } from "./component-flag"; @@ -26,6 +26,8 @@ import { getComponentInitPath, hasCallInInitPath } from "./component-init-path"; import { getComponentNameFromIdentifier, hasNoneOrValidComponentName } from "./component-name"; import { isFunctionOfRenderMethod } from "./component-render-method"; +const uid = new ShortUniqueId({ length: 10 }); + function hasValidHierarchy(node: TSESTreeFunction, context: RuleContext, hint: bigint) { if (isChildrenOfCreateElement(node, context) || isFunctionOfRenderMethod(node, context)) { return false; diff --git a/packages/core/src/hook/hook-collector.ts b/packages/core/src/hook/hook-collector.ts index d8ea323ad..14df98002 100644 --- a/packages/core/src/hook/hook-collector.ts +++ b/packages/core/src/hook/hook-collector.ts @@ -1,12 +1,14 @@ import { getFunctionIdentifier, type TSESTreeFunction } from "@eslint-react/ast"; import { O } from "@eslint-react/tools"; import type { ESLintUtils, TSESTree } from "@typescript-eslint/utils"; +import ShortUniqueId from "short-unique-id"; -import { uid } from "../utils"; import type { ERHook } from "./hook"; import { unsafeIsReactHookCall } from "./hook-call"; import { isValidReactHookName } from "./hook-name"; +const uid = new ShortUniqueId({ length: 10 }); + export function hookCollector(): { // manually specify the return type here to avoid @typescript-eslint/utils's TS2742 error ctx: { diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 1d572da5b..a30f4196a 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,7 +1,6 @@ -export * from "./api"; export * from "./component"; export * from "./construction"; export * from "./hook"; export * from "./internal"; +export * from "./react-api"; export * from "./render-prop"; -export * from "./utils"; diff --git a/packages/core/src/internal/index.ts b/packages/core/src/internal/index.ts index 9c323f575..87d98e443 100644 --- a/packages/core/src/internal/index.ts +++ b/packages/core/src/internal/index.ts @@ -1,3 +1,2 @@ export * from "./analyzer-node"; -export * from "./is-member-expression-of-react-member"; export * from "./is-react-api"; diff --git a/packages/core/src/internal/is-member-expression-of-react-member.ts b/packages/core/src/internal/is-member-expression-of-react-member.ts deleted file mode 100644 index 1e69cb02b..000000000 --- a/packages/core/src/internal/is-member-expression-of-react-member.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { NodeType } from "@eslint-react/ast"; -import { getPragmaFromContext, isInitializedFromPragma } from "@eslint-react/jsx"; -import type { RuleContext } from "@eslint-react/types"; -import type { TSESTree } from "@typescript-eslint/types"; - -/** - * @internal - * @param pragmaMemberName - * @param memberName - * @returns A function that checks if a given node is a member expression of a Pragma member. - */ -export function isMemberExpressionOfReactMember( - pragmaMemberName: string, - memberName: string, -): (node: TSESTree.MemberExpression, context: RuleContext, pragma?: string) => boolean { - return ( - node: TSESTree.MemberExpression, - context: RuleContext, - pragma = getPragmaFromContext(context), - ) => { - const initialScope = context.sourceCode.getScope?.(node) ?? context.getScope(); - - if ( - node.property.type !== NodeType.Identifier - || node.property.name !== memberName - ) { - return false; - } - - if ( - node.object.type === NodeType.Identifier - && node.object.name === pragmaMemberName - ) { - return isInitializedFromPragma(node.object.name, context, initialScope, pragma); - } - - if ( - node.object.type === NodeType.MemberExpression - && node.object.object.type === NodeType.Identifier - && node.object.object.name === pragma - && node.object.property.type === NodeType.Identifier - ) { - return node.object.property.name === pragmaMemberName; - } - - return false; - }; -} diff --git a/packages/core/src/api/api.ts b/packages/core/src/react-api.ts similarity index 97% rename from packages/core/src/api/api.ts rename to packages/core/src/react-api.ts index 9e375e2fe..eca726c62 100644 --- a/packages/core/src/api/api.ts +++ b/packages/core/src/react-api.ts @@ -1,7 +1,7 @@ import type { RuleContext } from "@eslint-react/types"; import type { TSESTree } from "@typescript-eslint/types"; -import { isReactAPI, isReactAPICall } from "../internal"; +import { isReactAPI, isReactAPICall } from "./internal"; // Workaround for @typescript-eslint/utils's TS2742 error. type A = (node: TSESTree.Identifier | TSESTree.MemberExpression, context: RuleContext) => boolean; diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts deleted file mode 100644 index 140f3762d..000000000 --- a/packages/core/src/utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./uid"; diff --git a/packages/core/src/utils/uid.ts b/packages/core/src/utils/uid.ts deleted file mode 100644 index a1df97194..000000000 --- a/packages/core/src/utils/uid.ts +++ /dev/null @@ -1,3 +0,0 @@ -import ShortUniqueId from "short-unique-id"; - -export const uid = new ShortUniqueId({ length: 10 }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 312eace9b..433cb91bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -73,14 +73,14 @@ importers: specifier: 6.15.0 version: 6.15.0(@eslint/eslintrc@2.1.4)(eslint@8.56.0)(typescript@5.3.3) '@vitest/ui': - specifier: 1.0.4 - version: 1.0.4(vitest@1.0.4) + specifier: 1.1.0 + version: 1.1.0(vitest@1.1.0) bun: specifier: 1.0.18 version: 1.0.18 bun-types: - specifier: 1.0.18-canary.20231218T214637 - version: 1.0.18-canary.20231218T214637 + specifier: 1.0.18-canary.20231219T140126 + version: 1.0.18-canary.20231219T140126 cspell: specifier: 8.1.3 version: 8.1.3 @@ -116,7 +116,7 @@ importers: version: 7.1.0(eslint@8.56.0)(typescript@5.3.3) eslint-plugin-vitest: specifier: 0.3.18 - version: 0.3.18(@typescript-eslint/eslint-plugin@6.15.0)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.0.4) + version: 0.3.18(@typescript-eslint/eslint-plugin@6.15.0)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.1.0) fast-equals: specifier: 5.0.1 version: 5.0.1 @@ -124,8 +124,8 @@ importers: specifier: 8.0.3 version: 8.0.3 knip: - specifier: 3.8.2 - version: 3.8.2(@types/node@20.10.5)(typescript@5.3.3) + specifier: 3.8.3 + version: 3.8.3(@types/node@20.10.5)(typescript@5.3.3) markdownlint: specifier: 0.32.1 version: 0.32.1 @@ -184,8 +184,8 @@ importers: specifier: '>=5.3.3' version: 5.3.3 vitest: - specifier: 1.0.4 - version: 1.0.4(@types/node@20.10.5)(@vitest/ui@1.0.4) + specifier: 1.1.0 + version: 1.1.0(@types/node@20.10.5)(@vitest/ui@1.1.0) examples/with-flat-config: dependencies: @@ -3503,53 +3503,53 @@ packages: - supports-color dev: true - /@vitest/expect@1.0.4: - resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==} + /@vitest/expect@1.1.0: + resolution: {integrity: sha512-9IE2WWkcJo2BR9eqtY5MIo3TPmS50Pnwpm66A6neb2hvk/QSLfPXBz2qdiwUOQkwyFuuXEUj5380CbwfzW4+/w==} dependencies: - '@vitest/spy': 1.0.4 - '@vitest/utils': 1.0.4 + '@vitest/spy': 1.1.0 + '@vitest/utils': 1.1.0 chai: 4.3.10 dev: true - /@vitest/runner@1.0.4: - resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==} + /@vitest/runner@1.1.0: + resolution: {integrity: sha512-zdNLJ00pm5z/uhbWF6aeIJCGMSyTyWImy3Fcp9piRGvueERFlQFbUwCpzVce79OLm2UHk9iwaMSOaU9jVHgNVw==} dependencies: - '@vitest/utils': 1.0.4 + '@vitest/utils': 1.1.0 p-limit: 5.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@1.0.4: - resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==} + /@vitest/snapshot@1.1.0: + resolution: {integrity: sha512-5O/wyZg09V5qmNmAlUgCBqflvn2ylgsWJRRuPrnHEfDNT6tQpQ8O1isNGgo+VxofISHqz961SG3iVvt3SPK/QQ==} dependencies: magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.0.4: - resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==} + /@vitest/spy@1.1.0: + resolution: {integrity: sha512-sNOVSU/GE+7+P76qYo+VXdXhXffzWZcYIPQfmkiRxaNCSPiLANvQx5Mx6ZURJ/ndtEkUJEpvKLXqAYTKEY+lTg==} dependencies: tinyspy: 2.2.0 dev: true - /@vitest/ui@1.0.4(vitest@1.0.4): - resolution: {integrity: sha512-gd4p6e7pjukSe4joWS5wpnm/JcEfzCZUYkYWQOORqJK1mDJ0MOaXa/9BbPOEVO5TcvdnKvFJUdJpFHnqoyYwZA==} + /@vitest/ui@1.1.0(vitest@1.1.0): + resolution: {integrity: sha512-7yU1QRFBplz0xJqcgt+agcbrNFdBmLo8UUppdKkFmYx+Ih0+yMYQOyr7kOB+YoggJY/p5ZzXxdbiOz7NBX2y+w==} peerDependencies: vitest: ^1.0.0 dependencies: - '@vitest/utils': 1.0.4 + '@vitest/utils': 1.1.0 fast-glob: 3.3.2 fflate: 0.8.1 flatted: 3.2.9 pathe: 1.1.1 picocolors: 1.0.0 sirv: 2.0.3 - vitest: 1.0.4(@types/node@20.10.5)(@vitest/ui@1.0.4) + vitest: 1.1.0(@types/node@20.10.5)(@vitest/ui@1.1.0) dev: true - /@vitest/utils@1.0.4: - resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==} + /@vitest/utils@1.1.0: + resolution: {integrity: sha512-z+s510fKmYz4Y41XhNs3vcuFTFhcij2YF7F8VQfMEYAAUfqQh0Zfg7+w9xdgFGhPf3tX3TicAe+8BDITk6ampQ==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.7 @@ -4057,8 +4057,8 @@ packages: semver: 7.5.4 dev: true - /bun-types@1.0.18-canary.20231218T214637: - resolution: {integrity: sha512-xUSy1ZX3TMBHKbBjh4c0f482+Qkr0qXDFI4VveCpJzobtCmLmQbCcNRXbAAk5cCzayDYuumUw6RxJ6laJo4gTg==} + /bun-types@1.0.18-canary.20231219T140126: + resolution: {integrity: sha512-zJy+UaXaG4S4L/Paw8h22sQXKD2o+FMRIhS4bvyyJmLpkFdftLd3q+ouhg/N/TWAplfenXBy0yDiD5fjjpYi0g==} dependencies: '@types/node': 20.10.5 '@types/ws': 8.5.10 @@ -5950,7 +5950,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-vitest@0.3.18(@typescript-eslint/eslint-plugin@6.15.0)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.0.4): + /eslint-plugin-vitest@0.3.18(@typescript-eslint/eslint-plugin@6.15.0)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.1.0): resolution: {integrity: sha512-IJzs6BpA//wkNxo5845uPIMOIp4j76MiKiagJ3hD6a2DemrktdpB7mmTjU0EeFuq14NXFoO1wN8Fwrx2VxWBRA==} engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: @@ -5966,7 +5966,7 @@ packages: '@typescript-eslint/eslint-plugin': 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 - vitest: 1.0.4(@types/node@20.10.5)(@vitest/ui@1.0.4) + vitest: 1.1.0(@types/node@20.10.5)(@vitest/ui@1.1.0) transitivePeerDependencies: - supports-color - typescript @@ -7492,8 +7492,8 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - /knip@3.8.2(@types/node@20.10.5)(typescript@5.3.3): - resolution: {integrity: sha512-OKpEuFrwdGpcnTwo092Z41zjoHW9q0TA4tyNwnx1zGEcxjomgpt+dKTmPxQ31iOVvv5GbUYpeQS9S7dyRDusVw==} + /knip@3.8.3(@types/node@20.10.5)(typescript@5.3.3): + resolution: {integrity: sha512-KtVyLMig4C9m1y4YZZfZzqzY+/o7cAgHai28eUnqfjfWBCXGHK+HdeyO86CB5bam+RxFMzAysZFU/avOJlggSA==} engines: {node: '>=18.6.0'} hasBin: true peerDependencies: @@ -12129,8 +12129,8 @@ packages: - terser dev: true - /vite-node@1.0.4(@types/node@20.10.5): - resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==} + /vite-node@1.1.0(@types/node@20.10.5): + resolution: {integrity: sha512-jV48DDUxGLEBdHCQvxL1mEh7+naVy+nhUUUaPAZLd3FJgXuxQiewHcfeZebbJ6onDqNGkP4r3MhQ342PRlG81Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -12223,8 +12223,8 @@ packages: fsevents: 2.3.3 dev: true - /vitest@1.0.4(@types/node@20.10.5)(@vitest/ui@1.0.4): - resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==} + /vitest@1.1.0(@types/node@20.10.5)(@vitest/ui@1.1.0): + resolution: {integrity: sha512-oDFiCrw7dd3Jf06HoMtSRARivvyjHJaTxikFxuqJjO76U436PqlVw1uLn7a8OSPrhSfMGVaRakKpA2lePdw79A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -12249,12 +12249,12 @@ packages: optional: true dependencies: '@types/node': 20.10.5 - '@vitest/expect': 1.0.4 - '@vitest/runner': 1.0.4 - '@vitest/snapshot': 1.0.4 - '@vitest/spy': 1.0.4 - '@vitest/ui': 1.0.4(vitest@1.0.4) - '@vitest/utils': 1.0.4 + '@vitest/expect': 1.1.0 + '@vitest/runner': 1.1.0 + '@vitest/snapshot': 1.1.0 + '@vitest/spy': 1.1.0 + '@vitest/ui': 1.1.0(vitest@1.1.0) + '@vitest/utils': 1.1.0 acorn-walk: 8.3.1 cac: 6.7.14 chai: 4.3.10 @@ -12269,7 +12269,7 @@ packages: tinybench: 2.5.1 tinypool: 0.8.1 vite: 5.0.10(@types/node@20.10.5) - vite-node: 1.0.4(@types/node@20.10.5) + vite-node: 1.1.0(@types/node@20.10.5) why-is-node-running: 2.2.2 transitivePeerDependencies: - less