diff --git a/.eslintrc.js b/.eslintrc.js index 0782ae8893..0c55bc1e06 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -127,6 +127,7 @@ const config = { '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', diff --git a/packages/backend/server/src/modules/doc/manager.ts b/packages/backend/server/src/modules/doc/manager.ts index e531f6057e..a31bc1a841 100644 --- a/packages/backend/server/src/modules/doc/manager.ts +++ b/packages/backend/server/src/modules/doc/manager.ts @@ -42,7 +42,7 @@ function compare(yBinary: Buffer, jwstBinary: Buffer, strict = false): boolean { function isEmptyBuffer(buf: Buffer): boolean { return ( - buf.length == 0 || + buf.length === 0 || // 0x0000 (buf.length === 2 && buf[0] === 0 && buf[1] === 0) ); diff --git a/packages/common/infra/src/blocksuite/migration/subdoc.ts b/packages/common/infra/src/blocksuite/migration/subdoc.ts index c8acf278cb..da77756cc2 100644 --- a/packages/common/infra/src/blocksuite/migration/subdoc.ts +++ b/packages/common/infra/src/blocksuite/migration/subdoc.ts @@ -50,7 +50,7 @@ function migrateDatabase(data: YMap) { update: (cell: { id: string; value: unknown }) => void ) => { Object.values(cells).forEach(row => { - if (row[id] != null) { + if (row[id] !== null && row[id] !== undefined) { update(row[id]); } }); diff --git a/packages/frontend/component/src/components/page-list/filter/logical/typesystem.ts b/packages/frontend/component/src/components/page-list/filter/logical/typesystem.ts index 4b0e0a8533..5458e02e2b 100644 --- a/packages/frontend/component/src/components/page-list/filter/logical/typesystem.ts +++ b/packages/frontend/component/src/components/page-list/filter/logical/typesystem.ts @@ -195,7 +195,7 @@ export class Typesystem { ): boolean { if (superType.type === 'typeRef') { // TODO both are ref - if (context && sub.type != 'typeRef') { + if (context && sub.type !== 'typeRef') { context[superType.name] = sub; } // TODO bound diff --git a/packages/frontend/component/src/components/page-list/filter/vars.tsx b/packages/frontend/component/src/components/page-list/filter/vars.tsx index 9b3c5fc2e9..bf4af661af 100644 --- a/packages/frontend/component/src/components/page-list/filter/vars.tsx +++ b/packages/frontend/component/src/components/page-list/filter/vars.tsx @@ -141,7 +141,7 @@ filterMatcher.register( name: 'is', defaultArgs: () => [true], impl: (value, target) => { - return value == target; + return value === target; }, } ); @@ -209,7 +209,7 @@ filterMatcher.register( defaultArgs: () => [], impl: tags => { const safeTags = safeArray(tags); - return safeTags.length == 0; + return safeTags.length === 0; }, } ); diff --git a/packages/frontend/component/src/components/page-list/utils.tsx b/packages/frontend/component/src/components/page-list/utils.tsx index 8acf0002eb..1c33f2fd1f 100644 --- a/packages/frontend/component/src/components/page-list/utils.tsx +++ b/packages/frontend/component/src/components/page-list/utils.tsx @@ -10,9 +10,9 @@ import * as styles from './page-list.css'; export function isToday(date: Date): boolean { const today = new Date(); return ( - date.getDate() == today.getDate() && - date.getMonth() == today.getMonth() && - date.getFullYear() == today.getFullYear() + date.getDate() === today.getDate() && + date.getMonth() === today.getMonth() && + date.getFullYear() === today.getFullYear() ); } diff --git a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/plan-card.tsx b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/plan-card.tsx index 16074b71dc..f8f415ee69 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/plan-card.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/general-setting/plans/plan-card.tsx @@ -179,7 +179,7 @@ export const PlanCard = (props: PlanCardProps) => { {detail.benefits.map((content, i) => (
- {detail.type == 'dynamic' ? ( + {detail.type === 'dynamic' ? ( ) : ( { await setting.updateCollection({ ...collection, - allowList: collection.allowList?.filter(v => v != id), + allowList: collection.allowList?.filter(v => v !== id), }); }, [collection, setting] diff --git a/packages/frontend/core/src/layouts/workspace-layout.tsx b/packages/frontend/core/src/layouts/workspace-layout.tsx index 12bbf066a6..3c4a8d3498 100644 --- a/packages/frontend/core/src/layouts/workspace-layout.tsx +++ b/packages/frontend/core/src/layouts/workspace-layout.tsx @@ -194,7 +194,8 @@ export const WorkspaceLayoutInner = ({ const blockVersions = meta.get('blockVersions'); if ( !(blockVersions instanceof YMap) && - blockVersions != null && + blockVersions !== null && + blockVersions !== undefined && typeof blockVersions === 'object' ) { meta.set( diff --git a/packages/frontend/electron/src/main/updater/custom-github-provider.ts b/packages/frontend/electron/src/main/updater/custom-github-provider.ts index 55bf60102f..9615b3c550 100644 --- a/packages/frontend/electron/src/main/updater/custom-github-provider.ts +++ b/packages/frontend/electron/src/main/updater/custom-github-provider.ts @@ -105,7 +105,7 @@ export class CustomGitHubProvider extends BaseGitHubProvider { ); } - if (tag == null) { + if (tag === null || tag === undefined) { throw newError( `No published versions on GitHub`, 'ERR_UPDATER_NO_PUBLISHED_VERSIONS' @@ -154,7 +154,7 @@ export class CustomGitHubProvider extends BaseGitHubProvider { } const result = parseUpdateInfo(rawData, channelFile, channelFileUrl); - if (result.releaseName == null) { + if (result.releaseName === null) { result.releaseName = latestRelease.elementValueOrEmpty('title'); } diff --git a/packages/frontend/workspace/src/providers/sync/engine.ts b/packages/frontend/workspace/src/providers/sync/engine.ts index 120dc97739..85221587de 100644 --- a/packages/frontend/workspace/src/providers/sync/engine.ts +++ b/packages/frontend/workspace/src/providers/sync/engine.ts @@ -186,13 +186,13 @@ export class SyncEngine { } async waitForSynced(abort?: AbortSignal) { - if (this.status.step == SyncEngineStep.Synced) { + if (this.status.step === SyncEngineStep.Synced) { return; } else { return Promise.race([ new Promise(resolve => { this.onStatusChange.on(status => { - if (status.step == SyncEngineStep.Synced) { + if (status.step === SyncEngineStep.Synced) { resolve(); } }); diff --git a/tests/affine-local/e2e/quick-search.spec.ts b/tests/affine-local/e2e/quick-search.spec.ts index cb5ceb836b..bc53c0cd9e 100644 --- a/tests/affine-local/e2e/quick-search.spec.ts +++ b/tests/affine-local/e2e/quick-search.spec.ts @@ -65,7 +65,7 @@ async function waitForScrollToFinish(page: Page) { let lastScrollTop: number; const interval = setInterval(() => { const { scrollTop } = document.documentElement; - if (scrollTop != lastScrollTop) { + if (scrollTop !== lastScrollTop) { lastScrollTop = scrollTop; } else { clearInterval(interval);