From ea746e3d77246104c1441270b1a5c3de40215f84 Mon Sep 17 00:00:00 2001 From: Brooooooklyn Date: Fri, 13 Dec 2024 10:49:35 +0000 Subject: [PATCH] chore: disable rules in oxlint (#9154) --- .eslintrc.js | 245 ++++++++--------- oxlint.json | 160 ++++++++++- package.json | 1 - .../infra/src/modules/db/schema/index.ts | 2 + .../infra/src/modules/db/schema/schema.ts | 10 +- .../infra/src/modules/db/services/db.ts | 16 +- .../src/modules/feature-flag/constant.ts | 1 + .../__tests__/fractional-indexing.spec.ts | 1 - .../common/nbstore/src/impls/cloud/socket.ts | 2 +- packages/common/nbstore/src/storage/index.ts | 2 +- packages/frontend/admin/package.json | 1 + .../components/data-table-row-actions.tsx | 6 +- .../components/use-user-management.ts | 4 +- .../admin/src/modules/nav/user-dropdown.tsx | 2 +- .../frontend/admin/src/modules/setup/form.tsx | 3 +- packages/frontend/apps/electron/package.json | 5 + .../frontend/apps/electron/scripts/dev.ts | 14 +- .../apps/electron/scripts/make-nsis.ts | 4 +- .../apps/electron/scripts/make-squirrel.ts | 4 +- .../frontend/apps/electron/src/main/index.ts | 1 + .../electron/src/main/shared-state-schema.ts | 4 +- packages/frontend/apps/ios/src/app.tsx | 10 +- packages/frontend/apps/ios/src/fetch.ts | 2 +- .../frontend/apps/ios/src/virtual-keyboard.ts | 20 +- .../auth-components/password-input/index.tsx | 3 +- .../ui/date-picker/calendar/day-picker.tsx | 2 +- .../ai/_common/components/ask-ai-button.ts | 3 +- .../ai/entries/slash-menu/setup-slash-menu.ts | 2 - .../ai/peek-view/chat-block-peek-view.ts | 2 +- .../presets/ai/utils/selection-utils.ts | 3 +- .../affine/page-history-modal/data.ts | 1 + .../specs/custom/spec-patchers.tsx | 2 +- .../general-setting/plans/plan-card.tsx | 2 - .../explorer/sections/favorites/index.tsx | 4 +- .../modules/cloud/entities/subscription.ts | 2 +- .../core/src/modules/editor-setting/schema.ts | 1 + .../services/spell-check-setting.ts | 2 +- .../views/sections/favorites/index.tsx | 8 +- .../core/src/modules/favorite/constant.ts | 6 +- .../favorite/entities/favorite-list.ts | 16 +- .../core/src/modules/favorite/index.ts | 6 +- .../modules/favorite/services/old/adapter.ts | 4 +- .../src/modules/favorite/stores/favorite.ts | 18 +- .../core/src/modules/organize/constants.ts | 6 +- .../src/modules/userspace/entities/user-db.ts | 4 +- .../src/modules/userspace/schema/index.ts | 2 +- .../modules/workspace-engine/impls/cloud.ts | 3 +- .../modules/workspace-engine/utils/base64.ts | 2 +- .../frontend/core/src/utils/fuzzy-match.ts | 8 +- packages/frontend/i18n/src/i18next.ts | 2 +- packages/frontend/i18n/src/utils/time.ts | 4 +- scripts/setup/vi-mock.ts | 2 +- yarn.lock | 250 ++++++++++++++++-- 53 files changed, 621 insertions(+), 269 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 58baf6dab..d39c0b353 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,63 +1,5 @@ const { join } = require('node:path'); -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: [`@affine/${packageName}`], - message: 'Do not import package itself', - allowTypeImports: false, - }, - { - group: [`@toeverything/${packageName}`], - message: 'Do not import package itself', - allowTypeImports: false, - }, - { - group: ['@blocksuite/store'], - message: "Import from '@blocksuite/global/utils'", - importNames: ['assertExists', 'assertEquals'], - }, - { - group: ['react-router-dom'], - message: 'Use `useNavigateHelper` instead', - importNames: ['useNavigate'], - }, - { - group: ['@affine/env/constant'], - message: - 'Do not import from @affine/env/constant. Use `BUILD_CONFIG.isElectron` instead', - importNames: ['isElectron'], - }, -]; - -const allPackages = [ - 'packages/backend/server', - 'packages/frontend/component', - 'packages/frontend/core', - 'packages/frontend/apps/electron', - 'packages/frontend/apps/web', - 'packages/frontend/apps/mobile', - 'packages/frontend/graphql', - 'packages/frontend/i18n', - 'packages/frontend/native', - 'packages/frontend/templates', - 'packages/frontend/track', - 'packages/common/debug', - 'packages/common/env', - 'packages/common/infra', - 'packages/common/nbstore', - 'tools/cli', -]; - /** * @type {import('eslint').Linter.Config} */ @@ -93,54 +35,116 @@ const config = { plugins: [ 'react', '@typescript-eslint', - 'simple-import-sort', 'sonarjs', 'import-x', 'unused-imports', - 'unicorn', 'rxjs', + 'unicorn', ], rules: { - 'array-callback-return': 'error', - 'no-undef': 'off', + // enabled in oxlint + 'array-callback-return': 'off', + 'constructor-super': 'off', + eqeqeq: 'off', + 'getter-return': 'off', + 'for-direction': 'off', + 'require-yield': 'off', + 'use-isnan': 'off', + 'valid-typeof': 'off', + 'no-self-compare': 'off', 'no-empty': 'off', + 'no-constant-binary-expression': 'off', + 'no-constructor-return': 'off', 'no-func-assign': 'off', + 'no-global-assign': 'off', + 'no-ex-assign': 'off', + 'no-fallthrough': 'off', + 'no-irregular-whitespace': 'off', + 'no-control-regex': 'off', + 'no-with': 'off', + 'no-debugger': 'off', + 'no-const-assign': 'off', + 'no-import-assign': 'off', + 'no-setter-return': 'off', + 'no-obj-calls': 'off', + 'no-unsafe-negation': 'off', + 'no-dupe-class-members': 'off', + 'no-dupe-keys': 'off', + 'no-this-before-super': 'off', + 'no-empty-character-class': 'off', + 'no-useless-catch': 'off', + 'no-async-promise-executor': 'off', + 'no-unreachable': 'off', + 'no-duplicate-case': 'off', + 'no-empty-pattern': 'off', + 'no-unused-labels': 'off', + 'no-sparse-arrays': 'off', + 'no-delete-var': 'off', + 'no-compare-neg-zero': 'off', + 'no-redeclare': 'off', + 'no-case-declarations': 'off', + 'no-class-assign': 'off', + 'no-var': 'off', + 'no-self-assign': 'off', + 'no-inner-declarations': 'off', + 'no-dupe-else-if': 'off', + 'no-invalid-regexp': 'off', + 'no-unsafe-finally': 'off', + 'no-prototype-builtins': 'off', + 'no-shadow-restricted-names': 'off', + 'no-nonoctal-decimal-escape': 'off', + 'no-constant-condition': 'off', + 'no-useless-escape': 'off', + 'no-unsafe-optional-chaining': 'off', + 'no-extra-boolean-cast': 'off', + 'no-regex-spaces': 'off', + 'react/jsx-no-useless-fragment': 'off', + 'react/no-unknown-property': 'off', + 'react/no-string-refs': 'off', + 'react/no-direct-mutation-state': 'off', + 'react/require-render-return': 'off', + 'react/jsx-no-undef': 'off', + 'react/jsx-no-duplicate-props': 'off', + 'react/jsx-key': 'off', + 'react/no-danger-with-children': 'off', + 'react/no-unescaped-entities': 'off', + 'react/no-is-mounted': 'off', + 'react/no-find-dom-node': 'off', + 'react/no-children-prop': 'off', + 'react/no-render-return-value': 'off', + 'react/jsx-no-target-blank': 'off', + 'react/jsx-no-comment-textnodes': 'off', + 'sonarjs/no-useless-catch': 'off', + '@typescript-eslint/consistent-type-imports': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-loss-of-precision': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/triple-slash-reference': 'off', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'off', + '@typescript-eslint/no-duplicate-enum-values': 'off', + '@typescript-eslint/no-extra-non-null-assertion': 'off', + '@typescript-eslint/no-misused-new': 'off', + '@typescript-eslint/prefer-for-of': 'off', + '@typescript-eslint/no-unsafe-declaration-merging': 'off', + '@typescript-eslint/no-this-alias': 'off', + '@typescript-eslint/prefer-as-const': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-unnecessary-type-constraint': 'off', + '@typescript-eslint/no-array-constructor': 'off', + '@typescript-eslint/ban-types': 'off', + // enable in typescript-eslint + 'no-undef': 'off', 'no-cond-assign': 'off', - 'no-constant-binary-expression': 'error', - 'no-constructor-return': 'error', - 'no-self-compare': 'error', - eqeqeq: ['error', 'always', { null: 'ignore' }], 'react/prop-types': 'off', - 'react/jsx-no-useless-fragment': 'error', - '@typescript-eslint/consistent-type-imports': 'error', - '@typescript-eslint/no-non-null-assertion': 'error', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/await-thenable': 'error', '@typescript-eslint/require-array-sort-compare': 'error', '@typescript-eslint/unified-signatures': 'error', '@typescript-eslint/prefer-for-of': 'error', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - varsIgnorePattern: '^_', - argsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], 'unused-imports/no-unused-imports': 'error', - 'simple-import-sort/imports': 'error', - 'simple-import-sort/exports': 'error', - 'import-x/no-duplicates': 'error', - '@typescript-eslint/ban-ts-comment': [ - 'error', - { - 'ts-expect-error': 'allow-with-description', - 'ts-ignore': true, - 'ts-nocheck': true, - 'ts-check': false, - }, - ], '@typescript-eslint/no-restricted-imports': [ 'error', { @@ -163,26 +167,7 @@ const config = { ], }, ], - 'unicorn/filename-case': [ - 'error', - { - case: 'kebabCase', - ignore: ['^\\[[a-zA-Z0-9-_]+\\]\\.tsx$'], - }, - ], - 'unicorn/no-unnecessary-await': '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', + 'sonarjs/no-all-duplicated-branches': 'error', 'sonarjs/no-element-overwrite': 'error', 'sonarjs/no-empty-collection': 'error', @@ -197,7 +182,6 @@ const config = { 'sonarjs/no-same-line-conditional': 'error', 'sonarjs/no-duplicated-branches': 'error', 'sonarjs/no-collection-size-mischeck': 'error', - 'sonarjs/no-useless-catch': 'error', 'sonarjs/no-identical-functions': 'error', 'rxjs/finnish': [ 'error', @@ -217,26 +201,11 @@ const config = { }, overrides: [ { - files: 'packages/backend/server/**/*.ts', + files: [ + `packages/**/*.{ts,tsx,js,mjs}`, + 'tools/cli/**/*.{ts,tsx,js,mjs}', + ], rules: { - '@typescript-eslint/consistent-type-imports': 0, - }, - }, - { - files: '*.cjs', - rules: { - '@typescript-eslint/no-var-requires': 0, - }, - }, - ...allPackages.map(pkg => ({ - files: [`${pkg}/src/**/*.ts`, `${pkg}/src/**/*.tsx`, `${pkg}/**/*.mjs`], - rules: { - '@typescript-eslint/no-restricted-imports': [ - 'error', - { - patterns: createPattern(pkg), - }, - ], '@typescript-eslint/no-floating-promises': [ 'error', { @@ -255,7 +224,7 @@ const config = { }, ], }, - })), + }, { files: [ '**/__tests__/**/*', @@ -268,21 +237,17 @@ const config = { '**/e2e/**/*', ], rules: { - '@typescript-eslint/no-non-null-assertion': 0, - '@typescript-eslint/ban-ts-comment': [ - 'error', - { - 'ts-expect-error': false, - 'ts-ignore': true, - 'ts-nocheck': true, - 'ts-check': false, - }, - ], '@typescript-eslint/no-floating-promises': 0, '@typescript-eslint/no-misused-promises': 0, '@typescript-eslint/no-restricted-imports': 0, }, }, + { + files: ['packages/frontend/apps/electron/scripts/**/*'], + rules: { + 'import-x/no-extraneous-dependencies': 'off', + }, + }, ], }; diff --git a/oxlint.json b/oxlint.json index d9e426e16..32947a573 100644 --- a/oxlint.json +++ b/oxlint.json @@ -5,21 +5,150 @@ "correctness": "error", "perf": "error" }, + "ignorePatterns": ["tools/cli/src/webpack/error-handler.js"], "rules": { - // allow "import/named": "allow", "no-await-in-loop": "allow", "promise/no-callback-in-promise": "allow", - // deny + + "array-callback-return": "error", + "constructor-super": "error", + "eqeqeq": ["error", "smart"], + "getter-return": "error", + "for-direction": "error", + "require-yield": "error", + "use-isnan": "error", + "valid-typeof": "error", + "no-empty-character-class": "error", + "no-self-compare": "error", + "no-empty": [ + "error", + { + "allowEmptyCatch": true + } + ], + "no-constant-binary-expression": "error", + "no-constructor-return": "error", + "no-func-assign": "error", + "no-global-assign": "error", + "no-unused-vars": "error", + "no-ex-assign": "error", + "no-loss-of-precision": "error", + "no-fallthrough": "error", + "no-nonoctal-decimal-escape": "error", + "no-irregular-whitespace": "error", + "no-control-regex": "error", + "no-with": "error", + "no-debugger": "error", + "no-const-assign": "error", + "no-setter-return": "error", + "no-obj-calls": "error", + "no-unsafe-negation": "error", + "no-dupe-class-members": "error", + "no-dupe-keys": "error", + "no-this-before-super": "error", + "no-useless-catch": "error", + "no-async-promise-executor": "error", + "no-unreachable": "error", + "no-duplicate-case": "error", + "no-empty-pattern": "error", + "no-unused-labels": "error", + "no-sparse-arrays": "error", + "no-delete-var": "error", + "no-compare-neg-zero": "error", + "no-redeclare": "error", + "no-case-declarations": "error", + "no-class-assign": "error", + "no-var": "error", + "no-self-assign": "error", + "no-inner-declarations": "error", + "no-dupe-else-if": "error", + "no-invalid-regexp": "error", + "no-unsafe-finally": "error", + "no-prototype-builtins": "error", + "no-array-constructor": "error", + "no-shadow-restricted-names": "error", + "no-constant-condition": "error", + "no-useless-escape": "error", + "no-unsafe-optional-chaining": "error", + "no-extra-boolean-cast": "error", + "no-regex-spaces": "error", + "react/jsx-no-useless-fragment": "error", + "react/jsx-no-undef": "error", + "react/no-direct-mutation-state": "error", + "react/no-string-refs": "error", + "react/no-unknown-property": "error", + "react/no-danger-with-children": "error", + "react/no-unescaped-entities": "error", + "react/require-render-return": "error", + "react/jsx-no-duplicate-props": "error", + "react/jsx-key": "error", + "react/no-is-mounted": "error", + "react/no-find-dom-node": "error", + "react/no-children-prop": "error", + "react/no-render-return-value": "error", + "react/jsx-no-target-blank": "error", + "react/jsx-no-comment-textnodes": "error", + "typescript/consistent-type-imports": "error", + "typescript/no-non-null-assertion": "error", + "typescript/triple-slash-reference": "error", + "typescript/no-non-null-asserted-optional-chain": "error", + "typescript/no-duplicate-enum-values": "error", + "typescript/no-extra-non-null-assertion": "error", + "typescript/no-misused-new": "error", + "typescript/prefer-for-of": "error", + "typescript/no-unsafe-declaration-merging": "error", + "typescript/no-unnecessary-type-constraint": "error", + "typescript/ban-types": "error", + "typescript/no-this-alias": [ + "error", + { + "allow_destructuring": true + } + ], + "typescript/prefer-as-const": "error", + "typescript/no-var-requires": "error", + "typescript/no-namespace": "error", + "typescript/ban-ts-comment": [ + "error", + { + "ts-expect-error": "allow-with-description", + "ts-ignore": true, + "ts-nocheck": true, + "ts-check": false + } + ], "unicorn/prefer-array-some": "error", "unicorn/no-useless-promise-resolve-reject": "error", + "unicorn/no-unnecessary-await": "error", + "unicorn/no-useless-fallback-in-spread": "error", + "unicorn/filename-case": [ + "error", + { + "case": "kebabCase" + } + ], + "unicorn/prefer-dom-node-dataset": "error", + "unicorn/prefer-dom-node-append": "error", + "unicorn/prefer-dom-node-remove": "error", + "unicorn/prefer-date-now": "error", + "unicorn/prefer-blob-reading-methods": "error", + "unicorn/no-typeof-undefined": "error", + "unicorn/no-new-array": "error", + "unicorn/new-for-builtins": "error", + "unicorn/prefer-node-protocol": "error", "import/no-cycle": [ "error", { "ignoreTypes": true } ], - "import/namespace": "off" + "import/sort-imports": "error", + "import/namespace": "off", + "import/no-webpack-loader-syntax": "error", + "import/no-duplicates": "error", + "import/no-import-assign": "error", + "import/no-self-import": "error" }, "overrides": [ { @@ -27,6 +156,31 @@ "rules": { "react/no-array-index-key": "off" } + }, + { + "files": ["packages/backend/**/*.ts"], + "rules": { + "typescript/consistent-type-imports": "off" + } + }, + { + "files": [ + "*.{spec,test,e2e,stories}.{ts,tsx}", + "tests/**/*.ts", + "packages/backend/server/tests/**/*.ts" + ], + "rules": { + "typescript/no-non-null-assertion": "off", + "typescript/ban-ts-comment": [ + "error", + { + "ts-expect-error": false, + "ts-ignore": true, + "ts-nocheck": true, + "ts-check": false + } + ] + } } ] } diff --git a/package.json b/package.json index 483d5645c..320209adb 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,6 @@ "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-rxjs": "^5.0.3", - "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sonarjs": "^3.0.1", "eslint-plugin-unicorn": "^56.0.1", "eslint-plugin-unused-imports": "^4.1.4", diff --git a/packages/common/infra/src/modules/db/schema/index.ts b/packages/common/infra/src/modules/db/schema/index.ts index 2991461d1..bc057dabc 100644 --- a/packages/common/infra/src/modules/db/schema/index.ts +++ b/packages/common/infra/src/modules/db/schema/index.ts @@ -2,4 +2,6 @@ export type { DocCustomPropertyInfo, DocProperties } from './schema'; export { AFFiNE_WORKSPACE_DB_SCHEMA, AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA, + type AFFiNEWorkspaceDbSchema, + type AFFiNEWorkspaceUserdataDbSchema, } from './schema'; diff --git a/packages/common/infra/src/modules/db/schema/schema.ts b/packages/common/infra/src/modules/db/schema/schema.ts index aeb980cf0..d917526dc 100644 --- a/packages/common/infra/src/modules/db/schema/schema.ts +++ b/packages/common/infra/src/modules/db/schema/schema.ts @@ -30,14 +30,12 @@ export const AFFiNE_WORKSPACE_DB_SCHEMA = { // we will keep deleted properties in the database, for override legacy data }, } as const satisfies DBSchemaBuilder; -export type AFFiNE_WORKSPACE_DB_SCHEMA = typeof AFFiNE_WORKSPACE_DB_SCHEMA; +export type AFFiNEWorkspaceDbSchema = typeof AFFiNE_WORKSPACE_DB_SCHEMA; -export type DocProperties = ORMEntity< - AFFiNE_WORKSPACE_DB_SCHEMA['docProperties'] ->; +export type DocProperties = ORMEntity; export type DocCustomPropertyInfo = ORMEntity< - AFFiNE_WORKSPACE_DB_SCHEMA['docCustomPropertyInfo'] + AFFiNEWorkspaceDbSchema['docCustomPropertyInfo'] >; export const AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA = { @@ -46,5 +44,5 @@ export const AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA = { index: f.string(), }, } as const satisfies DBSchemaBuilder; -export type AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA = +export type AFFiNEWorkspaceUserdataDbSchema = typeof AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA; diff --git a/packages/common/infra/src/modules/db/services/db.ts b/packages/common/infra/src/modules/db/services/db.ts index 40bc7a68f..10d5e49e5 100644 --- a/packages/common/infra/src/modules/db/services/db.ts +++ b/packages/common/infra/src/modules/db/services/db.ts @@ -9,6 +9,8 @@ import { WorkspaceDB, type WorkspaceDBWithTables } from '../entities/db'; import { AFFiNE_WORKSPACE_DB_SCHEMA, AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA, + type AFFiNEWorkspaceDbSchema, + type AFFiNEWorkspaceUserdataDbSchema, } from '../schema'; const WorkspaceDBClient = createORMClient(AFFiNE_WORKSPACE_DB_SCHEMA); @@ -17,10 +19,10 @@ const WorkspaceUserdataDBClient = createORMClient( ); export class WorkspaceDBService extends Service { - db: WorkspaceDBWithTables; + db: WorkspaceDBWithTables; userdataDBPool = new ObjectPool< string, - WorkspaceDB + WorkspaceDB >({ onDangling() { return false; // never release @@ -30,7 +32,7 @@ export class WorkspaceDBService extends Service { constructor(private readonly workspaceService: WorkspaceService) { super(); this.db = this.framework.createEntity( - WorkspaceDB, + WorkspaceDB, { db: new WorkspaceDBClient( new YjsDBAdapter(AFFiNE_WORKSPACE_DB_SCHEMA, { @@ -52,7 +54,7 @@ export class WorkspaceDBService extends Service { storageDocId: tableName => `db$${this.workspaceService.workspace.id}$${tableName}`, } - ) as WorkspaceDBWithTables; + ) as WorkspaceDBWithTables; } // eslint-disable-next-line @typescript-eslint/ban-types @@ -60,11 +62,11 @@ export class WorkspaceDBService extends Service { // __local__ for local workspace const userdataDb = this.userdataDBPool.get(userId); if (userdataDb) { - return userdataDb.obj as WorkspaceDBWithTables; + return userdataDb.obj as WorkspaceDBWithTables; } const newDB = this.framework.createEntity( - WorkspaceDB, + WorkspaceDB, { db: new WorkspaceUserdataDBClient( new YjsDBAdapter(AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA, { @@ -89,7 +91,7 @@ export class WorkspaceDBService extends Service { ); this.userdataDBPool.put(userId, newDB); - return newDB as WorkspaceDBWithTables; + return newDB as WorkspaceDBWithTables; } static isDBDocId(docId: string) { diff --git a/packages/common/infra/src/modules/feature-flag/constant.ts b/packages/common/infra/src/modules/feature-flag/constant.ts index d431ec216..b0f1c421a 100644 --- a/packages/common/infra/src/modules/feature-flag/constant.ts +++ b/packages/common/infra/src/modules/feature-flag/constant.ts @@ -236,4 +236,5 @@ export const AFFINE_FLAGS = { }, } satisfies { [key in string]: FlagInfo }; +// eslint-disable-next-line no-redeclare export type AFFINE_FLAGS = typeof AFFINE_FLAGS; diff --git a/packages/common/infra/src/utils/__tests__/fractional-indexing.spec.ts b/packages/common/infra/src/utils/__tests__/fractional-indexing.spec.ts index 848138756..8c78d911d 100644 --- a/packages/common/infra/src/utils/__tests__/fractional-indexing.spec.ts +++ b/packages/common/infra/src/utils/__tests__/fractional-indexing.spec.ts @@ -25,7 +25,6 @@ test('fractional-indexing', () => { if (set.has(s1) || set.has(s2) || s1 === s2) { throw new Error('Duplicate key, ' + set.size + ', ' + s1 + ', ' + s2); - break; } set.add(s1); set.add(s2); diff --git a/packages/common/nbstore/src/impls/cloud/socket.ts b/packages/common/nbstore/src/impls/cloud/socket.ts index 6e84a433e..61f0a2403 100644 --- a/packages/common/nbstore/src/impls/cloud/socket.ts +++ b/packages/common/nbstore/src/impls/cloud/socket.ts @@ -118,7 +118,7 @@ export function uint8ArrayToBase64(array: Uint8Array): Promise { export function base64ToUint8Array(base64: string) { const binaryString = atob(base64); - const binaryArray = binaryString.split('').map(function (char) { + const binaryArray = [...binaryString].map(function (char) { return char.charCodeAt(0); }); return new Uint8Array(binaryArray); diff --git a/packages/common/nbstore/src/storage/index.ts b/packages/common/nbstore/src/storage/index.ts index d9e89e81f..0df540624 100644 --- a/packages/common/nbstore/src/storage/index.ts +++ b/packages/common/nbstore/src/storage/index.ts @@ -1,7 +1,7 @@ import EventEmitter2 from 'eventemitter2'; import type { ConnectionStatus } from '../connection'; -import { type Storage, type StorageType } from '../storage'; +import { type Storage, type StorageType } from './storage'; import type { BlobStorage } from './blob'; import type { DocStorage } from './doc'; import type { SyncStorage } from './sync'; diff --git a/packages/frontend/admin/package.json b/packages/frontend/admin/package.json index 2eb2891ad..9f969a735 100644 --- a/packages/frontend/admin/package.json +++ b/packages/frontend/admin/package.json @@ -3,6 +3,7 @@ "version": "0.18.0", "private": true, "dependencies": { + "@affine/component": "workspace:*", "@affine/core": "workspace:*", "@affine/graphql": "workspace:*", "@radix-ui/react-accordion": "^1.2.2", diff --git a/packages/frontend/admin/src/modules/accounts/components/data-table-row-actions.tsx b/packages/frontend/admin/src/modules/accounts/components/data-table-row-actions.tsx index 9d604eecc..5ff72b2c8 100644 --- a/packages/frontend/admin/src/modules/accounts/components/data-table-row-actions.tsx +++ b/packages/frontend/admin/src/modules/accounts/components/data-table-row-actions.tsx @@ -38,7 +38,11 @@ export function DataTableRowActions({ user }: DataTableRowActionsProps) { const { resetPasswordLink, onResetPassword } = useResetUserPassword(); const openResetPasswordDialog = useCallback(() => { - onResetPassword(user.id, () => setResetPasswordDialogOpen(true)); + onResetPassword(user.id, () => setResetPasswordDialogOpen(true)).catch( + e => { + console.error(e); + } + ); }, [onResetPassword, user.id]); const handleCopy = useCallback(() => { diff --git a/packages/frontend/admin/src/modules/accounts/components/use-user-management.ts b/packages/frontend/admin/src/modules/accounts/components/use-user-management.ts index 983a00868..f062ecf4c 100644 --- a/packages/frontend/admin/src/modules/accounts/components/use-user-management.ts +++ b/packages/frontend/admin/src/modules/accounts/components/use-user-management.ts @@ -53,7 +53,7 @@ export const useCreateUser = () => { toast.error('Failed to update account: ' + (e as Error).message); } }, - [createAccount, revalidate] + [createAccount, revalidate, updateAccountFeatures] ); return { creating: creating || !!error, create }; @@ -99,7 +99,7 @@ export const useUpdateUser = () => { toast.error('Failed to update account: ' + (e as Error).message); } }, - [revalidate, updateAccount] + [revalidate, updateAccount, updateAccountFeatures] ); return { updating: updating || !!error, update }; diff --git a/packages/frontend/admin/src/modules/nav/user-dropdown.tsx b/packages/frontend/admin/src/modules/nav/user-dropdown.tsx index 039b01082..687f78347 100644 --- a/packages/frontend/admin/src/modules/nav/user-dropdown.tsx +++ b/packages/frontend/admin/src/modules/nav/user-dropdown.tsx @@ -26,7 +26,7 @@ export function UserDropdown() { fetch('/api/auth/sign-out') .then(() => { toast.success('Logged out successfully'); - relative(); + return relative(); }) .catch(err => { toast.error(`Failed to logout: ${err.message}`); diff --git a/packages/frontend/admin/src/modules/setup/form.tsx b/packages/frontend/admin/src/modules/setup/form.tsx index 0114ba6e2..e144c7444 100644 --- a/packages/frontend/admin/src/modules/setup/form.tsx +++ b/packages/frontend/admin/src/modules/setup/form.tsx @@ -6,6 +6,7 @@ import { CarouselItem, } from '@affine/admin/components/ui/carousel'; import { validateEmailAndPassword } from '@affine/admin/utils'; +import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { useCallback, useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { toast } from 'sonner'; @@ -120,7 +121,7 @@ export const Form = () => { } }, [emailValue, passwordValue, refreshServerConfig]); - const onNext = useCallback(async () => { + const onNext = useAsyncCallback(async () => { if (isCreateAdminStep) { if ( !validateEmailAndPassword( diff --git a/packages/frontend/apps/electron/package.json b/packages/frontend/apps/electron/package.json index 68a75e8d2..b5200d78e 100644 --- a/packages/frontend/apps/electron/package.json +++ b/packages/frontend/apps/electron/package.json @@ -26,6 +26,7 @@ "@affine-test/kit": "workspace:*", "@affine/component": "workspace:*", "@affine/core": "workspace:*", + "@affine/electron-api": "workspace:*", "@affine/i18n": "workspace:*", "@affine/native": "workspace:*", "@affine/nbstore": "workspace:*", @@ -48,9 +49,12 @@ "@toeverything/infra": "workspace:*", "@types/set-cookie-parser": "^2.4.10", "@types/uuid": "^10.0.0", + "@vanilla-extract/css": "^1.16.1", "@vitejs/plugin-react-swc": "^3.7.2", + "app-builder-lib": "^25.1.8", "builder-util-runtime": "^9.2.10", "cross-env": "^7.0.3", + "debug": "^4.4.0", "electron": "^33.3.0", "electron-log": "^5.2.4", "electron-squirrel-startup": "1.0.1", @@ -59,6 +63,7 @@ "fs-extra": "^11.2.0", "glob": "^11.0.0", "lodash-es": "^4.17.21", + "msw": "^2.6.8", "nanoid": "^5.0.9", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/packages/frontend/apps/electron/scripts/dev.ts b/packages/frontend/apps/electron/scripts/dev.ts index 4ab9d5f61..a2de51bd0 100644 --- a/packages/frontend/apps/electron/scripts/dev.ts +++ b/packages/frontend/apps/electron/scripts/dev.ts @@ -80,7 +80,9 @@ async function watchLayers() { console.log(`[layers] has changed, [re]launching electron...`); spawnOrReloadElectron(); } else { - buildContextPromise.then(resolve); + buildContextPromise.then(resolve).catch(e => { + console.error(e); + }); initialBuild = true; } }); @@ -88,9 +90,13 @@ async function watchLayers() { }, ], }); - buildContextPromise.then(async buildContext => { - await buildContext.watch(); - }); + buildContextPromise + .then(buildContext => { + return buildContext.watch(); + }) + .catch(e => { + console.error(e); + }); }); } diff --git a/packages/frontend/apps/electron/scripts/make-nsis.ts b/packages/frontend/apps/electron/scripts/make-nsis.ts index 0110d7d1c..aa9d408f4 100644 --- a/packages/frontend/apps/electron/scripts/make-nsis.ts +++ b/packages/frontend/apps/electron/scripts/make-nsis.ts @@ -89,4 +89,6 @@ async function make() { await fs.remove(tmpPath); } -make(); +make().catch(e => { + console.error(e); +}); diff --git a/packages/frontend/apps/electron/scripts/make-squirrel.ts b/packages/frontend/apps/electron/scripts/make-squirrel.ts index 2e9dc969f..4f129983f 100644 --- a/packages/frontend/apps/electron/scripts/make-squirrel.ts +++ b/packages/frontend/apps/electron/scripts/make-squirrel.ts @@ -79,4 +79,6 @@ async function make() { return artifacts; } -make(); +make().catch(e => { + console.error(e); +}); diff --git a/packages/frontend/apps/electron/src/main/index.ts b/packages/frontend/apps/electron/src/main/index.ts index a4b691bd0..e3c6f8c17 100644 --- a/packages/frontend/apps/electron/src/main/index.ts +++ b/packages/frontend/apps/electron/src/main/index.ts @@ -33,6 +33,7 @@ if (overrideSession) { app.setPath('sessionData', userDataPath); } +// eslint-disable-next-line @typescript-eslint/no-var-requires if (require('electron-squirrel-startup')) app.quit(); if (process.env.SKIP_ONBOARDING) { diff --git a/packages/frontend/apps/electron/src/main/shared-state-schema.ts b/packages/frontend/apps/electron/src/main/shared-state-schema.ts index 03b13f515..5d05bac8f 100644 --- a/packages/frontend/apps/electron/src/main/shared-state-schema.ts +++ b/packages/frontend/apps/electron/src/main/shared-state-schema.ts @@ -50,6 +50,6 @@ export const SpellCheckStateSchema = z.object({ enabled: z.boolean().optional(), }); -export const SpellCheckStateKey = 'spellCheckState'; -export type SpellCheckStateKey = typeof SpellCheckStateKey; +export const SpellCheckStateKey = 'spellCheckState' as const; +// eslint-disable-next-line no-redeclare export type SpellCheckStateSchema = z.infer; diff --git a/packages/frontend/apps/ios/src/app.tsx b/packages/frontend/apps/ios/src/app.tsx index 2d335d40a..fb85c5a51 100644 --- a/packages/frontend/apps/ios/src/app.tsx +++ b/packages/frontend/apps/ios/src/app.tsx @@ -86,10 +86,14 @@ framework.impl(ValidatorProvider, { }); framework.impl(VirtualKeyboardProvider, { addEventListener: (event, callback) => { - Keyboard.addListener(event as any, callback as any); + Keyboard.addListener(event as any, callback as any).catch(e => { + console.error(e); + }); }, removeAllListeners: () => { - Keyboard.removeAllListeners(); + Keyboard.removeAllListeners().catch(e => { + console.error(e); + }); }, }); framework.impl(NavigationGestureProvider, { @@ -145,6 +149,8 @@ CapacitorApp.addListener('appUrlOpen', ({ url }) => { .catch(console.error); } } +}).catch(e => { + console.error(e); }); export function App() { diff --git a/packages/frontend/apps/ios/src/fetch.ts b/packages/frontend/apps/ios/src/fetch.ts index cb05ee700..4800e8609 100644 --- a/packages/frontend/apps/ios/src/fetch.ts +++ b/packages/frontend/apps/ios/src/fetch.ts @@ -115,7 +115,7 @@ const convertBody = async (body: unknown, contentType: string) => { }; function base64ToUint8Array(base64: string) { const binaryString = atob(base64); - const binaryArray = binaryString.split('').map(function (char) { + const binaryArray = [...binaryString].map(function (char) { return char.charCodeAt(0); }); return new Uint8Array(binaryArray); diff --git a/packages/frontend/apps/ios/src/virtual-keyboard.ts b/packages/frontend/apps/ios/src/virtual-keyboard.ts index dd1d6f663..a767e436b 100644 --- a/packages/frontend/apps/ios/src/virtual-keyboard.ts +++ b/packages/frontend/apps/ios/src/virtual-keyboard.ts @@ -13,7 +13,7 @@ class NavigatorVirtualKeyboard implements VirtualKeyboard { private readonly _overlaysContent = false; - private _listeners = new Map< + private readonly _listeners = new Map< string, Set<{ cb: VirtualKeyboardCallback; @@ -53,11 +53,17 @@ class NavigatorVirtualKeyboard implements VirtualKeyboard { }; constructor() { - this._bindListener(); + this._bindListener().catch(e => { + console.error(e); + }); } destroy() { - this._capacitorListenerHandles.forEach(handle => handle.remove()); + this._capacitorListenerHandles.forEach(handle => { + handle.remove().catch(e => { + console.error(e); + }); + }); } get boundingRect(): DOMRect { @@ -75,11 +81,15 @@ class NavigatorVirtualKeyboard implements VirtualKeyboard { } hide() { - Keyboard.hide(); + Keyboard.hide().catch(e => { + console.error(e); + }); } show() { - Keyboard.show(); + Keyboard.show().catch(e => { + console.error(e); + }); } ongeometrychange: ((this: VirtualKeyboard, ev: Event) => any) | null = null; diff --git a/packages/frontend/component/src/components/auth-components/password-input/index.tsx b/packages/frontend/component/src/components/auth-components/password-input/index.tsx index d2aaaa5a0..c17fc445b 100644 --- a/packages/frontend/component/src/components/auth-components/password-input/index.tsx +++ b/packages/frontend/component/src/components/auth-components/password-input/index.tsx @@ -1,8 +1,7 @@ import { type PasswordLimitsFragment } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; import { type Options, passwordStrength } from 'check-password-strength'; -import { type FC, useEffect, useMemo } from 'react'; -import { useCallback, useState } from 'react'; +import { type FC, useEffect, useMemo, useCallback, useState } from 'react'; import { z, type ZodCustomIssue, ZodIssueCode } from 'zod'; import type { InputProps } from '../../../ui/input'; diff --git a/packages/frontend/component/src/ui/date-picker/calendar/day-picker.tsx b/packages/frontend/component/src/ui/date-picker/calendar/day-picker.tsx index b2fe93b6d..d15908b0d 100644 --- a/packages/frontend/component/src/ui/date-picker/calendar/day-picker.tsx +++ b/packages/frontend/component/src/ui/date-picker/calendar/day-picker.tsx @@ -97,7 +97,7 @@ export const DayPicker = memo(function DayPicker( const focused = document.activeElement; // check if focused is a date cell - if (!focused?.hasAttribute('data-is-date-cell')) return; + if (!(focused as HTMLElement | null)?.dataset.isDateCell) return; if (e.shiftKey) return; e.preventDefault(); diff --git a/packages/frontend/core/src/blocksuite/presets/ai/_common/components/ask-ai-button.ts b/packages/frontend/core/src/blocksuite/presets/ai/_common/components/ask-ai-button.ts index 8585d0087..2f7f0804f 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/_common/components/ask-ai-button.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/_common/components/ask-ai-button.ts @@ -4,8 +4,9 @@ import { type EditorHost } from '@blocksuite/affine/block-std'; import { type AIItemGroupConfig, EdgelessRootService, + createLitPortal, + HoverController, } from '@blocksuite/affine/blocks'; -import { createLitPortal, HoverController } from '@blocksuite/affine/blocks'; import { WithDisposable } from '@blocksuite/affine/global/utils'; import { flip, offset } from '@floating-ui/dom'; import { css, html, LitElement, nothing } from 'lit'; diff --git a/packages/frontend/core/src/blocksuite/presets/ai/entries/slash-menu/setup-slash-menu.ts b/packages/frontend/core/src/blocksuite/presets/ai/entries/slash-menu/setup-slash-menu.ts index 7add7bbd6..4c4b8af26 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/entries/slash-menu/setup-slash-menu.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/entries/slash-menu/setup-slash-menu.ts @@ -6,8 +6,6 @@ import { type AffineSlashSubMenu, type AIItemConfig, DocModeProvider, -} from '@blocksuite/affine/blocks'; -import { AFFINE_AI_PANEL_WIDGET, AffineSlashMenuWidget, AIStarIcon, diff --git a/packages/frontend/core/src/blocksuite/presets/ai/peek-view/chat-block-peek-view.ts b/packages/frontend/core/src/blocksuite/presets/ai/peek-view/chat-block-peek-view.ts index b7d895ea7..1f191b9c5 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/peek-view/chat-block-peek-view.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/peek-view/chat-block-peek-view.ts @@ -6,8 +6,8 @@ import { DocModeProvider, type EdgelessRootService, TelemetryProvider, + NotificationProvider, } from '@blocksuite/affine/blocks'; -import { NotificationProvider } from '@blocksuite/affine/blocks'; import { type AIChatBlockModel, type ChatMessage, diff --git a/packages/frontend/core/src/blocksuite/presets/ai/utils/selection-utils.ts b/packages/frontend/core/src/blocksuite/presets/ai/utils/selection-utils.ts index b203712de..224216078 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/utils/selection-utils.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/utils/selection-utils.ts @@ -4,8 +4,9 @@ import { type FrameBlockModel, ImageBlockModel, type SurfaceBlockComponent, + BlocksUtils, + EdgelessRootService, } from '@blocksuite/affine/blocks'; -import { BlocksUtils, EdgelessRootService } from '@blocksuite/affine/blocks'; import { assertExists } from '@blocksuite/affine/global/utils'; import { type BlockModel, diff --git a/packages/frontend/core/src/components/affine/page-history-modal/data.ts b/packages/frontend/core/src/components/affine/page-history-modal/data.ts index b563d96b0..588b1d591 100644 --- a/packages/frontend/core/src/components/affine/page-history-modal/data.ts +++ b/packages/frontend/core/src/components/affine/page-history-modal/data.ts @@ -236,6 +236,7 @@ export function revertUpdate( } else if (type === 'Array') { return snapshotDoc.getArray(key); } + // eslint-disable-next-line array-callback-return throw new Error('Unknown type'); }) ); diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx index 97464e369..dec5a64bc 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/spec-patchers.tsx @@ -27,12 +27,12 @@ import { DebugLogger } from '@affine/debug'; import { track } from '@affine/track'; import { type BlockService, + BlockServiceWatcher, BlockViewIdentifier, ConfigIdentifier, type ExtensionType, type WidgetComponent, } from '@blocksuite/affine/block-std'; -import { BlockServiceWatcher } from '@blocksuite/affine/block-std'; import type { AffineReference, DocMode, diff --git a/packages/frontend/core/src/desktop/dialogs/setting/general-setting/plans/plan-card.tsx b/packages/frontend/core/src/desktop/dialogs/setting/general-setting/plans/plan-card.tsx index 2c9de6607..983c54a17 100644 --- a/packages/frontend/core/src/desktop/dialogs/setting/general-setting/plans/plan-card.tsx +++ b/packages/frontend/core/src/desktop/dialogs/setting/general-setting/plans/plan-card.tsx @@ -11,8 +11,6 @@ import { GlobalDialogService } from '@affine/core/modules/dialogs'; import { type CreateCheckoutSessionInput, SubscriptionRecurring, -} from '@affine/graphql'; -import { SubscriptionPlan, SubscriptionStatus, SubscriptionVariant, diff --git a/packages/frontend/core/src/mobile/components/explorer/sections/favorites/index.tsx b/packages/frontend/core/src/mobile/components/explorer/sections/favorites/index.tsx index 13f4d2005..4343501ca 100644 --- a/packages/frontend/core/src/mobile/components/explorer/sections/favorites/index.tsx +++ b/packages/frontend/core/src/mobile/components/explorer/sections/favorites/index.tsx @@ -3,7 +3,7 @@ import { ExplorerService, ExplorerTreeRoot, } from '@affine/core/modules/explorer'; -import type { FavoriteSupportType } from '@affine/core/modules/favorite'; +import type { FavoriteSupportTypeUnion } from '@affine/core/modules/favorite'; import { FavoriteService } from '@affine/core/modules/favorite'; import { useI18n } from '@affine/i18n'; import { @@ -73,7 +73,7 @@ export const FavoriteNode = ({ }: { favorite: { id: string; - type: FavoriteSupportType; + type: FavoriteSupportTypeUnion; }; }) => { return favorite.type === 'doc' ? ( diff --git a/packages/frontend/core/src/modules/cloud/entities/subscription.ts b/packages/frontend/core/src/modules/cloud/entities/subscription.ts index ea6d993da..f6b8be361 100644 --- a/packages/frontend/core/src/modules/cloud/entities/subscription.ts +++ b/packages/frontend/core/src/modules/cloud/entities/subscription.ts @@ -2,8 +2,8 @@ import { type SubscriptionQuery, SubscriptionRecurring, SubscriptionVariant, + SubscriptionPlan, } from '@affine/graphql'; -import { SubscriptionPlan } from '@affine/graphql'; import { backoffRetry, catchErrorInto, diff --git a/packages/frontend/core/src/modules/editor-setting/schema.ts b/packages/frontend/core/src/modules/editor-setting/schema.ts index c714e450e..e0b16e1a1 100644 --- a/packages/frontend/core/src/modules/editor-setting/schema.ts +++ b/packages/frontend/core/src/modules/editor-setting/schema.ts @@ -32,4 +32,5 @@ export const EditorSettingSchema = BSEditorSettingSchema.merge( AffineEditorSettingSchema ); +// eslint-disable-next-line no-redeclare export type EditorSettingSchema = z.infer; diff --git a/packages/frontend/core/src/modules/editor-setting/services/spell-check-setting.ts b/packages/frontend/core/src/modules/editor-setting/services/spell-check-setting.ts index e56b62633..7976e1e4a 100644 --- a/packages/frontend/core/src/modules/editor-setting/services/spell-check-setting.ts +++ b/packages/frontend/core/src/modules/editor-setting/services/spell-check-setting.ts @@ -9,7 +9,7 @@ import { LiveData, Service } from '@toeverything/infra'; import type { DesktopApiService } from '../../desktop-api'; import type { I18n } from '../../i18n'; -const SPELL_CHECK_SETTING_KEY: SpellCheckStateKey = 'spellCheckState'; +const SPELL_CHECK_SETTING_KEY: typeof SpellCheckStateKey = 'spellCheckState'; export class SpellCheckSettingService extends Service { constructor( diff --git a/packages/frontend/core/src/modules/explorer/views/sections/favorites/index.tsx b/packages/frontend/core/src/modules/explorer/views/sections/favorites/index.tsx index 456a7941c..e403eb6c4 100644 --- a/packages/frontend/core/src/modules/explorer/views/sections/favorites/index.tsx +++ b/packages/frontend/core/src/modules/explorer/views/sections/favorites/index.tsx @@ -8,7 +8,7 @@ import { DropEffect, ExplorerTreeRoot, } from '@affine/core/modules/explorer/views/tree'; -import type { FavoriteSupportType } from '@affine/core/modules/favorite'; +import type { FavoriteSupportTypeUnion } from '@affine/core/modules/favorite'; import { FavoriteService, isFavoriteSupportType, @@ -97,7 +97,7 @@ export const ExplorerFavorites = () => { const handleOnChildrenDrop = useCallback( ( - favorite: { id: string; type: FavoriteSupportType }, + favorite: { id: string; type: FavoriteSupportTypeUnion }, data: DropTargetDropEvent ) => { if ( @@ -220,12 +220,12 @@ const ExplorerFavoriteNode = ({ }: { favorite: { id: string; - type: FavoriteSupportType; + type: FavoriteSupportTypeUnion; }; onDrop: ( favorite: { id: string; - type: FavoriteSupportType; + type: FavoriteSupportTypeUnion; }, data: DropTargetDropEvent ) => void; diff --git a/packages/frontend/core/src/modules/favorite/constant.ts b/packages/frontend/core/src/modules/favorite/constant.ts index bc88a915e..a02e7f538 100644 --- a/packages/frontend/core/src/modules/favorite/constant.ts +++ b/packages/frontend/core/src/modules/favorite/constant.ts @@ -4,8 +4,8 @@ export const FavoriteSupportType = [ 'tag', 'folder', ] as const; -export type FavoriteSupportType = 'collection' | 'doc' | 'tag' | 'folder'; +export type FavoriteSupportTypeUnion = 'collection' | 'doc' | 'tag' | 'folder'; export const isFavoriteSupportType = ( type: string -): type is FavoriteSupportType => - FavoriteSupportType.includes(type as FavoriteSupportType); +): type is FavoriteSupportTypeUnion => + FavoriteSupportType.includes(type as FavoriteSupportTypeUnion); diff --git a/packages/frontend/core/src/modules/favorite/entities/favorite-list.ts b/packages/frontend/core/src/modules/favorite/entities/favorite-list.ts index 3723e07d5..ed59d4285 100644 --- a/packages/frontend/core/src/modules/favorite/entities/favorite-list.ts +++ b/packages/frontend/core/src/modules/favorite/entities/favorite-list.ts @@ -3,7 +3,7 @@ import { generateFractionalIndexingKeyBetween, } from '@toeverything/infra'; -import type { FavoriteSupportType } from '../constant'; +import type { FavoriteSupportTypeUnion } from '../constant'; import type { FavoriteRecord, FavoriteStore } from '../stores/favorite'; export class FavoriteList extends Entity { @@ -20,16 +20,16 @@ export class FavoriteList extends Entity { /** * get favorite record by type and id */ - favorite$(type: FavoriteSupportType, id: string) { + favorite$(type: FavoriteSupportTypeUnion, id: string) { return this.store.watchFavorite(type, id); } - isFavorite$(type: FavoriteSupportType, id: string) { + isFavorite$(type: FavoriteSupportTypeUnion, id: string) { return this.favorite$(type, id).map(v => !!v); } add( - type: FavoriteSupportType, + type: FavoriteSupportTypeUnion, id: string, index: string = this.indexAt('before') ) { @@ -37,7 +37,7 @@ export class FavoriteList extends Entity { } toggle( - type: FavoriteSupportType, + type: FavoriteSupportTypeUnion, id: string, index: string = this.indexAt('before') ) { @@ -48,18 +48,18 @@ export class FavoriteList extends Entity { } } - remove(type: FavoriteSupportType, id: string) { + remove(type: FavoriteSupportTypeUnion, id: string) { return this.store.removeFavorite(type, id); } - reorder(type: FavoriteSupportType, id: string, index: string) { + reorder(type: FavoriteSupportTypeUnion, id: string, index: string) { return this.store.reorderFavorite(type, id, index); } indexAt( at: 'before' | 'after', targetRecord?: { - type: FavoriteSupportType; + type: FavoriteSupportTypeUnion; id: string; } ) { diff --git a/packages/frontend/core/src/modules/favorite/index.ts b/packages/frontend/core/src/modules/favorite/index.ts index b7beb21f2..e6cf92e75 100644 --- a/packages/frontend/core/src/modules/favorite/index.ts +++ b/packages/frontend/core/src/modules/favorite/index.ts @@ -14,7 +14,11 @@ import { } from './services/old/adapter'; import { FavoriteStore } from './stores/favorite'; -export { FavoriteSupportType, isFavoriteSupportType } from './constant'; +export { + FavoriteSupportType, + type FavoriteSupportTypeUnion, + isFavoriteSupportType, +} from './constant'; export type { FavoriteList } from './entities/favorite-list'; export { FavoriteService } from './services/favorite'; export { diff --git a/packages/frontend/core/src/modules/favorite/services/old/adapter.ts b/packages/frontend/core/src/modules/favorite/services/old/adapter.ts index 8a94138a4..069ba49a2 100644 --- a/packages/frontend/core/src/modules/favorite/services/old/adapter.ts +++ b/packages/frontend/core/src/modules/favorite/services/old/adapter.ts @@ -6,7 +6,7 @@ import { LiveData, Service } from '@toeverything/infra'; import { defaultsDeep } from 'lodash-es'; import { Observable } from 'rxjs'; -import type { FavoriteSupportType } from '../../constant'; +import type { FavoriteSupportTypeUnion } from '../../constant'; import type { FavoriteService } from '../favorite'; import { PagePropertyType, @@ -192,7 +192,7 @@ export class MigrationFavoriteItemsAdapter extends Service { } } -type CompatibleFavoriteSupportType = FavoriteSupportType; +type CompatibleFavoriteSupportType = FavoriteSupportTypeUnion; /** * A service written for compatibility,with the same API as old FavoriteItemsAdapter. diff --git a/packages/frontend/core/src/modules/favorite/stores/favorite.ts b/packages/frontend/core/src/modules/favorite/stores/favorite.ts index 2c1cb1bc9..520a22dac 100644 --- a/packages/frontend/core/src/modules/favorite/stores/favorite.ts +++ b/packages/frontend/core/src/modules/favorite/stores/favorite.ts @@ -3,11 +3,11 @@ import { LiveData, Store } from '@toeverything/infra'; import { map } from 'rxjs'; import { AuthService, type WorkspaceServerService } from '../../cloud'; -import type { FavoriteSupportType } from '../constant'; +import type { FavoriteSupportTypeUnion } from '../constant'; import { isFavoriteSupportType } from '../constant'; export interface FavoriteRecord { - type: FavoriteSupportType; + type: FavoriteSupportTypeUnion; id: string; index: string; } @@ -58,7 +58,7 @@ export class FavoriteStore extends Store { } addFavorite( - type: FavoriteSupportType, + type: FavoriteSupportTypeUnion, id: string, index: string ): FavoriteRecord { @@ -70,17 +70,17 @@ export class FavoriteStore extends Store { return this.toRecord(raw) as FavoriteRecord; } - reorderFavorite(type: FavoriteSupportType, id: string, index: string) { + reorderFavorite(type: FavoriteSupportTypeUnion, id: string, index: string) { const db = this.userdataDB$.value; db.favorite.update(this.encodeKey(type, id), { index }); } - removeFavorite(type: FavoriteSupportType, id: string) { + removeFavorite(type: FavoriteSupportTypeUnion, id: string) { const db = this.userdataDB$.value; db.favorite.delete(this.encodeKey(type, id)); } - watchFavorite(type: FavoriteSupportType, id: string) { + watchFavorite(type: FavoriteSupportTypeUnion, id: string) { const db = this.userdataDB$.value; return LiveData.from( db.favorite @@ -112,7 +112,7 @@ export class FavoriteStore extends Store { * @returns null if key is invalid */ private parseKey(key: string): { - type: FavoriteSupportType; + type: FavoriteSupportTypeUnion; id: string; } | null { const [type, id] = key.split(':'); @@ -122,10 +122,10 @@ export class FavoriteStore extends Store { if (!isFavoriteSupportType(type)) { return null; } - return { type: type as FavoriteSupportType, id }; + return { type: type as FavoriteSupportTypeUnion, id }; } - private encodeKey(type: FavoriteSupportType, id: string) { + private encodeKey(type: FavoriteSupportTypeUnion, id: string) { return `${type}:${id}`; } } diff --git a/packages/frontend/core/src/modules/organize/constants.ts b/packages/frontend/core/src/modules/organize/constants.ts index 2d2710890..107d91cd7 100644 --- a/packages/frontend/core/src/modules/organize/constants.ts +++ b/packages/frontend/core/src/modules/organize/constants.ts @@ -4,9 +4,9 @@ export const OrganizeSupportType = [ 'collection', 'tag', ] as const; -export type OrganizeSupportType = 'folder' | 'doc' | 'collection' | 'tag'; +export type OrganizeSupportTypeUnion = 'folder' | 'doc' | 'collection' | 'tag'; export const isOrganizeSupportType = ( type: string -): type is OrganizeSupportType => - OrganizeSupportType.includes(type as OrganizeSupportType); +): type is OrganizeSupportTypeUnion => + OrganizeSupportType.includes(type as OrganizeSupportTypeUnion); diff --git a/packages/frontend/core/src/modules/userspace/entities/user-db.ts b/packages/frontend/core/src/modules/userspace/entities/user-db.ts index f8b68d9c8..04b5c5c7d 100644 --- a/packages/frontend/core/src/modules/userspace/entities/user-db.ts +++ b/packages/frontend/core/src/modules/userspace/entities/user-db.ts @@ -1,7 +1,7 @@ import { createORMClient, Entity, YjsDBAdapter } from '@toeverything/infra'; import { Doc as YDoc } from 'yjs'; -import { USER_DB_SCHEMA } from '../schema'; +import { USER_DB_SCHEMA, type UserDbSchema } from '../schema'; import { UserDBEngine } from './user-db-engine'; import { UserDBTable } from './user-db-table'; @@ -42,5 +42,5 @@ export class UserDB extends Entity<{ } export type UserDBWithTables = UserDB & { - [K in keyof USER_DB_SCHEMA]: UserDBTable; + [K in keyof UserDbSchema]: UserDBTable; }; diff --git a/packages/frontend/core/src/modules/userspace/schema/index.ts b/packages/frontend/core/src/modules/userspace/schema/index.ts index f773ec1e4..c9da1fe52 100644 --- a/packages/frontend/core/src/modules/userspace/schema/index.ts +++ b/packages/frontend/core/src/modules/userspace/schema/index.ts @@ -6,4 +6,4 @@ export const USER_DB_SCHEMA = { value: f.string(), }, } as const satisfies DBSchemaBuilder; -export type USER_DB_SCHEMA = typeof USER_DB_SCHEMA; +export type UserDbSchema = typeof USER_DB_SCHEMA; diff --git a/packages/frontend/core/src/modules/workspace-engine/impls/cloud.ts b/packages/frontend/core/src/modules/workspace-engine/impls/cloud.ts index 23df74562..5db79455e 100644 --- a/packages/frontend/core/src/modules/workspace-engine/impls/cloud.ts +++ b/packages/frontend/core/src/modules/workspace-engine/impls/cloud.ts @@ -24,8 +24,9 @@ import { type WorkspaceFlavoursProvider, type WorkspaceMetadata, type WorkspaceProfileInfo, + effect, + getAFFiNEWorkspaceSchema, } from '@toeverything/infra'; -import { effect, getAFFiNEWorkspaceSchema } from '@toeverything/infra'; import { isEqual } from 'lodash-es'; import { nanoid } from 'nanoid'; import { EMPTY, map, mergeMap, Observable, switchMap } from 'rxjs'; diff --git a/packages/frontend/core/src/modules/workspace-engine/utils/base64.ts b/packages/frontend/core/src/modules/workspace-engine/utils/base64.ts index 28096e678..7e2ffd337 100644 --- a/packages/frontend/core/src/modules/workspace-engine/utils/base64.ts +++ b/packages/frontend/core/src/modules/workspace-engine/utils/base64.ts @@ -21,7 +21,7 @@ export function uint8ArrayToBase64(array: Uint8Array): Promise { export function base64ToUint8Array(base64: string) { const binaryString = atob(base64); - const binaryArray = binaryString.split('').map(function (char) { + const binaryArray = [...binaryString].map(function (char) { return char.charCodeAt(0); }); return new Uint8Array(binaryArray); diff --git a/packages/frontend/core/src/utils/fuzzy-match.ts b/packages/frontend/core/src/utils/fuzzy-match.ts index a0a25ce25..29f06cdad 100644 --- a/packages/frontend/core/src/utils/fuzzy-match.ts +++ b/packages/frontend/core/src/utils/fuzzy-match.ts @@ -16,16 +16,12 @@ export function fuzzyMatch( query: string, matchInitial?: boolean ) { - const pureName = name - .trim() - .toLowerCase() - .split('') + const pureName = [...name.trim().toLowerCase()] .filter(char => char !== ' ') .join(''); const regex = new RegExp( - query - .split('') + [...query] .filter(char => char !== ' ') .map(item => `${escapeRegExp(item)}.*`) .join(''), diff --git a/packages/frontend/i18n/src/i18next.ts b/packages/frontend/i18n/src/i18next.ts index c5d5a35a3..350556705 100644 --- a/packages/frontend/i18n/src/i18next.ts +++ b/packages/frontend/i18n/src/i18next.ts @@ -158,4 +158,4 @@ export function createI18nWrapper(getI18nFn: () => i18n) { * I18n['com.affine.xxx']({ arg1: 'hello' }) -> '中文 hello' */ export const I18n = createI18nWrapper(getOrCreateI18n); -export type I18n = typeof I18n; +export type I18nInstance = typeof I18n; diff --git a/packages/frontend/i18n/src/utils/time.ts b/packages/frontend/i18n/src/utils/time.ts index 7d10bda3e..b9605090c 100644 --- a/packages/frontend/i18n/src/utils/time.ts +++ b/packages/frontend/i18n/src/utils/time.ts @@ -1,6 +1,6 @@ import dayjs from 'dayjs'; -import { I18n } from '../i18next'; +import { type I18nInstance, I18n } from '../i18next'; export type TimeUnit = | 'second' @@ -46,7 +46,7 @@ export function i18nTime( time: dayjs.ConfigType, options: { // override i18n instance, default is global I18n instance - i18n?: I18n; + i18n?: I18nInstance; // override now time, default is current time now?: dayjs.ConfigType; relative?: diff --git a/scripts/setup/vi-mock.ts b/scripts/setup/vi-mock.ts index b7d48d73d..b0d025c0e 100644 --- a/scripts/setup/vi-mock.ts +++ b/scripts/setup/vi-mock.ts @@ -24,7 +24,7 @@ vi.mock('@blocksuite/affine/presets', () => ({ })); if (typeof window !== 'undefined' && HTMLCanvasElement) { - // @ts-expect-error + // @ts-expect-error allow vitest global mock HTMLCanvasElement.prototype.getContext = () => { return { fillRect: vi.fn(), diff --git a/yarn.lock b/yarn.lock index 689d3e4b3..fba45f74e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -150,6 +150,7 @@ __metadata: version: 0.0.0-use.local resolution: "@affine/admin@workspace:packages/frontend/admin" dependencies: + "@affine/component": "workspace:*" "@affine/core": "workspace:*" "@affine/graphql": "workspace:*" "@radix-ui/react-accordion": "npm:^1.2.2" @@ -514,6 +515,7 @@ __metadata: "@affine-test/kit": "workspace:*" "@affine/component": "workspace:*" "@affine/core": "workspace:*" + "@affine/electron-api": "workspace:*" "@affine/i18n": "workspace:*" "@affine/native": "workspace:*" "@affine/nbstore": "workspace:*" @@ -536,10 +538,13 @@ __metadata: "@toeverything/infra": "workspace:*" "@types/set-cookie-parser": "npm:^2.4.10" "@types/uuid": "npm:^10.0.0" + "@vanilla-extract/css": "npm:^1.16.1" "@vitejs/plugin-react-swc": "npm:^3.7.2" + app-builder-lib: "npm:^25.1.8" async-call-rpc: "npm:^6.4.2" builder-util-runtime: "npm:^9.2.10" cross-env: "npm:^7.0.3" + debug: "npm:^4.4.0" electron: "npm:^33.3.0" electron-log: "npm:^5.2.4" electron-squirrel-startup: "npm:1.0.1" @@ -550,6 +555,7 @@ __metadata: glob: "npm:^11.0.0" link-preview-js: "npm:^3.0.12" lodash-es: "npm:^4.17.21" + msw: "npm:^2.6.8" nanoid: "npm:^5.0.9" next-themes: "npm:^0.4.4" react: "npm:^19.0.0" @@ -691,7 +697,6 @@ __metadata: eslint-plugin-react: "npm:^7.37.2" eslint-plugin-react-hooks: "npm:^4.6.2" eslint-plugin-rxjs: "npm:^5.0.3" - eslint-plugin-simple-import-sort: "npm:^12.1.1" eslint-plugin-sonarjs: "npm:^3.0.1" eslint-plugin-unicorn: "npm:^56.0.1" eslint-plugin-unused-imports: "npm:^4.1.4" @@ -4535,7 +4540,7 @@ __metadata: languageName: node linkType: hard -"@electron/notarize@npm:^2.1.0": +"@electron/notarize@npm:2.5.0, @electron/notarize@npm:^2.1.0": version: 2.5.0 resolution: "@electron/notarize@npm:2.5.0" dependencies: @@ -4563,7 +4568,7 @@ __metadata: languageName: node linkType: hard -"@electron/osx-sign@npm:^1.0.5": +"@electron/osx-sign@npm:1.3.1, @electron/osx-sign@npm:^1.0.5": version: 1.3.1 resolution: "@electron/osx-sign@npm:1.3.1" dependencies: @@ -4609,6 +4614,30 @@ __metadata: languageName: node linkType: hard +"@electron/rebuild@npm:3.6.1": + version: 3.6.1 + resolution: "@electron/rebuild@npm:3.6.1" + dependencies: + "@malept/cross-spawn-promise": "npm:^2.0.0" + chalk: "npm:^4.0.0" + debug: "npm:^4.1.1" + detect-libc: "npm:^2.0.1" + fs-extra: "npm:^10.0.0" + got: "npm:^11.7.0" + node-abi: "npm:^3.45.0" + node-api-version: "npm:^0.2.0" + node-gyp: "npm:^9.0.0" + ora: "npm:^5.1.0" + read-binary-file-arch: "npm:^1.0.6" + semver: "npm:^7.3.5" + tar: "npm:^6.0.5" + yargs: "npm:^17.0.1" + bin: + electron-rebuild: lib/cli.js + checksum: 10/baedb09a8b109347fd1e7ee16559b4519ebc56a4ec624b3eec5215282a66def5fa4b96c19a26df0f53cd3ab60f077e88cd03429b46ddc63e70279f30c8e20c8a + languageName: node + linkType: hard + "@electron/rebuild@npm:^3.7.0": version: 3.7.1 resolution: "@electron/rebuild@npm:3.7.1" @@ -4649,7 +4678,7 @@ __metadata: languageName: node linkType: hard -"@electron/universal@npm:^2.0.1": +"@electron/universal@npm:2.0.1, @electron/universal@npm:^2.0.1": version: 2.0.1 resolution: "@electron/universal@npm:2.0.1" dependencies: @@ -15871,6 +15900,13 @@ __metadata: languageName: node linkType: hard +"app-builder-bin@npm:5.0.0-alpha.10": + version: 5.0.0-alpha.10 + resolution: "app-builder-bin@npm:5.0.0-alpha.10" + checksum: 10/842dc0cade3f1dc2c3fc2809511a4ecb86146d17d22e35d97a493bf3c8bd131552e935abd8ed8df40f6f62d8b231b7b705c81df709becdd55dc28dc6f247af31 + languageName: node + linkType: hard + "app-builder-lib@npm:^24.13.3": version: 24.13.3 resolution: "app-builder-lib@npm:24.13.3" @@ -15909,6 +15945,49 @@ __metadata: languageName: node linkType: hard +"app-builder-lib@npm:^25.1.8": + version: 25.1.8 + resolution: "app-builder-lib@npm:25.1.8" + dependencies: + "@develar/schema-utils": "npm:~2.6.5" + "@electron/notarize": "npm:2.5.0" + "@electron/osx-sign": "npm:1.3.1" + "@electron/rebuild": "npm:3.6.1" + "@electron/universal": "npm:2.0.1" + "@malept/flatpak-bundler": "npm:^0.4.0" + "@types/fs-extra": "npm:9.0.13" + async-exit-hook: "npm:^2.0.1" + bluebird-lst: "npm:^1.0.9" + builder-util: "npm:25.1.7" + builder-util-runtime: "npm:9.2.10" + chromium-pickle-js: "npm:^0.2.0" + config-file-ts: "npm:0.2.8-rc1" + debug: "npm:^4.3.4" + dotenv: "npm:^16.4.5" + dotenv-expand: "npm:^11.0.6" + ejs: "npm:^3.1.8" + electron-publish: "npm:25.1.7" + form-data: "npm:^4.0.0" + fs-extra: "npm:^10.1.0" + hosted-git-info: "npm:^4.1.0" + is-ci: "npm:^3.0.0" + isbinaryfile: "npm:^5.0.0" + js-yaml: "npm:^4.1.0" + json5: "npm:^2.2.3" + lazy-val: "npm:^1.0.5" + minimatch: "npm:^10.0.0" + resedit: "npm:^1.7.0" + sanitize-filename: "npm:^1.6.3" + semver: "npm:^7.3.8" + tar: "npm:^6.1.12" + temp-file: "npm:^3.4.0" + peerDependencies: + dmg-builder: 25.1.8 + electron-builder-squirrel-windows: 25.1.8 + checksum: 10/0af82ffd8389b6dbacffd0ee3191ed056b411f069c362e0f676bf00413d8cb14f0d6d9047e1ab388a578e7f41c8338daa489a259de1203d4b9fc465254dda685 + languageName: node + linkType: hard + "appdmg@npm:^0.6.4": version: 0.6.6 resolution: "appdmg@npm:0.6.6" @@ -15961,6 +16040,16 @@ __metadata: languageName: node linkType: hard +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10/390731720e1bf9ed5d0efc635ea7df8cbc4c90308b0645a932f06e8495a0bf1ecc7987d3b97e805f62a17d6c4b634074b25200aa4d149be2a7b17250b9744bc4 + languageName: node + linkType: hard + "arg@npm:5.0.2, arg@npm:^5.0.2": version: 5.0.2 resolution: "arg@npm:5.0.2" @@ -16874,6 +16963,30 @@ __metadata: languageName: node linkType: hard +"builder-util@npm:25.1.7": + version: 25.1.7 + resolution: "builder-util@npm:25.1.7" + dependencies: + 7zip-bin: "npm:~5.2.0" + "@types/debug": "npm:^4.1.6" + app-builder-bin: "npm:5.0.0-alpha.10" + bluebird-lst: "npm:^1.0.9" + builder-util-runtime: "npm:9.2.10" + chalk: "npm:^4.1.2" + cross-spawn: "npm:^7.0.3" + debug: "npm:^4.3.4" + fs-extra: "npm:^10.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.0" + is-ci: "npm:^3.0.0" + js-yaml: "npm:^4.1.0" + source-map-support: "npm:^0.5.19" + stat-mode: "npm:^1.0.0" + temp-file: "npm:^3.4.0" + checksum: 10/180817a9f5e24770050a2b23acb6b47e55156ee83c7296329ee538a1ec202cf21a626de9d731f4b674ab1d63bd995b152b02d8e8a4b3133a1964a586f0cc9037 + languageName: node + linkType: hard + "builtin-modules@npm:3.3.0, builtin-modules@npm:^3.3.0": version: 3.3.0 resolution: "builtin-modules@npm:3.3.0" @@ -17812,7 +17925,7 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.2": +"color-support@npm:^1.1.2, color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: @@ -18062,6 +18175,16 @@ __metadata: languageName: node linkType: hard +"config-file-ts@npm:0.2.8-rc1": + version: 0.2.8-rc1 + resolution: "config-file-ts@npm:0.2.8-rc1" + dependencies: + glob: "npm:^10.3.12" + typescript: "npm:^5.4.3" + checksum: 10/30884f67de343e2fa7914246c14296c6f4ed6dfcf86c833698fb97be46bc7d8cc9897b53a559d2267e711fbd83deda05d0baeba499151353bd245bfe10f23387 + languageName: node + linkType: hard + "config-file-ts@npm:^0.2.4": version: 0.2.6 resolution: "config-file-ts@npm:0.2.6" @@ -19327,14 +19450,7 @@ __metadata: languageName: node linkType: hard -"dotenv-expand@npm:^5.1.0": - version: 5.1.0 - resolution: "dotenv-expand@npm:5.1.0" - checksum: 10/d52af2a6e4642979ae4221408f1b75102508dbe4f5bac1c0613f92a3cf3880d5c31f86b2f5cff3273f7c23e10421e75028546e8b6cd0376fcd20e3803b374e15 - languageName: node - linkType: hard - -"dotenv-expand@npm:~11.0.6": +"dotenv-expand@npm:^11.0.6, dotenv-expand@npm:~11.0.6": version: 11.0.7 resolution: "dotenv-expand@npm:11.0.7" dependencies: @@ -19343,6 +19459,13 @@ __metadata: languageName: node linkType: hard +"dotenv-expand@npm:^5.1.0": + version: 5.1.0 + resolution: "dotenv-expand@npm:5.1.0" + checksum: 10/d52af2a6e4642979ae4221408f1b75102508dbe4f5bac1c0613f92a3cf3880d5c31f86b2f5cff3273f7c23e10421e75028546e8b6cd0376fcd20e3803b374e15 + languageName: node + linkType: hard + "dotenv@npm:^16.0.0, dotenv@npm:^16.3.1, dotenv@npm:^16.4.5, dotenv@npm:^16.4.7, dotenv@npm:~16.4.5": version: 16.4.7 resolution: "dotenv@npm:16.4.7" @@ -19494,6 +19617,21 @@ __metadata: languageName: node linkType: hard +"electron-publish@npm:25.1.7": + version: 25.1.7 + resolution: "electron-publish@npm:25.1.7" + dependencies: + "@types/fs-extra": "npm:^9.0.11" + builder-util: "npm:25.1.7" + builder-util-runtime: "npm:9.2.10" + chalk: "npm:^4.1.2" + fs-extra: "npm:^10.1.0" + lazy-val: "npm:^1.0.5" + mime: "npm:^2.5.2" + checksum: 10/75a3e6bcb796423456e01fb79d7c39257ae9a9ea9820ddbc64321ac888867da33198693af87366137d6c13b66a4273e89d15c268184bbddc24db6585d16067c1 + languageName: node + linkType: hard + "electron-squirrel-startup@npm:1.0.1": version: 1.0.1 resolution: "electron-squirrel-startup@npm:1.0.1" @@ -20348,15 +20486,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-simple-import-sort@npm:^12.1.1": - version: 12.1.1 - resolution: "eslint-plugin-simple-import-sort@npm:12.1.1" - peerDependencies: - eslint: ">=5.0.0" - checksum: 10/2a690cea9243fbefa70345687bca8952f5e185fa459b7a8db687a908cc31082435cfee236c619d5245548fa5f89a2f2c4f8499f80512e048d2bedc60e3662d5a - languageName: node - linkType: hard - "eslint-plugin-sonarjs@npm:^3.0.1": version: 3.0.1 resolution: "eslint-plugin-sonarjs@npm:3.0.1" @@ -21666,6 +21795,22 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.3" + console-control-strings: "npm:^1.1.0" + has-unicode: "npm:^2.0.1" + signal-exit: "npm:^3.0.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.5" + checksum: 10/09535dd53b5ced6a34482b1fa9f3929efdeac02f9858569cde73cef3ed95050e0f3d095706c1689614059898924b7a74aa14042f51381a1ccc4ee5c29d2389c4 + languageName: node + linkType: hard + "gaxios@npm:^6.0.0, gaxios@npm:^6.0.3, gaxios@npm:^6.1.1": version: 6.7.1 resolution: "gaxios@npm:6.7.1" @@ -21914,7 +22059,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.4.1": +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.12, glob@npm:^10.4.1": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -25087,7 +25232,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.2.1": +"make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.2.1": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" dependencies: @@ -26680,6 +26825,27 @@ __metadata: languageName: node linkType: hard +"node-gyp@npm:^9.0.0": + version: 9.4.1 + resolution: "node-gyp@npm:9.4.1" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^10.0.3" + nopt: "npm:^6.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" + bin: + node-gyp: bin/node-gyp.js + checksum: 10/329b109b138e48cb0416a6bca56e171b0e479d6360a548b80f06eced4bef3cf37652a3d20d171c20023fb18d996bd7446a49d4297ddb59fc48100178a92f432d + languageName: node + linkType: hard + "node-gyp@npm:latest": version: 10.3.1 resolution: "node-gyp@npm:10.3.1" @@ -26886,6 +27052,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: "npm:^3.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^4.0.3" + set-blocking: "npm:^2.0.0" + checksum: 10/82b123677e62deb9e7472e27b92386c09e6e254ee6c8bcd720b3011013e4168bc7088e984f4fbd53cb6e12f8b4690e23e4fa6132689313e0d0dc4feea45489bb + languageName: node + linkType: hard + "nth-check@npm:^2.0.1": version: 2.1.1 resolution: "nth-check@npm:2.1.1" @@ -27864,6 +28042,13 @@ __metadata: languageName: node linkType: hard +"pe-library@npm:^0.4.1": + version: 0.4.1 + resolution: "pe-library@npm:0.4.1" + checksum: 10/39aa0a756a6521b23326fbb2ccaa157406feb695146aa32f9a2b901c6a6d788ae290a2d3272880df2bc514ad73cd9b2e5fcd4ef4968bcaf626d7a9459a8c7d31 + languageName: node + linkType: hard + "pe-library@npm:^1.0.1": version: 1.0.1 resolution: "pe-library@npm:1.0.1" @@ -29816,6 +30001,15 @@ __metadata: languageName: node linkType: hard +"resedit@npm:^1.7.0": + version: 1.7.2 + resolution: "resedit@npm:1.7.2" + dependencies: + pe-library: "npm:^0.4.1" + checksum: 10/0fc470cb320a6dbbc85c38abd695cb90ca075d9dbea96846fa5f84ab8add23aa39a02520d70f14c93c84181ba4812a5513da7c79df7491826e7b423cee4e058f + languageName: node + linkType: hard + "resedit@npm:^2.0.0": version: 2.0.3 resolution: "resedit@npm:2.0.3" @@ -31992,7 +32186,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:6.2.1, tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.12, tar@npm:^6.2.0, tar@npm:^6.2.1": +"tar@npm:6.2.1, tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.12, tar@npm:^6.1.2, tar@npm:^6.2.0, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -32738,7 +32932,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5, typescript@npm:^5.3.3, typescript@npm:^5.7.2": +"typescript@npm:^5, typescript@npm:^5.3.3, typescript@npm:^5.4.3, typescript@npm:^5.7.2": version: 5.7.2 resolution: "typescript@npm:5.7.2" bin: @@ -32748,7 +32942,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5#optional!builtin, typescript@patch:typescript@npm%3A^5.3.3#optional!builtin, typescript@patch:typescript@npm%3A^5.7.2#optional!builtin": +"typescript@patch:typescript@npm%3A^5#optional!builtin, typescript@patch:typescript@npm%3A^5.3.3#optional!builtin, typescript@patch:typescript@npm%3A^5.4.3#optional!builtin, typescript@patch:typescript@npm%3A^5.7.2#optional!builtin": version: 5.7.2 resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=5786d5" bin: @@ -33900,7 +34094,7 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.2": +"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: