@nr1e/commons 0.1.0-alpha.1 → 0.1.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +19 -0
- package/.eslintignore +3 -0
- package/.eslintrc.json +4 -0
- package/.git/COMMIT_EDITMSG +5 -0
- package/.git/FETCH_HEAD +1 -0
- package/.git/HEAD +1 -0
- package/.git/config +18 -0
- package/.git/config.worktree +5 -0
- package/.git/description +1 -0
- package/.git/hooks/applypatch-msg.sample +15 -0
- package/.git/hooks/commit-msg.sample +24 -0
- package/.git/hooks/fsmonitor-watchman.sample +174 -0
- package/.git/hooks/post-update.sample +8 -0
- package/.git/hooks/pre-applypatch.sample +14 -0
- package/.git/hooks/pre-commit.sample +49 -0
- package/.git/hooks/pre-merge-commit.sample +13 -0
- package/.git/hooks/pre-push.sample +53 -0
- package/.git/hooks/pre-rebase.sample +169 -0
- package/.git/hooks/pre-receive.sample +24 -0
- package/.git/hooks/prepare-commit-msg.sample +42 -0
- package/.git/hooks/push-to-checkout.sample +78 -0
- package/.git/hooks/sendemail-validate.sample +77 -0
- package/.git/hooks/update.sample +128 -0
- package/.git/index +0 -0
- package/.git/info/exclude +6 -0
- package/.git/logs/HEAD +2 -0
- package/.git/logs/refs/heads/develop +2 -0
- package/.git/logs/refs/remotes/origin/develop +2 -0
- package/.git/objects/07/c0af7cd711cab6a55ad3dc349ac8c70775623c +0 -0
- package/.git/objects/09/8fb5a5ff070a1ee3ea11db1a3568af3fea6fa2 +0 -0
- package/.git/objects/0d/698432e2c44311c17b845cc63093a898972b95 +0 -0
- package/.git/objects/10/ba4a7d64968326293182d571a9c73f5e041fb6 +3 -0
- package/.git/objects/12/069a5aa45479564e00749f730582627a276a55 +3 -0
- package/.git/objects/14/5ab9cf82c40696a07ab42f117ba199acb2a50b +4 -0
- package/.git/objects/17/7b0dc4bf884f8ae0403b4aad053e76baafd632 +2 -0
- package/.git/objects/1d/a517ce3527df45a4f28e52ff2c0d9d1c8179f6 +0 -0
- package/.git/objects/26/d9a4912af870ce319f5cb5102651d49baac4ab +1 -0
- package/.git/objects/27/50076ed23b5211a52ef834f40f183ddecb917a +0 -0
- package/.git/objects/2a/96e4bb57fa4bd69c719dca224b17b569e94e82 +2 -0
- package/.git/objects/2b/38c26b4ec43b8f5574acb164d2ba64bca8e230 +0 -0
- package/.git/objects/2c/61d463bee185f04e7c2bd1d2a15ad1117c589e +0 -0
- package/.git/objects/2d/22dbc836cfd75c8d7640ebe5a4fe90bd2c23c6 +0 -0
- package/.git/objects/38/0be191ee415827a1217f46626fea4fefba48e5 +0 -0
- package/.git/objects/4c/bb28de66d7aaeb4d7737cc2be955adc0c886b5 +0 -0
- package/.git/objects/50/150b739272269be2ede552448013eba65323da +0 -0
- package/.git/objects/53/2b7b796ffd3223f913a5a5e1e17743ee3591fe +0 -0
- package/.git/objects/54/f13d9d62fbedd19b41134ba17153c4328de95b +0 -0
- package/.git/objects/5d/4aa0709f62f1bc1fa80251208b570cb3b89d9c +0 -0
- package/.git/objects/63/1c43e00d4c34ba914c510f4fe2e6df15b8b06e +0 -0
- package/.git/objects/63/9900d13c6182e452e33a3bd638e70a0146c785 +2 -0
- package/.git/objects/64/3fa02661c3a1b54205729a75d2fb5f013833af +0 -0
- package/.git/objects/6c/59086d862516d2fffa5da2035e5003100fb5c7 +0 -0
- package/.git/objects/6c/b74f90a0c799eea1c54a04d8d6a8a9e9691cca +2 -0
- package/.git/objects/6d/f39e776d6a89628ce4a005a011911298651635 +0 -0
- package/.git/objects/70/0e093acb1c1e55d523507411b7940a01a3bb65 +0 -0
- package/.git/objects/74/c82ffe8eb71efecbccfdf67b590949c944dd1a +0 -0
- package/.git/objects/76/1413a07839108abb46ef0e4490bd1c1444b4fc +0 -0
- package/.git/objects/77/96f8282f2c553ecdde72bc976478eb3a8a948e +0 -0
- package/.git/objects/79/ee123c2b23e069e35ed634d687e17f731cc702 +0 -0
- package/.git/objects/7d/80af9735f0527db35ecc79ae3c887e445cb3e0 +0 -0
- package/.git/objects/85/1d8d26c2a946ccfd5461a2573665c1fb7d71f7 +0 -0
- package/.git/objects/85/c5f24b8c55496f82a2680f94a7d3fa32887ea0 +0 -0
- package/.git/objects/87/00b3833597b600e6f0ffcfbaf622fd8cfaa9c3 +1 -0
- package/.git/objects/87/f31d3df8e7edbf96e45d80126f878b8e0c243f +0 -0
- package/.git/objects/8d/d819967bdc8457f04c1b5498bce89380d6552b +7 -0
- package/.git/objects/92/608c4e069a4301d466d8d18daecbe7abc9500e +0 -0
- package/.git/objects/94/a25f7f4cb416c083d265558da75d457237d671 +0 -0
- package/.git/objects/9c/69411050eac81b5dce09314516a30b38c41a20 +3 -0
- package/.git/objects/9f/54b5b21769da383f12fb9c7bd364bdb05e13a9 +0 -0
- package/.git/objects/a5/886c22eb68b152bb95ec5151504676d8e78ae1 +0 -0
- package/.git/objects/a6/582c9510e264f3b46fc3b20597a16923a03523 +0 -0
- package/.git/objects/a9/d7db9c0a81b2db47ca92e4e180b30090b27632 +0 -0
- package/.git/objects/aa/8ae6a0af7014d738cc551d1ffebeb4e19e6b73 +0 -0
- package/.git/objects/ad/c418f9105db9ec488de6831584b82e3929eaef +0 -0
- package/.git/objects/ae/14b04cdf65ade0f70577cdea2f85203f4c1bde +0 -0
- package/.git/objects/b0/c1c68fbbad6b190434cd2bb0e807796bd56fca +0 -0
- package/.git/objects/b1/0f0d0ef3bc5aaf3a91be0b991cb6fe0fcadc40 +0 -0
- package/.git/objects/b1/3c15806ef3856ecd8660b0bb36f39830daa3c2 +0 -0
- package/.git/objects/b6/3b642cfb4254fc0f7058903abc5b481895c4ef +0 -0
- package/.git/objects/b8/a2c461d7ffed9d4ba242c58a52341832b99e0a +0 -0
- package/.git/objects/bc/91e0079eb00d56dcde16714748f36a10dbd525 +0 -0
- package/.git/objects/c1/beeb895b71b709e48560460199db11b3fc18af +0 -0
- package/.git/objects/c5/166c2aeebaeb0a0f7654223c843c50cd4c8953 +0 -0
- package/.git/objects/d4/0a2096fc36c1fd9c7a9263c458d5e8a4a5bee7 +0 -0
- package/.git/objects/e8/019be9e978a8e2f094e748cbb6ce0c7163adee +0 -0
- package/.git/objects/eb/1d744c4e9b47bc902647298424320078e32980 +0 -0
- package/.git/objects/ee/15af38be7f3c3862229e59c6b5688f8e0f6099 +0 -0
- package/.git/objects/f1/9e0f429f231c34432784f9e33b92ac1d598c17 +0 -0
- package/.git/objects/f9/86f2fe82493e85651396b6d5886316d1c890dd +0 -0
- package/.git/refs/heads/develop +1 -0
- package/.git/refs/remotes/origin/develop +1 -0
- package/.git/shallow +1 -0
- package/.github/dependabot.yml +10 -0
- package/.github/workflows/ci.yml +12 -0
- package/.github/workflows/issues.yml +13 -0
- package/.github/workflows/publish.yml +20 -0
- package/.gitignore +13 -0
- package/.idea/.gitignore +10 -0
- package/.idea/aws.xml +11 -0
- package/.idea/codeStyles/Project.xml +58 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/commons-js.iml +14 -0
- package/.idea/inspectionProfiles/Project_Default.xml +7 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/vcs.xml +6 -0
- package/.npmrc +1 -0
- package/.prettierignore +7 -0
- package/.prettierrc.cjs +3 -0
- package/LICENSE +26 -0
- package/README.md +14 -0
- package/coverage/base.css +224 -0
- package/coverage/bitsnbytes/b64.mts.html +559 -0
- package/coverage/bitsnbytes/index.html +131 -0
- package/coverage/bitsnbytes/index.mts.html +88 -0
- package/coverage/clover.xml +1003 -0
- package/coverage/coverage-final.json +15 -0
- package/coverage/errors/errors.mts.html +898 -0
- package/coverage/errors/index.html +131 -0
- package/coverage/errors/index.mts.html +88 -0
- package/coverage/favicon.png +0 -0
- package/coverage/http/http-method.mts.html +112 -0
- package/coverage/http/http-status-code.mts.html +211 -0
- package/coverage/http/index.html +146 -0
- package/coverage/http/index.mts.html +91 -0
- package/coverage/index.html +191 -0
- package/coverage/lang/index.html +146 -0
- package/coverage/lang/index.mts.html +91 -0
- package/coverage/lang/sleep.mts.html +109 -0
- package/coverage/lang/type-functions.mts.html +124 -0
- package/coverage/oauth/crypto-functions.mts.html +217 -0
- package/coverage/oauth/index.html +131 -0
- package/coverage/oauth/index.mts.html +88 -0
- package/coverage/prettify.css +1 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/validator/index.html +131 -0
- package/coverage/validator/index.mts.html +88 -0
- package/coverage/validator/validators.mts.html +1237 -0
- package/dist/package.json +72 -0
- package/node_modules/@eslint/eslintrc/LICENSE +19 -0
- package/node_modules/@eslint/eslintrc/README.md +115 -0
- package/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs +1104 -0
- package/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map +1 -0
- package/node_modules/@eslint/eslintrc/dist/eslintrc.cjs +4344 -0
- package/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map +1 -0
- package/node_modules/@eslint/eslintrc/package.json +82 -0
- package/node_modules/@eslint/eslintrc/universal.js +9 -0
- package/node_modules/@eslint/js/LICENSE +19 -0
- package/node_modules/@eslint/js/README.md +57 -0
- package/node_modules/@eslint/js/package.json +31 -0
- package/node_modules/@eslint/js/src/index.js +17 -0
- package/node_modules/@eslint-community/eslint-utils/LICENSE +21 -0
- package/node_modules/@eslint-community/eslint-utils/README.md +37 -0
- package/node_modules/@eslint-community/eslint-utils/index.js +2068 -0
- package/node_modules/@eslint-community/eslint-utils/index.js.map +1 -0
- package/node_modules/@eslint-community/eslint-utils/index.mjs +2027 -0
- package/node_modules/@eslint-community/eslint-utils/index.mjs.map +1 -0
- package/node_modules/@eslint-community/eslint-utils/package.json +73 -0
- package/node_modules/@eslint-community/regexpp/LICENSE +21 -0
- package/node_modules/@eslint-community/regexpp/README.md +177 -0
- package/node_modules/@eslint-community/regexpp/index.d.ts +1065 -0
- package/node_modules/@eslint-community/regexpp/index.js +2747 -0
- package/node_modules/@eslint-community/regexpp/index.js.map +1 -0
- package/node_modules/@eslint-community/regexpp/index.mjs +2737 -0
- package/node_modules/@eslint-community/regexpp/index.mjs.map +1 -0
- package/node_modules/@eslint-community/regexpp/package.json +93 -0
- package/node_modules/@types/node/LICENSE +21 -0
- package/node_modules/@types/node/README.md +15 -0
- package/node_modules/@types/node/package.json +217 -0
- package/node_modules/@typescript-eslint/eslint-plugin/LICENSE +21 -0
- package/node_modules/@typescript-eslint/eslint-plugin/README.md +10 -0
- package/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +23 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/README.md +23 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/TEMPLATE.md +26 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/adjacent-overload-signatures.md +93 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/array-type.md +103 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/await-thenable.md +40 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-ts-comment.md +148 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-tslint-comment.md +39 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-types.md +183 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/block-spacing.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/brace-style.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/camelcase.md +10 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/class-literal-property-style.md +114 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/comma-dangle.md +22 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/comma-spacing.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-generic-constructors.md +73 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-indexed-object-style.md +80 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-assertions.md +108 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-definitions.md +82 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-exports.md +100 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-imports.md +105 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/default-param-last.md +48 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/dot-notation.md +77 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-function-return-type.md +319 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-member-accessibility.md +331 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-module-boundary-types.md +250 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/func-call-spacing.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/indent.md +20 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/init-declarations.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/key-spacing.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/keyword-spacing.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/lines-around-comment.md +37 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/lines-between-class-members.md +63 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-delimiter-style.md +161 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-ordering.md +1360 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/method-signature-style.md +110 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/naming-convention.md +706 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-array-constructor.md +35 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-base-to-string.md +88 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md +56 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-confusing-void-expression.md +116 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-dupe-class-members.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-duplicate-enum-values.md +50 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-duplicate-imports.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-duplicate-type-constituents.md +61 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-dynamic-delete.md +53 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-empty-function.md +88 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-empty-interface.md +70 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-explicit-any.md +174 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-non-null-assertion.md +52 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-parens.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-semi.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extraneous-class.md +294 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-floating-promises.md +106 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-for-in-array.md +56 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-implicit-any-catch.md +73 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-implied-eval.md +101 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-import-type-side-effects.md +75 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-inferrable-types.md +103 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-invalid-this.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-invalid-void-type.md +113 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-loop-func.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-loss-of-precision.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-magic-numbers.md +131 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-meaningless-void-operator.md +47 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-misused-new.md +46 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-misused-promises.md +245 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-mixed-enums.md +88 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-namespace.md +129 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-asserted-nullish-coalescing.md +49 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md +35 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-assertion.md +42 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-parameter-properties.md +406 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-redeclare.md +73 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-redundant-type-constituents.md +78 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-require-imports.md +37 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-restricted-imports.md +63 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-shadow.md +101 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-this-alias.md +38 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-throw-literal.md +111 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-type-alias.md +602 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.md +133 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-condition.md +103 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-qualifier.md +51 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md +73 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md +77 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-constraint.md +55 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-argument.md +83 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-assignment.md +86 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-call.md +58 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-declaration-merging.md +54 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-enum-comparison.md +75 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-member-access.md +64 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-return.md +103 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unused-expressions.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unused-vars.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-use-before-define.md +97 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-useless-constructor.md +21 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-useless-empty-export.md +43 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-var-requires.md +37 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/non-nullable-type-assertion-style.md +41 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/object-curly-spacing.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/padding-line-between-statements.md +35 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/parameter-properties.md +485 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-as-const.md +44 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-enum-initializers.md +62 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-for-of.md +46 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-function-type.md +92 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-includes.md +77 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-literal-enum-member.md +101 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-namespace-keyword.md +47 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-nullish-coalescing.md +164 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-optional-chain.md +71 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md +268 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-readonly.md +87 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md +58 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-regexp-exec.md +46 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-return-this-type.md +87 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md +57 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-ts-expect-error.md +69 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/promise-function-async.md +59 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/quotes.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/require-array-sort-compare.md +78 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/require-await.md +24 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/restrict-plus-operands.md +208 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/restrict-template-expressions.md +117 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/return-await.md +216 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/semi.md +16 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/sort-type-constituents.md +101 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/sort-type-union-intersection-members.md +106 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-before-blocks.md +42 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-before-function-paren.md +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-infix-ops.md +16 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/strict-boolean-expressions.md +183 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/switch-exhaustiveness-check.md +106 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/triple-slash-reference.md +61 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/type-annotation-spacing.md +303 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/typedef.md +320 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/unbound-method.md +103 -0
- package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/unified-signatures.md +70 -0
- package/node_modules/@typescript-eslint/eslint-plugin/index.d.ts +4 -0
- package/node_modules/@typescript-eslint/eslint-plugin/package.json +87 -0
- package/node_modules/@typescript-eslint/parser/LICENSE +22 -0
- package/node_modules/@typescript-eslint/parser/README.md +10 -0
- package/node_modules/@typescript-eslint/parser/dist/index.js +17 -0
- package/node_modules/@typescript-eslint/parser/package.json +75 -0
- package/node_modules/@typescript-eslint/scope-manager/LICENSE +21 -0
- package/node_modules/@typescript-eslint/scope-manager/README.md +8 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/index.js +31 -0
- package/node_modules/@typescript-eslint/scope-manager/package.json +67 -0
- package/node_modules/@typescript-eslint/type-utils/LICENSE +21 -0
- package/node_modules/@typescript-eslint/type-utils/README.md +12 -0
- package/node_modules/@typescript-eslint/type-utils/dist/index.js +36 -0
- package/node_modules/@typescript-eslint/type-utils/package.json +71 -0
- package/node_modules/@typescript-eslint/types/LICENSE +21 -0
- package/node_modules/@typescript-eslint/types/README.md +12 -0
- package/node_modules/@typescript-eslint/types/dist/index.js +24 -0
- package/node_modules/@typescript-eslint/types/package.json +84 -0
- package/node_modules/@typescript-eslint/typescript-estree/LICENSE +26 -0
- package/node_modules/@typescript-eslint/typescript-estree/README.md +10 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/index.js +38 -0
- package/node_modules/@typescript-eslint/typescript-estree/package.json +85 -0
- package/node_modules/@typescript-eslint/utils/LICENSE +21 -0
- package/node_modules/@typescript-eslint/utils/README.md +10 -0
- package/node_modules/@typescript-eslint/utils/dist/index.js +41 -0
- package/node_modules/@typescript-eslint/utils/package.json +70 -0
- package/node_modules/@typescript-eslint/visitor-keys/LICENSE +21 -0
- package/node_modules/@typescript-eslint/visitor-keys/README.md +10 -0
- package/node_modules/@typescript-eslint/visitor-keys/dist/index.js +8 -0
- package/node_modules/@typescript-eslint/visitor-keys/package.json +60 -0
- package/node_modules/@vitest/coverage-v8/LICENSE +21 -0
- package/node_modules/@vitest/coverage-v8/dist/index.js +54 -0
- package/node_modules/@vitest/coverage-v8/package.json +72 -0
- package/package.json +6 -6
- package/pnpm-lock.yaml +3277 -0
- package/src/bitsnbytes/b64.mts +158 -0
- package/src/bitsnbytes/b64.test.mts +78 -0
- package/src/bitsnbytes/index.mts +1 -0
- package/src/errors/errors.mts +271 -0
- package/src/errors/errors.test.mts +74 -0
- package/src/errors/index.mts +1 -0
- package/src/http/http-method.mts +9 -0
- package/src/http/http-status-code.mts +42 -0
- package/src/http/index.mts +2 -0
- package/src/lang/index.mts +2 -0
- package/src/lang/sleep.mts +8 -0
- package/src/lang/type-functions.mts +13 -0
- package/src/oauth/crypto-functions.mts +44 -0
- package/src/oauth/crypto-functions.test.mts +48 -0
- package/src/oauth/index.mts +1 -0
- package/src/validator/index.mts +1 -0
- package/src/validator/validators.mts +384 -0
- package/src/validator/validators.test.mts +245 -0
- package/tsconfig.json +18 -0
- /package/{bitsnbytes → dist/bitsnbytes}/b64.d.mts +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/b64.d.mts.map +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/b64.mjs +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/b64.mjs.map +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/b64.test.d.mts +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/b64.test.d.mts.map +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/b64.test.mjs +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/b64.test.mjs.map +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/index.d.mts +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/index.d.mts.map +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/index.mjs +0 -0
- /package/{bitsnbytes → dist/bitsnbytes}/index.mjs.map +0 -0
- /package/{errors → dist/errors}/errors.d.mts +0 -0
- /package/{errors → dist/errors}/errors.d.mts.map +0 -0
- /package/{errors → dist/errors}/errors.mjs +0 -0
- /package/{errors → dist/errors}/errors.mjs.map +0 -0
- /package/{errors → dist/errors}/errors.test.d.mts +0 -0
- /package/{errors → dist/errors}/errors.test.d.mts.map +0 -0
- /package/{errors → dist/errors}/errors.test.mjs +0 -0
- /package/{errors → dist/errors}/errors.test.mjs.map +0 -0
- /package/{errors → dist/errors}/index.d.mts +0 -0
- /package/{errors → dist/errors}/index.d.mts.map +0 -0
- /package/{errors → dist/errors}/index.mjs +0 -0
- /package/{errors → dist/errors}/index.mjs.map +0 -0
- /package/{http → dist/http}/http-method.d.mts +0 -0
- /package/{http → dist/http}/http-method.d.mts.map +0 -0
- /package/{http → dist/http}/http-method.mjs +0 -0
- /package/{http → dist/http}/http-method.mjs.map +0 -0
- /package/{http → dist/http}/http-status-code.d.mts +0 -0
- /package/{http → dist/http}/http-status-code.d.mts.map +0 -0
- /package/{http → dist/http}/http-status-code.mjs +0 -0
- /package/{http → dist/http}/http-status-code.mjs.map +0 -0
- /package/{http → dist/http}/index.d.mts +0 -0
- /package/{http → dist/http}/index.d.mts.map +0 -0
- /package/{http → dist/http}/index.mjs +0 -0
- /package/{http → dist/http}/index.mjs.map +0 -0
- /package/{lang → dist/lang}/index.d.mts +0 -0
- /package/{lang → dist/lang}/index.d.mts.map +0 -0
- /package/{lang → dist/lang}/index.mjs +0 -0
- /package/{lang → dist/lang}/index.mjs.map +0 -0
- /package/{lang → dist/lang}/sleep.d.mts +0 -0
- /package/{lang → dist/lang}/sleep.d.mts.map +0 -0
- /package/{lang → dist/lang}/sleep.mjs +0 -0
- /package/{lang → dist/lang}/sleep.mjs.map +0 -0
- /package/{lang → dist/lang}/type-functions.d.mts +0 -0
- /package/{lang → dist/lang}/type-functions.d.mts.map +0 -0
- /package/{lang → dist/lang}/type-functions.mjs +0 -0
- /package/{lang → dist/lang}/type-functions.mjs.map +0 -0
- /package/{oauth → dist/oauth}/crypto-functions.d.mts +0 -0
- /package/{oauth → dist/oauth}/crypto-functions.d.mts.map +0 -0
- /package/{oauth → dist/oauth}/crypto-functions.mjs +0 -0
- /package/{oauth → dist/oauth}/crypto-functions.mjs.map +0 -0
- /package/{oauth → dist/oauth}/crypto-functions.test.d.mts +0 -0
- /package/{oauth → dist/oauth}/crypto-functions.test.d.mts.map +0 -0
- /package/{oauth → dist/oauth}/crypto-functions.test.mjs +0 -0
- /package/{oauth → dist/oauth}/crypto-functions.test.mjs.map +0 -0
- /package/{oauth → dist/oauth}/index.d.mts +0 -0
- /package/{oauth → dist/oauth}/index.d.mts.map +0 -0
- /package/{oauth → dist/oauth}/index.mjs +0 -0
- /package/{oauth → dist/oauth}/index.mjs.map +0 -0
- /package/{validator → dist/validator}/index.d.mts +0 -0
- /package/{validator → dist/validator}/index.d.mts.map +0 -0
- /package/{validator → dist/validator}/index.mjs +0 -0
- /package/{validator → dist/validator}/index.mjs.map +0 -0
- /package/{validator → dist/validator}/validators.d.mts +0 -0
- /package/{validator → dist/validator}/validators.d.mts.map +0 -0
- /package/{validator → dist/validator}/validators.mjs +0 -0
- /package/{validator → dist/validator}/validators.mjs.map +0 -0
- /package/{validator → dist/validator}/validators.test.d.mts +0 -0
- /package/{validator → dist/validator}/validators.test.d.mts.map +0 -0
- /package/{validator → dist/validator}/validators.test.mjs +0 -0
- /package/{validator → dist/validator}/validators.test.mjs.map +0 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow the `any` type.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-explicit-any** for documentation.
|
|
8
|
+
|
|
9
|
+
The `any` type in TypeScript is a dangerous "escape hatch" from the type system.
|
|
10
|
+
Using `any` disables many type checking rules and is generally best used only as a last resort or when prototyping code.
|
|
11
|
+
This rule reports on explicit uses of the `any` keyword as a type annotation.
|
|
12
|
+
|
|
13
|
+
> TypeScript's `--noImplicitAny` compiler option prevents an implied `any`, but doesn't prevent `any` from being explicitly used the way this rule does.
|
|
14
|
+
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
<!--tabs-->
|
|
18
|
+
|
|
19
|
+
### ❌ Incorrect
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
const age: any = 'seventeen';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
const ages: any[] = ['seventeen'];
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
const ages: Array<any> = ['seventeen'];
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
function greet(): any {}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
function greet(): any[] {}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
function greet(): Array<any> {}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
function greet(): Array<Array<any>> {}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
function greet(param: Array<any>): string {}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
function greet(param: Array<any>): Array<any> {}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### ✅ Correct
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
const age: number = 17;
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
const ages: number[] = [17];
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
const ages: Array<number> = [17];
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
function greet(): string {}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
function greet(): string[] {}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
function greet(): Array<string> {}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
function greet(): Array<Array<string>> {}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
function greet(param: Array<string>): string {}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
function greet(param: Array<string>): Array<string> {}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Options
|
|
96
|
+
|
|
97
|
+
### `ignoreRestArgs`
|
|
98
|
+
|
|
99
|
+
A boolean to specify if arrays from the rest operator are considered okay. `false` by default.
|
|
100
|
+
|
|
101
|
+
Examples of **incorrect** code for the `{ "ignoreRestArgs": false }` option:
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
/*eslint @typescript-eslint/no-explicit-any: ["error", { "ignoreRestArgs": false }]*/
|
|
105
|
+
|
|
106
|
+
function foo1(...args: any[]): void {}
|
|
107
|
+
function foo2(...args: readonly any[]): void {}
|
|
108
|
+
function foo3(...args: Array<any>): void {}
|
|
109
|
+
function foo4(...args: ReadonlyArray<any>): void {}
|
|
110
|
+
|
|
111
|
+
declare function bar(...args: any[]): void;
|
|
112
|
+
|
|
113
|
+
const baz = (...args: any[]) => {};
|
|
114
|
+
const qux = function (...args: any[]) {};
|
|
115
|
+
|
|
116
|
+
type Quux = (...args: any[]) => void;
|
|
117
|
+
type Quuz = new (...args: any[]) => void;
|
|
118
|
+
|
|
119
|
+
interface Grault {
|
|
120
|
+
(...args: any[]): void;
|
|
121
|
+
}
|
|
122
|
+
interface Corge {
|
|
123
|
+
new (...args: any[]): void;
|
|
124
|
+
}
|
|
125
|
+
interface Garply {
|
|
126
|
+
f(...args: any[]): void;
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Examples of **correct** code for the `{ "ignoreRestArgs": true }` option:
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
/*eslint @typescript-eslint/no-explicit-any: ["error", { "ignoreRestArgs": true }]*/
|
|
134
|
+
|
|
135
|
+
function foo1(...args: any[]): void {}
|
|
136
|
+
function foo2(...args: readonly any[]): void {}
|
|
137
|
+
function foo3(...args: Array<any>): void {}
|
|
138
|
+
function foo4(...args: ReadonlyArray<any>): void {}
|
|
139
|
+
|
|
140
|
+
declare function bar(...args: any[]): void;
|
|
141
|
+
|
|
142
|
+
const baz = (...args: any[]) => {};
|
|
143
|
+
const qux = function (...args: any[]) {};
|
|
144
|
+
|
|
145
|
+
type Quux = (...args: any[]) => void;
|
|
146
|
+
type Quuz = new (...args: any[]) => void;
|
|
147
|
+
|
|
148
|
+
interface Grault {
|
|
149
|
+
(...args: any[]): void;
|
|
150
|
+
}
|
|
151
|
+
interface Corge {
|
|
152
|
+
new (...args: any[]): void;
|
|
153
|
+
}
|
|
154
|
+
interface Garply {
|
|
155
|
+
f(...args: any[]): void;
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## When Not To Use It
|
|
160
|
+
|
|
161
|
+
If an unknown type or a library without typings is used
|
|
162
|
+
and you want to be able to specify `any`.
|
|
163
|
+
|
|
164
|
+
## Related To
|
|
165
|
+
|
|
166
|
+
- [`no-unsafe-argument`](./no-unsafe-argument.md)
|
|
167
|
+
- [`no-unsafe-assignment`](./no-unsafe-assignment.md)
|
|
168
|
+
- [`no-unsafe-call`](./no-unsafe-call.md)
|
|
169
|
+
- [`no-unsafe-member-access`](./no-unsafe-member-access.md)
|
|
170
|
+
- [`no-unsafe-return`](./no-unsafe-return.md)
|
|
171
|
+
|
|
172
|
+
## Further Reading
|
|
173
|
+
|
|
174
|
+
- TypeScript [any type](https://www.typescriptlang.org/docs/handbook/basic-types.html#any)
|
package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-non-null-assertion.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow extra non-null assertions.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-extra-non-null-assertion** for documentation.
|
|
8
|
+
|
|
9
|
+
The `!` non-null assertion operator in TypeScript is used to assert that a value's type does not include `null` or `undefined`.
|
|
10
|
+
Using the operator any more than once on a single value does nothing.
|
|
11
|
+
|
|
12
|
+
## Examples
|
|
13
|
+
|
|
14
|
+
<!--tabs-->
|
|
15
|
+
|
|
16
|
+
### ❌ Incorrect
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
const foo: { bar: number } | null = null;
|
|
20
|
+
const bar = foo!!!.bar;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
function foo(bar: number | undefined) {
|
|
25
|
+
const bar: number = bar!!!;
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
function foo(bar?: { n: number }) {
|
|
31
|
+
return bar!?.n;
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### ✅ Correct
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
const foo: { bar: number } | null = null;
|
|
39
|
+
const bar = foo!.bar;
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
function foo(bar: number | undefined) {
|
|
44
|
+
const bar: number = bar!;
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
function foo(bar?: { n: number }) {
|
|
50
|
+
return bar?.n;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow unnecessary parentheses.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-extra-parens** for documentation.
|
|
8
|
+
|
|
9
|
+
## Examples
|
|
10
|
+
|
|
11
|
+
This rule extends the base [`eslint/no-extra-parens`](https://eslint.org/docs/rules/no-extra-parens) rule.
|
|
12
|
+
It adds support for TypeScript type assertions.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow unnecessary semicolons.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-extra-semi** for documentation.
|
|
8
|
+
|
|
9
|
+
## Examples
|
|
10
|
+
|
|
11
|
+
This rule extends the base [`eslint/no-extra-semi`](https://eslint.org/docs/rules/no-extra-semi) rule.
|
|
12
|
+
It adds support for class properties.
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow classes used as namespaces.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-extraneous-class** for documentation.
|
|
8
|
+
|
|
9
|
+
This rule reports when a class has no non-static members, such as for a class used exclusively as a static namespace.
|
|
10
|
+
|
|
11
|
+
Users who come from a [OOP](https://en.wikipedia.org/wiki/Object-oriented_programming) paradigm may wrap their utility functions in an extra class, instead of putting them at the top level of an ECMAScript module.
|
|
12
|
+
Doing so is generally unnecessary in JavaScript and TypeScript projects.
|
|
13
|
+
|
|
14
|
+
- Wrapper classes add extra cognitive complexity to code without adding any structural improvements
|
|
15
|
+
- Whatever would be put on them, such as utility functions, are already organized by virtue of being in a module.
|
|
16
|
+
- As an alternative, you can `import * as ...` the module to get all of them in a single object.
|
|
17
|
+
- IDEs can't provide as good suggestions for static class or namespace imported properties when you start typing property names
|
|
18
|
+
- It's more difficult to statically analyze code for unused variables, etc. when they're all on the class (see: [Finding dead code (and dead types) in TypeScript](https://effectivetypescript.com/2020/10/20/tsprune)).
|
|
19
|
+
|
|
20
|
+
This rule also reports classes that have only a constructor and no fields.
|
|
21
|
+
Those classes can generally be replaced with a standalone function.
|
|
22
|
+
|
|
23
|
+
## Examples
|
|
24
|
+
|
|
25
|
+
<!--tabs-->
|
|
26
|
+
|
|
27
|
+
### ❌ Incorrect
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
class StaticConstants {
|
|
31
|
+
static readonly version = 42;
|
|
32
|
+
|
|
33
|
+
static isProduction() {
|
|
34
|
+
return process.env.NODE_ENV === 'production';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
class HelloWorldLogger {
|
|
39
|
+
constructor() {
|
|
40
|
+
console.log('Hello, world!');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### ✅ Correct
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
export const version = 42;
|
|
49
|
+
|
|
50
|
+
export function isProduction() {
|
|
51
|
+
return process.env.NODE_ENV === 'production';
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function logHelloWorld() {
|
|
55
|
+
console.log('Hello, world!');
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Alternatives
|
|
60
|
+
|
|
61
|
+
### Individual Exports (Recommended)
|
|
62
|
+
|
|
63
|
+
Instead of using a static utility class we recommend you individually export the utilities from your module.
|
|
64
|
+
|
|
65
|
+
<!--tabs-->
|
|
66
|
+
|
|
67
|
+
#### ❌ Incorrect
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
export class Utilities {
|
|
71
|
+
static util1() {
|
|
72
|
+
return Utilities.util3();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
static util2() {
|
|
76
|
+
/* ... */
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static util3() {
|
|
80
|
+
/* ... */
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### ✅ Correct
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
export function util1() {
|
|
89
|
+
return util3();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function util2() {
|
|
93
|
+
/* ... */
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function util3() {
|
|
97
|
+
/* ... */
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Namespace Imports (Not Recommended)
|
|
102
|
+
|
|
103
|
+
If you strongly prefer to have all constructs from a module available as properties of a single object, you can `import * as` the module.
|
|
104
|
+
This is known as a "namespace import".
|
|
105
|
+
Namespace imports are sometimes preferable because they keep all properties nested and don't need to be changed as you start or stop using various properties from the module.
|
|
106
|
+
|
|
107
|
+
However, namespace imports are impacted by these downsides:
|
|
108
|
+
|
|
109
|
+
- They also don't play as well with tree shaking in modern bundlers
|
|
110
|
+
- They require a name prefix before each property's usage
|
|
111
|
+
|
|
112
|
+
<!--tabs-->
|
|
113
|
+
|
|
114
|
+
#### ❌ Incorrect
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
// utilities.ts
|
|
118
|
+
export class Utilities {
|
|
119
|
+
static sayHello() {
|
|
120
|
+
console.log('Hello, world!');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// consumers.ts
|
|
125
|
+
import { Utilities } from './utilities';
|
|
126
|
+
|
|
127
|
+
Utilities.sayHello();
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
#### ⚠️ Namespace Imports
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
// utilities.ts
|
|
134
|
+
export function sayHello() {
|
|
135
|
+
console.log('Hello, world!');
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// consumers.ts
|
|
139
|
+
import * as utilities from './utilities';
|
|
140
|
+
|
|
141
|
+
utilities.sayHello();
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### ✅ Standalone Imports
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
// utilities.ts
|
|
148
|
+
export function sayHello() {
|
|
149
|
+
console.log('Hello, world!');
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// consumers.ts
|
|
153
|
+
import { sayHello } from './utilities';
|
|
154
|
+
|
|
155
|
+
sayHello();
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Notes on Mutating Variables
|
|
159
|
+
|
|
160
|
+
One case you need to be careful of is exporting mutable variables.
|
|
161
|
+
While class properties can be mutated externally, exported variables are always constant.
|
|
162
|
+
This means that importers can only ever read the first value they are assigned and cannot write to the variables.
|
|
163
|
+
|
|
164
|
+
Needing to write to an exported variable is very rare and is generally considered a code smell.
|
|
165
|
+
If you do need it you can accomplish it using getter and setter functions:
|
|
166
|
+
|
|
167
|
+
<!--tabs-->
|
|
168
|
+
|
|
169
|
+
#### ❌ Incorrect
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
export class Utilities {
|
|
173
|
+
static mutableCount = 1;
|
|
174
|
+
|
|
175
|
+
static incrementCount() {
|
|
176
|
+
Utilities.mutableCount += 1;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
#### ✅ Correct
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
let mutableCount = 1;
|
|
185
|
+
|
|
186
|
+
export function getMutableCount() {
|
|
187
|
+
return mutableField;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export function incrementCount() {
|
|
191
|
+
mutableField += 1;
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Options
|
|
196
|
+
|
|
197
|
+
This rule normally bans classes that are empty (have no constructor or fields).
|
|
198
|
+
The rule's options each add an exemption for a specific type of class.
|
|
199
|
+
|
|
200
|
+
### `allowConstructorOnly`
|
|
201
|
+
|
|
202
|
+
`allowConstructorOnly` adds an exemption for classes that have only a constructor and no fields.
|
|
203
|
+
|
|
204
|
+
<!--tabs-->
|
|
205
|
+
|
|
206
|
+
#### ❌ Incorrect
|
|
207
|
+
|
|
208
|
+
```ts
|
|
209
|
+
class NoFields {}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
#### ✅ Correct
|
|
213
|
+
|
|
214
|
+
```ts
|
|
215
|
+
class NoFields {
|
|
216
|
+
constructor() {
|
|
217
|
+
console.log('Hello, world!');
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### `allowEmpty`
|
|
223
|
+
|
|
224
|
+
The `allowEmpty` option adds an exemption for classes that are entirely empty.
|
|
225
|
+
|
|
226
|
+
<!--tabs-->
|
|
227
|
+
|
|
228
|
+
#### ❌ Incorrect
|
|
229
|
+
|
|
230
|
+
```ts
|
|
231
|
+
class NoFields {
|
|
232
|
+
constructor() {
|
|
233
|
+
console.log('Hello, world!');
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
#### ✅ Correct
|
|
239
|
+
|
|
240
|
+
```ts
|
|
241
|
+
class NoFields {}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### `allowStaticOnly`
|
|
245
|
+
|
|
246
|
+
The `allowStaticOnly` option adds an exemption for classes that only contain static members.
|
|
247
|
+
|
|
248
|
+
:::caution
|
|
249
|
+
We strongly recommend against the `allowStaticOnly` exemption.
|
|
250
|
+
It works against this rule's primary purpose of discouraging classes used only for static members.
|
|
251
|
+
:::
|
|
252
|
+
|
|
253
|
+
<!--tabs-->
|
|
254
|
+
|
|
255
|
+
#### ❌ Incorrect
|
|
256
|
+
|
|
257
|
+
```ts
|
|
258
|
+
class EmptyClass {}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
#### ✅ Correct
|
|
262
|
+
|
|
263
|
+
```ts
|
|
264
|
+
class NotEmptyClass {
|
|
265
|
+
static version = 42;
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### `allowWithDecorator`
|
|
270
|
+
|
|
271
|
+
The `allowWithDecorator` option adds an exemption for classes that contain a member decorated with a `@` decorator.
|
|
272
|
+
|
|
273
|
+
<!--tabs-->
|
|
274
|
+
|
|
275
|
+
#### ❌ Incorrect
|
|
276
|
+
|
|
277
|
+
```ts
|
|
278
|
+
class Constants {
|
|
279
|
+
static readonly version = 42;
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
#### ✅ Correct
|
|
284
|
+
|
|
285
|
+
```ts
|
|
286
|
+
class Constants {
|
|
287
|
+
@logOnRead()
|
|
288
|
+
static readonly version = 42;
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## When Not To Use It
|
|
293
|
+
|
|
294
|
+
You can disable this rule if you are unable -or unwilling- to switch off using classes as namespaces.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Require Promise-like statements to be handled appropriately.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-floating-promises** for documentation.
|
|
8
|
+
|
|
9
|
+
A "floating" Promise is one that is created without any code set up to handle any errors it might throw.
|
|
10
|
+
Floating Promises can cause several issues, such as improperly sequenced operations, ignored Promise rejections, and more.
|
|
11
|
+
|
|
12
|
+
This rule reports when a Promise is created and not properly handled.
|
|
13
|
+
Valid ways of handling a Promise-valued statement include:
|
|
14
|
+
|
|
15
|
+
- `await`ing it
|
|
16
|
+
- `return`ing it
|
|
17
|
+
- Calling its `.then()` with two arguments
|
|
18
|
+
- Calling its `.catch()` with one argument
|
|
19
|
+
|
|
20
|
+
:::tip
|
|
21
|
+
`no-floating-promises` only detects unhandled Promise _statements_.
|
|
22
|
+
See [`no-misused-promises`](./no-misused-promises.md) for detecting code that provides Promises to _logical_ locations such as if statements.
|
|
23
|
+
:::
|
|
24
|
+
|
|
25
|
+
## Examples
|
|
26
|
+
|
|
27
|
+
<!--tabs-->
|
|
28
|
+
|
|
29
|
+
### ❌ Incorrect
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
const promise = new Promise((resolve, reject) => resolve('value'));
|
|
33
|
+
promise;
|
|
34
|
+
|
|
35
|
+
async function returnsPromise() {
|
|
36
|
+
return 'value';
|
|
37
|
+
}
|
|
38
|
+
returnsPromise().then(() => {});
|
|
39
|
+
|
|
40
|
+
Promise.reject('value').catch();
|
|
41
|
+
|
|
42
|
+
Promise.reject('value').finally();
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### ✅ Correct
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
const promise = new Promise((resolve, reject) => resolve('value'));
|
|
49
|
+
await promise;
|
|
50
|
+
|
|
51
|
+
async function returnsPromise() {
|
|
52
|
+
return 'value';
|
|
53
|
+
}
|
|
54
|
+
returnsPromise().then(
|
|
55
|
+
() => {},
|
|
56
|
+
() => {},
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
Promise.reject('value').catch(() => {});
|
|
60
|
+
|
|
61
|
+
Promise.reject('value').finally(() => {});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Options
|
|
65
|
+
|
|
66
|
+
### `ignoreVoid`
|
|
67
|
+
|
|
68
|
+
This allows you to stop the rule reporting promises consumed with void operator.
|
|
69
|
+
This can be a good way to explicitly mark a promise as intentionally not awaited.
|
|
70
|
+
|
|
71
|
+
Examples of **correct** code for this rule with `{ ignoreVoid: true }`:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
async function returnsPromise() {
|
|
75
|
+
return 'value';
|
|
76
|
+
}
|
|
77
|
+
void returnsPromise();
|
|
78
|
+
|
|
79
|
+
void Promise.reject('value');
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
With this option set to `true`, and if you are using `no-void`, you should turn on the [`allowAsStatement`](https://eslint.org/docs/rules/no-void#allowasstatement) option.
|
|
83
|
+
|
|
84
|
+
### `ignoreIIFE`
|
|
85
|
+
|
|
86
|
+
This allows you to skip checking of async IIFEs (Immediately Invocated function Expressions).
|
|
87
|
+
|
|
88
|
+
Examples of **correct** code for this rule with `{ ignoreIIFE: true }`:
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
await(async function () {
|
|
92
|
+
await res(1);
|
|
93
|
+
})();
|
|
94
|
+
|
|
95
|
+
(async function () {
|
|
96
|
+
await res(1);
|
|
97
|
+
})();
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## When Not To Use It
|
|
101
|
+
|
|
102
|
+
If you do not use Promise-like values in your codebase, or want to allow them to remain unhandled.
|
|
103
|
+
|
|
104
|
+
## Related To
|
|
105
|
+
|
|
106
|
+
- [`no-misused-promises`](./no-misused-promises.md)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow iterating over an array with a for-in loop.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-for-in-array** for documentation.
|
|
8
|
+
|
|
9
|
+
A for-in loop (`for (var i in o)`) iterates over the properties of an Object.
|
|
10
|
+
While it is legal to use for-in loops with array types, it is not common.
|
|
11
|
+
for-in will iterate over the indices of the array as strings, omitting any "holes" in
|
|
12
|
+
the array.
|
|
13
|
+
|
|
14
|
+
## Examples
|
|
15
|
+
|
|
16
|
+
<!--tabs-->
|
|
17
|
+
|
|
18
|
+
### ❌ Incorrect
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
declare const array: string[];
|
|
22
|
+
|
|
23
|
+
for (const i in array) {
|
|
24
|
+
console.log(array[i]);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
for (const i in array) {
|
|
28
|
+
console.log(i, array[i]);
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### ✅ Correct
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
declare const array: string[];
|
|
36
|
+
|
|
37
|
+
for (const value of array) {
|
|
38
|
+
console.log(value);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
for (let i = 0; i < array.length; i += 1) {
|
|
42
|
+
console.log(i, array[i]);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
array.forEach((value, i) => {
|
|
46
|
+
console.log(i, value);
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
for (const [i, value] of array.entries()) {
|
|
50
|
+
console.log(i, value);
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## When Not To Use It
|
|
55
|
+
|
|
56
|
+
If you want to iterate through a loop using the indices in an array as strings, you can turn off this rule.
|