immosquare-cleaner 0.1.32 → 0.1.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (376) hide show
  1. checksums.yaml +4 -4
  2. data/lib/immosquare-cleaner/version.rb +1 -1
  3. data/node_modules/@eslint/eslintrc/README.md +15 -4
  4. data/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs +57 -18
  5. data/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map +1 -1
  6. data/node_modules/@eslint/eslintrc/dist/eslintrc.cjs +60 -34
  7. data/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map +1 -1
  8. data/node_modules/@eslint/eslintrc/lib/config-array/config-array.js +3 -16
  9. data/node_modules/@eslint/eslintrc/lib/shared/config-validator.js +63 -18
  10. data/node_modules/@eslint/eslintrc/package.json +4 -4
  11. data/node_modules/@eslint/js/package.json +2 -2
  12. data/node_modules/@eslint/js/src/configs/eslint-all.js +9 -1
  13. data/node_modules/@eslint/js/src/configs/eslint-recommended.js +12 -5
  14. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/LICENSE +201 -0
  15. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/README.md +105 -0
  16. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs +384 -0
  17. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.d.cts +27 -0
  18. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/dist/index.d.ts +16 -0
  19. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/dist/visitor-keys.d.ts +12 -0
  20. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/lib/index.js +65 -0
  21. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/lib/visitor-keys.js +315 -0
  22. data/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/package.json +74 -0
  23. data/node_modules/@humanwhocodes/config-array/api.js +114 -16
  24. data/node_modules/@humanwhocodes/config-array/package.json +5 -3
  25. data/node_modules/@humanwhocodes/object-schema/CHANGELOG.md +7 -0
  26. data/node_modules/@humanwhocodes/object-schema/package.json +6 -1
  27. data/node_modules/@humanwhocodes/retry/LICENSE +201 -0
  28. data/node_modules/@humanwhocodes/retry/README.md +122 -0
  29. data/node_modules/@humanwhocodes/retry/dist/retrier.cjs +267 -0
  30. data/node_modules/@humanwhocodes/retry/dist/retrier.d.ts +24 -0
  31. data/node_modules/@humanwhocodes/retry/dist/retrier.js +265 -0
  32. data/node_modules/@humanwhocodes/retry/dist/retrier.min.js +1 -0
  33. data/node_modules/@humanwhocodes/retry/dist/retrier.mjs +265 -0
  34. data/node_modules/@humanwhocodes/retry/package.json +74 -0
  35. data/node_modules/@types/semver-utils/LICENSE +21 -0
  36. data/node_modules/@types/semver-utils/README.md +34 -0
  37. data/node_modules/@types/semver-utils/index.d.ts +15 -0
  38. data/node_modules/@types/semver-utils/package.json +25 -0
  39. data/node_modules/acorn/CHANGELOG.md +36 -0
  40. data/node_modules/acorn/README.md +8 -3
  41. data/node_modules/acorn/dist/acorn.d.mts +857 -26
  42. data/node_modules/acorn/dist/acorn.d.ts +833 -268
  43. data/node_modules/acorn/dist/acorn.js +33 -21
  44. data/node_modules/acorn/dist/acorn.mjs +33 -21
  45. data/node_modules/acorn/package.json +1 -1
  46. data/node_modules/cacheable-request/node_modules/keyv/README.md +429 -0
  47. data/node_modules/cacheable-request/node_modules/keyv/package.json +57 -0
  48. data/node_modules/cacheable-request/node_modules/keyv/src/index.d.ts +112 -0
  49. data/node_modules/cacheable-request/node_modules/keyv/src/index.js +264 -0
  50. data/node_modules/doctrine/CHANGELOG.md +0 -7
  51. data/node_modules/doctrine/lib/doctrine.js +1 -0
  52. data/node_modules/doctrine/package.json +8 -9
  53. data/node_modules/eslint/README.md +31 -28
  54. data/node_modules/eslint/bin/eslint.js +4 -3
  55. data/node_modules/eslint/conf/ecma-version.js +16 -0
  56. data/node_modules/eslint/conf/globals.js +1 -0
  57. data/node_modules/eslint/conf/rule-type-list.json +3 -1
  58. data/node_modules/eslint/lib/api.js +7 -11
  59. data/node_modules/eslint/lib/cli-engine/cli-engine.js +14 -3
  60. data/node_modules/eslint/lib/cli-engine/formatters/formatters-meta.json +1 -29
  61. data/node_modules/eslint/lib/cli-engine/lint-result-cache.js +2 -2
  62. data/node_modules/eslint/lib/cli.js +115 -36
  63. data/node_modules/eslint/lib/config/default-config.js +3 -0
  64. data/node_modules/eslint/lib/config/flat-config-array.js +110 -24
  65. data/node_modules/eslint/lib/config/flat-config-helpers.js +41 -20
  66. data/node_modules/eslint/lib/config/flat-config-schema.js +1 -7
  67. data/node_modules/eslint/lib/config/rule-validator.js +42 -6
  68. data/node_modules/eslint/lib/eslint/eslint-helpers.js +116 -58
  69. data/node_modules/eslint/lib/eslint/eslint.js +892 -377
  70. data/node_modules/eslint/lib/eslint/index.js +2 -2
  71. data/node_modules/eslint/lib/eslint/legacy-eslint.js +728 -0
  72. data/node_modules/eslint/lib/linter/apply-disable-directives.js +59 -31
  73. data/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js +0 -1
  74. data/node_modules/eslint/lib/linter/code-path-analysis/code-path.js +32 -30
  75. data/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js +1 -1
  76. data/node_modules/eslint/lib/linter/config-comment-parser.js +8 -11
  77. data/node_modules/eslint/lib/linter/index.js +1 -3
  78. data/node_modules/eslint/lib/linter/interpolate.js +24 -2
  79. data/node_modules/eslint/lib/linter/linter.js +428 -207
  80. data/node_modules/eslint/lib/linter/report-translator.js +3 -3
  81. data/node_modules/eslint/lib/linter/rules.js +6 -15
  82. data/node_modules/eslint/lib/linter/source-code-fixer.js +1 -1
  83. data/node_modules/eslint/lib/linter/timing.js +16 -8
  84. data/node_modules/eslint/lib/options.js +35 -3
  85. data/node_modules/eslint/lib/rule-tester/index.js +3 -1
  86. data/node_modules/eslint/lib/rule-tester/rule-tester.js +424 -347
  87. data/node_modules/eslint/lib/rules/array-bracket-newline.js +1 -1
  88. data/node_modules/eslint/lib/rules/array-bracket-spacing.js +1 -1
  89. data/node_modules/eslint/lib/rules/block-scoped-var.js +1 -1
  90. data/node_modules/eslint/lib/rules/callback-return.js +2 -2
  91. data/node_modules/eslint/lib/rules/camelcase.js +3 -5
  92. data/node_modules/eslint/lib/rules/capitalized-comments.js +10 -7
  93. data/node_modules/eslint/lib/rules/comma-dangle.js +1 -1
  94. data/node_modules/eslint/lib/rules/comma-style.js +2 -2
  95. data/node_modules/eslint/lib/rules/complexity.js +14 -1
  96. data/node_modules/eslint/lib/rules/constructor-super.js +99 -100
  97. data/node_modules/eslint/lib/rules/default-case.js +1 -1
  98. data/node_modules/eslint/lib/rules/eol-last.js +2 -2
  99. data/node_modules/eslint/lib/rules/function-paren-newline.js +2 -2
  100. data/node_modules/eslint/lib/rules/indent-legacy.js +5 -5
  101. data/node_modules/eslint/lib/rules/indent.js +5 -5
  102. data/node_modules/eslint/lib/rules/index.js +1 -2
  103. data/node_modules/eslint/lib/rules/key-spacing.js +2 -2
  104. data/node_modules/eslint/lib/rules/line-comment-position.js +1 -1
  105. data/node_modules/eslint/lib/rules/lines-around-directive.js +2 -2
  106. data/node_modules/eslint/lib/rules/max-depth.js +1 -1
  107. data/node_modules/eslint/lib/rules/max-len.js +3 -3
  108. data/node_modules/eslint/lib/rules/max-lines.js +3 -3
  109. data/node_modules/eslint/lib/rules/max-nested-callbacks.js +1 -1
  110. data/node_modules/eslint/lib/rules/max-params.js +1 -1
  111. data/node_modules/eslint/lib/rules/max-statements.js +1 -1
  112. data/node_modules/eslint/lib/rules/multiline-comment-style.js +7 -7
  113. data/node_modules/eslint/lib/rules/new-cap.js +1 -1
  114. data/node_modules/eslint/lib/rules/newline-after-var.js +1 -1
  115. data/node_modules/eslint/lib/rules/newline-before-return.js +1 -1
  116. data/node_modules/eslint/lib/rules/no-case-declarations.js +13 -1
  117. data/node_modules/eslint/lib/rules/no-constant-binary-expression.js +7 -8
  118. data/node_modules/eslint/lib/rules/no-constant-condition.js +18 -7
  119. data/node_modules/eslint/lib/rules/no-constructor-return.js +2 -2
  120. data/node_modules/eslint/lib/rules/no-dupe-class-members.js +2 -2
  121. data/node_modules/eslint/lib/rules/no-else-return.js +1 -1
  122. data/node_modules/eslint/lib/rules/no-empty-function.js +2 -2
  123. data/node_modules/eslint/lib/rules/no-empty-static-block.js +1 -1
  124. data/node_modules/eslint/lib/rules/no-extend-native.js +1 -2
  125. data/node_modules/eslint/lib/rules/no-extra-semi.js +1 -1
  126. data/node_modules/eslint/lib/rules/no-fallthrough.js +41 -16
  127. data/node_modules/eslint/lib/rules/no-implicit-coercion.js +66 -24
  128. data/node_modules/eslint/lib/rules/no-inner-declarations.js +23 -2
  129. data/node_modules/eslint/lib/rules/no-invalid-regexp.js +1 -1
  130. data/node_modules/eslint/lib/rules/no-invalid-this.js +1 -1
  131. data/node_modules/eslint/lib/rules/no-lone-blocks.js +3 -3
  132. data/node_modules/eslint/lib/rules/no-loss-of-precision.js +1 -1
  133. data/node_modules/eslint/lib/rules/no-misleading-character-class.js +225 -69
  134. data/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js +1 -1
  135. data/node_modules/eslint/lib/rules/no-multiple-empty-lines.js +1 -1
  136. data/node_modules/eslint/lib/rules/no-new-native-nonconstructor.js +1 -1
  137. data/node_modules/eslint/lib/rules/no-new-symbol.js +8 -1
  138. data/node_modules/eslint/lib/rules/no-restricted-globals.js +1 -1
  139. data/node_modules/eslint/lib/rules/no-restricted-imports.js +186 -40
  140. data/node_modules/eslint/lib/rules/no-restricted-modules.js +2 -2
  141. data/node_modules/eslint/lib/rules/no-return-await.js +1 -1
  142. data/node_modules/eslint/lib/rules/no-sequences.js +1 -0
  143. data/node_modules/eslint/lib/rules/no-this-before-super.js +45 -13
  144. data/node_modules/eslint/lib/rules/no-trailing-spaces.js +2 -3
  145. data/node_modules/eslint/lib/rules/no-unneeded-ternary.js +1 -1
  146. data/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js +1 -1
  147. data/node_modules/eslint/lib/rules/no-unused-private-class-members.js +1 -1
  148. data/node_modules/eslint/lib/rules/no-unused-vars.js +197 -36
  149. data/node_modules/eslint/lib/rules/no-useless-assignment.js +566 -0
  150. data/node_modules/eslint/lib/rules/no-useless-backreference.js +1 -1
  151. data/node_modules/eslint/lib/rules/no-useless-computed-key.js +2 -2
  152. data/node_modules/eslint/lib/rules/no-useless-return.js +7 -2
  153. data/node_modules/eslint/lib/rules/object-curly-spacing.js +3 -3
  154. data/node_modules/eslint/lib/rules/object-property-newline.js +1 -1
  155. data/node_modules/eslint/lib/rules/one-var.js +5 -5
  156. data/node_modules/eslint/lib/rules/padded-blocks.js +7 -7
  157. data/node_modules/eslint/lib/rules/prefer-arrow-callback.js +3 -3
  158. data/node_modules/eslint/lib/rules/prefer-reflect.js +1 -1
  159. data/node_modules/eslint/lib/rules/prefer-regex-literals.js +1 -1
  160. data/node_modules/eslint/lib/rules/prefer-template.js +1 -1
  161. data/node_modules/eslint/lib/rules/radix.js +2 -2
  162. data/node_modules/eslint/lib/rules/semi-style.js +1 -1
  163. data/node_modules/eslint/lib/rules/sort-imports.js +1 -1
  164. data/node_modules/eslint/lib/rules/sort-keys.js +1 -1
  165. data/node_modules/eslint/lib/rules/sort-vars.js +1 -1
  166. data/node_modules/eslint/lib/rules/space-unary-ops.js +1 -1
  167. data/node_modules/eslint/lib/rules/strict.js +1 -1
  168. data/node_modules/eslint/lib/rules/use-isnan.js +101 -7
  169. data/node_modules/eslint/lib/rules/utils/ast-utils.js +16 -7
  170. data/node_modules/eslint/lib/rules/utils/char-source.js +240 -0
  171. data/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js +1 -1
  172. data/node_modules/eslint/lib/rules/utils/unicode/index.js +9 -4
  173. data/node_modules/eslint/lib/rules/yield-star-spacing.js +1 -1
  174. data/node_modules/eslint/lib/shared/runtime-info.js +1 -0
  175. data/node_modules/eslint/lib/shared/serialization.js +55 -0
  176. data/node_modules/eslint/lib/shared/stats.js +30 -0
  177. data/node_modules/eslint/lib/shared/string-utils.js +9 -11
  178. data/node_modules/eslint/lib/shared/types.js +35 -1
  179. data/node_modules/eslint/lib/source-code/index.js +3 -1
  180. data/node_modules/eslint/lib/source-code/source-code.js +299 -85
  181. data/node_modules/eslint/lib/source-code/token-store/backward-token-cursor.js +3 -3
  182. data/node_modules/eslint/lib/source-code/token-store/cursors.js +4 -2
  183. data/node_modules/eslint/lib/source-code/token-store/forward-token-comment-cursor.js +3 -3
  184. data/node_modules/eslint/lib/source-code/token-store/forward-token-cursor.js +3 -3
  185. data/node_modules/eslint/lib/source-code/token-store/index.js +2 -2
  186. data/node_modules/eslint/lib/unsupported-api.js +3 -5
  187. data/node_modules/eslint/messages/no-config-found.js +1 -1
  188. data/node_modules/eslint/messages/plugin-conflict.js +1 -1
  189. data/node_modules/eslint/messages/plugin-invalid.js +1 -1
  190. data/node_modules/eslint/messages/plugin-missing.js +1 -1
  191. data/node_modules/eslint/package.json +32 -29
  192. data/node_modules/eslint-scope/README.md +23 -2
  193. data/node_modules/eslint-scope/dist/eslint-scope.cjs +84 -58
  194. data/node_modules/eslint-scope/lib/index.js +0 -3
  195. data/node_modules/eslint-scope/lib/pattern-visitor.js +4 -3
  196. data/node_modules/eslint-scope/lib/referencer.js +13 -11
  197. data/node_modules/eslint-scope/lib/scope-manager.js +2 -8
  198. data/node_modules/eslint-scope/lib/scope.js +64 -43
  199. data/node_modules/eslint-scope/lib/version.js +1 -1
  200. data/node_modules/eslint-scope/package.json +21 -19
  201. data/node_modules/eslint-visitor-keys/README.md +1 -1
  202. data/node_modules/eslint-visitor-keys/package.json +2 -2
  203. data/node_modules/espree/README.md +1 -1
  204. data/node_modules/espree/dist/espree.cjs +1 -1
  205. data/node_modules/espree/lib/version.js +1 -1
  206. data/node_modules/espree/package.json +18 -20
  207. data/node_modules/file-entry-cache/LICENSE +1 -1
  208. data/node_modules/file-entry-cache/README.md +6 -3
  209. data/node_modules/file-entry-cache/package.json +19 -43
  210. data/node_modules/flat-cache/README.md +8 -6
  211. data/node_modules/flat-cache/changelog.md +155 -205
  212. data/node_modules/flat-cache/package.json +16 -39
  213. data/node_modules/flat-cache/src/cache.js +22 -26
  214. data/node_modules/flat-cache/src/del.js +28 -11
  215. data/node_modules/flat-cache/src/utils.js +39 -41
  216. data/node_modules/globals/globals.json +25 -0
  217. data/node_modules/globals/index.d.ts +2074 -3
  218. data/node_modules/globals/package.json +10 -7
  219. data/node_modules/globals/readme.md +2 -14
  220. data/node_modules/keyv/package.json +4 -4
  221. data/node_modules/keyv/src/index.js +6 -11
  222. data/node_modules/npm-check-updates/build/cli.js +22 -21
  223. data/node_modules/npm-check-updates/build/cli.js.map +1 -1
  224. data/node_modules/npm-check-updates/build/index-5sFb3Tvv.js +66 -0
  225. data/node_modules/npm-check-updates/build/index-5sFb3Tvv.js.map +1 -0
  226. data/node_modules/npm-check-updates/build/index-BmUFwMVL.js +6 -0
  227. data/node_modules/npm-check-updates/build/index-BmUFwMVL.js.map +1 -0
  228. data/node_modules/npm-check-updates/build/index.d.ts +5 -2
  229. data/node_modules/npm-check-updates/build/index.js +560 -1
  230. data/node_modules/npm-check-updates/build/index.js.map +1 -1
  231. data/node_modules/npm-check-updates/build/package.json +4 -3
  232. data/node_modules/npm-check-updates/build/src/index.js +1 -1
  233. data/node_modules/npm-check-updates/build/src/index.js.map +1 -1
  234. data/node_modules/npm-check-updates/build/src/lib/libnpmconfig/index.js +2 -2
  235. data/node_modules/npm-check-updates/build/src/lib/libnpmconfig/index.js.map +1 -1
  236. data/node_modules/npm-check-updates/build/src/package-managers/bun.js +0 -6
  237. data/node_modules/npm-check-updates/build/src/package-managers/bun.js.map +1 -1
  238. data/node_modules/npm-check-updates/package.json +4 -3
  239. data/node_modules/type-fest/index.d.ts +95 -2
  240. data/node_modules/type-fest/package.json +12 -18
  241. data/node_modules/type-fest/readme.md +299 -52
  242. data/node_modules/type-fest/source/async-return-type.d.ts +4 -2
  243. data/node_modules/type-fest/source/asyncify.d.ts +5 -3
  244. data/node_modules/type-fest/source/basic.d.ts +21 -43
  245. data/node_modules/type-fest/{ts41 → source}/camel-case.d.ts +18 -17
  246. data/node_modules/type-fest/source/camel-cased-properties-deep.d.ts +54 -0
  247. data/node_modules/type-fest/source/camel-cased-properties.d.ts +36 -0
  248. data/node_modules/type-fest/source/conditional-except.d.ts +6 -4
  249. data/node_modules/type-fest/source/conditional-keys.d.ts +5 -1
  250. data/node_modules/type-fest/source/conditional-pick.d.ts +5 -3
  251. data/node_modules/type-fest/{ts41 → source}/delimiter-case.d.ts +16 -8
  252. data/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts +60 -0
  253. data/node_modules/type-fest/source/delimiter-cased-properties.d.ts +37 -0
  254. data/node_modules/type-fest/source/entries.d.ts +8 -3
  255. data/node_modules/type-fest/source/entry.d.ts +8 -3
  256. data/node_modules/type-fest/source/exact.d.ts +73 -0
  257. data/node_modules/type-fest/source/except.d.ts +38 -3
  258. data/node_modules/type-fest/source/fixed-length-array.d.ts +6 -1
  259. data/node_modules/type-fest/source/get.d.ts +184 -0
  260. data/node_modules/type-fest/source/has-optional-keys.d.ts +21 -0
  261. data/node_modules/type-fest/source/has-required-keys.d.ts +59 -0
  262. data/node_modules/type-fest/source/includes.d.ts +22 -0
  263. data/node_modules/type-fest/source/internal.d.ts +59 -0
  264. data/node_modules/type-fest/source/invariant-of.d.ts +76 -0
  265. data/node_modules/type-fest/source/iterable-element.d.ts +8 -0
  266. data/node_modules/type-fest/source/join.d.ts +30 -0
  267. data/node_modules/type-fest/source/jsonify.d.ts +90 -0
  268. data/node_modules/type-fest/{ts41 → source}/kebab-case.d.ts +7 -5
  269. data/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts +47 -0
  270. data/node_modules/type-fest/source/kebab-cased-properties.d.ts +30 -0
  271. data/node_modules/type-fest/source/last-array-element.d.ts +28 -0
  272. data/node_modules/type-fest/source/literal-to-primitive.d.ts +36 -0
  273. data/node_modules/type-fest/source/literal-union.d.ts +7 -5
  274. data/node_modules/type-fest/source/merge-exclusive.d.ts +3 -1
  275. data/node_modules/type-fest/source/merge.d.ts +8 -3
  276. data/node_modules/type-fest/source/multidimensional-array.d.ts +43 -0
  277. data/node_modules/type-fest/source/multidimensional-readonly-array.d.ts +47 -0
  278. data/node_modules/type-fest/source/mutable.d.ts +4 -21
  279. data/node_modules/type-fest/source/numeric.d.ts +170 -0
  280. data/node_modules/type-fest/source/observable-like.d.ts +62 -0
  281. data/node_modules/type-fest/source/opaque.d.ts +45 -3
  282. data/node_modules/type-fest/source/optional-keys-of.d.ts +38 -0
  283. data/node_modules/type-fest/source/package-json.d.ts +64 -12
  284. data/node_modules/type-fest/source/partial-deep.d.ts +57 -16
  285. data/node_modules/type-fest/source/partial-on-undefined-deep.d.ts +70 -0
  286. data/node_modules/type-fest/{ts41 → source}/pascal-case.d.ts +6 -4
  287. data/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts +54 -0
  288. data/node_modules/type-fest/source/pascal-cased-properties.d.ts +34 -0
  289. data/node_modules/type-fest/source/primitive.d.ts +13 -0
  290. data/node_modules/type-fest/source/promisable.d.ts +5 -3
  291. data/node_modules/type-fest/source/promise-value.d.ts +9 -7
  292. data/node_modules/type-fest/source/readonly-deep.d.ts +33 -7
  293. data/node_modules/type-fest/source/readonly-tuple.d.ts +41 -0
  294. data/node_modules/type-fest/source/remove-index-signature.d.ts +104 -0
  295. data/node_modules/type-fest/source/replace.d.ts +67 -0
  296. data/node_modules/type-fest/source/require-all-or-none.d.ts +36 -0
  297. data/node_modules/type-fest/source/require-at-least-one.d.ts +5 -3
  298. data/node_modules/type-fest/source/require-exactly-one.d.ts +4 -5
  299. data/node_modules/type-fest/source/required-keys-of.d.ts +29 -0
  300. data/node_modules/type-fest/source/schema.d.ts +72 -0
  301. data/node_modules/type-fest/source/screaming-snake-case.d.ts +33 -0
  302. data/node_modules/type-fest/source/set-non-nullable.d.ts +35 -0
  303. data/node_modules/type-fest/source/set-optional.d.ts +12 -11
  304. data/node_modules/type-fest/source/set-required.d.ts +12 -11
  305. data/node_modules/type-fest/source/set-return-type.d.ts +3 -1
  306. data/node_modules/type-fest/source/simplify.d.ts +83 -0
  307. data/node_modules/type-fest/{ts41 → source}/snake-case.d.ts +7 -4
  308. data/node_modules/type-fest/source/snake-cased-properties-deep.d.ts +47 -0
  309. data/node_modules/type-fest/source/snake-cased-properties.d.ts +30 -0
  310. data/node_modules/type-fest/source/split.d.ts +29 -0
  311. data/node_modules/type-fest/source/spread.d.ts +85 -0
  312. data/node_modules/type-fest/source/string-key-of.d.ts +25 -0
  313. data/node_modules/type-fest/source/stringified.d.ts +3 -1
  314. data/node_modules/type-fest/source/trim.d.ts +25 -0
  315. data/node_modules/type-fest/source/tsconfig-json.d.ts +316 -14
  316. data/node_modules/type-fest/source/typed-array.d.ts +17 -0
  317. data/node_modules/type-fest/source/union-to-intersection.d.ts +4 -2
  318. data/node_modules/type-fest/source/value-of.d.ts +3 -1
  319. data/node_modules/type-fest/source/writable.d.ts +40 -0
  320. data/package.json +2 -2
  321. metadata +86 -63
  322. data/linters/rubocop-2.7.6.yml +0 -86
  323. data/node_modules/@humanwhocodes/object-schema/tests/merge-strategy.js +0 -66
  324. data/node_modules/@humanwhocodes/object-schema/tests/object-schema.js +0 -659
  325. data/node_modules/@humanwhocodes/object-schema/tests/validation-strategy.js +0 -186
  326. data/node_modules/eslint/conf/config-schema.js +0 -93
  327. data/node_modules/eslint/lib/cli-engine/formatters/checkstyle.js +0 -60
  328. data/node_modules/eslint/lib/cli-engine/formatters/compact.js +0 -60
  329. data/node_modules/eslint/lib/cli-engine/formatters/jslint-xml.js +0 -41
  330. data/node_modules/eslint/lib/cli-engine/formatters/junit.js +0 -82
  331. data/node_modules/eslint/lib/cli-engine/formatters/tap.js +0 -95
  332. data/node_modules/eslint/lib/cli-engine/formatters/unix.js +0 -58
  333. data/node_modules/eslint/lib/cli-engine/formatters/visualstudio.js +0 -63
  334. data/node_modules/eslint/lib/cli-engine/xml-escape.js +0 -34
  335. data/node_modules/eslint/lib/eslint/flat-eslint.js +0 -1155
  336. data/node_modules/eslint/lib/rule-tester/flat-rule-tester.js +0 -1131
  337. data/node_modules/eslint/lib/rules/require-jsdoc.js +0 -122
  338. data/node_modules/eslint/lib/rules/utils/patterns/letters.js +0 -36
  339. data/node_modules/eslint/lib/rules/valid-jsdoc.js +0 -516
  340. data/node_modules/eslint/lib/shared/config-validator.js +0 -347
  341. data/node_modules/eslint/lib/shared/deprecation-warnings.js +0 -58
  342. data/node_modules/eslint/lib/shared/relative-module-resolver.js +0 -50
  343. data/node_modules/file-entry-cache/changelog.md +0 -163
  344. data/node_modules/flat-cache/node_modules/rimraf/CHANGELOG.md +0 -65
  345. data/node_modules/flat-cache/node_modules/rimraf/LICENSE +0 -15
  346. data/node_modules/flat-cache/node_modules/rimraf/README.md +0 -101
  347. data/node_modules/flat-cache/node_modules/rimraf/bin.js +0 -68
  348. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
  349. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/README.md +0 -378
  350. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/common.js +0 -238
  351. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/glob.js +0 -790
  352. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/node_modules/minimatch/LICENSE +0 -15
  353. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md +0 -230
  354. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/node_modules/minimatch/minimatch.js +0 -947
  355. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/LICENSE +0 -21
  356. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +0 -129
  357. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +0 -201
  358. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +0 -47
  359. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json +0 -33
  360. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/package.json +0 -55
  361. data/node_modules/flat-cache/node_modules/rimraf/node_modules/glob/sync.js +0 -486
  362. data/node_modules/flat-cache/node_modules/rimraf/package.json +0 -32
  363. data/node_modules/flat-cache/node_modules/rimraf/rimraf.js +0 -360
  364. data/node_modules/npm-check-updates/build/index-CI_x-D21.js +0 -593
  365. data/node_modules/npm-check-updates/build/index-CI_x-D21.js.map +0 -1
  366. data/node_modules/npm-check-updates/build/index-Ci8A2QXv.js +0 -6
  367. data/node_modules/npm-check-updates/build/index-Ci8A2QXv.js.map +0 -1
  368. data/node_modules/npm-check-updates/build/index-DgVn3Gax.js +0 -36
  369. data/node_modules/npm-check-updates/build/index-DgVn3Gax.js.map +0 -1
  370. data/node_modules/npm-check-updates/build/src/types/SpawnPleaseOptions.d.ts +0 -6
  371. data/node_modules/npm-check-updates/build/src/types/SpawnPleaseOptions.js +0 -3
  372. data/node_modules/npm-check-updates/build/src/types/SpawnPleaseOptions.js.map +0 -1
  373. data/node_modules/type-fest/base.d.ts +0 -38
  374. data/node_modules/type-fest/license +0 -9
  375. data/node_modules/type-fest/source/utilities.d.ts +0 -3
  376. data/node_modules/type-fest/ts41/index.d.ts +0 -9
