From 9881c65459f51bfb93f9f5cb3f66007156f52a56 Mon Sep 17 00:00:00 2001 From: "Shantel peters." Date: Mon, 4 Nov 2024 15:09:15 +0000 Subject: [PATCH 1/2] feat: add dtslint to repo --- .eslintrc.js | 57 ------------------ config/.eslintrc.js | 43 ++++++++++++++ package.json | 3 +- test/.eslintrc.js | 2 + types/.eslintrc.js | 3 + types/tslint.json | 8 +++ yarn.lock | 140 +++++++++++++++++++++++++++++--------------- 7 files changed, 151 insertions(+), 105 deletions(-) delete mode 100644 .eslintrc.js create mode 100644 config/.eslintrc.js create mode 100644 types/.eslintrc.js create mode 100644 types/tslint.json diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 4fcd5f068..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,57 +0,0 @@ -module.exports = { - env: { - es6: true, - }, - extends: [ - "airbnb-base", - "airbnb-typescript/base", - "prettier", - "plugin:jsdoc/recommended", - ], - parserOptions: { - parser: "@typescript-eslint/parser", - project: "./config/tsconfig.json", - }, - plugins: ["@babel", "prettier", "prefer-import"], - rules: { - // OFF - "node/no-unpublished-require": 0, - "import/prefer-default-export": 0, - "node/no-unsupported-features/es-syntax": 0, - "node/no-unsupported-features/es-builtins": 0, - camelcase: 0, - "class-methods-use-this": 0, - "linebreak-style": 0, - "jsdoc/require-returns": 0, - "jsdoc/require-param": 0, - "jsdoc/require-param-type": 0, - "jsdoc/require-returns-type": 0, - "jsdoc/no-blank-blocks": 0, - "jsdoc/no-multi-asterisks": 0, - "jsdoc/tag-lines": "off", - "jsdoc/require-jsdoc": "off", - "jsdoc/no-defaults": "off", - "valid-jsdoc": "off", - "import/extensions": 0, - "new-cap": 0, - "no-param-reassign": 0, - "no-underscore-dangle": 0, - "no-use-before-define": 0, - "prefer-destructuring": 0, - "lines-between-class-members": 0, - "@typescript-eslint/lines-between-class-members": "off", - "spaced-comment": 0, - - // WARN - "arrow-body-style": 1, - "no-console": ["warn", { allow: ["assert"] }], - "no-debugger": 1, - "object-shorthand": 1, - "prefer-const": 1, - "prefer-import/prefer-import-over-require": [1], - "require-await": 1, - - // ERROR - "no-unused-expressions": [2, { allowTaggedTemplates: true }], - }, -}; diff --git a/config/.eslintrc.js b/config/.eslintrc.js new file mode 100644 index 000000000..3fd3a5a61 --- /dev/null +++ b/config/.eslintrc.js @@ -0,0 +1,43 @@ +module.exports = { + env: { + es6: true, + es2020: true + }, + extends: ['airbnb-base', 'prettier'], + plugins: ['@babel', 'prettier', 'prefer-import'], + parser: '@typescript-eslint/parser', + rules: { + // OFF + 'import/prefer-default-export': 0, + 'node/no-unsupported-features/es-syntax': 0, + 'node/no-unsupported-features/es-builtins': 0, + camelcase: 0, + 'class-methods-use-this': 0, + 'linebreak-style': 0, + 'new-cap': 0, + 'no-param-reassign': 0, + 'no-underscore-dangle': 0, + 'no-use-before-define': 0, + 'prefer-destructuring': 0, + 'lines-between-class-members': 0, + + // WARN + 'prefer-import/prefer-import-over-require': [1], + 'no-console': ['warn', { allow: ['assert'] }], + 'no-debugger': 1, + 'no-unused-vars': 1, + 'arrow-body-style': 1, + 'valid-jsdoc': [ + 1, + { + requireReturnDescription: false + } + ], + 'prefer-const': 1, + 'object-shorthand': 1, + 'require-await': 1, + + // ERROR + 'no-unused-expressions': [2, { allowTaggedTemplates: true }] + } +}; diff --git a/package.json b/package.json index 7544c079a..7dcb5ccdc 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,7 @@ "build:docs": "cross-env NODE_ENV=docs yarn _babel", "clean": "rm -rf lib/ dist/ coverage/ .nyc_output/ jsdoc/ test/e2e/.soroban", "docs": "yarn build:docs && jsdoc -c ./config/.jsdoc.json", + "lint": "eslint -c ./config/.eslintrc.js 'src/**/*.{ts,tsx}' && dtslint --localTs node_modules/typescript/lib types/", "test": "yarn build:test && yarn test:node && yarn test:integration && yarn test:browser", "test:e2e": "./test/e2e/initialize.sh && yarn _nyc mocha --recursive 'test/e2e/src/test-*.js'", "test:node": "yarn _nyc mocha --recursive 'test/unit/**/*.js'", @@ -148,7 +149,7 @@ "@babel/preset-env": "^7.25.4", "@babel/preset-typescript": "^7.24.7", "@babel/register": "^7.24.6", - "@definitelytyped/dtslint": "^0.2.23", + "@definitelytyped/dtslint": "^0.2.25", "@istanbuljs/nyc-config-babel": "3.0.0", "@stellar/tsconfig": "^1.0.2", "@types/chai": "^4.3.19", diff --git a/test/.eslintrc.js b/test/.eslintrc.js index 693deb59d..d8c9b3d83 100644 --- a/test/.eslintrc.js +++ b/test/.eslintrc.js @@ -2,6 +2,8 @@ module.exports = { env: { mocha: true, }, + parser: "@typescript-eslint/parser", + plugins: ["@babel", "prettier", "prefer-import"], globals: { StellarSdk: true, axios: true, diff --git a/types/.eslintrc.js b/types/.eslintrc.js new file mode 100644 index 000000000..c5bdc47cb --- /dev/null +++ b/types/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + parser: "@typescript-eslint/parser", +}; diff --git a/types/tslint.json b/types/tslint.json new file mode 100644 index 000000000..f57aca3ff --- /dev/null +++ b/types/tslint.json @@ -0,0 +1,8 @@ +{ + "extends": "@definitelytyped/dtslint/dtslint.json", + "rules": { + "indent": [true, "spaces"], + "trailing-comma": [true, "always"], + "semicolon": [true, "always"] + } +} diff --git a/yarn.lock b/yarn.lock index 1fcb1e2dc..04fc9ee80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1051,34 +1051,34 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@definitelytyped/dtslint@^0.2.23": - version "0.2.23" - resolved "https://registry.yarnpkg.com/@definitelytyped/dtslint/-/dtslint-0.2.23.tgz#1f9a45fa669a060f57245cc84e1a76c2499ef0fc" - integrity sha512-cx5SOyncwMCuLyfJC12GI5I1+4O6RnHxDhYk+BsT5ZZDjpS0UMdebvdcVEk9bMcZNZkczAiJweDUuDtdx98d8w== +"@definitelytyped/dtslint@^0.2.25": + version "0.2.25" + resolved "https://registry.yarnpkg.com/@definitelytyped/dtslint/-/dtslint-0.2.25.tgz#71fe2155fc83cf3a1cba1de086d6009650148ffc" + integrity sha512-1e2/1q9Ndku6GkSW6lyw6jKoHwBuGgO1Mnrw9Kv0IUeyG92jkBdHrhAMX1sluUL/YvSjrn31KX13lnrfesEeWw== dependencies: "@arethetypeswrong/cli" "0.15.1" "@arethetypeswrong/core" "0.15.1" - "@definitelytyped/header-parser" "0.2.12" + "@definitelytyped/header-parser" "0.2.13" "@definitelytyped/typescript-packages" "0.1.4" "@definitelytyped/typescript-versions" "0.1.4" - "@definitelytyped/utils" "0.1.7" - "@typescript-eslint/eslint-plugin" "^7.14.1" - "@typescript-eslint/parser" "^7.14.1" - "@typescript-eslint/types" "^7.14.1" - "@typescript-eslint/typescript-estree" "^7.14.1" - "@typescript-eslint/utils" "^7.14.1" - eslint "^8.57.0" + "@definitelytyped/utils" "0.1.8" + "@typescript-eslint/eslint-plugin" "^8.11.0" + "@typescript-eslint/parser" "^8.11.0" + "@typescript-eslint/types" "^8.11.0" + "@typescript-eslint/typescript-estree" "^8.11.0" + "@typescript-eslint/utils" "^8.11.0" + eslint "^8.57.1" eslint-plugin-import "^2.29.1" semver "^7.5.4" strip-json-comments "^3.1.1" -"@definitelytyped/header-parser@0.2.12": - version "0.2.12" - resolved "https://registry.yarnpkg.com/@definitelytyped/header-parser/-/header-parser-0.2.12.tgz#5babc9e90f177a10b261f14c889c9f41b1ee252f" - integrity sha512-UYtSXiLMhzRFKh7xHMkgiWsscgHxIndmjetaptZMMS0EOvfhUTuEM68GpjiCtz5shXw22Vacs1vDTAkKGDhNmg== +"@definitelytyped/header-parser@0.2.13": + version "0.2.13" + resolved "https://registry.yarnpkg.com/@definitelytyped/header-parser/-/header-parser-0.2.13.tgz#3f369a4be8e56f80b7dc97555f12b87638f8e415" + integrity sha512-m7YEtGhwAjmQyJQFQ7q8+hTGTiC/WrdRATvw8fyTwgW+RiWUt8MAeehuFj4txnCYXDcLO0ozuW5gNrLoYR4Ubg== dependencies: "@definitelytyped/typescript-versions" "0.1.4" - "@definitelytyped/utils" "0.1.7" + "@definitelytyped/utils" "0.1.8" semver "^7.5.4" "@definitelytyped/typescript-packages@0.1.4": @@ -1103,10 +1103,10 @@ resolved "https://registry.yarnpkg.com/@definitelytyped/typescript-versions/-/typescript-versions-0.1.4.tgz#8428552461a578f02150f1a6db5b5522db9f108e" integrity sha512-4Rz5kCpyxofwXCtBQaNfmWYXZcH0sMJxpbIgJzS+PAxgFCAa9W+2Jil7rrkpzsjx9E7+zOPukbXBXjyXohcyuQ== -"@definitelytyped/utils@0.1.7": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@definitelytyped/utils/-/utils-0.1.7.tgz#166d73dd49aa80b161bed2e573878a52c0e95da1" - integrity sha512-t58AeNg6+mvyMnBHyPC6JQqWMW0Iwyb+vlpBz4V0d0iDY9H8gGCnLFg9vtN1nC+JXfTXBlf9efu9unMUeaPCiA== +"@definitelytyped/utils@0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@definitelytyped/utils/-/utils-0.1.8.tgz#08a80e4ae221e2ca941b9f148167a43dad94ea48" + integrity sha512-4JINx4Rttha29f50PBsJo48xZXx/He5yaIWJRwVarhYAN947+S84YciHl+AIhQNRPAFkg8+5qFngEGtKxQDWXA== dependencies: "@qiwi/npm-registry-client" "^8.9.1" "@types/node" "^18.19.7" @@ -1598,22 +1598,22 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^7.14.1": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" - integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== +"@typescript-eslint/eslint-plugin@^8.11.0": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.2.tgz#c2ef660bb83fd1432368319312a2581fc92ccac1" + integrity sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/type-utils" "7.18.0" - "@typescript-eslint/utils" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/scope-manager" "8.12.2" + "@typescript-eslint/type-utils" "8.12.2" + "@typescript-eslint/utils" "8.12.2" + "@typescript-eslint/visitor-keys" "8.12.2" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^7.14.1", "@typescript-eslint/parser@^7.16.1": +"@typescript-eslint/parser@^7.16.1": version "7.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== @@ -1624,6 +1624,17 @@ "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" +"@typescript-eslint/parser@^8.11.0": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.12.2.tgz#2e8173b34e1685e918b2d571c16c906d3747bad2" + integrity sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw== + dependencies: + "@typescript-eslint/scope-manager" "8.12.2" + "@typescript-eslint/types" "8.12.2" + "@typescript-eslint/typescript-estree" "8.12.2" + "@typescript-eslint/visitor-keys" "8.12.2" + debug "^4.3.4" + "@typescript-eslint/scope-manager@7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" @@ -1632,22 +1643,35 @@ "@typescript-eslint/types" "7.18.0" "@typescript-eslint/visitor-keys" "7.18.0" -"@typescript-eslint/type-utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" - integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== +"@typescript-eslint/scope-manager@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.12.2.tgz#6db0213745e6392c8e90fe9af5915e6da32eb94a" + integrity sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ== dependencies: - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/types" "8.12.2" + "@typescript-eslint/visitor-keys" "8.12.2" + +"@typescript-eslint/type-utils@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.12.2.tgz#132b0c52d45f6814e6f2e32416c7951ed480b016" + integrity sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ== + dependencies: + "@typescript-eslint/typescript-estree" "8.12.2" + "@typescript-eslint/utils" "8.12.2" debug "^4.3.4" ts-api-utils "^1.3.0" -"@typescript-eslint/types@7.18.0", "@typescript-eslint/types@^7.14.1": +"@typescript-eslint/types@7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== -"@typescript-eslint/typescript-estree@7.18.0", "@typescript-eslint/typescript-estree@^7.14.1": +"@typescript-eslint/types@8.12.2", "@typescript-eslint/types@^8.11.0": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.12.2.tgz#8d70098c0e90442495b53d0296acdca6d0f3f73c" + integrity sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA== + +"@typescript-eslint/typescript-estree@7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== @@ -1661,15 +1685,29 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@7.18.0", "@typescript-eslint/utils@^7.14.1": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" - integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== +"@typescript-eslint/typescript-estree@8.12.2", "@typescript-eslint/typescript-estree@^8.11.0": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.2.tgz#206df9b1cbff212aaa9401985ef99f04daa84da5" + integrity sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow== + dependencies: + "@typescript-eslint/types" "8.12.2" + "@typescript-eslint/visitor-keys" "8.12.2" + 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 "^1.3.0" + +"@typescript-eslint/utils@8.12.2", "@typescript-eslint/utils@^8.11.0": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.12.2.tgz#726cc9f49f5866605bd15bbc1768ffc15637930e" + integrity sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/scope-manager" "8.12.2" + "@typescript-eslint/types" "8.12.2" + "@typescript-eslint/typescript-estree" "8.12.2" "@typescript-eslint/visitor-keys@7.18.0": version "7.18.0" @@ -1679,6 +1717,14 @@ "@typescript-eslint/types" "7.18.0" eslint-visitor-keys "^3.4.3" +"@typescript-eslint/visitor-keys@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.2.tgz#94d7410f78eb6d134b9fcabaf1eeedb910ba8c38" + integrity sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA== + dependencies: + "@typescript-eslint/types" "8.12.2" + eslint-visitor-keys "^3.4.3" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -3749,7 +3795,7 @@ eslint-webpack-plugin@^4.2.0: normalize-path "^3.0.0" schema-utils "^4.2.0" -eslint@^8.57.0: +eslint@^8.57.0, eslint@^8.57.1: version "8.57.1" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== @@ -3932,7 +3978,7 @@ fast-fifo@^1.2.0, fast-fifo@^1.3.2: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.2.9: +fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== From e3e74c1dcb8b2c4e88d7f53aec491d2912702ad3 Mon Sep 17 00:00:00 2001 From: "Shantel peters." Date: Wed, 27 Nov 2024 21:24:27 +0000 Subject: [PATCH 2/2] feat: effect requested changes --- config/.eslintrc.js => .eslintrc.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename config/.eslintrc.js => .eslintrc.js (100%) diff --git a/config/.eslintrc.js b/.eslintrc.js similarity index 100% rename from config/.eslintrc.js rename to .eslintrc.js