structured-outputs 0.1.0-beta.2 → 0.1.0-beta.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (565) hide show
  1. package/README.md +77 -6
  2. package/esm/ResponseFormat.js +33 -5
  3. package/esm/ResponseFormat.js.map +1 -1
  4. package/esm/Tool.js +17 -0
  5. package/esm/Tool.js.map +1 -0
  6. package/esm/_dnt.polyfills.js +16 -0
  7. package/esm/_dnt.polyfills.js.map +1 -0
  8. package/esm/_dnt.shims.js +58 -0
  9. package/esm/_dnt.shims.js.map +1 -0
  10. package/esm/deps/jsr.io/@std/assert/1.0.8/almost_equals.js +47 -0
  11. package/esm/deps/jsr.io/@std/assert/1.0.8/almost_equals.js.map +1 -0
  12. package/esm/deps/jsr.io/@std/assert/1.0.8/array_includes.js +47 -0
  13. package/esm/deps/jsr.io/@std/assert/1.0.8/array_includes.js.map +1 -0
  14. package/esm/deps/jsr.io/@std/assert/1.0.8/assert.js +23 -0
  15. package/esm/deps/jsr.io/@std/assert/1.0.8/assert.js.map +1 -0
  16. package/esm/deps/jsr.io/@std/assert/1.0.8/assertion_error.js +31 -0
  17. package/esm/deps/jsr.io/@std/assert/1.0.8/assertion_error.js.map +1 -0
  18. package/esm/deps/jsr.io/@std/assert/1.0.8/equal.js +184 -0
  19. package/esm/deps/jsr.io/@std/assert/1.0.8/equal.js.map +1 -0
  20. package/esm/deps/jsr.io/@std/assert/1.0.8/equals.js +46 -0
  21. package/esm/deps/jsr.io/@std/assert/1.0.8/equals.js.map +1 -0
  22. package/esm/deps/jsr.io/@std/assert/1.0.8/exists.js +28 -0
  23. package/esm/deps/jsr.io/@std/assert/1.0.8/exists.js.map +1 -0
  24. package/esm/deps/jsr.io/@std/assert/1.0.8/fail.js +21 -0
  25. package/esm/deps/jsr.io/@std/assert/1.0.8/fail.js.map +1 -0
  26. package/esm/deps/jsr.io/@std/assert/1.0.8/false.js +23 -0
  27. package/esm/deps/jsr.io/@std/assert/1.0.8/false.js.map +1 -0
  28. package/esm/deps/jsr.io/@std/assert/1.0.8/greater.js +30 -0
  29. package/esm/deps/jsr.io/@std/assert/1.0.8/greater.js.map +1 -0
  30. package/esm/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.js +30 -0
  31. package/esm/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.js.map +1 -0
  32. package/esm/deps/jsr.io/@std/assert/1.0.8/instance_of.js +53 -0
  33. package/esm/deps/jsr.io/@std/assert/1.0.8/instance_of.js.map +1 -0
  34. package/esm/deps/jsr.io/@std/assert/1.0.8/is_error.js +54 -0
  35. package/esm/deps/jsr.io/@std/assert/1.0.8/is_error.js.map +1 -0
  36. package/esm/deps/jsr.io/@std/assert/1.0.8/less.js +29 -0
  37. package/esm/deps/jsr.io/@std/assert/1.0.8/less.js.map +1 -0
  38. package/esm/deps/jsr.io/@std/assert/1.0.8/less_or_equal.js +30 -0
  39. package/esm/deps/jsr.io/@std/assert/1.0.8/less_or_equal.js.map +1 -0
  40. package/esm/deps/jsr.io/@std/assert/1.0.8/match.js +27 -0
  41. package/esm/deps/jsr.io/@std/assert/1.0.8/match.js.map +1 -0
  42. package/esm/deps/jsr.io/@std/assert/1.0.8/mod.js +46 -0
  43. package/esm/deps/jsr.io/@std/assert/1.0.8/mod.js.map +1 -0
  44. package/esm/deps/jsr.io/@std/assert/1.0.8/not_equals.js +33 -0
  45. package/esm/deps/jsr.io/@std/assert/1.0.8/not_equals.js.map +1 -0
  46. package/esm/deps/jsr.io/@std/assert/1.0.8/not_instance_of.js +30 -0
  47. package/esm/deps/jsr.io/@std/assert/1.0.8/not_instance_of.js.map +1 -0
  48. package/esm/deps/jsr.io/@std/assert/1.0.8/not_match.js +27 -0
  49. package/esm/deps/jsr.io/@std/assert/1.0.8/not_match.js.map +1 -0
  50. package/esm/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.js +33 -0
  51. package/esm/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.js.map +1 -0
  52. package/esm/deps/jsr.io/@std/assert/1.0.8/object_match.js +160 -0
  53. package/esm/deps/jsr.io/@std/assert/1.0.8/object_match.js.map +1 -0
  54. package/esm/deps/jsr.io/@std/assert/1.0.8/rejects.js +54 -0
  55. package/esm/deps/jsr.io/@std/assert/1.0.8/rejects.js.map +1 -0
  56. package/esm/deps/jsr.io/@std/assert/1.0.8/strict_equals.js +58 -0
  57. package/esm/deps/jsr.io/@std/assert/1.0.8/strict_equals.js.map +1 -0
  58. package/esm/deps/jsr.io/@std/assert/1.0.8/string_includes.js +27 -0
  59. package/esm/deps/jsr.io/@std/assert/1.0.8/string_includes.js.map +1 -0
  60. package/esm/deps/jsr.io/@std/assert/1.0.8/throws.js +45 -0
  61. package/esm/deps/jsr.io/@std/assert/1.0.8/throws.js.map +1 -0
  62. package/esm/deps/jsr.io/@std/assert/1.0.8/unimplemented.js +21 -0
  63. package/esm/deps/jsr.io/@std/assert/1.0.8/unimplemented.js.map +1 -0
  64. package/esm/deps/jsr.io/@std/assert/1.0.8/unreachable.js +21 -0
  65. package/esm/deps/jsr.io/@std/assert/1.0.8/unreachable.js.map +1 -0
  66. package/esm/deps/jsr.io/@std/collections/1.0.9/_utils.js +19 -0
  67. package/esm/deps/jsr.io/@std/collections/1.0.9/_utils.js.map +1 -0
  68. package/esm/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.js +51 -0
  69. package/esm/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.js.map +1 -0
  70. package/esm/deps/jsr.io/@std/collections/1.0.9/associate_by.js +45 -0
  71. package/esm/deps/jsr.io/@std/collections/1.0.9/associate_by.js.map +1 -0
  72. package/esm/deps/jsr.io/@std/collections/1.0.9/associate_with.js +41 -0
  73. package/esm/deps/jsr.io/@std/collections/1.0.9/associate_with.js.map +1 -0
  74. package/esm/deps/jsr.io/@std/collections/1.0.9/chunk.js +51 -0
  75. package/esm/deps/jsr.io/@std/collections/1.0.9/chunk.js.map +1 -0
  76. package/esm/deps/jsr.io/@std/collections/1.0.9/deep_merge.js +96 -0
  77. package/esm/deps/jsr.io/@std/collections/1.0.9/deep_merge.js.map +1 -0
  78. package/esm/deps/jsr.io/@std/collections/1.0.9/distinct.js +28 -0
  79. package/esm/deps/jsr.io/@std/collections/1.0.9/distinct.js.map +1 -0
  80. package/esm/deps/jsr.io/@std/collections/1.0.9/distinct_by.js +39 -0
  81. package/esm/deps/jsr.io/@std/collections/1.0.9/distinct_by.js.map +1 -0
  82. package/esm/deps/jsr.io/@std/collections/1.0.9/drop_last_while.js +33 -0
  83. package/esm/deps/jsr.io/@std/collections/1.0.9/drop_last_while.js.map +1 -0
  84. package/esm/deps/jsr.io/@std/collections/1.0.9/drop_while.js +34 -0
  85. package/esm/deps/jsr.io/@std/collections/1.0.9/drop_while.js.map +1 -0
  86. package/esm/deps/jsr.io/@std/collections/1.0.9/filter_entries.js +43 -0
  87. package/esm/deps/jsr.io/@std/collections/1.0.9/filter_entries.js.map +1 -0
  88. package/esm/deps/jsr.io/@std/collections/1.0.9/filter_keys.js +46 -0
  89. package/esm/deps/jsr.io/@std/collections/1.0.9/filter_keys.js.map +1 -0
  90. package/esm/deps/jsr.io/@std/collections/1.0.9/filter_values.js +46 -0
  91. package/esm/deps/jsr.io/@std/collections/1.0.9/filter_values.js.map +1 -0
  92. package/esm/deps/jsr.io/@std/collections/1.0.9/find_single.js +45 -0
  93. package/esm/deps/jsr.io/@std/collections/1.0.9/find_single.js.map +1 -0
  94. package/esm/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.js +42 -0
  95. package/esm/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.js.map +1 -0
  96. package/esm/deps/jsr.io/@std/collections/1.0.9/includes_value.js +39 -0
  97. package/esm/deps/jsr.io/@std/collections/1.0.9/includes_value.js.map +1 -0
  98. package/esm/deps/jsr.io/@std/collections/1.0.9/intersect.js +36 -0
  99. package/esm/deps/jsr.io/@std/collections/1.0.9/intersect.js.map +1 -0
  100. package/esm/deps/jsr.io/@std/collections/1.0.9/invert.js +29 -0
  101. package/esm/deps/jsr.io/@std/collections/1.0.9/invert.js.map +1 -0
  102. package/esm/deps/jsr.io/@std/collections/1.0.9/invert_by.js +46 -0
  103. package/esm/deps/jsr.io/@std/collections/1.0.9/invert_by.js.map +1 -0
  104. package/esm/deps/jsr.io/@std/collections/1.0.9/join_to_string.js +59 -0
  105. package/esm/deps/jsr.io/@std/collections/1.0.9/join_to_string.js.map +1 -0
  106. package/esm/deps/jsr.io/@std/collections/1.0.9/map_entries.js +47 -0
  107. package/esm/deps/jsr.io/@std/collections/1.0.9/map_entries.js.map +1 -0
  108. package/esm/deps/jsr.io/@std/collections/1.0.9/map_keys.js +42 -0
  109. package/esm/deps/jsr.io/@std/collections/1.0.9/map_keys.js.map +1 -0
  110. package/esm/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.js +43 -0
  111. package/esm/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.js.map +1 -0
  112. package/esm/deps/jsr.io/@std/collections/1.0.9/map_values.js +13 -0
  113. package/esm/deps/jsr.io/@std/collections/1.0.9/map_values.js.map +1 -0
  114. package/esm/deps/jsr.io/@std/collections/1.0.9/max_by.js +15 -0
  115. package/esm/deps/jsr.io/@std/collections/1.0.9/max_by.js.map +1 -0
  116. package/esm/deps/jsr.io/@std/collections/1.0.9/max_of.js +17 -0
  117. package/esm/deps/jsr.io/@std/collections/1.0.9/max_of.js.map +1 -0
  118. package/esm/deps/jsr.io/@std/collections/1.0.9/max_with.js +41 -0
  119. package/esm/deps/jsr.io/@std/collections/1.0.9/max_with.js.map +1 -0
  120. package/esm/deps/jsr.io/@std/collections/1.0.9/min_by.js +15 -0
  121. package/esm/deps/jsr.io/@std/collections/1.0.9/min_by.js.map +1 -0
  122. package/esm/deps/jsr.io/@std/collections/1.0.9/min_of.js +17 -0
  123. package/esm/deps/jsr.io/@std/collections/1.0.9/min_of.js.map +1 -0
  124. package/esm/deps/jsr.io/@std/collections/1.0.9/min_with.js +37 -0
  125. package/esm/deps/jsr.io/@std/collections/1.0.9/min_with.js.map +1 -0
  126. package/esm/deps/jsr.io/@std/collections/1.0.9/mod.js +75 -0
  127. package/esm/deps/jsr.io/@std/collections/1.0.9/mod.js.map +1 -0
  128. package/esm/deps/jsr.io/@std/collections/1.0.9/omit.js +29 -0
  129. package/esm/deps/jsr.io/@std/collections/1.0.9/omit.js.map +1 -0
  130. package/esm/deps/jsr.io/@std/collections/1.0.9/partition.js +16 -0
  131. package/esm/deps/jsr.io/@std/collections/1.0.9/partition.js.map +1 -0
  132. package/esm/deps/jsr.io/@std/collections/1.0.9/partition_entries.js +54 -0
  133. package/esm/deps/jsr.io/@std/collections/1.0.9/partition_entries.js.map +1 -0
  134. package/esm/deps/jsr.io/@std/collections/1.0.9/permutations.js +58 -0
  135. package/esm/deps/jsr.io/@std/collections/1.0.9/permutations.js.map +1 -0
  136. package/esm/deps/jsr.io/@std/collections/1.0.9/pick.js +33 -0
  137. package/esm/deps/jsr.io/@std/collections/1.0.9/pick.js.map +1 -0
  138. package/esm/deps/jsr.io/@std/collections/1.0.9/reduce_groups.js +40 -0
  139. package/esm/deps/jsr.io/@std/collections/1.0.9/reduce_groups.js.map +1 -0
  140. package/esm/deps/jsr.io/@std/collections/1.0.9/running_reduce.js +32 -0
  141. package/esm/deps/jsr.io/@std/collections/1.0.9/running_reduce.js.map +1 -0
  142. package/esm/deps/jsr.io/@std/collections/1.0.9/sample.js +35 -0
  143. package/esm/deps/jsr.io/@std/collections/1.0.9/sample.js.map +1 -0
  144. package/esm/deps/jsr.io/@std/collections/1.0.9/sliding_windows.js +57 -0
  145. package/esm/deps/jsr.io/@std/collections/1.0.9/sliding_windows.js.map +1 -0
  146. package/esm/deps/jsr.io/@std/collections/1.0.9/sort_by.js +30 -0
  147. package/esm/deps/jsr.io/@std/collections/1.0.9/sort_by.js.map +1 -0
  148. package/esm/deps/jsr.io/@std/collections/1.0.9/sum_of.js +37 -0
  149. package/esm/deps/jsr.io/@std/collections/1.0.9/sum_of.js.map +1 -0
  150. package/esm/deps/jsr.io/@std/collections/1.0.9/take_last_while.js +34 -0
  151. package/esm/deps/jsr.io/@std/collections/1.0.9/take_last_while.js.map +1 -0
  152. package/esm/deps/jsr.io/@std/collections/1.0.9/take_while.js +39 -0
  153. package/esm/deps/jsr.io/@std/collections/1.0.9/take_while.js.map +1 -0
  154. package/esm/deps/jsr.io/@std/collections/1.0.9/union.js +34 -0
  155. package/esm/deps/jsr.io/@std/collections/1.0.9/union.js.map +1 -0
  156. package/esm/deps/jsr.io/@std/collections/1.0.9/unzip.js +46 -0
  157. package/esm/deps/jsr.io/@std/collections/1.0.9/unzip.js.map +1 -0
  158. package/esm/deps/jsr.io/@std/collections/1.0.9/without_all.js +28 -0
  159. package/esm/deps/jsr.io/@std/collections/1.0.9/without_all.js.map +1 -0
  160. package/esm/deps/jsr.io/@std/collections/1.0.9/zip.js +43 -0
  161. package/esm/deps/jsr.io/@std/collections/1.0.9/zip.js.map +1 -0
  162. package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.js +111 -0
  163. package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.js.map +1 -0
  164. package/esm/deps/jsr.io/@std/internal/1.0.5/diff.js +277 -0
  165. package/esm/deps/jsr.io/@std/internal/1.0.5/diff.js.map +1 -0
  166. package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.js +180 -0
  167. package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.js.map +1 -0
  168. package/esm/deps/jsr.io/@std/internal/1.0.5/format.js +38 -0
  169. package/esm/deps/jsr.io/@std/internal/1.0.5/format.js.map +1 -0
  170. package/esm/deps/jsr.io/@std/internal/1.0.5/styles.js +208 -0
  171. package/esm/deps/jsr.io/@std/internal/1.0.5/styles.js.map +1 -0
  172. package/esm/deps/jsr.io/@std/internal/1.0.5/types.js +3 -0
  173. package/esm/deps/jsr.io/@std/internal/1.0.5/types.js.map +1 -0
  174. package/esm/mod.js +3 -10
  175. package/esm/mod.js.map +1 -1
  176. package/esm/types/Ref.js +11 -0
  177. package/esm/types/Ref.js.map +1 -0
  178. package/esm/types/RootTy.js +19 -0
  179. package/esm/types/RootTy.js.map +1 -0
  180. package/esm/types/Ty.js +17 -0
  181. package/esm/types/Ty.js.map +1 -0
  182. package/esm/types/array.js +9 -0
  183. package/esm/types/array.js.map +1 -0
  184. package/esm/types/constant.js +8 -0
  185. package/esm/types/constant.js.map +1 -0
  186. package/esm/types/constantUnion.js +25 -0
  187. package/esm/types/constantUnion.js.map +1 -0
  188. package/esm/types/leaves.js +18 -0
  189. package/esm/types/leaves.js.map +1 -0
  190. package/esm/types/mod.js +11 -0
  191. package/esm/types/mod.js.map +1 -0
  192. package/esm/{object.js → types/object.js} +4 -4
  193. package/esm/types/object.js.map +1 -0
  194. package/esm/types/std/Option.js +9 -0
  195. package/esm/types/std/Option.js.map +1 -0
  196. package/esm/types/std/Wrapper.js +5 -0
  197. package/esm/types/std/Wrapper.js.map +1 -0
  198. package/esm/types/std/mod.js +3 -0
  199. package/esm/types/std/mod.js.map +1 -0
  200. package/esm/types/taggedUnion.js +20 -0
  201. package/esm/types/taggedUnion.js.map +1 -0
  202. package/esm/util/phantoms.js +4 -0
  203. package/esm/util/phantoms.js.map +1 -0
  204. package/esm/util/recombineTaggedTemplateArgs.js +4 -0
  205. package/esm/util/recombineTaggedTemplateArgs.js.map +1 -0
  206. package/package.json +10 -7
  207. package/src/ResponseFormat.ts +76 -25
  208. package/src/Tool.ts +38 -0
  209. package/src/_dnt.polyfills.ts +27 -0
  210. package/src/_dnt.shims.ts +60 -0
  211. package/src/deps/jsr.io/@std/assert/1.0.8/almost_equals.ts +55 -0
  212. package/src/deps/jsr.io/@std/assert/1.0.8/array_includes.ts +57 -0
  213. package/src/deps/jsr.io/@std/assert/1.0.8/assert.ts +23 -0
  214. package/src/deps/jsr.io/@std/assert/1.0.8/assertion_error.ts +31 -0
  215. package/src/deps/jsr.io/@std/assert/1.0.8/equal.ts +210 -0
  216. package/src/deps/jsr.io/@std/assert/1.0.8/equals.ts +52 -0
  217. package/src/deps/jsr.io/@std/assert/1.0.8/exists.ts +31 -0
  218. package/src/deps/jsr.io/@std/assert/1.0.8/fail.ts +21 -0
  219. package/src/deps/jsr.io/@std/assert/1.0.8/false.ts +26 -0
  220. package/src/deps/jsr.io/@std/assert/1.0.8/greater.ts +30 -0
  221. package/src/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.ts +36 -0
  222. package/src/deps/jsr.io/@std/assert/1.0.8/instance_of.ts +64 -0
  223. package/src/deps/jsr.io/@std/assert/1.0.8/is_error.ts +65 -0
  224. package/src/deps/jsr.io/@std/assert/1.0.8/less.ts +29 -0
  225. package/src/deps/jsr.io/@std/assert/1.0.8/less_or_equal.ts +36 -0
  226. package/src/deps/jsr.io/@std/assert/1.0.8/match.ts +30 -0
  227. package/src/deps/jsr.io/@std/assert/1.0.8/mod.ts +47 -0
  228. package/src/deps/jsr.io/@std/assert/1.0.8/not_equals.ts +36 -0
  229. package/src/deps/jsr.io/@std/assert/1.0.8/not_instance_of.ts +33 -0
  230. package/src/deps/jsr.io/@std/assert/1.0.8/not_match.ts +30 -0
  231. package/src/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.ts +42 -0
  232. package/src/deps/jsr.io/@std/assert/1.0.8/object_match.ts +202 -0
  233. package/src/deps/jsr.io/@std/assert/1.0.8/rejects.ts +123 -0
  234. package/src/deps/jsr.io/@std/assert/1.0.8/strict_equals.ts +67 -0
  235. package/src/deps/jsr.io/@std/assert/1.0.8/string_includes.ts +30 -0
  236. package/src/deps/jsr.io/@std/assert/1.0.8/throws.ts +111 -0
  237. package/src/deps/jsr.io/@std/assert/1.0.8/unimplemented.ts +21 -0
  238. package/src/deps/jsr.io/@std/assert/1.0.8/unreachable.ts +21 -0
  239. package/src/deps/jsr.io/@std/collections/1.0.9/_utils.ts +26 -0
  240. package/src/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.ts +62 -0
  241. package/src/deps/jsr.io/@std/collections/1.0.9/associate_by.ts +50 -0
  242. package/src/deps/jsr.io/@std/collections/1.0.9/associate_with.ts +46 -0
  243. package/src/deps/jsr.io/@std/collections/1.0.9/chunk.ts +56 -0
  244. package/src/deps/jsr.io/@std/collections/1.0.9/deep_merge.ts +578 -0
  245. package/src/deps/jsr.io/@std/collections/1.0.9/distinct.ts +29 -0
  246. package/src/deps/jsr.io/@std/collections/1.0.9/distinct_by.ts +42 -0
  247. package/src/deps/jsr.io/@std/collections/1.0.9/drop_last_while.ts +36 -0
  248. package/src/deps/jsr.io/@std/collections/1.0.9/drop_while.ts +39 -0
  249. package/src/deps/jsr.io/@std/collections/1.0.9/filter_entries.ts +48 -0
  250. package/src/deps/jsr.io/@std/collections/1.0.9/filter_keys.ts +51 -0
  251. package/src/deps/jsr.io/@std/collections/1.0.9/filter_values.ts +51 -0
  252. package/src/deps/jsr.io/@std/collections/1.0.9/find_single.ts +48 -0
  253. package/src/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.ts +47 -0
  254. package/src/deps/jsr.io/@std/collections/1.0.9/includes_value.ts +45 -0
  255. package/src/deps/jsr.io/@std/collections/1.0.9/intersect.ts +35 -0
  256. package/src/deps/jsr.io/@std/collections/1.0.9/invert.ts +38 -0
  257. package/src/deps/jsr.io/@std/collections/1.0.9/invert_by.ts +56 -0
  258. package/src/deps/jsr.io/@std/collections/1.0.9/join_to_string.ts +109 -0
  259. package/src/deps/jsr.io/@std/collections/1.0.9/map_entries.ts +53 -0
  260. package/src/deps/jsr.io/@std/collections/1.0.9/map_keys.ts +47 -0
  261. package/src/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.ts +49 -0
  262. package/src/deps/jsr.io/@std/collections/1.0.9/map_values.ts +96 -0
  263. package/src/deps/jsr.io/@std/collections/1.0.9/max_by.ts +153 -0
  264. package/src/deps/jsr.io/@std/collections/1.0.9/max_of.ts +90 -0
  265. package/src/deps/jsr.io/@std/collections/1.0.9/max_with.ts +46 -0
  266. package/src/deps/jsr.io/@std/collections/1.0.9/min_by.ts +151 -0
  267. package/src/deps/jsr.io/@std/collections/1.0.9/min_of.ts +90 -0
  268. package/src/deps/jsr.io/@std/collections/1.0.9/min_with.ts +42 -0
  269. package/src/deps/jsr.io/@std/collections/1.0.9/mod.ts +76 -0
  270. package/src/deps/jsr.io/@std/collections/1.0.9/omit.ts +34 -0
  271. package/src/deps/jsr.io/@std/collections/1.0.9/partition.ts +85 -0
  272. package/src/deps/jsr.io/@std/collections/1.0.9/partition_entries.ts +58 -0
  273. package/src/deps/jsr.io/@std/collections/1.0.9/permutations.ts +66 -0
  274. package/src/deps/jsr.io/@std/collections/1.0.9/pick.ts +34 -0
  275. package/src/deps/jsr.io/@std/collections/1.0.9/reduce_groups.ts +45 -0
  276. package/src/deps/jsr.io/@std/collections/1.0.9/running_reduce.ts +38 -0
  277. package/src/deps/jsr.io/@std/collections/1.0.9/sample.ts +36 -0
  278. package/src/deps/jsr.io/@std/collections/1.0.9/sliding_windows.ts +86 -0
  279. package/src/deps/jsr.io/@std/collections/1.0.9/sort_by.ts +219 -0
  280. package/src/deps/jsr.io/@std/collections/1.0.9/sum_of.ts +42 -0
  281. package/src/deps/jsr.io/@std/collections/1.0.9/take_last_while.ts +37 -0
  282. package/src/deps/jsr.io/@std/collections/1.0.9/take_while.ts +44 -0
  283. package/src/deps/jsr.io/@std/collections/1.0.9/union.ts +36 -0
  284. package/src/deps/jsr.io/@std/collections/1.0.9/unzip.ts +50 -0
  285. package/src/deps/jsr.io/@std/collections/1.0.9/without_all.ts +28 -0
  286. package/src/deps/jsr.io/@std/collections/1.0.9/zip.ts +49 -0
  287. package/src/deps/jsr.io/@std/internal/1.0.5/build_message.ts +134 -0
  288. package/src/deps/jsr.io/@std/internal/1.0.5/diff.ts +317 -0
  289. package/src/deps/jsr.io/@std/internal/1.0.5/diff_str.ts +204 -0
  290. package/src/deps/jsr.io/@std/internal/1.0.5/format.ts +39 -0
  291. package/src/deps/jsr.io/@std/internal/1.0.5/styles.ts +233 -0
  292. package/src/deps/jsr.io/@std/internal/1.0.5/types.ts +18 -0
  293. package/src/mod.ts +3 -18
  294. package/src/types/Ref.ts +16 -0
  295. package/src/types/RootTy.ts +40 -0
  296. package/src/types/Ty.ts +57 -0
  297. package/src/types/array.ts +9 -0
  298. package/src/types/constant.ts +8 -0
  299. package/src/types/constantUnion.ts +27 -0
  300. package/src/types/leaves.ts +21 -0
  301. package/src/types/mod.ts +10 -0
  302. package/src/types/object.ts +15 -0
  303. package/src/types/std/Option.ts +15 -0
  304. package/src/types/std/Wrapper.ts +8 -0
  305. package/src/types/std/mod.ts +2 -0
  306. package/src/types/taggedUnion.ts +28 -0
  307. package/src/util/phantoms.ts +3 -0
  308. package/src/util/recombineTaggedTemplateArgs.ts +6 -0
  309. package/types/ResponseFormat.d.ts +26 -0
  310. package/types/ResponseFormat.d.ts.map +1 -0
  311. package/types/Tool.d.ts +13 -0
  312. package/types/Tool.d.ts.map +1 -0
  313. package/types/_dnt.polyfills.d.ts +12 -0
  314. package/types/_dnt.polyfills.d.ts.map +1 -0
  315. package/types/_dnt.shims.d.ts +2 -0
  316. package/types/_dnt.shims.d.ts.map +1 -0
  317. package/types/deps/jsr.io/@std/assert/1.0.8/almost_equals.d.ts +29 -0
  318. package/types/deps/jsr.io/@std/assert/1.0.8/almost_equals.d.ts.map +1 -0
  319. package/types/deps/jsr.io/@std/assert/1.0.8/array_includes.d.ts +24 -0
  320. package/types/deps/jsr.io/@std/assert/1.0.8/array_includes.d.ts.map +1 -0
  321. package/types/deps/jsr.io/@std/assert/1.0.8/assert.d.ts +16 -0
  322. package/types/deps/jsr.io/@std/assert/1.0.8/assert.d.ts.map +1 -0
  323. package/types/deps/jsr.io/@std/assert/1.0.8/assertion_error.d.ts +26 -0
  324. package/types/deps/jsr.io/@std/assert/1.0.8/assertion_error.d.ts.map +1 -0
  325. package/types/deps/jsr.io/@std/assert/1.0.8/equal.d.ts +17 -0
  326. package/types/deps/jsr.io/@std/assert/1.0.8/equal.d.ts.map +1 -0
  327. package/types/deps/jsr.io/@std/assert/1.0.8/equals.d.ts +22 -0
  328. package/types/deps/jsr.io/@std/assert/1.0.8/equals.d.ts.map +1 -0
  329. package/types/deps/jsr.io/@std/assert/1.0.8/exists.d.ts +18 -0
  330. package/types/deps/jsr.io/@std/assert/1.0.8/exists.d.ts.map +1 -0
  331. package/types/deps/jsr.io/@std/assert/1.0.8/fail.d.ts +15 -0
  332. package/types/deps/jsr.io/@std/assert/1.0.8/fail.d.ts.map +1 -0
  333. package/types/deps/jsr.io/@std/assert/1.0.8/false.d.ts +18 -0
  334. package/types/deps/jsr.io/@std/assert/1.0.8/false.d.ts.map +1 -0
  335. package/types/deps/jsr.io/@std/assert/1.0.8/greater.d.ts +20 -0
  336. package/types/deps/jsr.io/@std/assert/1.0.8/greater.d.ts.map +1 -0
  337. package/types/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.d.ts +20 -0
  338. package/types/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.d.ts.map +1 -0
  339. package/types/deps/jsr.io/@std/assert/1.0.8/instance_of.d.ts +23 -0
  340. package/types/deps/jsr.io/@std/assert/1.0.8/instance_of.d.ts.map +1 -0
  341. package/types/deps/jsr.io/@std/assert/1.0.8/is_error.d.ts +25 -0
  342. package/types/deps/jsr.io/@std/assert/1.0.8/is_error.d.ts.map +1 -0
  343. package/types/deps/jsr.io/@std/assert/1.0.8/less.d.ts +19 -0
  344. package/types/deps/jsr.io/@std/assert/1.0.8/less.d.ts.map +1 -0
  345. package/types/deps/jsr.io/@std/assert/1.0.8/less_or_equal.d.ts +20 -0
  346. package/types/deps/jsr.io/@std/assert/1.0.8/less_or_equal.d.ts.map +1 -0
  347. package/types/deps/jsr.io/@std/assert/1.0.8/match.d.ts +18 -0
  348. package/types/deps/jsr.io/@std/assert/1.0.8/match.d.ts.map +1 -0
  349. package/types/deps/jsr.io/@std/assert/1.0.8/mod.d.ts +44 -0
  350. package/types/deps/jsr.io/@std/assert/1.0.8/mod.d.ts.map +1 -0
  351. package/types/deps/jsr.io/@std/assert/1.0.8/not_equals.d.ts +21 -0
  352. package/types/deps/jsr.io/@std/assert/1.0.8/not_equals.d.ts.map +1 -0
  353. package/types/deps/jsr.io/@std/assert/1.0.8/not_instance_of.d.ts +20 -0
  354. package/types/deps/jsr.io/@std/assert/1.0.8/not_instance_of.d.ts.map +1 -0
  355. package/types/deps/jsr.io/@std/assert/1.0.8/not_match.d.ts +18 -0
  356. package/types/deps/jsr.io/@std/assert/1.0.8/not_match.d.ts.map +1 -0
  357. package/types/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.d.ts +23 -0
  358. package/types/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.d.ts.map +1 -0
  359. package/types/deps/jsr.io/@std/assert/1.0.8/object_match.d.ts +28 -0
  360. package/types/deps/jsr.io/@std/assert/1.0.8/object_match.d.ts.map +1 -0
  361. package/types/deps/jsr.io/@std/assert/1.0.8/rejects.d.ts +42 -0
  362. package/types/deps/jsr.io/@std/assert/1.0.8/rejects.d.ts.map +1 -0
  363. package/types/deps/jsr.io/@std/assert/1.0.8/strict_equals.d.ts +24 -0
  364. package/types/deps/jsr.io/@std/assert/1.0.8/strict_equals.d.ts.map +1 -0
  365. package/types/deps/jsr.io/@std/assert/1.0.8/string_includes.d.ts +18 -0
  366. package/types/deps/jsr.io/@std/assert/1.0.8/string_includes.d.ts.map +1 -0
  367. package/types/deps/jsr.io/@std/assert/1.0.8/throws.d.ts +45 -0
  368. package/types/deps/jsr.io/@std/assert/1.0.8/throws.d.ts.map +1 -0
  369. package/types/deps/jsr.io/@std/assert/1.0.8/unimplemented.d.ts +15 -0
  370. package/types/deps/jsr.io/@std/assert/1.0.8/unimplemented.d.ts.map +1 -0
  371. package/types/deps/jsr.io/@std/assert/1.0.8/unreachable.d.ts +15 -0
  372. package/types/deps/jsr.io/@std/assert/1.0.8/unreachable.d.ts.map +1 -0
  373. package/types/deps/jsr.io/@std/collections/1.0.9/_utils.d.ts +6 -0
  374. package/types/deps/jsr.io/@std/collections/1.0.9/_utils.d.ts.map +1 -0
  375. package/types/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.d.ts +41 -0
  376. package/types/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.d.ts.map +1 -0
  377. package/types/deps/jsr.io/@std/collections/1.0.9/associate_by.d.ts +37 -0
  378. package/types/deps/jsr.io/@std/collections/1.0.9/associate_by.d.ts.map +1 -0
  379. package/types/deps/jsr.io/@std/collections/1.0.9/associate_with.d.ts +33 -0
  380. package/types/deps/jsr.io/@std/collections/1.0.9/associate_with.d.ts.map +1 -0
  381. package/types/deps/jsr.io/@std/collections/1.0.9/chunk.d.ts +38 -0
  382. package/types/deps/jsr.io/@std/collections/1.0.9/chunk.d.ts.map +1 -0
  383. package/types/deps/jsr.io/@std/collections/1.0.9/deep_merge.d.ts +322 -0
  384. package/types/deps/jsr.io/@std/collections/1.0.9/deep_merge.d.ts.map +1 -0
  385. package/types/deps/jsr.io/@std/collections/1.0.9/distinct.d.ts +23 -0
  386. package/types/deps/jsr.io/@std/collections/1.0.9/distinct.d.ts.map +1 -0
  387. package/types/deps/jsr.io/@std/collections/1.0.9/distinct_by.d.ts +26 -0
  388. package/types/deps/jsr.io/@std/collections/1.0.9/distinct_by.d.ts.map +1 -0
  389. package/types/deps/jsr.io/@std/collections/1.0.9/drop_last_while.d.ts +26 -0
  390. package/types/deps/jsr.io/@std/collections/1.0.9/drop_last_while.d.ts.map +1 -0
  391. package/types/deps/jsr.io/@std/collections/1.0.9/drop_while.d.ts +25 -0
  392. package/types/deps/jsr.io/@std/collections/1.0.9/drop_while.d.ts.map +1 -0
  393. package/types/deps/jsr.io/@std/collections/1.0.9/filter_entries.d.ts +32 -0
  394. package/types/deps/jsr.io/@std/collections/1.0.9/filter_entries.d.ts.map +1 -0
  395. package/types/deps/jsr.io/@std/collections/1.0.9/filter_keys.d.ts +36 -0
  396. package/types/deps/jsr.io/@std/collections/1.0.9/filter_keys.d.ts.map +1 -0
  397. package/types/deps/jsr.io/@std/collections/1.0.9/filter_values.d.ts +35 -0
  398. package/types/deps/jsr.io/@std/collections/1.0.9/filter_values.d.ts.map +1 -0
  399. package/types/deps/jsr.io/@std/collections/1.0.9/find_single.d.ts +31 -0
  400. package/types/deps/jsr.io/@std/collections/1.0.9/find_single.d.ts.map +1 -0
  401. package/types/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.d.ts +32 -0
  402. package/types/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.d.ts.map +1 -0
  403. package/types/deps/jsr.io/@std/collections/1.0.9/includes_value.d.ts +29 -0
  404. package/types/deps/jsr.io/@std/collections/1.0.9/includes_value.d.ts.map +1 -0
  405. package/types/deps/jsr.io/@std/collections/1.0.9/intersect.d.ts +25 -0
  406. package/types/deps/jsr.io/@std/collections/1.0.9/intersect.d.ts.map +1 -0
  407. package/types/deps/jsr.io/@std/collections/1.0.9/invert.d.ts +29 -0
  408. package/types/deps/jsr.io/@std/collections/1.0.9/invert.d.ts.map +1 -0
  409. package/types/deps/jsr.io/@std/collections/1.0.9/invert_by.d.ts +34 -0
  410. package/types/deps/jsr.io/@std/collections/1.0.9/invert_by.d.ts.map +1 -0
  411. package/types/deps/jsr.io/@std/collections/1.0.9/join_to_string.d.ts +75 -0
  412. package/types/deps/jsr.io/@std/collections/1.0.9/join_to_string.d.ts.map +1 -0
  413. package/types/deps/jsr.io/@std/collections/1.0.9/map_entries.d.ts +37 -0
  414. package/types/deps/jsr.io/@std/collections/1.0.9/map_entries.d.ts.map +1 -0
  415. package/types/deps/jsr.io/@std/collections/1.0.9/map_keys.d.ts +33 -0
  416. package/types/deps/jsr.io/@std/collections/1.0.9/map_keys.d.ts.map +1 -0
  417. package/types/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.d.ts +32 -0
  418. package/types/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.d.ts.map +1 -0
  419. package/types/deps/jsr.io/@std/collections/1.0.9/map_values.d.ts +71 -0
  420. package/types/deps/jsr.io/@std/collections/1.0.9/map_values.d.ts.map +1 -0
  421. package/types/deps/jsr.io/@std/collections/1.0.9/max_by.d.ts +117 -0
  422. package/types/deps/jsr.io/@std/collections/1.0.9/max_by.d.ts.map +1 -0
  423. package/types/deps/jsr.io/@std/collections/1.0.9/max_of.d.ts +61 -0
  424. package/types/deps/jsr.io/@std/collections/1.0.9/max_of.d.ts.map +1 -0
  425. package/types/deps/jsr.io/@std/collections/1.0.9/max_with.d.ts +29 -0
  426. package/types/deps/jsr.io/@std/collections/1.0.9/max_with.d.ts.map +1 -0
  427. package/types/deps/jsr.io/@std/collections/1.0.9/min_by.d.ts +115 -0
  428. package/types/deps/jsr.io/@std/collections/1.0.9/min_by.d.ts.map +1 -0
  429. package/types/deps/jsr.io/@std/collections/1.0.9/min_of.d.ts +61 -0
  430. package/types/deps/jsr.io/@std/collections/1.0.9/min_of.d.ts.map +1 -0
  431. package/types/deps/jsr.io/@std/collections/1.0.9/min_with.d.ts +25 -0
  432. package/types/deps/jsr.io/@std/collections/1.0.9/min_with.d.ts.map +1 -0
  433. package/types/deps/jsr.io/@std/collections/1.0.9/mod.d.ts +73 -0
  434. package/types/deps/jsr.io/@std/collections/1.0.9/mod.d.ts.map +1 -0
  435. package/types/deps/jsr.io/@std/collections/1.0.9/omit.d.ts +24 -0
  436. package/types/deps/jsr.io/@std/collections/1.0.9/omit.d.ts.map +1 -0
  437. package/types/deps/jsr.io/@std/collections/1.0.9/partition.d.ts +60 -0
  438. package/types/deps/jsr.io/@std/collections/1.0.9/partition.d.ts.map +1 -0
  439. package/types/deps/jsr.io/@std/collections/1.0.9/partition_entries.d.ts +39 -0
  440. package/types/deps/jsr.io/@std/collections/1.0.9/partition_entries.d.ts.map +1 -0
  441. package/types/deps/jsr.io/@std/collections/1.0.9/permutations.d.ts +27 -0
  442. package/types/deps/jsr.io/@std/collections/1.0.9/permutations.d.ts.map +1 -0
  443. package/types/deps/jsr.io/@std/collections/1.0.9/pick.d.ts +25 -0
  444. package/types/deps/jsr.io/@std/collections/1.0.9/pick.d.ts.map +1 -0
  445. package/types/deps/jsr.io/@std/collections/1.0.9/reduce_groups.d.ts +35 -0
  446. package/types/deps/jsr.io/@std/collections/1.0.9/reduce_groups.d.ts.map +1 -0
  447. package/types/deps/jsr.io/@std/collections/1.0.9/running_reduce.d.ts +27 -0
  448. package/types/deps/jsr.io/@std/collections/1.0.9/running_reduce.d.ts.map +1 -0
  449. package/types/deps/jsr.io/@std/collections/1.0.9/sample.d.ts +24 -0
  450. package/types/deps/jsr.io/@std/collections/1.0.9/sample.d.ts.map +1 -0
  451. package/types/deps/jsr.io/@std/collections/1.0.9/sliding_windows.d.ts +66 -0
  452. package/types/deps/jsr.io/@std/collections/1.0.9/sliding_windows.d.ts.map +1 -0
  453. package/types/deps/jsr.io/@std/collections/1.0.9/sort_by.d.ts +161 -0
  454. package/types/deps/jsr.io/@std/collections/1.0.9/sort_by.d.ts.map +1 -0
  455. package/types/deps/jsr.io/@std/collections/1.0.9/sum_of.d.ts +29 -0
  456. package/types/deps/jsr.io/@std/collections/1.0.9/sum_of.d.ts.map +1 -0
  457. package/types/deps/jsr.io/@std/collections/1.0.9/take_last_while.d.ts +27 -0
  458. package/types/deps/jsr.io/@std/collections/1.0.9/take_last_while.d.ts.map +1 -0
  459. package/types/deps/jsr.io/@std/collections/1.0.9/take_while.d.ts +30 -0
  460. package/types/deps/jsr.io/@std/collections/1.0.9/take_while.d.ts.map +1 -0
  461. package/types/deps/jsr.io/@std/collections/1.0.9/union.d.ts +24 -0
  462. package/types/deps/jsr.io/@std/collections/1.0.9/union.d.ts.map +1 -0
  463. package/types/deps/jsr.io/@std/collections/1.0.9/unzip.d.ts +32 -0
  464. package/types/deps/jsr.io/@std/collections/1.0.9/unzip.d.ts.map +1 -0
  465. package/types/deps/jsr.io/@std/collections/1.0.9/without_all.d.ts +23 -0
  466. package/types/deps/jsr.io/@std/collections/1.0.9/without_all.d.ts.map +1 -0
  467. package/types/deps/jsr.io/@std/collections/1.0.9/zip.d.ts +34 -0
  468. package/types/deps/jsr.io/@std/collections/1.0.9/zip.d.ts.map +1 -0
  469. package/types/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts +82 -0
  470. package/types/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts.map +1 -0
  471. package/types/deps/jsr.io/@std/internal/1.0.5/diff.d.ts +140 -0
  472. package/types/deps/jsr.io/@std/internal/1.0.5/diff.d.ts.map +1 -0
  473. package/types/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts +99 -0
  474. package/types/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts.map +1 -0
  475. package/types/deps/jsr.io/@std/internal/1.0.5/format.d.ts +2 -0
  476. package/types/deps/jsr.io/@std/internal/1.0.5/format.d.ts.map +1 -0
  477. package/types/deps/jsr.io/@std/internal/1.0.5/styles.d.ts +159 -0
  478. package/types/deps/jsr.io/@std/internal/1.0.5/styles.d.ts.map +1 -0
  479. package/types/deps/jsr.io/@std/internal/1.0.5/types.d.ts +16 -0
  480. package/types/deps/jsr.io/@std/internal/1.0.5/types.d.ts.map +1 -0
  481. package/types/mod.d.ts +5 -0
  482. package/types/mod.d.ts.map +1 -0
  483. package/types/types/Ref.d.ts +4 -0
  484. package/types/types/Ref.d.ts.map +1 -0
  485. package/types/types/RootTy.d.ts +8 -0
  486. package/types/types/RootTy.d.ts.map +1 -0
  487. package/types/types/Ty.d.ts +27 -0
  488. package/types/types/Ty.d.ts.map +1 -0
  489. package/types/types/array.d.ts +3 -0
  490. package/types/types/array.d.ts.map +1 -0
  491. package/types/types/constant.d.ts +3 -0
  492. package/types/types/constant.d.ts.map +1 -0
  493. package/types/types/constantUnion.d.ts +3 -0
  494. package/types/types/constantUnion.d.ts.map +1 -0
  495. package/types/types/leaves.d.ts +6 -0
  496. package/types/types/leaves.d.ts.map +1 -0
  497. package/types/types/mod.d.ts +11 -0
  498. package/types/types/mod.d.ts.map +1 -0
  499. package/types/types/object.d.ts +6 -0
  500. package/types/types/object.d.ts.map +1 -0
  501. package/types/types/std/Option.d.ts +7 -0
  502. package/types/types/std/Option.d.ts.map +1 -0
  503. package/types/types/std/Wrapper.d.ts +7 -0
  504. package/types/types/std/Wrapper.d.ts.map +1 -0
  505. package/types/types/std/mod.d.ts +3 -0
  506. package/types/types/std/mod.d.ts.map +1 -0
  507. package/types/types/taggedUnion.d.ts +8 -0
  508. package/types/types/taggedUnion.d.ts.map +1 -0
  509. package/types/util/phantoms.d.ts +2 -0
  510. package/types/util/phantoms.d.ts.map +1 -0
  511. package/types/util/recombineTaggedTemplateArgs.d.ts +2 -0
  512. package/types/util/recombineTaggedTemplateArgs.d.ts.map +1 -0
  513. package/esm/F.d.ts +0 -13
  514. package/esm/F.d.ts.map +0 -1
  515. package/esm/F.js +0 -10
  516. package/esm/F.js.map +0 -1
  517. package/esm/ResponseFormat.d.ts +0 -14
  518. package/esm/ResponseFormat.d.ts.map +0 -1
  519. package/esm/_base.d.ts +0 -13
  520. package/esm/_base.d.ts.map +0 -1
  521. package/esm/_base.js +0 -40
  522. package/esm/_base.js.map +0 -1
  523. package/esm/array.d.ts +0 -4
  524. package/esm/array.d.ts.map +0 -1
  525. package/esm/array.js +0 -9
  526. package/esm/array.js.map +0 -1
  527. package/esm/common.d.ts +0 -6
  528. package/esm/common.d.ts.map +0 -1
  529. package/esm/common.js +0 -2
  530. package/esm/common.js.map +0 -1
  531. package/esm/literal.d.ts +0 -4
  532. package/esm/literal.d.ts.map +0 -1
  533. package/esm/literal.js +0 -8
  534. package/esm/literal.js.map +0 -1
  535. package/esm/mod.d.ts +0 -16
  536. package/esm/mod.d.ts.map +0 -1
  537. package/esm/number.d.ts +0 -4
  538. package/esm/number.d.ts.map +0 -1
  539. package/esm/number.js +0 -8
  540. package/esm/number.js.map +0 -1
  541. package/esm/object.d.ts +0 -7
  542. package/esm/object.d.ts.map +0 -1
  543. package/esm/object.js.map +0 -1
  544. package/esm/schema.d.ts +0 -4
  545. package/esm/schema.d.ts.map +0 -1
  546. package/esm/schema.js +0 -9
  547. package/esm/schema.js.map +0 -1
  548. package/esm/string.d.ts +0 -4
  549. package/esm/string.d.ts.map +0 -1
  550. package/esm/string.js +0 -8
  551. package/esm/string.js.map +0 -1
  552. package/esm/union.d.ts +0 -6
  553. package/esm/union.d.ts.map +0 -1
  554. package/esm/union.js +0 -8
  555. package/esm/union.js.map +0 -1
  556. package/src/F.ts +0 -27
  557. package/src/_base.ts +0 -25
  558. package/src/array.ts +0 -11
  559. package/src/common.ts +0 -6
  560. package/src/literal.ts +0 -10
  561. package/src/number.ts +0 -10
  562. package/src/object.ts +0 -17
  563. package/src/schema.ts +0 -10
  564. package/src/string.ts +0 -10
  565. package/src/union.ts +0 -12