@@ -1,67 +1,45 @@
1
- /// <reference lib="esnext"/>
2
-
3
- // TODO: This can just be `export type Primitive = not object` when the `not` keyword is out.
4
1
  /**
5
- Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
2
+ Matches a [`class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
3
+
4
+ @category Class
6
5
  */
7
- export type Primitive =
8
- | null
9
- | undefined
10
- | string
11
- | number
12
- | boolean
13
- | symbol
14
- | bigint;
6
+ export type Class<T, Arguments extends unknown[] = any[]> = Constructor<T, Arguments> & {prototype: T};
15
7
 
16
- // TODO: Remove the `= unknown` sometime in the future when most users are on TS 3.5 as it's now the default
17
8
  /**
18
9
  Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
19
- */
20
- export type Class<T = unknown, Arguments extends any[] = any[]> = new(...arguments_: Arguments) => T;
21
10
 
22
- /**
23
- Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
11
+ @category Class
24
12
  */
25
- export type TypedArray =
26
- | Int8Array
27
- | Uint8Array
28
- | Uint8ClampedArray
29
- | Int16Array
30
- | Uint16Array
31
- | Int32Array
32
- | Uint32Array
33
- | Float32Array
34
- | Float64Array
35
- | BigInt64Array
36
- | BigUint64Array;
13
+ export type Constructor<T, Arguments extends unknown[] = any[]> = new(...arguments_: Arguments) => T;
37
14
 
