diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ede37dc..9ca2931 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,6 +28,7 @@ jobs: - run: npm ci - run: npm test -- --coverage - run: tsc + - run: npx eslint . - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 @@ -39,5 +40,6 @@ jobs: # uses: FuLagann/tsc-build-push@v1 # Publish NPM package - uses: JS-DevTools/npm-publish@v1 + if: !contains(github.event.head_commit.message, 'skippublish') with: token: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml index 5a78f51..e9668f1 100644 --- a/.github/workflows/pullrequest.yml +++ b/.github/workflows/pullrequest.yml @@ -29,13 +29,14 @@ jobs: - run: npm ci - run: npm test - run: tsc + - run: npx eslint . - name: Automated Version Bump uses: phips28/gh-action-bump-version@v11.0.7 env: GITHUB_TOKEN: ${{ secrets.PACKAGEBUMP_TOKEN }} with: - minor-wording: 'MINOR' + minor-wording: 'bumpversion,minor,update' major-wording: 'MAJOR' patch-wording: 'patch,fixes,add,Adds,new' diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..dad8ab8 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,37 @@ +// @ts-check + +import tseslint from 'typescript-eslint'; +import tsParser from '@typescript-eslint/parser'; +import prettierPlugin from 'eslint-plugin-prettier'; + +export default tseslint.config( + tseslint.configs.recommended, + { + files: ['src/**/*.ts'], + languageOptions: { + parser: tsParser, + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: './tsconfig.json', + }, + }, + plugins: { + prettier: prettierPlugin, + }, + rules: { + 'prettier/prettier': [ + 'error', + { + singleQuote: true, + trailingComma: 'es5', + bracketSpacing: true, + tabWidth: 2, + useTabs: false, + endOfLine: 'lf', + }, + ], + '@typescript-eslint/no-explicit-any': 'error', + }, + } +); \ No newline at end of file diff --git a/jest.config.js b/jest.config.js index c35620a..48312ab 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,4 +3,7 @@ module.exports = { testEnvironment: "node", collectCoverage: true, coverageDirectory: "coverage", + testMatch: [ + "**/?(*tests).ts" + ], }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8bccd2d..d7259b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,23 +1,28 @@ { "name": "easy-code-formatter-styles", - "version": "1.2.13", + "version": "1.2.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "easy-code-formatter-styles", - "version": "1.2.13", + "version": "1.2.14", "license": "ISC", "devDependencies": { "@types/jest": "^29.5.2", "@types/node": "^22.13.0", "@types/shelljs": "^0.8.12", - "eslint": "^8.57.0", + "@typescript-eslint/eslint-plugin": "^8.33.1", + "@typescript-eslint/parser": "^8.33.1", + "eslint": "^8.57.1", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-prettier": "^5.4.1", "jest": "^29.5.0", "pre-commit": "^1.2.2", "shelljs": "^0.8.5", "ts-jest": "^29.1.0", - "typescript": "^5.1.3" + "typescript": "^5.1.3", + "typescript-eslint": "^8.33.1" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -674,16 +679,20 @@ "dev": true }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } @@ -766,21 +775,24 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -802,10 +814,12 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -1199,6 +1213,19 @@ "node": ">= 8" } }, + "node_modules/@pkgr/core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@sinclair/typebox": { "version": "0.25.24", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", @@ -1370,6 +1397,289 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz", + "integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/type-utils": "8.33.1", + "@typescript-eslint/utils": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.33.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz", + "integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/typescript-estree": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", + "integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.33.1", + "@typescript-eslint/types": "^8.33.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz", + "integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", + "integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz", + "integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.33.1", + "@typescript-eslint/utils": "8.33.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", + "integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", + "integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.33.1", + "@typescript-eslint/tsconfig-utils": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/typescript-estree": "8.33.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", + "integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.33.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -1951,16 +2261,18 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -2005,6 +2317,53 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-prettier": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.1.tgz", + "integrity": "sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -2262,6 +2621,43 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -3528,13 +3924,24 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -3891,6 +4298,36 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/pretty-format": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", @@ -4348,6 +4785,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -4395,6 +4848,19 @@ "node": ">=8.0" } }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/ts-jest": { "version": "29.1.0", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", @@ -4523,6 +4989,29 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.1.tgz", + "integrity": "sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.33.1", + "@typescript-eslint/parser": "8.33.1", + "@typescript-eslint/utils": "8.33.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -5208,12 +5697,12 @@ "dev": true }, "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "requires": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" } }, "@eslint-community/regexpp": { @@ -5272,18 +5761,18 @@ } }, "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" } @@ -5295,9 +5784,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -5612,6 +6101,12 @@ "fastq": "^1.6.0" } }, + "@pkgr/core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "dev": true + }, "@sinclair/typebox": { "version": "0.25.24", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", @@ -5782,6 +6277,164 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz", + "integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/type-utils": "8.33.1", + "@typescript-eslint/utils": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "dependencies": { + "ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true + } + } + }, + "@typescript-eslint/parser": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz", + "integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/typescript-estree": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/project-service": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", + "integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", + "dev": true, + "requires": { + "@typescript-eslint/tsconfig-utils": "^8.33.1", + "@typescript-eslint/types": "^8.33.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz", + "integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1" + } + }, + "@typescript-eslint/tsconfig-utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", + "integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", + "dev": true, + "requires": {} + }, + "@typescript-eslint/type-utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz", + "integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "8.33.1", + "@typescript-eslint/utils": "8.33.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + } + }, + "@typescript-eslint/types": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", + "integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", + "integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", + "dev": true, + "requires": { + "@typescript-eslint/project-service": "8.33.1", + "@typescript-eslint/tsconfig-utils": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true + } + } + }, + "@typescript-eslint/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/typescript-estree": "8.33.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", + "integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.33.1", + "eslint-visitor-keys": "^4.2.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + } + } + }, "@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -6200,16 +6853,16 @@ "dev": true }, "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -6311,6 +6964,23 @@ } } }, + "eslint-config-prettier": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "dev": true, + "requires": {} + }, + "eslint-plugin-prettier": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.1.tgz", + "integrity": "sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + } + }, "eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -6416,6 +7086,36 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -7391,13 +8091,19 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -7670,6 +8376,22 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "peer": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "pretty-format": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", @@ -7990,6 +8712,15 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "synckit": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "dev": true, + "requires": { + "@pkgr/core": "^0.2.4" + } + }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -8028,6 +8759,13 @@ "is-number": "^7.0.0" } }, + "ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "requires": {} + }, "ts-jest": { "version": "29.1.0", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", @@ -8103,6 +8841,17 @@ "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "dev": true }, + "typescript-eslint": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.1.tgz", + "integrity": "sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.33.1", + "@typescript-eslint/parser": "8.33.1", + "@typescript-eslint/utils": "8.33.1" + } + }, "undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", diff --git a/package.json b/package.json index ae8b9be..1abbfdd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "easy-code-formatter-styles", - "version": "1.2.13", + "version": "1.2.14", "description": "a package which contains the styling details for easy code formatter office app.", "main": "dist/index.js", "repository": { @@ -28,13 +28,18 @@ "homepage": "https://github.com/armhil/easy-code-formatter-styles#readme", "devDependencies": { "@types/jest": "^29.5.2", + "@types/node": "^22.13.0", "@types/shelljs": "^0.8.12", - "eslint": "^8.57.0", + "@typescript-eslint/eslint-plugin": "^8.33.1", + "@typescript-eslint/parser": "^8.33.1", + "eslint": "^8.57.1", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-prettier": "^5.4.1", "jest": "^29.5.0", "pre-commit": "^1.2.2", "shelljs": "^0.8.5", "ts-jest": "^29.1.0", "typescript": "^5.1.3", - "@types/node": "^22.13.0" + "typescript-eslint": "^8.33.1" } } diff --git a/src/__tests__/package-json-tests.ts b/src/__tests__/package-json-tests.ts deleted file mode 100644 index 44891bd..0000000 --- a/src/__tests__/package-json-tests.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as shell from 'shelljs'; -import * as packageJson from '../../package.json'; -const publishedVersions = JSON.parse(shell.exec('npm show easy-code-formatter-styles time --json')); -const currentVersion = packageJson.version; -const gitStatus = shell.exec('git status --porcelain'); - -describe('package.json tests', () => { - it(`should make sure same version isn't committed`, () => { - if (gitStatus.stdout.length > 0) { - expect(Object.keys(publishedVersions)).not.toContain(currentVersion); - } - }); -}); \ No newline at end of file diff --git a/src/fonts/index.ts b/src/fonts/index.ts index 0ed20cd..dd02e4d 100644 --- a/src/fonts/index.ts +++ b/src/fonts/index.ts @@ -11,5 +11,5 @@ export const Fonts = [ 'Geneva', 'Calibri', 'Cascadia', - 'Intel' -]; \ No newline at end of file + 'Intel', +]; diff --git a/src/index.ts b/src/index.ts index 5a01bc0..1831e23 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,15 @@ -import { Themes, GetGenericStyle, GetLineNumberStyle, GetBackgroundStyle } from './themes'; +import { + Themes, + GetGenericStyle, + GetLineNumberStyle, + GetBackgroundStyle, +} from './themes'; import { Fonts } from './fonts'; -export { Themes, GetGenericStyle, GetLineNumberStyle, GetBackgroundStyle, Fonts }; +export { + Themes, + GetGenericStyle, + GetLineNumberStyle, + GetBackgroundStyle, + Fonts, +}; diff --git a/src/themes/A11YDark.ts b/src/themes/A11YDark.ts index 3619324..763a5a4 100644 --- a/src/themes/A11YDark.ts +++ b/src/themes/A11YDark.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const A11YDark: ITheme = { /** Display name */ @@ -9,48 +9,48 @@ export const A11YDark: ITheme = { Color: 'dcc6e0', }, Comment: { - Color: 'd4d0ab' + Color: 'd4d0ab', }, Plaintext: { Color: 'fff', }, Punctuation: { - Color: 'fff' + Color: 'fff', }, String: { - Color: 'abe338' + Color: 'abe338', }, Literal: { - Color: 'f5ab35' + Color: 'f5ab35', }, Type: { - Color: '00e0e0' + Color: '00e0e0', }, Tag: { - Color: '00e0e0' + Color: '00e0e0', }, AttributeName: { Color: 'ffd700', - FontWeight: 'bold' + FontWeight: 'bold', }, AttributeValue: { - Color: 'abe338' + Color: 'abe338', }, Decimal: { Color: 'f5ab35', }, NoCode: { Color: '000', - BackgroundColor: 'none' - } + BackgroundColor: 'none', + }, }, // Background color BackgroundStyle: { - BackgroundColor: '2b2b2b' + BackgroundColor: '2b2b2b', }, // Line number background colors LineNumberStyle: { Color: 'fff', - Background: 'none' - } -} \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/A11YLight.ts b/src/themes/A11YLight.ts index ed9fabe..822bdae 100644 --- a/src/themes/A11YLight.ts +++ b/src/themes/A11YLight.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const A11YLight: ITheme = { /** Display name */ @@ -6,51 +6,51 @@ export const A11YLight: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: '7928a1' + Color: '7928a1', }, Comment: { - Color: '696969' + Color: '696969', }, Plaintext: { - Color: '545454' + Color: '545454', }, Punctuation: { - Color: '545454' + Color: '545454', }, String: { - Color: '008000' + Color: '008000', }, Literal: { - Color: 'aa5d00' + Color: 'aa5d00', }, Type: { - Color: '007faa' + Color: '007faa', }, Tag: { - Color: '007faa' + Color: '007faa', }, AttributeName: { Color: 'aa5d00', - FontWeight: 'bold' + FontWeight: 'bold', }, AttributeValue: { - Color: '008000' + Color: '008000', }, Decimal: { - Color: 'aa5d00' + Color: 'aa5d00', }, NoCode: { Color: '000', - BackgroundColor: 'none' - } + BackgroundColor: 'none', + }, }, // Background color BackgroundStyle: { - BackgroundColor: 'fefefe' + BackgroundColor: 'fefefe', }, // Line number background colors LineNumberStyle: { Color: '000', - Background: 'none' - } -} \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/AtelierCaveDark.ts b/src/themes/AtelierCaveDark.ts index 3c29a0e..ae818c4 100644 --- a/src/themes/AtelierCaveDark.ts +++ b/src/themes/AtelierCaveDark.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const AtelierCaveDark: ITheme = { /** Display name */ @@ -6,51 +6,51 @@ export const AtelierCaveDark: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: '955ae7' + Color: '955ae7', }, Comment: { - Color: '7e7887' + Color: '7e7887', }, Plaintext: { - Color: '333333' + Color: '333333', }, Punctuation: { - Color: '333333' + Color: '333333', }, String: { - Color: '2a9292' + Color: '2a9292', }, Literal: { - Color: 'c07156' + Color: 'c07156', }, Type: { - Color: 'aa573c' + Color: 'aa573c', }, Tag: { - Color: 'be4678' + Color: 'be4678', }, AttributeName: { Color: '759731', - FontWeight: 'bold' + FontWeight: 'bold', }, AttributeValue: { - Color: 'be4678' + Color: 'be4678', }, Decimal: { - Color: 'aa573c' + Color: 'aa573c', }, NoCode: { Color: '576ddb', - BackgroundColor: 'none' - } + BackgroundColor: 'none', + }, }, // Background color BackgroundStyle: { - BackgroundColor: '19171c' + BackgroundColor: '19171c', }, // Line number background colors LineNumberStyle: { Color: 'aeb0b3', - Background: 'none' - } -} \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/AtelierCaveLight.ts b/src/themes/AtelierCaveLight.ts index ae8b27a..a67dcb8 100644 --- a/src/themes/AtelierCaveLight.ts +++ b/src/themes/AtelierCaveLight.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const AtelierCaveLight: ITheme = { /** Display name */ @@ -6,51 +6,51 @@ export const AtelierCaveLight: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: '955ae7' + Color: '955ae7', }, Comment: { - Color: '7e7887' + Color: '7e7887', }, Plaintext: { - Color: 'aa573c' + Color: 'aa573c', }, Punctuation: { - Color: '8b8792' + Color: '8b8792', }, String: { - Color: '2a9292' + Color: '2a9292', }, Literal: { - Color: 'c07156' + Color: 'c07156', }, Type: { - Color: '576ddb' + Color: '576ddb', }, Tag: { - Color: 'be4678' + Color: 'be4678', }, AttributeName: { Color: '759731', - FontWeight: 'bold' + FontWeight: 'bold', }, AttributeValue: { - Color: 'be4678' + Color: 'be4678', }, Decimal: { - Color: 'aa573c' + Color: 'aa573c', }, NoCode: { Color: '576ddb', - BackgroundColor: 'none' - } + BackgroundColor: 'none', + }, }, // Background color BackgroundStyle: { - BackgroundColor: 'efecf4' + BackgroundColor: 'efecf4', }, // Line number background colors LineNumberStyle: { Color: 'aeb0b3', - Background: 'none' - } -} \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/BlueHintGray.ts b/src/themes/BlueHintGray.ts index a449845..55d91f3 100644 --- a/src/themes/BlueHintGray.ts +++ b/src/themes/BlueHintGray.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const BlueHintGray: ITheme = { /** Display name */ @@ -6,36 +6,36 @@ export const BlueHintGray: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: '0000ff' + Color: '0000ff', }, Comment: { - Color: '008000' + Color: '008000', }, Plaintext: { - Color: '000' + Color: '000', }, Punctuation: { - Color: '000' + Color: '000', }, String: { - Color: 'a31515' + Color: 'a31515', }, Literal: { - Color: '066' + Color: '066', }, Type: { - Color: '2b91af' + Color: '2b91af', }, Tag: { - Color: '2b91af' + Color: '2b91af', }, }, // Background color BackgroundStyle: { - BackgroundColor: 'eaeaea' + BackgroundColor: 'eaeaea', }, // Line number background colors LineNumberStyle: { - Background: 'none' - } -} \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/CSharpDark.ts b/src/themes/CSharpDark.ts index 2f57e33..f890b42 100644 --- a/src/themes/CSharpDark.ts +++ b/src/themes/CSharpDark.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const CSharpDark: ITheme = { /** Display name */ @@ -6,49 +6,49 @@ export const CSharpDark: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: '569cd6' + Color: '569cd6', }, Comment: { - Color: '56a64a' + Color: '56a64a', }, Plaintext: { - Color: 'dedede' + Color: 'dedede', }, Punctuation: { - Color: 'dedede' + Color: 'dedede', }, String: { - Color: 'dadada' + Color: 'dadada', }, Literal: { - Color: 'dadada' + Color: 'dadada', }, Type: { - Color: '4ec9b0' + Color: '4ec9b0', }, Tag: { - Color: 'd7bb7d' + Color: 'd7bb7d', }, AttributeName: { - Color: '4ec9b0' + Color: '4ec9b0', }, AttributeValue: { - Color: '569cd6' + Color: '569cd6', }, Decimal: { - Color: 'b5cea8' + Color: 'b5cea8', }, NoCode: { Color: '000', - BackgroundColor: 'none' - } + BackgroundColor: 'none', + }, }, // Background color BackgroundStyle: { - BackgroundColor: '1e1e1e' + BackgroundColor: '1e1e1e', }, // Line number background colors LineNumberStyle: { - Color: 'e0e0e0' - } -} \ No newline at end of file + Color: 'e0e0e0', + }, +}; diff --git a/src/themes/ChatGPTDark.ts b/src/themes/ChatGPTDark.ts index 7c421d8..b7a6519 100644 --- a/src/themes/ChatGPTDark.ts +++ b/src/themes/ChatGPTDark.ts @@ -1,59 +1,59 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; /** Added White text due to dark background */ export const ChatGPTDark: ITheme = { - /** Display name */ - DisplayName: 'ChatGPT Dark', - /** Code styles */ - CodeStyles: { - Keyword: { - Color: '66ccff', // Light blue for keywords - FontWeight: 'bold' - }, - Comment: { - Color: '888888', // Medium gray for comments - FontStyle: 'italic' - }, - Plaintext: { - Color: 'ffffff' // White for plain text - }, - Punctuation: { - Color: 'ffffff' // White for punctuation - }, - String: { - Color: '99cc99' // Soft green for strings - }, - Literal: { - Color: 'ff99cc' // Light pink for numbers, true, false - }, - Type: { - Color: 'cc99ff' // Light purple for types - }, - Tag: { - Color: 'ff6666' // Light red for tags like
- }, - AttributeName: { - Color: '99ff99', // Bright green for attribute names - FontWeight: 'bold' - }, - AttributeValue: { - Color: '66ccff' // Light blue for attribute values - }, - Decimal: { - Color: 'ff99cc' // Same as Literal - }, - NoCode: { - Color: 'ffffff', - BackgroundColor: 'none' - } - }, - // Background color - BackgroundStyle: { - BackgroundColor: '2d2e41' // Dark background (near black) - }, - // Line number background colors - LineNumberStyle: { - Color: '777777', - Background: 'none' - } -}; \ No newline at end of file + /** Display name */ + DisplayName: 'ChatGPT Dark', + /** Code styles */ + CodeStyles: { + Keyword: { + Color: '66ccff', // Light blue for keywords + FontWeight: 'bold', + }, + Comment: { + Color: '888888', // Medium gray for comments + FontStyle: 'italic', + }, + Plaintext: { + Color: 'ffffff', // White for plain text + }, + Punctuation: { + Color: 'ffffff', // White for punctuation + }, + String: { + Color: '99cc99', // Soft green for strings + }, + Literal: { + Color: 'ff99cc', // Light pink for numbers, true, false + }, + Type: { + Color: 'cc99ff', // Light purple for types + }, + Tag: { + Color: 'ff6666', // Light red for tags like
+ }, + AttributeName: { + Color: '99ff99', // Bright green for attribute names + FontWeight: 'bold', + }, + AttributeValue: { + Color: '66ccff', // Light blue for attribute values + }, + Decimal: { + Color: 'ff99cc', // Same as Literal + }, + NoCode: { + Color: 'ffffff', + BackgroundColor: 'none', + }, + }, + // Background color + BackgroundStyle: { + BackgroundColor: '2d2e41', // Dark background (near black) + }, + // Line number background colors + LineNumberStyle: { + Color: '777777', + Background: 'none', + }, +}; diff --git a/src/themes/Default.ts b/src/themes/Default.ts index ec11244..4f1fa7d 100644 --- a/src/themes/Default.ts +++ b/src/themes/Default.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const Default: ITheme = { /** Display name */ @@ -6,31 +6,31 @@ export const Default: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: '008' + Color: '008', }, Comment: { - Color: '800' + Color: '800', }, Plaintext: { - Color: '000' + Color: '000', }, Punctuation: { - Color: '660' + Color: '660', }, String: { - Color: '080' + Color: '080', }, Literal: { - Color: '066' + Color: '066', }, Type: { - Color: '606' - } + Color: '606', + }, }, // Background color BackgroundStyle: {}, // Line number background colors LineNumberStyle: { - Background: 'none' - } -}; \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/DefaultGray.ts b/src/themes/DefaultGray.ts index 7658d9f..62b4c5e 100644 --- a/src/themes/DefaultGray.ts +++ b/src/themes/DefaultGray.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const DefaultGray: ITheme = { /** Display name */ @@ -6,33 +6,33 @@ export const DefaultGray: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: '008' + Color: '008', }, Comment: { - Color: '800' + Color: '800', }, Plaintext: { - Color: '000' + Color: '000', }, Punctuation: { - Color: '660' + Color: '660', }, String: { - Color: '080' + Color: '080', }, Literal: { - Color: '066' + Color: '066', }, Type: { - Color: '606' - } + Color: '606', + }, }, // Background color BackgroundStyle: { - BackgroundColor: 'ececec' + BackgroundColor: 'ececec', }, // Line number background colors LineNumberStyle: { - Background: 'none' - } -}; \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/Desert.ts b/src/themes/Desert.ts index 64a169b..4b15400 100644 --- a/src/themes/Desert.ts +++ b/src/themes/Desert.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const Desert: ITheme = { /** Display name */ @@ -6,51 +6,51 @@ export const Desert: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: 'f0e68c' + Color: 'f0e68c', }, Comment: { - Color: '87ceeb' + Color: '87ceeb', }, Plaintext: { - Color: 'fff' + Color: 'fff', }, Punctuation: { - Color: 'fff' + Color: 'fff', }, String: { - Color: 'ffa0a0' + Color: 'ffa0a0', }, Literal: { - Color: 'cd5c5c' + Color: 'cd5c5c', }, Type: { - Color: '98fb98' + Color: '98fb98', }, Tag: { - Color: 'f0e68c' + Color: 'f0e68c', }, AttributeName: { Color: 'bdb76b', - FontWeight: 'bold' + FontWeight: 'bold', }, AttributeValue: { - Color: 'ffa0a0' + Color: 'ffa0a0', }, Decimal: { - Color: '98fb98' + Color: '98fb98', }, NoCode: { Color: '000', - BackgroundColor: 'none' - } + BackgroundColor: 'none', + }, }, // Background color BackgroundStyle: { - BackgroundColor: '333' + BackgroundColor: '333', }, // Line number background colors LineNumberStyle: { Color: 'fff', - Background: 'none' - } -} \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/ITheme.ts b/src/themes/ITheme.ts index fdd3b14..81a63f3 100644 --- a/src/themes/ITheme.ts +++ b/src/themes/ITheme.ts @@ -1,57 +1,57 @@ /** * ITheme.ts - * + * * an interface defining the styling. */ export interface IStyle { - [key: string]: string, + [key: string]: string; /** Color */ - Color?: string, + Color?: string; /** Background color */ - BackgroundColor?: string, + BackgroundColor?: string; /** Font weight */ - FontWeight?: string, + FontWeight?: string; /** Font style */ - FontStyle?: string + FontStyle?: string; } export interface ICodeStyle { - [key: string]: IStyle, + [key: string]: IStyle; /** Keyword styles in code */ - Keyword: IStyle, + Keyword: IStyle; /** Comment styles in code */ - Comment: IStyle, + Comment: IStyle; /** Plaintext styles in code */ - Plaintext: IStyle, + Plaintext: IStyle; /** Punctuation styles in code */ - Punctuation: IStyle, + Punctuation: IStyle; /** String styles in code */ - String: IStyle, + String: IStyle; /** Literal styles in code */ - Literal: IStyle, + Literal: IStyle; /** Type styles in code */ - Type: IStyle, + Type: IStyle; /** Tag styles in code */ - Tag?: IStyle, + Tag?: IStyle; /** Attribute name styles in code */ - AttributeName?: IStyle, + AttributeName?: IStyle; /** Attribute value styles in code */ - AttributeValue?: IStyle, + AttributeValue?: IStyle; /** Decimal styles in code */ - Decimal?: IStyle, + Decimal?: IStyle; /** No code styles in code */ - NoCode?: IStyle + NoCode?: IStyle; } export interface ITheme { - [key: string]: ICodeStyle | IStyle | string, + [key: string]: ICodeStyle | IStyle | string; /** Display name */ - DisplayName: string, + DisplayName: string; /** Code styles */ - CodeStyles: ICodeStyle, + CodeStyles: ICodeStyle; /** Background styles */ - BackgroundStyle: IStyle, + BackgroundStyle: IStyle; /** Line number styles */ - LineNumberStyle: IStyle -} \ No newline at end of file + LineNumberStyle: IStyle; +} diff --git a/src/themes/Sunburst.ts b/src/themes/Sunburst.ts index eeebc2b..5cfb048 100644 --- a/src/themes/Sunburst.ts +++ b/src/themes/Sunburst.ts @@ -1,4 +1,4 @@ -import { ITheme } from "./ITheme"; +import { ITheme } from './ITheme'; export const Sunburst: ITheme = { /** Display name */ @@ -6,51 +6,51 @@ export const Sunburst: ITheme = { /** Code styles */ CodeStyles: { Keyword: { - Color: 'e28964' + Color: 'e28964', }, Comment: { Color: 'aeaeae', - FontStyle: 'italic' + FontStyle: 'italic', }, Plaintext: { - Color: 'fff' + Color: 'fff', }, Punctuation: { - Color: 'fff' + Color: 'fff', }, String: { - Color: '65b042' + Color: '65b042', }, Literal: { - Color: 'cd5c5c' + Color: 'cd5c5c', }, Type: { - Color: '89bdff' + Color: '89bdff', }, Tag: { - Color: '89bdff' + Color: '89bdff', }, AttributeName: { - Color: 'bdb76b' + Color: 'bdb76b', }, AttributeValue: { - Color: '65b042' + Color: '65b042', }, Decimal: { - Color: '3387cc' + Color: '3387cc', }, NoCode: { Color: '000', - BackgroundColor: 'none' - } + BackgroundColor: 'none', + }, }, // Background color BackgroundStyle: { - BackgroundColor: '000' + BackgroundColor: '000', }, // Line number background colors LineNumberStyle: { Color: 'fff', - Background: 'none' - } -} \ No newline at end of file + Background: 'none', + }, +}; diff --git a/src/themes/ThonnyDefaultLight.ts b/src/themes/ThonnyDefaultLight.ts index 29d90e3..5fef837 100644 --- a/src/themes/ThonnyDefaultLight.ts +++ b/src/themes/ThonnyDefaultLight.ts @@ -1,35 +1,35 @@ -import { ITheme } from "./ITheme"; - -// Matches the thonny theme defined here: -// https://github.com/thonny/thonny/blob/4fffa98e5c47e58ce72190c004f2ebc00879e4cd/thonny/plugins/base_syntax_themes.py#L5 -export const ThonnyDefaultLight: ITheme = { - DisplayName: 'Thonny Default Light', - CodeStyles: { - Keyword: { - Color: '7f0055', - FontWeight: 'bold' - }, - Comment: { - Color: 'a9a9a9' - }, - Plaintext: { - Color: '000000' - }, - Punctuation: { - Color: '000000' - }, - String: { - Color: '006400' - }, - Literal: { - Color: 'b04600' - }, - Type: { - Color: '7f0055' - } - }, - BackgroundStyle: {}, - LineNumberStyle: { - Background: 'none' - } -}; +import { ITheme } from './ITheme'; + +// Matches the thonny theme defined here: +// https://github.com/thonny/thonny/blob/4fffa98e5c47e58ce72190c004f2ebc00879e4cd/thonny/plugins/base_syntax_themes.py#L5 +export const ThonnyDefaultLight: ITheme = { + DisplayName: 'Thonny Default Light', + CodeStyles: { + Keyword: { + Color: '7f0055', + FontWeight: 'bold', + }, + Comment: { + Color: 'a9a9a9', + }, + Plaintext: { + Color: '000000', + }, + Punctuation: { + Color: '000000', + }, + String: { + Color: '006400', + }, + Literal: { + Color: 'b04600', + }, + Type: { + Color: '7f0055', + }, + }, + BackgroundStyle: {}, + LineNumberStyle: { + Background: 'none', + }, +}; diff --git a/src/themes/__tests__/themes-tests.ts b/src/themes/__tests__/themes-tests.ts index 3f1c18c..295afc3 100644 --- a/src/themes/__tests__/themes-tests.ts +++ b/src/themes/__tests__/themes-tests.ts @@ -2,75 +2,84 @@ import { Themes, GetGenericStyle, GetLineNumberStyle } from '../..'; import { GetBackgroundStyle } from '..'; describe('Themes tests', () => { - it('lower cased formatting | checks line number styles', () => { - Object.keys(Themes).forEach((theme) => { - Object.keys(Themes[theme].LineNumberStyle).forEach((styleName) => { - const actual: string = Themes[theme].LineNumberStyle[styleName]; - const expected: string = actual.toLowerCase(); - expect(actual).toBe(expected); - }); - }); + it('lower cased formatting | checks line number styles', () => { + Object.keys(Themes).forEach((theme) => { + Object.keys(Themes[theme].LineNumberStyle).forEach((styleName) => { + const actual: string = Themes[theme].LineNumberStyle[styleName]; + const expected: string = actual.toLowerCase(); + expect(actual).toBe(expected); + }); }); + }); - it('lower cased formatting | checks top level background', () => { - Object.keys(Themes).forEach((theme) => { - Object.keys(Themes[theme].BackgroundStyle).forEach((styleName) => { - const actual: string = Themes[theme].BackgroundStyle[styleName]; - const expected: string = actual.toLowerCase(); - expect(actual).toBe(expected); - }); - }); + it('lower cased formatting | checks top level background', () => { + Object.keys(Themes).forEach((theme) => { + Object.keys(Themes[theme].BackgroundStyle).forEach((styleName) => { + const actual: string = Themes[theme].BackgroundStyle[styleName]; + const expected: string = actual.toLowerCase(); + expect(actual).toBe(expected); + }); }); + }); - it('lower cased formatting | checks generic styles', () => { - Object.keys(Themes).forEach((theme) => { - Object.keys(Themes[theme].CodeStyles).forEach((styleName) => { - Object.keys(Themes[theme].CodeStyles[styleName]).forEach((codeStyle) => { - const actual: string = Themes[theme].CodeStyles[styleName][codeStyle]; - const expected: string = actual.toLowerCase(); - expect(actual).toBe(expected); - }); - }); - }); + it('lower cased formatting | checks generic styles', () => { + Object.keys(Themes).forEach((theme) => { + Object.keys(Themes[theme].CodeStyles).forEach((styleName) => { + Object.keys(Themes[theme].CodeStyles[styleName]).forEach( + (codeStyle) => { + const actual: string = + Themes[theme].CodeStyles[styleName][codeStyle]; + const expected: string = actual.toLowerCase(); + expect(actual).toBe(expected); + } + ); + }); }); + }); }); describe('GetLineNumberStyle tests', () => { - it.each([ + it.each([ [undefined, ''], ['Default', 'background:none;'], - ['Desert', 'color:#fff;background:none;'] - ]) - ('produces the correct concatanation', (theme: string, expected: string) => { - const actual: string = GetLineNumberStyle(theme); - expect(actual).toBe(expected); - }); + ['Desert', 'color:#fff;background:none;'], + ])( + 'produces the correct concatanation', + (theme: string, expected: string) => { + const actual: string = GetLineNumberStyle(theme); + expect(actual).toBe(expected); + } + ); }); describe('GetBackgroundStyle tests', () => { - it.each([ + it.each([ [undefined, ''], ['Default', ''], ['Desert', 'background-color:#333;'], - ['DefaultGray', 'background-color:#ececec;'] - ]) - ('produces the correct concatanation', (theme: string, expected: string) => { - const actual: string = GetBackgroundStyle(theme); - expect(actual).toBe(expected); - }); + ['DefaultGray', 'background-color:#ececec;'], + ])( + 'produces the correct concatanation', + (theme: string, expected: string) => { + const actual: string = GetBackgroundStyle(theme); + expect(actual).toBe(expected); + } + ); }); describe('GetGenericStyle tests', () => { - it.each([ + it.each([ [undefined, undefined, ''], ['A11YDark', undefined, ''], ['A11YDark', 'AttributeName', 'color:#ffd700;font-weight:bold;'], ['A11YDark', 'NoCode', 'color:#000;background-color:none;'], ['AtelierCaveLight', 'AttributeName', 'color:#759731;font-weight:bold;'], - ['Sunburst', 'Comment', 'color:#aeaeae;font-style:italic;'] - ]) - ('produces the correct concatanation', (theme: string, styleName: string, expected: string) => { - const actual: string = GetGenericStyle(theme, styleName); - expect(actual).toBe(expected); - }); -}); \ No newline at end of file + ['Sunburst', 'Comment', 'color:#aeaeae;font-style:italic;'], + ])( + 'produces the correct concatanation', + (theme: string, styleName: string, expected: string) => { + const actual: string = GetGenericStyle(theme, styleName); + expect(actual).toBe(expected); + } + ); +}); diff --git a/src/themes/index.ts b/src/themes/index.ts index eab7a72..5d6e6e6 100644 --- a/src/themes/index.ts +++ b/src/themes/index.ts @@ -1,4 +1,4 @@ -import { ITheme, ICodeStyle, IStyle } from './ITheme'; +import { ITheme, IStyle } from './ITheme'; import { Default } from './Default'; import { DefaultGray } from './DefaultGray'; import { Desert } from './Desert'; @@ -16,23 +16,26 @@ type ThemeDictionary = { [key: string]: ITheme }; function MergeStyleProperties(object: IStyle) { if (!object || !Object.keys(object)) { - return ""; + return ''; } const styleNameMap: { [key: string]: string } = { - 'Color': 'color:#', - 'Background': 'background:', - 'BackgroundColor': 'background-color:', - 'FontWeight': 'font-weight:', - 'FontStyle': 'font-style:' + Color: 'color:#', + Background: 'background:', + BackgroundColor: 'background-color:', + FontWeight: 'font-weight:', + FontStyle: 'font-style:', }; return Object.keys(object).reduce((p, c) => { - if ((c === 'BackgroundColor' || c === 'Background') && object[c] !== 'none') { + if ( + (c === 'BackgroundColor' || c === 'Background') && + object[c] !== 'none' + ) { return `${p}${styleNameMap[c]}#${object[c]};`; } return `${p}${styleNameMap[c]}${object[c]};`; - }, ""); + }, ''); } export const Themes: ThemeDictionary = { @@ -47,19 +50,19 @@ export const Themes: ThemeDictionary = { BlueHintGray, CSharpDark, ChatGPTDark, - ThonnyDefaultLight -} + ThonnyDefaultLight, +}; export function GetLineNumberStyle(theme: string) { if (!Themes[theme]) { - return ""; + return ''; } return MergeStyleProperties(Themes[theme].LineNumberStyle); } export function GetBackgroundStyle(theme: string) { if (!Themes[theme]) { - return ""; + return ''; } return MergeStyleProperties(Themes[theme].BackgroundStyle); } @@ -72,7 +75,7 @@ export function GetBackgroundStyle(theme: string) { */ export function GetGenericStyle(theme: string, styleName: string): string { if (!Themes[theme]) { - return ""; + return ''; } - return MergeStyleProperties(Themes[theme].CodeStyles[styleName]) -} \ No newline at end of file + return MergeStyleProperties(Themes[theme].CodeStyles[styleName]); +} diff --git a/tsconfig.json b/tsconfig.json index 39597fe..e3812cc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,4 @@ { - "files": ["src/index.ts"], "compilerOptions": { "outDir": "./dist", "target": "ES6",