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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) hide show
  1. package/esm/ResponseFormat.d.ts +21 -0
  2. package/esm/ResponseFormat.d.ts.map +1 -0
  3. package/esm/ResponseFormat.js +43 -19
  4. package/esm/ResponseFormat.js.map +1 -1
  5. package/esm/oai.d.ts +5 -0
  6. package/esm/oai.d.ts.map +1 -0
  7. package/esm/oai.js +2 -0
  8. package/esm/oai.js.map +1 -0
  9. package/package.json +5 -10
  10. package/src/ResponseFormat.ts +48 -41
  11. package/src/oai.ts +5 -0
  12. package/esm/_dnt.shims.js +0 -58
  13. package/esm/_dnt.shims.js.map +0 -1
  14. package/esm/deps/jsr.io/@std/assert/1.0.8/almost_equals.js +0 -47
  15. package/esm/deps/jsr.io/@std/assert/1.0.8/almost_equals.js.map +0 -1
  16. package/esm/deps/jsr.io/@std/assert/1.0.8/array_includes.js +0 -47
  17. package/esm/deps/jsr.io/@std/assert/1.0.8/array_includes.js.map +0 -1
  18. package/esm/deps/jsr.io/@std/assert/1.0.8/assert.js +0 -23
  19. package/esm/deps/jsr.io/@std/assert/1.0.8/assert.js.map +0 -1
  20. package/esm/deps/jsr.io/@std/assert/1.0.8/assertion_error.js +0 -31
  21. package/esm/deps/jsr.io/@std/assert/1.0.8/assertion_error.js.map +0 -1
  22. package/esm/deps/jsr.io/@std/assert/1.0.8/equal.js +0 -184
  23. package/esm/deps/jsr.io/@std/assert/1.0.8/equal.js.map +0 -1
  24. package/esm/deps/jsr.io/@std/assert/1.0.8/equals.js +0 -46
  25. package/esm/deps/jsr.io/@std/assert/1.0.8/equals.js.map +0 -1
  26. package/esm/deps/jsr.io/@std/assert/1.0.8/exists.js +0 -28
  27. package/esm/deps/jsr.io/@std/assert/1.0.8/exists.js.map +0 -1
  28. package/esm/deps/jsr.io/@std/assert/1.0.8/fail.js +0 -21
  29. package/esm/deps/jsr.io/@std/assert/1.0.8/fail.js.map +0 -1
  30. package/esm/deps/jsr.io/@std/assert/1.0.8/false.js +0 -23
  31. package/esm/deps/jsr.io/@std/assert/1.0.8/false.js.map +0 -1
  32. package/esm/deps/jsr.io/@std/assert/1.0.8/greater.js +0 -30
  33. package/esm/deps/jsr.io/@std/assert/1.0.8/greater.js.map +0 -1
  34. package/esm/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.js +0 -30
  35. package/esm/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.js.map +0 -1
  36. package/esm/deps/jsr.io/@std/assert/1.0.8/instance_of.js +0 -53
  37. package/esm/deps/jsr.io/@std/assert/1.0.8/instance_of.js.map +0 -1
  38. package/esm/deps/jsr.io/@std/assert/1.0.8/is_error.js +0 -54
  39. package/esm/deps/jsr.io/@std/assert/1.0.8/is_error.js.map +0 -1
  40. package/esm/deps/jsr.io/@std/assert/1.0.8/less.js +0 -29
  41. package/esm/deps/jsr.io/@std/assert/1.0.8/less.js.map +0 -1
  42. package/esm/deps/jsr.io/@std/assert/1.0.8/less_or_equal.js +0 -30
  43. package/esm/deps/jsr.io/@std/assert/1.0.8/less_or_equal.js.map +0 -1
  44. package/esm/deps/jsr.io/@std/assert/1.0.8/match.js +0 -27
  45. package/esm/deps/jsr.io/@std/assert/1.0.8/match.js.map +0 -1
  46. package/esm/deps/jsr.io/@std/assert/1.0.8/mod.js +0 -46
  47. package/esm/deps/jsr.io/@std/assert/1.0.8/mod.js.map +0 -1
  48. package/esm/deps/jsr.io/@std/assert/1.0.8/not_equals.js +0 -33
  49. package/esm/deps/jsr.io/@std/assert/1.0.8/not_equals.js.map +0 -1
  50. package/esm/deps/jsr.io/@std/assert/1.0.8/not_instance_of.js +0 -30
  51. package/esm/deps/jsr.io/@std/assert/1.0.8/not_instance_of.js.map +0 -1
  52. package/esm/deps/jsr.io/@std/assert/1.0.8/not_match.js +0 -27
  53. package/esm/deps/jsr.io/@std/assert/1.0.8/not_match.js.map +0 -1
  54. package/esm/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.js +0 -33
  55. package/esm/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.js.map +0 -1
  56. package/esm/deps/jsr.io/@std/assert/1.0.8/object_match.js +0 -160
  57. package/esm/deps/jsr.io/@std/assert/1.0.8/object_match.js.map +0 -1
  58. package/esm/deps/jsr.io/@std/assert/1.0.8/rejects.js +0 -54
  59. package/esm/deps/jsr.io/@std/assert/1.0.8/rejects.js.map +0 -1
  60. package/esm/deps/jsr.io/@std/assert/1.0.8/strict_equals.js +0 -58
  61. package/esm/deps/jsr.io/@std/assert/1.0.8/strict_equals.js.map +0 -1
  62. package/esm/deps/jsr.io/@std/assert/1.0.8/string_includes.js +0 -27
  63. package/esm/deps/jsr.io/@std/assert/1.0.8/string_includes.js.map +0 -1
  64. package/esm/deps/jsr.io/@std/assert/1.0.8/throws.js +0 -45
  65. package/esm/deps/jsr.io/@std/assert/1.0.8/throws.js.map +0 -1
  66. package/esm/deps/jsr.io/@std/assert/1.0.8/unimplemented.js +0 -21
  67. package/esm/deps/jsr.io/@std/assert/1.0.8/unimplemented.js.map +0 -1
  68. package/esm/deps/jsr.io/@std/assert/1.0.8/unreachable.js +0 -21
  69. package/esm/deps/jsr.io/@std/assert/1.0.8/unreachable.js.map +0 -1
  70. package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.js +0 -111
  71. package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.js.map +0 -1
  72. package/esm/deps/jsr.io/@std/internal/1.0.5/diff.js +0 -277
  73. package/esm/deps/jsr.io/@std/internal/1.0.5/diff.js.map +0 -1
  74. package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.js +0 -180
  75. package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.js.map +0 -1
  76. package/esm/deps/jsr.io/@std/internal/1.0.5/format.js +0 -38
  77. package/esm/deps/jsr.io/@std/internal/1.0.5/format.js.map +0 -1
  78. package/esm/deps/jsr.io/@std/internal/1.0.5/styles.js +0 -208
  79. package/esm/deps/jsr.io/@std/internal/1.0.5/styles.js.map +0 -1
  80. package/esm/deps/jsr.io/@std/internal/1.0.5/types.js +0 -3
  81. package/esm/deps/jsr.io/@std/internal/1.0.5/types.js.map +0 -1
  82. package/src/_dnt.shims.ts +0 -60
  83. package/src/deps/jsr.io/@std/assert/1.0.8/almost_equals.ts +0 -55
  84. package/src/deps/jsr.io/@std/assert/1.0.8/array_includes.ts +0 -57
  85. package/src/deps/jsr.io/@std/assert/1.0.8/assert.ts +0 -23
  86. package/src/deps/jsr.io/@std/assert/1.0.8/assertion_error.ts +0 -31
  87. package/src/deps/jsr.io/@std/assert/1.0.8/equal.ts +0 -210
  88. package/src/deps/jsr.io/@std/assert/1.0.8/equals.ts +0 -52
  89. package/src/deps/jsr.io/@std/assert/1.0.8/exists.ts +0 -31
  90. package/src/deps/jsr.io/@std/assert/1.0.8/fail.ts +0 -21
  91. package/src/deps/jsr.io/@std/assert/1.0.8/false.ts +0 -26
  92. package/src/deps/jsr.io/@std/assert/1.0.8/greater.ts +0 -30
  93. package/src/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.ts +0 -36
  94. package/src/deps/jsr.io/@std/assert/1.0.8/instance_of.ts +0 -64
  95. package/src/deps/jsr.io/@std/assert/1.0.8/is_error.ts +0 -65
  96. package/src/deps/jsr.io/@std/assert/1.0.8/less.ts +0 -29
  97. package/src/deps/jsr.io/@std/assert/1.0.8/less_or_equal.ts +0 -36
  98. package/src/deps/jsr.io/@std/assert/1.0.8/match.ts +0 -30
  99. package/src/deps/jsr.io/@std/assert/1.0.8/mod.ts +0 -47
  100. package/src/deps/jsr.io/@std/assert/1.0.8/not_equals.ts +0 -36
  101. package/src/deps/jsr.io/@std/assert/1.0.8/not_instance_of.ts +0 -33
  102. package/src/deps/jsr.io/@std/assert/1.0.8/not_match.ts +0 -30
  103. package/src/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.ts +0 -42
  104. package/src/deps/jsr.io/@std/assert/1.0.8/object_match.ts +0 -202
  105. package/src/deps/jsr.io/@std/assert/1.0.8/rejects.ts +0 -123
  106. package/src/deps/jsr.io/@std/assert/1.0.8/strict_equals.ts +0 -67
  107. package/src/deps/jsr.io/@std/assert/1.0.8/string_includes.ts +0 -30
  108. package/src/deps/jsr.io/@std/assert/1.0.8/throws.ts +0 -111
  109. package/src/deps/jsr.io/@std/assert/1.0.8/unimplemented.ts +0 -21
  110. package/src/deps/jsr.io/@std/assert/1.0.8/unreachable.ts +0 -21
  111. package/src/deps/jsr.io/@std/internal/1.0.5/build_message.ts +0 -134
  112. package/src/deps/jsr.io/@std/internal/1.0.5/diff.ts +0 -317
  113. package/src/deps/jsr.io/@std/internal/1.0.5/diff_str.ts +0 -204
  114. package/src/deps/jsr.io/@std/internal/1.0.5/format.ts +0 -39
  115. package/src/deps/jsr.io/@std/internal/1.0.5/styles.ts +0 -233
  116. package/src/deps/jsr.io/@std/internal/1.0.5/types.ts +0 -18
  117. package/types/ResponseFormat.d.ts +0 -26
  118. package/types/ResponseFormat.d.ts.map +0 -1
  119. package/types/_dnt.shims.d.ts +0 -2
  120. package/types/_dnt.shims.d.ts.map +0 -1
  121. package/types/deps/jsr.io/@std/assert/1.0.8/almost_equals.d.ts +0 -29
  122. package/types/deps/jsr.io/@std/assert/1.0.8/almost_equals.d.ts.map +0 -1
  123. package/types/deps/jsr.io/@std/assert/1.0.8/array_includes.d.ts +0 -24
  124. package/types/deps/jsr.io/@std/assert/1.0.8/array_includes.d.ts.map +0 -1
  125. package/types/deps/jsr.io/@std/assert/1.0.8/assert.d.ts +0 -16
  126. package/types/deps/jsr.io/@std/assert/1.0.8/assert.d.ts.map +0 -1
  127. package/types/deps/jsr.io/@std/assert/1.0.8/assertion_error.d.ts +0 -26
  128. package/types/deps/jsr.io/@std/assert/1.0.8/assertion_error.d.ts.map +0 -1
  129. package/types/deps/jsr.io/@std/assert/1.0.8/equal.d.ts +0 -17
  130. package/types/deps/jsr.io/@std/assert/1.0.8/equal.d.ts.map +0 -1
  131. package/types/deps/jsr.io/@std/assert/1.0.8/equals.d.ts +0 -22
  132. package/types/deps/jsr.io/@std/assert/1.0.8/equals.d.ts.map +0 -1
  133. package/types/deps/jsr.io/@std/assert/1.0.8/exists.d.ts +0 -18
  134. package/types/deps/jsr.io/@std/assert/1.0.8/exists.d.ts.map +0 -1
  135. package/types/deps/jsr.io/@std/assert/1.0.8/fail.d.ts +0 -15
  136. package/types/deps/jsr.io/@std/assert/1.0.8/fail.d.ts.map +0 -1
  137. package/types/deps/jsr.io/@std/assert/1.0.8/false.d.ts +0 -18
  138. package/types/deps/jsr.io/@std/assert/1.0.8/false.d.ts.map +0 -1
  139. package/types/deps/jsr.io/@std/assert/1.0.8/greater.d.ts +0 -20
  140. package/types/deps/jsr.io/@std/assert/1.0.8/greater.d.ts.map +0 -1
  141. package/types/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.d.ts +0 -20
  142. package/types/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.d.ts.map +0 -1
  143. package/types/deps/jsr.io/@std/assert/1.0.8/instance_of.d.ts +0 -23
  144. package/types/deps/jsr.io/@std/assert/1.0.8/instance_of.d.ts.map +0 -1
  145. package/types/deps/jsr.io/@std/assert/1.0.8/is_error.d.ts +0 -25
  146. package/types/deps/jsr.io/@std/assert/1.0.8/is_error.d.ts.map +0 -1
  147. package/types/deps/jsr.io/@std/assert/1.0.8/less.d.ts +0 -19
  148. package/types/deps/jsr.io/@std/assert/1.0.8/less.d.ts.map +0 -1
  149. package/types/deps/jsr.io/@std/assert/1.0.8/less_or_equal.d.ts +0 -20
  150. package/types/deps/jsr.io/@std/assert/1.0.8/less_or_equal.d.ts.map +0 -1
  151. package/types/deps/jsr.io/@std/assert/1.0.8/match.d.ts +0 -18
  152. package/types/deps/jsr.io/@std/assert/1.0.8/match.d.ts.map +0 -1
  153. package/types/deps/jsr.io/@std/assert/1.0.8/mod.d.ts +0 -44
  154. package/types/deps/jsr.io/@std/assert/1.0.8/mod.d.ts.map +0 -1
  155. package/types/deps/jsr.io/@std/assert/1.0.8/not_equals.d.ts +0 -21
  156. package/types/deps/jsr.io/@std/assert/1.0.8/not_equals.d.ts.map +0 -1
  157. package/types/deps/jsr.io/@std/assert/1.0.8/not_instance_of.d.ts +0 -20
  158. package/types/deps/jsr.io/@std/assert/1.0.8/not_instance_of.d.ts.map +0 -1
  159. package/types/deps/jsr.io/@std/assert/1.0.8/not_match.d.ts +0 -18
  160. package/types/deps/jsr.io/@std/assert/1.0.8/not_match.d.ts.map +0 -1
  161. package/types/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.d.ts +0 -23
  162. package/types/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.d.ts.map +0 -1
  163. package/types/deps/jsr.io/@std/assert/1.0.8/object_match.d.ts +0 -28
  164. package/types/deps/jsr.io/@std/assert/1.0.8/object_match.d.ts.map +0 -1
  165. package/types/deps/jsr.io/@std/assert/1.0.8/rejects.d.ts +0 -42
  166. package/types/deps/jsr.io/@std/assert/1.0.8/rejects.d.ts.map +0 -1
  167. package/types/deps/jsr.io/@std/assert/1.0.8/strict_equals.d.ts +0 -24
  168. package/types/deps/jsr.io/@std/assert/1.0.8/strict_equals.d.ts.map +0 -1
  169. package/types/deps/jsr.io/@std/assert/1.0.8/string_includes.d.ts +0 -18
  170. package/types/deps/jsr.io/@std/assert/1.0.8/string_includes.d.ts.map +0 -1
  171. package/types/deps/jsr.io/@std/assert/1.0.8/throws.d.ts +0 -45
  172. package/types/deps/jsr.io/@std/assert/1.0.8/throws.d.ts.map +0 -1
  173. package/types/deps/jsr.io/@std/assert/1.0.8/unimplemented.d.ts +0 -15
  174. package/types/deps/jsr.io/@std/assert/1.0.8/unimplemented.d.ts.map +0 -1
  175. package/types/deps/jsr.io/@std/assert/1.0.8/unreachable.d.ts +0 -15
  176. package/types/deps/jsr.io/@std/assert/1.0.8/unreachable.d.ts.map +0 -1
  177. package/types/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts +0 -82
  178. package/types/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts.map +0 -1
  179. package/types/deps/jsr.io/@std/internal/1.0.5/diff.d.ts +0 -140
  180. package/types/deps/jsr.io/@std/internal/1.0.5/diff.d.ts.map +0 -1
  181. package/types/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts +0 -99
  182. package/types/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts.map +0 -1
  183. package/types/deps/jsr.io/@std/internal/1.0.5/format.d.ts +0 -2
  184. package/types/deps/jsr.io/@std/internal/1.0.5/format.d.ts.map +0 -1
  185. package/types/deps/jsr.io/@std/internal/1.0.5/styles.d.ts +0 -159
  186. package/types/deps/jsr.io/@std/internal/1.0.5/styles.d.ts.map +0 -1
  187. package/types/deps/jsr.io/@std/internal/1.0.5/types.d.ts +0 -16
  188. package/types/deps/jsr.io/@std/internal/1.0.5/types.d.ts.map +0 -1
  189. /package/{types → esm}/Tool.d.ts +0 -0
  190. /package/{types → esm}/Tool.d.ts.map +0 -0
  191. /package/{types → esm}/_dnt.polyfills.d.ts +0 -0
  192. /package/{types → esm}/_dnt.polyfills.d.ts.map +0 -0
  193. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/_utils.d.ts +0 -0
  194. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/_utils.d.ts.map +0 -0
  195. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.d.ts +0 -0
  196. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.d.ts.map +0 -0
  197. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/associate_by.d.ts +0 -0
  198. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/associate_by.d.ts.map +0 -0
  199. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/associate_with.d.ts +0 -0
  200. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/associate_with.d.ts.map +0 -0
  201. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/chunk.d.ts +0 -0
  202. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/chunk.d.ts.map +0 -0
  203. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/deep_merge.d.ts +0 -0
  204. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/deep_merge.d.ts.map +0 -0
  205. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/distinct.d.ts +0 -0
  206. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/distinct.d.ts.map +0 -0
  207. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/distinct_by.d.ts +0 -0
  208. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/distinct_by.d.ts.map +0 -0
  209. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/drop_last_while.d.ts +0 -0
  210. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/drop_last_while.d.ts.map +0 -0
  211. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/drop_while.d.ts +0 -0
  212. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/drop_while.d.ts.map +0 -0
  213. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/filter_entries.d.ts +0 -0
  214. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/filter_entries.d.ts.map +0 -0
  215. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/filter_keys.d.ts +0 -0
  216. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/filter_keys.d.ts.map +0 -0
  217. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/filter_values.d.ts +0 -0
  218. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/filter_values.d.ts.map +0 -0
  219. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/find_single.d.ts +0 -0
  220. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/find_single.d.ts.map +0 -0
  221. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.d.ts +0 -0
  222. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.d.ts.map +0 -0
  223. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/includes_value.d.ts +0 -0
  224. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/includes_value.d.ts.map +0 -0
  225. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/intersect.d.ts +0 -0
  226. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/intersect.d.ts.map +0 -0
  227. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/invert.d.ts +0 -0
  228. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/invert.d.ts.map +0 -0
  229. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/invert_by.d.ts +0 -0
  230. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/invert_by.d.ts.map +0 -0
  231. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/join_to_string.d.ts +0 -0
  232. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/join_to_string.d.ts.map +0 -0
  233. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/map_entries.d.ts +0 -0
  234. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/map_entries.d.ts.map +0 -0
  235. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/map_keys.d.ts +0 -0
  236. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/map_keys.d.ts.map +0 -0
  237. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.d.ts +0 -0
  238. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.d.ts.map +0 -0
  239. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/map_values.d.ts +0 -0
  240. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/map_values.d.ts.map +0 -0
  241. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/max_by.d.ts +0 -0
  242. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/max_by.d.ts.map +0 -0
  243. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/max_of.d.ts +0 -0
  244. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/max_of.d.ts.map +0 -0
  245. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/max_with.d.ts +0 -0
  246. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/max_with.d.ts.map +0 -0
  247. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/min_by.d.ts +0 -0
  248. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/min_by.d.ts.map +0 -0
  249. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/min_of.d.ts +0 -0
  250. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/min_of.d.ts.map +0 -0
  251. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/min_with.d.ts +0 -0
  252. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/min_with.d.ts.map +0 -0
  253. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/mod.d.ts +0 -0
  254. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/mod.d.ts.map +0 -0
  255. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/omit.d.ts +0 -0
  256. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/omit.d.ts.map +0 -0
  257. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/partition.d.ts +0 -0
  258. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/partition.d.ts.map +0 -0
  259. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/partition_entries.d.ts +0 -0
  260. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/partition_entries.d.ts.map +0 -0
  261. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/permutations.d.ts +0 -0
  262. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/permutations.d.ts.map +0 -0
  263. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/pick.d.ts +0 -0
  264. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/pick.d.ts.map +0 -0
  265. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/reduce_groups.d.ts +0 -0
  266. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/reduce_groups.d.ts.map +0 -0
  267. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/running_reduce.d.ts +0 -0
  268. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/running_reduce.d.ts.map +0 -0
  269. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/sample.d.ts +0 -0
  270. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/sample.d.ts.map +0 -0
  271. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/sliding_windows.d.ts +0 -0
  272. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/sliding_windows.d.ts.map +0 -0
  273. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/sort_by.d.ts +0 -0
  274. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/sort_by.d.ts.map +0 -0
  275. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/sum_of.d.ts +0 -0
  276. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/sum_of.d.ts.map +0 -0
  277. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/take_last_while.d.ts +0 -0
  278. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/take_last_while.d.ts.map +0 -0
  279. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/take_while.d.ts +0 -0
  280. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/take_while.d.ts.map +0 -0
  281. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/union.d.ts +0 -0
  282. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/union.d.ts.map +0 -0
  283. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/unzip.d.ts +0 -0
  284. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/unzip.d.ts.map +0 -0
  285. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/without_all.d.ts +0 -0
  286. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/without_all.d.ts.map +0 -0
  287. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/zip.d.ts +0 -0
  288. /package/{types → esm}/deps/jsr.io/@std/collections/1.0.9/zip.d.ts.map +0 -0
  289. /package/{types → esm}/mod.d.ts +0 -0
  290. /package/{types → esm}/mod.d.ts.map +0 -0
  291. /package/{types → esm}/types/Ref.d.ts +0 -0
  292. /package/{types → esm}/types/Ref.d.ts.map +0 -0
  293. /package/{types → esm}/types/RootTy.d.ts +0 -0
  294. /package/{types → esm}/types/RootTy.d.ts.map +0 -0
  295. /package/{types → esm}/types/Ty.d.ts +0 -0
  296. /package/{types → esm}/types/Ty.d.ts.map +0 -0
  297. /package/{types → esm}/types/array.d.ts +0 -0
  298. /package/{types → esm}/types/array.d.ts.map +0 -0
  299. /package/{types → esm}/types/constant.d.ts +0 -0
  300. /package/{types → esm}/types/constant.d.ts.map +0 -0
  301. /package/{types → esm}/types/constantUnion.d.ts +0 -0
  302. /package/{types → esm}/types/constantUnion.d.ts.map +0 -0
  303. /package/{types → esm}/types/leaves.d.ts +0 -0
  304. /package/{types → esm}/types/leaves.d.ts.map +0 -0
  305. /package/{types → esm}/types/mod.d.ts +0 -0
  306. /package/{types → esm}/types/mod.d.ts.map +0 -0
  307. /package/{types → esm}/types/object.d.ts +0 -0
  308. /package/{types → esm}/types/object.d.ts.map +0 -0
  309. /package/{types → esm}/types/std/Option.d.ts +0 -0
  310. /package/{types → esm}/types/std/Option.d.ts.map +0 -0
  311. /package/{types → esm}/types/std/Wrapper.d.ts +0 -0
  312. /package/{types → esm}/types/std/Wrapper.d.ts.map +0 -0
  313. /package/{types → esm}/types/std/mod.d.ts +0 -0
  314. /package/{types → esm}/types/std/mod.d.ts.map +0 -0
  315. /package/{types → esm}/types/taggedUnion.d.ts +0 -0
  316. /package/{types → esm}/types/taggedUnion.d.ts.map +0 -0
  317. /package/{types → esm}/util/phantoms.d.ts +0 -0
  318. /package/{types → esm}/util/phantoms.d.ts.map +0 -0
  319. /package/{types → esm}/util/recombineTaggedTemplateArgs.d.ts +0 -0
  320. /package/{types → esm}/util/recombineTaggedTemplateArgs.d.ts.map +0 -0