38
15
  /**
39
16
  Matches a JSON object.
40
17
 
41
18
  This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. Don't use this as a direct return type as the user would have to double-cast it: `jsonObject as unknown as CustomResponse`. Instead, you could extend your CustomResponse type from it to ensure your type only uses JSON-compatible types: `interface CustomResponse extends JsonObject { … }`.
19
+
20
+ @category JSON
42
21
  */
43
22
  export type JsonObject = {[Key in string]?: JsonValue};
44
23
 
45
24
  /**
46
25
  Matches a JSON array.
26
+
27
+ @category JSON
47
28
  */
48
- export interface JsonArray extends Array<JsonValue> {}
29
+ export type JsonArray = JsonValue[];
49
30
 
50
31
  /**
51
- Matches any valid JSON value.
52
- */
53
- export type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
32
+ Matches any valid JSON primitive value.
54
33
 
55
- declare global {
56
- interface SymbolConstructor {
57
- readonly observable: symbol;
58
- }
59
- }
34
+ @category JSON
35
+ */
36
+ export type JsonPrimitive = string | number | boolean | null;
60
37
 
61
38
  /**
62
- Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
39
+ Matches any valid JSON value.
40
+
41
+ @see `Jsonify` if you need to transform a type to one that is assignable to `JsonValue`.
42
+
43
+ @category JSON
63
44
  */
