diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a216b3d..ae1c5fc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,6 +38,9 @@ jobs: with: actions-cache-folder: ${{env.EM_CACHE_FOLDER}} + - name: "Run build" + run: pnpm build + - name: "Run tests" run: pnpm test:unit diff --git a/.husky/pre-commit b/.husky/pre-commit index 925a2c4..8c111d6 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,3 +1 @@ -pnpm lint-staged pnpm fix -pnpm lint diff --git a/.husky/pre-push b/.husky/pre-push index c06cd22..f47c258 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1 +1,4 @@ -pnpm lerna run lint,test:unit +pnpm clean +pnpm lint +pnpm build +pnpm test diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 56b9494..0000000 --- a/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/eslint.config.js b/eslint.config.js index 03d9de6..7ea4a2c 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,45 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { files: ["src/**/*.{ts}"] }, - { languageOptions: { globals: globals.node } }, - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ["**/*.js"] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, -]; +export default config; diff --git a/example/pong/eslint.config.js b/example/pong/eslint.config.js index 4d24d57..4f5f458 100644 --- a/example/pong/eslint.config.js +++ b/example/pong/eslint.config.js @@ -13,7 +13,7 @@ export default [ ...tseslint.configs.recommended, ...tseslint.configs.strict, eslintConfigPrettier, - { ignores: ["**/*.js"] }, + { ignores: ["**/*.js", "**/*.d.ts"] }, { rules: { "@typescript-eslint/consistent-type-imports": [ diff --git a/lerna.json b/lerna.json index 9a4d59b..f7112f4 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,8 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", "packages": [ - "packages/*" + "packages/*", + "utils/*" ], "version": "0.0.0" } diff --git a/package.json b/package.json index 4eb65d6..f006901 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,7 @@ "test:unit": "lerna run test:unit", "test:e2e": "lerna run test:e2e", "prepare": "husky", - "taze": "taze major -w && lerna run taze", - "lint-staged": "lint-staged" + "taze": "taze major -w && lerna run taze" }, "dependencies": { "tslib": "^2.8.1" @@ -36,31 +35,20 @@ "devDependencies": { "@commitlint/cli": "^20.0.0", "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/node": "^22.18.7", "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", "husky": "^9.1.7", "lerna": "^8.2.4", - "lint-staged": "^16.2.3", "prettier": "^3.6.2", "taze": "^19.7.0", - "typescript": "^5.9.2", - "typescript-eslint": "^8.45.0" + "typescript": "^5.9.2" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/asset-manager/.prettierrc b/packages/asset-manager/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/asset-manager/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/asset-manager/eslint.config.js b/packages/asset-manager/eslint.config.js index 4a7529e..7ea4a2c 100644 --- a/packages/asset-manager/eslint.config.js +++ b/packages/asset-manager/eslint.config.js @@ -1,63 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; -import pluginJest from "eslint-plugin-jest"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { - files: ["src/**/*.{ts}"], - }, - { languageOptions: { globals: globals.node } }, - - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ["**/*.js"] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, - { - files: ["**/*.spec.ts"], - plugins: { jest: pluginJest }, - languageOptions: { - globals: pluginJest.environments.globals.globals, - }, - rules: { - "jest/no-disabled-tests": "warn", - "jest/no-focused-tests": "error", - "jest/no-identical-title": "error", - "jest/prefer-to-have-length": "warn", - "jest/valid-expect": "error", - } - } -]; +export default config; diff --git a/packages/asset-manager/package.json b/packages/asset-manager/package.json index 78abe5e..b442955 100644 --- a/packages/asset-manager/package.json +++ b/packages/asset-manager/package.json @@ -29,42 +29,24 @@ "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", "taze": "taze major -w", - "lint-staged": "lint-staged", "test:unit": "jest --config ./jest.config.json" }, "dependencies": { "@nanoforge/common": "workspace:^" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", "@types/jest": "^30.0.0", "@types/node": "^22.18.7", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-jest": "^29.0.1", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", "jest": "^30.2.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", "taze": "^19.7.0", "ts-jest": "^29.4.4", - "typescript": "^5.9.2", - "typescript-eslint": "^8.45.0" + "typescript": "^5.9.2" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/asset-manager/prettier.config.js b/packages/asset-manager/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/asset-manager/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/common/.prettierrc b/packages/common/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/common/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/common/README.md b/packages/common/README.md index 8680ad6..fa59837 100644 --- a/packages/common/README.md +++ b/packages/common/README.md @@ -1 +1 @@ -# Engine Core +# Engine Common diff --git a/packages/common/eslint.config.js b/packages/common/eslint.config.js index a6a38b9..7ea4a2c 100644 --- a/packages/common/eslint.config.js +++ b/packages/common/eslint.config.js @@ -1,45 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { files: ["src/**/*.{ts}"] }, - { languageOptions: { globals: globals.node } }, - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ['**/*.js'] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, -]; +export default config; diff --git a/packages/common/package.json b/packages/common/package.json index 97d7386..4ebcf4f 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -28,33 +28,16 @@ "clean:scripts": "find src -name '*.js' -delete", "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", - "taze": "taze major -w", - "lint-staged": "lint-staged" + "taze": "taze major -w" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", - "taze": "^19.7.0", - "typescript-eslint": "^8.45.0" + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", + "taze": "^19.7.0" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/common/prettier.config.js b/packages/common/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/common/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/config/.prettierrc b/packages/config/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/config/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/config/eslint.config.js b/packages/config/eslint.config.js index a6a38b9..7ea4a2c 100644 --- a/packages/config/eslint.config.js +++ b/packages/config/eslint.config.js @@ -1,45 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { files: ["src/**/*.{ts}"] }, - { languageOptions: { globals: globals.node } }, - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ['**/*.js'] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, -]; +export default config; diff --git a/packages/config/package.json b/packages/config/package.json index 489b571..98a54bc 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -28,37 +28,20 @@ "clean:scripts": "find src -name '*.js' -delete", "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", - "taze": "taze major -w", - "lint-staged": "lint-staged" + "taze": "taze major -w" }, "dependencies": { "class-transformer": "^0.5.1", "class-validator": "^0.14.2" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", - "taze": "^19.7.0", - "typescript-eslint": "^8.45.0" + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", + "taze": "^19.7.0" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/config/prettier.config.js b/packages/config/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/config/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/core/.prettierrc b/packages/core/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/core/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/core/eslint.config.js b/packages/core/eslint.config.js index a6a38b9..7ea4a2c 100644 --- a/packages/core/eslint.config.js +++ b/packages/core/eslint.config.js @@ -1,45 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { files: ["src/**/*.{ts}"] }, - { languageOptions: { globals: globals.node } }, - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ['**/*.js'] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, -]; +export default config; diff --git a/packages/core/package.json b/packages/core/package.json index 47f2f89..cf0c50d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -28,8 +28,7 @@ "clean:scripts": "find src -name '*.js' -delete", "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", - "taze": "taze major -w", - "lint-staged": "lint-staged" + "taze": "taze major -w" }, "dependencies": { "@nanoforge/asset-manager": "workspace:^", @@ -39,29 +38,13 @@ "class-validator": "^0.14.2" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", - "taze": "^19.7.0", - "typescript-eslint": "^8.45.0" + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", + "taze": "^19.7.0" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/core/prettier.config.js b/packages/core/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/core/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/ecs/.prettierrc b/packages/ecs/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/ecs/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/ecs/eslint.config.js b/packages/ecs/eslint.config.js index 4a7529e..7ea4a2c 100644 --- a/packages/ecs/eslint.config.js +++ b/packages/ecs/eslint.config.js @@ -1,63 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; -import pluginJest from "eslint-plugin-jest"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { - files: ["src/**/*.{ts}"], - }, - { languageOptions: { globals: globals.node } }, - - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ["**/*.js"] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, - { - files: ["**/*.spec.ts"], - plugins: { jest: pluginJest }, - languageOptions: { - globals: pluginJest.environments.globals.globals, - }, - rules: { - "jest/no-disabled-tests": "warn", - "jest/no-focused-tests": "error", - "jest/no-identical-title": "error", - "jest/prefer-to-have-length": "warn", - "jest/valid-expect": "error", - } - } -]; +export default config; diff --git a/packages/ecs/package.json b/packages/ecs/package.json index aa79f49..e0004d0 100644 --- a/packages/ecs/package.json +++ b/packages/ecs/package.json @@ -33,42 +33,24 @@ "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", "taze": "taze major -w", - "lint-staged": "lint-staged", "test:unit": "make fclean && make tests -j 16 && pnpm clean:script && pnpm build:script && jest --config ./jest.config.json" }, "dependencies": { "@nanoforge/common": "workspace:^" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", "@types/jest": "^30.0.0", "@types/node": "^22.18.7", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-jest": "^29.0.1", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", "jest": "^30.2.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", "taze": "^19.7.0", "ts-jest": "^29.4.4", - "typescript": "^5.9.2", - "typescript-eslint": "^8.45.0" + "typescript": "^5.9.2" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/ecs/prettier.config.js b/packages/ecs/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/ecs/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/graphics-2d/.prettierrc b/packages/graphics-2d/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/graphics-2d/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/graphics-2d/eslint.config.js b/packages/graphics-2d/eslint.config.js index 4a7529e..7ea4a2c 100644 --- a/packages/graphics-2d/eslint.config.js +++ b/packages/graphics-2d/eslint.config.js @@ -1,63 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; -import pluginJest from "eslint-plugin-jest"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { - files: ["src/**/*.{ts}"], - }, - { languageOptions: { globals: globals.node } }, - - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ["**/*.js"] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, - { - files: ["**/*.spec.ts"], - plugins: { jest: pluginJest }, - languageOptions: { - globals: pluginJest.environments.globals.globals, - }, - rules: { - "jest/no-disabled-tests": "warn", - "jest/no-focused-tests": "error", - "jest/no-identical-title": "error", - "jest/prefer-to-have-length": "warn", - "jest/valid-expect": "error", - } - } -]; +export default config; diff --git a/packages/graphics-2d/package.json b/packages/graphics-2d/package.json index bf92b1e..1982728 100644 --- a/packages/graphics-2d/package.json +++ b/packages/graphics-2d/package.json @@ -29,7 +29,6 @@ "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", "taze": "taze major -w", - "lint-staged": "lint-staged", "test:unit": "jest --config ./jest.config.json" }, "dependencies": { @@ -37,36 +36,19 @@ "@nanoforge/common": "workspace:^" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", "@types/jest": "^30.0.0", "@types/node": "^22.18.7", "@webgpu/types": "^0.1.65", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-jest": "^29.0.1", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", "jest": "^30.2.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", "taze": "^19.7.0", "ts-jest": "^29.4.4", - "typescript": "^5.9.2", - "typescript-eslint": "^8.45.0" + "typescript": "^5.9.2" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/graphics-2d/prettier.config.js b/packages/graphics-2d/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/graphics-2d/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/input/.prettierrc b/packages/input/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/input/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/input/eslint.config.js b/packages/input/eslint.config.js index 4a7529e..7ea4a2c 100644 --- a/packages/input/eslint.config.js +++ b/packages/input/eslint.config.js @@ -1,63 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; -import pluginJest from "eslint-plugin-jest"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { - files: ["src/**/*.{ts}"], - }, - { languageOptions: { globals: globals.node } }, - - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ["**/*.js"] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, - { - files: ["**/*.spec.ts"], - plugins: { jest: pluginJest }, - languageOptions: { - globals: pluginJest.environments.globals.globals, - }, - rules: { - "jest/no-disabled-tests": "warn", - "jest/no-focused-tests": "error", - "jest/no-identical-title": "error", - "jest/prefer-to-have-length": "warn", - "jest/valid-expect": "error", - } - } -]; +export default config; diff --git a/packages/input/package.json b/packages/input/package.json index f9b7e2f..e0e07a6 100644 --- a/packages/input/package.json +++ b/packages/input/package.json @@ -28,39 +28,19 @@ "clean:scripts": "find src -name '*.js' -delete", "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", - "taze": "taze major -w", - "lint-staged": "lint-staged" + "taze": "taze major -w" }, "dependencies": { "@nanoforge/common": "workspace:^" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "@types/node": "^22.18.7", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-jest": "^29.0.1", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", - "taze": "^19.7.0", - "typescript": "^5.9.2", - "typescript-eslint": "^8.45.0" + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", + "taze": "^19.7.0" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/input/prettier.config.js b/packages/input/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/input/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/music/.prettierrc b/packages/music/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/music/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/music/eslint.config.js b/packages/music/eslint.config.js index 4a7529e..7ea4a2c 100644 --- a/packages/music/eslint.config.js +++ b/packages/music/eslint.config.js @@ -1,63 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; -import pluginJest from "eslint-plugin-jest"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { - files: ["src/**/*.{ts}"], - }, - { languageOptions: { globals: globals.node } }, - - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ["**/*.js"] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, - { - files: ["**/*.spec.ts"], - plugins: { jest: pluginJest }, - languageOptions: { - globals: pluginJest.environments.globals.globals, - }, - rules: { - "jest/no-disabled-tests": "warn", - "jest/no-focused-tests": "error", - "jest/no-identical-title": "error", - "jest/prefer-to-have-length": "warn", - "jest/valid-expect": "error", - } - } -]; +export default config; diff --git a/packages/music/package.json b/packages/music/package.json index d3d6778..bd0d093 100644 --- a/packages/music/package.json +++ b/packages/music/package.json @@ -28,39 +28,19 @@ "clean:scripts": "find src -name '*.js' -delete", "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", - "taze": "taze major -w", - "lint-staged": "lint-staged" + "taze": "taze major -w" }, "dependencies": { "@nanoforge/common": "workspace:^" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "@types/node": "^22.18.7", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-jest": "^29.0.1", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", - "taze": "^19.7.0", - "typescript": "^5.9.2", - "typescript-eslint": "^8.45.0" + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", + "taze": "^19.7.0" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/music/prettier.config.js b/packages/music/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/music/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/music/src/music.library.ts b/packages/music/src/music.library.ts index a073bff..b92fe7f 100644 --- a/packages/music/src/music.library.ts +++ b/packages/music/src/music.library.ts @@ -1,5 +1,4 @@ -import { BaseMusicLibrary } from "@nanoforge/common"; -import { NfNotFound } from "@nanoforge/common/src/exception"; +import { BaseMusicLibrary, NfNotFound } from "@nanoforge/common"; export class MusicLibrary extends BaseMusicLibrary { private muted: boolean; diff --git a/packages/sound/.prettierrc b/packages/sound/.prettierrc deleted file mode 100644 index d5f635c..0000000 --- a/packages/sound/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderParserPlugins": ["typescript", "decorators-legacy"], - "importOrder": ["^~/(.*)$", "^[./]"], - "useTabs": false, - "singleQuote": false, - "trailingComma": "all", - "printWidth": 100 -} diff --git a/packages/sound/eslint.config.js b/packages/sound/eslint.config.js index 4a7529e..7ea4a2c 100644 --- a/packages/sound/eslint.config.js +++ b/packages/sound/eslint.config.js @@ -1,63 +1,3 @@ -import pluginJs from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import globals from "globals"; -import tseslint from "typescript-eslint"; -import pluginJest from "eslint-plugin-jest"; +import config from "@nanoforge/utils-eslint-config"; -export default [ - { - files: ["src/**/*.{ts}"], - }, - { languageOptions: { globals: globals.node } }, - - - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...tseslint.configs.strict, - eslintConfigPrettier, - { ignores: ["**/*.js"] }, - { - rules: { - "@typescript-eslint/consistent-type-imports": [ - "error", - { - disallowTypeAnnotations: true, - fixStyle: "inline-type-imports", - prefer: "type-imports", - }, - ], - "@typescript-eslint/no-extraneous-class": "off", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/member-ordering": [ - "error", - { - default: [ - "static-field", - "field", - "public-static-method", - "constructor", - "method", - "protected-method", - "private-method", - ], - }, - ], - }, - }, - { - files: ["**/*.spec.ts"], - plugins: { jest: pluginJest }, - languageOptions: { - globals: pluginJest.environments.globals.globals, - }, - rules: { - "jest/no-disabled-tests": "warn", - "jest/no-focused-tests": "error", - "jest/no-identical-title": "error", - "jest/prefer-to-have-length": "warn", - "jest/valid-expect": "error", - } - } -]; +export default config; diff --git a/packages/sound/package.json b/packages/sound/package.json index 5488e2c..12195c8 100644 --- a/packages/sound/package.json +++ b/packages/sound/package.json @@ -28,39 +28,19 @@ "clean:scripts": "find src -name '*.js' -delete", "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", - "taze": "taze major -w", - "lint-staged": "lint-staged" + "taze": "taze major -w" }, "dependencies": { "@nanoforge/common": "workspace:^" }, "devDependencies": { - "@commitlint/cli": "^20.0.0", - "@commitlint/config-conventional": "^20.0.0", - "@eslint/js": "^9.36.0", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "@types/node": "^22.18.7", - "eslint": "^9.36.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-format": "^1.0.2", - "eslint-plugin-jest": "^29.0.1", - "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", - "lint-staged": "^16.2.3", - "prettier": "^3.6.2", - "taze": "^19.7.0", - "typescript": "^5.9.2", - "typescript-eslint": "^8.45.0" + "@nanoforge/utils-eslint-config": "workspace:^", + "@nanoforge/utils-prettier-config": "workspace:^", + "taze": "^19.7.0" }, "engines": { "node": "23.6.0", "pnpm": "10.17.1" }, - "packageManager": "pnpm@10.17.1", - "lint-staged": { - "**/*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ] - } + "packageManager": "pnpm@10.17.1" } diff --git a/packages/sound/prettier.config.js b/packages/sound/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/packages/sound/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/tsconfig.json b/packages/tsconfig.json index 05cc17d..701383e 100644 --- a/packages/tsconfig.json +++ b/packages/tsconfig.json @@ -1,14 +1,32 @@ { "files": [], "references": [ + { + "path": "./asset-manager/tsconfig.build.json" + }, { "path": "./common/tsconfig.build.json" }, + { + "path": "./config/tsconfig.build.json" + }, { "path": "./core/tsconfig.build.json" }, { "path": "./ecs/tsconfig.build.json" + }, + { + "path": "./graphics-2d/tsconfig.build.json" + }, + { + "path": "./input/tsconfig.build.json" + }, + { + "path": "./music/tsconfig.build.json" + }, + { + "path": "./sound/tsconfig.build.json" } ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e1c4bf..cabd935 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,9 +18,12 @@ importers: '@commitlint/config-conventional': specifier: ^20.0.0 version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:utils/prettier-config '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.6.2) @@ -30,27 +33,12 @@ importers: eslint: specifier: ^9.36.0 version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 husky: specifier: ^9.1.7 version: 9.1.7 lerna: specifier: ^8.2.4 version: 8.2.4(@types/node@22.18.7)(encoding@0.1.13) - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 prettier: specifier: ^3.6.2 version: 3.6.2 @@ -60,9 +48,6 @@ importers: typescript: specifier: ^5.9.2 version: 5.9.2 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages/asset-manager: dependencies: @@ -70,51 +55,21 @@ importers: specifier: workspace:^ version: link:../common devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^5.2.2 - version: 5.2.2(prettier@3.6.2) + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config '@types/jest': specifier: ^30.0.0 version: 30.0.0 '@types/node': specifier: ^22.18.7 version: 22.18.7 - eslint: - specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-jest: - specifier: ^29.0.1 - version: 29.0.1(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(jest@30.2.0(@types/node@22.18.7))(typescript@5.9.2) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 jest: specifier: ^30.2.0 version: 30.2.0(@types/node@22.18.7) - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 - prettier: - specifier: ^3.6.2 - version: 3.6.2 taze: specifier: ^19.7.0 version: 19.7.0 @@ -124,51 +79,18 @@ importers: typescript: specifier: ^5.9.2 version: 5.9.2 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages/common: devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^5.2.2 - version: 5.2.2(prettier@3.6.2) - eslint: - specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 - prettier: - specifier: ^3.6.2 - version: 3.6.2 + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config taze: specifier: ^19.7.0 version: 19.7.0 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages/config: dependencies: @@ -179,45 +101,15 @@ importers: specifier: ^0.14.2 version: 0.14.2 devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^5.2.2 - version: 5.2.2(prettier@3.6.2) - eslint: - specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 - prettier: - specifier: ^3.6.2 - version: 3.6.2 + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config taze: specifier: ^19.7.0 version: 19.7.0 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages/core: dependencies: @@ -237,45 +129,15 @@ importers: specifier: ^0.14.2 version: 0.14.2 devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^5.2.2 - version: 5.2.2(prettier@3.6.2) - eslint: - specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 - prettier: - specifier: ^3.6.2 - version: 3.6.2 + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config taze: specifier: ^19.7.0 version: 19.7.0 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages/ecs: dependencies: @@ -283,51 +145,21 @@ importers: specifier: workspace:^ version: link:../common devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^5.2.2 - version: 5.2.2(prettier@3.6.2) + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config '@types/jest': specifier: ^30.0.0 version: 30.0.0 '@types/node': specifier: ^22.18.7 version: 22.18.7 - eslint: - specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-jest: - specifier: ^29.0.1 - version: 29.0.1(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(jest@30.2.0(@types/node@22.18.7))(typescript@5.9.2) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 jest: specifier: ^30.2.0 version: 30.2.0(@types/node@22.18.7) - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 - prettier: - specifier: ^3.6.2 - version: 3.6.2 taze: specifier: ^19.7.0 version: 19.7.0 @@ -337,9 +169,6 @@ importers: typescript: specifier: ^5.9.2 version: 5.9.2 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages/graphics-2d: dependencies: @@ -350,18 +179,12 @@ importers: specifier: workspace:^ version: link:../common devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^5.2.2 - version: 5.2.2(prettier@3.6.2) + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config '@types/jest': specifier: ^30.0.0 version: 30.0.0 @@ -371,33 +194,9 @@ importers: '@webgpu/types': specifier: ^0.1.65 version: 0.1.65 - eslint: - specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-jest: - specifier: ^29.0.1 - version: 29.0.1(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(jest@30.2.0(@types/node@22.18.7))(typescript@5.9.2) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 jest: specifier: ^30.2.0 version: 30.2.0(@types/node@22.18.7) - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 - prettier: - specifier: ^3.6.2 - version: 3.6.2 taze: specifier: ^19.7.0 version: 19.7.0 @@ -407,9 +206,6 @@ importers: typescript: specifier: ^5.9.2 version: 5.9.2 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages/input: dependencies: @@ -417,54 +213,15 @@ importers: specifier: workspace:^ version: link:../common devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^5.2.2 - version: 5.2.2(prettier@3.6.2) - '@types/node': - specifier: ^22.18.7 - version: 22.18.7 - eslint: - specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-jest: - specifier: ^29.0.1 - version: 29.0.1(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(jest@30.2.0(@types/node@22.18.7))(typescript@5.9.2) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 - prettier: - specifier: ^3.6.2 - version: 3.6.2 + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config taze: specifier: ^19.7.0 version: 19.7.0 - typescript: - specifier: ^5.9.2 - version: 5.9.2 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages/music: dependencies: @@ -472,21 +229,40 @@ importers: specifier: workspace:^ version: link:../common devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config + taze: + specifier: ^19.7.0 + version: 19.7.0 + + packages/sound: + dependencies: + '@nanoforge/common': + specifier: workspace:^ + version: link:../common + devDependencies: + '@nanoforge/utils-eslint-config': + specifier: workspace:^ + version: link:../../utils/eslint-config + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../../utils/prettier-config + taze: + specifier: ^19.7.0 + version: 19.7.0 + + utils/eslint-config: + devDependencies: '@eslint/js': specifier: ^9.36.0 version: 9.36.0 - '@trivago/prettier-plugin-sort-imports': - specifier: ^5.2.2 - version: 5.2.2(prettier@3.6.2) - '@types/node': - specifier: ^22.18.7 - version: 22.18.7 + '@nanoforge/utils-prettier-config': + specifier: workspace:^ + version: link:../prettier-config eslint: specifier: ^9.36.0 version: 9.36.0(jiti@2.6.0) @@ -505,61 +281,18 @@ importers: globals: specifier: ^16.4.0 version: 16.4.0 - lint-staged: - specifier: ^16.2.3 - version: 16.2.3 - prettier: - specifier: ^3.6.2 - version: 3.6.2 taze: specifier: ^19.7.0 version: 19.7.0 - typescript: - specifier: ^5.9.2 - version: 5.9.2 typescript-eslint: specifier: ^8.45.0 version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - packages/sound: - dependencies: - '@nanoforge/common': - specifier: workspace:^ - version: link:../common + utils/prettier-config: devDependencies: - '@commitlint/cli': - specifier: ^20.0.0 - version: 20.0.0(@types/node@22.18.7)(typescript@5.9.2) - '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 - '@eslint/js': - specifier: ^9.36.0 - version: 9.36.0 '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.6.2) - '@types/node': - specifier: ^22.18.7 - version: 22.18.7 - eslint: - specifier: ^9.36.0 - version: 9.36.0(jiti@2.6.0) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-format: - specifier: ^1.0.2 - version: 1.0.2(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-jest: - specifier: ^29.0.1 - version: 29.0.1(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(jest@30.2.0(@types/node@22.18.7))(typescript@5.9.2) - eslint-plugin-prettier: - specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) - globals: - specifier: ^16.4.0 - version: 16.4.0 lint-staged: specifier: ^16.2.3 version: 16.2.3 @@ -569,12 +302,6 @@ importers: taze: specifier: ^19.7.0 version: 19.7.0 - typescript: - specifier: ^5.9.2 - version: 5.9.2 - typescript-eslint: - specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) packages: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b2f187c..d690842 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,3 @@ packages: - - packages/* \ No newline at end of file + - packages/* + - utils/* \ No newline at end of file diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/packages/common/.prettierignore b/utils/eslint-config/.prettierignore similarity index 87% rename from packages/common/.prettierignore rename to utils/eslint-config/.prettierignore index e814a63..e77da01 100644 --- a/packages/common/.prettierignore +++ b/utils/eslint-config/.prettierignore @@ -3,6 +3,3 @@ pnpm-lock.yaml package-lock.json yarn.lock bun.lock - -*.js -*.d.ts diff --git a/utils/eslint-config/README.md b/utils/eslint-config/README.md new file mode 100644 index 0000000..c26f3e9 --- /dev/null +++ b/utils/eslint-config/README.md @@ -0,0 +1 @@ +# Utils Eslint Config diff --git a/utils/eslint-config/index.js b/utils/eslint-config/index.js new file mode 100644 index 0000000..98f8398 --- /dev/null +++ b/utils/eslint-config/index.js @@ -0,0 +1,62 @@ +import pluginJs from "@eslint/js"; +import eslintConfigPrettier from "eslint-config-prettier"; +import pluginJest from "eslint-plugin-jest"; +import globals from "globals"; +import tseslint from "typescript-eslint"; + +const eslintConfig = [ + { files: ["src/**/*.{ts}"] }, + { languageOptions: { globals: globals.node } }, + + pluginJs.configs.recommended, + ...tseslint.configs.recommended, + ...tseslint.configs.strict, + eslintConfigPrettier, + { ignores: ["**/*.js", "**/*.d.ts"] }, + { + rules: { + "@typescript-eslint/consistent-type-imports": [ + "error", + { + disallowTypeAnnotations: true, + fixStyle: "inline-type-imports", + prefer: "type-imports", + }, + ], + "@typescript-eslint/no-extraneous-class": "off", + "@typescript-eslint/no-empty-object-type": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/member-ordering": [ + "error", + { + default: [ + "static-field", + "field", + "public-static-method", + "constructor", + "method", + "protected-method", + "private-method", + ], + }, + ], + }, + }, + { + files: ["**/*.spec.ts"], + plugins: { jest: pluginJest }, + languageOptions: { + globals: pluginJest.environments.globals.globals, + }, + rules: { + "jest/no-disabled-tests": "warn", + "jest/no-focused-tests": "error", + "jest/no-identical-title": "error", + "jest/prefer-to-have-length": "warn", + "jest/valid-expect": "error", + }, + }, +]; + +export default eslintConfig; diff --git a/utils/eslint-config/package.json b/utils/eslint-config/package.json new file mode 100644 index 0000000..36eff7f --- /dev/null +++ b/utils/eslint-config/package.json @@ -0,0 +1,46 @@ +{ + "name": "@nanoforge/utils-eslint-config", + "version": "1.0.0", + "description": "NanoForge Engine - Utils EsLint Config", + "homepage": "https://github.com/NanoForge-dev/Engine#readme", + "license": "MIT", + "contributors": [ + "Bill", + "Exelo", + "Fexkoser", + "Tchips" + ], + "funding": { + "type": "individual", + "url": "" + }, + "type": "module", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/NanoForge-dev/Engine.git", + "directory": "utils/eslint-config" + }, + "scripts": { + "lint": "prettier --check .", + "fix": "prettier --write .", + "taze": "taze major -w" + }, + "devDependencies": { + "@eslint/js": "^9.36.0", + "@nanoforge/utils-prettier-config": "workspace:^", + "eslint": "^9.36.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-format": "^1.0.2", + "eslint-plugin-jest": "^29.0.1", + "eslint-plugin-prettier": "^5.5.4", + "globals": "^16.4.0", + "taze": "^19.7.0", + "typescript-eslint": "^8.45.0" + }, + "engines": { + "node": "23.6.0", + "pnpm": "10.17.1" + }, + "packageManager": "pnpm@10.17.1" +} diff --git a/utils/eslint-config/prettier.config.js b/utils/eslint-config/prettier.config.js new file mode 100644 index 0000000..ebf5166 --- /dev/null +++ b/utils/eslint-config/prettier.config.js @@ -0,0 +1,3 @@ +import config from "@nanoforge/utils-prettier-config"; + +export default config; diff --git a/utils/prettier-config/README.md b/utils/prettier-config/README.md new file mode 100644 index 0000000..e926fdd --- /dev/null +++ b/utils/prettier-config/README.md @@ -0,0 +1 @@ +# Utils Prettier Config diff --git a/utils/prettier-config/index.js b/utils/prettier-config/index.js new file mode 100644 index 0000000..1e21be6 --- /dev/null +++ b/utils/prettier-config/index.js @@ -0,0 +1,13 @@ +const prettierConfig = { + plugins: ["@trivago/prettier-plugin-sort-imports"], + importOrderSeparation: true, + importOrderSortSpecifiers: true, + importOrderParserPlugins: ["typescript", "decorators-legacy"], + importOrder: ["^~/(.*)$", "^[./]"], + useTabs: false, + singleQuote: false, + trailingComma: "all", + printWidth: 100, +}; + +export default prettierConfig; diff --git a/utils/prettier-config/package.json b/utils/prettier-config/package.json new file mode 100644 index 0000000..a68ea60 --- /dev/null +++ b/utils/prettier-config/package.json @@ -0,0 +1,40 @@ +{ + "name": "@nanoforge/utils-prettier-config", + "version": "1.0.0", + "description": "NanoForge Engine - Utils Prettier Config", + "homepage": "https://github.com/NanoForge-dev/Engine#readme", + "license": "MIT", + "contributors": [ + "Bill", + "Exelo", + "Fexkoser", + "Tchips" + ], + "funding": { + "type": "individual", + "url": "" + }, + "type": "module", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/NanoForge-dev/Engine.git", + "directory": "utils/prettier-config" + }, + "scripts": { + "lint": "prettier --check .", + "fix": "prettier --write .", + "taze": "taze major -w" + }, + "devDependencies": { + "@trivago/prettier-plugin-sort-imports": "^5.2.2", + "lint-staged": "^16.2.3", + "prettier": "^3.6.2", + "taze": "^19.7.0" + }, + "engines": { + "node": "23.6.0", + "pnpm": "10.17.1" + }, + "packageManager": "pnpm@10.17.1" +} diff --git a/utils/prettier-config/prettier.config.js b/utils/prettier-config/prettier.config.js new file mode 100644 index 0000000..07d0274 --- /dev/null +++ b/utils/prettier-config/prettier.config.js @@ -0,0 +1,3 @@ +import config from "./index.js"; + +export default config;