diff --git a/.eslintrc.cjs b/.eslintrc.cjs
deleted file mode 100644
index 4167211049e1..000000000000
--- a/.eslintrc.cjs
+++ /dev/null
@@ -1,192 +0,0 @@
-/* eslint-disable no-undef */
-// ALL_PACKAGES
-const allPackages = [
- 'framework/block-std',
- 'framework/global',
- 'framework/inline',
- 'framework/store',
- 'framework/sync',
- 'affine/model',
- 'affine/shared',
- 'affine/components',
- 'affine/block-paragraph',
- 'affine/block-list',
- 'blocks',
- 'docs',
- 'playground',
- 'presets',
-];
-
-const createPattern = packageName => [
- {
- group: ['**/dist', '**/dist/**'],
- message: 'Do not import from dist',
- allowTypeImports: false,
- },
- {
- group: ['**/src', '**/src/**'],
- message: 'Do not import from src',
- allowTypeImports: false,
- },
- {
- group: ['**/*.css', '**/*.css?*'],
- message:
- 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
- allowTypeImports: false,
- },
- {
- group: [`@blocksuite/${packageName}`],
- message: 'Do not import package itself',
- allowTypeImports: false,
- },
- ...(packageName === 'blocks'
- ? [
- {
- group: ['**/std.js'],
- message: 'Do not import from std',
- allowTypeImports: false,
- },
- ]
- : []),
-];
-
-module.exports = {
- env: {
- browser: true,
- es2022: true,
- },
- extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:wc/recommended',
- 'plugin:lit/recommended',
- 'plugin:perfectionist/recommended-natural',
- 'plugin:prettier/recommended',
- ],
- ignorePatterns: [
- '**/dist/*',
- '**/node_modules/*',
- '**/*.cjs',
- 'tests/snapshots/*',
- '__snapshots__/*',
- 'examples/**',
- ],
- overrides: [
- {
- plugins: ['@typescript-eslint', '@stylistic/ts', 'unused-imports'],
- files: ['*.ts', '*.spec.ts'],
- rules: {
- 'no-unused-vars': 'off',
- '@typescript-eslint/ban-ts-comment': 'off',
- '@typescript-eslint/explicit-member-accessibility': [
- 'error',
- {
- accessibility: 'no-public',
- },
- ],
- '@typescript-eslint/no-unused-vars': 'off',
- 'unused-imports/no-unused-imports': 'error',
- 'unused-imports/no-unused-vars': [
- 'error',
- {
- vars: 'all',
- varsIgnorePattern: '^_',
- args: 'after-used',
- argsIgnorePattern: '^_',
- caughtErrors: 'all',
- caughtErrorsIgnorePattern: '^_',
- destructuredArrayIgnorePattern: '^_',
- ignoreRestSiblings: true,
- },
- ],
- '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error',
- 'no-return-await': 'off',
- '@typescript-eslint/return-await': 'error',
- 'require-await': 'off',
- 'no-implied-eval': 'error',
- '@typescript-eslint/no-implied-eval': 'error',
- '@typescript-eslint/require-await': 'error',
- '@typescript-eslint/await-thenable': 'error',
- '@typescript-eslint/no-floating-promises': 'error',
- '@typescript-eslint/no-misused-promises': 'error',
- '@typescript-eslint/consistent-generic-constructors': 'error',
- '@typescript-eslint/consistent-indexed-object-style': 'error',
- '@typescript-eslint/consistent-type-assertions': 'error',
- '@typescript-eslint/no-import-type-side-effects': 'error',
- '@typescript-eslint/no-namespace': [
- 'error',
- { allowDeclarations: true },
- ],
- 'no-constant-binary-expression': 'error',
- 'unicorn/no-useless-spread': 'error',
- 'unicorn/no-useless-fallback-in-spread': 'error',
- 'unicorn/prefer-dom-node-dataset': 'error',
- 'unicorn/prefer-dom-node-append': 'error',
- 'unicorn/prefer-dom-node-remove': 'error',
- 'unicorn/prefer-array-some': 'error',
- 'unicorn/prefer-date-now': 'error',
- 'unicorn/prefer-blob-reading-methods': 'error',
- 'unicorn/no-typeof-undefined': 'error',
- 'unicorn/no-useless-promise-resolve-reject': 'error',
- 'unicorn/no-new-array': 'error',
- 'unicorn/new-for-builtins': 'error',
- 'unicorn/prefer-node-protocol': 'error',
- 'unicorn/no-useless-length-check': 'error',
- '@stylistic/ts/lines-between-class-members': 'error',
- '@stylistic/ts/space-before-blocks': 'error',
- },
- },
- ...allPackages.map(pkg => ({
- files: [`packages/${pkg}/src/**/*.ts`],
- rules: {
- '@typescript-eslint/no-restricted-imports': [
- 'error',
- {
- patterns: createPattern(pkg),
- },
- ],
- },
- })),
- ],
- parser: '@typescript-eslint/parser',
- parserOptions: {
- project: `tsconfig.eslint.json`,
- tsconfigRootDir: __dirname,
- ecmaVersion: 'latest',
- sourceType: 'module',
- },
- plugins: ['unicorn', 'prettier'],
- rules: {
- '@typescript-eslint/consistent-type-imports': [
- 'error',
- { prefer: 'type-imports', disallowTypeAnnotations: false },
- ],
- 'arrow-body-style': 'off',
- 'prefer-arrow-callback': 'off',
- 'perfectionist/sort-intersection-types': 'off',
- 'perfectionist/sort-union-types': 'off',
- 'perfectionist/sort-interfaces': 'off',
- 'perfectionist/sort-objects': 'off',
- 'perfectionist/sort-object-types': 'off',
- 'perfectionist/sort-classes': [
- 'error',
- {
- type: 'natural',
- order: 'asc',
- groups: [
- 'private-property',
- 'static-property',
- 'index-signature',
- 'property',
- 'constructor',
- 'static-private-method',
- 'static-method',
- 'private-method',
- 'method',
- ['get-method', 'set-method'],
- 'unknown',
- ],
- },
- ],
- },
-};
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 000000000000..900723cbc410
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,676 @@
+import { FlatCompat } from '@eslint/eslintrc';
+import js from '@eslint/js';
+import stylisticTs from '@stylistic/eslint-plugin-ts';
+import typescriptEslint from '@typescript-eslint/eslint-plugin';
+import tsParser from '@typescript-eslint/parser';
+import perfectionist from 'eslint-plugin-perfectionist';
+import prettier from 'eslint-plugin-prettier';
+import unicorn from 'eslint-plugin-unicorn';
+import unusedImports from 'eslint-plugin-unused-imports';
+import globals from 'globals';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+const compat = new FlatCompat({
+ baseDirectory: __dirname,
+ recommendedConfig: js.configs.recommended,
+ allConfig: js.configs.all,
+});
+
+export default [
+ {
+ ignores: [
+ '**/dist/*',
+ '**/node_modules/*',
+ '**/*.cjs',
+ '.nx',
+ 'tests/snapshots/*',
+ '__snapshots__/*',
+ 'examples/**/*',
+ '**/.coverage/*',
+ '**/.vitepress/*',
+ '**/schemas.js',
+ '**/scripts/*',
+ 'vitest.workspace.js',
+ 'eslint.config.mjs',
+ ],
+ },
+ ...compat.extends(
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'plugin:wc/recommended',
+ 'plugin:lit/recommended',
+ 'plugin:prettier/recommended'
+ ),
+ perfectionist.configs['recommended-natural'],
+ {
+ plugins: {
+ unicorn,
+ prettier,
+ },
+
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ },
+
+ parser: tsParser,
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+
+ parserOptions: {
+ project: ['./tsconfig.eslint.json'],
+ tsconfigRootDir: import.meta.dirname,
+ },
+ },
+
+ rules: {
+ '@typescript-eslint/consistent-type-imports': [
+ 'error',
+ {
+ prefer: 'type-imports',
+ disallowTypeAnnotations: false,
+ },
+ ],
+
+ 'arrow-body-style': 'off',
+ 'prefer-arrow-callback': 'off',
+ 'perfectionist/sort-intersection-types': 'off',
+ 'perfectionist/sort-union-types': 'off',
+ 'perfectionist/sort-interfaces': 'off',
+ 'perfectionist/sort-objects': 'off',
+ 'perfectionist/sort-object-types': 'off',
+ 'perfectionist/sort-variable-declarations': 'off',
+
+ // TODO: enable these
+ 'perfectionist/sort-named-imports': 'off',
+ 'perfectionist/sort-switch-case': 'off',
+ 'perfectionist/sort-classes': 'off',
+ 'perfectionist/sort-named-exports': 'off',
+ // 'perfectionist/sort-classes': [
+ // 'error',
+ // {
+ // type: 'natural',
+ // order: 'asc',
+ //
+ // groups: [
+ // 'private-property',
+ // 'static-property',
+ // 'index-signature',
+ // 'property',
+ // 'constructor',
+ // 'static-private-method',
+ // 'static-method',
+ // 'private-method',
+ // 'method',
+ // ['get-method', 'set-method'],
+ // 'unknown',
+ // ],
+ // },
+ // ],
+ },
+ },
+ {
+ files: ['**/*.ts', '**/*.spec.ts'],
+
+ plugins: {
+ '@typescript-eslint': typescriptEslint,
+ '@stylistic/ts': stylisticTs,
+ 'unused-imports': unusedImports,
+ },
+
+ rules: {
+ 'no-unused-vars': 'off',
+ '@typescript-eslint/ban-ts-comment': 'off',
+ '@typescript-eslint/no-empty-object-type': 'off',
+ '@typescript-eslint/no-unused-expressions': 'off',
+
+ '@typescript-eslint/explicit-member-accessibility': [
+ 'error',
+ {
+ accessibility: 'no-public',
+ },
+ ],
+
+ '@typescript-eslint/no-unused-vars': 'off',
+ 'unused-imports/no-unused-imports': 'error',
+
+ 'unused-imports/no-unused-vars': [
+ 'error',
+ {
+ vars: 'all',
+ varsIgnorePattern: '^_',
+ args: 'after-used',
+ argsIgnorePattern: '^_',
+ caughtErrors: 'all',
+ caughtErrorsIgnorePattern: '^_',
+ destructuredArrayIgnorePattern: '^_',
+ ignoreRestSiblings: true,
+ },
+ ],
+
+ '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error',
+ 'no-return-await': 'off',
+ '@typescript-eslint/return-await': 'error',
+ 'require-await': 'off',
+ 'no-implied-eval': 'error',
+ '@typescript-eslint/no-implied-eval': 'error',
+ '@typescript-eslint/require-await': 'error',
+ '@typescript-eslint/await-thenable': 'error',
+ '@typescript-eslint/no-floating-promises': 'error',
+ '@typescript-eslint/no-misused-promises': 'error',
+ '@typescript-eslint/consistent-generic-constructors': 'error',
+ '@typescript-eslint/consistent-indexed-object-style': 'error',
+ '@typescript-eslint/consistent-type-assertions': 'error',
+ '@typescript-eslint/no-import-type-side-effects': 'error',
+
+ '@typescript-eslint/no-namespace': [
+ 'error',
+ {
+ allowDeclarations: true,
+ },
+ ],
+
+ 'no-constant-binary-expression': 'error',
+ 'unicorn/no-useless-spread': 'error',
+ 'unicorn/no-useless-fallback-in-spread': 'error',
+ 'unicorn/prefer-dom-node-dataset': 'error',
+ 'unicorn/prefer-dom-node-append': 'error',
+ 'unicorn/prefer-dom-node-remove': 'error',
+ 'unicorn/prefer-array-some': 'error',
+ 'unicorn/prefer-date-now': 'error',
+ 'unicorn/prefer-blob-reading-methods': 'error',
+ 'unicorn/no-typeof-undefined': 'error',
+ 'unicorn/no-useless-promise-resolve-reject': 'error',
+ 'unicorn/no-new-array': 'error',
+ 'unicorn/new-for-builtins': 'error',
+ 'unicorn/prefer-node-protocol': 'error',
+ 'unicorn/no-useless-length-check': 'error',
+ '@stylistic/ts/lines-between-class-members': 'error',
+ '@stylistic/ts/space-before-blocks': 'error',
+ },
+ },
+ {
+ files: ['packages/framework/block-std/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/framework/block-std'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/framework/global/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/framework/global'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/framework/inline/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/framework/inline'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/framework/store/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/framework/store'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/framework/sync/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/framework/sync'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/affine/model/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/affine/model'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/affine/shared/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/affine/shared'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/affine/components/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/affine/components'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/affine/block-paragraph/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/affine/block-paragraph'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/affine/block-list/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/affine/block-list'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/blocks/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/blocks'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/std.js'],
+ message: 'Do not import from std',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/docs/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/docs'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/playground/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/playground'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ files: ['packages/presets/src/**/*.ts'],
+
+ rules: {
+ '@typescript-eslint/no-restricted-imports': [
+ 'error',
+ {
+ patterns: [
+ {
+ group: ['**/dist', '**/dist/**'],
+ message: 'Do not import from dist',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/src', '**/src/**'],
+ message: 'Do not import from src',
+ allowTypeImports: false,
+ },
+ {
+ group: ['**/*.css', '**/*.css?*'],
+ message:
+ 'Do not import CSS directly, see https://github.com/toeverything/blocksuite/issues/525',
+ allowTypeImports: false,
+ },
+ {
+ group: ['@blocksuite/presets'],
+ message: 'Do not import package itself',
+ allowTypeImports: false,
+ },
+ ],
+ },
+ ],
+ },
+ },
+];
diff --git a/package.json b/package.json
index 96c33128ab9c..e186f92d0a28 100644
--- a/package.json
+++ b/package.json
@@ -51,6 +51,8 @@
"@changesets/cli": "^2.27.7",
"@commitlint/cli": "^19.4.0",
"@commitlint/config-conventional": "^19.2.2",
+ "@eslint/eslintrc": "^3.1.0",
+ "@eslint/js": "^9.9.1",
"@nx/eslint": "19.6.2",
"@nx/playwright": "19.6.2",
"@nx/vite": "19.6.2",
@@ -62,21 +64,22 @@
"@swc/core": "^1.7.14",
"@types/jscodeshift": "^0.11.11",
"@types/node": "^22.5.0",
- "@typescript-eslint/eslint-plugin": "^7.18.0",
- "@typescript-eslint/parser": "^7.18.0",
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
+ "@typescript-eslint/parser": "^8.0.0",
"@vitest/browser": "2.0.5",
"@vitest/coverage-istanbul": "2.0.5",
"@vitest/ui": "2.0.5",
"es-module-lexer": "^1.5.4",
"esbuild": "^0.23.1",
- "eslint": "^8.57.0",
+ "eslint": "^9.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-lit": "^1.14.0",
- "eslint-plugin-perfectionist": "^2.11.0",
+ "eslint-plugin-perfectionist": "^3.0.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-unicorn": "^55.0.0",
"eslint-plugin-unused-imports": "^4.0.1",
"eslint-plugin-wc": "^2.1.0",
+ "globals": "^15.9.0",
"happy-dom": "^15.0.0",
"husky": "^9.1.5",
"inquirer": "^10.1.8",
diff --git a/packages/affine/components/src/context-menu/menu.ts b/packages/affine/components/src/context-menu/menu.ts
index 754d309f3b26..19f60db9ccac 100644
--- a/packages/affine/components/src/context-menu/menu.ts
+++ b/packages/affine/components/src/context-menu/menu.ts
@@ -37,7 +37,6 @@ export type GroupMenu = MenuCommon & {
name: string;
children: () => Menu[];
};
-// eslint-disable-next-line @typescript-eslint/ban-types
type MenuClass = (string & {}) | 'delete-item';
export type NormalMenu = MenuCommon &
(
diff --git a/packages/blocks/schemas.d.ts b/packages/blocks/schemas.d.ts
index 3098a7347cf5..f5dfea69679c 100644
--- a/packages/blocks/schemas.d.ts
+++ b/packages/blocks/schemas.d.ts
@@ -1,3 +1,2 @@
-/* eslint-disable */
// @ts-ignore
export * from './dist/schemas';
diff --git a/packages/blocks/schemas.js b/packages/blocks/schemas.js
index edee00d2642d..7294e8f121c8 100644
--- a/packages/blocks/schemas.js
+++ b/packages/blocks/schemas.js
@@ -1,3 +1,2 @@
-/* eslint-disable */
///
export * from './dist/schemas.js';
diff --git a/packages/blocks/src/__tests__/database/database.unit.spec.ts b/packages/blocks/src/__tests__/database/database.unit.spec.ts
index d30e629ba7cf..17ba8f423c82 100644
--- a/packages/blocks/src/__tests__/database/database.unit.spec.ts
+++ b/packages/blocks/src/__tests__/database/database.unit.spec.ts
@@ -187,7 +187,6 @@ describe('DatabaseManager', () => {
expect(model).not.toBeNull();
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const result = getCell(db, model!.id, column.id);
expect(result).toEqual(cell);
});
diff --git a/packages/blocks/src/database-block/data-view/common/data-source/context.ts b/packages/blocks/src/database-block/data-view/common/data-source/context.ts
index df356e99fab6..98d57dc1bac8 100644
--- a/packages/blocks/src/database-block/data-view/common/data-source/context.ts
+++ b/packages/blocks/src/database-block/data-view/common/data-source/context.ts
@@ -1,4 +1,4 @@
-// eslint-disable-next-line @typescript-eslint/ban-types
+// eslint-disable-next-line @typescript-eslint/no-wrapper-object-types
export interface DataViewContextKey<_T> extends Symbol {}
export const createContextKey = (name: string): DataViewContextKey =>
diff --git a/packages/blocks/src/database-block/data-view/view/data-view.ts b/packages/blocks/src/database-block/data-view/view/data-view.ts
index ef022d0ddba1..406b891a1e65 100644
--- a/packages/blocks/src/database-block/data-view/view/data-view.ts
+++ b/packages/blocks/src/database-block/data-view/view/data-view.ts
@@ -56,7 +56,6 @@ export interface DataViewExpose {
}
declare global {
- // eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface DataViewDataTypeMap {}
}
export type BasicViewDataType<
@@ -119,7 +118,6 @@ export const viewType = (type: Type) => ({
});
export class ViewRendererManager {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
private map = new Map();
getView(type: string): DataViewRendererConfig {
diff --git a/packages/blocks/src/database-block/data-view/view/presets/table/cell.ts b/packages/blocks/src/database-block/data-view/view/presets/table/cell.ts
index 364774ee6209..09bc6710bbe0 100644
--- a/packages/blocks/src/database-block/data-view/view/presets/table/cell.ts
+++ b/packages/blocks/src/database-block/data-view/view/presets/table/cell.ts
@@ -110,7 +110,6 @@ export class DatabaseCellContainer extends SignalWatcher(
return selection.focus.rowIndex === this.rowIndex;
}
- /* eslint-disable lit/binding-positions, lit/no-invalid-html */
override render() {
const renderer = this.column.renderer$.value;
if (!renderer) {
diff --git a/packages/blocks/src/database-block/widgets/expand/table-full-screen-modal.ts b/packages/blocks/src/database-block/widgets/expand/table-full-screen-modal.ts
index 981aa82a3f9f..e63031f383fc 100644
--- a/packages/blocks/src/database-block/widgets/expand/table-full-screen-modal.ts
+++ b/packages/blocks/src/database-block/widgets/expand/table-full-screen-modal.ts
@@ -10,7 +10,6 @@ import { fullScreenStyles } from './styles.js';
@customElement('affine-database-table-view-full-screen')
export class DatabaseTableViewFullScreen extends BlockComponent {
_renderView = () => {
- /* eslint-disable lit/binding-positions, lit/no-invalid-html */
return html`
0 ||
// eslint-disable-next-line unicorn/prefer-array-some
std.selection.find('text') ||
- // eslint-disable-next-line unicorn/prefer-array-some
Boolean(std.selection.find('surface')?.editing)
) {
return;
diff --git a/packages/blocks/src/root-block/edgeless/edgeless-root-block.ts b/packages/blocks/src/root-block/edgeless/edgeless-root-block.ts
index 9a302ed321ad..5b61beb3f863 100644
--- a/packages/blocks/src/root-block/edgeless/edgeless-root-block.ts
+++ b/packages/blocks/src/root-block/edgeless/edgeless-root-block.ts
@@ -773,7 +773,6 @@ export class EdgelessRootBlockComponent extends BlockComponent<
return;
});
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this.mouseRoot = this.parentElement!;
this._initTools();
diff --git a/packages/blocks/src/root-block/edgeless/services/tools-manager.ts b/packages/blocks/src/root-block/edgeless/services/tools-manager.ts
index 337a9cc6ff72..f2dfd7a69bf2 100644
--- a/packages/blocks/src/root-block/edgeless/services/tools-manager.ts
+++ b/packages/blocks/src/root-block/edgeless/services/tools-manager.ts
@@ -366,7 +366,6 @@ export class EdgelessToolsManager {
};
}
- // eslint-disable-next-line @typescript-eslint/no-empty-function
clear() {}
dispose() {
diff --git a/packages/blocks/src/root-block/edgeless/tools/default-tool.ts b/packages/blocks/src/root-block/edgeless/tools/default-tool.ts
index 7c6b5f6dbbac..eab79086e104 100644
--- a/packages/blocks/src/root-block/edgeless/tools/default-tool.ts
+++ b/packages/blocks/src/root-block/edgeless/tools/default-tool.ts
@@ -953,6 +953,7 @@ export class DefaultToolController extends EdgelessToolController {
}
}
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
async onContainerDragStart(e: PointerEventState) {
if (this.edgelessSelectionManager.editing) return;
// Determine the drag type based on the current state and event
diff --git a/packages/blocks/src/surface-block/element-model/utility-type.ts b/packages/blocks/src/surface-block/element-model/utility-type.ts
index 28f3b66e3b99..be38c93594e7 100644
--- a/packages/blocks/src/surface-block/element-model/utility-type.ts
+++ b/packages/blocks/src/surface-block/element-model/utility-type.ts
@@ -7,7 +7,7 @@ export type OmitFunctionsAndKeysAndReadOnly = {
};
type FunctionPropertyNames = {
- // eslint-disable-next-line @typescript-eslint/ban-types
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
[K in keyof T]: T[K] extends Function ? K : never;
}[keyof T];
diff --git a/packages/blocks/src/surface-block/elements/text/utils.ts b/packages/blocks/src/surface-block/elements/text/utils.ts
index 4d09a94f47f7..511d060fb8d9 100644
--- a/packages/blocks/src/surface-block/elements/text/utils.ts
+++ b/packages/blocks/src/surface-block/elements/text/utils.ts
@@ -228,7 +228,6 @@ export function wrapText(text: string, font: string, maxWidth: number): string {
while (words[index].length > 0) {
const currentChar = String.fromCodePoint(
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
words[index].codePointAt(0)!
);
const width = charWidth.calculate(currentChar, font);
diff --git a/packages/blocks/src/surface-block/renderer/elements/text/utils.ts b/packages/blocks/src/surface-block/renderer/elements/text/utils.ts
index 18b544157c8d..f621c50853e7 100644
--- a/packages/blocks/src/surface-block/renderer/elements/text/utils.ts
+++ b/packages/blocks/src/surface-block/renderer/elements/text/utils.ts
@@ -383,7 +383,6 @@ export function wrapText(text: string, font: string, maxWidth: number): string {
while (words[index].length > 0) {
const currentChar = String.fromCodePoint(
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
words[index].codePointAt(0)!
);
const width = charWidth.calculate(currentChar, font);
diff --git a/packages/blocks/src/surface-block/utils/rough/canvas.ts b/packages/blocks/src/surface-block/utils/rough/canvas.ts
index 9b315372a189..8b23c2f92fd6 100644
--- a/packages/blocks/src/surface-block/utils/rough/canvas.ts
+++ b/packages/blocks/src/surface-block/utils/rough/canvas.ts
@@ -18,7 +18,7 @@ export class RoughCanvas {
constructor(canvas: HTMLCanvasElement, config?: Config) {
this.canvas = canvas;
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+
this.ctx = this.canvas.getContext('2d')!;
this.gen = new RoughGenerator(config);
}
diff --git a/packages/blocks/src/surface-block/utils/rough/generator.ts b/packages/blocks/src/surface-block/utils/rough/generator.ts
index 99db211d13a0..5ff872f10a13 100644
--- a/packages/blocks/src/surface-block/utils/rough/generator.ts
+++ b/packages/blocks/src/surface-block/utils/rough/generator.ts
@@ -235,8 +235,7 @@ export class RoughGenerator {
const hasStroke = o.stroke !== NOS;
const simplified = !!(o.simplification && o.simplification < 1);
const distance = simplified
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- 4 - 4 * o.simplification!
+ ? 4 - 4 * o.simplification!
: (1 + o.roughness) / 2;
const sets = pointsOnPath(d, 1, distance);
diff --git a/packages/blocks/src/surface-ref-block/surface-ref-portal.ts b/packages/blocks/src/surface-ref-block/surface-ref-portal.ts
index e5f14158b051..4aa1cf1e40f2 100644
--- a/packages/blocks/src/surface-ref-block/surface-ref-portal.ts
+++ b/packages/blocks/src/surface-ref-block/surface-ref-portal.ts
@@ -1,5 +1,3 @@
-/* eslint-disable lit/binding-positions, lit/no-invalid-html */
-
import type {
FrameBlockModel,
GroupElementModel,
diff --git a/packages/framework/block-std/src/command/types.ts b/packages/framework/block-std/src/command/types.ts
index 9c6e9e825f9a..90d9aa2bbe96 100644
--- a/packages/framework/block-std/src/command/types.ts
+++ b/packages/framework/block-std/src/command/types.ts
@@ -21,7 +21,6 @@ export type CommandKeyToData = Pick<
export type Command<
In extends BlockSuite.CommandDataName = never,
Out extends BlockSuite.CommandDataName = never,
- // eslint-disable-next-line @typescript-eslint/ban-types
InData extends object = {},
> = (
ctx: CommandKeyToData & InitCommandCtx & InData,
@@ -37,7 +36,6 @@ type OutDataOfCommand =
// eslint-disable-next-line @typescript-eslint/no-explicit-any
C extends Command ? CommandKeyToData : never;
-// eslint-disable-next-line @typescript-eslint/ban-types
type CommonMethods = {
inline: (
command: Command, InlineOut>
@@ -59,7 +57,6 @@ type Cmds = {
[cmdSymbol]: Command[];
};
-// eslint-disable-next-line @typescript-eslint/ban-types
export type Chain = CommonMethods & {
[K in keyof BlockSuite.Commands]: (
data: MakeOptionalIfEmpty<
@@ -80,7 +77,6 @@ declare global {
type CommandName = keyof Commands;
type CommandDataName = keyof CommandContext;
- // eslint-disable-next-line @typescript-eslint/ban-types
type CommandChain = Chain;
}
}
diff --git a/packages/framework/block-std/src/gfx/surface/decorators/observer.ts b/packages/framework/block-std/src/gfx/surface/decorators/observer.ts
index 25a4f369ba7a..8a825068a8c0 100644
--- a/packages/framework/block-std/src/gfx/surface/decorators/observer.ts
+++ b/packages/framework/block-std/src/gfx/surface/decorators/observer.ts
@@ -37,10 +37,7 @@ export function observe<
// eslint-disable-next-line @typescript-eslint/no-explicit-any
E extends Y.YEvent,
T extends GfxPrimitiveElementModel,
->(
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- fn: ObserveFn
-) {
+>(fn: ObserveFn) {
return function observeDecorator(
_: unknown,
context: ClassAccessorDecoratorContext
diff --git a/packages/framework/block-std/src/gfx/surface/decorators/watch.ts b/packages/framework/block-std/src/gfx/surface/decorators/watch.ts
index ecac0f8588d3..b45312bf835c 100644
--- a/packages/framework/block-std/src/gfx/surface/decorators/watch.ts
+++ b/packages/framework/block-std/src/gfx/surface/decorators/watch.ts
@@ -14,10 +14,7 @@ const watchSymbol = Symbol('watch');
* The watch decorator is used to watch the property change of the element.
* You can thinks of it as a decorator version of `elementUpdated` slot of the surface model.
*/
-export function watch(
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- fn: WatchFn
-) {
+export function watch(fn: WatchFn) {
return function watchDecorator(
_: unknown,
context: ClassAccessorDecoratorContext
diff --git a/packages/framework/global/src/di/types.ts b/packages/framework/global/src/di/types.ts
index c3f8c7bfedc8..3b2f2a4e70b5 100644
--- a/packages/framework/global/src/di/types.ts
+++ b/packages/framework/global/src/di/types.ts
@@ -1,7 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { ServiceProvider } from './provider.js';
-// eslint-disable-next-line @typescript-eslint/ban-types
export type Type = abstract new (...args: any) => T;
export type ServiceFactory = (provider: ServiceProvider) => T;
diff --git a/packages/framework/inline/src/__tests__/utils.ts b/packages/framework/inline/src/__tests__/utils.ts
index b3cf600762f8..cd6b1804d33a 100644
--- a/packages/framework/inline/src/__tests__/utils.ts
+++ b/packages/framework/inline/src/__tests__/utils.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import type {
DeltaInsert,
InlineEditor,
diff --git a/packages/framework/store/src/__tests__/collection.unit.spec.ts b/packages/framework/store/src/__tests__/collection.unit.spec.ts
index 40c9c6907784..0edb232a5fa9 100644
--- a/packages/framework/store/src/__tests__/collection.unit.spec.ts
+++ b/packages/framework/store/src/__tests__/collection.unit.spec.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-restricted-imports */
// checkout https://vitest.dev/guide/debugging.html for debugging tests
import type { Slot } from '@blocksuite/global/utils';
@@ -374,7 +373,6 @@ describe('addBlock', () => {
assert.equal(root.flavour, 'affine:page');
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
doc.addBlock('affine:paragraph', {}, noteId!);
assert.equal(root.children[0].flavour, 'affine:note');
assert.equal(root.children[0].children[0].flavour, 'affine:paragraph');
diff --git a/packages/framework/store/src/__tests__/schema.unit.spec.ts b/packages/framework/store/src/__tests__/schema.unit.spec.ts
index 715ed80d7105..a4455e227270 100644
--- a/packages/framework/store/src/__tests__/schema.unit.spec.ts
+++ b/packages/framework/store/src/__tests__/schema.unit.spec.ts
@@ -1,5 +1,3 @@
-/* eslint-disable @typescript-eslint/no-restricted-imports */
-
import { literal } from 'lit/static-html.js';
import { describe, expect, it, vi } from 'vitest';
diff --git a/packages/playground/apps/_common/components/debug-menu.ts b/packages/playground/apps/_common/components/debug-menu.ts
index beb262e3bc77..68ce68e474af 100644
--- a/packages/playground/apps/_common/components/debug-menu.ts
+++ b/packages/playground/apps/_common/components/debug-menu.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-restricted-imports */
import type { SerializedXYWH } from '@blocksuite/global/utils';
import type { DeltaInsert } from '@blocksuite/inline/types';
import type { SlDropdown } from '@shoelace-style/shoelace';
diff --git a/packages/playground/apps/_common/components/quick-edgeless-menu.ts b/packages/playground/apps/_common/components/quick-edgeless-menu.ts
index affd48e310e4..5272f2450d8c 100644
--- a/packages/playground/apps/_common/components/quick-edgeless-menu.ts
+++ b/packages/playground/apps/_common/components/quick-edgeless-menu.ts
@@ -1,11 +1,13 @@
-/* eslint-disable @typescript-eslint/no-restricted-imports */
-import type { DocMode } from '@blocksuite/blocks';
import type { SerializedXYWH } from '@blocksuite/global/utils';
import type { DeltaInsert } from '@blocksuite/inline';
import type { AffineEditorContainer } from '@blocksuite/presets';
import { ShadowlessElement } from '@blocksuite/block-std';
-import { type AffineTextAttributes, DocModeProvider } from '@blocksuite/blocks';
+import {
+ type AffineTextAttributes,
+ type DocMode,
+ DocModeProvider,
+} from '@blocksuite/blocks';
import { EdgelessRootService, printToPdf } from '@blocksuite/blocks';
import { type DocCollection, Text } from '@blocksuite/store';
import '@shoelace-style/shoelace/dist/components/alert/alert.js';
diff --git a/packages/playground/apps/_common/components/start-panel.ts b/packages/playground/apps/_common/components/start-panel.ts
index c4993f017eec..473379d39b87 100644
--- a/packages/playground/apps/_common/components/start-panel.ts
+++ b/packages/playground/apps/_common/components/start-panel.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-restricted-imports */
import '@shoelace-style/shoelace/dist/components/card/card.js';
import { LitElement, css, html } from 'lit';
import { customElement } from 'lit/decorators.js';
diff --git a/packages/playground/apps/default/main.ts b/packages/playground/apps/default/main.ts
index aac0b31e6165..df058aef32fb 100644
--- a/packages/playground/apps/default/main.ts
+++ b/packages/playground/apps/default/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import '@blocksuite/presets/themes/affine.css';
import { setupEdgelessTemplate } from '../_common/setup.js';
diff --git a/packages/playground/apps/starter/main.ts b/packages/playground/apps/starter/main.ts
index 963479a30970..c990b1e380bc 100644
--- a/packages/playground/apps/starter/main.ts
+++ b/packages/playground/apps/starter/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import {
WidgetViewMapExtension,
WidgetViewMapIdentifier,
diff --git a/packages/playground/apps/starter/utils/test-worker.ts b/packages/playground/apps/starter/utils/test-worker.ts
index 4fa78618e105..827635be3d7f 100644
--- a/packages/playground/apps/starter/utils/test-worker.ts
+++ b/packages/playground/apps/starter/utils/test-worker.ts
@@ -1,7 +1,5 @@
// This file is used to test blocksuite can run in a web worker. SEE: tests/worker.spec.ts
-/* eslint-disable @typescript-eslint/no-restricted-imports */
-
import '@blocksuite/store';
// import '@blocksuite/block-std'; // seems not working
import '@blocksuite/blocks/schemas';
diff --git a/packages/playground/examples/basic/edgeless/main.ts b/packages/playground/examples/basic/edgeless/main.ts
index def838fecf22..ce85b1ed2ec4 100644
--- a/packages/playground/examples/basic/edgeless/main.ts
+++ b/packages/playground/examples/basic/edgeless/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { EdgelessEditor, createEmptyDoc } from '@blocksuite/presets';
import '@blocksuite/presets/themes/affine.css';
diff --git a/packages/playground/examples/basic/page/main.ts b/packages/playground/examples/basic/page/main.ts
index 7613aef11d72..e0976fbd881c 100644
--- a/packages/playground/examples/basic/page/main.ts
+++ b/packages/playground/examples/basic/page/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { PageEditor, createEmptyDoc } from '@blocksuite/presets';
import '@blocksuite/presets/themes/affine.css';
import { Text } from '@blocksuite/store';
diff --git a/packages/playground/examples/inline/test-page.ts b/packages/playground/examples/inline/test-page.ts
index 5d06b512b4e4..bac0cc0f04fd 100644
--- a/packages/playground/examples/inline/test-page.ts
+++ b/packages/playground/examples/inline/test-page.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-non-null-assertion */
import { ShadowlessElement } from '@blocksuite/block-std';
import {
type AttributeRenderer,
diff --git a/packages/playground/examples/multiple-editors/edgeless-edgeless/main.ts b/packages/playground/examples/multiple-editors/edgeless-edgeless/main.ts
index c138898a67f9..1332a8d8ce5c 100644
--- a/packages/playground/examples/multiple-editors/edgeless-edgeless/main.ts
+++ b/packages/playground/examples/multiple-editors/edgeless-edgeless/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { EdgelessEditor, createEmptyDoc } from '@blocksuite/presets';
import '@blocksuite/presets/themes/affine.css';
diff --git a/packages/playground/examples/multiple-editors/page-edgeless/main.ts b/packages/playground/examples/multiple-editors/page-edgeless/main.ts
index a7a15608af8c..4e56b7f60bff 100644
--- a/packages/playground/examples/multiple-editors/page-edgeless/main.ts
+++ b/packages/playground/examples/multiple-editors/page-edgeless/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import {
EdgelessEditor,
PageEditor,
diff --git a/packages/playground/examples/multiple-editors/page-page/main.ts b/packages/playground/examples/multiple-editors/page-page/main.ts
index de4d6fc12170..ad0630a8d9c7 100644
--- a/packages/playground/examples/multiple-editors/page-page/main.ts
+++ b/packages/playground/examples/multiple-editors/page-page/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { PageEditor, createEmptyDoc } from '@blocksuite/presets';
import '@blocksuite/presets/themes/affine.css';
diff --git a/packages/presets/src/__tests__/edgeless/layer.spec.ts b/packages/presets/src/__tests__/edgeless/layer.spec.ts
index 62afdb0e3bd0..b70ab8ace0b6 100644
--- a/packages/presets/src/__tests__/edgeless/layer.spec.ts
+++ b/packages/presets/src/__tests__/edgeless/layer.spec.ts
@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
+
import type { BlockComponent } from '@blocksuite/block-std';
import {
diff --git a/packages/presets/src/__tests__/env.d.ts b/packages/presets/src/__tests__/env.d.ts
index 513ef63dd820..9f29257211f4 100644
--- a/packages/presets/src/__tests__/env.d.ts
+++ b/packages/presets/src/__tests__/env.d.ts
@@ -1,7 +1,6 @@
import type { Job } from '@blocksuite/store';
import type { Doc, DocCollection } from '@blocksuite/store';
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import type { AffineEditorContainer } from '../index.js';
declare global {
diff --git a/packages/presets/src/__tests__/utils/edgeless.ts b/packages/presets/src/__tests__/utils/edgeless.ts
index 331b98bf17ab..644e8e714df5 100644
--- a/packages/presets/src/__tests__/utils/edgeless.ts
+++ b/packages/presets/src/__tests__/utils/edgeless.ts
@@ -6,7 +6,6 @@ import type {
} from '@blocksuite/blocks';
import type { Doc } from '@blocksuite/store';
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import type { AffineEditorContainer } from '../../index.js';
export function getSurface(doc: Doc, editor: AffineEditorContainer) {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 71409b982b72..3b9bbc94e6fc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,12 +48,18 @@ importers:
'@commitlint/config-conventional':
specifier: ^19.2.2
version: 19.2.2
+ '@eslint/eslintrc':
+ specifier: ^3.1.0
+ version: 3.1.0
+ '@eslint/js':
+ specifier: ^9.9.1
+ version: 9.9.1
'@nx/eslint':
specifier: 19.6.2
- version: 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
+ version: 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@9.9.1(jiti@1.21.6))(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
'@nx/playwright':
specifier: 19.6.2
- version: 19.6.2(@babel/traverse@7.25.3)(@playwright/test@1.46.1)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(esbuild@0.23.1)(eslint@8.57.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.5.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(happy-dom@15.0.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))
+ version: 19.6.2(@babel/traverse@7.25.3)(@playwright/test@1.46.1)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.5.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(happy-dom@15.0.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))
'@nx/vite':
specifier: 19.6.2
version: 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.5.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(happy-dom@15.0.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))
@@ -68,7 +74,7 @@ importers:
version: 1.46.1
'@stylistic/eslint-plugin-ts':
specifier: ^2.4.0
- version: 2.6.4(eslint@8.57.0)(typescript@5.5.4)
+ version: 2.6.4(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
'@swc-node/register':
specifier: ^1.10.9
version: 1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4)
@@ -82,11 +88,11 @@ importers:
specifier: ^22.5.0
version: 22.5.0
'@typescript-eslint/eslint-plugin':
- specifier: ^7.18.0
- version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
+ specifier: ^8.0.0
+ version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
'@typescript-eslint/parser':
- specifier: ^7.18.0
- version: 7.18.0(eslint@8.57.0)(typescript@5.5.4)
+ specifier: ^8.0.0
+ version: 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
'@vitest/browser':
specifier: 2.0.5
version: 2.0.5(playwright@1.46.1)(typescript@5.5.4)(vitest@2.0.5)
@@ -103,29 +109,32 @@ importers:
specifier: npm:esbuild@latest
version: 0.23.1
eslint:
- specifier: ^8.57.0
- version: 8.57.0
+ specifier: ^9.0.0
+ version: 9.9.1(jiti@1.21.6)
eslint-config-prettier:
specifier: ^9.1.0
- version: 9.1.0(eslint@8.57.0)
+ version: 9.1.0(eslint@9.9.1(jiti@1.21.6))
eslint-plugin-lit:
specifier: ^1.14.0
- version: 1.14.0(eslint@8.57.0)
+ version: 1.14.0(eslint@9.9.1(jiti@1.21.6))
eslint-plugin-perfectionist:
- specifier: ^2.11.0
- version: 2.11.0(eslint@8.57.0)(typescript@5.5.4)
+ specifier: ^3.0.0
+ version: 3.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
eslint-plugin-prettier:
specifier: ^5.2.1
- version: 5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3)
+ version: 5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(prettier@3.3.3)
eslint-plugin-unicorn:
specifier: ^55.0.0
- version: 55.0.0(eslint@8.57.0)
+ version: 55.0.0(eslint@9.9.1(jiti@1.21.6))
eslint-plugin-unused-imports:
specifier: ^4.0.1
- version: 4.1.3(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)
+ version: 4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))
eslint-plugin-wc:
specifier: ^2.1.0
- version: 2.1.1(eslint@8.57.0)
+ version: 2.1.1(eslint@9.9.1(jiti@1.21.6))
+ globals:
+ specifier: ^15.9.0
+ version: 15.9.0
happy-dom:
specifier: ^15.0.0
version: 15.0.0
@@ -890,6 +899,9 @@ packages:
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
+ peerDependenciesMeta:
+ '@algolia/client-search':
+ optional: true
'@algolia/cache-browser-local-storage@4.24.0':
resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==}
@@ -1979,13 +1991,21 @@ packages:
resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/config-array@0.18.0':
+ resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@8.57.0':
- resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/eslintrc@3.1.0':
+ resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/js@9.9.1':
+ resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/object-schema@2.1.4':
+ resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@floating-ui/core@1.6.7':
resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
@@ -1996,18 +2016,13 @@ packages:
'@floating-ui/utils@0.2.7':
resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==}
- '@humanwhocodes/config-array@0.11.14':
- resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
-
'@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
- '@humanwhocodes/object-schema@2.0.3':
- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
- deprecated: Use @eslint/object-schema instead
+ '@humanwhocodes/retry@0.3.0':
+ resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
+ engines: {node: '>=18.18'}
'@inquirer/checkbox@2.4.7':
resolution: {integrity: sha512-5YwCySyV1UEgqzz34gNsC38eKxRBtlRDpJLlKcRtTjlYA/yDKuc1rfw+hjw+2WJxbAZtaDPsRl5Zk7J14SBoBw==}
@@ -2280,6 +2295,10 @@ packages:
resolution: {integrity: sha512-9h/nxZqmCy26r9VXGUz+Q77vq3eINXOYgE4st3dj6DoE7tulfJueCLw5d4hfDy3S8mKg4cFXaP+KxYQ+txvMzw==}
engines: {node: '>=12.4.0'}
+ '@nolyfill/is-core-module@1.0.39':
+ resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
+ engines: {node: '>=12.4.0'}
+
'@nolyfill/is-generator-function@1.0.29':
resolution: {integrity: sha512-dBNj5iWhFQUM3JG8XxdwYMQMes44GY9cHCeBXAZNrsYAuQofcL0ke4c9BNh/2FPSVr+sVjErbQHLpaos/XMpug==}
engines: {node: '>=12.4.0'}
@@ -2999,40 +3018,35 @@ packages:
'@types/yargs@17.0.33':
resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
- '@typescript-eslint/eslint-plugin@7.18.0':
- resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/eslint-plugin@8.4.0':
+ resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^7.0.0
- eslint: ^8.56.0
+ '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
+ eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/parser@7.18.0':
- resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/parser@8.4.0':
+ resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.56.0
+ eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/scope-manager@7.18.0':
- resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==}
- engines: {node: ^18.18.0 || >=20.0.0}
-
- '@typescript-eslint/scope-manager@8.2.0':
- resolution: {integrity: sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==}
+ '@typescript-eslint/scope-manager@8.4.0':
+ resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@7.18.0':
- resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/type-utils@8.4.0':
+ resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.56.0
typescript: '*'
peerDependenciesMeta:
typescript:
@@ -3042,8 +3056,8 @@ packages:
resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/types@8.2.0':
- resolution: {integrity: sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==}
+ '@typescript-eslint/types@8.4.0':
+ resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@7.18.0':
@@ -3055,8 +3069,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/typescript-estree@8.2.0':
- resolution: {integrity: sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==}
+ '@typescript-eslint/typescript-estree@8.4.0':
+ resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -3064,14 +3078,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/utils@7.18.0':
- resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==}
- engines: {node: ^18.18.0 || >=20.0.0}
- peerDependencies:
- eslint: ^8.56.0
-
- '@typescript-eslint/utils@8.2.0':
- resolution: {integrity: sha512-O46eaYKDlV3TvAVDNcoDzd5N550ckSe8G4phko++OCSC1dYIb9LTc3HDGYdWqWIAT5qDUKphO6sd9RrpIJJPfg==}
+ '@typescript-eslint/utils@8.4.0':
+ resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -3080,8 +3088,8 @@ packages:
resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/visitor-keys@8.2.0':
- resolution: {integrity: sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==}
+ '@typescript-eslint/visitor-keys@8.4.0':
+ resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.2.0':
@@ -4256,10 +4264,6 @@ packages:
resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
engines: {node: '>=6'}
- doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
-
dom-accessibility-api@0.5.16:
resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
@@ -4416,13 +4420,14 @@ packages:
peerDependencies:
eslint: '>= 5'
- eslint-plugin-perfectionist@2.11.0:
- resolution: {integrity: sha512-XrtBtiu5rbQv88gl+1e2RQud9te9luYNvKIgM9emttQ2zutHPzY/AQUucwxscDKV4qlTkvLTxjOFvxqeDpPorw==}
+ eslint-plugin-perfectionist@3.3.0:
+ resolution: {integrity: sha512-sGgShkEqDBqIZ3WlenGHwLe1cl3vHKTfeh9b1XXAamaxSC7AY4Os0jdNCXnGJW4l0TlpismT5t2r7CXY7sfKlw==}
+ engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
astro-eslint-parser: ^1.0.2
eslint: '>=8.0.0'
svelte: '>=3.0.0'
- svelte-eslint-parser: ^0.37.0
+ svelte-eslint-parser: ^0.41.0
vue-eslint-parser: '>=9.0.0'
peerDependenciesMeta:
astro-eslint-parser:
@@ -4472,9 +4477,9 @@ packages:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
- eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint-scope@8.0.2:
+ resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
@@ -4484,19 +4489,20 @@ packages:
resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@8.57.0:
- resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint@9.9.1:
+ resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
espree@10.1.0:
resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
@@ -4608,9 +4614,9 @@ packages:
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
engines: {node: '>=8'}
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
file-type@19.4.1:
resolution: {integrity: sha512-RuWzwF2L9tCHS76KR/Mdh+DwJZcFCzrhrPXpOw6MlEfl/o31fjpTikzcKlYuyeV7e7ftdCGVJTNOCzkYD/aLbw==}
@@ -4675,9 +4681,9 @@ packages:
find-yarn-workspace-root2@1.2.16:
resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
- flat-cache@3.2.0:
- resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
flat@5.0.2:
resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
@@ -4870,9 +4876,9 @@ packages:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
- globals@13.24.0:
- resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
- engines: {node: '>=8'}
+ globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
globals@15.9.0:
resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==}
@@ -5145,10 +5151,6 @@ packages:
resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
engines: {node: '>=6'}
- is-core-module@2.15.1:
- resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
- engines: {node: '>= 0.4'}
-
is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
@@ -7547,10 +7549,6 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
- type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
-
type-fest@0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
@@ -8164,8 +8162,9 @@ snapshots:
'@algolia/autocomplete-shared@1.9.3(@algolia/client-search@5.1.1)(algoliasearch@4.24.0)':
dependencies:
- '@algolia/client-search': 5.1.1
algoliasearch: 4.24.0
+ optionalDependencies:
+ '@algolia/client-search': 5.1.1
'@algolia/cache-browser-local-storage@4.24.0':
dependencies:
@@ -9356,7 +9355,7 @@ snapshots:
'@codesandbox/nodebox@0.1.8':
dependencies:
- outvariant: 1.4.0
+ outvariant: 1.4.3
strict-event-emitter: 0.4.6
'@codesandbox/sandpack-client@2.18.2':
@@ -9602,19 +9601,27 @@ snapshots:
'@esbuild/win32-x64@0.23.1':
optional: true
- '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.6))':
dependencies:
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.0': {}
- '@eslint/eslintrc@2.1.4':
+ '@eslint/config-array@0.18.0':
+ dependencies:
+ '@eslint/object-schema': 2.1.4
+ debug: 4.3.6
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
debug: 4.3.6
- espree: 9.6.1
- globals: 13.24.0
+ espree: 10.1.0
+ globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
@@ -9623,7 +9630,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@8.57.0': {}
+ '@eslint/js@9.9.1': {}
+
+ '@eslint/object-schema@2.1.4': {}
'@floating-ui/core@1.6.7':
dependencies:
@@ -9636,17 +9645,9 @@ snapshots:
'@floating-ui/utils@0.2.7': {}
- '@humanwhocodes/config-array@0.11.14':
- dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.6
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
'@humanwhocodes/module-importer@1.0.1': {}
- '@humanwhocodes/object-schema@2.0.3': {}
+ '@humanwhocodes/retry@0.3.0': {}
'@inquirer/checkbox@2.4.7':
dependencies:
@@ -10046,6 +10047,8 @@ snapshots:
'@nolyfill/hasown@1.0.29': {}
+ '@nolyfill/is-core-module@1.0.39': {}
+
'@nolyfill/is-generator-function@1.0.29': {}
'@nolyfill/isarray@1.0.29': {}
@@ -10182,12 +10185,12 @@ snapshots:
tslib: 2.6.3
yargs-parser: 21.1.1
- '@nx/eslint@19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))':
+ '@nx/eslint@19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@9.9.1(jiti@1.21.6))(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))':
dependencies:
'@nx/devkit': 19.6.2(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
'@nx/js': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.4.5)
- '@nx/linter': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
- eslint: 8.57.0
+ '@nx/linter': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@9.9.1(jiti@1.21.6))(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
+ eslint: 9.9.1(jiti@1.21.6)
semver: 7.6.3
tslib: 2.6.3
typescript: 5.4.5
@@ -10290,9 +10293,9 @@ snapshots:
- supports-color
- typescript
- '@nx/linter@19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))':
+ '@nx/linter@19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@9.9.1(jiti@1.21.6))(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))':
dependencies:
- '@nx/eslint': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
+ '@nx/eslint': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@9.9.1(jiti@1.21.6))(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
transitivePeerDependencies:
- '@babel/traverse'
- '@swc-node/register'
@@ -10336,10 +10339,10 @@ snapshots:
'@nx/nx-win32-x64-msvc@19.6.2':
optional: true
- '@nx/playwright@19.6.2(@babel/traverse@7.25.3)(@playwright/test@1.46.1)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(esbuild@0.23.1)(eslint@8.57.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.5.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(happy-dom@15.0.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))':
+ '@nx/playwright@19.6.2(@babel/traverse@7.25.3)(@playwright/test@1.46.1)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(esbuild@0.23.1)(eslint@9.9.1(jiti@1.21.6))(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.5.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(happy-dom@15.0.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))':
dependencies:
'@nx/devkit': 19.6.2(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
- '@nx/eslint': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
+ '@nx/eslint': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(@zkochan/js-yaml@0.0.7)(eslint@9.9.1(jiti@1.21.6))(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))
'@nx/js': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.5.4)
'@nx/vite': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.5.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(happy-dom@15.0.0)(less@4.1.3)(sass@1.77.8)(stylus@0.59.0)(terser@5.31.6))
'@nx/webpack': 19.6.2(@babel/traverse@7.25.3)(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.0)(esbuild@0.23.1)(nx@19.6.2(@swc-node/register@1.10.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.7.14(@swc/helpers@0.5.12)))(typescript@5.5.4)
@@ -10676,20 +10679,20 @@ snapshots:
'@stitches/core@1.2.8': {}
- '@stylistic/eslint-plugin-js@2.6.4(eslint@8.57.0)':
+ '@stylistic/eslint-plugin-js@2.6.4(eslint@9.9.1(jiti@1.21.6))':
dependencies:
'@types/eslint': 9.6.0
acorn: 8.12.1
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
eslint-visitor-keys: 4.0.0
espree: 10.1.0
- '@stylistic/eslint-plugin-ts@2.6.4(eslint@8.57.0)(typescript@5.5.4)':
+ '@stylistic/eslint-plugin-ts@2.6.4(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
dependencies:
- '@stylistic/eslint-plugin-js': 2.6.4(eslint@8.57.0)
+ '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.1(jiti@1.21.6))
'@types/eslint': 9.6.0
- '@typescript-eslint/utils': 8.2.0(eslint@8.57.0)(typescript@5.5.4)
- eslint: 8.57.0
+ '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
+ eslint: 9.9.1(jiti@1.21.6)
transitivePeerDependencies:
- supports-color
- typescript
@@ -11070,15 +11073,15 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
dependencies:
'@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 7.18.0
- '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 7.18.0
- eslint: 8.57.0
+ '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.4.0
+ eslint: 9.9.1(jiti@1.21.6)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@@ -11088,44 +11091,39 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/scope-manager': 7.18.0
- '@typescript-eslint/types': 7.18.0
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 7.18.0
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.4.0
debug: 4.3.6
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@7.18.0':
+ '@typescript-eslint/scope-manager@8.4.0':
dependencies:
- '@typescript-eslint/types': 7.18.0
- '@typescript-eslint/visitor-keys': 7.18.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/visitor-keys': 8.4.0
- '@typescript-eslint/scope-manager@8.2.0':
+ '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/types': 8.2.0
- '@typescript-eslint/visitor-keys': 8.2.0
-
- '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)':
- dependencies:
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
- '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
debug: 4.3.6
- eslint: 8.57.0
ts-api-utils: 1.3.0(typescript@5.5.4)
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
+ - eslint
- supports-color
'@typescript-eslint/types@7.18.0': {}
- '@typescript-eslint/types@8.2.0': {}
+ '@typescript-eslint/types@8.4.0': {}
'@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)':
dependencies:
@@ -11142,12 +11140,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.2.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/types': 8.2.0
- '@typescript-eslint/visitor-keys': 8.2.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/visitor-keys': 8.4.0
debug: 4.3.6
- globby: 11.1.0
+ fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
@@ -11157,24 +11155,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)':
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@typescript-eslint/scope-manager': 7.18.0
- '@typescript-eslint/types': 7.18.0
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
- eslint: 8.57.0
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@typescript-eslint/utils@8.2.0(eslint@8.57.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@typescript-eslint/scope-manager': 8.2.0
- '@typescript-eslint/types': 8.2.0
- '@typescript-eslint/typescript-estree': 8.2.0(typescript@5.5.4)
- eslint: 8.57.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6))
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
+ eslint: 9.9.1(jiti@1.21.6)
transitivePeerDependencies:
- supports-color
- typescript
@@ -11184,9 +11171,9 @@ snapshots:
'@typescript-eslint/types': 7.18.0
eslint-visitor-keys: 3.4.3
- '@typescript-eslint/visitor-keys@8.2.0':
+ '@typescript-eslint/visitor-keys@8.4.0':
dependencies:
- '@typescript-eslint/types': 8.2.0
+ '@typescript-eslint/types': 8.4.0
eslint-visitor-keys: 3.4.3
'@ungap/structured-clone@1.2.0': {}
@@ -12454,10 +12441,6 @@ snapshots:
dependencies:
'@leichtgewicht/ip-codec': 2.0.5
- doctrine@3.0.0:
- dependencies:
- esutils: 2.0.3
-
dom-accessibility-api@0.5.16: {}
dom-serializer@2.0.0:
@@ -12599,45 +12582,46 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-config-prettier@9.1.0(eslint@8.57.0):
+ eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)):
dependencies:
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
- eslint-plugin-lit@1.14.0(eslint@8.57.0):
+ eslint-plugin-lit@1.14.0(eslint@9.9.1(jiti@1.21.6)):
dependencies:
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
parse5: 6.0.1
parse5-htmlparser2-tree-adapter: 6.0.1
requireindex: 1.2.0
- eslint-plugin-perfectionist@2.11.0(eslint@8.57.0)(typescript@5.5.4):
+ eslint-plugin-perfectionist@3.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4):
dependencies:
- '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
- eslint: 8.57.0
- minimatch: 9.0.5
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
+ eslint: 9.9.1(jiti@1.21.6)
+ minimatch: 10.0.1
natural-compare-lite: 1.4.0
transitivePeerDependencies:
- supports-color
- typescript
- eslint-plugin-prettier@5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3):
+ eslint-plugin-prettier@5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(prettier@3.3.3):
dependencies:
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
prettier: 3.3.3
prettier-linter-helpers: 1.0.0
synckit: 0.9.1
optionalDependencies:
'@types/eslint': 9.6.0
- eslint-config-prettier: 9.1.0(eslint@8.57.0)
+ eslint-config-prettier: 9.1.0(eslint@9.9.1(jiti@1.21.6))
- eslint-plugin-unicorn@55.0.0(eslint@8.57.0):
+ eslint-plugin-unicorn@55.0.0(eslint@9.9.1(jiti@1.21.6)):
dependencies:
'@babel/helper-validator-identifier': 7.24.7
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6))
ci-info: 4.0.0
clean-regexp: 1.0.0
core-js-compat: 3.38.1
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
esquery: 1.6.0
globals: 15.9.0
indent-string: 4.0.0
@@ -12650,15 +12634,15 @@ snapshots:
semver: 7.6.3
strip-indent: 3.0.0
- eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0):
+ eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6)):
dependencies:
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
optionalDependencies:
- '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
+ '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
- eslint-plugin-wc@2.1.1(eslint@8.57.0):
+ eslint-plugin-wc@2.1.1(eslint@9.9.1(jiti@1.21.6)):
dependencies:
- eslint: 8.57.0
+ eslint: 9.9.1(jiti@1.21.6)
is-valid-element-name: 1.0.0
js-levenshtein-esm: 1.2.0
@@ -12667,7 +12651,7 @@ snapshots:
esrecurse: 4.3.0
estraverse: 4.3.0
- eslint-scope@7.2.2:
+ eslint-scope@8.0.2:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
@@ -12676,38 +12660,34 @@ snapshots:
eslint-visitor-keys@4.0.0: {}
- eslint@8.57.0:
+ eslint@9.9.1(jiti@1.21.6):
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6))
'@eslint-community/regexpp': 4.11.0
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.0
- '@humanwhocodes/config-array': 0.11.14
+ '@eslint/config-array': 0.18.0
+ '@eslint/eslintrc': 3.1.0
+ '@eslint/js': 9.9.1
'@humanwhocodes/module-importer': 1.0.1
+ '@humanwhocodes/retry': 0.3.0
'@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.2.0
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.6
- doctrine: 3.0.0
escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
+ eslint-scope: 8.0.2
+ eslint-visitor-keys: 4.0.0
+ espree: 10.1.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
+ file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.24.0
- graphemer: 1.4.0
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
- js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
@@ -12716,6 +12696,8 @@ snapshots:
optionator: 0.9.4
strip-ansi: 6.0.1
text-table: 0.2.0
+ optionalDependencies:
+ jiti: 1.21.6
transitivePeerDependencies:
- supports-color
@@ -12725,12 +12707,6 @@ snapshots:
acorn-jsx: 5.3.2(acorn@8.12.1)
eslint-visitor-keys: 4.0.0
- espree@9.6.1:
- dependencies:
- acorn: 8.12.1
- acorn-jsx: 5.3.2(acorn@8.12.1)
- eslint-visitor-keys: 3.4.3
-
esprima@4.0.1: {}
esquery@1.6.0:
@@ -12877,9 +12853,9 @@ snapshots:
dependencies:
escape-string-regexp: 1.0.5
- file-entry-cache@6.0.1:
+ file-entry-cache@8.0.0:
dependencies:
- flat-cache: 3.2.0
+ flat-cache: 4.0.1
file-type@19.4.1:
dependencies:
@@ -12977,11 +12953,10 @@ snapshots:
micromatch: 4.0.7
pkg-dir: 4.2.0
- flat-cache@3.2.0:
+ flat-cache@4.0.1:
dependencies:
flatted: 3.3.1
keyv: 4.5.4
- rimraf: 3.0.2
flat@5.0.2: {}
@@ -13177,9 +13152,7 @@ snapshots:
globals@11.12.0: {}
- globals@13.24.0:
- dependencies:
- type-fest: 0.20.2
+ globals@14.0.0: {}
globals@15.9.0: {}
@@ -13512,10 +13485,6 @@ snapshots:
dependencies:
builtin-modules: 3.3.0
- is-core-module@2.15.1:
- dependencies:
- hasown: '@nolyfill/hasown@1.0.29'
-
is-docker@2.2.1: {}
is-docker@3.0.0: {}
@@ -14807,7 +14776,7 @@ snapshots:
bl: 4.1.0
chalk: 4.1.2
cli-cursor: 3.1.0
- cli-spinners: 2.6.1
+ cli-spinners: 2.9.2
is-interactive: 1.0.0
log-symbols: 4.1.0
strip-ansi: 6.0.1
@@ -15505,7 +15474,7 @@ snapshots:
resolve@1.22.8:
dependencies:
- is-core-module: 2.15.1
+ is-core-module: '@nolyfill/is-core-module@1.0.39'
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -15866,7 +15835,7 @@ snapshots:
'@open-draft/deferred-promise': 2.2.0
dotenv: 16.4.5
mime-db: 1.53.0
- outvariant: 1.4.0
+ outvariant: 1.4.3
statuses@1.5.0: {}
@@ -16265,8 +16234,6 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
- type-fest@0.20.2: {}
-
type-fest@0.21.3: {}
type-fest@0.6.0: {}
diff --git a/scripts/node-import-test.ts b/scripts/node-import-test.ts
index 610992776e5c..3c94709c6a41 100644
--- a/scripts/node-import-test.ts
+++ b/scripts/node-import-test.ts
@@ -1,5 +1,3 @@
-/* eslint-disable @typescript-eslint/no-restricted-imports */
-
import '../packages/framework/store/src/index';
import '../packages/affine/model/src/index';
diff --git a/tests/edgeless/linked-doc.spec.ts b/tests/edgeless/linked-doc.spec.ts
index 128500d36bd9..3f5c2cf90b2c 100644
--- a/tests/edgeless/linked-doc.spec.ts
+++ b/tests/edgeless/linked-doc.spec.ts
@@ -1,7 +1,6 @@
import { assertNotExists } from '@global/utils.js';
import { expect } from '@playwright/test';
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import {
Shape,
activeNoteInEdgeless,
diff --git a/tests/edgeless/note/note.spec.ts b/tests/edgeless/note/note.spec.ts
index 401110b51d14..57ed54d791ba 100644
--- a/tests/edgeless/note/note.spec.ts
+++ b/tests/edgeless/note/note.spec.ts
@@ -1,7 +1,6 @@
import { NOTE_WIDTH, NoteDisplayMode } from '@blocksuite/affine-model';
import { expect } from '@playwright/test';
-// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import {
activeNoteInEdgeless,
addNote,
diff --git a/tests/link.spec.ts b/tests/link.spec.ts
index 2927aea05a43..30b58b14604c 100644
--- a/tests/link.spec.ts
+++ b/tests/link.spec.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-non-null-assertion */
import type { Page } from '@playwright/test';
import { expect } from '@playwright/test';
diff --git a/tests/selection/block.spec.ts b/tests/selection/block.spec.ts
index fd5d082288fb..55dcee4c69c3 100644
--- a/tests/selection/block.spec.ts
+++ b/tests/selection/block.spec.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-non-null-assertion */
import type { Page } from '@playwright/test';
import { expect } from '@playwright/test';
diff --git a/tests/selection/native.spec.ts b/tests/selection/native.spec.ts
index e1214f4dd908..cf1b6ea7d1de 100644
--- a/tests/selection/native.spec.ts
+++ b/tests/selection/native.spec.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-non-null-assertion */
import { expect } from '@playwright/test';
import {
diff --git a/tests/utils/actions/misc.ts b/tests/utils/actions/misc.ts
index 2c32874902a0..aabc3bf3f26c 100644
--- a/tests/utils/actions/misc.ts
+++ b/tests/utils/actions/misc.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-restricted-imports */
import type { EditorHost } from '@block-std/view/element/lit-host.js';
import type { DatabaseBlockModel, ListType, RichText } from '@blocks/index.js';
import type { InlineRange, InlineRootElement } from '@inline/index.js';
@@ -1092,7 +1091,6 @@ export async function setSelection(
focusOffset,
currentEditorIndex,
}) => {
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
const editorHost =
document.querySelectorAll('editor-host')[currentEditorIndex];
const anchorRichText = editorHost.querySelector(
diff --git a/tests/utils/asserts.ts b/tests/utils/asserts.ts
index 8ac4efa35017..3f80f2213513 100644
--- a/tests/utils/asserts.ts
+++ b/tests/utils/asserts.ts
@@ -1,6 +1,3 @@
-/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */
-/* eslint-disable @typescript-eslint/no-non-null-assertion */
-
import type {
BlockComponent,
EditorHost,
diff --git a/tests/utils/declare-test-window.ts b/tests/utils/declare-test-window.ts
index 4f7e29d778f1..fae0370a3e70 100644
--- a/tests/utils/declare-test-window.ts
+++ b/tests/utils/declare-test-window.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-restricted-imports */
import type { WidgetViewMapIdentifier } from '@block-std/index.js';
import type { EditorHost } from '@block-std/view/element/index.js';
import type { TestUtils } from '@blocks/index.js';