64
- export interface ObservableLike {
65
- subscribe(observer: (value: unknown) => void): void;
66
- [Symbol.observable](): ObservableLike;
67
- }
45
+ export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
@@ -1,13 +1,5 @@
1
- import {WordSeparators} from '../source/utilities';
2
-
3
- /**
4
- Recursively split a string literal into two parts on the first occurence of the given string, returning an array literal of all the separate parts.
5
- */
6
- export type Split<S extends string, D extends string> =
7
- string extends S ? string[] :
8
- S extends '' ? [] :
9
- S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] :
10
- [S];
1
+ import type {WordSeparators} from '../source/internal';
2
+ import type {Split} from './split';
11
3
 
12
4
  /**
13
5
  Step by step takes the first item in an array literal, formats it and adds it to a string literal, and then recursively appends the remainder.
@@ -16,7 +8,7 @@ Only to be used by `CamelCaseStringArray<>`.
16
8
 
17
9
  @see CamelCaseStringArray
18
10
  */
19
- type InnerCamelCaseStringArray<Parts extends any[], PreviousPart> =
11
+ type InnerCamelCaseStringArray<Parts extends readonly any[], PreviousPart> =
20
12
  Parts extends [`${infer FirstPart}`, ...infer RemainingParts]
21
13
  ? FirstPart extends undefined