@@ -0,0 +1,578 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+
4
+ import { filterInPlace } from "./_utils.js";
5
+
6
+ /**
7
+ * Merges the two given records, recursively merging any nested records with the
8
+ * second collection overriding the first in case of conflict.
9
+ *
10
+ * For arrays, maps and sets, a merging strategy can be specified to either
11
+ * `replace` values, or `merge` them instead.
12
+ *
13
+ * @typeParam T Type of the first record
14
+ *
15
+ * @param record First record to merge.
16
+ * @param other Second record to merge.
17
+ * @param options Merging options.
18
+ *
19
+ * @returns A new record with the merged values.
20
+ *
21
+ * @example Merge objects
22
+ * ```ts
23
+ * import { deepMerge } from "@std/collections/deep-merge";
24
+ * import { assertEquals } from "@std/assert";
25
+ *
26
+ * const a = { foo: true };
27
+ * const b = { foo: { bar: true } };
28
+ *
29
+ * const result = deepMerge(a, b);
30
+ *
31
+ * const expected = { foo: { bar: true } };
32
+ *
33
+ * assertEquals(result, expected);
34
+ * ```
35
+ *
36
+ * @example Merge arrays
37
+ * ```ts
38
+ * import { deepMerge } from "@std/collections/deep-merge";
39
+ * import { assertEquals } from "@std/assert";
40
+ *
41
+ * const a = { foo: [1, 2] };
42
+ * const b = { foo: [3, 4] };
43
+ *
44
+ * const result = deepMerge(a, b);
45
+ *
46
+ * const expected = { foo: [1, 2, 3, 4] };
47
+ *
48
+ * assertEquals(result, expected);
49
+ * ```
50
+ *
51
+ * @example Merge maps
52
+ * ```ts
53
+ * import { deepMerge } from "@std/collections/deep-merge";
54
+ * import { assertEquals } from "@std/assert";
55
+ *
56
+ * const a = { foo: new Map([["a", 1]]) };
57
+ * const b = { foo: new Map([["b", 2]]) };
58
+ *
59
+ * const result = deepMerge(a, b);
60
+ *
61
+ * const expected = { foo: new Map([["a", 1], ["b", 2]]) };
62
+ *
63
+ * assertEquals(result, expected);
64
+ * ```
65
+ *
66
+ * @example Merge sets
67
+ * ```ts
68
+ * import { deepMerge } from "@std/collections/deep-merge";
69
+ * import { assertEquals } from "@std/assert";
70
+ *
71
+ * const a = { foo: new Set([1]) };
72
+ * const b = { foo: new Set([2]) };
73
+ *
74
+ * const result = deepMerge(a, b);
75
+ *
76
+ * const expected = { foo: new Set([1, 2]) };
77
+ *
78
+ * assertEquals(result, expected);
79
+ * ```
80
+ *
81
+ * @example Merge with custom options
82
+ * ```ts
83
+ * import { deepMerge } from "@std/collections/deep-merge";
84
+ * import { assertEquals } from "@std/assert";
85
+ *
86
+ * const a = { foo: [1, 2] };
87
+ * const b = { foo: [3, 4] };
88
+ *
89
+ * const result = deepMerge(a, b, { arrays: "replace" });
90
+ *
91
+ * const expected = { foo: [3, 4] };
92
+ *
93
+ * assertEquals(result, expected);
94
+ * ```
95
+ */
96
+ export function deepMerge<
97
+ T extends Record<PropertyKey, unknown>,
98
+ >(
99
+ record: Partial<Readonly<T>>,
100
+ other: Partial<Readonly<T>>,
101
+ options?: Readonly<DeepMergeOptions>,
102
+ ): T;
103
+ /**
104
+ * Merges the two given records, recursively merging any nested records with the
105
+ * second collection overriding the first in case of conflict.
106
+ *
107
+ * For arrays, maps and sets, a merging strategy can be specified to either
108
+ * `replace` values, or `merge` them instead.
109
+ *
110
+ * @typeParam T Type of the first record
111
+ * @typeParam U Type of the second record
112
+ * @typeParam Options Merging options
113
+ *
114
+ * @param record First record to merge.
115
+ * @param other Second record to merge.
116
+ * @param options Merging options.
117
+ *
118
+ * @returns A new record with the merged values.
119
+ *
120
+ * @example Merge objects
121
+ * ```ts
122
+ * import { deepMerge } from "@std/collections/deep-merge";
123
+ * import { assertEquals } from "@std/assert";
124
+ *
125
+ * const a = { foo: true };
126
+ * const b = { foo: { bar: true } };
127
+ *
128
+ * const result = deepMerge(a, b);
129
+ *
130
+ * const expected = { foo: { bar: true } };
131
+ *
132
+ * assertEquals(result, expected);
133
+ * ```
134
+ *
135
+ * @example Merge arrays
136
+ * ```ts
137
+ * import { deepMerge } from "@std/collections/deep-merge";
138
+ * import { assertEquals } from "@std/assert";
139
+ *
140
+ * const a = { foo: [1, 2] };
141
+ * const b = { foo: [3, 4] };
142
+ *
143
+ * const result = deepMerge(a, b);
144
+ *
145
+ * const expected = { foo: [1, 2, 3, 4] };
146
+ *
147
+ * assertEquals(result, expected);
148
+ * ```
149
+ *
150
+ * @example Merge maps
151
+ * ```ts
152
+ * import { deepMerge } from "@std/collections/deep-merge";
153
+ * import { assertEquals } from "@std/assert";
154
+ *
155
+ * const a = { foo: new Map([["a", 1]]) };
156
+ * const b = { foo: new Map([["b", 2]]) };
157
+ *
158
+ * const result = deepMerge(a, b);
159
+ *
160
+ * const expected = { foo: new Map([["a", 1], ["b", 2]]) };
161
+ *
162
+ * assertEquals(result, expected);
163
+ * ```
164
+ *
165
+ * @example Merge sets
166
+ * ```ts
167
+ * import { deepMerge } from "@std/collections/deep-merge";
168
+ * import { assertEquals } from "@std/assert";
169
+ *
170
+ * const a = { foo: new Set([1]) };
171
+ * const b = { foo: new Set([2]) };
172
+ *
173
+ * const result = deepMerge(a, b);
174
+ *
175
+ * const expected = { foo: new Set([1, 2]) };
176
+ *
177
+ * assertEquals(result, expected);
178
+ * ```
179
+ *
180
+ * @example Merge with custom options
181
+ * ```ts
182
+ * import { deepMerge } from "@std/collections/deep-merge";
183
+ * import { assertEquals } from "@std/assert";
184
+ *
185
+ * const a = { foo: [1, 2] };
186
+ * const b = { foo: [3, 4] };
187
+ *
188
+ * const result = deepMerge(a, b, { arrays: "replace" });
189
+ *
190
+ * const expected = { foo: [3, 4] };
191
+ *
192
+ * assertEquals(result, expected);
193
+ * ```
194
+ */
195
+ export function deepMerge<
196
+ T extends Record<PropertyKey, unknown>,
197
+ U extends Record<PropertyKey, unknown>,
198
+ Options extends DeepMergeOptions,
199
+ >(
200
+ record: Readonly<T>,
201
+ other: Readonly<U>,
202
+ options?: Readonly<Options>,
203
+ ): DeepMerge<T, U, Options>;
204
+ export function deepMerge<
205
+ T extends Record<PropertyKey, unknown>,
206
+ U extends Record<PropertyKey, unknown>,
207
+ Options extends DeepMergeOptions = {
208
+ arrays: "merge";
209
+ sets: "merge";
210
+ maps: "merge";
211
+ },
212
+ >(
213
+ record: Readonly<T>,
214
+ other: Readonly<U>,
215
+ options?: Readonly<Options>,
216
+ ): DeepMerge<T, U, Options> {
217
+ return deepMergeInternal(record, other, new Set(), options);
218
+ }
219
+
220
+ function deepMergeInternal<
221
+ T extends Record<PropertyKey, unknown>,
222
+ U extends Record<PropertyKey, unknown>,
223
+ Options extends DeepMergeOptions = {
224
+ arrays: "merge";
225
+ sets: "merge";
226
+ maps: "merge";
227
+ },
228
+ >(
229
+ record: Readonly<T>,
230
+ other: Readonly<U>,
231
+ seen: Set<NonNullable<unknown>>,
232
+ options?: Readonly<Options>,
233
+ ) {
234
+ // Extract options
235
+ // Clone left operand to avoid performing mutations in-place
236
+ type Result = DeepMerge<T, U, Options>;
237
+ const result: Partial<Result> = {};
238
+
239
+ const keys = new Set([
240
+ ...getKeys(record),
241
+ ...getKeys(other),
242
+ ]) as Set<keyof Result>;
243
+
244
+ // Iterate through each key of other object and use correct merging strategy
245
+ for (const key of keys) {
246
+ // Skip to prevent Object.prototype.__proto__ accessor property calls on non-Deno platforms
247
+ if (key === "__proto__") {
248
+ continue;
249
+ }
250
+
251
+ type ResultMember = Result[typeof key];
252
+
253
+ const a = record[key] as ResultMember;
254
+
255
+ if (!Object.hasOwn(other, key)) {
256
+ result[key] = a;
257
+
258
+ continue;
259
+ }
260
+
261
+ const b = other[key] as ResultMember;
262
+
263
+ if (
264
+ isNonNullObject(a) && isNonNullObject(b) && !seen.has(a) && !seen.has(b)
265
+ ) {
266
+ seen.add(a);
267
+ seen.add(b);
268
+ result[key] = mergeObjects(a, b, seen, options) as ResultMember;
269
+
270
+ continue;
271
+ }
272
+
273
+ // Override value
274
+ result[key] = b;
275
+ }
276
+
277
+ return result as Result;
278
+ }
279
+
280
+ function mergeObjects(
281
+ left: Readonly<NonNullable<Record<string, unknown>>>,
282
+ right: Readonly<NonNullable<Record<string, unknown>>>,
283
+ seen: Set<NonNullable<unknown>>,
284
+ options: Readonly<DeepMergeOptions> = {
285
+ arrays: "merge",
286
+ sets: "merge",
287
+ maps: "merge",
288
+ },
289
+ ): Readonly<NonNullable<Record<string, unknown> | Iterable<unknown>>> {
290
+ // Recursively merge mergeable objects
291
+ if (isMergeable(left) && isMergeable(right)) {
292
+ return deepMergeInternal(left, right, seen, options);
293
+ }
294
+
295
+ if (isIterable(left) && isIterable(right)) {
296
+ // Handle arrays
297
+ if ((Array.isArray(left)) && (Array.isArray(right))) {
298
+ if (options.arrays === "merge") {
299
+ return left.concat(right);
300
+ }
301
+
302
+ return right;
303
+ }
304
+
305
+ // Handle maps
306
+ if ((left instanceof Map) && (right instanceof Map)) {
307
+ if (options.maps === "merge") {
308
+ return new Map([
309
+ ...left,
310
+ ...right,
311
+ ]);
312
+ }
313
+
314
+ return right;
315
+ }
316
+
317
+ // Handle sets
318
+ if ((left instanceof Set) && (right instanceof Set)) {
319
+ if (options.sets === "merge") {
320
+ return new Set([
321
+ ...left,
322
+ ...right,
323
+ ]);
324
+ }
325
+
326
+ return right;
327
+ }
328
+ }
329
+
330
+ return right;
331
+ }
332
+
333
+ /**
334
+ * Test whether a value is mergeable or not
335
+ * Builtins that look like objects, null and user defined classes
336
+ * are not considered mergeable (it means that reference will be copied)
337
+ */
338
+ function isMergeable(
339
+ value: NonNullable<unknown>,
340
+ ): value is Record<PropertyKey, unknown> {
341
+ return Object.getPrototypeOf(value) === Object.prototype;
342
+ }
343
+
344
+ function isIterable(
345
+ value: NonNullable<unknown>,
346
+ ): value is Iterable<unknown> {
347
+ return typeof (value as Iterable<unknown>)[Symbol.iterator] === "function";
348
+ }
349
+
350
+ function isNonNullObject(
351
+ value: unknown,
352
+ ): value is NonNullable<Record<string, unknown>> {
353
+ return value !== null && typeof value === "object";
354
+ }
355
+
356
+ function getKeys<T extends Record<string, unknown>>(record: T): Array<keyof T> {
357
+ const result = Object.getOwnPropertySymbols(record) as Array<keyof T>;
358
+ filterInPlace(
359
+ result,
360
+ (key) => Object.prototype.propertyIsEnumerable.call(record, key),
361
+ );
362
+ result.push(...(Object.keys(record) as Array<keyof T>));
363
+
364
+ return result;
365
+ }
366
+
367
+ /** Merging strategy */
368
+ export type MergingStrategy = "replace" | "merge";
369
+
370
+ /** Options for {@linkcode deepMerge}. */
371
+ export type DeepMergeOptions = {
372
+ /**
373
+ * Merging strategy for arrays
374
+ *
375
+ * @default {"merge"}
376
+ */
377
+ arrays?: MergingStrategy;
378
+ /**
379
+ * Merging strategy for maps.
380
+ *
381
+ * @default {"merge"}
382
+ */
383
+ maps?: MergingStrategy;
384
+ /**
385
+ * Merging strategy for sets.
386
+ *
387
+ * @default {"merge"}
388
+ */
389
+ sets?: MergingStrategy;
390
+ };
391
+
392
+ /**
393
+ * How does recursive typing works ?
394
+ *
395
+ * Deep merging process is handled through `DeepMerge<T, U, Options>` type.
396
+ * If both T and U are Records, we recursively merge them,
397
+ * else we treat them as primitives.
398
+ *
399
+ * Merging process is handled through `Merge<T, U>` type, in which
400
+ * we remove all maps, sets, arrays and records so we can handle them
401
+ * separately depending on merging strategy:
402
+ *
403
+ * Merge<
404
+ * {foo: string},
405
+ * {bar: string, baz: Set<unknown>},
406
+ * > // "foo" and "bar" will be handled with `MergeRightOmitComplexes`
407
+ * // "baz" will be handled with `MergeAll*` type
408
+ *
409
+ * `MergeRightOmitComplexes<T, U>` will do the above: all T's
410
+ * exclusive keys will be kept, though common ones with U will have their
411
+ * typing overridden instead:
412
+ *
413
+ * MergeRightOmitComplexes<
414
+ * {foo: string, baz: number},
415
+ * {foo: boolean, bar: string}
416
+ * > // {baz: number, foo: boolean, bar: string}
417
+ * // "baz" was kept from T
418
+ * // "foo" was overridden by U's typing
419
+ * // "bar" was added from U
420
+ *
421
+ * For Maps, Arrays, Sets and Records, we use `MergeAll*<T, U>` utility
422
+ * types. They will extract relevant data structure from both T and U
423
+ * (providing that both have same data data structure, except for typing).
424
+ *
425
+ * From these, `*ValueType<T>` will extract values (and keys) types to be
426
+ * able to create a new data structure with an union typing from both
427
+ * data structure of T and U:
428
+ *
429
+ * MergeAllSets<
430
+ * {foo: Set<number>},
431
+ * {foo: Set<string>}
432
+ * > // `SetValueType` will extract "number" for T
433
+ * // `SetValueType` will extract "string" for U
434
+ * // `MergeAllSets` will infer type as Set<number|string>
435
+ * // Process is similar for Maps, Arrays, and Sets
436
+ *
437
+ * `DeepMerge<T, U, Options>` is taking a third argument to be handle to
438
+ * infer final typing depending on merging strategy:
439
+ *
440
+ * & (Options extends { sets: "replace" } ? PartialByType<U, Set<unknown>>
441
+ * : MergeAllSets<T, U>)
442
+ *
443
+ * In the above line, if "Options" have its merging strategy for Sets set to
444
+ * "replace", instead of performing merging of Sets type, it will take the
445
+ * typing from right operand (U) instead, effectively replacing the typing.
446
+ *
447
+ * An additional note, we use `ExpandRecursively<T>` utility type to expand
448
+ * the resulting typing and hide all the typing logic of deep merging so it is
449
+ * more user friendly.
450
+ */
451
+
452
+ /** Force intellisense to expand the typing to hide merging typings */
453
+ export type ExpandRecursively<T> = T extends Record<PropertyKey, unknown>
454
+ ? T extends infer O ? { [K in keyof O]: ExpandRecursively<O[K]> } : never
455
+ : T;
456
+
457
+ /** Filter of keys matching a given type */
458
+ export type PartialByType<T, U> = {
459
+ [K in keyof T as T[K] extends U ? K : never]: T[K];
460
+ };
461
+
462
+ /** Get set values type */
463
+ export type SetValueType<T> = T extends Set<infer V> ? V : never;
464
+
465
+ /** Merge all sets types definitions from keys present in both objects */
466
+ export type MergeAllSets<
467
+ T,
468
+ U,
469
+ X = PartialByType<T, Set<unknown>>,
470
+ Y = PartialByType<U, Set<unknown>>,
471
+ Z = {
472
+ [K in keyof X & keyof Y]: Set<SetValueType<X[K]> | SetValueType<Y[K]>>;
473
+ },
474
+ > = Z;
475
+
476
+ /** Get array values type */
477
+ export type ArrayValueType<T> = T extends Array<infer V> ? V : never;
478
+
479
+ /** Merge all sets types definitions from keys present in both objects */
480
+ export type MergeAllArrays<
481
+ T,
482
+ U,
483
+ X = PartialByType<T, Array<unknown>>,
484
+ Y = PartialByType<U, Array<unknown>>,
485
+ Z = {
486
+ [K in keyof X & keyof Y]: Array<
487
+ ArrayValueType<X[K]> | ArrayValueType<Y[K]>
488
+ >;
489
+ },
490
+ > = Z;
491
+
492
+ /** Get map values types */
493
+ export type MapKeyType<T> = T extends Map<infer K, unknown> ? K : never;
494
+
495
+ /** Get map values types */
496
+ export type MapValueType<T> = T extends Map<unknown, infer V> ? V : never;
497
+
498
+ /** Merge all sets types definitions from keys present in both objects */
499
+ export type MergeAllMaps<
500
+ T,
501
+ U,
502
+ X = PartialByType<T, Map<unknown, unknown>>,
503
+ Y = PartialByType<U, Map<unknown, unknown>>,
504
+ Z = {
505
+ [K in keyof X & keyof Y]: Map<
506
+ MapKeyType<X[K]> | MapKeyType<Y[K]>,
507
+ MapValueType<X[K]> | MapValueType<Y[K]>
508
+ >;
509
+ },
510
+ > = Z;
511
+
512
+ /** Merge all records types definitions from keys present in both objects */
513
+ export type MergeAllRecords<
514
+ T,
515
+ U,
516
+ Options,
517
+ X = PartialByType<T, Record<PropertyKey, unknown>>,
518
+ Y = PartialByType<U, Record<PropertyKey, unknown>>,
519
+ Z = {
520
+ [K in keyof X & keyof Y]: DeepMerge<X[K], Y[K], Options>;
521
+ },
522
+ > = Z;
523
+
524
+ /** Exclude map, sets and array from type */
525
+ export type OmitComplexes<T> = Omit<
526
+ T,
527
+ keyof PartialByType<
528
+ T,
529
+ | Map<unknown, unknown>
530
+ | Set<unknown>
531
+ | Array<unknown>
532
+ | Record<PropertyKey, unknown>
533
+ >
534
+ >;
535
+
536
+ /** Object with keys in either T or U but not in both */
537
+ export type ObjectXorKeys<
538
+ T,
539
+ U,
540
+ X = Omit<T, keyof U> & Omit<U, keyof T>,
541
+ Y = { [K in keyof X]: X[K] },
542
+ > = Y;
543
+
544
+ /** Merge two objects, with left precedence */
545
+ export type MergeRightOmitComplexes<
546
+ T,
547
+ U,
548
+ X = ObjectXorKeys<T, U> & OmitComplexes<{ [K in keyof U]: U[K] }>,
549
+ > = X;
550
+
551
+ /** Merge two objects */
552
+ export type Merge<
553
+ T,
554
+ U,
555
+ Options,
556
+ X =
557
+ & MergeRightOmitComplexes<T, U>
558
+ & MergeAllRecords<T, U, Options>
559
+ & (Options extends { sets: "replace" } ? PartialByType<U, Set<unknown>>
560
+ : MergeAllSets<T, U>)
561
+ & (Options extends { arrays: "replace" } ? PartialByType<U, Array<unknown>>
562
+ : MergeAllArrays<T, U>)
563
+ & (Options extends { maps: "replace" }
564
+ ? PartialByType<U, Map<unknown, unknown>>
565
+ : MergeAllMaps<T, U>),
566
+ > = ExpandRecursively<X>;
567
+
568
+ /** Merge deeply two objects */
569
+ export type DeepMerge<
570
+ T,
571
+ U,
572
+ Options = Record<string, MergingStrategy>,
573
+ > =
574
+ // Handle objects
575
+ [T, U] extends [Record<PropertyKey, unknown>, Record<PropertyKey, unknown>]
576
+ ? Merge<T, U, Options>
577
+ // Handle primitives
578
+ : T | U;
@@ -0,0 +1,29 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+
4
+ /**
5
+ * Returns all distinct elements in the given array, preserving order by first
6
+ * occurrence.
7
+ *
8
+ * @typeParam T The type of the elements in the input array.
9
+ *
10
+ * @param array The array to filter for distinct elements.
11
+ *
12
+ * @returns An array of distinct elements in the input array.
13
+ *
14
+ * @example Basic usage
15
+ * ```ts
16
+ * import { distinct } from "@std/collections/distinct";
17
+ * import { assertEquals } from "@std/assert";
18
+ *
19
+ * const numbers = [3, 2, 5, 2, 5];
20
+ * const distinctNumbers = distinct(numbers);
21
+ *
22
+ * assertEquals(distinctNumbers, [3, 2, 5]);
23
+ * ```
24
+ */
25
+ export function distinct<T>(array: Iterable<T>): T[] {
26
+ const set = new Set(array);
27
+
28
+ return Array.from(set);
29
+ }
@@ -0,0 +1,42 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+
4
+ /**
5
+ * Returns all elements in the given array that produce a distinct value using
6
+ * the given selector, preserving order by first occurrence.
7
+ *
8
+ * @typeParam T The type of the elements in the input array.
9
+ * @typeParam D The type of the values produced by the selector function.
10
+ *
11
+ * @param array The array to filter for distinct elements.
12
+ * @param selector The function to extract the value to compare for
13
+ * distinctness.
14
+ *
15
+ * @returns An array of distinct elements in the input array.
16
+ *
17
+ * @example Basic usage
18
+ * ```ts
19
+ * import { distinctBy } from "@std/collections/distinct-by";
20
+ * import { assertEquals } from "@std/assert";
21
+ *
22
+ * const names = ["Anna", "Kim", "Arnold", "Kate"];
23
+ * const exampleNamesByFirstLetter = distinctBy(names, (name) => name.charAt(0));
24
+ *
25
+ * assertEquals(exampleNamesByFirstLetter, ["Anna", "Kim"]);
26
+ * ```
27
+ */
28
+ export function distinctBy<T, D>(
29
+ array: Iterable<T>,
30
+ selector: (el: T) => D,
31
+ ): T[] {
32
+ const selectedValues = new Set<D>();
33
+ const result: T[] = [];
34
+ for (const element of array) {
35
+ const selected = selector(element);
36
+ if (!selectedValues.has(selected)) {
37
+ selectedValues.add(selected);
38
+ result.push(element);
39
+ }
40
+ }
41
+ return result;
42
+ }
@@ -0,0 +1,36 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+
4
+ /**
5
+ * Returns a new array that drops all elements in the given collection until the
6
+ * last element that does not match the given predicate.
7
+ *
8
+ * @typeParam T The type of the elements in the input array.
9
+ *
10
+ * @param array The array to drop elements from.
11
+ * @param predicate The function to test each element for a condition.
12
+ *
13
+ * @returns A new array that drops all elements until the last element that does
14
+ * not match the given predicate.
15
+ *
16
+ * @example Basic usage
17
+ * ```ts
18
+ * import { dropLastWhile } from "@std/collections/drop-last-while";
19
+ * import { assertEquals } from "@std/assert";
20
+ *
21
+ * const numbers = [11, 42, 55, 20, 33, 44];
22
+ *
23
+ * const notFortyFour = dropLastWhile(numbers, (number) => number > 30);
24
+ *
25
+ * assertEquals(notFortyFour, [11, 42, 55, 20]);
26
+ * ```
27
+ */
28
+ export function dropLastWhile<T>(
29
+ array: readonly T[],
30
+ predicate: (el: T) => boolean,
31
+ ): T[] {
32
+ let offset = array.length;
33
+ while (0 < offset && predicate(array[offset - 1] as T)) offset--;
34
+
35
+ return array.slice(0, offset);
36
+ }