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,36 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { format } from "../../internal/1.0.5/format.js";
4
+ import { AssertionError } from "./assertion_error.js";
5
+
6
+ /**
7
+ * Make an assertion that `actual` is greater than or equal to `expected`.
8
+ * If not then throw.
9
+ *
10
+ * @example Usage
11
+ * ```ts ignore
12
+ * import { assertGreaterOrEqual } from "@std/assert";
13
+ *
14
+ * assertGreaterOrEqual(2, 1); // Doesn't throw
15
+ * assertGreaterOrEqual(1, 1); // Doesn't throw
16
+ * assertGreaterOrEqual(0, 1); // Throws
17
+ * ```
18
+ *
19
+ * @typeParam T The type of the values to compare.
20
+ * @param actual The actual value to compare.
21
+ * @param expected The expected value to compare.
22
+ * @param msg The optional message to display if the assertion fails.
23
+ */
24
+ export function assertGreaterOrEqual<T>(
25
+ actual: T,
26
+ expected: T,
27
+ msg?: string,
28
+ ) {
29
+ if (actual >= expected) return;
30
+
31
+ const actualString = format(actual);
32
+ const expectedString = format(expected);
33
+ throw new AssertionError(
34
+ msg ?? `Expect ${actualString} >= ${expectedString}`,
35
+ );
36
+ }
@@ -0,0 +1,64 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { AssertionError } from "./assertion_error.js";
4
+
5
+ /** Any constructor */
6
+ // deno-lint-ignore no-explicit-any
7
+ export type AnyConstructor = new (...args: any[]) => any;
8
+ /** Gets constructor type */
9
+ export type GetConstructorType<T extends AnyConstructor> = InstanceType<T>;
10
+
11
+ /**
12
+ * Make an assertion that `obj` is an instance of `type`.
13
+ * If not then throw.
14
+ *
15
+ * @example Usage
16
+ * ```ts ignore
17
+ * import { assertInstanceOf } from "@std/assert";
18
+ *
19
+ * assertInstanceOf(new Date(), Date); // Doesn't throw
20
+ * assertInstanceOf(new Date(), Number); // Throws
21
+ * ```
22
+ *
23
+ * @typeParam T The expected type of the object.
24
+ * @param actual The object to check.
25
+ * @param expectedType The expected class constructor.
26
+ * @param msg The optional message to display if the assertion fails.
27
+ */
28
+ export function assertInstanceOf<
29
+ // deno-lint-ignore no-explicit-any
30
+ T extends abstract new (...args: any[]) => any,
31
+ >(
32
+ actual: unknown,
33
+ expectedType: T,
34
+ msg = "",
35
+ ): asserts actual is InstanceType<T> {
36
+ if (actual instanceof expectedType) return;
37
+
38
+ const msgSuffix = msg ? `: ${msg}` : ".";
39
+ const expectedTypeStr = expectedType.name;
40
+
41
+ let actualTypeStr = "";
42
+ if (actual === null) {
43
+ actualTypeStr = "null";
44
+ } else if (actual === undefined) {
45
+ actualTypeStr = "undefined";
46
+ } else if (typeof actual === "object") {
47
+ actualTypeStr = actual.constructor?.name ?? "Object";
48
+ } else {
49
+ actualTypeStr = typeof actual;
50
+ }
51
+
52
+ if (expectedTypeStr === actualTypeStr) {
53
+ msg =
54
+ `Expected object to be an instance of "${expectedTypeStr}"${msgSuffix}`;
55
+ } else if (actualTypeStr === "function") {
56
+ msg =
57
+ `Expected object to be an instance of "${expectedTypeStr}" but was not an instanced object${msgSuffix}`;
58
+ } else {
59
+ msg =
60
+ `Expected object to be an instance of "${expectedTypeStr}" but was "${actualTypeStr}"${msgSuffix}`;
61
+ }
62
+
63
+ throw new AssertionError(msg);
64
+ }
@@ -0,0 +1,65 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { AssertionError } from "./assertion_error.js";
4
+ import { stripAnsiCode } from "../../internal/1.0.5/styles.js";
5
+
6
+ /**
7
+ * Make an assertion that `error` is an `Error`.
8
+ * If not then an error will be thrown.
9
+ * An error class and a string that should be included in the
10
+ * error message can also be asserted.
11
+ *
12
+ * @example Usage
13
+ * ```ts ignore
14
+ * import { assertIsError } from "@std/assert";
15
+ *
16
+ * assertIsError(null); // Throws
17
+ * assertIsError(new RangeError("Out of range")); // Doesn't throw
18
+ * assertIsError(new RangeError("Out of range"), SyntaxError); // Throws
19
+ * assertIsError(new RangeError("Out of range"), SyntaxError, "Out of range"); // Doesn't throw
20
+ * assertIsError(new RangeError("Out of range"), SyntaxError, "Within range"); // Throws
21
+ * ```
22
+ *
23
+ * @typeParam E The type of the error to assert.
24
+ * @param error The error to assert.
25
+ * @param ErrorClass The optional error class to assert.
26
+ * @param msgMatches The optional string or RegExp to assert in the error message.
27
+ * @param msg The optional message to display if the assertion fails.
28
+ */
29
+ export function assertIsError<E extends Error = Error>(
30
+ error: unknown,
31
+ // deno-lint-ignore no-explicit-any
32
+ ErrorClass?: abstract new (...args: any[]) => E,
33
+ msgMatches?: string | RegExp,
34
+ msg?: string,
35
+ ): asserts error is E {
36
+ const msgSuffix = msg ? `: ${msg}` : ".";
37
+ if (!(error instanceof Error)) {
38
+ throw new AssertionError(
39
+ `Expected "error" to be an Error object${msgSuffix}`,
40
+ );
41
+ }
42
+ if (ErrorClass && !(error instanceof ErrorClass)) {
43
+ msg =
44
+ `Expected error to be instance of "${ErrorClass.name}", but was "${error?.constructor?.name}"${msgSuffix}`;
45
+ throw new AssertionError(msg);
46
+ }
47
+ let msgCheck;
48
+ if (typeof msgMatches === "string") {
49
+ msgCheck = stripAnsiCode(error.message).includes(
50
+ stripAnsiCode(msgMatches),
51
+ );
52
+ }
53
+ if (msgMatches instanceof RegExp) {
54
+ msgCheck = msgMatches.test(stripAnsiCode(error.message));
55
+ }
56
+
57
+ if (msgMatches && !msgCheck) {
58
+ msg = `Expected error message to include ${
59
+ msgMatches instanceof RegExp
60
+ ? msgMatches.toString()
61
+ : JSON.stringify(msgMatches)
62
+ }, but got ${JSON.stringify(error?.message)}${msgSuffix}`;
63
+ throw new AssertionError(msg);
64
+ }
65
+ }
@@ -0,0 +1,29 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { format } from "../../internal/1.0.5/format.js";
4
+ import { AssertionError } from "./assertion_error.js";
5
+
6
+ /**
7
+ * Make an assertion that `actual` is less than `expected`.
8
+ * If not then throw.
9
+ *
10
+ * @example Usage
11
+ * ```ts ignore
12
+ * import { assertLess } from "@std/assert";
13
+ *
14
+ * assertLess(1, 2); // Doesn't throw
15
+ * assertLess(2, 1); // Throws
16
+ * ```
17
+ *
18
+ * @typeParam T The type of the values to compare.
19
+ * @param actual The actual value to compare.
20
+ * @param expected The expected value to compare.
21
+ * @param msg The optional message to display if the assertion fails.
22
+ */
23
+ export function assertLess<T>(actual: T, expected: T, msg?: string) {
24
+ if (actual < expected) return;
25
+
26
+ const actualString = format(actual);
27
+ const expectedString = format(expected);
28
+ throw new AssertionError(msg ?? `Expect ${actualString} < ${expectedString}`);
29
+ }
@@ -0,0 +1,36 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { format } from "../../internal/1.0.5/format.js";
4
+ import { AssertionError } from "./assertion_error.js";
5
+
6
+ /**
7
+ * Make an assertion that `actual` is less than or equal to `expected`.
8
+ * If not then throw.
9
+ *
10
+ * @example Usage
11
+ * ```ts ignore
12
+ * import { assertLessOrEqual } from "@std/assert";
13
+ *
14
+ * assertLessOrEqual(1, 2); // Doesn't throw
15
+ * assertLessOrEqual(1, 1); // Doesn't throw
16
+ * assertLessOrEqual(1, 0); // Throws
17
+ * ```
18
+ *
19
+ * @typeParam T The type of the values to compare.
20
+ * @param actual The actual value to compare.
21
+ * @param expected The expected value to compare.
22
+ * @param msg The optional message to display if the assertion fails.
23
+ */
24
+ export function assertLessOrEqual<T>(
25
+ actual: T,
26
+ expected: T,
27
+ msg?: string,
28
+ ) {
29
+ if (actual <= expected) return;
30
+
31
+ const actualString = format(actual);
32
+ const expectedString = format(expected);
33
+ throw new AssertionError(
34
+ msg ?? `Expect ${actualString} <= ${expectedString}`,
35
+ );
36
+ }
@@ -0,0 +1,30 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { AssertionError } from "./assertion_error.js";
4
+
5
+ /**
6
+ * Make an assertion that `actual` match RegExp `expected`. If not
7
+ * then throw.
8
+ *
9
+ * @example Usage
10
+ * ```ts ignore
11
+ * import { assertMatch } from "@std/assert";
12
+ *
13
+ * assertMatch("Raptor", /Raptor/); // Doesn't throw
14
+ * assertMatch("Denosaurus", /Raptor/); // Throws
15
+ * ```
16
+ *
17
+ * @param actual The actual value to be matched.
18
+ * @param expected The expected pattern to match.
19
+ * @param msg The optional message to display if the assertion fails.
20
+ */
21
+ export function assertMatch(
22
+ actual: string,
23
+ expected: RegExp,
24
+ msg?: string,
25
+ ) {
26
+ if (expected.test(actual)) return;
27
+ const msgSuffix = msg ? `: ${msg}` : ".";
28
+ msg = `Expected actual: "${actual}" to match: "${expected}"${msgSuffix}`;
29
+ throw new AssertionError(msg);
30
+ }
@@ -0,0 +1,47 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+
4
+ /** A library of assertion functions.
5
+ * If the assertion is false an `AssertionError` will be thrown which will
6
+ * result in pretty-printed diff of failing assertion.
7
+ *
8
+ * This module is browser compatible, but do not rely on good formatting of
9
+ * values for AssertionError messages in browsers.
10
+ *
11
+ * ```ts ignore
12
+ * import { assert } from "@std/assert";
13
+ *
14
+ * assert("I am truthy"); // Doesn't throw
15
+ * assert(false); // Throws `AssertionError`
16
+ * ```
17
+ *
18
+ * @module
19
+ */
20
+
21
+ export * from "./almost_equals.js";
22
+ export * from "./array_includes.js";
23
+ export * from "./equals.js";
24
+ export * from "./exists.js";
25
+ export * from "./false.js";
26
+ export * from "./greater_or_equal.js";
27
+ export * from "./greater.js";
28
+ export * from "./instance_of.js";
29
+ export * from "./is_error.js";
30
+ export * from "./less_or_equal.js";
31
+ export * from "./less.js";
32
+ export * from "./match.js";
33
+ export * from "./not_equals.js";
34
+ export * from "./not_instance_of.js";
35
+ export * from "./not_match.js";
36
+ export * from "./not_strict_equals.js";
37
+ export * from "./object_match.js";
38
+ export * from "./rejects.js";
39
+ export * from "./strict_equals.js";
40
+ export * from "./string_includes.js";
41
+ export * from "./throws.js";
42
+ export * from "./assert.js";
43
+ export * from "./assertion_error.js";
44
+ export * from "./equal.js";
45
+ export * from "./fail.js";
46
+ export * from "./unimplemented.js";
47
+ export * from "./unreachable.js";
@@ -0,0 +1,36 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+
4
+ import { equal } from "./equal.js";
5
+ import { AssertionError } from "./assertion_error.js";
6
+
7
+ /**
8
+ * Make an assertion that `actual` and `expected` are not equal, deeply.
9
+ * If not then throw.
10
+ *
11
+ * Type parameter can be specified to ensure values under comparison have the same type.
12
+ *
13
+ * @example Usage
14
+ * ```ts ignore
15
+ * import { assertNotEquals } from "@std/assert";
16
+ *
17
+ * assertNotEquals(1, 2); // Doesn't throw
18
+ * assertNotEquals(1, 1); // Throws
19
+ * ```
20
+ *
21
+ * @typeParam T The type of the values to compare.
22
+ * @param actual The actual value to compare.
23
+ * @param expected The expected value to compare.
24
+ * @param msg The optional message to display if the assertion fails.
25
+ */
26
+ export function assertNotEquals<T>(actual: T, expected: T, msg?: string) {
27
+ if (!equal(actual, expected)) {
28
+ return;
29
+ }
30
+ const actualString = String(actual);
31
+ const expectedString = String(expected);
32
+ const msgSuffix = msg ? `: ${msg}` : ".";
33
+ throw new AssertionError(
34
+ `Expected actual: ${actualString} not to be: ${expectedString}${msgSuffix}`,
35
+ );
36
+ }
@@ -0,0 +1,33 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { assertFalse } from "./false.js";
4
+
5
+ /**
6
+ * Make an assertion that `obj` is not an instance of `type`.
7
+ * If so, then throw.
8
+ *
9
+ * @example Usage
10
+ * ```ts ignore
11
+ * import { assertNotInstanceOf } from "@std/assert";
12
+ *
13
+ * assertNotInstanceOf(new Date(), Number); // Doesn't throw
14
+ * assertNotInstanceOf(new Date(), Date); // Throws
15
+ * ```
16
+ *
17
+ * @typeParam A The type of the object to check.
18
+ * @typeParam T The type of the class to check against.
19
+ * @param actual The object to check.
20
+ * @param unexpectedType The class constructor to check against.
21
+ * @param msg The optional message to display if the assertion fails.
22
+ */
23
+ export function assertNotInstanceOf<A, T>(
24
+ actual: A,
25
+ // deno-lint-ignore no-explicit-any
26
+ unexpectedType: abstract new (...args: any[]) => T,
27
+ msg?: string,
28
+ ): asserts actual is Exclude<A, T> {
29
+ const msgSuffix = msg ? `: ${msg}` : ".";
30
+ msg =
31
+ `Expected object to not be an instance of "${typeof unexpectedType}"${msgSuffix}`;
32
+ assertFalse(actual instanceof unexpectedType, msg);
33
+ }
@@ -0,0 +1,30 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { AssertionError } from "./assertion_error.js";
4
+
5
+ /**
6
+ * Make an assertion that `actual` not match RegExp `expected`. If match
7
+ * then throw.
8
+ *
9
+ * @example Usage
10
+ * ```ts ignore
11
+ * import { assertNotMatch } from "@std/assert";
12
+ *
13
+ * assertNotMatch("Denosaurus", /Raptor/); // Doesn't throw
14
+ * assertNotMatch("Raptor", /Raptor/); // Throws
15
+ * ```
16
+ *
17
+ * @param actual The actual value to match.
18
+ * @param expected The expected value to not match.
19
+ * @param msg The optional message to display if the assertion fails.
20
+ */
21
+ export function assertNotMatch(
22
+ actual: string,
23
+ expected: RegExp,
24
+ msg?: string,
25
+ ) {
26
+ if (!expected.test(actual)) return;
27
+ const msgSuffix = msg ? `: ${msg}` : ".";
28
+ msg = `Expected actual: "${actual}" to not match: "${expected}"${msgSuffix}`;
29
+ throw new AssertionError(msg);
30
+ }
@@ -0,0 +1,42 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { AssertionError } from "./assertion_error.js";
4
+ import { format } from "../../internal/1.0.5/format.js";
5
+
6
+ /**
7
+ * Make an assertion that `actual` and `expected` are not strictly equal, using
8
+ * {@linkcode Object.is} for equality comparison. If the values are strictly
9
+ * equal then throw.
10
+ *
11
+ * @example Usage
12
+ * ```ts ignore
13
+ * import { assertNotStrictEquals } from "@std/assert";
14
+ *
15
+ * assertNotStrictEquals(1, 1); // Throws
16
+ * assertNotStrictEquals(1, 2); // Doesn't throw
17
+ *
18
+ * assertNotStrictEquals(0, 0); // Throws
19
+ * assertNotStrictEquals(0, -0); // Doesn't throw
20
+ * ```
21
+ *
22
+ * @typeParam T The type of the values to compare.
23
+ * @param actual The actual value to compare.
24
+ * @param expected The expected value to compare.
25
+ * @param msg The optional message to display if the assertion fails.
26
+ */
27
+ export function assertNotStrictEquals<T>(
28
+ actual: T,
29
+ expected: T,
30
+ msg?: string,
31
+ ) {
32
+ if (!Object.is(actual, expected)) {
33
+ return;
34
+ }
35
+
36
+ const msgSuffix = msg ? `: ${msg}` : ".";
37
+ throw new AssertionError(
38
+ `Expected "actual" to not be strictly equal to: ${
39
+ format(actual)
40
+ }${msgSuffix}\n`,
41
+ );
42
+ }
@@ -0,0 +1,202 @@
1
+ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ import { assertEquals } from "./equals.js";
4
+
5
+ /**
6
+ * Make an assertion that `expected` object is a subset of `actual` object,
7
+ * deeply. If not, then throw.
8
+ *
9
+ * @example Usage
10
+ * ```ts ignore
11
+ * import { assertObjectMatch } from "@std/assert";
12
+ *
13
+ * assertObjectMatch({ foo: "bar" }, { foo: "bar" }); // Doesn't throw
14
+ * assertObjectMatch({ foo: "bar" }, { foo: "baz" }); // Throws
15
+ * assertObjectMatch({ foo: 1, bar: 2 }, { foo: 1 }); // Doesn't throw
16
+ * assertObjectMatch({ foo: 1 }, { foo: 1, bar: 2 }); // Throws
17
+ * ```
18
+ *
19
+ * @example Usage with nested objects
20
+ * ```ts ignore
21
+ * import { assertObjectMatch } from "@std/assert";
22
+ *
23
+ * assertObjectMatch({ foo: { bar: 3, baz: 4 } }, { foo: { bar: 3 } }); // Doesn't throw
24
+ * assertObjectMatch({ foo: { bar: 3 } }, { foo: { bar: 3, baz: 4 } }); // Throws
25
+ * ```
26
+ *
27
+ * @param actual The actual value to be matched.
28
+ * @param expected The expected value to match.
29
+ * @param msg The optional message to display if the assertion fails.
30
+ */
31
+ export function assertObjectMatch(
32
+ // deno-lint-ignore no-explicit-any
33
+ actual: Record<PropertyKey, any>,
34
+ expected: Record<PropertyKey, unknown>,
35
+ msg?: string,
36
+ ): void {
37
+ return assertEquals(
38
+ // get the intersection of "actual" and "expected"
39
+ // side effect: all the instances' constructor field is "Object" now.
40
+ filter(actual, expected),
41
+ // set (nested) instances' constructor field to be "Object" without changing expected value.
42
+ // see https://github.com/denoland/deno_std/pull/1419
43
+ filter(expected, expected),
44
+ msg,
45
+ );
46
+ }
47
+
48
+ type loose = Record<PropertyKey, unknown>;
49
+
50
+ function isObject(val: unknown): boolean {
51
+ return typeof val === "object" && val !== null;
52
+ }
53
+
54
+ function filter(a: loose, b: loose): loose {
55
+ const seen = new WeakMap();
56
+ return filterObject(a, b);
57
+
58
+ function filterObject(a: loose, b: loose): loose {
59
+ // Prevent infinite loop with circular references with same filter
60
+ if ((seen.has(a)) && (seen.get(a) === b)) {
61
+ return a;
62
+ }
63
+
64
+ try {
65
+ seen.set(a, b);
66
+ } catch (err) {
67
+ if (err instanceof TypeError) {
68
+ throw new TypeError(
69
+ `Cannot assertObjectMatch ${a === null ? null : `type ${typeof a}`}`,
70
+ );
71
+ }
72
+ }
73
+
74
+ // Filter keys and symbols which are present in both actual and expected
75
+ const filtered = {} as loose;
76
+ const keysA = Reflect.ownKeys(a);
77
+ const keysB = Reflect.ownKeys(b);
78
+ const entries = keysA.filter((key) => keysB.includes(key))
79
+ .map((key) => [key, a[key as string]]) as Array<[string, unknown]>;
80
+
81
+ if (keysA.length && keysB.length && !entries.length) {
82
+ // If both objects are not empty but don't have the same keys or symbols,
83
+ // returns the entries in object a.
84
+ for (const key of keysA) {
85
+ filtered[key] = a[key];
86
+ }
87
+
88
+ return filtered;
89
+ }
90
+
91
+ for (const [key, value] of entries) {
92
+ // On regexp references, keep value as it to avoid loosing pattern and flags
93
+ if (value instanceof RegExp) {
94
+ filtered[key] = value;
95
+ continue;
96
+ }
97
+
98
+ const subset = (b as loose)[key];
99
+
100
+ // On array references, build a filtered array and filter nested objects inside
101
+ if (Array.isArray(value) && Array.isArray(subset)) {
102
+ filtered[key] = filterArray(value, subset);
103
+ continue;
104
+ }
105
+
106
+ // On nested objects references, build a filtered object recursively
107
+ if (isObject(value) && isObject(subset)) {
108
+ // When both operands are maps, build a filtered map with common keys and filter nested objects inside
109
+ if ((value instanceof Map) && (subset instanceof Map)) {
110
+ filtered[key] = new Map(
111
+ [...value].filter(([k]) => subset.has(k)).map(
112
+ ([k, v]) => {
113
+ const v2 = subset.get(k);
114
+ if (isObject(v) && isObject(v2)) {
115
+ return [k, filterObject(v as loose, v2 as loose)];
116
+ }
117
+
118
+ return [k, v];
119
+ },
120
+ ),
121
+ );
122
+ continue;
123
+ }
124
+
125
+ // When both operands are set, build a filtered set with common values
126
+ if ((value instanceof Set) && (subset instanceof Set)) {
127
+ filtered[key] = value.intersection(subset);
128
+ continue;
129
+ }
130
+
131
+ filtered[key] = filterObject(value as loose, subset as loose);
132
+ continue;
133
+ }
134
+
135
+ filtered[key] = value;
136
+ }
137
+
138
+ return filtered;
139
+ }
140
+
141
+ function filterArray(a: unknown[], b: unknown[]): unknown[] {
142
+ // Prevent infinite loop with circular references with same filter
143
+ if (seen.has(a) && (seen.get(a) === b)) {
144
+ return a;
145
+ }
146
+
147
+ seen.set(a, b);
148
+
149
+ const filtered: unknown[] = [];
150
+ const count = Math.min(a.length, b.length);
151
+
152
+ for (let i = 0; i < count; ++i) {
153
+ const value = a[i];
154
+ const subset = b[i];
155
+
156
+ // On regexp references, keep value as it to avoid loosing pattern and flags
157
+ if (value instanceof RegExp) {
158
+ filtered.push(value);
159
+ continue;
160
+ }
161
+
162
+ // On array references, build a filtered array and filter nested objects inside
163
+ if (Array.isArray(value) && Array.isArray(subset)) {
164
+ filtered.push(filterArray(value, subset));
165
+ continue;
166
+ }
167
+
168
+ // On nested objects references, build a filtered object recursively
169
+ if (isObject(value) && isObject(subset)) {
170
+ // When both operands are maps, build a filtered map with common keys and filter nested objects inside
171
+ if ((value instanceof Map) && (subset instanceof Map)) {
172
+ const map = new Map(
173
+ [...value].filter(([k]) => subset.has(k))
174
+ .map(([k, v]) => {
175
+ const v2 = subset.get(k);
176
+ if (isObject(v) && isObject(v2)) {
177
+ return [k, filterObject(v as loose, v2 as loose)];
178
+ }
179
+
180
+ return [k, v];
181
+ }),
182
+ );
183
+ filtered.push(map);
184
+ continue;
185
+ }
186
+
187
+ // When both operands are set, build a filtered set with common values
188
+ if ((value instanceof Set) && (subset instanceof Set)) {
189
+ filtered.push(value.intersection(subset));
190
+ continue;
191
+ }
192
+
193
+ filtered.push(filterObject(value as loose, subset as loose));
194
+ continue;
195
+ }
196
+
197
+ filtered.push(value);
198
+ }
199
+
200
+ return filtered;
201
+ }
202
+ }