22
14
  ? ''
@@ -32,7 +24,7 @@ It's separate from `InnerCamelCaseStringArray<>` to keep a clean API outwards to
32
24
 
33
25
  @see Split
34
26
  */
35
- type CamelCaseStringArray<Parts extends string[]> =
27
+ type CamelCaseStringArray<Parts extends readonly string[]> =
36
28
  Parts extends [`${infer FirstPart}`, ...infer RemainingParts]
37
29
  ? Uncapitalize<`${FirstPart}${InnerCamelCaseStringArray<RemainingParts, FirstPart>}`>
38
30
  : never;
@@ -44,7 +36,7 @@ This can be useful when, for example, converting some kebab-cased command-line f
44
36
 
45
37
  @example
46
38
  ```
47
- import {CamelCase} from 'type-fest';
39
+ import type {CamelCase} from 'type-fest';
48
40
 
49
41
  // Simple
50
42
 
@@ -52,7 +44,7 @@ const someVariable: CamelCase<'foo-bar'> = 'fooBar';
52
44
 
53
45
  // Advanced
54
46
 
55
- type CamelCasedProps<T> = {
47
+ type CamelCasedProperties<T> = {
56
48
  [K in keyof T as CamelCase<K>]: T[K]
57
49
  };
58
50
 
@@ -60,13 +52,22 @@ interface RawOptions {
60
52
  'dry-run': boolean;
61
53
  'full_family_name': string;
62
54
  foo: number;
55
+ BAR: string;
56
+ QUZ_QUX: number;
57
+ 'OTHER-FIELD': boolean;
63
58
  }
64
59
 
65
- const dbResult: CamelCasedProps<ModelProps> = {
60
+ const dbResult: CamelCasedProperties<RawOptions> = {
66
61
  dryRun: true,
67
62
  fullFamilyName: 'bar.js',
68
- foo: 123
63
+ foo: 123,
64
+ bar: 'foo',
65
+ quzQux: 6,
66
+ otherField: false
69
67
  };
70
68
  ```
