@nr1e/commons 0.1.0 → 0.1.1
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/main +2 -0
- package/.git/logs/refs/remotes/origin/main +2 -0
- package/.git/objects/07/c0af7cd711cab6a55ad3dc349ac8c70775623c +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/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/2e/58414df7b4d5c972167a83270f78fc4ed508f5 +0 -0
- package/.git/objects/38/0be191ee415827a1217f46626fea4fefba48e5 +0 -0
- package/.git/objects/3a/93aa29cd19bdc95a87d15910baec8455f8b7b7 +0 -0
- package/.git/objects/50/150b739272269be2ede552448013eba65323da +0 -0
- package/.git/objects/53/2b7b796ffd3223f913a5a5e1e17743ee3591fe +0 -0
- package/.git/objects/54/a8535f50287f6a7a8c00aed143ca6e5ee5f5d1 +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/70/0e093acb1c1e55d523507411b7940a01a3bb65 +0 -0
- package/.git/objects/71/1ba2014bc137dece4c4156ff5e77e6abaeb95c +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/8b/cc95b71b20c79513e9157b921238ca2c79f906 +0 -0
- package/.git/objects/8d/d819967bdc8457f04c1b5498bce89380d6552b +7 -0
- package/.git/objects/91/b0fba96bf994b6232bb923f2a9929fc258a05f +0 -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/ad/c418f9105db9ec488de6831584b82e3929eaef +0 -0
- package/.git/objects/b0/c1c68fbbad6b190434cd2bb0e807796bd56fca +0 -0
- package/.git/objects/b1/0f0d0ef3bc5aaf3a91be0b991cb6fe0fcadc40 +0 -0
- package/.git/objects/b6/3b642cfb4254fc0f7058903abc5b481895c4ef +0 -0
- package/.git/objects/b8/a2c461d7ffed9d4ba242c58a52341832b99e0a +0 -0
- package/.git/objects/ba/5b53857ced8d97f6d6e3fb3538b3273743dafc +2 -0
- package/.git/objects/ba/5ef7104c0d019a9692cd2d78261d96f29e916f +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/e1/b744bc6076ebeb02fa86af98583ac22e070ec0 +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/main +1 -0
- package/.git/refs/remotes/origin/main +1 -0
- package/.git/refs/tags/v0.1.1 +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 +21 -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,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Enforce valid definition of `new` and `constructor`.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-misused-new** for documentation.
|
|
8
|
+
|
|
9
|
+
JavaScript classes may define a `constructor` method that runs when a class instance is newly created.
|
|
10
|
+
TypeScript allows interfaces that describe a static class object to define a `new()` method (though this is rarely used in real world code).
|
|
11
|
+
Developers new to JavaScript classes and/or TypeScript interfaces may sometimes confuse when to use `constructor` or `new`.
|
|
12
|
+
|
|
13
|
+
This rule reports when a class defines a method named `new` or an interface defines a method named `constructor`.
|
|
14
|
+
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
<!--tabs-->
|
|
18
|
+
|
|
19
|
+
### ❌ Incorrect
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
declare class C {
|
|
23
|
+
new(): C;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface I {
|
|
27
|
+
new (): I;
|
|
28
|
+
constructor(): void;
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### ✅ Correct
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
declare class C {
|
|
36
|
+
constructor();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
interface I {
|
|
40
|
+
new (): C;
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## When Not To Use It
|
|
45
|
+
|
|
46
|
+
If you intentionally want a class with a `new` method, and you're confident nobody working in your code will mistake it with a constructor.
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow Promises in places not designed to handle them.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-misused-promises** for documentation.
|
|
8
|
+
|
|
9
|
+
This rule forbids providing Promises to logical locations such as if statements in places where the TypeScript compiler allows them but they are not handled properly.
|
|
10
|
+
These situations can often arise due to a missing `await` keyword or just a misunderstanding of the way async
|
|
11
|
+
functions are handled/awaited.
|
|
12
|
+
|
|
13
|
+
:::tip
|
|
14
|
+
`no-misused-promises` only detects code that provides Promises to incorrect _logical_ locations.
|
|
15
|
+
See [`no-floating-promises`](./no-floating-promises.md) for detecting unhandled Promise _statements_.
|
|
16
|
+
:::
|
|
17
|
+
|
|
18
|
+
## Options
|
|
19
|
+
|
|
20
|
+
### `"checksConditionals"`
|
|
21
|
+
|
|
22
|
+
If you don't want to check conditionals, you can configure the rule with `"checksConditionals": false`:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"@typescript-eslint/no-misused-promises": [
|
|
27
|
+
"error",
|
|
28
|
+
{
|
|
29
|
+
"checksConditionals": false
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Doing so prevents the rule from looking at code like `if (somePromise)`.
|
|
36
|
+
|
|
37
|
+
Examples of code for this rule with `checksConditionals: true`:
|
|
38
|
+
|
|
39
|
+
<!--tabs-->
|
|
40
|
+
|
|
41
|
+
#### ❌ Incorrect
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
const promise = Promise.resolve('value');
|
|
45
|
+
|
|
46
|
+
if (promise) {
|
|
47
|
+
// Do something
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const val = promise ? 123 : 456;
|
|
51
|
+
|
|
52
|
+
while (promise) {
|
|
53
|
+
// Do something
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### ✅ Correct
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
const promise = Promise.resolve('value');
|
|
61
|
+
|
|
62
|
+
// Always `await` the Promise in a conditional
|
|
63
|
+
if (await promise) {
|
|
64
|
+
// Do something
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const val = (await promise) ? 123 : 456;
|
|
68
|
+
|
|
69
|
+
while (await promise) {
|
|
70
|
+
// Do something
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
<!--/tabs-->
|
|
75
|
+
|
|
76
|
+
### `"checksVoidReturn"`
|
|
77
|
+
|
|
78
|
+
Likewise, if you don't want functions that return promises where a void return is
|
|
79
|
+
expected to be checked, your configuration will look like this:
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"@typescript-eslint/no-misused-promises": [
|
|
84
|
+
"error",
|
|
85
|
+
{
|
|
86
|
+
"checksVoidReturn": false
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
You can disable selective parts of the `checksVoidReturn` option by providing an object that disables specific checks.
|
|
93
|
+
The following options are supported:
|
|
94
|
+
|
|
95
|
+
- `arguments`: Disables checking an asynchronous function passed as argument where the parameter type expects a function that returns `void`
|
|
96
|
+
- `attributes`: Disables checking an asynchronous function passed as a JSX attribute expected to be a function that returns `void`
|
|
97
|
+
- `properties`: Disables checking an asynchronous function passed as an object property expected to be a function that returns `void`
|
|
98
|
+
- `returns`: Disables checking an asynchronous function returned in a function whose return type is a function that returns `void`
|
|
99
|
+
- `variables`: Disables checking an asynchronous function used as a variable whose return type is a function that returns `void`
|
|
100
|
+
|
|
101
|
+
For example, if you don't mind that passing a `() => Promise<void>` to a `() => void` parameter or JSX attribute can lead to a floating unhandled Promise:
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"@typescript-eslint/no-misused-promises": [
|
|
106
|
+
"error",
|
|
107
|
+
{
|
|
108
|
+
"checksVoidReturn": {
|
|
109
|
+
"arguments": false,
|
|
110
|
+
"attributes": false
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Examples of code for this rule with `checksVoidReturn: true`:
|
|
118
|
+
|
|
119
|
+
<!--tabs-->
|
|
120
|
+
|
|
121
|
+
#### ❌ Incorrect
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
[1, 2, 3].forEach(async value => {
|
|
125
|
+
await doSomething(value);
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
new Promise(async (resolve, reject) => {
|
|
129
|
+
await doSomething();
|
|
130
|
+
resolve();
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
const eventEmitter = new EventEmitter();
|
|
134
|
+
eventEmitter.on('some-event', async () => {
|
|
135
|
+
synchronousCall();
|
|
136
|
+
await doSomething();
|
|
137
|
+
otherSynchronousCall();
|
|
138
|
+
});
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### ✅ Correct
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
// for-of puts `await` in outer context
|
|
145
|
+
for (const value of [1, 2, 3]) {
|
|
146
|
+
await doSomething(value);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// If outer context is not `async`, handle error explicitly
|
|
150
|
+
Promise.all(
|
|
151
|
+
[1, 2, 3].map(async value => {
|
|
152
|
+
await doSomething(value);
|
|
153
|
+
}),
|
|
154
|
+
).catch(handleError);
|
|
155
|
+
|
|
156
|
+
// Use an async IIFE wrapper
|
|
157
|
+
new Promise((resolve, reject) => {
|
|
158
|
+
// combine with `void` keyword to tell `no-floating-promises` rule to ignore unhandled rejection
|
|
159
|
+
void (async () => {
|
|
160
|
+
await doSomething();
|
|
161
|
+
resolve();
|
|
162
|
+
})();
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// Name the async wrapper to call it later
|
|
166
|
+
const eventEmitter = new EventEmitter();
|
|
167
|
+
eventEmitter.on('some-event', () => {
|
|
168
|
+
const handler = async () => {
|
|
169
|
+
await doSomething();
|
|
170
|
+
otherSynchronousCall();
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
try {
|
|
174
|
+
synchronousCall();
|
|
175
|
+
} catch (err) {
|
|
176
|
+
handleSpecificError(err);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
handler().catch(handleError);
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
<!--/tabs-->
|
|
184
|
+
|
|
185
|
+
### `"checksSpreads"`
|
|
186
|
+
|
|
187
|
+
If you don't want to check object spreads, you can add this configuration:
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"@typescript-eslint/no-misused-promises": [
|
|
192
|
+
"error",
|
|
193
|
+
{
|
|
194
|
+
"checksSpreads": false
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Examples of code for this rule with `checksSpreads: true`:
|
|
201
|
+
|
|
202
|
+
<!--tabs-->
|
|
203
|
+
|
|
204
|
+
#### ❌ Incorrect
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
const getData = () => someAsyncOperation({ myArg: 'foo' });
|
|
208
|
+
|
|
209
|
+
return { foo: 42, ...getData() };
|
|
210
|
+
|
|
211
|
+
const getData2 = async () => {
|
|
212
|
+
await someAsyncOperation({ myArg: 'foo' });
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
return { foo: 42, ...getData2() };
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
#### ✅ Correct
|
|
219
|
+
|
|
220
|
+
```ts
|
|
221
|
+
const getData = () => someAsyncOperation({ myArg: 'foo' });
|
|
222
|
+
|
|
223
|
+
return { foo: 42, ...(await getData()) };
|
|
224
|
+
|
|
225
|
+
const getData2 = async () => {
|
|
226
|
+
await someAsyncOperation({ myArg: 'foo' });
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
return { foo: 42, ...(await getData2()) };
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
<!--tabs-->
|
|
233
|
+
|
|
234
|
+
## When Not To Use It
|
|
235
|
+
|
|
236
|
+
If you do not use Promises in your codebase or are not concerned with possible
|
|
237
|
+
misuses of them outside of what the TypeScript compiler will check.
|
|
238
|
+
|
|
239
|
+
## Further Reading
|
|
240
|
+
|
|
241
|
+
- [TypeScript void function assignability](https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-functions-returning-non-void-assignable-to-function-returning-void)
|
|
242
|
+
|
|
243
|
+
## Related To
|
|
244
|
+
|
|
245
|
+
- [`no-floating-promises`](./no-floating-promises.md)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow enums from having both number and string members.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-mixed-enums** for documentation.
|
|
8
|
+
|
|
9
|
+
TypeScript enums are allowed to assign numeric or string values to their members.
|
|
10
|
+
Most enums contain either all numbers or all strings, but in theory you can mix-and-match within the same enum.
|
|
11
|
+
Mixing enum member types is generally considered confusing and a bad practice.
|
|
12
|
+
|
|
13
|
+
## Examples
|
|
14
|
+
|
|
15
|
+
<!--tabs-->
|
|
16
|
+
|
|
17
|
+
### ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
enum Status {
|
|
21
|
+
Unknown,
|
|
22
|
+
Closed = 1,
|
|
23
|
+
Open = 'open',
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### ✅ Correct (Explicit Numbers)
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
enum Status {
|
|
31
|
+
Unknown = 0,
|
|
32
|
+
Closed = 1,
|
|
33
|
+
Open = 2,
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### ✅ Correct (Implicit Numbers)
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
enum Status {
|
|
41
|
+
Unknown,
|
|
42
|
+
Closed,
|
|
43
|
+
Open,
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### ✅ Correct (Strings)
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
enum Status {
|
|
51
|
+
Unknown = 'unknown',
|
|
52
|
+
Closed = 'closed',
|
|
53
|
+
Open = 'open',
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Iteration Pitfalls of Mixed Enum Member Values
|
|
58
|
+
|
|
59
|
+
Enum values may be iterated over using `Object.entries`/`Object.keys`/`Object.values`.
|
|
60
|
+
|
|
61
|
+
If all enum members are strings, the number of items will match the number of enum members:
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
enum Status {
|
|
65
|
+
Closed = 'closed',
|
|
66
|
+
Open = 'open',
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ['closed', 'open']
|
|
70
|
+
Object.values(Status);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
But if the enum contains members that are initialized with numbers -including implicitly initialized numbers— then iteration over that enum will include those numbers as well:
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
enum Status {
|
|
77
|
+
Unknown,
|
|
78
|
+
Closed = 1,
|
|
79
|
+
Open = 'open',
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ["Unknown", "Closed", 0, 1, "open"]
|
|
83
|
+
Object.values(Status);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## When Not To Use It
|
|
87
|
+
|
|
88
|
+
If you don't mind the confusion of mixed enum member values and don't iterate over enums, you can safely disable this rule.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow TypeScript namespaces.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-namespace** for documentation.
|
|
8
|
+
|
|
9
|
+
TypeScript historically allowed a form of code organization called "custom modules" (`module Example {}`), later renamed to "namespaces" (`namespace Example`).
|
|
10
|
+
Namespaces are an outdated way to organize TypeScript code.
|
|
11
|
+
ES2015 module syntax is now preferred (`import`/`export`).
|
|
12
|
+
|
|
13
|
+
> This rule does not report on the use of TypeScript module declarations to describe external APIs (`declare module 'foo' {}`).
|
|
14
|
+
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
Examples of code with the default options:
|
|
18
|
+
|
|
19
|
+
<!--tabs-->
|
|
20
|
+
|
|
21
|
+
### ❌ Incorrect
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
module foo {}
|
|
25
|
+
namespace foo {}
|
|
26
|
+
|
|
27
|
+
declare module foo {}
|
|
28
|
+
declare namespace foo {}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### ✅ Correct
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
declare module 'foo' {}
|
|
35
|
+
|
|
36
|
+
// anything inside a d.ts file
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
<!--/tabs-->
|
|
40
|
+
|
|
41
|
+
## Options
|
|
42
|
+
|
|
43
|
+
### `allowDeclarations`
|
|
44
|
+
|
|
45
|
+
Examples of code with the `{ "allowDeclarations": true }` option:
|
|
46
|
+
|
|
47
|
+
<!--tabs-->
|
|
48
|
+
|
|
49
|
+
#### ❌ Incorrect
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
module foo {}
|
|
53
|
+
namespace foo {}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### ✅ Correct
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
declare module 'foo' {}
|
|
60
|
+
declare module foo {}
|
|
61
|
+
declare namespace foo {}
|
|
62
|
+
|
|
63
|
+
declare global {
|
|
64
|
+
namespace foo {}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
declare module foo {
|
|
68
|
+
namespace foo {}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
<!--/tabs-->
|
|
73
|
+
|
|
74
|
+
Examples of code for the `{ "allowDeclarations": false }` option:
|
|
75
|
+
|
|
76
|
+
<!--tabs-->
|
|
77
|
+
|
|
78
|
+
#### ❌ Incorrect
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
module foo {}
|
|
82
|
+
namespace foo {}
|
|
83
|
+
declare module foo {}
|
|
84
|
+
declare namespace foo {}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### ✅ Correct
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
declare module 'foo' {}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### `allowDefinitionFiles`
|
|
94
|
+
|
|
95
|
+
Examples of code for the `{ "allowDefinitionFiles": true }` option:
|
|
96
|
+
|
|
97
|
+
<!--tabs-->
|
|
98
|
+
|
|
99
|
+
#### ❌ Incorrect
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
// if outside a d.ts file
|
|
103
|
+
module foo {}
|
|
104
|
+
namespace foo {}
|
|
105
|
+
|
|
106
|
+
// if outside a d.ts file and allowDeclarations = false
|
|
107
|
+
module foo {}
|
|
108
|
+
namespace foo {}
|
|
109
|
+
declare module foo {}
|
|
110
|
+
declare namespace foo {}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### ✅ Correct
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
declare module 'foo' {}
|
|
117
|
+
|
|
118
|
+
// anything inside a d.ts file
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## When Not To Use It
|
|
122
|
+
|
|
123
|
+
If you are using the ES2015 module syntax, then you will not need this rule.
|
|
124
|
+
|
|
125
|
+
## Further Reading
|
|
126
|
+
|
|
127
|
+
- [Modules](https://www.typescriptlang.org/docs/handbook/modules.html)
|
|
128
|
+
- [Namespaces](https://www.typescriptlang.org/docs/handbook/namespaces.html)
|
|
129
|
+
- [Namespaces and Modules](https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow non-null assertions in the left operand of a nullish coalescing operator.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing** for documentation.
|
|
8
|
+
|
|
9
|
+
The `??` nullish coalescing runtime operator allows providing a default value when dealing with `null` or `undefined`.
|
|
10
|
+
Using a `!` non-null assertion type operator in the left operand of a nullish coalescing operator is redundant, and likely a sign of programmer error or confusion over the two operators.
|
|
11
|
+
|
|
12
|
+
## Examples
|
|
13
|
+
|
|
14
|
+
<!--tabs-->
|
|
15
|
+
|
|
16
|
+
### ❌ Incorrect
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
foo! ?? bar;
|
|
20
|
+
foo.bazz! ?? bar;
|
|
21
|
+
foo!.bazz! ?? bar;
|
|
22
|
+
foo()! ?? bar;
|
|
23
|
+
|
|
24
|
+
let x!: string;
|
|
25
|
+
x! ?? '';
|
|
26
|
+
|
|
27
|
+
let x: string;
|
|
28
|
+
x = foo();
|
|
29
|
+
x! ?? '';
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### ✅ Correct
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
foo ?? bar;
|
|
36
|
+
foo ?? bar!;
|
|
37
|
+
foo!.bazz ?? bar;
|
|
38
|
+
foo!.bazz ?? bar!;
|
|
39
|
+
foo() ?? bar;
|
|
40
|
+
|
|
41
|
+
// This is considered correct code because there's no way for the user to satisfy it.
|
|
42
|
+
let x: string;
|
|
43
|
+
x! ?? '';
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Further Reading
|
|
47
|
+
|
|
48
|
+
- [TypeScript 3.7 Release Notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html)
|
|
49
|
+
- [Nullish Coalescing Proposal](https://github.com/tc39/proposal-nullish-coalescing)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow non-null assertions after an optional chain expression.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain** for documentation.
|
|
8
|
+
|
|
9
|
+
`?.` optional chain expressions provide `undefined` if an object is `null` or `undefined`.
|
|
10
|
+
Using a `!` non-null assertion to assert the result of an `?.` optional chain expression is non-nullable is likely wrong.
|
|
11
|
+
|
|
12
|
+
> Most of the time, either the object was not nullable and did not need the `?.` for its property lookup, or the `!` is incorrect and introducing a type safety hole.
|
|
13
|
+
|
|
14
|
+
## Examples
|
|
15
|
+
|
|
16
|
+
<!--tabs-->
|
|
17
|
+
|
|
18
|
+
### ❌ Incorrect
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
foo?.bar!;
|
|
22
|
+
foo?.bar()!;
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### ✅ Correct
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
foo?.bar;
|
|
29
|
+
foo?.bar();
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Further Reading
|
|
33
|
+
|
|
34
|
+
- [TypeScript 3.7 Release Notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html)
|
|
35
|
+
- [Optional Chaining Proposal](https://github.com/tc39/proposal-optional-chaining/)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Disallow non-null assertions using the `!` postfix operator.'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
6
|
+
>
|
|
7
|
+
> See **https://typescript-eslint.io/rules/no-non-null-assertion** for documentation.
|
|
8
|
+
|
|
9
|
+
TypeScript's `!` non-null assertion operator asserts to the type system that an expression is non-nullable, as in not `null` or `undefined`.
|
|
10
|
+
Using assertions to tell the type system new information is often a sign that code is not fully type-safe.
|
|
11
|
+
It's generally better to structure program logic so that TypeScript understands when values may be nullable.
|
|
12
|
+
|
|
13
|
+
## Examples
|
|
14
|
+
|
|
15
|
+
<!--tabs-->
|
|
16
|
+
|
|
17
|
+
### ❌ Incorrect
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
interface Example {
|
|
21
|
+
property?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare const example: Example;
|
|
25
|
+
const includesBaz = example.property!.includes('baz');
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### ✅ Correct
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
interface Example {
|
|
32
|
+
property?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
declare const example: Example;
|
|
36
|
+
const includesBaz = example.property?.includes('baz') ?? false;
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## When Not To Use It
|
|
40
|
+
|
|
41
|
+
If your project does not use the `strictNullChecks` compiler option, this rule is likely useless to you.
|
|
42
|
+
If your code is often wildly incorrect with respect to strict null-checking, your code may not yet be ready for this rule.
|