@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.
Files changed (440) hide show
  1. package/.editorconfig +19 -0
  2. package/.eslintignore +3 -0
  3. package/.eslintrc.json +4 -0
  4. package/.git/COMMIT_EDITMSG +5 -0
  5. package/.git/FETCH_HEAD +1 -0
  6. package/.git/HEAD +1 -0
  7. package/.git/config +18 -0
  8. package/.git/config.worktree +5 -0
  9. package/.git/description +1 -0
  10. package/.git/hooks/applypatch-msg.sample +15 -0
  11. package/.git/hooks/commit-msg.sample +24 -0
  12. package/.git/hooks/fsmonitor-watchman.sample +174 -0
  13. package/.git/hooks/post-update.sample +8 -0
  14. package/.git/hooks/pre-applypatch.sample +14 -0
  15. package/.git/hooks/pre-commit.sample +49 -0
  16. package/.git/hooks/pre-merge-commit.sample +13 -0
  17. package/.git/hooks/pre-push.sample +53 -0
  18. package/.git/hooks/pre-rebase.sample +169 -0
  19. package/.git/hooks/pre-receive.sample +24 -0
  20. package/.git/hooks/prepare-commit-msg.sample +42 -0
  21. package/.git/hooks/push-to-checkout.sample +78 -0
  22. package/.git/hooks/sendemail-validate.sample +77 -0
  23. package/.git/hooks/update.sample +128 -0
  24. package/.git/index +0 -0
  25. package/.git/info/exclude +6 -0
  26. package/.git/logs/HEAD +2 -0
  27. package/.git/logs/refs/heads/main +2 -0
  28. package/.git/logs/refs/remotes/origin/main +2 -0
  29. package/.git/objects/07/c0af7cd711cab6a55ad3dc349ac8c70775623c +0 -0
  30. package/.git/objects/0d/698432e2c44311c17b845cc63093a898972b95 +0 -0
  31. package/.git/objects/10/ba4a7d64968326293182d571a9c73f5e041fb6 +3 -0
  32. package/.git/objects/12/069a5aa45479564e00749f730582627a276a55 +3 -0
  33. package/.git/objects/14/5ab9cf82c40696a07ab42f117ba199acb2a50b +4 -0
  34. package/.git/objects/17/7b0dc4bf884f8ae0403b4aad053e76baafd632 +2 -0
  35. package/.git/objects/1d/a517ce3527df45a4f28e52ff2c0d9d1c8179f6 +0 -0
  36. package/.git/objects/27/50076ed23b5211a52ef834f40f183ddecb917a +0 -0
  37. package/.git/objects/2a/96e4bb57fa4bd69c719dca224b17b569e94e82 +2 -0
  38. package/.git/objects/2b/38c26b4ec43b8f5574acb164d2ba64bca8e230 +0 -0
  39. package/.git/objects/2c/61d463bee185f04e7c2bd1d2a15ad1117c589e +0 -0
  40. package/.git/objects/2d/22dbc836cfd75c8d7640ebe5a4fe90bd2c23c6 +0 -0
  41. package/.git/objects/2e/58414df7b4d5c972167a83270f78fc4ed508f5 +0 -0
  42. package/.git/objects/38/0be191ee415827a1217f46626fea4fefba48e5 +0 -0
  43. package/.git/objects/3a/93aa29cd19bdc95a87d15910baec8455f8b7b7 +0 -0
  44. package/.git/objects/50/150b739272269be2ede552448013eba65323da +0 -0
  45. package/.git/objects/53/2b7b796ffd3223f913a5a5e1e17743ee3591fe +0 -0
  46. package/.git/objects/54/a8535f50287f6a7a8c00aed143ca6e5ee5f5d1 +0 -0
  47. package/.git/objects/5d/4aa0709f62f1bc1fa80251208b570cb3b89d9c +0 -0
  48. package/.git/objects/63/1c43e00d4c34ba914c510f4fe2e6df15b8b06e +0 -0
  49. package/.git/objects/63/9900d13c6182e452e33a3bd638e70a0146c785 +2 -0
  50. package/.git/objects/64/3fa02661c3a1b54205729a75d2fb5f013833af +0 -0
  51. package/.git/objects/6c/59086d862516d2fffa5da2035e5003100fb5c7 +0 -0
  52. package/.git/objects/6c/b74f90a0c799eea1c54a04d8d6a8a9e9691cca +2 -0
  53. package/.git/objects/70/0e093acb1c1e55d523507411b7940a01a3bb65 +0 -0
  54. package/.git/objects/71/1ba2014bc137dece4c4156ff5e77e6abaeb95c +0 -0
  55. package/.git/objects/74/c82ffe8eb71efecbccfdf67b590949c944dd1a +0 -0
  56. package/.git/objects/76/1413a07839108abb46ef0e4490bd1c1444b4fc +0 -0
  57. package/.git/objects/77/96f8282f2c553ecdde72bc976478eb3a8a948e +0 -0
  58. package/.git/objects/79/ee123c2b23e069e35ed634d687e17f731cc702 +0 -0
  59. package/.git/objects/7d/80af9735f0527db35ecc79ae3c887e445cb3e0 +0 -0
  60. package/.git/objects/85/1d8d26c2a946ccfd5461a2573665c1fb7d71f7 +0 -0
  61. package/.git/objects/85/c5f24b8c55496f82a2680f94a7d3fa32887ea0 +0 -0
  62. package/.git/objects/87/00b3833597b600e6f0ffcfbaf622fd8cfaa9c3 +1 -0
  63. package/.git/objects/87/f31d3df8e7edbf96e45d80126f878b8e0c243f +0 -0
  64. package/.git/objects/8b/cc95b71b20c79513e9157b921238ca2c79f906 +0 -0
  65. package/.git/objects/8d/d819967bdc8457f04c1b5498bce89380d6552b +7 -0
  66. package/.git/objects/91/b0fba96bf994b6232bb923f2a9929fc258a05f +0 -0
  67. package/.git/objects/92/608c4e069a4301d466d8d18daecbe7abc9500e +0 -0
  68. package/.git/objects/94/a25f7f4cb416c083d265558da75d457237d671 +0 -0
  69. package/.git/objects/9c/69411050eac81b5dce09314516a30b38c41a20 +3 -0
  70. package/.git/objects/9f/54b5b21769da383f12fb9c7bd364bdb05e13a9 +0 -0
  71. package/.git/objects/a5/886c22eb68b152bb95ec5151504676d8e78ae1 +0 -0
  72. package/.git/objects/a6/582c9510e264f3b46fc3b20597a16923a03523 +0 -0
  73. package/.git/objects/a9/d7db9c0a81b2db47ca92e4e180b30090b27632 +0 -0
  74. package/.git/objects/ad/c418f9105db9ec488de6831584b82e3929eaef +0 -0
  75. package/.git/objects/b0/c1c68fbbad6b190434cd2bb0e807796bd56fca +0 -0
  76. package/.git/objects/b1/0f0d0ef3bc5aaf3a91be0b991cb6fe0fcadc40 +0 -0
  77. package/.git/objects/b6/3b642cfb4254fc0f7058903abc5b481895c4ef +0 -0
  78. package/.git/objects/b8/a2c461d7ffed9d4ba242c58a52341832b99e0a +0 -0
  79. package/.git/objects/ba/5b53857ced8d97f6d6e3fb3538b3273743dafc +2 -0
  80. package/.git/objects/ba/5ef7104c0d019a9692cd2d78261d96f29e916f +0 -0
  81. package/.git/objects/bc/91e0079eb00d56dcde16714748f36a10dbd525 +0 -0
  82. package/.git/objects/c1/beeb895b71b709e48560460199db11b3fc18af +0 -0
  83. package/.git/objects/c5/166c2aeebaeb0a0f7654223c843c50cd4c8953 +0 -0
  84. package/.git/objects/d4/0a2096fc36c1fd9c7a9263c458d5e8a4a5bee7 +0 -0
  85. package/.git/objects/e1/b744bc6076ebeb02fa86af98583ac22e070ec0 +0 -0
  86. package/.git/objects/e8/019be9e978a8e2f094e748cbb6ce0c7163adee +0 -0
  87. package/.git/objects/eb/1d744c4e9b47bc902647298424320078e32980 +0 -0
  88. package/.git/objects/ee/15af38be7f3c3862229e59c6b5688f8e0f6099 +0 -0
  89. package/.git/objects/f1/9e0f429f231c34432784f9e33b92ac1d598c17 +0 -0
  90. package/.git/objects/f9/86f2fe82493e85651396b6d5886316d1c890dd +0 -0
  91. package/.git/refs/heads/main +1 -0
  92. package/.git/refs/remotes/origin/main +1 -0
  93. package/.git/refs/tags/v0.1.1 +1 -0
  94. package/.git/shallow +1 -0
  95. package/.github/dependabot.yml +10 -0
  96. package/.github/workflows/ci.yml +12 -0
  97. package/.github/workflows/issues.yml +13 -0
  98. package/.github/workflows/publish.yml +21 -0
  99. package/.gitignore +13 -0
  100. package/.idea/.gitignore +10 -0
  101. package/.idea/aws.xml +11 -0
  102. package/.idea/codeStyles/Project.xml +58 -0
  103. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  104. package/.idea/commons-js.iml +14 -0
  105. package/.idea/inspectionProfiles/Project_Default.xml +7 -0
  106. package/.idea/misc.xml +6 -0
  107. package/.idea/modules.xml +8 -0
  108. package/.idea/prettier.xml +6 -0
  109. package/.idea/vcs.xml +6 -0
  110. package/.npmrc +1 -0
  111. package/.prettierignore +7 -0
  112. package/.prettierrc.cjs +3 -0
  113. package/LICENSE +26 -0
  114. package/README.md +14 -0
  115. package/coverage/base.css +224 -0
  116. package/coverage/bitsnbytes/b64.mts.html +559 -0
  117. package/coverage/bitsnbytes/index.html +131 -0
  118. package/coverage/bitsnbytes/index.mts.html +88 -0
  119. package/coverage/clover.xml +1003 -0
  120. package/coverage/coverage-final.json +15 -0
  121. package/coverage/errors/errors.mts.html +898 -0
  122. package/coverage/errors/index.html +131 -0
  123. package/coverage/errors/index.mts.html +88 -0
  124. package/coverage/favicon.png +0 -0
  125. package/coverage/http/http-method.mts.html +112 -0
  126. package/coverage/http/http-status-code.mts.html +211 -0
  127. package/coverage/http/index.html +146 -0
  128. package/coverage/http/index.mts.html +91 -0
  129. package/coverage/index.html +191 -0
  130. package/coverage/lang/index.html +146 -0
  131. package/coverage/lang/index.mts.html +91 -0
  132. package/coverage/lang/sleep.mts.html +109 -0
  133. package/coverage/lang/type-functions.mts.html +124 -0
  134. package/coverage/oauth/crypto-functions.mts.html +217 -0
  135. package/coverage/oauth/index.html +131 -0
  136. package/coverage/oauth/index.mts.html +88 -0
  137. package/coverage/prettify.css +1 -0
  138. package/coverage/sort-arrow-sprite.png +0 -0
  139. package/coverage/validator/index.html +131 -0
  140. package/coverage/validator/index.mts.html +88 -0
  141. package/coverage/validator/validators.mts.html +1237 -0
  142. package/dist/package.json +72 -0
  143. package/node_modules/@eslint/eslintrc/LICENSE +19 -0
  144. package/node_modules/@eslint/eslintrc/README.md +115 -0
  145. package/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs +1104 -0
  146. package/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map +1 -0
  147. package/node_modules/@eslint/eslintrc/dist/eslintrc.cjs +4344 -0
  148. package/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map +1 -0
  149. package/node_modules/@eslint/eslintrc/package.json +82 -0
  150. package/node_modules/@eslint/eslintrc/universal.js +9 -0
  151. package/node_modules/@eslint/js/LICENSE +19 -0
  152. package/node_modules/@eslint/js/README.md +57 -0
  153. package/node_modules/@eslint/js/package.json +31 -0
  154. package/node_modules/@eslint/js/src/index.js +17 -0
  155. package/node_modules/@eslint-community/eslint-utils/LICENSE +21 -0
  156. package/node_modules/@eslint-community/eslint-utils/README.md +37 -0
  157. package/node_modules/@eslint-community/eslint-utils/index.js +2068 -0
  158. package/node_modules/@eslint-community/eslint-utils/index.js.map +1 -0
  159. package/node_modules/@eslint-community/eslint-utils/index.mjs +2027 -0
  160. package/node_modules/@eslint-community/eslint-utils/index.mjs.map +1 -0
  161. package/node_modules/@eslint-community/eslint-utils/package.json +73 -0
  162. package/node_modules/@eslint-community/regexpp/LICENSE +21 -0
  163. package/node_modules/@eslint-community/regexpp/README.md +177 -0
  164. package/node_modules/@eslint-community/regexpp/index.d.ts +1065 -0
  165. package/node_modules/@eslint-community/regexpp/index.js +2747 -0
  166. package/node_modules/@eslint-community/regexpp/index.js.map +1 -0
  167. package/node_modules/@eslint-community/regexpp/index.mjs +2737 -0
  168. package/node_modules/@eslint-community/regexpp/index.mjs.map +1 -0
  169. package/node_modules/@eslint-community/regexpp/package.json +93 -0
  170. package/node_modules/@types/node/LICENSE +21 -0
  171. package/node_modules/@types/node/README.md +15 -0
  172. package/node_modules/@types/node/package.json +217 -0
  173. package/node_modules/@typescript-eslint/eslint-plugin/LICENSE +21 -0
  174. package/node_modules/@typescript-eslint/eslint-plugin/README.md +10 -0
  175. package/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +23 -0
  176. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/README.md +23 -0
  177. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/TEMPLATE.md +26 -0
  178. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/adjacent-overload-signatures.md +93 -0
  179. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/array-type.md +103 -0
  180. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/await-thenable.md +40 -0
  181. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-ts-comment.md +148 -0
  182. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-tslint-comment.md +39 -0
  183. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-types.md +183 -0
  184. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/block-spacing.md +12 -0
  185. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/brace-style.md +12 -0
  186. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/camelcase.md +10 -0
  187. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/class-literal-property-style.md +114 -0
  188. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/comma-dangle.md +22 -0
  189. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/comma-spacing.md +12 -0
  190. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-generic-constructors.md +73 -0
  191. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-indexed-object-style.md +80 -0
  192. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-assertions.md +108 -0
  193. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-definitions.md +82 -0
  194. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-exports.md +100 -0
  195. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-imports.md +105 -0
  196. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/default-param-last.md +48 -0
  197. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/dot-notation.md +77 -0
  198. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-function-return-type.md +319 -0
  199. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-member-accessibility.md +331 -0
  200. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-module-boundary-types.md +250 -0
  201. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/func-call-spacing.md +12 -0
  202. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/indent.md +20 -0
  203. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/init-declarations.md +12 -0
  204. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/key-spacing.md +12 -0
  205. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/keyword-spacing.md +12 -0
  206. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/lines-around-comment.md +37 -0
  207. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/lines-between-class-members.md +63 -0
  208. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-delimiter-style.md +161 -0
  209. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-ordering.md +1360 -0
  210. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/method-signature-style.md +110 -0
  211. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/naming-convention.md +706 -0
  212. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-array-constructor.md +35 -0
  213. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-base-to-string.md +88 -0
  214. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md +56 -0
  215. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-confusing-void-expression.md +116 -0
  216. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-dupe-class-members.md +12 -0
  217. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-duplicate-enum-values.md +50 -0
  218. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-duplicate-imports.md +12 -0
  219. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-duplicate-type-constituents.md +61 -0
  220. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-dynamic-delete.md +53 -0
  221. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-empty-function.md +88 -0
  222. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-empty-interface.md +70 -0
  223. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-explicit-any.md +174 -0
  224. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-non-null-assertion.md +52 -0
  225. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-parens.md +12 -0
  226. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-semi.md +12 -0
  227. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extraneous-class.md +294 -0
  228. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-floating-promises.md +106 -0
  229. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-for-in-array.md +56 -0
  230. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-implicit-any-catch.md +73 -0
  231. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-implied-eval.md +101 -0
  232. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-import-type-side-effects.md +75 -0
  233. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-inferrable-types.md +103 -0
  234. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-invalid-this.md +12 -0
  235. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-invalid-void-type.md +113 -0
  236. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-loop-func.md +12 -0
  237. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-loss-of-precision.md +12 -0
  238. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-magic-numbers.md +131 -0
  239. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-meaningless-void-operator.md +47 -0
  240. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-misused-new.md +46 -0
  241. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-misused-promises.md +245 -0
  242. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-mixed-enums.md +88 -0
  243. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-namespace.md +129 -0
  244. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-asserted-nullish-coalescing.md +49 -0
  245. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md +35 -0
  246. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-assertion.md +42 -0
  247. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-parameter-properties.md +406 -0
  248. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-redeclare.md +73 -0
  249. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-redundant-type-constituents.md +78 -0
  250. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-require-imports.md +37 -0
  251. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-restricted-imports.md +63 -0
  252. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-shadow.md +101 -0
  253. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-this-alias.md +38 -0
  254. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-throw-literal.md +111 -0
  255. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-type-alias.md +602 -0
  256. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.md +133 -0
  257. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-condition.md +103 -0
  258. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-qualifier.md +51 -0
  259. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md +73 -0
  260. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md +77 -0
  261. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-constraint.md +55 -0
  262. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-argument.md +83 -0
  263. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-assignment.md +86 -0
  264. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-call.md +58 -0
  265. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-declaration-merging.md +54 -0
  266. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-enum-comparison.md +75 -0
  267. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-member-access.md +64 -0
  268. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-return.md +103 -0
  269. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unused-expressions.md +12 -0
  270. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unused-vars.md +12 -0
  271. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-use-before-define.md +97 -0
  272. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-useless-constructor.md +21 -0
  273. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-useless-empty-export.md +43 -0
  274. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-var-requires.md +37 -0
  275. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/non-nullable-type-assertion-style.md +41 -0
  276. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/object-curly-spacing.md +12 -0
  277. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/padding-line-between-statements.md +35 -0
  278. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/parameter-properties.md +485 -0
  279. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-as-const.md +44 -0
  280. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-enum-initializers.md +62 -0
  281. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-for-of.md +46 -0
  282. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-function-type.md +92 -0
  283. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-includes.md +77 -0
  284. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-literal-enum-member.md +101 -0
  285. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-namespace-keyword.md +47 -0
  286. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-nullish-coalescing.md +164 -0
  287. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-optional-chain.md +71 -0
  288. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md +268 -0
  289. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-readonly.md +87 -0
  290. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md +58 -0
  291. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-regexp-exec.md +46 -0
  292. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-return-this-type.md +87 -0
  293. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md +57 -0
  294. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-ts-expect-error.md +69 -0
  295. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/promise-function-async.md +59 -0
  296. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/quotes.md +12 -0
  297. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/require-array-sort-compare.md +78 -0
  298. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/require-await.md +24 -0
  299. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/restrict-plus-operands.md +208 -0
  300. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/restrict-template-expressions.md +117 -0
  301. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/return-await.md +216 -0
  302. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/semi.md +16 -0
  303. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/sort-type-constituents.md +101 -0
  304. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/sort-type-union-intersection-members.md +106 -0
  305. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-before-blocks.md +42 -0
  306. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-before-function-paren.md +12 -0
  307. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-infix-ops.md +16 -0
  308. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/strict-boolean-expressions.md +183 -0
  309. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/switch-exhaustiveness-check.md +106 -0
  310. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/triple-slash-reference.md +61 -0
  311. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/type-annotation-spacing.md +303 -0
  312. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/typedef.md +320 -0
  313. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/unbound-method.md +103 -0
  314. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/unified-signatures.md +70 -0
  315. package/node_modules/@typescript-eslint/eslint-plugin/index.d.ts +4 -0
  316. package/node_modules/@typescript-eslint/eslint-plugin/package.json +87 -0
  317. package/node_modules/@typescript-eslint/parser/LICENSE +22 -0
  318. package/node_modules/@typescript-eslint/parser/README.md +10 -0
  319. package/node_modules/@typescript-eslint/parser/dist/index.js +17 -0
  320. package/node_modules/@typescript-eslint/parser/package.json +75 -0
  321. package/node_modules/@typescript-eslint/scope-manager/LICENSE +21 -0
  322. package/node_modules/@typescript-eslint/scope-manager/README.md +8 -0
  323. package/node_modules/@typescript-eslint/scope-manager/dist/index.js +31 -0
  324. package/node_modules/@typescript-eslint/scope-manager/package.json +67 -0
  325. package/node_modules/@typescript-eslint/type-utils/LICENSE +21 -0
  326. package/node_modules/@typescript-eslint/type-utils/README.md +12 -0
  327. package/node_modules/@typescript-eslint/type-utils/dist/index.js +36 -0
  328. package/node_modules/@typescript-eslint/type-utils/package.json +71 -0
  329. package/node_modules/@typescript-eslint/types/LICENSE +21 -0
  330. package/node_modules/@typescript-eslint/types/README.md +12 -0
  331. package/node_modules/@typescript-eslint/types/dist/index.js +24 -0
  332. package/node_modules/@typescript-eslint/types/package.json +84 -0
  333. package/node_modules/@typescript-eslint/typescript-estree/LICENSE +26 -0
  334. package/node_modules/@typescript-eslint/typescript-estree/README.md +10 -0
  335. package/node_modules/@typescript-eslint/typescript-estree/dist/index.js +38 -0
  336. package/node_modules/@typescript-eslint/typescript-estree/package.json +85 -0
  337. package/node_modules/@typescript-eslint/utils/LICENSE +21 -0
  338. package/node_modules/@typescript-eslint/utils/README.md +10 -0
  339. package/node_modules/@typescript-eslint/utils/dist/index.js +41 -0
  340. package/node_modules/@typescript-eslint/utils/package.json +70 -0
  341. package/node_modules/@typescript-eslint/visitor-keys/LICENSE +21 -0
  342. package/node_modules/@typescript-eslint/visitor-keys/README.md +10 -0
  343. package/node_modules/@typescript-eslint/visitor-keys/dist/index.js +8 -0
  344. package/node_modules/@typescript-eslint/visitor-keys/package.json +60 -0
  345. package/node_modules/@vitest/coverage-v8/LICENSE +21 -0
  346. package/node_modules/@vitest/coverage-v8/dist/index.js +54 -0
  347. package/node_modules/@vitest/coverage-v8/package.json +72 -0
  348. package/package.json +6 -6
  349. package/pnpm-lock.yaml +3277 -0
  350. package/src/bitsnbytes/b64.mts +158 -0
  351. package/src/bitsnbytes/b64.test.mts +78 -0
  352. package/src/bitsnbytes/index.mts +1 -0
  353. package/src/errors/errors.mts +271 -0
  354. package/src/errors/errors.test.mts +74 -0
  355. package/src/errors/index.mts +1 -0
  356. package/src/http/http-method.mts +9 -0
  357. package/src/http/http-status-code.mts +42 -0
  358. package/src/http/index.mts +2 -0
  359. package/src/lang/index.mts +2 -0
  360. package/src/lang/sleep.mts +8 -0
  361. package/src/lang/type-functions.mts +13 -0
  362. package/src/oauth/crypto-functions.mts +44 -0
  363. package/src/oauth/crypto-functions.test.mts +48 -0
  364. package/src/oauth/index.mts +1 -0
  365. package/src/validator/index.mts +1 -0
  366. package/src/validator/validators.mts +384 -0
  367. package/src/validator/validators.test.mts +245 -0
  368. package/tsconfig.json +18 -0
  369. /package/{bitsnbytes → dist/bitsnbytes}/b64.d.mts +0 -0
  370. /package/{bitsnbytes → dist/bitsnbytes}/b64.d.mts.map +0 -0
  371. /package/{bitsnbytes → dist/bitsnbytes}/b64.mjs +0 -0
  372. /package/{bitsnbytes → dist/bitsnbytes}/b64.mjs.map +0 -0
  373. /package/{bitsnbytes → dist/bitsnbytes}/b64.test.d.mts +0 -0
  374. /package/{bitsnbytes → dist/bitsnbytes}/b64.test.d.mts.map +0 -0
  375. /package/{bitsnbytes → dist/bitsnbytes}/b64.test.mjs +0 -0
  376. /package/{bitsnbytes → dist/bitsnbytes}/b64.test.mjs.map +0 -0
  377. /package/{bitsnbytes → dist/bitsnbytes}/index.d.mts +0 -0
  378. /package/{bitsnbytes → dist/bitsnbytes}/index.d.mts.map +0 -0
  379. /package/{bitsnbytes → dist/bitsnbytes}/index.mjs +0 -0
  380. /package/{bitsnbytes → dist/bitsnbytes}/index.mjs.map +0 -0
  381. /package/{errors → dist/errors}/errors.d.mts +0 -0
  382. /package/{errors → dist/errors}/errors.d.mts.map +0 -0
  383. /package/{errors → dist/errors}/errors.mjs +0 -0
  384. /package/{errors → dist/errors}/errors.mjs.map +0 -0
  385. /package/{errors → dist/errors}/errors.test.d.mts +0 -0
  386. /package/{errors → dist/errors}/errors.test.d.mts.map +0 -0
  387. /package/{errors → dist/errors}/errors.test.mjs +0 -0
  388. /package/{errors → dist/errors}/errors.test.mjs.map +0 -0
  389. /package/{errors → dist/errors}/index.d.mts +0 -0
  390. /package/{errors → dist/errors}/index.d.mts.map +0 -0
  391. /package/{errors → dist/errors}/index.mjs +0 -0
  392. /package/{errors → dist/errors}/index.mjs.map +0 -0
  393. /package/{http → dist/http}/http-method.d.mts +0 -0
  394. /package/{http → dist/http}/http-method.d.mts.map +0 -0
  395. /package/{http → dist/http}/http-method.mjs +0 -0
  396. /package/{http → dist/http}/http-method.mjs.map +0 -0
  397. /package/{http → dist/http}/http-status-code.d.mts +0 -0
  398. /package/{http → dist/http}/http-status-code.d.mts.map +0 -0
  399. /package/{http → dist/http}/http-status-code.mjs +0 -0
  400. /package/{http → dist/http}/http-status-code.mjs.map +0 -0
  401. /package/{http → dist/http}/index.d.mts +0 -0
  402. /package/{http → dist/http}/index.d.mts.map +0 -0
  403. /package/{http → dist/http}/index.mjs +0 -0
  404. /package/{http → dist/http}/index.mjs.map +0 -0
  405. /package/{lang → dist/lang}/index.d.mts +0 -0
  406. /package/{lang → dist/lang}/index.d.mts.map +0 -0
  407. /package/{lang → dist/lang}/index.mjs +0 -0
  408. /package/{lang → dist/lang}/index.mjs.map +0 -0
  409. /package/{lang → dist/lang}/sleep.d.mts +0 -0
  410. /package/{lang → dist/lang}/sleep.d.mts.map +0 -0
  411. /package/{lang → dist/lang}/sleep.mjs +0 -0
  412. /package/{lang → dist/lang}/sleep.mjs.map +0 -0
  413. /package/{lang → dist/lang}/type-functions.d.mts +0 -0
  414. /package/{lang → dist/lang}/type-functions.d.mts.map +0 -0
  415. /package/{lang → dist/lang}/type-functions.mjs +0 -0
  416. /package/{lang → dist/lang}/type-functions.mjs.map +0 -0
  417. /package/{oauth → dist/oauth}/crypto-functions.d.mts +0 -0
  418. /package/{oauth → dist/oauth}/crypto-functions.d.mts.map +0 -0
  419. /package/{oauth → dist/oauth}/crypto-functions.mjs +0 -0
  420. /package/{oauth → dist/oauth}/crypto-functions.mjs.map +0 -0
  421. /package/{oauth → dist/oauth}/crypto-functions.test.d.mts +0 -0
  422. /package/{oauth → dist/oauth}/crypto-functions.test.d.mts.map +0 -0
  423. /package/{oauth → dist/oauth}/crypto-functions.test.mjs +0 -0
  424. /package/{oauth → dist/oauth}/crypto-functions.test.mjs.map +0 -0
  425. /package/{oauth → dist/oauth}/index.d.mts +0 -0
  426. /package/{oauth → dist/oauth}/index.d.mts.map +0 -0
  427. /package/{oauth → dist/oauth}/index.mjs +0 -0
  428. /package/{oauth → dist/oauth}/index.mjs.map +0 -0
  429. /package/{validator → dist/validator}/index.d.mts +0 -0
  430. /package/{validator → dist/validator}/index.d.mts.map +0 -0
  431. /package/{validator → dist/validator}/index.mjs +0 -0
  432. /package/{validator → dist/validator}/index.mjs.map +0 -0
  433. /package/{validator → dist/validator}/validators.d.mts +0 -0
  434. /package/{validator → dist/validator}/validators.d.mts.map +0 -0
  435. /package/{validator → dist/validator}/validators.mjs +0 -0
  436. /package/{validator → dist/validator}/validators.mjs.map +0 -0
  437. /package/{validator → dist/validator}/validators.test.d.mts +0 -0
  438. /package/{validator → dist/validator}/validators.test.d.mts.map +0 -0
  439. /package/{validator → dist/validator}/validators.test.mjs +0 -0
  440. /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.