69
+
70
+ @category Change case
71
+ @category Template literal
71
72
  */
72
- export type CamelCase<K> = K extends string ? CamelCaseStringArray<Split<K, WordSeparators>> : K;
73
+ export type CamelCase<K> = K extends string ? CamelCaseStringArray<Split<K extends Uppercase<K> ? Lowercase<K> : K, WordSeparators>> : K;
@@ -0,0 +1,54 @@
1
+ import type {CamelCase} from './camel-case';
2
+
3
+ /**
4
+ Convert object properties to camel case recursively.
5
+
6
+ This can be useful when, for example, converting some API types from a different style.
7
+
8
+ @see CamelCasedProperties
9
+ @see CamelCase
10
+
11
+ @example
12
+ ```
13
+ import type {CamelCasedPropertiesDeep} from 'type-fest';
14
+
15
+ interface User {
16
+ UserId: number;
17
+ UserName: string;
18
+ }
19
+
20
+ interface UserWithFriends {
21
+ UserInfo: User;
22
+ UserFriends: User[];
23
+ }
24
+
25
+ const result: CamelCasedPropertiesDeep<UserWithFriends> = {
26
+ userInfo: {
27
+ userId: 1,
28
+ userName: 'Tom',
29
+ },
30
+ userFriends: [
31
+ {
32
+ userId: 2,
33
+ userName: 'Jerry',
34
+ },
35
+ {
36
+ userId: 3,
37
+ userName: 'Spike',
38
+ },
39
+ ],
40
+ };
41
+ ```
42
+
43
+ @category Change case
44
+ @category Template literal
45
+ @category Object
46
+ */
47
+ export type CamelCasedPropertiesDeep<Value> = Value extends Function
48
+ ? Value
49
+ : Value extends Array<infer U>
50
+ ? Array<CamelCasedPropertiesDeep<U>>
51
+ : Value extends Set<infer U>
52
+ ? Set<CamelCasedPropertiesDeep<U>> : {
53
+ [K in keyof Value as CamelCase<K>]: CamelCasedPropertiesDeep<Value[K]>;
54
+ };
@@ -0,0 +1,36 @@
1
+ import type {CamelCase} from './camel-case';
2
+
3
+ /**
4
+ Convert object properties to camel case but not recursively.
5
+
6
+ This can be useful when, for example, converting some API types from a different style.
7
+
8
+ @see CamelCasedPropertiesDeep
9
+ @see CamelCase
10
+
11
+ @example
12
+ ```
13
+ import type {CamelCasedProperties} from 'type-fest';
14
+
15
+ interface User {
16
+ UserId: number;
17
+ UserName: string;
18
+ }
19
+
20
+ const result: CamelCasedProperties<User> = {
21
+ userId: 1,
22
+ userName: 'Tom',
23
+ };
24
+ ```
25
+
26
+ @category Change case
27
+ @category Template literal
28
+ @category Object
29
+ */
30
+ export type CamelCasedProperties<Value> = Value extends Function
31
+ ? Value
32
+ : Value extends Array<infer U>
33
+ ? Value
34
+ : {
35
+ [K in keyof Value as CamelCase<K>]: Value[K];
36
+ };
@@ -1,5 +1,5 @@
1
- import {Except} from './except';
2
- import {ConditionalKeys} from './conditional-keys';
1
+ import type {Except} from './except';
2
+ import type {ConditionalKeys} from './conditional-keys';
3
3
 
4
4
  /**
5
5
  Exclude keys from a shape that matches the given `Condition`.
@@ -8,7 +8,7 @@ This is useful when you want to create a new type with a specific set of keys fr
8
8
 
9
9
  @example
10
10
  ```
11
- import {Primitive, ConditionalExcept} from 'type-fest';
11
+ import type {Primitive, ConditionalExcept} from 'type-fest';
12
12
 
13
13
  class Awesome {
14
14
  name: string;
@@ -24,7 +24,7 @@ type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
24
24
 
25
25
  @example
26
26
  ```
27
- import {ConditionalExcept} from 'type-fest';
27
+ import type {ConditionalExcept} from 'type-fest';
28
28
 
29
29
  interface Example {
30
30
  a: string;
@@ -36,6 +36,8 @@ interface Example {
36
36
  type NonStringKeysOnly = ConditionalExcept<Example, string>;
37
37
  //=> {b: string | number; c: () => void; d: {}}
38
38
  ```
39
+
40
+ @category Object
39
41
  */
40
42
  export type ConditionalExcept<Base, Condition> = Except<
41
43
  Base,
@@ -5,7 +5,7 @@ Internally this is used for the `ConditionalPick` and `ConditionalExcept` types.
5
5
 
6
6
  @example
7
7
  ```
8
- import {ConditionalKeys} from 'type-fest';
8
+ import type {ConditionalKeys} from 'type-fest';
9
9
 
10
10
  interface Example {
11
11
  a: string;
@@ -22,9 +22,13 @@ To support partial types, make sure your `Condition` is a union of undefined (fo
22
22
 
23
23
  @example
24
24
  ```
25
+ import type {ConditionalKeys} from 'type-fest';
26
+
25
27
  type StringKeysAndUndefined = ConditionalKeys<Example, string | undefined>;
26
28
  //=> 'a' | 'c'
27
29
  ```
30
+
31
+ @category Object
28
32
  */
29
33
  export type ConditionalKeys<Base, Condition> = NonNullable<
30
34
  // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
@@ -1,4 +1,4 @@
1
- import {ConditionalKeys} from './conditional-keys';
1
+ import type {ConditionalKeys} from './conditional-keys';
2
2
 
3
3
  /**
4
4
  Pick keys from the shape that matches the given `Condition`.
@@ -7,7 +7,7 @@ This is useful when you want to create a new type from a specific subset of an e
7
7
 
8
8
  @example
9
9
  ```
10
- import {Primitive, ConditionalPick} from 'type-fest';
10
+ import type {Primitive, ConditionalPick} from 'type-fest';
11
11
 