@@ -1,134 +0,0 @@
1
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
- // This module is browser compatible.
3
-
4
- import { bgGreen, bgRed, bold, gray, green, red, white } from "./styles.js";
5
- import type { DiffResult, DiffType } from "./types.js";
6
-
7
- /**
8
- * Colors the output of assertion diffs.
9
- *
10
- * @param diffType Difference type, either added or removed.
11
- * @param background If true, colors the background instead of the text.
12
- *
13
- * @returns A function that colors the input string.
14
- *
15
- * @example Usage
16
- * ```ts
17
- * import { createColor } from "@std/internal";
18
- * import { assertEquals } from "@std/assert";
19
- * import { bold, green, red, white } from "@std/fmt/colors";
20
- *
21
- * assertEquals(createColor("added")("foo"), green(bold("foo")));
22
- * assertEquals(createColor("removed")("foo"), red(bold("foo")));
23
- * assertEquals(createColor("common")("foo"), white("foo"));
24
- * ```
25
- */
26
- export function createColor(
27
- diffType: DiffType,
28
- /**
29
- * TODO(@littledivy): Remove this when we can detect true color terminals. See
30
- * https://github.com/denoland/deno_std/issues/2575.
31
- */
32
- background = false,
33
- ): (s: string) => string {
34
- switch (diffType) {
35
- case "added":
36
- return (s) => background ? bgGreen(white(s)) : green(bold(s));
37
- case "removed":
38
- return (s) => background ? bgRed(white(s)) : red(bold(s));
39
- default:
40
- return white;
41
- }
42
- }
43
-
44
- /**
45
- * Prefixes `+` or `-` in diff output.
46
- *
47
- * @param diffType Difference type, either added or removed
48
- *
49
- * @returns A string representing the sign.
50
- *
51
- * @example Usage
52
- * ```ts
53
- * import { createSign } from "@std/internal";
54
- * import { assertEquals } from "@std/assert";
55
- *
56
- * assertEquals(createSign("added"), "+ ");
57
- * assertEquals(createSign("removed"), "- ");
58
- * assertEquals(createSign("common"), " ");
59
- * ```
60
- */
61
- export function createSign(diffType: DiffType): string {
62
- switch (diffType) {
63
- case "added":
64
- return "+ ";
65
- case "removed":
66
- return "- ";
67
- default:
68
- return " ";
69
- }
70
- }
71
-
72
- /** Options for {@linkcode buildMessage}. */
73
- export interface BuildMessageOptions {
74
- /**
75
- * Whether to output the diff as a single string.
76
- *
77
- * @default {false}
78
- */
79
- stringDiff?: boolean;
80
- }
81
-
82
- /**
83
- * Builds a message based on the provided diff result.
84
- *
85
- * @param diffResult The diff result array.
86
- * @param options Optional parameters for customizing the message.
87
- *
88
- * @returns An array of strings representing the built message.
89
- *
90
- * @example Usage
91
- * ```ts no-assert
92
- * import { diffStr, buildMessage } from "@std/internal";
93
- *
94
- * const diffResult = diffStr("Hello, world!", "Hello, world");
95
- *
96
- * console.log(buildMessage(diffResult));
97
- * // [
98
- * // "",
99
- * // "",
100
- * // " [Diff] Actual / Expected",
101
- * // "",
102
- * // "",
103
- * // "- Hello, world!",
104
- * // "+ Hello, world",
105
- * // "",
106
- * // ]
107
- * ```
108
- */
109
- export function buildMessage(
110
- diffResult: ReadonlyArray<DiffResult<string>>,
111
- options: BuildMessageOptions = {},
112
- ): string[] {
113
- const { stringDiff = false } = options;
114
- const messages = [
115
- "",
116
- "",
117
- ` ${gray(bold("[Diff]"))} ${red(bold("Actual"))} / ${
118
- green(bold("Expected"))
119
- }`,
120
- "",
121
- "",
122
- ];
123
- const diffMessages = diffResult.map((result) => {
124
- const color = createColor(result.type);
125
- const line = result.details?.map((detail) =>
126
- detail.type !== "common"
127
- ? createColor(detail.type, true)(detail.value)
128
- : detail.value
129
- ).join("") ?? result.value;
130
- return color(`${createSign(result.type)}${line}`);
131
- });
132
- messages.push(...(stringDiff ? [diffMessages.join("")] : diffMessages), "");
133
- return messages;
134
- }
@@ -1,317 +0,0 @@
1
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
- // This module is browser compatible.
3
-
4
- import type { DiffResult, DiffType } from "./types.js";
5
-
6
- /** Represents the farthest point in the diff algorithm. */
7
- export interface FarthestPoint {
8
- /** The y-coordinate of the point. */
9
- y: number;
10
- /** The id of the point. */
11
- id: number;
12
- }
13
-
14
- const REMOVED = 1;
15
- const COMMON = 2;
16
- const ADDED = 3;
17
-
18
- /**
19
- * Creates an array of common elements between two arrays.
20
- *
21
- * @typeParam T The type of elements in the arrays.
22
- *
23
- * @param A The first array.
24
- * @param B The second array.
25
- *
26
- * @returns An array containing the common elements between the two arrays.
27
- *
28
- * @example Usage
29
- * ```ts
30
- * import { createCommon } from "@std/internal/diff";
31
- * import { assertEquals } from "@std/assert";
32
- *
33
- * const a = [1, 2, 3];
34
- * const b = [1, 2, 4];
35
- *
36
- * assertEquals(createCommon(a, b), [1, 2]);
37
- * ```
38
- */
39
- export function createCommon<T>(A: T[], B: T[]): T[] {
40
- const common: T[] = [];
41
- if (A.length === 0 || B.length === 0) return [];
42
- for (let i = 0; i < Math.min(A.length, B.length); i += 1) {
43
- const a = A[i];
44
- const b = B[i];
45
- if (a !== undefined && a === b) {
46
- common.push(a);
47
- } else {
48
- return common;
49
- }
50
- }
51
- return common;
52
- }
53
-
54
- /**
55
- * Asserts that the value is a {@linkcode FarthestPoint}.
56
- * If not, an error is thrown.
57
- *
58
- * @param value The value to check.
59
- *
60
- * @returns A void value that returns once the assertion completes.
61
- *
62
- * @example Usage
63
- * ```ts
64
- * import { assertFp } from "@std/internal/diff";
65
- * import { assertThrows } from "@std/assert";
66
- *
67
- * assertFp({ y: 0, id: 0 });
68
- * assertThrows(() => assertFp({ id: 0 }));
69
- * assertThrows(() => assertFp({ y: 0 }));
70
- * assertThrows(() => assertFp(undefined));
71
- * ```
72
- */
73
- export function assertFp(value: unknown): asserts value is FarthestPoint {
74
- if (
75
- value == null ||
76
- typeof value !== "object" ||
77
- typeof (value as FarthestPoint)?.y !== "number" ||
78
- typeof (value as FarthestPoint)?.id !== "number"
79
- ) {
80
- throw new Error(
81
- `Unexpected value, expected 'FarthestPoint': received ${typeof value}`,
82
- );
83
- }
84
- }
85
-
86
- /**
87
- * Creates an array of backtraced differences.
88
- *
89
- * @typeParam T The type of elements in the arrays.
90
- *
91
- * @param A The first array.
92
- * @param B The second array.
93
- * @param current The current {@linkcode FarthestPoint}.
94
- * @param swapped Boolean indicating if the arrays are swapped.
95
- * @param routes The routes array.
96
- * @param diffTypesPtrOffset The offset of the diff types in the routes array.
97
- *
98
- * @returns An array of backtraced differences.
99
- *
100
- * @example Usage
101
- * ```ts
102
- * import { backTrace } from "@std/internal/diff";
103
- * import { assertEquals } from "@std/assert";
104
- *
105
- * assertEquals(
106
- * backTrace([], [], { y: 0, id: 0 }, false, new Uint32Array(0), 0),
107
- * [],
108
- * );
109
- * ```
110
- */
111
- export function backTrace<T>(
112
- A: T[],
113
- B: T[],
114
- current: FarthestPoint,
115
- swapped: boolean,
116
- routes: Uint32Array,
117
- diffTypesPtrOffset: number,
118
- ): Array<{
119
- type: DiffType;
120
- value: T;
121
- }> {
122
- const M = A.length;
123
- const N = B.length;
124
- const result: { type: DiffType; value: T }[] = [];
125
- let a = M - 1;
126
- let b = N - 1;
127
- let j = routes[current.id];
128
- let type = routes[current.id + diffTypesPtrOffset];
129
- while (true) {
130
- if (!j && !type) break;
131
- const prev = j!;
132
- if (type === REMOVED) {
133
- result.unshift({
134
- type: swapped ? "removed" : "added",
135
- value: B[b]!,
136
- });
137
- b -= 1;
138
- } else if (type === ADDED) {
139
- result.unshift({
140
- type: swapped ? "added" : "removed",
141
- value: A[a]!,
142
- });
143
- a -= 1;
144
- } else {
145
- result.unshift({ type: "common", value: A[a]! });
146
- a -= 1;
147
- b -= 1;
148
- }
149
- j = routes[prev];
150
- type = routes[prev + diffTypesPtrOffset];
151
- }
152
- return result;
153
- }
154
-
155
- /**
156
- * Creates a {@linkcode FarthestPoint}.
157
- *
158
- * @param k The current index.
159
- * @param M The length of the first array.
160
- * @param routes The routes array.
161
- * @param diffTypesPtrOffset The offset of the diff types in the routes array.
162
- * @param ptr The current pointer.
163
- * @param slide The slide {@linkcode FarthestPoint}.
164
- * @param down The down {@linkcode FarthestPoint}.
165
- *
166
- * @returns A {@linkcode FarthestPoint}.
167
- *
168
- * @example Usage
169
- * ```ts
170
- * import { createFp } from "@std/internal/diff";
171
- * import { assertEquals } from "@std/assert";
172
- *
173
- * assertEquals(
174
- * createFp(
175
- * 0,
176
- * 0,
177
- * new Uint32Array(0),
178
- * 0,
179
- * 0,
180
- * { y: -1, id: 0 },
181
- * { y: 0, id: 0 },
182
- * ),
183
- * { y: -1, id: 1 },
184
- * );
185
- * ```
186
- */
187
- export function createFp(
188
- k: number,
189
- M: number,
190
- routes: Uint32Array,
191
- diffTypesPtrOffset: number,
192
- ptr: number,
193
- slide?: FarthestPoint,
194
- down?: FarthestPoint,
195
- ): FarthestPoint {
196
- if (slide && slide.y === -1 && down && down.y === -1) {
197
- return { y: 0, id: 0 };
198
- }
199
- const isAdding = (down?.y === -1) ||
200
- k === M ||
201
- (slide?.y ?? 0) > (down?.y ?? 0) + 1;
202
- if (slide && isAdding) {
203
- const prev = slide.id;
204
- ptr++;
205
- routes[ptr] = prev;
206
- routes[ptr + diffTypesPtrOffset] = ADDED;
207
- return { y: slide.y, id: ptr };
208
- }
209
- if (down && !isAdding) {
210
- const prev = down.id;
211
- ptr++;
212
- routes[ptr] = prev;
213
- routes[ptr + diffTypesPtrOffset] = REMOVED;
214
- return { y: down.y + 1, id: ptr };
215
- }
216
- throw new Error("Unexpected missing FarthestPoint");
217
- }
218
-
219
- /**
220
- * Renders the differences between the actual and expected values.
221
- *
222
- * @typeParam T The type of elements in the arrays.
223
- *
224
- * @param A Actual value
225
- * @param B Expected value
226
- *
227
- * @returns An array of differences between the actual and expected values.
228
- *
229
- * @example Usage
230
- * ```ts
231
- * import { diff } from "@std/internal/diff";
232
- * import { assertEquals } from "@std/assert";
233
- *
234
- * const a = [1, 2, 3];
235
- * const b = [1, 2, 4];
236
- *
237
- * assertEquals(diff(a, b), [
238
- * { type: "common", value: 1 },
239
- * { type: "common", value: 2 },
240
- * { type: "removed", value: 3 },
241
- * { type: "added", value: 4 },
242
- * ]);
243
- * ```
244
- */
245
- export function diff<T>(A: T[], B: T[]): DiffResult<T>[] {
246
- const prefixCommon = createCommon(A, B);
247
- A = A.slice(prefixCommon.length);
248
- B = B.slice(prefixCommon.length);
249
- const swapped = B.length > A.length;
250
- [A, B] = swapped ? [B, A] : [A, B];
251
- const M = A.length;
252
- const N = B.length;
253
- if (!M && !N && !prefixCommon.length) return [];
254
- if (!N) {
255
- return [
256
- ...prefixCommon.map((value) => ({ type: "common", value })),
257
- ...A.map((value) => ({ type: swapped ? "added" : "removed", value })),
258
- ] as DiffResult<T>[];
259
- }
260
- const offset = N;
261
- const delta = M - N;
262
- const length = M + N + 1;
263
- const fp: FarthestPoint[] = Array.from({ length }, () => ({ y: -1, id: -1 }));
264
-
265
- /**
266
- * Note: this buffer is used to save memory and improve performance. The first
267
- * half is used to save route and the last half is used to save diff type.
268
- */
269
- const routes = new Uint32Array((M * N + length + 1) * 2);
270
- const diffTypesPtrOffset = routes.length / 2;
271
- let ptr = 0;
272
-
273
- function snake<T>(
274
- k: number,
275
- A: T[],
276
- B: T[],
277
- slide?: FarthestPoint,
278
- down?: FarthestPoint,
279
- ): FarthestPoint {
280
- const M = A.length;
281
- const N = B.length;
282
- const fp = createFp(k, M, routes, diffTypesPtrOffset, ptr, slide, down);
283
- ptr = fp.id;
284
- while (fp.y + k < M && fp.y < N && A[fp.y + k] === B[fp.y]) {
285
- const prev = fp.id;
286
- ptr++;
287
- fp.id = ptr;
288
- fp.y += 1;
289
- routes[ptr] = prev;
290
- routes[ptr + diffTypesPtrOffset] = COMMON;
291
- }
292
- return fp;
293
- }
294
-
295
- let currentFp = fp[delta + offset];
296
- assertFp(currentFp);
297
- let p = -1;
298
- while (currentFp.y < N) {
299
- p = p + 1;
300
- for (let k = -p; k < delta; ++k) {
301
- const index = k + offset;
302
- fp[index] = snake(k, A, B, fp[index - 1], fp[index + 1]);
303
- }
304
- for (let k = delta + p; k > delta; --k) {
305
- const index = k + offset;
306
- fp[index] = snake(k, A, B, fp[index - 1], fp[index + 1]);
307
- }
308
- const index = delta + offset;
309
- fp[delta + offset] = snake(delta, A, B, fp[index - 1], fp[index + 1]);
310
- currentFp = fp[delta + offset];
311
- assertFp(currentFp);
312
- }
313
- return [
314
- ...prefixCommon.map((value) => ({ type: "common", value })),
315
- ...backTrace(A, B, currentFp, swapped, routes, diffTypesPtrOffset),
316
- ] as DiffResult<T>[];
317
- }
@@ -1,204 +0,0 @@
1
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
- import type { DiffResult } from "./types.js";
3
- import { diff } from "./diff.js";
4
-
5
- /**
6
- * Unescape invisible characters.
7
- *
8
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#escape_sequences}
9
- *
10
- * @param string String to unescape.
11
- *
12
- * @returns Unescaped string.
13
- *
14
- * @example Usage
15
- * ```ts
16
- * import { unescape } from "@std/internal/diff-str";
17
- * import { assertEquals } from "@std/assert";
18
- *
19
- * assertEquals(unescape("Hello\nWorld"), "Hello\\n\nWorld");
20
- * ```
21
- */
22
- export function unescape(string: string): string {
23
- return string
24
- .replaceAll("\b", "\\b")
25
- .replaceAll("\f", "\\f")
26
- .replaceAll("\t", "\\t")
27
- .replaceAll("\v", "\\v")
28
- // This does not remove line breaks
29
- .replaceAll(
30
- /\r\n|\r|\n/g,
31
- (str) => str === "\r" ? "\\r" : str === "\n" ? "\\n\n" : "\\r\\n\r\n",
32
- );
33
- }
34
-
35
- const WHITESPACE_SYMBOLS = /([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/;
36
-
37
- /**
38
- * Tokenizes a string into an array of tokens.
39
- *
40
- * @param string The string to tokenize.
41
- * @param wordDiff If true, performs word-based tokenization. Default is false.
42
- *
43
- * @returns An array of tokens.
44
- *
45
- * @example Usage
46
- * ```ts
47
- * import { tokenize } from "@std/internal/diff-str";
48
- * import { assertEquals } from "@std/assert";
49
- *
50
- * assertEquals(tokenize("Hello\nWorld"), ["Hello\n", "World"]);
51
- * ```
52
- */
53
- export function tokenize(string: string, wordDiff = false): string[] {
54
- if (wordDiff) {
55
- return string
56
- .split(WHITESPACE_SYMBOLS)
57
- .filter((token) => token);
58
- }
59
- const tokens: string[] = [];
60
- const lines = string.split(/(\n|\r\n)/).filter((line) => line);
61
-
62
- for (const [i, line] of lines.entries()) {
63
- if (i % 2) {
64
- tokens[tokens.length - 1] += line;
65
- } else {
66
- tokens.push(line);
67
- }
68
- }
69
- return tokens;
70
- }
71
-
72
- /**
73
- * Create details by filtering relevant word-diff for current line and merge
74
- * "space-diff" if surrounded by word-diff for cleaner displays.
75
- *
76
- * @param line Current line
77
- * @param tokens Word-diff tokens
78
- *
79
- * @returns Array of diff results.
80
- *
81
- * @example Usage
82
- * ```ts
83
- * import { createDetails } from "@std/internal/diff-str";
84
- * import { assertEquals } from "@std/assert";
85
- *
86
- * const tokens = [
87
- * { type: "added", value: "a" },
88
- * { type: "removed", value: "b" },
89
- * { type: "common", value: "c" },
90
- * ] as const;
91
- * assertEquals(
92
- * createDetails({ type: "added", value: "a" }, [...tokens]),
93
- * [{ type: "added", value: "a" }, { type: "common", value: "c" }]
94
- * );
95
- * ```
96
- */
97
- export function createDetails(
98
- line: DiffResult<string>,
99
- tokens: DiffResult<string>[],
100
- ): DiffResult<string>[] {
101
- return tokens.filter(({ type }) => type === line.type || type === "common")
102
- .map((result, i, t) => {
103
- const token = t[i - 1];
104
- if (
105
- (result.type === "common") && token &&
106
- (token.type === t[i + 1]?.type) && /\s+/.test(result.value)
107
- ) {
108
- return {
109
- ...result,
110
- type: token.type,
111
- };
112
- }
113
- return result;
114
- });
115
- }
116
-
117
- const NON_WHITESPACE_REGEXP = /\S/;
118
-
119
- /**
120
- * Renders the differences between the actual and expected strings. Partially
121
- * inspired from {@link https://github.com/kpdecker/jsdiff}.
122
- *
123
- * @param A Actual string
124
- * @param B Expected string
125
- *
126
- * @returns Array of diff results.
127
- *
128
- * @example Usage
129
- * ```ts
130
- * import { diffStr } from "@std/internal/diff-str";
131
- * import { assertEquals } from "@std/assert";
132
- *
133
- * assertEquals(diffStr("Hello!", "Hello"), [
134
- * {
135
- * type: "removed",
136
- * value: "Hello!\n",
137
- * details: [
138
- * { type: "common", value: "Hello" },
139
- * { type: "removed", value: "!" },
140
- * { type: "common", value: "\n" }
141
- * ]
142
- * },
143
- * {
144
- * type: "added",
145
- * value: "Hello\n",
146
- * details: [
147
- * { type: "common", value: "Hello" },
148
- * { type: "common", value: "\n" }
149
- * ]
150
- * }
151
- * ]);
152
- * ```
153
- */
154
- export function diffStr(A: string, B: string): DiffResult<string>[] {
155
- // Compute multi-line diff
156
- const diffResult = diff(
157
- tokenize(`${unescape(A)}\n`),
158
- tokenize(`${unescape(B)}\n`),
159
- );
160
-
161
- const added = [];
162
- const removed = [];
163
- for (const result of diffResult) {
164
- if (result.type === "added") {
165
- added.push(result);
166
- }
167
- if (result.type === "removed") {
168
- removed.push(result);
169
- }
170
- }
171
-
172
- // Compute word-diff
173
- const hasMoreRemovedLines = added.length < removed.length;
174
- const aLines = hasMoreRemovedLines ? added : removed;
175
- const bLines = hasMoreRemovedLines ? removed : added;
176
- for (const a of aLines) {
177
- let tokens = [] as Array<DiffResult<string>>;
178
- let b: undefined | DiffResult<string>;
179
- // Search another diff line with at least one common token
180
- while (bLines.length) {
181
- b = bLines.shift();
182
- const tokenized = [
183
- tokenize(a.value, true),
184
- tokenize(b!.value, true),
185
- ] as [string[], string[]];
186
- if (hasMoreRemovedLines) tokenized.reverse();
187
- tokens = diff(tokenized[0], tokenized[1]);
188
- if (
189
- tokens.some(({ type, value }) =>
190
- type === "common" && NON_WHITESPACE_REGEXP.test(value)
191
- )
192
- ) {
193
- break;
194
- }
195
- }
196
- // Register word-diff details
197
- a.details = createDetails(a, tokens);
198
- if (b) {
199
- b.details = createDetails(b, tokens);
200
- }
201
- }
202
-
203
- return diffResult;
204
- }
@@ -1,39 +0,0 @@
1
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
2
- // This module is browser compatible.
3
-
4
- /**
5
- * Converts the input into a string. Objects, Sets and Maps are sorted so as to
6
- * make tests less flaky.
7
- *
8
- * @param v Value to be formatted
9
- *
10
- * @returns The formatted string
11
- *
12
- * @example Usage
13
- * ```ts
14
- * import { format } from "@std/internal/format";
15
- * import { assertEquals } from "@std/assert";
16
- *
17
- * assertEquals(format({ a: 1, b: 2 }), "{\n a: 1,\n b: 2,\n}");
18
- * assertEquals(format(new Set([1, 2])), "Set(2) {\n 1,\n 2,\n}");
19
- * assertEquals(format(new Map([[1, 2]])), "Map(1) {\n 1 => 2,\n}");
20
- * ```
21
- */
22
- import * as dntShim from "../../../../../_dnt.shims.js";
23
-
24
- export function format(v: unknown): string {
25
- // deno-lint-ignore no-explicit-any
26
- const { Deno } = dntShim.dntGlobalThis as any;
27
- return typeof Deno?.inspect === "function"
28
- ? Deno.inspect(v, {
29
- depth: Infinity,
30
- sorted: true,
31
- trailingComma: true,
32
- compact: false,
33
- iterableLimit: Infinity,
34
- // getters should be true in assertEquals.
35
- getters: true,
36
- strAbbreviateSize: Infinity,
37
- })
38
- : `"${String(v).replace(/(?=["\\])/g, "\\")}"`;
39
- }