From 5a6ba8340909e21e6fe3cd94507da867168199d0 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 11 Jun 2026 14:03:08 -0400 Subject: [PATCH 1/5] migrate to oxc-lint --- .chronus/config.yaml | 1 - .github/workflows/consistency.yml | 3 - .vscode/extensions.json | 2 +- eslint.config.js | 176 ---- oxlint.config.ts | 219 +++++ package.json | 13 +- packages/asset-emitter/package.json | 4 +- .../src/builders/object-builder.ts | 3 +- packages/best-practices/package.json | 4 +- packages/bundle-uploader/package.json | 4 +- packages/bundler/package.json | 4 +- packages/compiler/package.json | 4 +- packages/emitter-framework/package.json | 4 +- .../eslint-plugin-typespec/CHANGELOG.json | 182 ---- packages/eslint-plugin-typespec/CHANGELOG.md | 298 ------- packages/eslint-plugin-typespec/LICENSE | 21 - packages/eslint-plugin-typespec/README.md | 22 - .../docs/rules/call-decorator.md | 57 -- packages/eslint-plugin-typespec/package.json | 57 -- packages/eslint-plugin-typespec/src/index.ts | 13 - .../src/rules/call-decorator.ts | 84 -- packages/eslint-plugin-typespec/src/utils.ts | 7 - .../test/fixtures/file.ts | 0 .../test/fixtures/tsconfig.json | 12 - .../test/global-setup.ts | 11 - .../test/rules/call-decorator.test.ts | 76 -- .../test/rules/utils.ts | 5 - .../tsconfig.build.json | 9 - packages/eslint-plugin-typespec/tsconfig.json | 14 - .../eslint-plugin-typespec/vitest.config.mts | 12 - packages/events/package.json | 4 +- packages/html-program-viewer/package.json | 4 +- packages/http-canonicalization/package.json | 4 +- packages/http-client-js/package.json | 4 +- packages/http-client/package.json | 4 +- packages/http-server-csharp/package.json | 4 +- packages/http-server-js/build-helpers.ts | 2 +- packages/http-server-js/package.json | 4 +- packages/http/package.json | 4 +- packages/internal-build-utils/package.json | 4 +- packages/json-schema/package.json | 4 +- packages/library-linter/package.json | 4 +- packages/monarch/package.json | 4 +- packages/mutator-framework/package.json | 4 +- packages/openapi/package.json | 4 +- packages/openapi/src/lib.ts | 2 + packages/openapi3/package.json | 4 +- packages/pack/package.json | 4 +- packages/playground-website/package.json | 4 +- packages/playground/package.json | 4 +- packages/protobuf/package.json | 4 +- packages/react-components/package.json | 4 +- packages/rest/package.json | 4 +- packages/spec-dashboard/package.json | 4 +- packages/sse/package.json | 4 +- packages/standalone/package.json | 4 +- packages/streams/package.json | 4 +- packages/tmlanguage-generator/package.json | 4 +- packages/tspd/package.json | 4 +- packages/versioning/package.json | 4 +- packages/xml/package.json | 4 +- pnpm-lock.yaml | 822 ++++++++---------- pnpm-workspace.yaml | 173 ++-- tsconfig.ws.json | 1 - turbo.json | 2 +- 65 files changed, 724 insertions(+), 1715 deletions(-) delete mode 100644 eslint.config.js create mode 100644 oxlint.config.ts delete mode 100644 packages/eslint-plugin-typespec/CHANGELOG.json delete mode 100644 packages/eslint-plugin-typespec/CHANGELOG.md delete mode 100644 packages/eslint-plugin-typespec/LICENSE delete mode 100644 packages/eslint-plugin-typespec/README.md delete mode 100644 packages/eslint-plugin-typespec/docs/rules/call-decorator.md delete mode 100644 packages/eslint-plugin-typespec/package.json delete mode 100644 packages/eslint-plugin-typespec/src/index.ts delete mode 100644 packages/eslint-plugin-typespec/src/rules/call-decorator.ts delete mode 100644 packages/eslint-plugin-typespec/src/utils.ts delete mode 100644 packages/eslint-plugin-typespec/test/fixtures/file.ts delete mode 100644 packages/eslint-plugin-typespec/test/fixtures/tsconfig.json delete mode 100644 packages/eslint-plugin-typespec/test/global-setup.ts delete mode 100644 packages/eslint-plugin-typespec/test/rules/call-decorator.test.ts delete mode 100644 packages/eslint-plugin-typespec/test/rules/utils.ts delete mode 100644 packages/eslint-plugin-typespec/tsconfig.build.json delete mode 100644 packages/eslint-plugin-typespec/tsconfig.json delete mode 100644 packages/eslint-plugin-typespec/vitest.config.mts diff --git a/.chronus/config.yaml b/.chronus/config.yaml index 06dad2b4c85..39eb1f5dd5b 100644 --- a/.chronus/config.yaml +++ b/.chronus/config.yaml @@ -51,7 +51,6 @@ versionPolicies: - "@typespec/versioning" - "@typespec/rest" - "@typespec/protobuf" - - "@typespec/eslint-plugin" - "@typespec/html-program-viewer" - "@typespec/internal-build-utils" - "typespec-vs" diff --git a/.github/workflows/consistency.yml b/.github/workflows/consistency.yml index 91675258f64..81494fed9cf 100644 --- a/.github/workflows/consistency.yml +++ b/.github/workflows/consistency.yml @@ -100,9 +100,6 @@ jobs: - run: pnpm install name: Install dependencies - - run: pnpm --filter="@typespec/eslint-plugin..." run build - name: Build prettier plugin - - run: pnpm run lint name: Lint diff --git a/.vscode/extensions.json b/.vscode/extensions.json index feb88bb966e..b28cc8334d2 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,6 @@ { "recommendations": [ - "dbaeumer.vscode-eslint", + "oxc.oxc-vscode", "esbenp.prettier-vscode", "streetsidesoftware.code-spell-checker", "astro-build.astro-vscode", diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index 3c82979a9e2..00000000000 --- a/eslint.config.js +++ /dev/null @@ -1,176 +0,0 @@ -// @ts-check -import eslint from "@eslint/js"; -import vitest from "@vitest/eslint-plugin"; -import reactHooks from "eslint-plugin-react-hooks"; -import unicorn from "eslint-plugin-unicorn"; -import { defineConfig } from "eslint/config"; -import tsEslint from "typescript-eslint"; - -/** Config that will apply to all files */ -const allFilesConfig = defineConfig({ - plugins: { - unicorn, - }, - rules: { - /** - * Typescript plugin overrides - */ - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-inferrable-types": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-unused-vars": [ - "warn", - { - varsIgnorePattern: "^_", - argsIgnorePattern: ".*", - ignoreRestSiblings: true, - caughtErrorsIgnorePattern: ".*", - }, - ], - - // This rule is bugged https://github.com/typescript-eslint/typescript-eslint/issues/6538 - "@typescript-eslint/no-misused-promises": "off", - "@typescript-eslint/no-unused-expressions": [ - "warn", - { allowShortCircuit: true, allowTernary: true }, - ], - - /** - * Unicorn - */ - "unicorn/filename-case": ["error", { case: "kebabCase" }], - - /** - * Core - */ - "no-inner-declarations": "off", - "no-empty": "off", - "no-constant-condition": "off", - "no-case-declarations": "off", - "no-ex-assign": "off", - "no-undef": "off", - "prefer-const": [ - "warn", - { - destructuring: "all", - }, - ], - eqeqeq: ["warn", "always", { null: "ignore" }], - - // Do not want console.log left from debugging or using console.log for logging. Use the program logger. - "no-console": "warn", - - // Symbols should have a description so it can be serialized. - "symbol-description": "warn", - }, -}); - -/** Config that will apply to all typescript files only - * @param {string} root - */ -export function getTypeScriptProjectRules(root) { - return defineConfig({ - files: [ - "**/packages/*/src/**/*.ts", - "**/packages/*/src/**/*.tsx", - "**/packages/*/emitter/src/**/*.ts", - ], - ignores: ["**/packages/http-client-csharp/**/*", "**/packages/http-client-python/**/*"], // Ignore isolated modules - plugins: {}, - languageOptions: { - parserOptions: { - projectService: { - allowDefaultProject: ["packages/*/vitest.config.ts"], - }, - tsconfigRootDir: root, - }, - }, - rules: { - // Only put rules here that need typescript project information - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-deprecated": "warn", - }, - }); -} - -/** Config that will apply to all test files only */ -const testFilesConfig = defineConfig({ - /** - * Test files specific rules - */ - files: ["**/*.test.ts"], - plugins: { vitest }, - rules: { - "vitest/no-focused-tests": "warn", - "vitest/no-identical-title": "error", - "vitest/no-commented-out-tests": "warn", - "vitest/no-import-node-test": "warn", - "vitest/require-local-test-context-for-concurrent-snapshots": "warn", - "vitest/valid-describe-callback": "warn", - "vitest/valid-expect": "warn", - "vitest/consistent-test-it": ["warn", { fn: "it" }], - "vitest/no-done-callback": ["warn"], - "vitest/no-duplicate-hooks": ["warn"], - "@typescript-eslint/no-non-null-asserted-optional-chain": "off", - }, -}); - -const jsxFilesConfig = defineConfig({ - files: ["**/*.tsx"], - // @ts-expect-error --- plugins typing issue - plugins: { "react-hooks": reactHooks }, - // Exclude need **/ to make sure this can be reused in typespec-azure - ignores: [ - "**/packages/emitter-framework/src/**/*", - "**/packages/http-client-js/**/*", - "**/packages/http-server-csharp/**/*", - ], - rules: { - "react-hooks/rules-of-hooks": "error", - "react-hooks/exhaustive-deps": "warn", - }, -}); - -export const TypeSpecCommonEslintConfigs = [ - eslint.configs.recommended, - ...tsEslint.configs.recommended, - ...allFilesConfig, - ...jsxFilesConfig, - ...testFilesConfig, -]; - -export default defineConfig( - { - ignores: [ - "**/dist/**/*", - "**/dist-test/**/*", - "**/.temp/**/*", - "**/temp/**/*", - "**/generated-defs/*", - "**/__snapshots__/*", - "**/.astro/*", - "**/website/build/**/*", - "**/.astro/**/*", - "**/.docusaurus/**/*", - "website/src/assets/**/*", - "packages/compiler/templates/**/*", // Ignore the templates which might have invalid code and not follow exactly our rules. - "packages/typespec-vscode/templates/**/*", // Ignore the templates which might have invalid code and not follow exactly our rules. - "packages/http-client-js/test/e2e/generated", // Ignore the generated http client - "packages/http-client-js/sample/output/**/*", // Ignore the generated http client - "packages/http-server-js/test/e2e/generated", // Ignore the generated http server - "**/venv/**/*", // Ignore python virtual env - "**/.vscode-test-web/**/*", // Ignore VSCode test web project - "packages/typespec-vscode/swagger-ui/swagger-ui*", // Ignore swagger-ui-dist files - // TODO: enable - "**/.scripts/**/*", - "eng/tsp-core/scripts/**/*", - "eng/common/scripts/**/*", - "packages/*/scripts/**/*", - ], - }, - ...TypeSpecCommonEslintConfigs, - ...getTypeScriptProjectRules(import.meta.dirname), -); diff --git a/oxlint.config.ts b/oxlint.config.ts new file mode 100644 index 00000000000..82802c595eb --- /dev/null +++ b/oxlint.config.ts @@ -0,0 +1,219 @@ +import { defineConfig } from "oxlint"; + +/** Config that applies to all files */ +const allFilesRules = { + // Core correctness rules + "constructor-super": "error", + "for-direction": "error", + "getter-return": "error", + "no-async-promise-executor": "error", + "no-class-assign": "error", + "no-compare-neg-zero": "error", + "no-cond-assign": "error", + "no-const-assign": "error", + "no-constant-binary-expression": "error", + "no-debugger": "error", + "no-delete-var": "error", + "no-dupe-class-members": "error", + "no-dupe-else-if": "error", + "no-dupe-keys": "error", + "no-duplicate-case": "error", + "no-empty-character-class": "error", + "no-empty-pattern": "error", + "no-empty-static-block": "error", + "no-extra-boolean-cast": "error", + "no-fallthrough": "error", + "no-func-assign": "error", + "no-global-assign": "error", + "no-import-assign": "error", + "no-invalid-regexp": "error", + "no-irregular-whitespace": "error", + "no-loss-of-precision": "error", + "no-misleading-character-class": "error", + "no-new-native-nonconstructor": "error", + "no-nonoctal-decimal-escape": "error", + "no-obj-calls": "error", + "no-prototype-builtins": "error", + "no-redeclare": "error", + "no-regex-spaces": "error", + "no-self-assign": "error", + "no-setter-return": "error", + "no-shadow-restricted-names": "error", + "no-sparse-arrays": "error", + "no-this-before-super": "error", + "no-unassigned-vars": "error", + "no-unexpected-multiline": "error", + "no-unreachable": "error", + "no-unsafe-finally": "error", + "no-unsafe-negation": "error", + "no-unused-labels": "error", + "no-unused-private-class-members": "error", + "no-useless-backreference": "error", + "no-useless-catch": "error", + "no-useless-escape": "error", + "no-with": "error", + "preserve-caught-error": "error", + "require-yield": "error", + "use-isnan": "error", + "valid-typeof": "error", + "no-array-constructor": "error", + + // Disabled rules (intentional patterns in codebase) + "no-control-regex": "off", + "no-unsafe-optional-chaining": "off", + + // Warnings + "no-unused-vars": [ + "warn", + { + varsIgnorePattern: "^_", + argsIgnorePattern: ".*", + ignoreRestSiblings: true, + caughtErrorsIgnorePattern: ".*", + }, + ], + "no-unused-expressions": ["warn", { allowShortCircuit: true, allowTernary: true }], + "prefer-const": ["warn", { destructuring: "all" }], + eqeqeq: ["warn", "always", { null: "ignore" }], + "no-console": "warn", + "symbol-description": "warn", + + // Unicorn - disabled globally, enabled per-override for TS files + "unicorn/filename-case": "off", + + // TypeScript plugin rules + "typescript/ban-ts-comment": "error", + "typescript/no-duplicate-enum-values": "error", + "typescript/no-extra-non-null-assertion": "error", + "typescript/no-misused-new": "error", + "typescript/no-namespace": "error", + "typescript/no-non-null-asserted-optional-chain": "error", + "typescript/no-require-imports": "error", + "typescript/no-this-alias": "error", + "typescript/no-unnecessary-type-constraint": "error", + "typescript/no-unsafe-declaration-merging": "error", + "typescript/no-unsafe-function-type": "error", + "typescript/no-wrapper-object-types": "error", + "typescript/prefer-as-const": "error", + "typescript/prefer-namespace-keyword": "error", + "typescript/triple-slash-reference": "error", +} as const; + +/** Rules for TypeScript files — disables JS-only rules superseded by TS compiler */ +const typescriptFileOverride = { + files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"], + rules: { + "constructor-super": "off", + "getter-return": "off", + "no-class-assign": "off", + "no-const-assign": "off", + "no-dupe-class-members": "off", + "no-dupe-keys": "off", + "no-func-assign": "off", + "no-import-assign": "off", + "no-new-native-nonconstructor": "off", + "no-obj-calls": "off", + "no-redeclare": "off", + "no-setter-return": "off", + "no-this-before-super": "off", + "no-unreachable": "off", + "no-unsafe-negation": "off", + "no-var": "error", + "no-with": "off", + "prefer-rest-params": "error", + "prefer-spread": "error", + "unicorn/filename-case": ["error", { case: "kebabCase" }], + }, +} as const; + +/** React hooks rules for JSX files */ +const jsxFilesOverride = { + files: ["**/*.tsx"], + excludeFiles: [ + "**/packages/emitter-framework/src/**/*", + "**/packages/http-client-js/**/*", + "**/packages/http-server-csharp/**/*", + ], + plugins: ["react"], + rules: { + "react/rules-of-hooks": "error", + "react/exhaustive-deps": "warn", + }, +} as const; + +/** Test file rules */ +const testFilesOverride = { + files: ["**/*.test.ts"], + plugins: ["vitest"], + rules: { + "vitest/no-focused-tests": "warn", + "vitest/no-identical-title": "error", + "vitest/no-commented-out-tests": "warn", + "vitest/no-import-node-test": "warn", + "vitest/require-local-test-context-for-concurrent-snapshots": "warn", + "vitest/valid-describe-callback": "warn", + "vitest/valid-expect": "warn", + "vitest/consistent-test-it": ["warn", { fn: "it" }], + "vitest/no-duplicate-hooks": ["warn"], + "typescript/no-non-null-asserted-optional-chain": "off", + }, +} as const; + +/** + * Shared TypeSpec oxlint configs — can be reused by downstream repos (e.g., typespec-azure). + */ +export const TypeSpecCommonOxlintConfigs = { + allFilesRules, + typescriptFileOverride, + jsxFilesOverride, + testFilesOverride, +}; + +export default defineConfig({ + plugins: ["typescript", "unicorn"], + categories: { + correctness: "off", + }, + env: { + builtin: true, + }, + ignorePatterns: [ + "**/dist/**/*", + "**/dist-test/**/*", + "**/.temp/**/*", + "**/temp/**/*", + "**/generated-defs/*", + "**/__snapshots__/*", + "**/.astro/*", + "**/website/build/**/*", + "**/.astro/**/*", + "**/.docusaurus/**/*", + "website/src/assets/**/*", + "packages/compiler/templates/**/*", + "packages/typespec-vscode/templates/**/*", + "packages/http-client-js/test/e2e/generated", + "packages/http-client-js/sample/output/**/*", + "packages/http-server-js/test/e2e/generated", + "**/venv/**/*", + "**/.vscode-test-web/**/*", + "packages/typespec-vscode/swagger-ui/swagger-ui*", + "**/*.astro", + "**/.scripts/**/*", + "eng/tsp-core/scripts/**/*", + "eng/common/scripts/**/*", + "packages/*/scripts/**/*", + ], + rules: allFilesRules, + overrides: [ + typescriptFileOverride, + jsxFilesOverride, + testFilesOverride, + // Framework-required PascalCase filenames + { + files: ["website/src/components/docusaurus/**/*.ts", "website/src/pages/**/*.ts"], + rules: { + "unicorn/filename-case": "off", + }, + }, + ], +}); diff --git a/package.json b/package.json index 933ddd3a022..4cb28c7292a 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "format:check": "prettier . --check", "format:dir": "prettier --write", "gen-compiler-extern-signature": "pnpm run -r --filter \"@typespec/compiler\" gen-extern-signature", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "merge-coverage": "c8 -- report --reporter=cobertura --reporter=text", "pack:all": "chronus pack --exclude standalone --pack-destination ./temp/artifacts", "preinstall": "npx only-allow pnpm", @@ -42,7 +42,6 @@ "@chronus/chronus": "catalog:", "@chronus/github": "catalog:", "@chronus/github-pr-commenter": "catalog:", - "@eslint/js": "catalog:", "@microsoft/api-extractor": "catalog:", "@octokit/core": "catalog:", "@octokit/plugin-paginate-graphql": "catalog:", @@ -50,13 +49,10 @@ "@types/micromatch": "catalog:", "@types/node": "catalog:", "@vitest/coverage-v8": "catalog:", - "@vitest/eslint-plugin": "catalog:", "c8": "catalog:", "cspell": "catalog:", - "eslint": "catalog:", - "eslint-plugin-react-hooks": "catalog:", - "eslint-plugin-unicorn": "catalog:", "micromatch": "catalog:", + "oxlint": "^1.69.0", "picocolors": "catalog:", "playwright": "catalog:", "prettier": "catalog:", @@ -64,10 +60,9 @@ "prettier-plugin-organize-imports": "catalog:", "prettier-plugin-sh": "catalog:", "rimraf": "catalog:", - "turbo": "catalog:", "tsx": "catalog:", + "turbo": "catalog:", "typescript": "catalog:", - "typescript-eslint": "catalog:", "vitest": "catalog:", "yaml": "catalog:" } diff --git a/packages/asset-emitter/package.json b/packages/asset-emitter/package.json index 8422280eea9..eab855f5fad 100644 --- a/packages/asset-emitter/package.json +++ b/packages/asset-emitter/package.json @@ -32,8 +32,8 @@ "test": "vitest run", "test:watch": "vitest -w", "test:ui": "vitest --ui", - "lint": "eslint . --ext .ts --max-warnings=0", - "lint:fix": "eslint . --fix --ext .ts", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "api-extractor": "api-extractor run --local --verbose" }, "files": [ diff --git a/packages/asset-emitter/src/builders/object-builder.ts b/packages/asset-emitter/src/builders/object-builder.ts index 63076110c5a..3dd6c31ffd9 100644 --- a/packages/asset-emitter/src/builders/object-builder.ts +++ b/packages/asset-emitter/src/builders/object-builder.ts @@ -5,9 +5,8 @@ import { type EmitEntity, EmitterResult } from "../types.js"; const placeholderSym = Symbol("placeholder"); const setSym = Symbol("ObjectBuilder.set"); // eslint is confused by merging generic interface and classes -// eslint-disable-next-line @typescript-eslint/no-unused-vars +// eslint-disable-next-line @typescript-eslint/no-unused-vars, typescript/no-unsafe-declaration-merging export interface ObjectBuilder extends Record {} -// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export class ObjectBuilder { public static SET = setSym; diff --git a/packages/best-practices/package.json b/packages/best-practices/package.json index 9c0153f8f8c..ae9f5efceed 100644 --- a/packages/best-practices/package.json +++ b/packages/best-practices/package.json @@ -32,8 +32,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/bundle-uploader/package.json b/packages/bundle-uploader/package.json index 1f9b20e41a9..2944041cfb1 100644 --- a/packages/bundle-uploader/package.json +++ b/packages/bundle-uploader/package.json @@ -28,8 +28,8 @@ "watch": "tsc -p tsconfig.build.json --watch", "test": "echo 'no test'", "test:ci": "echo 'no test'", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/bundler/package.json b/packages/bundler/package.json index f4c9eb086db..c75596bcd73 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -33,8 +33,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 4ebaa9f1536..338b5247f11 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -101,8 +101,8 @@ "gen-manifest": "node scripts/generate-manifest.js", "regen-nonascii": "node scripts/regen-nonascii.js", "fuzz": "node dist/test/manual/fuzz.js run", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "dependencies": { "@babel/code-frame": "catalog:", diff --git a/packages/emitter-framework/package.json b/packages/emitter-framework/package.json index 4d32d42b5c5..a43e1334baf 100644 --- a/packages/emitter-framework/package.json +++ b/packages/emitter-framework/package.json @@ -18,8 +18,8 @@ "test:ci": "vitest run --coverage --reporter=junit --reporter=default", "prepack": "tsx ../../eng/tsp-core/scripts/strip-dev-import-exports.ts", "postpack": "tsx ../../eng/tsp-core/scripts/strip-dev-import-exports.ts --restore", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "exports": { ".": { diff --git a/packages/eslint-plugin-typespec/CHANGELOG.json b/packages/eslint-plugin-typespec/CHANGELOG.json deleted file mode 100644 index 4166c3c986f..00000000000 --- a/packages/eslint-plugin-typespec/CHANGELOG.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "name": "@typespec/eslint-plugin", - "entries": [ - { - "version": "0.52.0", - "tag": "@typespec/eslint-plugin_v0.52.0", - "date": "Wed, 24 Jan 2024 05:46:53 GMT", - "comments": { - "none": [ - { - "comment": "Update dependencies" - } - ] - } - }, - { - "version": "0.51.0", - "tag": "@typespec/eslint-plugin_v0.51.0", - "date": "Wed, 06 Dec 2023 19:40:58 GMT", - "comments": {} - }, - { - "version": "0.50.0", - "tag": "@typespec/eslint-plugin_v0.50.0", - "date": "Wed, 08 Nov 2023 00:07:17 GMT", - "comments": { - "none": [ - { - "comment": "Update deprecated features preping for eslint 9" - } - ] - } - }, - { - "version": "0.49.0", - "tag": "@typespec/eslint-plugin_v0.49.0", - "date": "Wed, 11 Oct 2023 23:31:35 GMT", - "comments": { - "none": [ - { - "comment": "Update dependencies" - } - ] - } - }, - { - "version": "0.48.0", - "tag": "@typespec/eslint-plugin_v0.48.0", - "date": "Tue, 12 Sep 2023 21:47:11 GMT", - "comments": {} - }, - { - "version": "0.47.0", - "tag": "@typespec/eslint-plugin_v0.47.0", - "date": "Tue, 08 Aug 2023 22:32:10 GMT", - "comments": { - "none": [ - { - "comment": "Update dependencies" - } - ] - } - }, - { - "version": "0.46.0", - "tag": "@typespec/eslint-plugin_v0.46.0", - "date": "Tue, 11 Jul 2023 22:06:00 GMT", - "comments": { - "none": [ - { - "comment": "Update dependencies" - } - ] - } - }, - { - "version": "0.45.0", - "tag": "@typespec/eslint-plugin_v0.45.0", - "date": "Tue, 06 Jun 2023 22:44:16 GMT", - "comments": {} - }, - { - "version": "0.44.0", - "tag": "@typespec/eslint-plugin_v0.44.0", - "date": "Wed, 10 May 2023 21:24:00 GMT", - "comments": { - "none": [ - { - "comment": "Update dependencies" - } - ], - "dependency": [ - { - "comment": "Updating dependency \"@typespec/eslint-config-typespec\" from `~0.6.0` to `~0.7.0`" - } - ] - } - }, - { - "version": "0.43.0", - "tag": "@typespec/eslint-plugin_v0.43.0", - "date": "Tue, 11 Apr 2023 18:49:17 GMT", - "comments": {} - }, - { - "version": "0.42.0", - "tag": "@typespec/eslint-plugin_v0.42.0", - "date": "Mon, 13 Mar 2023 21:30:44 GMT", - "comments": {} - }, - { - "version": "0.41.0", - "tag": "@typespec/eslint-plugin_v0.41.0", - "date": "Fri, 03 Mar 2023 19:59:17 GMT", - "comments": { - "none": [ - { - "comment": "Revert back changelog" - }, - { - "comment": "Rename to TypeSpec" - }, - { - "comment": "Update homepage link" - } - ], - "dependency": [ - { - "comment": "Updating dependency \"@typespec/eslint-config-typespec\" from `~0.5.0` to `~0.6.0`" - } - ] - } - }, - { - "version": "0.40.0", - "tag": "@cadl-lang/eslint-plugin_v0.40.0", - "date": "Tue, 07 Feb 2023 21:56:17 GMT", - "comments": {} - }, - { - "version": "0.39.0", - "tag": "@cadl-lang/eslint-plugin_v0.39.0", - "date": "Fri, 13 Jan 2023 00:05:26 GMT", - "comments": {} - }, - { - "version": "0.38.0", - "tag": "@cadl-lang/eslint-plugin_v0.38.0", - "date": "Wed, 07 Dec 2022 17:21:52 GMT", - "comments": { - "patch": [ - { - "comment": "Update dependencies" - } - ], - "dependency": [ - { - "comment": "Updating dependency \"@cadl-lang/eslint-config-cadl\" from `~0.4.1` to `~0.5.0`" - } - ] - } - }, - { - "version": "0.1.1", - "tag": "@cadl-lang/eslint-plugin_v0.1.1", - "date": "Thu, 11 Aug 2022 19:05:23 GMT", - "comments": { - "dependency": [ - { - "comment": "Updating dependency \"@cadl-lang/eslint-config-cadl\" from `~0.3.0` to `~0.4.0`" - } - ] - } - }, - { - "version": "0.1.0", - "tag": "@cadl-lang/eslint-plugin_v0.1.0", - "date": "Mon, 13 Jun 2022 23:42:28 GMT", - "comments": {} - } - ] -} diff --git a/packages/eslint-plugin-typespec/CHANGELOG.md b/packages/eslint-plugin-typespec/CHANGELOG.md deleted file mode 100644 index 34f29fe6756..00000000000 --- a/packages/eslint-plugin-typespec/CHANGELOG.md +++ /dev/null @@ -1,298 +0,0 @@ -# Change Log - @typespec/eslint-plugin - -## 0.83.0 - -No changes, version bump only. - -## 0.82.0 - -No changes, version bump only. - -## 0.81.0 - -No changes, version bump only. - -## 0.80.0 - -### Bump dependencies - -- [#9838](https://github.com/microsoft/typespec/pull/9838) Upgrade dependencies - - -## 0.79.0 - -No changes, version bump only. - -## 0.78.0 - -### Bump dependencies - -- [#9223](https://github.com/microsoft/typespec/pull/9223) Upgrade dependencies - - -## 0.77.0 - -### Bump dependencies - -- [#9046](https://github.com/microsoft/typespec/pull/9046) Upgrade dependencies - - -## 0.76.0 - -### Bump dependencies - -- [#8823](https://github.com/microsoft/typespec/pull/8823) Upgrade dependencies - - -## 0.75.0 - -No changes, version bump only. - -## 0.74.0 - -### Bump dependencies - -- [#8317](https://github.com/microsoft/typespec/pull/8317) Upgrade dependencies - - -## 0.73.0 - -### Bump dependencies - -- [#7978](https://github.com/microsoft/typespec/pull/7978) Upgrade dependencies - - -## 0.72.0 - -### Bump dependencies - -- [#7674](https://github.com/microsoft/typespec/pull/7674) Upgrade dependencies - - -## 0.71.0 - -No changes, version bump only. - -## 0.70.0 - -No changes, version bump only. - -## 0.69.0 - -No changes, version bump only. - -## 0.68.0 - -### Bump dependencies - -- [#6595](https://github.com/microsoft/typespec/pull/6595) Upgrade dependencies - - -## 0.67.0 - -### Bump dependencies - -- [#6266](https://github.com/microsoft/typespec/pull/6266) Update dependencies - - -## 0.66.0 - -No changes, version bump only. - -## 0.65.0 - -### Bump dependencies - -- [#5690](https://github.com/microsoft/typespec/pull/5690) Upgrade dependencies - - -## 0.64.0 - -No changes, version bump only. - -## 0.63.0 - -No changes, version bump only. - -## 0.62.0 - -### Bump dependencies - -- [#4679](https://github.com/microsoft/typespec/pull/4679) Upgrade dependencies - October 2024 - - -## 0.61.0 - -### Bump dependencies - -- [#4424](https://github.com/microsoft/typespec/pull/4424) Bump dependencies - - -## 0.60.0 - -No changes, version bump only. - -## 0.59.0 - -### Bump dependencies - -- [#3948](https://github.com/microsoft/typespec/pull/3948) Update dependencies - - -## 0.58.0 - -### Bump dependencies - -- [#3718](https://github.com/microsoft/typespec/pull/3718) Dependency updates July 2024 - - -## 0.57.0 - -### Bump dependencies - -- [#3401](https://github.com/microsoft/typespec/pull/3401) Update dependencies - May 2024 - - -## 0.56.0 - -### Bump dependencies - -- [#3169](https://github.com/microsoft/typespec/pull/3169) Update dependencies - - -## 0.55.0 - -### Bump dependencies - -- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies - - -## 0.54.0 - -### Bump dependencies - -- [#2900](https://github.com/microsoft/typespec/pull/2900) Update dependencies - - -## 0.53.0 - - -## 0.52.0 - -Wed, 24 Jan 2024 05:46:53 GMT - -### Updates - -- Update dependencies - -## 0.51.0 - -Wed, 06 Dec 2023 19:40:58 GMT - -_Version update only_ - -## 0.50.0 - -Wed, 08 Nov 2023 00:07:17 GMT - -### Updates - -- Update deprecated features preping for eslint 9 - -## 0.49.0 - -Wed, 11 Oct 2023 23:31:35 GMT - -### Updates - -- Update dependencies - -## 0.48.0 - -Tue, 12 Sep 2023 21:47:11 GMT - -_Version update only_ - -## 0.47.0 - -Tue, 08 Aug 2023 22:32:10 GMT - -### Updates - -- Update dependencies - -## 0.46.0 - -Tue, 11 Jul 2023 22:06:00 GMT - -### Updates - -- Update dependencies - -## 0.45.0 - -Tue, 06 Jun 2023 22:44:16 GMT - -_Version update only_ - -## 0.44.0 - -Wed, 10 May 2023 21:24:00 GMT - -### Updates - -- Update dependencies - -## 0.43.0 - -Tue, 11 Apr 2023 18:49:17 GMT - -_Version update only_ - -## 0.42.0 - -Mon, 13 Mar 2023 21:30:44 GMT - -_Version update only_ - -## 0.41.0 - -Fri, 03 Mar 2023 19:59:17 GMT - -### Updates - -- Revert back changelog -- Rename to TypeSpec -- Update homepage link - -## 0.40.0 - -Tue, 07 Feb 2023 21:56:17 GMT - -_Version update only_ - -## 0.39.0 - -Fri, 13 Jan 2023 00:05:26 GMT - -_Version update only_ - -## 0.38.0 - -Wed, 07 Dec 2022 17:21:52 GMT - -### Patches - -- Update dependencies - -## 0.1.1 - -Thu, 11 Aug 2022 19:05:23 GMT - -_Version update only_ - -## 0.1.0 - -Mon, 13 Jun 2022 23:42:28 GMT - -_Initial release_ diff --git a/packages/eslint-plugin-typespec/LICENSE b/packages/eslint-plugin-typespec/LICENSE deleted file mode 100644 index 21071075c24..00000000000 --- a/packages/eslint-plugin-typespec/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE diff --git a/packages/eslint-plugin-typespec/README.md b/packages/eslint-plugin-typespec/README.md deleted file mode 100644 index 0c19849f609..00000000000 --- a/packages/eslint-plugin-typespec/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# TypeSpec Eslint Plugin - -## Installation - -Install the package as a dev dependency. - -``` -npm install -D @typespec/eslint-plugin -``` - -## Usage - -Add the following to your eslint config - -```yaml -plugins: ["@typespec/eslint-plugin"], -extends: ["plugin:@typespec/eslint-plugin/recommended"], -``` - -## Rules - -- [call-decorator](./docs/rules/call-decorator.md) diff --git a/packages/eslint-plugin-typespec/docs/rules/call-decorator.md b/packages/eslint-plugin-typespec/docs/rules/call-decorator.md deleted file mode 100644 index b4d98d5050e..00000000000 --- a/packages/eslint-plugin-typespec/docs/rules/call-decorator.md +++ /dev/null @@ -1,57 +0,0 @@ -Enforces calling other TypeSpec decorator using `context.call` instead of calling the decorator function directly. - -Calling the decorator function directly can result in diagnostics with incorrect location. - -## Rule Details - -## How to Use - -```jsonc -{ - "@typespec/call-decorator": "warn", -} -``` - - - -#### ❌ Incorrect - -```ts -function $foo(context: DecoratorContext, target: Type) {} - -function $bar(context: DecoratorContext, target: Type) { - $foo(context, target); -} -``` - -```ts -function $foo(context: DecoratorContext, target: Type, name: string) {} - -function $bar(context: DecoratorContext, target: Type, name: string) { - $foo(context, target, `bar.${name}`); -} -``` - -#### ✅ Correct - -```ts -function $foo(context: DecoratorContext, target: Type) {} - -function $bar(context: DecoratorContext, target: Type) { - context.call($foo, target); -} -``` - -```ts -function $foo(context: DecoratorContext, target: Type, name: string) {} - -function $bar(context: DecoratorContext, target: Type, name: string) { - context.call($foo, target, `bar.${name}`); -} -``` - -## Attributes - -- [x] ✅ Recommended -- [x] 🔧 Fixable -- [x] 💭 Requires type information diff --git a/packages/eslint-plugin-typespec/package.json b/packages/eslint-plugin-typespec/package.json deleted file mode 100644 index 08361c81f70..00000000000 --- a/packages/eslint-plugin-typespec/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "@typespec/eslint-plugin", - "version": "0.83.0", - "author": "Microsoft Corporation", - "description": "Eslint plugin providing set of rules to be used in the JS/TS code of TypeSpec libraries", - "homepage": "https://typespec.io", - "readme": "https://github.com/microsoft/typespec/blob/main/README.md", - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/microsoft/typespec.git" - }, - "bugs": { - "url": "https://github.com/microsoft/typespec/issues" - }, - "keywords": [ - "typespec" - ], - "type": "commonjs", - "main": "dist/src/index.js", - "engines": { - "node": ">=22.0.0" - }, - "scripts": { - "clean": "rimraf ./dist ./temp", - "build": "tsc -p tsconfig.build.json", - "watch": "tsc -p tsconfig.build.json --watch", - "test": "vitest run", - "test:ui": "vitest --ui", - "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" - }, - "files": [ - "lib/*.tsp", - "dist/**", - "!dist/test/**" - ], - "peerDependencies": { - "eslint": "catalog:" - }, - "devDependencies": { - "@types/node": "catalog:", - "@typescript-eslint/parser": "catalog:", - "@typescript-eslint/rule-tester": "catalog:", - "@typescript-eslint/types": "catalog:", - "@vitest/coverage-v8": "catalog:", - "@vitest/ui": "catalog:", - "eslint": "catalog:", - "rimraf": "catalog:", - "typescript": "catalog:", - "vitest": "catalog:" - }, - "dependencies": { - "@typescript-eslint/utils": "catalog:" - } -} diff --git a/packages/eslint-plugin-typespec/src/index.ts b/packages/eslint-plugin-typespec/src/index.ts deleted file mode 100644 index 9e5a9402288..00000000000 --- a/packages/eslint-plugin-typespec/src/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { callDecoratorRule } from "./rules/call-decorator.js"; - -export const rules: Record = { - "call-decorator": callDecoratorRule, -}; - -export const configs = { - recommended: { - rules: { - "@typespec/call-decorator": "warn", - }, - }, -}; diff --git a/packages/eslint-plugin-typespec/src/rules/call-decorator.ts b/packages/eslint-plugin-typespec/src/rules/call-decorator.ts deleted file mode 100644 index 57e1257c151..00000000000 --- a/packages/eslint-plugin-typespec/src/rules/call-decorator.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { TSESLint, TSESTree } from "@typescript-eslint/utils"; -import ts from "typescript"; -import { createRule } from "../utils.js"; - -const messages = { - default: "Use context.call to call a TypeSpec decorator function.", - suggestReplaceWithContextCall: "Replace with context.call", -}; - -export const callDecoratorRule = createRule({ - create(context) { - const parserServices = context.sourceCode.parserServices; - if (parserServices === undefined || !parserServices.program) { - return {}; - } - const checker = parserServices.program.getTypeChecker(); - return { - CallExpression(node) { - if (node.callee.type === TSESTree.AST_NODE_TYPES.Identifier) { - const functionName = node.callee.name; - if (functionName.startsWith("$")) { - const tsNode = parserServices.esTreeNodeToTSNodeMap?.get(node); - if (tsNode === undefined) { - return; - } - const signature = checker.getResolvedSignature(tsNode); - if (signature === undefined) { - return; - } - - if (isTypeSpecFunctionSignature(checker, signature, tsNode)) { - context.report({ - messageId: "default", - node, - suggest: [ - { - messageId: "suggestReplaceWithContextCall", - fix: (fixer): TSESLint.RuleFix[] => { - return [ - fixer.replaceText(node.callee, `context.call`), - fixer.replaceText(node.arguments[0], functionName), - ]; - }, - }, - ], - }); - } - } - } - }, - }; - }, - name: "call-decorator", - meta: { - docs: { - description: "Calling a TypeSpec decorator from JS/TS code should be done with context.call", - }, - hasSuggestions: true, - messages, - type: "suggestion", - schema: [], - }, - defaultOptions: [], -}); - -function isTypeSpecFunctionSignature( - checker: ts.TypeChecker, - signature: ts.Signature, - tsNode: ts.Node, -): boolean { - if (signature.parameters.length < 2) { - return false; - } - const contextParameter = signature.parameters[0]; - const contextParamType = checker.getTypeOfSymbolAtLocation(contextParameter, tsNode); - if ( - (contextParamType.flags & ts.TypeFlags.StructuredType && - contextParamType.aliasSymbol?.name === "DecoratorContext") || - contextParamType.symbol?.name === "DecoratorContext" - ) { - return true; - } - return false; -} diff --git a/packages/eslint-plugin-typespec/src/utils.ts b/packages/eslint-plugin-typespec/src/utils.ts deleted file mode 100644 index 2aa437ad396..00000000000 --- a/packages/eslint-plugin-typespec/src/utils.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ESLintUtils } from "@typescript-eslint/utils"; - -// TODO get rule url -export const createRule = ESLintUtils.RuleCreator( - (name) => - `https://github.com/microsoft/typespec/tree/main/packages/eslint-plugin-typespec/docs/rules/${name}.md`, -); diff --git a/packages/eslint-plugin-typespec/test/fixtures/file.ts b/packages/eslint-plugin-typespec/test/fixtures/file.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/eslint-plugin-typespec/test/fixtures/tsconfig.json b/packages/eslint-plugin-typespec/test/fixtures/tsconfig.json deleted file mode 100644 index 7e9126b848c..00000000000 --- a/packages/eslint-plugin-typespec/test/fixtures/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "jsx": "preserve", - "target": "es5", - "module": "commonjs", - "strict": true, - "esModuleInterop": true, - "lib": ["es2015", "es2017", "esnext"], - "experimentalDecorators": true - }, - "include": ["file.ts"] -} diff --git a/packages/eslint-plugin-typespec/test/global-setup.ts b/packages/eslint-plugin-typespec/test/global-setup.ts deleted file mode 100644 index 753b4965aa1..00000000000 --- a/packages/eslint-plugin-typespec/test/global-setup.ts +++ /dev/null @@ -1,11 +0,0 @@ -// Preload the parser so it doesn't slow down the first test as much -import "@typescript-eslint/parser"; -import { RuleTester } from "@typescript-eslint/rule-tester"; -import * as vitest from "vitest"; - -RuleTester.afterAll = vitest.afterAll; - -// If you are not using vitest with globals: true (https://vitest.dev/config/#globals): -RuleTester.it = vitest.it; -RuleTester.itOnly = vitest.it.only; -RuleTester.describe = vitest.describe; diff --git a/packages/eslint-plugin-typespec/test/rules/call-decorator.test.ts b/packages/eslint-plugin-typespec/test/rules/call-decorator.test.ts deleted file mode 100644 index ea96d6d0e2a..00000000000 --- a/packages/eslint-plugin-typespec/test/rules/call-decorator.test.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { RuleTester } from "@typescript-eslint/rule-tester"; -import { callDecoratorRule } from "../../src/rules/call-decorator.js"; -import { getFixturesRootDir } from "./utils.js"; - -const rootDir = getFixturesRootDir(); - -const ruleTester = new RuleTester({ - languageOptions: { - parserOptions: { - project: "./tsconfig.json", - tsconfigRootDir: rootDir, - }, - }, -}); - -ruleTester.run("call-decorator", callDecoratorRule, { - valid: [ - { - name: "Valid if using .call to call decorator", - code: ` -interface DecoratorContext {}; interface Type {}; - -function $foo(context: DecoratorContext, target: Type) {} - -function $bar(context: DecoratorContext, target: Type) { - context.call($bar, target); -} - `, - }, - { - name: "Valid if passing context to a non decorator function", - code: ` -interface DecoratorContext {}; interface Type {}; - -function setFoo(context: DecoratorContext, target: Type) {} - -function $bar(context: DecoratorContext, target: Type) { - setFoo(context, target); -} - `, - }, - ], - invalid: [ - { - code: ` -interface DecoratorContext {}; interface Type {}; - -function $foo(context: DecoratorContext, target: Type) {} - -function $bar(context: DecoratorContext, target: Type) { - $foo(context, target); -} - `, - errors: [ - { - line: 7, - messageId: "default", - suggestions: [ - { - messageId: "suggestReplaceWithContextCall", - output: ` -interface DecoratorContext {}; interface Type {}; - -function $foo(context: DecoratorContext, target: Type) {} - -function $bar(context: DecoratorContext, target: Type) { - context.call($foo, target); -} - `, - }, - ], - }, - ], - }, - ], -}); diff --git a/packages/eslint-plugin-typespec/test/rules/utils.ts b/packages/eslint-plugin-typespec/test/rules/utils.ts deleted file mode 100644 index b43e1b3f47e..00000000000 --- a/packages/eslint-plugin-typespec/test/rules/utils.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { resolve } from "path"; - -export function getFixturesRootDir(): string { - return resolve(__dirname, "../../test/fixtures"); -} diff --git a/packages/eslint-plugin-typespec/tsconfig.build.json b/packages/eslint-plugin-typespec/tsconfig.build.json deleted file mode 100644 index 33eafb056f2..00000000000 --- a/packages/eslint-plugin-typespec/tsconfig.build.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src/**/*.ts", "test/**/*.ts"], - "references": [ - { "path": "../compiler/tsconfig.build.json" }, - { "path": "../rest/tsconfig.build.json" }, - { "path": "../openapi/tsconfig.build.json" } - ] -} diff --git a/packages/eslint-plugin-typespec/tsconfig.json b/packages/eslint-plugin-typespec/tsconfig.json deleted file mode 100644 index 460f1979bf5..00000000000 --- a/packages/eslint-plugin-typespec/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "references": [ - { "path": "../compiler/tsconfig.json" }, - { "path": "../rest/tsconfig.json" }, - { "path": "../openapi/tsconfig.json" } - ], - "compilerOptions": { - "outDir": "dist", - "rootDir": ".", - "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo", - "skipLibCheck": true - } -} diff --git a/packages/eslint-plugin-typespec/vitest.config.mts b/packages/eslint-plugin-typespec/vitest.config.mts deleted file mode 100644 index 199c3470010..00000000000 --- a/packages/eslint-plugin-typespec/vitest.config.mts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig, mergeConfig } from "vitest/config"; -import { defaultTypeSpecVitestConfig } from "../../vitest.config.js"; - -export default mergeConfig( - defaultTypeSpecVitestConfig, - defineConfig({ - test: { - setupFiles: ["./test/global-setup.ts"], - testTimeout: 10_000, - }, - }), -); diff --git a/packages/events/package.json b/packages/events/package.json index fa5de32044d..a5716d2aefa 100644 --- a/packages/events/package.json +++ b/packages/events/package.json @@ -43,8 +43,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test-official": "vitest run --coverage --reporter=junit --reporter=default --no-file-parallelism", - "lint": "eslint . --ext .ts --max-warnings=0", - "lint:fix": "eslint . --fix --ext .ts", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --llmstxt --output-dir ../../website/src/content/docs/docs/libraries/events/reference" }, "files": [ diff --git a/packages/html-program-viewer/package.json b/packages/html-program-viewer/package.json index 969981bc911..63aeadd2f43 100644 --- a/packages/html-program-viewer/package.json +++ b/packages/html-program-viewer/package.json @@ -40,8 +40,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "dist/**", diff --git a/packages/http-canonicalization/package.json b/packages/http-canonicalization/package.json index 6be34e87582..e88ce77b1ca 100644 --- a/packages/http-canonicalization/package.json +++ b/packages/http-canonicalization/package.json @@ -18,8 +18,8 @@ "test:ci": "vitest run --coverage --reporter=junit --reporter=default", "prepack": "tsx ../../eng/tsp-core/scripts/strip-dev-import-exports.ts", "postpack": "tsx ../../eng/tsp-core/scripts/strip-dev-import-exports.ts --restore", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "exports": { ".": { diff --git a/packages/http-client-js/package.json b/packages/http-client-js/package.json index 383ee7015cb..5cb58620450 100644 --- a/packages/http-client-js/package.json +++ b/packages/http-client-js/package.json @@ -8,8 +8,8 @@ "scripts": { "build": "alloy build", "clean": "rimraf ./dist", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "watch": "alloy build --watch", "test": "vitest run", "test:ui": "vitest --ui", diff --git a/packages/http-client/package.json b/packages/http-client/package.json index 08146247242..87997584ea9 100644 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -53,8 +53,8 @@ "test:ui": "vitest --ui", "test:watch": "vitest -w", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint src/ test/ --report-unused-disable-directives --max-warnings=0", - "lint:fix": "eslint . --report-unused-disable-directives --fix", + "lint": "oxlint src/ test/ --deny-warnings", + "lint:fix": "oxlint . --fix", "format": "prettier . --write", "format:check": "prettier --check ." } diff --git a/packages/http-server-csharp/package.json b/packages/http-server-csharp/package.json index b151564e7f9..2f73b24e9e4 100644 --- a/packages/http-server-csharp/package.json +++ b/packages/http-server-csharp/package.json @@ -45,8 +45,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --output-dir ../../website/src/content/docs/docs/emitters/servers/http-server-csharp/reference --skip-js", "emit:scenarios": "tsx eng/scripts/emit-scenarios.js --build true", "test:scenarios": "vitest run --config ./vitest.config.scenarios.js" diff --git a/packages/http-server-js/build-helpers.ts b/packages/http-server-js/build-helpers.ts index 022e502bfb4..535980c9132 100644 --- a/packages/http-server-js/build-helpers.ts +++ b/packages/http-server-js/build-helpers.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -/* eslint no-console: "off" */ +/* eslint-disable no-console */ import fs from "node:fs/promises"; import path from "node:path"; diff --git a/packages/http-server-js/package.json b/packages/http-server-js/package.json index 4bd179ca30a..833022e90f4 100644 --- a/packages/http-server-js/package.json +++ b/packages/http-server-js/package.json @@ -41,8 +41,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --output-dir ../../website/src/content/docs/docs/emitters/servers/http-server-js/reference --skip-js", "test:e2e": "pnpm emit:e2e && pnpm run:e2e", "emit:e2e": "node eng/scripts/emit-e2e.js", diff --git a/packages/http/package.json b/packages/http/package.json index 3c224aade2f..a0c0c7b77c5 100644 --- a/packages/http/package.json +++ b/packages/http/package.json @@ -64,8 +64,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --typekits --llmstxt --output-dir ../../website/src/content/docs/docs/libraries/http/reference" }, "files": [ diff --git a/packages/internal-build-utils/package.json b/packages/internal-build-utils/package.json index 6c4b78558cc..cadac80e244 100644 --- a/packages/internal-build-utils/package.json +++ b/packages/internal-build-utils/package.json @@ -31,8 +31,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/json-schema/package.json b/packages/json-schema/package.json index 47e877acb76..a46d9ae1fea 100644 --- a/packages/json-schema/package.json +++ b/packages/json-schema/package.json @@ -43,8 +43,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --llmstxt --output-dir ../../website/src/content/docs/docs/emitters/json-schema/reference", "api-extractor": "api-extractor run --local --verbose" }, diff --git a/packages/library-linter/package.json b/packages/library-linter/package.json index c3d7b518603..140baacb5f0 100644 --- a/packages/library-linter/package.json +++ b/packages/library-linter/package.json @@ -40,8 +40,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/monarch/package.json b/packages/monarch/package.json index ea15663da43..2f41b59f4c6 100644 --- a/packages/monarch/package.json +++ b/packages/monarch/package.json @@ -33,8 +33,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/mutator-framework/package.json b/packages/mutator-framework/package.json index 0c280ab4853..1ac77a8dbef 100644 --- a/packages/mutator-framework/package.json +++ b/packages/mutator-framework/package.json @@ -18,8 +18,8 @@ "test:ci": "vitest run --coverage --reporter=junit --reporter=default", "prepack": "tsx ../../eng/tsp-core/scripts/strip-dev-import-exports.ts", "postpack": "tsx ../../eng/tsp-core/scripts/strip-dev-import-exports.ts --restore", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "exports": { ".": { diff --git a/packages/openapi/package.json b/packages/openapi/package.json index d23079df62e..de6796960f7 100644 --- a/packages/openapi/package.json +++ b/packages/openapi/package.json @@ -43,8 +43,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --llmstxt --output-dir ../../website/src/content/docs/docs/libraries/openapi/reference", "api-extractor": "api-extractor run --local --verbose" }, diff --git a/packages/openapi/src/lib.ts b/packages/openapi/src/lib.ts index a62e2dd2f87..ef101fd71c9 100644 --- a/packages/openapi/src/lib.ts +++ b/packages/openapi/src/lib.ts @@ -1,5 +1,7 @@ import { createTypeSpecLibrary, paramMessage } from "@typespec/compiler"; +console.log("Abc"); + export const $lib = createTypeSpecLibrary({ name: "@typespec/openapi", diagnostics: { diff --git a/packages/openapi3/package.json b/packages/openapi3/package.json index f3903fe4a35..f503c082720 100644 --- a/packages/openapi3/package.json +++ b/packages/openapi3/package.json @@ -50,8 +50,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --llmstxt --output-dir ../../website/src/content/docs/docs/emitters/openapi3/reference", "regen-specs": "cross-env RECORD=true vitest run", "gen-version": "node scripts/generate-version.js", diff --git a/packages/pack/package.json b/packages/pack/package.json index 7e12c624835..82916c8522a 100644 --- a/packages/pack/package.json +++ b/packages/pack/package.json @@ -36,8 +36,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/playground-website/package.json b/packages/playground-website/package.json index b824cc08ee6..bf89badef65 100644 --- a/packages/playground-website/package.json +++ b/packages/playground-website/package.json @@ -44,8 +44,8 @@ "watch": "vite", "test:e2e": "cross-env PW_EXPERIMENTAL_TS_ESM=1 playwright test -c e2e ", "test:e2e:headed": "cross-env PW_EXPERIMENTAL_TS_ESM=1 playwright test -c e2e --headed", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/playground/package.json b/packages/playground/package.json index cbe596aa07e..99a7b42743b 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -63,8 +63,8 @@ "start": "vite", "test": "vitest run", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/protobuf/package.json b/packages/protobuf/package.json index 30efbf3acfc..e22fce2a25e 100644 --- a/packages/protobuf/package.json +++ b/packages/protobuf/package.json @@ -36,8 +36,8 @@ "gen-extern-signature": "tspd --enable-experimental gen-extern-signature .", "test": "vitest run", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --llmstxt --output-dir ../../website/src/content/docs/docs/emitters/protobuf/reference" }, "peerDependencies": { diff --git a/packages/react-components/package.json b/packages/react-components/package.json index 99ebbe2fa7f..d647995512e 100644 --- a/packages/react-components/package.json +++ b/packages/react-components/package.json @@ -36,8 +36,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "dist/**", diff --git a/packages/rest/package.json b/packages/rest/package.json index 00443a36feb..a7ddff22cf0 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -43,8 +43,8 @@ "test:watch": "vitest --watch", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --llmstxt --output-dir ../../website/src/content/docs/docs/libraries/rest/reference" }, "files": [ diff --git a/packages/spec-dashboard/package.json b/packages/spec-dashboard/package.json index f241c9e0eb0..1771864c1b3 100644 --- a/packages/spec-dashboard/package.json +++ b/packages/spec-dashboard/package.json @@ -12,8 +12,8 @@ "test:skip": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "exports": { ".": { diff --git a/packages/sse/package.json b/packages/sse/package.json index f6916f686bc..76e90678cfd 100644 --- a/packages/sse/package.json +++ b/packages/sse/package.json @@ -39,8 +39,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test-official": "vitest run --coverage --reporter=junit --reporter=default --no-file-parallelism", - "lint": "eslint . --ext .ts --max-warnings=0", - "lint:fix": "eslint . --fix --ext .ts", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --output-dir ../../website/src/content/docs/docs/libraries/sse/reference" }, "files": [ diff --git a/packages/standalone/package.json b/packages/standalone/package.json index 3bfea59972f..c6364e9be17 100644 --- a/packages/standalone/package.json +++ b/packages/standalone/package.json @@ -30,8 +30,8 @@ "test:e2e": "pnpm check", "test:watch": "vitest -w", "test:ui": "vitest --ui", - "lint": "eslint . --ext .ts --max-warnings=0", - "lint:fix": "eslint . --fix --ext .ts" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/streams/package.json b/packages/streams/package.json index 78e5852fc02..aef688c0ab7 100644 --- a/packages/streams/package.json +++ b/packages/streams/package.json @@ -43,8 +43,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test-official": "vitest run --coverage --reporter=junit --reporter=default --no-file-parallelism", - "lint": "eslint . --ext .ts --max-warnings=0", - "lint:fix": "eslint . --fix --ext .ts", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --llmstxt --output-dir ../../website/src/content/docs/docs/libraries/streams/reference" }, "files": [ diff --git a/packages/tmlanguage-generator/package.json b/packages/tmlanguage-generator/package.json index 7ed9762bc50..480f1b35931 100644 --- a/packages/tmlanguage-generator/package.json +++ b/packages/tmlanguage-generator/package.json @@ -31,8 +31,8 @@ "clean": "rimraf ./dist ./temp", "build": "tsc -p tsconfig.build.json", "watch": "tsc -p tsconfig.build.json --watch", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "dist/**", diff --git a/packages/tspd/package.json b/packages/tspd/package.json index 76a3f491c0d..48f762eee3c 100644 --- a/packages/tspd/package.json +++ b/packages/tspd/package.json @@ -46,8 +46,8 @@ "test:watch": "vitest --watch", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix" + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix" }, "files": [ "lib/*.tsp", diff --git a/packages/versioning/package.json b/packages/versioning/package.json index 6c0bdec3159..58e83edbdc5 100644 --- a/packages/versioning/package.json +++ b/packages/versioning/package.json @@ -42,8 +42,8 @@ "test": "vitest run", "test:ui": "vitest --ui", "test:ci": "vitest run --coverage --reporter=junit --reporter=default", - "lint": "eslint . --max-warnings=0", - "lint:fix": "eslint . --fix", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --llmstxt --output-dir ../../website/src/content/docs/docs/libraries/versioning/reference" }, "files": [ diff --git a/packages/xml/package.json b/packages/xml/package.json index 82a424f2d5f..d7391c0cace 100644 --- a/packages/xml/package.json +++ b/packages/xml/package.json @@ -39,8 +39,8 @@ "test:watch": "vitest -w", "test:ui": "vitest --ui", "test-official": "vitest run --coverage --reporter=junit --reporter=default --no-file-parallelism", - "lint": "eslint . --ext .ts --max-warnings=0", - "lint:fix": "eslint . --fix --ext .ts", + "lint": "oxlint . --deny-warnings", + "lint:fix": "oxlint . --fix", "regen-docs": "tspd doc . --enable-experimental --output-dir ../../website/src/content/docs/docs/libraries/xml/reference", "api-extractor": "api-extractor run --local --verbose" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 032a9ef6953..4f11c9abbc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,9 +66,6 @@ catalogs: '@docsearch/js': specifier: ^4.6.2 version: 4.6.3 - '@eslint/js': - specifier: ^10.0.1 - version: 10.0.1 '@expressive-code/core': specifier: ^0.42.0 version: 0.42.0 @@ -189,18 +186,6 @@ catalogs: '@types/yargs': specifier: ^17.0.35 version: 17.0.35 - '@typescript-eslint/parser': - specifier: ^8.58.1 - version: 8.60.0 - '@typescript-eslint/rule-tester': - specifier: ^8.58.1 - version: 8.60.0 - '@typescript-eslint/types': - specifier: ^8.58.1 - version: 8.60.0 - '@typescript-eslint/utils': - specifier: ^8.58.1 - version: 8.60.0 '@typespec/ts-http-runtime': specifier: 0.3.5 version: 0.3.5 @@ -210,9 +195,6 @@ catalogs: '@vitest/coverage-v8': specifier: ^4.1.3 version: 4.1.7 - '@vitest/eslint-plugin': - specifier: ^1.6.16 - version: 1.6.18 '@vitest/ui': specifier: ^4.1.3 version: 4.1.7 @@ -303,15 +285,6 @@ catalogs: esbuild-plugins-node-modules-polyfill: specifier: ^1.8.1 version: 1.8.1 - eslint: - specifier: ^10.2.0 - version: 10.4.1 - eslint-plugin-react-hooks: - specifier: 7.1.1 - version: 7.1.1 - eslint-plugin-unicorn: - specifier: ^64.0.0 - version: 64.0.0 execa: specifier: ^9.6.1 version: 9.6.1 @@ -474,9 +447,6 @@ catalogs: typescript: specifier: ~6.0.2 version: 6.0.3 - typescript-eslint: - specifier: ^8.58.1 - version: 8.60.0 uri-template: specifier: ^2.0.0 version: 2.0.0 @@ -539,9 +509,6 @@ importers: '@chronus/github-pr-commenter': specifier: 'catalog:' version: 1.0.6 - '@eslint/js': - specifier: 'catalog:' - version: 10.0.1(eslint@10.4.1) '@microsoft/api-extractor': specifier: 'catalog:' version: 7.58.7(@types/node@25.9.1) @@ -563,27 +530,18 @@ importers: '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.7(vitest@4.1.7) - '@vitest/eslint-plugin': - specifier: 'catalog:' - version: 1.6.18(@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3)(vitest@4.1.7) c8: specifier: 'catalog:' version: 11.0.0 cspell: specifier: 'catalog:' version: 10.0.0 - eslint: - specifier: 'catalog:' - version: 10.4.1 - eslint-plugin-react-hooks: - specifier: 'catalog:' - version: 7.1.1(eslint@10.4.1) - eslint-plugin-unicorn: - specifier: 'catalog:' - version: 64.0.0(eslint@10.4.1) micromatch: specifier: 'catalog:' version: 4.0.8 + oxlint: + specifier: ^1.69.0 + version: 1.69.0(oxlint-tsgolint@0.23.0) picocolors: specifier: 'catalog:' version: 1.1.1 @@ -614,9 +572,6 @@ importers: typescript: specifier: 'catalog:' version: 6.0.3 - typescript-eslint: - specifier: 'catalog:' - version: 8.60.0(eslint@10.4.1)(typescript@6.0.3) vitest: specifier: 'catalog:' version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(happy-dom@20.9.0)(jsdom@25.0.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) @@ -952,43 +907,6 @@ importers: specifier: 'catalog:' version: 0.26.9 - packages/eslint-plugin-typespec: - dependencies: - '@typescript-eslint/utils': - specifier: 'catalog:' - version: 8.60.0(eslint@10.4.1)(typescript@6.0.3) - devDependencies: - '@types/node': - specifier: 'catalog:' - version: 25.9.1 - '@typescript-eslint/parser': - specifier: 'catalog:' - version: 8.60.0(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/rule-tester': - specifier: 'catalog:' - version: 8.60.0(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/types': - specifier: 'catalog:' - version: 8.60.0 - '@vitest/coverage-v8': - specifier: 'catalog:' - version: 4.1.7(vitest@4.1.7) - '@vitest/ui': - specifier: 'catalog:' - version: 4.1.7(vitest@4.1.7) - eslint: - specifier: 'catalog:' - version: 10.4.1 - rimraf: - specifier: 'catalog:' - version: 6.1.3 - typescript: - specifier: 'catalog:' - version: 6.0.3 - vitest: - specifier: 'catalog:' - version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(happy-dom@20.9.0)(jsdom@25.0.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) - packages/events: devDependencies: '@types/node': @@ -1087,7 +1005,7 @@ importers: version: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0) vite-plugin-checker: specifier: 'catalog:' - version: 0.14.1(eslint@10.4.1)(optionator@0.9.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) + version: 0.14.1(eslint@10.4.1)(optionator@0.9.4)(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) vite-plugin-dts: specifier: 'catalog:' version: 5.0.1(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(esbuild@0.28.0)(rolldown@1.0.2)(rollup@4.60.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) @@ -1977,7 +1895,7 @@ importers: version: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0) vite-plugin-checker: specifier: 'catalog:' - version: 0.14.1(eslint@10.4.1)(optionator@0.9.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) + version: 0.14.1(eslint@10.4.1)(optionator@0.9.4)(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) vite-plugin-dts: specifier: 'catalog:' version: 5.0.1(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(esbuild@0.28.0)(rolldown@1.0.2)(rollup@4.60.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) @@ -2214,7 +2132,7 @@ importers: version: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0) vite-plugin-checker: specifier: 'catalog:' - version: 0.14.1(eslint@10.4.1)(optionator@0.9.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) + version: 0.14.1(eslint@10.4.1)(optionator@0.9.4)(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) vite-plugin-dts: specifier: 'catalog:' version: 5.0.1(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(esbuild@0.28.0)(rolldown@1.0.2)(rollup@4.60.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) @@ -2443,7 +2361,7 @@ importers: version: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0) vite-plugin-checker: specifier: 'catalog:' - version: 0.14.1(eslint@10.4.1)(optionator@0.9.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) + version: 0.14.1(eslint@10.4.1)(optionator@0.9.4)(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) vite-plugin-dts: specifier: 'catalog:' version: 5.0.1(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(esbuild@0.28.0)(rolldown@1.0.2)(rollup@4.60.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) @@ -4227,15 +4145,6 @@ packages: resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@10.0.1': - resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: ^10.0.0 - peerDependenciesMeta: - eslint: - optional: true - '@eslint/object-schema@3.0.5': resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -5664,6 +5573,158 @@ packages: cpu: [x64] os: [win32] + '@oxlint-tsgolint/darwin-arm64@0.23.0': + resolution: {integrity: sha512-gOs9PVr2wEg4ox9z0aJo+RKhhImW86YL5N6yav8BK/rgPsIrwN/igSZ+pbRr723NFvUNKde9fgMhRA6JrXAOZw==} + cpu: [arm64] + os: [darwin] + + '@oxlint-tsgolint/darwin-x64@0.23.0': + resolution: {integrity: sha512-kjJ8B+7n4tB9VJdxS5A9GdJt6/bYpzbu4lXp2uO1S3sRmCB5gDEABlGoiePNApRWaW+xqL4b4xgiE727jSLhuA==} + cpu: [x64] + os: [darwin] + + '@oxlint-tsgolint/linux-arm64@0.23.0': + resolution: {integrity: sha512-6dCZuKNu135seMXilkRk9SpCx6i1XgmiipYGalLij5WVRX6ZYS8c4xI7preN/zv9fCXhsQclTIMDu2Y/cytTjw==} + cpu: [arm64] + os: [linux] + + '@oxlint-tsgolint/linux-x64@0.23.0': + resolution: {integrity: sha512-3bdilnyA7kmSTjK27rvjIjSxL5SIg3wt7vwNiRkouWB83ytssyKnuGvxSYJxgMEmFpSutzaBzcCUM2jDtPGcgA==} + cpu: [x64] + os: [linux] + + '@oxlint-tsgolint/win32-arm64@0.23.0': + resolution: {integrity: sha512-j+OEp44SVYiQ+ZD+uttsX7u6L9SvmbbQ77SO1pSFCcJlsVMeCk8qZsjhKfGKuT/jIA+ipOJMVs/+pqUfObBWNw==} + cpu: [arm64] + os: [win32] + + '@oxlint-tsgolint/win32-x64@0.23.0': + resolution: {integrity: sha512-5MyjFuqf+g8OUPJBSGWHJtmoWnzFJYyOg4To9WMQshZYEWig/vtu7JtJ03VWnzHv9LJkAUeApY0gVCOywFR/iQ==} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.69.0': + resolution: {integrity: sha512-DKQQbD5cZ/MYfDgDI7YGyGD9FSxABlsBsYFo5p26lloob543tP9+4N3guwdXIYJN+7HSZxLe8YJuwcOWw5qnHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.69.0': + resolution: {integrity: sha512-lEhb+I5pr4inux+JFwfCa1HRq3Os7NirEFQ0H1I35SVEHPm6byX0Ah47xmRha3qi6LAkxUcxViL8o/9PivjzBg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.69.0': + resolution: {integrity: sha512-GY2YE8lOZW59BW1Ia1y+1gR0XyjrZRvVWHAr8LGeGhYHE0OQJ/7cRKXTkx1P+E9/6awEc3SX8a68SFTjh/E//A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.69.0': + resolution: {integrity: sha512-ax1oZnOjHX3LB7myQyHEaQkDwfLb6str3/nSP6O7EVUviQGNkEGzGV0EqcBJWK+Ufwx0l4xPgyYayurvhAdl2Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.69.0': + resolution: {integrity: sha512-kHWeHv4g2h8NY+mpCxzCtY4uerMJWTN/TSnNj1CPbakFpHEJ6cTya2wWV0pDSYWOJ2+0UiEbhn3AtXxHtsnKjg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.69.0': + resolution: {integrity: sha512-gq84vM1a1oEehXo27YCDzGVcxPsZDI1yswZwz2Da1/cbnWtrL16XZZnz0G/+gIU8edtHpfjxq5c+vWEHqJfWoQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.69.0': + resolution: {integrity: sha512-kIqEa98JQ0VRyrcncxA417m2AzasqTlD+FyVT1AksjvjkqQcvm7pBWYvoW3/mpyOP2XYvi5nSCCTIe6De1yu5g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.69.0': + resolution: {integrity: sha512-j+xYiXozxGWx2cpjCrwwGR4awTxPFsRv3JZrv23RCogEPMc4R7UqjHW47p/RG0aRlbWiROCJ8coUfCwy0dvzHA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-arm64-musl@1.69.0': + resolution: {integrity: sha512-xEPpNppTfN1l/nM7gYSf9iocscu/as+p/7vxkLeLEKnYU+09Dm+5V6IhDYDh+Uz6FajEupWwCLt5SOG0y1PCKg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-ppc64-gnu@1.69.0': + resolution: {integrity: sha512-Ug0+eU7HJBlek+SjklYH62IlOMirEJsdxpihH0kSqX0XdrDD4NdHpQc10fK1JC35yn6KrrcN+uYzlHD38XAf8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-gnu@1.69.0': + resolution: {integrity: sha512-iEyI3GIg0l/s3G4qy2TlaaWKdzj4PJJStwtlocpDTC00PY9hZueotf6OKUj9+yfQh0lrpBW/pLMgTztbAHKJEg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-musl@1.69.0': + resolution: {integrity: sha512-NjHjpiI4WIKSMwuoJSZi5VToPeoYOS1FR52HLIDG6lidMdqquusgtODb4iLk0+lb1q3Z0nv2/aPRcC/olmpQGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-s390x-gnu@1.69.0': + resolution: {integrity: sha512-Ai/prDewoItkDXbp38gwGZi41DycZbUTZJ3UidwoHgQC0/DaqC2TGdtBTQLJ6hSD+SAxASzh8+/eSBPmxfOacA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-gnu@1.69.0': + resolution: {integrity: sha512-Gt3KHgp46mRKz4sJeaASmKvD8ayXookRw07RMf+NowhEztGGDZ7VrXpoW96XuKJLjFukWizOFVNjmYb/u7caNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-musl@1.69.0': + resolution: {integrity: sha512-7tQhJ2+p/oHv1zcfnjYI7YVzC/7iBaVOfIvFYtxdJ5F45mWgEdrCyXZXZGfiLey5t/5JhOhsaMnnv1kAzckd7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxlint/binding-openharmony-arm64@1.69.0': + resolution: {integrity: sha512-vmWz6TKp/3hfA4lksR0zHBv/6xuX1jhym6eqOjdH2DXsDDHZWcp2f0KG0VCAnlVbIrjk29G4wAWMXb/Hn1YobA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.69.0': + resolution: {integrity: sha512-9RExaLgmaw6IoIkU9cTpT71mLfI0xZ86iZH8x518LVsOkjquJMYqb9P7KpC8lgd1t0Dxs41p2pxynq4XR3Ttzw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.69.0': + resolution: {integrity: sha512-1907kRPF8/PrcIw1E7LMs9JbVrpgnt/MvFdss3an8oDkYNAACXzTntV3t3869ZZhMZxb2AzRGbz1pA/jdFatXA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.69.0': + resolution: {integrity: sha512-w8SOXv3mT9Fi6jY8OXdXCfnvX/3KNLXGNr4HEz2TA7S4Mv/PYAOmpB8y/ge40mxvBMgGNaSaaDwZpAsQn7HtWA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@pagefind/darwin-arm64@1.5.2': resolution: {integrity: sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==} cpu: [arm64] @@ -7259,72 +7320,6 @@ packages: '@types/yoga-layout@1.9.2': resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==} - '@typescript-eslint/eslint-plugin@8.60.0': - resolution: {integrity: sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.60.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/parser@8.60.0': - resolution: {integrity: sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/project-service@8.60.0': - resolution: {integrity: sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/rule-tester@8.60.0': - resolution: {integrity: sha512-lQct+GlpO4JKKxZbo+ZTWjnxA2BqSoOWmJYvQxezuJGGpl6Lk2XTd2odVP/7lAJUQaw3Qip+qo/1gsAda4jGlA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/scope-manager@8.60.0': - resolution: {integrity: sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.60.0': - resolution: {integrity: sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/type-utils@8.60.0': - resolution: {integrity: sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/types@8.60.0': - resolution: {integrity: sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.60.0': - resolution: {integrity: sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/utils@8.60.0': - resolution: {integrity: sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/visitor-keys@8.60.0': - resolution: {integrity: sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typespec/ts-http-runtime@0.3.5': resolution: {integrity: sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==} engines: {node: '>=20.0.0'} @@ -7363,22 +7358,6 @@ packages: '@vitest/browser': optional: true - '@vitest/eslint-plugin@1.6.18': - resolution: {integrity: sha512-J6U4X0jH3NwTuYouvrJn6I8ypTOU+GhKEjyVwpoPnDuc23usa/xi/R0caWLBbNp3xLy3/rL1YkuJuneTMVV4Mg==} - engines: {node: '>=18'} - peerDependencies: - '@typescript-eslint/eslint-plugin': '*' - eslint: '>=8.57.0' - typescript: '>=5.0.0' - vitest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - typescript: - optional: true - vitest: - optional: true - '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -8171,10 +8150,6 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - builtin-modules@5.2.0: - resolution: {integrity: sha512-02yxLeyxF4dNl6SlY6/5HfRSrSdZ/sCPoxy2kZNP5dZZX8LSAD9aE2gtJIUgWrsQTiMPl3mxESyrobSwvRGisQ==} - engines: {node: '>=18.20'} - builtins@5.1.0: resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} @@ -8340,10 +8315,6 @@ packages: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} - clean-regexp@1.0.0: - resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} - engines: {node: '>=4'} - clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -8560,9 +8531,6 @@ packages: resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} engines: {node: '>= 0.8'} - core-js-compat@3.49.0: - resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -9208,18 +9176,6 @@ packages: resolution: {integrity: sha512-0X5vEQeNniQRbGm+ec9Ow6LWj4RqZEcjPSfZ+t8qLPWqwyaBa67GrNetTxd0aYKoHrpbZeoRRlvA2gz9HujiEg==} engines: {node: ^10.12.0 || >=12.0.0} - eslint-plugin-react-hooks@7.1.1: - resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} - engines: {node: '>=18'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 - - eslint-plugin-unicorn@64.0.0: - resolution: {integrity: sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==} - engines: {node: ^20.10.0 || >=21.0.0} - peerDependencies: - eslint: '>=9.38.0' - eslint-scope@9.1.2: resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -9438,10 +9394,6 @@ packages: resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} engines: {node: '>=4.0.0'} - find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} - engines: {node: '>=18'} - find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -9625,10 +9577,6 @@ packages: resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} engines: {node: '>=20'} - globals@17.6.0: - resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} - engines: {node: '>=18'} - globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} @@ -9776,12 +9724,6 @@ packages: hastscript@9.0.1: resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - hermes-estree@0.25.1: - resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} - - hermes-parser@0.25.1: - resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - highlight.js@11.0.1: resolution: {integrity: sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==} engines: {node: '>=12.0.0'} @@ -9933,10 +9875,6 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - index-to-position@1.2.0: resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} engines: {node: '>=18'} @@ -10016,10 +9954,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-builtin-module@5.0.0: - resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} - engines: {node: '>=18.20'} - is-ci@2.0.0: resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} hasBin: true @@ -10504,9 +10438,6 @@ packages: lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} @@ -11248,6 +11179,23 @@ packages: oxc-resolver@11.20.0: resolution: {integrity: sha512-CblytBiV/a/ZXY34dsVU2NxhIOxMXst8CvDCtyBelVITgd7PLrKzbEbA6oKLdPjvDKDzCiW48qzmzZ+mYaqn+g==} + oxlint-tsgolint@0.23.0: + resolution: {integrity: sha512-3mBv3CoPbh8dFbzfDGIWa2ytZjn2v+3EX4aKRXjIhsoGFzG8GCjfRirz3rwZf1wYbZzsNLTSgpw8VjQuWdp/jA==} + hasBin: true + + oxlint@1.69.0: + resolution: {integrity: sha512-ypZkK/aDc5NQV8zIR6s2H2Tl3aNW8FmJ1m9+2qsaYuRenl8vgnHNCGwTHviWJdUQzglOlHFchgopdtGhSy17Rw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.22.1' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -11896,14 +11844,6 @@ packages: regex@6.1.0: resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} - hasBin: true - - regjsparser@0.13.1: - resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} - hasBin: true - rehype-expressive-code@0.42.0: resolution: {integrity: sha512-8rp/1YMEVVSYbtz+bFBx+uSx3vA4i4T8RwRm5Q/IWbucQnnQqQ0hDqtmKOr8tv+59Cik6cu5aH3WPo0I7csuTA==} @@ -12800,12 +12740,6 @@ packages: truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} - ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -12913,13 +12847,6 @@ packages: typescript-auto-import-cache@0.3.6: resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} - typescript-eslint@8.60.0: - resolution: {integrity: sha512-9f65qWLZdAW9m1JaxBDUHcqRUfL8bkxxXL7XxEfI+F09q56PkBvIfCjLF3yInsDM/BBmwkqmCQdCZe/RYlIWEw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -13754,12 +13681,6 @@ packages: resolution: {integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==} engines: {node: '>=8'} - zod-validation-error@4.0.2: - resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -15147,8 +15068,10 @@ snapshots: dependencies: eslint: 10.4.1 eslint-visitor-keys: 3.4.3 + optional: true - '@eslint-community/regexpp@4.12.2': {} + '@eslint-community/regexpp@4.12.2': + optional: true '@eslint/config-array@0.23.5': dependencies: @@ -15157,25 +15080,26 @@ snapshots: minimatch: 10.2.5 transitivePeerDependencies: - supports-color + optional: true '@eslint/config-helpers@0.6.0': dependencies: '@eslint/core': 1.2.1 + optional: true '@eslint/core@1.2.1': dependencies: '@types/json-schema': 7.0.15 + optional: true - '@eslint/js@10.0.1(eslint@10.4.1)': - optionalDependencies: - eslint: 10.4.1 - - '@eslint/object-schema@3.0.5': {} + '@eslint/object-schema@3.0.5': + optional: true '@eslint/plugin-kit@0.7.2': dependencies: '@eslint/core': 1.2.1 levn: 0.4.1 + optional: true '@expressive-code/core@0.42.0': dependencies: @@ -16406,18 +16330,23 @@ snapshots: '@humanfs/core@0.19.2': dependencies: '@humanfs/types': 0.15.0 + optional: true '@humanfs/node@0.16.8': dependencies: '@humanfs/core': 0.19.2 '@humanfs/types': 0.15.0 '@humanwhocodes/retry': 0.4.3 + optional: true - '@humanfs/types@0.15.0': {} + '@humanfs/types@0.15.0': + optional: true - '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/module-importer@1.0.1': + optional: true - '@humanwhocodes/retry@0.4.3': {} + '@humanwhocodes/retry@0.4.3': + optional: true '@iconify/types@2.0.0': {} @@ -17236,6 +17165,81 @@ snapshots: '@oxc-resolver/binding-win32-x64-msvc@11.20.0': optional: true + '@oxlint-tsgolint/darwin-arm64@0.23.0': + optional: true + + '@oxlint-tsgolint/darwin-x64@0.23.0': + optional: true + + '@oxlint-tsgolint/linux-arm64@0.23.0': + optional: true + + '@oxlint-tsgolint/linux-x64@0.23.0': + optional: true + + '@oxlint-tsgolint/win32-arm64@0.23.0': + optional: true + + '@oxlint-tsgolint/win32-x64@0.23.0': + optional: true + + '@oxlint/binding-android-arm-eabi@1.69.0': + optional: true + + '@oxlint/binding-android-arm64@1.69.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.69.0': + optional: true + + '@oxlint/binding-darwin-x64@1.69.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.69.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.69.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.69.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.69.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.69.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.69.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.69.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.69.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.69.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.69.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.69.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.69.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.69.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.69.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.69.0': + optional: true + '@pagefind/darwin-arm64@1.5.2': optional: true @@ -19166,7 +19170,8 @@ snapshots: '@types/emscripten@1.41.5': {} - '@types/esrecurse@4.3.1': {} + '@types/esrecurse@4.3.1': + optional: true '@types/estree-jsx@1.0.5': dependencies: @@ -19203,7 +19208,8 @@ snapshots: '@types/js-yaml@4.0.9': {} - '@types/json-schema@7.0.15': {} + '@types/json-schema@7.0.15': + optional: true '@types/keyv@3.1.4': dependencies: @@ -19330,111 +19336,6 @@ snapshots: '@types/yoga-layout@1.9.2': {} - '@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.60.0 - '@typescript-eslint/type-utils': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.60.0 - eslint: 10.4.1 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.60.0(eslint@10.4.1)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.60.0 - '@typescript-eslint/types': 8.60.0 - '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.60.0 - debug: 4.4.3 - eslint: 10.4.1 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.60.0(typescript@6.0.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@6.0.3) - '@typescript-eslint/types': 8.60.0 - debug: 4.4.3 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/rule-tester@8.60.0(eslint@10.4.1)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/parser': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - ajv: 6.15.0 - eslint: 10.4.1 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - semver: 7.8.1 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.60.0': - dependencies: - '@typescript-eslint/types': 8.60.0 - '@typescript-eslint/visitor-keys': 8.60.0 - - '@typescript-eslint/tsconfig-utils@8.60.0(typescript@6.0.3)': - dependencies: - typescript: 6.0.3 - - '@typescript-eslint/type-utils@8.60.0(eslint@10.4.1)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/types': 8.60.0 - '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - debug: 4.4.3 - eslint: 10.4.1 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.60.0': {} - - '@typescript-eslint/typescript-estree@8.60.0(typescript@6.0.3)': - dependencies: - '@typescript-eslint/project-service': 8.60.0(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@6.0.3) - '@typescript-eslint/types': 8.60.0 - '@typescript-eslint/visitor-keys': 8.60.0 - debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.8.1 - tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.60.0(eslint@10.4.1)(typescript@6.0.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1) - '@typescript-eslint/scope-manager': 8.60.0 - '@typescript-eslint/types': 8.60.0 - '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3) - eslint: 10.4.1 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.60.0': - dependencies: - '@typescript-eslint/types': 8.60.0 - eslint-visitor-keys: 5.0.1 - '@typespec/ts-http-runtime@0.3.5': dependencies: http-proxy-agent: 7.0.2 @@ -19481,18 +19382,6 @@ snapshots: tinyrainbow: 3.1.0 vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(happy-dom@20.9.0)(jsdom@25.0.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) - '@vitest/eslint-plugin@1.6.18(@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3)(vitest@4.1.7)': - dependencies: - '@typescript-eslint/scope-manager': 8.60.0 - '@typescript-eslint/utils': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - eslint: 10.4.1 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3) - typescript: 6.0.3 - vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(happy-dom@20.9.0)(jsdom@25.0.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)) - transitivePeerDependencies: - - supports-color - '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.3 @@ -19960,7 +19849,7 @@ snapshots: algoliasearch: 4.27.0 clipanion: 4.0.0-rc.4(typanion@3.14.0) diff: 5.2.2 - ink: 3.2.0(@types/react@19.2.16)(react@19.2.7) + ink: 3.2.0(@types/react@19.2.16)(react@17.0.2) ink-text-input: 4.0.3(ink@3.2.0(@types/react@19.2.16)(react@17.0.2))(react@17.0.2) react: 17.0.2 semver: 7.8.1 @@ -20123,7 +20012,7 @@ snapshots: '@yarnpkg/plugin-git': 3.2.0(@yarnpkg/core@4.8.0(typanion@3.14.0))(typanion@3.14.0) clipanion: 4.0.0-rc.4(typanion@3.14.0) es-toolkit: 1.47.0 - ink: 3.2.0(@types/react@19.2.16)(react@17.0.2) + ink: 3.2.0(@types/react@19.2.16)(react@19.2.7) react: 17.0.2 semver: 7.8.1 tslib: 2.8.1 @@ -20278,6 +20167,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + optional: true ajv@8.18.0: dependencies: @@ -20679,8 +20569,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - builtin-modules@5.2.0: {} - builtins@5.1.0: dependencies: semver: 7.8.1 @@ -20871,10 +20759,6 @@ snapshots: ci-info@4.4.0: {} - clean-regexp@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - clean-stack@2.2.0: {} cli-boxes@2.2.1: {} @@ -21058,10 +20942,6 @@ snapshots: depd: 2.0.0 keygrip: 1.1.0 - core-js-compat@3.49.0: - dependencies: - browserslist: 4.28.2 - core-util-is@1.0.3: {} cose-base@1.0.3: @@ -21457,7 +21337,8 @@ snapshots: deep-extend@0.6.0: {} - deep-is@0.1.4: {} + deep-is@0.1.4: + optional: true default-browser-id@5.0.1: {} @@ -21805,47 +21686,19 @@ snapshots: '@babel/code-frame': 7.12.11 chalk: 4.1.2 - eslint-plugin-react-hooks@7.1.1(eslint@10.4.1): - dependencies: - '@babel/core': 7.29.7 - '@babel/parser': 7.29.7 - eslint: 10.4.1 - hermes-parser: 0.25.1 - zod: 4.4.3 - zod-validation-error: 4.0.2(zod@4.4.3) - transitivePeerDependencies: - - supports-color - - eslint-plugin-unicorn@64.0.0(eslint@10.4.1): - dependencies: - '@babel/helper-validator-identifier': 7.29.7 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1) - change-case: 5.4.4 - ci-info: 4.4.0 - clean-regexp: 1.0.0 - core-js-compat: 3.49.0 - eslint: 10.4.1 - find-up-simple: 1.0.1 - globals: 17.6.0 - indent-string: 5.0.0 - is-builtin-module: 5.0.0 - jsesc: 3.1.0 - pluralize: 8.0.0 - regexp-tree: 0.1.27 - regjsparser: 0.13.1 - semver: 7.8.1 - strip-indent: 4.1.1 - eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 '@types/estree': 1.0.9 esrecurse: 4.3.0 estraverse: 5.3.0 + optional: true - eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@3.4.3: + optional: true - eslint-visitor-keys@5.0.1: {} + eslint-visitor-keys@5.0.1: + optional: true eslint@10.4.1: dependencies: @@ -21881,24 +21734,29 @@ snapshots: optionator: 0.9.4 transitivePeerDependencies: - supports-color + optional: true espree@11.2.0: dependencies: acorn: 8.16.0 acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 5.0.1 + optional: true esprima@4.0.1: {} esquery@1.7.0: dependencies: estraverse: 5.3.0 + optional: true esrecurse@4.3.0: dependencies: estraverse: 5.3.0 + optional: true - estraverse@5.3.0: {} + estraverse@5.3.0: + optional: true estree-util-attach-comments@3.0.0: dependencies: @@ -22051,7 +21909,8 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-levenshtein@2.0.6: {} + fast-levenshtein@2.0.6: + optional: true fast-safe-stringify@2.1.1: {} @@ -22099,6 +21958,7 @@ snapshots: file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 + optional: true fill-range@7.1.1: dependencies: @@ -22125,8 +21985,6 @@ snapshots: dependencies: array-back: 3.1.0 - find-up-simple@1.0.1: {} - find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -22150,6 +22008,7 @@ snapshots: dependencies: flatted: 3.4.2 keyv: 4.5.4 + optional: true flatted@3.4.2: {} @@ -22281,6 +22140,7 @@ snapshots: glob-parent@6.0.2: dependencies: is-glob: 4.0.3 + optional: true glob@10.5.0: dependencies: @@ -22327,8 +22187,6 @@ snapshots: dependencies: ini: 6.0.0 - globals@17.6.0: {} - globalyzer@0.1.0: {} globby@11.1.0: @@ -22651,12 +22509,6 @@ snapshots: property-information: 7.1.0 space-separated-tokens: 2.0.2 - hermes-estree@0.25.1: {} - - hermes-parser@0.25.1: - dependencies: - hermes-estree: 0.25.1 - highlight.js@11.0.1: {} hosted-git-info@4.1.0: @@ -22797,8 +22649,6 @@ snapshots: indent-string@4.0.0: {} - indent-string@5.0.0: {} - index-to-position@1.2.0: {} individual@3.0.0: {} @@ -22912,10 +22762,6 @@ snapshots: is-arrayish@0.2.1: {} - is-builtin-module@5.0.0: - dependencies: - builtin-modules: 5.2.0 - is-ci@2.0.0: dependencies: ci-info: 2.0.0 @@ -23115,11 +22961,13 @@ snapshots: json-parse-even-better-errors@5.0.0: {} - json-schema-traverse@0.4.1: {} + json-schema-traverse@0.4.1: + optional: true json-schema-traverse@1.0.0: {} - json-stable-stringify-without-jsonify@1.0.1: {} + json-stable-stringify-without-jsonify@1.0.1: + optional: true json-with-bigint@3.5.8: {} @@ -23265,6 +23113,7 @@ snapshots: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + optional: true lie@3.3.0: dependencies: @@ -23376,8 +23225,6 @@ snapshots: lodash.kebabcase@4.1.1: {} - lodash.merge@4.6.2: {} - lodash.once@4.1.1: {} lodash.throttle@4.1.1: {} @@ -24181,7 +24028,8 @@ snapshots: napi-build-utils@2.0.0: optional: true - natural-compare@1.4.0: {} + natural-compare@1.4.0: + optional: true negotiator@0.6.3: {} @@ -24440,6 +24288,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 + optional: true ora@8.2.0: dependencies: @@ -24511,6 +24360,39 @@ snapshots: '@oxc-resolver/binding-win32-arm64-msvc': 11.20.0 '@oxc-resolver/binding-win32-x64-msvc': 11.20.0 + oxlint-tsgolint@0.23.0: + optionalDependencies: + '@oxlint-tsgolint/darwin-arm64': 0.23.0 + '@oxlint-tsgolint/darwin-x64': 0.23.0 + '@oxlint-tsgolint/linux-arm64': 0.23.0 + '@oxlint-tsgolint/linux-x64': 0.23.0 + '@oxlint-tsgolint/win32-arm64': 0.23.0 + '@oxlint-tsgolint/win32-x64': 0.23.0 + optional: true + + oxlint@1.69.0(oxlint-tsgolint@0.23.0): + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.69.0 + '@oxlint/binding-android-arm64': 1.69.0 + '@oxlint/binding-darwin-arm64': 1.69.0 + '@oxlint/binding-darwin-x64': 1.69.0 + '@oxlint/binding-freebsd-x64': 1.69.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.69.0 + '@oxlint/binding-linux-arm-musleabihf': 1.69.0 + '@oxlint/binding-linux-arm64-gnu': 1.69.0 + '@oxlint/binding-linux-arm64-musl': 1.69.0 + '@oxlint/binding-linux-ppc64-gnu': 1.69.0 + '@oxlint/binding-linux-riscv64-gnu': 1.69.0 + '@oxlint/binding-linux-riscv64-musl': 1.69.0 + '@oxlint/binding-linux-s390x-gnu': 1.69.0 + '@oxlint/binding-linux-x64-gnu': 1.69.0 + '@oxlint/binding-linux-x64-musl': 1.69.0 + '@oxlint/binding-openharmony-arm64': 1.69.0 + '@oxlint/binding-win32-arm64-msvc': 1.69.0 + '@oxlint/binding-win32-ia32-msvc': 1.69.0 + '@oxlint/binding-win32-x64-msvc': 1.69.0 + oxlint-tsgolint: 0.23.0 + p-cancelable@2.1.1: {} p-defer@1.0.0: {} @@ -24854,7 +24736,8 @@ snapshots: path-exists: 4.0.0 which-pm: 2.2.0 - prelude-ls@1.2.1: {} + prelude-ls@1.2.1: + optional: true prettier-plugin-astro@0.14.1: dependencies: @@ -25209,12 +25092,6 @@ snapshots: dependencies: regex-utilities: 2.3.0 - regexp-tree@0.1.27: {} - - regjsparser@0.13.1: - dependencies: - jsesc: 3.1.0 - rehype-expressive-code@0.42.0: dependencies: expressive-code: 0.42.0 @@ -26310,10 +26187,6 @@ snapshots: dependencies: utf8-byte-length: 1.0.5 - ts-api-utils@2.5.0(typescript@6.0.3): - dependencies: - typescript: 6.0.3 - ts-dedent@2.2.0: {} tsconfig-paths@4.2.0: @@ -26369,6 +26242,7 @@ snapshots: type-check@0.4.0: dependencies: prelude-ls: 1.2.1 + optional: true type-fest@0.12.0: {} @@ -26422,17 +26296,6 @@ snapshots: dependencies: semver: 7.8.1 - typescript-eslint@8.60.0(eslint@10.4.1)(typescript@6.0.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.1)(typescript@6.0.3))(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/parser': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.60.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.60.0(eslint@10.4.1)(typescript@6.0.3) - eslint: 10.4.1 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - typescript@5.9.3: {} typescript@6.0.3: {} @@ -26613,6 +26476,7 @@ snapshots: uri-js@4.4.1: dependencies: punycode: 2.3.1 + optional: true uri-template@2.0.0: dependencies: @@ -26674,7 +26538,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-checker@0.14.1(eslint@10.4.1)(optionator@0.9.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)): + vite-plugin-checker@0.14.1(eslint@10.4.1)(optionator@0.9.4)(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)): dependencies: '@babel/code-frame': 7.29.7 chokidar: 5.0.0 @@ -26687,6 +26551,7 @@ snapshots: optionalDependencies: eslint: 10.4.1 optionator: 0.9.4 + oxlint: 1.69.0(oxlint-tsgolint@0.23.0) typescript: 6.0.3 vite-plugin-dts@5.0.1(@microsoft/api-extractor@7.58.7(@types/node@25.9.1))(esbuild@0.28.0)(rolldown@1.0.2)(rollup@4.60.4)(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(tsx@4.22.3)(yaml@2.9.0)): @@ -26941,7 +26806,8 @@ snapshots: dependencies: string-width: 4.2.3 - word-wrap@1.2.5: {} + word-wrap@1.2.5: + optional: true wordwrapjs@4.0.1: dependencies: @@ -27090,10 +26956,6 @@ snapshots: dependencies: '@types/yoga-layout': 1.9.2 - zod-validation-error@4.0.2(zod@4.4.3): - dependencies: - zod: 4.4.3 - zod@3.25.76: {} zod@4.4.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 90ebc8990d3..e2fa87d109c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,90 +2,84 @@ packages: - packages/* - e2e - website - - "!packages/http-client-csharp/**" - - "!packages/http-client-java/**" - - "!packages/http-client-python/**" + - '!packages/http-client-csharp/**' + - '!packages/http-client-java/**' + - '!packages/http-client-python/**' catalog: - "@alloy-js/cli": ^0.23.0 - "@alloy-js/core": ^0.23.0 - "@alloy-js/csharp": ^0.23.0 - "@alloy-js/markdown": ^0.23.0 - "@alloy-js/msbuild": ^0.23.0 - "@alloy-js/python": ^0.4.0 - "@alloy-js/rollup-plugin": ^0.1.1 - "@alloy-js/typescript": ^0.23.0 - "@astrojs/check": ^0.9.8 - "@astrojs/react": ^5.0.3 - "@astrojs/starlight": ^0.39.2 - "@azure/identity": ^4.13.1 - "@azure/storage-blob": ^12.31.0 - "@babel/code-frame": ^7.29.0 - "@babel/core": ^7.29.0 - "@chronus/chronus": ^1.3.1 - "@chronus/github": ^1.0.6 - "@chronus/github-pr-commenter": ^1.0.6 - "@docsearch/css": ^4.6.2 - "@docsearch/js": ^4.6.2 - "@eslint/js": ^10.0.1 - "@expressive-code/core": ^0.42.0 - "@fluentui/react-components": ^9.73.7 - "@fluentui/react-icons": ^2.0.323 - "@fluentui/react-list": ^9.6.13 - "@inquirer/prompts": ^8.4.1 - "@microsoft/api-extractor": ^7.58.1 - "@microsoft/api-extractor-model": ^7.33.5 - "@microsoft/tsdoc": ^0.16.0 - "@microsoft/tsdoc-config": ^0.18.1 - "@octokit/core": ^7.0.6 - "@octokit/plugin-paginate-graphql": ^6.0.0 - "@octokit/plugin-rest-endpoint-methods": ^17.0.0 - "@playwright/test": ^1.60.0 - "@pnpm/workspace.find-packages": ^1000.0.65 - "@scalar/json-magic": ^0.12.15 - "@scalar/openapi-parser": ^0.28.6 - "@scalar/openapi-types": ^0.9.1 - "@storybook/cli": ^10.3.5 - "@storybook/react-vite": ^10.3.5 - "@testing-library/dom": ^10.4.1 - "@testing-library/jest-dom": ^6.9.1 - "@testing-library/react": ^16.3.2 - "@types/babel__code-frame": ^7.27.0 - "@types/cross-spawn": ^6.0.6 - "@types/debounce": ^1.2.4 - "@types/express": ^5.0.6 - "@types/micromatch": ^4.0.10 - "@types/morgan": ^1.9.10 - "@types/multer": ^2.1.0 - "@types/mustache": ^4.2.6 - "@types/node": ^25.5.2 - "@types/react": ^19.2.16 - "@types/react-dom": ^19.2.3 - "@types/remark-heading-id": ^1.0.0 - "@types/semver": ^7.7.1 - "@types/swagger-ui": ^5.32.0 - "@types/swagger-ui-dist": ^3.30.6 - "@types/swagger-ui-express": ^4.1.8 - "@types/which": ^3.0.4 - "@types/yargs": ^17.0.35 - "@typescript-eslint/parser": ^8.58.1 - "@typescript-eslint/rule-tester": ^8.58.1 - "@typescript-eslint/types": ^8.58.1 - "@typescript-eslint/utils": ^8.58.1 - "@typespec/ts-http-runtime": 0.3.5 - "@vitejs/plugin-react": ^6.0.1 - "@vitest/coverage-v8": ^4.1.3 - "@vitest/eslint-plugin": ^1.6.16 - "@vitest/ui": ^4.1.3 - "@vscode/extension-telemetry": ^1.5.1 - "@vscode/test-electron": ^2.5.2 - "@vscode/test-web": ^0.0.80 - "@vscode/vsce": ^3.7.1 - "@yarnpkg/core": ^4.6.0 - "@yarnpkg/fslib": ^3.1.4 - "@yarnpkg/plugin-nm": ^4.0.8 - "@yarnpkg/plugin-npm": ^3.4.0 - "@yarnpkg/plugin-pnp": ^4.1.3 + '@alloy-js/cli': ^0.23.0 + '@alloy-js/core': ^0.23.0 + '@alloy-js/csharp': ^0.23.0 + '@alloy-js/markdown': ^0.23.0 + '@alloy-js/msbuild': ^0.23.0 + '@alloy-js/python': ^0.4.0 + '@alloy-js/rollup-plugin': ^0.1.1 + '@alloy-js/typescript': ^0.23.0 + '@astrojs/check': ^0.9.8 + '@astrojs/react': ^5.0.3 + '@astrojs/starlight': ^0.39.2 + '@azure/identity': ^4.13.1 + '@azure/storage-blob': ^12.31.0 + '@babel/code-frame': ^7.29.0 + '@babel/core': ^7.29.0 + '@chronus/chronus': ^1.3.1 + '@chronus/github': ^1.0.6 + '@chronus/github-pr-commenter': ^1.0.6 + '@docsearch/css': ^4.6.2 + '@docsearch/js': ^4.6.2 + '@expressive-code/core': ^0.42.0 + '@fluentui/react-components': ^9.73.7 + '@fluentui/react-icons': ^2.0.323 + '@fluentui/react-list': ^9.6.13 + '@inquirer/prompts': ^8.4.1 + '@microsoft/api-extractor': ^7.58.1 + '@microsoft/api-extractor-model': ^7.33.5 + '@microsoft/tsdoc': ^0.16.0 + '@microsoft/tsdoc-config': ^0.18.1 + '@octokit/core': ^7.0.6 + '@octokit/plugin-paginate-graphql': ^6.0.0 + '@octokit/plugin-rest-endpoint-methods': ^17.0.0 + '@playwright/test': ^1.60.0 + '@pnpm/workspace.find-packages': ^1000.0.65 + '@scalar/json-magic': ^0.12.15 + '@scalar/openapi-parser': ^0.28.6 + '@scalar/openapi-types': ^0.9.1 + '@storybook/cli': ^10.3.5 + '@storybook/react-vite': ^10.3.5 + '@testing-library/dom': ^10.4.1 + '@testing-library/jest-dom': ^6.9.1 + '@testing-library/react': ^16.3.2 + '@types/babel__code-frame': ^7.27.0 + '@types/cross-spawn': ^6.0.6 + '@types/debounce': ^1.2.4 + '@types/express': ^5.0.6 + '@types/micromatch': ^4.0.10 + '@types/morgan': ^1.9.10 + '@types/multer': ^2.1.0 + '@types/mustache': ^4.2.6 + '@types/node': ^25.5.2 + '@types/react': ^19.2.16 + '@types/react-dom': ^19.2.3 + '@types/remark-heading-id': ^1.0.0 + '@types/semver': ^7.7.1 + '@types/swagger-ui': ^5.32.0 + '@types/swagger-ui-dist': ^3.30.6 + '@types/swagger-ui-express': ^4.1.8 + '@types/which': ^3.0.4 + '@types/yargs': ^17.0.35 + '@typespec/ts-http-runtime': 0.3.5 + '@vitejs/plugin-react': ^6.0.1 + '@vitest/coverage-v8': ^4.1.3 + '@vitest/ui': ^4.1.3 + '@vscode/extension-telemetry': ^1.5.1 + '@vscode/test-electron': ^2.5.2 + '@vscode/test-web': ^0.0.80 + '@vscode/vsce': ^3.7.1 + '@yarnpkg/core': ^4.6.0 + '@yarnpkg/fslib': ^3.1.4 + '@yarnpkg/plugin-nm': ^4.0.8 + '@yarnpkg/plugin-npm': ^3.4.0 + '@yarnpkg/plugin-pnp': ^4.1.3 ajv: ^8.18.0 ajv-formats: ^3.0.1 astro: ^6.1.10 @@ -106,9 +100,6 @@ catalog: es-module-shims: ^2.8.0 esbuild: ^0.28.0 esbuild-plugins-node-modules-polyfill: ^1.8.1 - eslint: ^10.2.0 - eslint-plugin-react-hooks: 7.1.1 - eslint-plugin-unicorn: ^64.0.0 execa: ^9.6.1 express: ^5.2.1 fast-xml-parser: ^5.7.0 @@ -163,7 +154,6 @@ catalog: typedoc: ^0.28.19 typedoc-plugin-markdown: ^4.11.0 typescript: ~6.0.2 - typescript-eslint: ^8.58.1 uri-template: ^2.0.0 vite: ^8.0.8 vite-plugin-checker: ^0.14.1 @@ -179,13 +169,16 @@ catalog: yaml: ^2.8.3 yargs: ^18.0.0 +ignoredBuiltDependencies: + - esbuild + minimumReleaseAge: 2880 minimumReleaseAgeExclude: - - "@alloy-js/*" + - '@alloy-js/*' overrides: - cross-spawn@>=7.0.0 <7.0.5: ">=7.0.5" - diff@>=6.0.0 <8.0.3: ">=8.0.3" + cross-spawn@>=7.0.0 <7.0.5: '>=7.0.5' + diff@>=6.0.0 <8.0.3: '>=8.0.3' dompurify: ^3.3.3 - yaml@>=2.0.0 <2.8.3: ">=2.8.3" + yaml@>=2.0.0 <2.8.3: '>=2.8.3' diff --git a/tsconfig.ws.json b/tsconfig.ws.json index d4eb624b14a..67e962ba0b6 100644 --- a/tsconfig.ws.json +++ b/tsconfig.ws.json @@ -6,7 +6,6 @@ { "path": "packages/http/tsconfig.build.json" }, { "path": "packages/rest/tsconfig.build.json" }, { "path": "packages/library-linter/tsconfig.build.json" }, - { "path": "packages/eslint-plugin-typespec/tsconfig.build.json" }, { "path": "packages/openapi/tsconfig.build.json" }, { "path": "packages/sse/tsconfig.build.json" }, { "path": "packages/events/tsconfig.build.json" }, diff --git a/turbo.json b/turbo.json index 72f151bfa28..d772103a502 100644 --- a/turbo.json +++ b/turbo.json @@ -23,7 +23,7 @@ "outputs": ["coverage/**"] }, "lint": { - "inputs": ["src/**", "test/**", "eslint.config.*", "package.json"], + "inputs": ["src/**", "test/**", "oxlint.config.*", "package.json"], "outputs": [] }, "clean": { From 527b5649edad12c081ffae397fcb5fcd56df8391 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 11 Jun 2026 14:18:30 -0400 Subject: [PATCH 2/5] fix --- cspell.yaml | 1 + package.json | 2 +- packages/openapi/src/lib.ts | 2 -- pnpm-lock.yaml | 5 ++++- pnpm-workspace.yaml | 1 + 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cspell.yaml b/cspell.yaml index d2e086c1875..8a799b93f58 100644 --- a/cspell.yaml +++ b/cspell.yaml @@ -199,6 +199,7 @@ words: - onigasm - onwarn - openapi + - oxlint - openapiv - Packument - Perfolizer diff --git a/package.json b/package.json index 4cb28c7292a..d3b4ad4c9e2 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "c8": "catalog:", "cspell": "catalog:", "micromatch": "catalog:", - "oxlint": "^1.69.0", + "oxlint": "catalog:", "picocolors": "catalog:", "playwright": "catalog:", "prettier": "catalog:", diff --git a/packages/openapi/src/lib.ts b/packages/openapi/src/lib.ts index ef101fd71c9..a62e2dd2f87 100644 --- a/packages/openapi/src/lib.ts +++ b/packages/openapi/src/lib.ts @@ -1,7 +1,5 @@ import { createTypeSpecLibrary, paramMessage } from "@typespec/compiler"; -console.log("Abc"); - export const $lib = createTypeSpecLibrary({ name: "@typespec/openapi", diagnostics: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4f11c9abbc9..af1f4779588 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -327,6 +327,9 @@ catalogs: ora: specifier: ^9.3.0 version: 9.4.0 + oxlint: + specifier: ^1.69.0 + version: 1.69.0 p-limit: specifier: ^7.3.0 version: 7.3.0 @@ -540,7 +543,7 @@ importers: specifier: 'catalog:' version: 4.0.8 oxlint: - specifier: ^1.69.0 + specifier: 'catalog:' version: 1.69.0(oxlint-tsgolint@0.23.0) picocolors: specifier: 'catalog:' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e2fa87d109c..46ebab2f870 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -114,6 +114,7 @@ catalog: multer: ^2.1.1 mustache: ^4.2.0 ora: ^9.3.0 + oxlint: ^1.69.0 p-limit: ^7.3.0 pathe: ^2.0.3 picocolors: ^1.1.1 From e1064a586521cfa038e82450ae34a99944f23192 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Thu, 11 Jun 2026 14:30:38 -0400 Subject: [PATCH 3/5] fix --- .../migrate-to-oxlint-2026-6-11-14-15-0.md | 33 ++++ pnpm-workspace.yaml | 160 +++++++++--------- 2 files changed, 113 insertions(+), 80 deletions(-) create mode 100644 .chronus/changes/migrate-to-oxlint-2026-6-11-14-15-0.md diff --git a/.chronus/changes/migrate-to-oxlint-2026-6-11-14-15-0.md b/.chronus/changes/migrate-to-oxlint-2026-6-11-14-15-0.md new file mode 100644 index 00000000000..518b11f1a41 --- /dev/null +++ b/.chronus/changes/migrate-to-oxlint-2026-6-11-14-15-0.md @@ -0,0 +1,33 @@ +--- +changeKind: internal +packages: + - "@typespec/asset-emitter" + - "@typespec/bundler" + - "@typespec/compiler" + - "@typespec/emitter-framework" + - "@typespec/events" + - "@typespec/html-program-viewer" + - "@typespec/http-canonicalization" + - "@typespec/http-client-js" + - "@typespec/http-client" + - "@typespec/http-server-csharp" + - "@typespec/http-server-js" + - "@typespec/http" + - "@typespec/internal-build-utils" + - "@typespec/json-schema" + - "@typespec/library-linter" + - "@typespec/mutator-framework" + - "@typespec/openapi" + - "@typespec/openapi3" + - "@typespec/playground" + - "@typespec/protobuf" + - "@typespec/rest" + - "@typespec/sse" + - "@typespec/streams" + - "tmlanguage-generator" + - "@typespec/tspd" + - "@typespec/versioning" + - "@typespec/xml" +--- + +Migrate linting from ESLint to oxlint. diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 46ebab2f870..194347249ef 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,84 +2,84 @@ packages: - packages/* - e2e - website - - '!packages/http-client-csharp/**' - - '!packages/http-client-java/**' - - '!packages/http-client-python/**' + - "!packages/http-client-csharp/**" + - "!packages/http-client-java/**" + - "!packages/http-client-python/**" catalog: - '@alloy-js/cli': ^0.23.0 - '@alloy-js/core': ^0.23.0 - '@alloy-js/csharp': ^0.23.0 - '@alloy-js/markdown': ^0.23.0 - '@alloy-js/msbuild': ^0.23.0 - '@alloy-js/python': ^0.4.0 - '@alloy-js/rollup-plugin': ^0.1.1 - '@alloy-js/typescript': ^0.23.0 - '@astrojs/check': ^0.9.8 - '@astrojs/react': ^5.0.3 - '@astrojs/starlight': ^0.39.2 - '@azure/identity': ^4.13.1 - '@azure/storage-blob': ^12.31.0 - '@babel/code-frame': ^7.29.0 - '@babel/core': ^7.29.0 - '@chronus/chronus': ^1.3.1 - '@chronus/github': ^1.0.6 - '@chronus/github-pr-commenter': ^1.0.6 - '@docsearch/css': ^4.6.2 - '@docsearch/js': ^4.6.2 - '@expressive-code/core': ^0.42.0 - '@fluentui/react-components': ^9.73.7 - '@fluentui/react-icons': ^2.0.323 - '@fluentui/react-list': ^9.6.13 - '@inquirer/prompts': ^8.4.1 - '@microsoft/api-extractor': ^7.58.1 - '@microsoft/api-extractor-model': ^7.33.5 - '@microsoft/tsdoc': ^0.16.0 - '@microsoft/tsdoc-config': ^0.18.1 - '@octokit/core': ^7.0.6 - '@octokit/plugin-paginate-graphql': ^6.0.0 - '@octokit/plugin-rest-endpoint-methods': ^17.0.0 - '@playwright/test': ^1.60.0 - '@pnpm/workspace.find-packages': ^1000.0.65 - '@scalar/json-magic': ^0.12.15 - '@scalar/openapi-parser': ^0.28.6 - '@scalar/openapi-types': ^0.9.1 - '@storybook/cli': ^10.3.5 - '@storybook/react-vite': ^10.3.5 - '@testing-library/dom': ^10.4.1 - '@testing-library/jest-dom': ^6.9.1 - '@testing-library/react': ^16.3.2 - '@types/babel__code-frame': ^7.27.0 - '@types/cross-spawn': ^6.0.6 - '@types/debounce': ^1.2.4 - '@types/express': ^5.0.6 - '@types/micromatch': ^4.0.10 - '@types/morgan': ^1.9.10 - '@types/multer': ^2.1.0 - '@types/mustache': ^4.2.6 - '@types/node': ^25.5.2 - '@types/react': ^19.2.16 - '@types/react-dom': ^19.2.3 - '@types/remark-heading-id': ^1.0.0 - '@types/semver': ^7.7.1 - '@types/swagger-ui': ^5.32.0 - '@types/swagger-ui-dist': ^3.30.6 - '@types/swagger-ui-express': ^4.1.8 - '@types/which': ^3.0.4 - '@types/yargs': ^17.0.35 - '@typespec/ts-http-runtime': 0.3.5 - '@vitejs/plugin-react': ^6.0.1 - '@vitest/coverage-v8': ^4.1.3 - '@vitest/ui': ^4.1.3 - '@vscode/extension-telemetry': ^1.5.1 - '@vscode/test-electron': ^2.5.2 - '@vscode/test-web': ^0.0.80 - '@vscode/vsce': ^3.7.1 - '@yarnpkg/core': ^4.6.0 - '@yarnpkg/fslib': ^3.1.4 - '@yarnpkg/plugin-nm': ^4.0.8 - '@yarnpkg/plugin-npm': ^3.4.0 - '@yarnpkg/plugin-pnp': ^4.1.3 + "@alloy-js/cli": ^0.23.0 + "@alloy-js/core": ^0.23.0 + "@alloy-js/csharp": ^0.23.0 + "@alloy-js/markdown": ^0.23.0 + "@alloy-js/msbuild": ^0.23.0 + "@alloy-js/python": ^0.4.0 + "@alloy-js/rollup-plugin": ^0.1.1 + "@alloy-js/typescript": ^0.23.0 + "@astrojs/check": ^0.9.8 + "@astrojs/react": ^5.0.3 + "@astrojs/starlight": ^0.39.2 + "@azure/identity": ^4.13.1 + "@azure/storage-blob": ^12.31.0 + "@babel/code-frame": ^7.29.0 + "@babel/core": ^7.29.0 + "@chronus/chronus": ^1.3.1 + "@chronus/github": ^1.0.6 + "@chronus/github-pr-commenter": ^1.0.6 + "@docsearch/css": ^4.6.2 + "@docsearch/js": ^4.6.2 + "@expressive-code/core": ^0.42.0 + "@fluentui/react-components": ^9.73.7 + "@fluentui/react-icons": ^2.0.323 + "@fluentui/react-list": ^9.6.13 + "@inquirer/prompts": ^8.4.1 + "@microsoft/api-extractor": ^7.58.1 + "@microsoft/api-extractor-model": ^7.33.5 + "@microsoft/tsdoc": ^0.16.0 + "@microsoft/tsdoc-config": ^0.18.1 + "@octokit/core": ^7.0.6 + "@octokit/plugin-paginate-graphql": ^6.0.0 + "@octokit/plugin-rest-endpoint-methods": ^17.0.0 + "@playwright/test": ^1.60.0 + "@pnpm/workspace.find-packages": ^1000.0.65 + "@scalar/json-magic": ^0.12.15 + "@scalar/openapi-parser": ^0.28.6 + "@scalar/openapi-types": ^0.9.1 + "@storybook/cli": ^10.3.5 + "@storybook/react-vite": ^10.3.5 + "@testing-library/dom": ^10.4.1 + "@testing-library/jest-dom": ^6.9.1 + "@testing-library/react": ^16.3.2 + "@types/babel__code-frame": ^7.27.0 + "@types/cross-spawn": ^6.0.6 + "@types/debounce": ^1.2.4 + "@types/express": ^5.0.6 + "@types/micromatch": ^4.0.10 + "@types/morgan": ^1.9.10 + "@types/multer": ^2.1.0 + "@types/mustache": ^4.2.6 + "@types/node": ^25.5.2 + "@types/react": ^19.2.16 + "@types/react-dom": ^19.2.3 + "@types/remark-heading-id": ^1.0.0 + "@types/semver": ^7.7.1 + "@types/swagger-ui": ^5.32.0 + "@types/swagger-ui-dist": ^3.30.6 + "@types/swagger-ui-express": ^4.1.8 + "@types/which": ^3.0.4 + "@types/yargs": ^17.0.35 + "@typespec/ts-http-runtime": 0.3.5 + "@vitejs/plugin-react": ^6.0.1 + "@vitest/coverage-v8": ^4.1.3 + "@vitest/ui": ^4.1.3 + "@vscode/extension-telemetry": ^1.5.1 + "@vscode/test-electron": ^2.5.2 + "@vscode/test-web": ^0.0.80 + "@vscode/vsce": ^3.7.1 + "@yarnpkg/core": ^4.6.0 + "@yarnpkg/fslib": ^3.1.4 + "@yarnpkg/plugin-nm": ^4.0.8 + "@yarnpkg/plugin-npm": ^3.4.0 + "@yarnpkg/plugin-pnp": ^4.1.3 ajv: ^8.18.0 ajv-formats: ^3.0.1 astro: ^6.1.10 @@ -176,10 +176,10 @@ ignoredBuiltDependencies: minimumReleaseAge: 2880 minimumReleaseAgeExclude: - - '@alloy-js/*' + - "@alloy-js/*" overrides: - cross-spawn@>=7.0.0 <7.0.5: '>=7.0.5' - diff@>=6.0.0 <8.0.3: '>=8.0.3' + cross-spawn@>=7.0.0 <7.0.5: ">=7.0.5" + diff@>=6.0.0 <8.0.3: ">=8.0.3" dompurify: ^3.3.3 - yaml@>=2.0.0 <2.8.3: '>=2.8.3' + yaml@>=2.0.0 <2.8.3: ">=2.8.3" From 34d99f0dcca8242d94a801ea651e8a09302d7718 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Tue, 16 Jun 2026 12:45:48 -0400 Subject: [PATCH 4/5] type aware? --- oxlint.config.ts | 21 +++++++++++++++++++++ package.json | 5 +++-- packages/pack/tsconfig.json | 3 ++- packages/tsp-integration/tsconfig.json | 3 ++- pnpm-lock.yaml | 11 ++++++++--- pnpm-workspace.yaml | 1 + website/tsconfig.json | 3 +-- 7 files changed, 38 insertions(+), 9 deletions(-) diff --git a/oxlint.config.ts b/oxlint.config.ts index 82802c595eb..a4120bf47ab 100644 --- a/oxlint.config.ts +++ b/oxlint.config.ts @@ -159,6 +159,25 @@ const testFilesOverride = { }, } as const; +/** + * Type-aware rules — require full type information and only run when oxlint is invoked with + * `--type-aware` (backed by the experimental `oxlint-tsgolint`). Scoped to package sources to + * match the previous `typescript-eslint` setup, and excludes the standalone emitters that are + * not part of the pnpm workspace (`http-client-csharp`, `http-client-java`, `http-client-python`). + */ +const typeAwareOverride = { + files: ["**/packages/*/src/**/*.ts", "**/packages/*/src/**/*.tsx"], + excludeFiles: [ + "**/packages/http-client-csharp/**/*", + "**/packages/http-client-java/**/*", + "**/packages/http-client-python/**/*", + ], + rules: { + "typescript/no-floating-promises": "error", + "typescript/no-deprecated": "warn", + }, +} as const; + /** * Shared TypeSpec oxlint configs — can be reused by downstream repos (e.g., typespec-azure). */ @@ -167,6 +186,7 @@ export const TypeSpecCommonOxlintConfigs = { typescriptFileOverride, jsxFilesOverride, testFilesOverride, + typeAwareOverride, }; export default defineConfig({ @@ -208,6 +228,7 @@ export default defineConfig({ typescriptFileOverride, jsxFilesOverride, testFilesOverride, + typeAwareOverride, // Framework-required PascalCase filenames { files: ["website/src/components/docusaurus/**/*.ts", "website/src/pages/**/*.ts"], diff --git a/package.json b/package.json index d3b4ad4c9e2..853f5b5dc29 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "format:check": "prettier . --check", "format:dir": "prettier --write", "gen-compiler-extern-signature": "pnpm run -r --filter \"@typespec/compiler\" gen-extern-signature", - "lint": "oxlint . --deny-warnings", - "lint:fix": "oxlint . --fix", + "lint": "oxlint . --type-aware --deny-warnings", + "lint:fix": "oxlint . --type-aware --fix", "merge-coverage": "c8 -- report --reporter=cobertura --reporter=text", "pack:all": "chronus pack --exclude standalone --pack-destination ./temp/artifacts", "preinstall": "npx only-allow pnpm", @@ -53,6 +53,7 @@ "cspell": "catalog:", "micromatch": "catalog:", "oxlint": "catalog:", + "oxlint-tsgolint": "catalog:", "picocolors": "catalog:", "playwright": "catalog:", "prettier": "catalog:", diff --git a/packages/pack/tsconfig.json b/packages/pack/tsconfig.json index 3715ba60ded..cf665cfca6a 100644 --- a/packages/pack/tsconfig.json +++ b/packages/pack/tsconfig.json @@ -6,5 +6,6 @@ "rootDir": "src", "verbatimModuleSyntax": true, "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo" - } + }, + "include": ["src"] } diff --git a/packages/tsp-integration/tsconfig.json b/packages/tsp-integration/tsconfig.json index a79ad487af4..ab48d103617 100644 --- a/packages/tsp-integration/tsconfig.json +++ b/packages/tsp-integration/tsconfig.json @@ -5,5 +5,6 @@ "verbatimModuleSyntax": true, "rootDir": "src", "outDir": "dist" - } + }, + "include": ["src"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index af1f4779588..01f8e469fc0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -330,6 +330,9 @@ catalogs: oxlint: specifier: ^1.69.0 version: 1.69.0 + oxlint-tsgolint: + specifier: ^0.23.0 + version: 0.23.0 p-limit: specifier: ^7.3.0 version: 7.3.0 @@ -545,6 +548,9 @@ importers: oxlint: specifier: 'catalog:' version: 1.69.0(oxlint-tsgolint@0.23.0) + oxlint-tsgolint: + specifier: 'catalog:' + version: 0.23.0 picocolors: specifier: 'catalog:' version: 1.1.1 @@ -19852,7 +19858,7 @@ snapshots: algoliasearch: 4.27.0 clipanion: 4.0.0-rc.4(typanion@3.14.0) diff: 5.2.2 - ink: 3.2.0(@types/react@19.2.16)(react@17.0.2) + ink: 3.2.0(@types/react@19.2.16)(react@19.2.7) ink-text-input: 4.0.3(ink@3.2.0(@types/react@19.2.16)(react@17.0.2))(react@17.0.2) react: 17.0.2 semver: 7.8.1 @@ -20015,7 +20021,7 @@ snapshots: '@yarnpkg/plugin-git': 3.2.0(@yarnpkg/core@4.8.0(typanion@3.14.0))(typanion@3.14.0) clipanion: 4.0.0-rc.4(typanion@3.14.0) es-toolkit: 1.47.0 - ink: 3.2.0(@types/react@19.2.16)(react@19.2.7) + ink: 3.2.0(@types/react@19.2.16)(react@17.0.2) react: 17.0.2 semver: 7.8.1 tslib: 2.8.1 @@ -24371,7 +24377,6 @@ snapshots: '@oxlint-tsgolint/linux-x64': 0.23.0 '@oxlint-tsgolint/win32-arm64': 0.23.0 '@oxlint-tsgolint/win32-x64': 0.23.0 - optional: true oxlint@1.69.0(oxlint-tsgolint@0.23.0): optionalDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 194347249ef..25a58cc7114 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -115,6 +115,7 @@ catalog: mustache: ^4.2.0 ora: ^9.3.0 oxlint: ^1.69.0 + oxlint-tsgolint: ^0.23.0 p-limit: ^7.3.0 pathe: ^2.0.3 picocolors: ^1.1.1 diff --git a/website/tsconfig.json b/website/tsconfig.json index 7b76e690b98..dd78f283b12 100644 --- a/website/tsconfig.json +++ b/website/tsconfig.json @@ -1,10 +1,9 @@ { "extends": "astro/tsconfigs/strict", "compilerOptions": { - "baseUrl": "./", "noImplicitAny": false, "paths": { - "@site/*": ["*"] + "@site/*": ["./*"] }, "jsx": "react-jsx", "jsxImportSource": "react" From bd3a9999ee164355326f35f7cc8517a9a184b851 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Tue, 16 Jun 2026 12:54:53 -0400 Subject: [PATCH 5/5] fix --- packages/playground/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/playground/tsconfig.json b/packages/playground/tsconfig.json index 2b6c4756fe3..ed9f207dfa5 100644 --- a/packages/playground/tsconfig.json +++ b/packages/playground/tsconfig.json @@ -14,6 +14,6 @@ "jsx": "react-jsx", "lib": ["DOM"] }, - "exclude": ["test", "vitest.config.ts"], + "exclude": ["dist", "dist-test", "test", "vitest.config.ts"], "references": [{ "path": "../compiler/tsconfig.json" }] }