diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index aef134f093..0000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - root: true, - ignorePatterns: ['packages/server/upload', 'packages/server/upload_test', '**/*.js', 'packages/projects/projects/**'], - rules: { - '@typescript-eslint/no-empty-interface': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-non-null-asserted-optional-chain': 'warn', - '@typescript-eslint/no-var-requires': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/no-explicit-any': 'off', - 'prefer-const': 'warn', - 'no-async-promise-executor': 'off', - 'no-useless-escape': 'off', - '@typescript-eslint/no-extra-semi': 'off', // 'error' this currently conflicts with prettier, - '@typescript-eslint/no-unused-vars': 'off', - "no-fallthrough": "off", - }, - env: { - browser: true, - node: true - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..6ced85002b --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,52 @@ +import { FlatCompat } from '@eslint/eslintrc' +import js from '@eslint/js' +import typescriptEslint from '@typescript-eslint/eslint-plugin' +import tsParser from '@typescript-eslint/parser' +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: ['packages/server/upload', 'packages/server/upload_test', '**/*.js', 'packages/projects/projects/**/*'] + }, + ...compat.extends('eslint:recommended', 'plugin:@typescript-eslint/recommended'), + { + plugins: { + '@typescript-eslint': typescriptEslint + }, + + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + }, + + parser: tsParser + }, + + rules: { + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'warn', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/no-explicit-any': 'off', + 'prefer-const': 'warn', + 'no-async-promise-executor': 'off', + 'no-useless-escape': 'off', + '@typescript-eslint/no-extra-semi': 'off', + '@typescript-eslint/no-unused-vars': 'off', + 'no-fallthrough': 'off' + } + } +] diff --git a/package.json b/package.json index c48caa43eb..a09208166e 100755 --- a/package.json +++ b/package.json @@ -106,6 +106,8 @@ ] }, "devDependencies": { + "@eslint/eslintrc": "3.1.0", + "@eslint/js": "9.5.0", "@ianvs/prettier-plugin-sort-imports": "4.1.0", "@swc/core": "1.3.41", "@testing-library/react": "15.0.4", @@ -114,12 +116,13 @@ "@types/mocha": "10.0.1", "@types/primus": "^7.3.6", "@types/three": "0.158.0", - "@typescript-eslint/eslint-plugin": "5.56.0", - "@typescript-eslint/parser": "5.56.0", + "@typescript-eslint/eslint-plugin": "7.13.1", + "@typescript-eslint/parser": "7.13.1", "concurrently": "7.6.0", "deep-object-diff": "^1.1.9", "depcheck": "1.4.3", - "eslint": "8.36.0", + "eslint": "9.5.0", + "globals": "15.6.0", "jsdom": "^21.1.1", "kill-port": "2.0.1", "lerna": "6.5.1", diff --git a/packages/editor/src/components/assets/SceneAssetsPanel.tsx b/packages/editor/src/components/assets/SceneAssetsPanel.tsx index 6d0eb6e776..f3fab087b4 100644 --- a/packages/editor/src/components/assets/SceneAssetsPanel.tsx +++ b/packages/editor/src/components/assets/SceneAssetsPanel.tsx @@ -1,4 +1,3 @@ -/* eslint-disable no-case-declarations */ /* CPAL-1.0 License @@ -190,7 +189,7 @@ const SceneAssetsPanel = () => { useEffect(() => { const staticResourcesFindApi = () => { const query = { - key: { $like: `%${searchText.value}%` || undefined }, + key: { $like: `%${searchText.value}%` }, $sort: { mimeType: 1 }, $limit: 10000, project: projectName.value! diff --git a/packages/editor/src/components/hierarchy/HeirarchyTreeWalker.ts b/packages/editor/src/components/hierarchy/HeirarchyTreeWalker.ts index 3948858e72..4d659ce99d 100644 --- a/packages/editor/src/components/hierarchy/HeirarchyTreeWalker.ts +++ b/packages/editor/src/components/hierarchy/HeirarchyTreeWalker.ts @@ -69,8 +69,7 @@ export function* heirarchyTreeWalker(sceneID: string, treeNode: Entity): Generat const entityTreeComponent = getComponent(entityNode as Entity, EntityTreeComponent) // treat entites with all helper children as leaf nodes - const allhelperChildren = - false || entityTreeComponent.children.every((child) => !hasComponent(child, SourceComponent)) + const allhelperChildren = entityTreeComponent.children.every((child) => !hasComponent(child, SourceComponent)) yield { isLeaf: entityTreeComponent.children.length === 0 || allhelperChildren, diff --git a/packages/editor/src/components/visualScript/components/InputSocket.tsx b/packages/editor/src/components/visualScript/components/InputSocket.tsx index 3b5c530448..7d63f56cad 100644 --- a/packages/editor/src/components/visualScript/components/InputSocket.tsx +++ b/packages/editor/src/components/visualScript/components/InputSocket.tsx @@ -50,7 +50,7 @@ const InputFieldForValue = ({ valueType }: Pick) => { const showChoices = choices?.length - const inputVal = String(value) ?? defaultValue ?? '' + const inputVal = String(value) // ?? defaultValue ?? '' const inputSocketStyle = { backgroundColor: 'var(--panelCards)', cursor: 'pointer', diff --git a/packages/engine/src/assets/compression/ModelTransformFunctions.ts b/packages/engine/src/assets/compression/ModelTransformFunctions.ts index c76468c7f0..4cf1859fe5 100644 --- a/packages/engine/src/assets/compression/ModelTransformFunctions.ts +++ b/packages/engine/src/assets/compression/ModelTransformFunctions.ts @@ -270,7 +270,8 @@ export async function combineMaterials(document: Document) { if (eeMat !== null && cachedEEMat !== null) { return ( eeMat.prototype === cachedEEMat.prototype && - ((eeMat.args === cachedEEMat.args) === null || (cachedEEMat.args && eeMat.args?.equals(cachedEEMat.args))) + ((eeMat.args === cachedEEMat.args && eeMat.args === null) || + (cachedEEMat.args && eeMat.args?.equals(cachedEEMat.args))) ) } else return material.equals(cachedMaterial) }) diff --git a/packages/server-core/src/projects/project/project-helper.ts b/packages/server-core/src/projects/project/project-helper.ts index e929f10977..2aa5661dce 100644 --- a/packages/server-core/src/projects/project/project-helper.ts +++ b/packages/server-core/src/projects/project/project-helper.ts @@ -813,7 +813,7 @@ export const getProjectCommits = async ( } export const findBuilderTags = async (): Promise> => { - const builderRepo = `${process.env.SOURCE_REPO_URL}/${process.env.SOURCE_REPO_NAME_STEM}-builder` || '' + const builderRepo = `${process.env.SOURCE_REPO_URL}/${process.env.SOURCE_REPO_NAME_STEM}-builder` const publicECRExec = publicECRRepoRegex.exec(builderRepo) const privateECRExec = privateECRRepoRegex.exec(builderRepo) if (publicECRExec) { diff --git a/packages/server-core/src/setting/server-setting/server-setting.seed.ts b/packages/server-core/src/setting/server-setting/server-setting.seed.ts index da903db95b..3dd37b2046 100644 --- a/packages/server-core/src/setting/server-setting/server-setting.seed.ts +++ b/packages/server-core/src/setting/server-setting/server-setting.seed.ts @@ -57,7 +57,7 @@ const server = { hub: JSON.stringify({ endpoint: process.env.HUB_ENDPOINT }), - url: '' || (null! as string), + url: '', certPath: appRootPath.path.toString() + '/' + process.env.CERT, keyPath: appRootPath.path.toString() + '/' + process.env.KEY, gitPem: '', diff --git a/packages/ui/src/components/editor/panels/Assets/container/index.tsx b/packages/ui/src/components/editor/panels/Assets/container/index.tsx index 69a0513afe..3388e6c8b8 100644 --- a/packages/ui/src/components/editor/panels/Assets/container/index.tsx +++ b/packages/ui/src/components/editor/panels/Assets/container/index.tsx @@ -370,7 +370,7 @@ const AssetPanel = () => { const staticResourcesFindApi = () => { const query = { key: { - $like: `%${searchText.value}%` || undefined + $like: `%${searchText.value}%` }, type: 'asset', project: projectName.value!, diff --git a/packages/ui/src/components/editor/panels/VisualScript/node/socket/input/index.tsx b/packages/ui/src/components/editor/panels/VisualScript/node/socket/input/index.tsx index 9e39d5aec0..4f0e2b287f 100644 --- a/packages/ui/src/components/editor/panels/VisualScript/node/socket/input/index.tsx +++ b/packages/ui/src/components/editor/panels/VisualScript/node/socket/input/index.tsx @@ -54,7 +54,7 @@ const InputFieldForValue = ({ valueType }: Pick) => { const showChoices = choices?.length - const inputVal = String(value) ?? defaultValue ?? '' + const inputVal = String(value) // ?? defaultValue ?? '' const inputSocketStyle = { userDrag: 'none', WebkitUserDrag: 'none', diff --git a/packages/ui/src/components/editor/properties/image/sourceProperties/index.tsx b/packages/ui/src/components/editor/properties/image/sourceProperties/index.tsx index 5da2d9e512..d6ec2ba217 100644 --- a/packages/ui/src/components/editor/properties/image/sourceProperties/index.tsx +++ b/packages/ui/src/components/editor/properties/image/sourceProperties/index.tsx @@ -66,24 +66,24 @@ export const ImageSourceProperties: EditorComponentType = (props) => { /> { - /*imageComponent.alphaMode.value === ImageAlphaMode.Mask*/ true && ( - - - - ) + /*{imageComponent.alphaMode.value === ImageAlphaMode.Mask && (*/ + + + + /** )} */ } { const list = read('list') - const startIndex = Math.max(0, Number(read('startIndex')) ?? 0) - const endIndex = Math.min(list.length, Number(read('endIndex')) ?? list.length) + const startIndex = Math.max(0, Number(read('startIndex')) || 0) + const endIndex = Math.min(list.length, Number(read('endIndex')) || list.length) const loopBodyIteration = (i: number) => { if (i < endIndex) { write('value', JSON.stringify(list[i]))