12
12
  class Awesome {
13
13
  name: string;
@@ -23,7 +23,7 @@ type PickPrimitivesFromAwesome = ConditionalPick<Awesome, Primitive>;
23
23
 
24
24
  @example
25
25
  ```
26
- import {ConditionalPick} from 'type-fest';
26
+ import type {ConditionalPick} from 'type-fest';
27
27
 
28
28
  interface Example {
29
29
  a: string;
@@ -35,6 +35,8 @@ interface Example {
35
35
  type StringKeysOnly = ConditionalPick<Example, string>;
36
36
  //=> {a: string}
37
37
  ```
38
+
39
+ @category Object
38
40
  */
39
41
  export type ConditionalPick<Base, Condition> = Pick<
40
42
  Base,
@@ -1,7 +1,9 @@
1
- import {UpperCaseCharacters, WordSeparators} from '../source/utilities';
1
+ import type {UpperCaseCharacters, WordSeparators} from '../source/internal';
2
2
 
3
3
  /**
4
4
  Unlike a simpler split, this one includes the delimiter splitted on in the resulting array literal. This is to enable splitting on, for example, upper-case characters.
5
+
6
+ @category Template literal
5
7
  */
6
8
  export type SplitIncludingDelimiters<Source extends string, Delimiter extends string> =
7
9
  Source extends '' ? [] :
@@ -22,8 +24,9 @@ Format a specific part of the splitted string literal that `StringArrayToDelimit
22
24
 
23
25
  @see StringArrayToDelimiterCase
24
26
  */
25
- type StringPartToDelimiterCase<StringPart extends string, UsedWordSeparators extends string, UsedUpperCaseCharacters extends string, Delimiter extends string> =
27
+ type StringPartToDelimiterCase<StringPart extends string, Start extends boolean, UsedWordSeparators extends string, UsedUpperCaseCharacters extends string, Delimiter extends string> =
26
28
  StringPart extends UsedWordSeparators ? Delimiter :
29
+ Start extends true ? Lowercase<StringPart> :
27
30
  StringPart extends UsedUpperCaseCharacters ? `${Delimiter}${Lowercase<StringPart>}` :
28
31
  StringPart;
29
32
 
@@ -34,9 +37,11 @@ It receives `UsedWordSeparators` and `UsedUpperCaseCharacters` as input to ensur
34
37
 
35
38
  @see SplitIncludingDelimiters
36
39
  */
37
- type StringArrayToDelimiterCase<Parts extends any[], UsedWordSeparators extends string, UsedUpperCaseCharacters extends string, Delimiter extends string> =
40
+ type StringArrayToDelimiterCase<Parts extends readonly any[], Start extends boolean, UsedWordSeparators extends string, UsedUpperCaseCharacters extends string, Delimiter extends string> =
38
41
  Parts extends [`${infer FirstPart}`, ...infer RemainingParts]
39
- ? `${StringPartToDelimiterCase<FirstPart, UsedWordSeparators, UsedUpperCaseCharacters, Delimiter>}${StringArrayToDelimiterCase<RemainingParts, UsedWordSeparators, UsedUpperCaseCharacters, Delimiter>}`
42
+ ? `${StringPartToDelimiterCase<FirstPart, Start, UsedWordSeparators, UsedUpperCaseCharacters, Delimiter>}${StringArrayToDelimiterCase<RemainingParts, false, UsedWordSeparators, UsedUpperCaseCharacters, Delimiter>}`
43
+ : Parts extends [string]
44
+ ? string
40
45
  : '';
41
46
 
42
47
  /**
@@ -49,7 +54,7 @@ This can be useful when, for example, converting a camel-cased object property t
49
54
 
50
55
  @example
51
56
  ```
52
- import {DelimiterCase} from 'type-fest';
57
+ import type {DelimiterCase} from 'type-fest';
53
58
 
54
59
  // Simple
55
60
 
@@ -57,7 +62,7 @@ const someVariable: DelimiterCase<'fooBar', '#'> = 'foo#bar';
57
62
 
58
63
  // Advanced
59
64
 
60
- type OddlyCasedProps<T> = {
65
+ type OddlyCasedProperties<T> = {
61
66
  [K in keyof T as DelimiterCase<K, '#'>]: T[K]
62
67
  };
63
68
 
@@ -67,17 +72,20 @@ interface SomeOptions {
67
72
  foo: number;
68
73
  }
69
74
 
70
- const rawCliOptions: OddlyCasedProps<SomeOptions> = {
75
+ const rawCliOptions: OddlyCasedProperties<SomeOptions> = {
71
76
  'dry#run': true,
72
77
  'include#file': 'bar.js',
73
78
  foo: 123
74
79
  };
75
80
  ```
76
- */
77
81
 
82
+ @category Change case
83
+ @category Template literal
84
+ */
78
85
  export type DelimiterCase<Value, Delimiter extends string> = Value extends string
79
86
  ? StringArrayToDelimiterCase<
80
87
  SplitIncludingDelimiters<Value, WordSeparators | UpperCaseCharacters>,
88
+ true,
81
89
  WordSeparators,
82
90
  UpperCaseCharacters,
83
91
  Delimiter
@@ -0,0 +1,60 @@
1
+ import type {DelimiterCase} from './delimiter-case';
2
+
3
+ /**
4
+ Convert object properties to delimiter case recursively.
5
+
6
+ This can be useful when, for example, converting some API types from a different style.
7
+
8
+ @see DelimiterCase
9
+ @see DelimiterCasedProperties
10
+
11
+ @example
12
+ ```
13
+ import type {DelimiterCasedPropertiesDeep} from 'type-fest';
14
+
15
+ interface User {
16
+ userId: number;
17
+ userName: string;
18
+ }
19
+
20
+ interface UserWithFriends {
21
+ userInfo: User;
22
+ userFriends: User[];
23
+ }
24
+
25
+ const result: DelimiterCasedPropertiesDeep<UserWithFriends, '-'> = {
26
+ 'user-info': {
27
+ 'user-id': 1,
28
+ 'user-name': 'Tom',
29
+ },
30
+ 'user-friends': [
31
+ {
32
+ 'user-id': 2,
33
+ 'user-name': 'Jerry',
34
+ },
35
+ {
36
+ 'user-id': 3,
37
+ 'user-name': 'Spike',
38
+ },
39
+ ],
40
+ };
41
+ ```
42
+
43
+ @category Change case
44
+ @category Template literal
45
+ @category Object
46
+ */
47
+ export type DelimiterCasedPropertiesDeep<
48
+ Value,
49
+ Delimiter extends string,
50
+ > = Value extends Function | Date | RegExp
51
+ ? Value
52
+ : Value extends Array<infer U>
53
+ ? Array<DelimiterCasedPropertiesDeep<U, Delimiter>>
54
+ : Value extends Set<infer U>
55
+ ? Set<DelimiterCasedPropertiesDeep<U, Delimiter>> : {
56
+ [K in keyof Value as DelimiterCase<
57
+ K,
58
+ Delimiter
59
+ >]: DelimiterCasedPropertiesDeep<Value[K], Delimiter>;
60
+ };
@@ -0,0 +1,37 @@
1
+ import type {DelimiterCase} from './delimiter-case';
2
+
3
+ /**
4
+ Convert object properties to delimiter case but not recursively.
5
+
6
+ This can be useful when, for example, converting some API types from a different style.
7
+
8
+ @see DelimiterCase
9
+ @see DelimiterCasedPropertiesDeep
10
+
11
+ @example
12
+ ```
13
+ import type {DelimiterCasedProperties} from 'type-fest';
14
+
15
+ interface User {
16
+ userId: number;
17
+ userName: string;
18
+ }
19
+
20
+ const result: DelimiterCasedProperties<User, '-'> = {
21
+ 'user-id': 1,
22
+ 'user-name': 'Tom',
23
+ };
24
+ ```
25
+
26
+ @category Change case
27
+ @category Template literal
28
+ @category Object
29
+ */
30
+ export type DelimiterCasedProperties<
31
+ Value,
32
+ Delimiter extends string,
33
+ > = Value extends Function
34
+ ? Value
35
+ : Value extends Array<infer U>
36
+ ? Value
37
+ : {[K in keyof Value as DelimiterCase<K, Delimiter>]: Value[K]};
@@ -1,4 +1,4 @@
1
- import {ArrayEntry, MapEntry, ObjectEntry, SetEntry} from './entry';
1
+ import type {ArrayEntry, MapEntry, ObjectEntry, SetEntry} from './entry';
2
2
 
3
3
  type ArrayEntries<BaseType extends readonly unknown[]> = Array<ArrayEntry<BaseType>>;
4
4
  type MapEntries<BaseType> = Array<MapEntry<BaseType>>;
@@ -14,7 +14,7 @@ For example the {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/R
14
14
 
15
15
  @example
16
16
  ```
17
- import {Entries} from 'type-fest';
17
+ import type {Entries} from 'type-fest';
18
18
 
19
19
  interface Example {
20
20
  someKey: number;
@@ -48,10 +48,15 @@ const mapEntries: Entries<typeof map> = [['a', 1]];
48
48
  const setExample = new Set(['a', 1]);
49
49
  const setEntries: Entries<typeof setExample> = [['a', 'a'], [1, 1]];
50
50
  ```
51
+
52
+ @category Object
53
+ @category Map
54
+ @category Set
55
+ @category Array
51
56
  */
52
57
  export type Entries<BaseType> =
53
58
  BaseType extends Map<unknown, unknown> ? MapEntries<BaseType>
54
59
  : BaseType extends Set<unknown> ? SetEntries<BaseType>
55
- : BaseType extends unknown[] ? ArrayEntries<BaseType>
60
+ : BaseType extends readonly unknown[] ? ArrayEntries<BaseType>
56
61
  : BaseType extends object ? ObjectEntries<BaseType>
57
62
  : never;
@@ -15,7 +15,7 @@ For example the {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/R
15
15
 
16
16
  @example
17
17
  ```
18
- import {Entry} from 'type-fest';
18
+ import type {Entry} from 'type-fest';
19
19
 
20
20
  interface Example {
21
21
  someKey: number;
@@ -44,17 +44,22 @@ const arrayEntryNumber: Entry<typeof arrayExample> = [1, 1];
44
44
 
45
45
  // Maps
46
46
  const mapExample = new Map([['a', 1]]);
47
- const mapEntry: Entry<typeof map> = ['a', 1];
47
+ const mapEntry: Entry<typeof mapExample> = ['a', 1];
48
48
 
49
49
  // Sets
50
50
  const setExample = new Set(['a', 1]);
51
51
  const setEntryString: Entry<typeof setExample> = ['a', 'a'];
52
52
  const setEntryNumber: Entry<typeof setExample> = [1, 1];
53
53
  ```
54
+
55
+ @category Object
56
+ @category Map
57
+ @category Array
58
+ @category Set
54
59
  */
55
60
  export type Entry<BaseType> =
56
61
  BaseType extends Map<unknown, unknown> ? MapEntry<BaseType>
57
62
  : BaseType extends Set<unknown> ? SetEntry<BaseType>
58
- : BaseType extends unknown[] ? ArrayEntry<BaseType>
63
+ : BaseType extends readonly unknown[] ? ArrayEntry<BaseType>
59
64
  : BaseType extends object ? ObjectEntry<BaseType>
60
65
  : never;
@@ -0,0 +1,73 @@
1
+ import type {KeysOfUnion} from './internal';
2
+
3
+ /**
4
+ Extract the element of an array that also works for array union.
5
+
6
+ Returns `never` if T is not an array.
7
+
8
+ It creates a type-safe way to access the element type of `unknown` type.
9
+ */
10
+ type ArrayElement<T> = T extends readonly unknown[] ? T[0] : never;
11
+
12
+ /**
13
+ Extract the object field type if T is an object and K is a key of T, return `never` otherwise.
14
+
15
+ It creates a type-safe way to access the member type of `unknown` type.
16
+ */
17
+ type ObjectValue<T, K> = K extends keyof T ? T[K] : never;
18
+
19
+ /**
20
+ Create a type from `ParameterType` and `InputType` and change keys exclusive to `InputType` to `never`.
21
+ - Generate a list of keys that exists in `InputType` but not in `ParameterType`.
22
+ - Mark these excess keys as `never`.
23
+ */
24
+ type ExactObject<ParameterType, InputType> = {[Key in keyof ParameterType]: Exact<ParameterType[Key], ObjectValue<InputType, Key>>}
25
+ & Record<Exclude<keyof InputType, KeysOfUnion<ParameterType>>, never>;
26
+
27
+ /**
28
+ Create a type that does not allow extra properties, meaning it only allows properties that are explicitly declared.
29
+
30
+ This is useful for function type-guarding to reject arguments with excess properties. Due to the nature of TypeScript, it does not complain if excess properties are provided unless the provided value is an object literal.
31
+
32
+ *Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/12936) if you want to have this type as a built-in in TypeScript.*
33
+
34
+ @example
35
+ ```
36
+ type OnlyAcceptName = {name: string};
37
+
38
+ function onlyAcceptName(args: OnlyAcceptName) {}
39
+
40
+ // TypeScript complains about excess properties when an object literal is provided.
41
+ onlyAcceptName({name: 'name', id: 1});
42
+ //=> `id` is excess
43
+
44
+ // TypeScript does not complain about excess properties when the provided value is a variable (not an object literal).
45
+ const invalidInput = {name: 'name', id: 1};
46
+ onlyAcceptName(invalidInput); // No errors
47
+ ```
48
+
49
+ Having `Exact` allows TypeScript to reject excess properties.
50
+
51
+ @example
52
+ ```
53
+ import {Exact} from 'type-fest';
54
+
55
+ type OnlyAcceptName = {name: string};
56
+
57
+ function onlyAcceptNameImproved<T extends Exact<OnlyAcceptName, T>>(args: T) {}
58
+
59
+ const invalidInput = {name: 'name', id: 1};
60
+ onlyAcceptNameImproved(invalidInput); // Compilation error
61
+ ```
62
+
63
+ [Read more](https://stackoverflow.com/questions/49580725/is-it-possible-to-restrict-typescript-object-to-contain-only-properties-defined)
64
+
65
+ @category Utilities
66
+ */
67
+ export type Exact<ParameterType, InputType> =
68
+ // Convert union of array to array of union: A[] & B[] => (A & B)[]
69
+ ParameterType extends unknown[] ? Array<Exact<ArrayElement<ParameterType>, ArrayElement<InputType>>>
70
+ // In TypeScript, Array is a subtype of ReadonlyArray, so always test Array before ReadonlyArray.
71
+ : ParameterType extends readonly unknown[] ? ReadonlyArray<Exact<ArrayElement<ParameterType>, ArrayElement<InputType>>>
72
+ : ParameterType extends object ? ExactObject<ParameterType, InputType>
73
+ : ParameterType;