@effectionx/worker 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/dist/message-channel.d.ts.map +1 -0
  2. package/dist/mod.d.ts +4 -0
  3. package/dist/mod.d.ts.map +1 -0
  4. package/{esm → dist}/mod.js +1 -0
  5. package/dist/test-simple-worker.d.ts +2 -0
  6. package/dist/test-simple-worker.d.ts.map +1 -0
  7. package/dist/test-simple-worker.js +11 -0
  8. package/dist/tsconfig.tsbuildinfo +1 -0
  9. package/dist/types.d.ts.map +1 -0
  10. package/{esm → dist}/worker-main.d.ts +1 -1
  11. package/dist/worker-main.d.ts.map +1 -0
  12. package/{esm → dist}/worker-main.js +34 -16
  13. package/dist/worker.d.ts.map +1 -0
  14. package/{esm → dist}/worker.js +3 -4
  15. package/message-channel.ts +13 -0
  16. package/mod.ts +3 -0
  17. package/package.json +22 -16
  18. package/test-assets/boom-result-worker.ts +5 -0
  19. package/test-assets/boom-worker.ts +7 -0
  20. package/test-assets/counter-worker.ts +15 -0
  21. package/test-assets/crash-worker.ts +1 -0
  22. package/test-assets/echo-worker.ts +7 -0
  23. package/test-assets/result-worker.ts +5 -0
  24. package/test-assets/shutdown-worker.ts +24 -0
  25. package/test-assets/suspend-worker.ts +4 -0
  26. package/test-simple-worker.ts +12 -0
  27. package/tsconfig.json +20 -0
  28. package/types.ts +38 -0
  29. package/worker-main.ts +248 -0
  30. package/worker.test.ts +179 -0
  31. package/worker.ts +159 -0
  32. package/esm/_dnt.shims.d.ts +0 -2
  33. package/esm/_dnt.shims.d.ts.map +0 -1
  34. package/esm/_dnt.shims.js +0 -57
  35. package/esm/deps/jsr.io/@std/assert/1.0.16/almost_equals.d.ts +0 -29
  36. package/esm/deps/jsr.io/@std/assert/1.0.16/almost_equals.d.ts.map +0 -1
  37. package/esm/deps/jsr.io/@std/assert/1.0.16/almost_equals.js +0 -46
  38. package/esm/deps/jsr.io/@std/assert/1.0.16/array_includes.d.ts +0 -24
  39. package/esm/deps/jsr.io/@std/assert/1.0.16/array_includes.d.ts.map +0 -1
  40. package/esm/deps/jsr.io/@std/assert/1.0.16/array_includes.js +0 -46
  41. package/esm/deps/jsr.io/@std/assert/1.0.16/assert.d.ts +0 -16
  42. package/esm/deps/jsr.io/@std/assert/1.0.16/assert.d.ts.map +0 -1
  43. package/esm/deps/jsr.io/@std/assert/1.0.16/assert.js +0 -22
  44. package/esm/deps/jsr.io/@std/assert/1.0.16/assertion_error.d.ts +0 -26
  45. package/esm/deps/jsr.io/@std/assert/1.0.16/assertion_error.d.ts.map +0 -1
  46. package/esm/deps/jsr.io/@std/assert/1.0.16/assertion_error.js +0 -30
  47. package/esm/deps/jsr.io/@std/assert/1.0.16/equal.d.ts +0 -17
  48. package/esm/deps/jsr.io/@std/assert/1.0.16/equal.d.ts.map +0 -1
  49. package/esm/deps/jsr.io/@std/assert/1.0.16/equal.js +0 -186
  50. package/esm/deps/jsr.io/@std/assert/1.0.16/equals.d.ts +0 -35
  51. package/esm/deps/jsr.io/@std/assert/1.0.16/equals.d.ts.map +0 -1
  52. package/esm/deps/jsr.io/@std/assert/1.0.16/equals.js +0 -59
  53. package/esm/deps/jsr.io/@std/assert/1.0.16/exists.d.ts +0 -18
  54. package/esm/deps/jsr.io/@std/assert/1.0.16/exists.d.ts.map +0 -1
  55. package/esm/deps/jsr.io/@std/assert/1.0.16/exists.js +0 -27
  56. package/esm/deps/jsr.io/@std/assert/1.0.16/fail.d.ts +0 -15
  57. package/esm/deps/jsr.io/@std/assert/1.0.16/fail.d.ts.map +0 -1
  58. package/esm/deps/jsr.io/@std/assert/1.0.16/fail.js +0 -20
  59. package/esm/deps/jsr.io/@std/assert/1.0.16/false.d.ts +0 -18
  60. package/esm/deps/jsr.io/@std/assert/1.0.16/false.d.ts.map +0 -1
  61. package/esm/deps/jsr.io/@std/assert/1.0.16/false.js +0 -22
  62. package/esm/deps/jsr.io/@std/assert/1.0.16/greater.d.ts +0 -20
  63. package/esm/deps/jsr.io/@std/assert/1.0.16/greater.d.ts.map +0 -1
  64. package/esm/deps/jsr.io/@std/assert/1.0.16/greater.js +0 -29
  65. package/esm/deps/jsr.io/@std/assert/1.0.16/greater_or_equal.d.ts +0 -20
  66. package/esm/deps/jsr.io/@std/assert/1.0.16/greater_or_equal.d.ts.map +0 -1
  67. package/esm/deps/jsr.io/@std/assert/1.0.16/greater_or_equal.js +0 -29
  68. package/esm/deps/jsr.io/@std/assert/1.0.16/instance_of.d.ts +0 -23
  69. package/esm/deps/jsr.io/@std/assert/1.0.16/instance_of.d.ts.map +0 -1
  70. package/esm/deps/jsr.io/@std/assert/1.0.16/instance_of.js +0 -52
  71. package/esm/deps/jsr.io/@std/assert/1.0.16/is_error.d.ts +0 -25
  72. package/esm/deps/jsr.io/@std/assert/1.0.16/is_error.d.ts.map +0 -1
  73. package/esm/deps/jsr.io/@std/assert/1.0.16/is_error.js +0 -53
  74. package/esm/deps/jsr.io/@std/assert/1.0.16/less.d.ts +0 -19
  75. package/esm/deps/jsr.io/@std/assert/1.0.16/less.d.ts.map +0 -1
  76. package/esm/deps/jsr.io/@std/assert/1.0.16/less.js +0 -28
  77. package/esm/deps/jsr.io/@std/assert/1.0.16/less_or_equal.d.ts +0 -20
  78. package/esm/deps/jsr.io/@std/assert/1.0.16/less_or_equal.d.ts.map +0 -1
  79. package/esm/deps/jsr.io/@std/assert/1.0.16/less_or_equal.js +0 -29
  80. package/esm/deps/jsr.io/@std/assert/1.0.16/match.d.ts +0 -18
  81. package/esm/deps/jsr.io/@std/assert/1.0.16/match.d.ts.map +0 -1
  82. package/esm/deps/jsr.io/@std/assert/1.0.16/match.js +0 -26
  83. package/esm/deps/jsr.io/@std/assert/1.0.16/mod.d.ts +0 -44
  84. package/esm/deps/jsr.io/@std/assert/1.0.16/mod.d.ts.map +0 -1
  85. package/esm/deps/jsr.io/@std/assert/1.0.16/mod.js +0 -45
  86. package/esm/deps/jsr.io/@std/assert/1.0.16/not_equals.d.ts +0 -21
  87. package/esm/deps/jsr.io/@std/assert/1.0.16/not_equals.d.ts.map +0 -1
  88. package/esm/deps/jsr.io/@std/assert/1.0.16/not_equals.js +0 -33
  89. package/esm/deps/jsr.io/@std/assert/1.0.16/not_instance_of.d.ts +0 -20
  90. package/esm/deps/jsr.io/@std/assert/1.0.16/not_instance_of.d.ts.map +0 -1
  91. package/esm/deps/jsr.io/@std/assert/1.0.16/not_instance_of.js +0 -29
  92. package/esm/deps/jsr.io/@std/assert/1.0.16/not_match.d.ts +0 -18
  93. package/esm/deps/jsr.io/@std/assert/1.0.16/not_match.d.ts.map +0 -1
  94. package/esm/deps/jsr.io/@std/assert/1.0.16/not_match.js +0 -26
  95. package/esm/deps/jsr.io/@std/assert/1.0.16/not_strict_equals.d.ts +0 -23
  96. package/esm/deps/jsr.io/@std/assert/1.0.16/not_strict_equals.d.ts.map +0 -1
  97. package/esm/deps/jsr.io/@std/assert/1.0.16/not_strict_equals.js +0 -32
  98. package/esm/deps/jsr.io/@std/assert/1.0.16/object_match.d.ts +0 -29
  99. package/esm/deps/jsr.io/@std/assert/1.0.16/object_match.d.ts.map +0 -1
  100. package/esm/deps/jsr.io/@std/assert/1.0.16/object_match.js +0 -167
  101. package/esm/deps/jsr.io/@std/assert/1.0.16/rejects.d.ts +0 -42
  102. package/esm/deps/jsr.io/@std/assert/1.0.16/rejects.d.ts.map +0 -1
  103. package/esm/deps/jsr.io/@std/assert/1.0.16/rejects.js +0 -53
  104. package/esm/deps/jsr.io/@std/assert/1.0.16/strict_equals.d.ts +0 -24
  105. package/esm/deps/jsr.io/@std/assert/1.0.16/strict_equals.d.ts.map +0 -1
  106. package/esm/deps/jsr.io/@std/assert/1.0.16/strict_equals.js +0 -58
  107. package/esm/deps/jsr.io/@std/assert/1.0.16/string_includes.d.ts +0 -18
  108. package/esm/deps/jsr.io/@std/assert/1.0.16/string_includes.d.ts.map +0 -1
  109. package/esm/deps/jsr.io/@std/assert/1.0.16/string_includes.js +0 -26
  110. package/esm/deps/jsr.io/@std/assert/1.0.16/throws.d.ts +0 -45
  111. package/esm/deps/jsr.io/@std/assert/1.0.16/throws.d.ts.map +0 -1
  112. package/esm/deps/jsr.io/@std/assert/1.0.16/throws.js +0 -44
  113. package/esm/deps/jsr.io/@std/assert/1.0.16/unimplemented.d.ts +0 -15
  114. package/esm/deps/jsr.io/@std/assert/1.0.16/unimplemented.d.ts.map +0 -1
  115. package/esm/deps/jsr.io/@std/assert/1.0.16/unimplemented.js +0 -20
  116. package/esm/deps/jsr.io/@std/assert/1.0.16/unreachable.d.ts +0 -15
  117. package/esm/deps/jsr.io/@std/assert/1.0.16/unreachable.d.ts.map +0 -1
  118. package/esm/deps/jsr.io/@std/assert/1.0.16/unreachable.js +0 -20
  119. package/esm/deps/jsr.io/@std/internal/1.0.12/build_message.d.ts +0 -80
  120. package/esm/deps/jsr.io/@std/internal/1.0.12/build_message.d.ts.map +0 -1
  121. package/esm/deps/jsr.io/@std/internal/1.0.12/build_message.js +0 -116
  122. package/esm/deps/jsr.io/@std/internal/1.0.12/diff.d.ts +0 -140
  123. package/esm/deps/jsr.io/@std/internal/1.0.12/diff.d.ts.map +0 -1
  124. package/esm/deps/jsr.io/@std/internal/1.0.12/diff.js +0 -276
  125. package/esm/deps/jsr.io/@std/internal/1.0.12/diff_str.d.ts +0 -99
  126. package/esm/deps/jsr.io/@std/internal/1.0.12/diff_str.d.ts.map +0 -1
  127. package/esm/deps/jsr.io/@std/internal/1.0.12/diff_str.js +0 -182
  128. package/esm/deps/jsr.io/@std/internal/1.0.12/format.d.ts +0 -29
  129. package/esm/deps/jsr.io/@std/internal/1.0.12/format.d.ts.map +0 -1
  130. package/esm/deps/jsr.io/@std/internal/1.0.12/format.js +0 -70
  131. package/esm/deps/jsr.io/@std/internal/1.0.12/styles.d.ts +0 -159
  132. package/esm/deps/jsr.io/@std/internal/1.0.12/styles.d.ts.map +0 -1
  133. package/esm/deps/jsr.io/@std/internal/1.0.12/styles.js +0 -207
  134. package/esm/deps/jsr.io/@std/internal/1.0.12/types.d.ts +0 -25
  135. package/esm/deps/jsr.io/@std/internal/1.0.12/types.d.ts.map +0 -1
  136. package/esm/deps/jsr.io/@std/internal/1.0.12/types.js +0 -3
  137. package/esm/message-channel.d.ts.map +0 -1
  138. package/esm/mod.d.ts +0 -3
  139. package/esm/mod.d.ts.map +0 -1
  140. package/esm/package.json +0 -3
  141. package/esm/types.d.ts.map +0 -1
  142. package/esm/worker-main.d.ts.map +0 -1
  143. package/esm/worker.d.ts.map +0 -1
  144. package/script/_dnt.shims.d.ts +0 -2
  145. package/script/_dnt.shims.d.ts.map +0 -1
  146. package/script/_dnt.shims.js +0 -60
  147. package/script/deps/jsr.io/@std/assert/1.0.16/almost_equals.d.ts +0 -29
  148. package/script/deps/jsr.io/@std/assert/1.0.16/almost_equals.d.ts.map +0 -1
  149. package/script/deps/jsr.io/@std/assert/1.0.16/almost_equals.js +0 -49
  150. package/script/deps/jsr.io/@std/assert/1.0.16/array_includes.d.ts +0 -24
  151. package/script/deps/jsr.io/@std/assert/1.0.16/array_includes.d.ts.map +0 -1
  152. package/script/deps/jsr.io/@std/assert/1.0.16/array_includes.js +0 -49
  153. package/script/deps/jsr.io/@std/assert/1.0.16/assert.d.ts +0 -16
  154. package/script/deps/jsr.io/@std/assert/1.0.16/assert.d.ts.map +0 -1
  155. package/script/deps/jsr.io/@std/assert/1.0.16/assert.js +0 -25
  156. package/script/deps/jsr.io/@std/assert/1.0.16/assertion_error.d.ts +0 -26
  157. package/script/deps/jsr.io/@std/assert/1.0.16/assertion_error.d.ts.map +0 -1
  158. package/script/deps/jsr.io/@std/assert/1.0.16/assertion_error.js +0 -34
  159. package/script/deps/jsr.io/@std/assert/1.0.16/equal.d.ts +0 -17
  160. package/script/deps/jsr.io/@std/assert/1.0.16/equal.d.ts.map +0 -1
  161. package/script/deps/jsr.io/@std/assert/1.0.16/equal.js +0 -222
  162. package/script/deps/jsr.io/@std/assert/1.0.16/equals.d.ts +0 -35
  163. package/script/deps/jsr.io/@std/assert/1.0.16/equals.d.ts.map +0 -1
  164. package/script/deps/jsr.io/@std/assert/1.0.16/equals.js +0 -62
  165. package/script/deps/jsr.io/@std/assert/1.0.16/exists.d.ts +0 -18
  166. package/script/deps/jsr.io/@std/assert/1.0.16/exists.d.ts.map +0 -1
  167. package/script/deps/jsr.io/@std/assert/1.0.16/exists.js +0 -30
  168. package/script/deps/jsr.io/@std/assert/1.0.16/fail.d.ts +0 -15
  169. package/script/deps/jsr.io/@std/assert/1.0.16/fail.d.ts.map +0 -1
  170. package/script/deps/jsr.io/@std/assert/1.0.16/fail.js +0 -23
  171. package/script/deps/jsr.io/@std/assert/1.0.16/false.d.ts +0 -18
  172. package/script/deps/jsr.io/@std/assert/1.0.16/false.d.ts.map +0 -1
  173. package/script/deps/jsr.io/@std/assert/1.0.16/false.js +0 -25
  174. package/script/deps/jsr.io/@std/assert/1.0.16/greater.d.ts +0 -20
  175. package/script/deps/jsr.io/@std/assert/1.0.16/greater.d.ts.map +0 -1
  176. package/script/deps/jsr.io/@std/assert/1.0.16/greater.js +0 -32
  177. package/script/deps/jsr.io/@std/assert/1.0.16/greater_or_equal.d.ts +0 -20
  178. package/script/deps/jsr.io/@std/assert/1.0.16/greater_or_equal.d.ts.map +0 -1
  179. package/script/deps/jsr.io/@std/assert/1.0.16/greater_or_equal.js +0 -32
  180. package/script/deps/jsr.io/@std/assert/1.0.16/instance_of.d.ts +0 -23
  181. package/script/deps/jsr.io/@std/assert/1.0.16/instance_of.d.ts.map +0 -1
  182. package/script/deps/jsr.io/@std/assert/1.0.16/instance_of.js +0 -55
  183. package/script/deps/jsr.io/@std/assert/1.0.16/is_error.d.ts +0 -25
  184. package/script/deps/jsr.io/@std/assert/1.0.16/is_error.d.ts.map +0 -1
  185. package/script/deps/jsr.io/@std/assert/1.0.16/is_error.js +0 -56
  186. package/script/deps/jsr.io/@std/assert/1.0.16/less.d.ts +0 -19
  187. package/script/deps/jsr.io/@std/assert/1.0.16/less.d.ts.map +0 -1
  188. package/script/deps/jsr.io/@std/assert/1.0.16/less.js +0 -31
  189. package/script/deps/jsr.io/@std/assert/1.0.16/less_or_equal.d.ts +0 -20
  190. package/script/deps/jsr.io/@std/assert/1.0.16/less_or_equal.d.ts.map +0 -1
  191. package/script/deps/jsr.io/@std/assert/1.0.16/less_or_equal.js +0 -32
  192. package/script/deps/jsr.io/@std/assert/1.0.16/match.d.ts +0 -18
  193. package/script/deps/jsr.io/@std/assert/1.0.16/match.d.ts.map +0 -1
  194. package/script/deps/jsr.io/@std/assert/1.0.16/match.js +0 -29
  195. package/script/deps/jsr.io/@std/assert/1.0.16/mod.d.ts +0 -44
  196. package/script/deps/jsr.io/@std/assert/1.0.16/mod.d.ts.map +0 -1
  197. package/script/deps/jsr.io/@std/assert/1.0.16/mod.js +0 -61
  198. package/script/deps/jsr.io/@std/assert/1.0.16/not_equals.d.ts +0 -21
  199. package/script/deps/jsr.io/@std/assert/1.0.16/not_equals.d.ts.map +0 -1
  200. package/script/deps/jsr.io/@std/assert/1.0.16/not_equals.js +0 -36
  201. package/script/deps/jsr.io/@std/assert/1.0.16/not_instance_of.d.ts +0 -20
  202. package/script/deps/jsr.io/@std/assert/1.0.16/not_instance_of.d.ts.map +0 -1
  203. package/script/deps/jsr.io/@std/assert/1.0.16/not_instance_of.js +0 -32
  204. package/script/deps/jsr.io/@std/assert/1.0.16/not_match.d.ts +0 -18
  205. package/script/deps/jsr.io/@std/assert/1.0.16/not_match.d.ts.map +0 -1
  206. package/script/deps/jsr.io/@std/assert/1.0.16/not_match.js +0 -29
  207. package/script/deps/jsr.io/@std/assert/1.0.16/not_strict_equals.d.ts +0 -23
  208. package/script/deps/jsr.io/@std/assert/1.0.16/not_strict_equals.d.ts.map +0 -1
  209. package/script/deps/jsr.io/@std/assert/1.0.16/not_strict_equals.js +0 -35
  210. package/script/deps/jsr.io/@std/assert/1.0.16/object_match.d.ts +0 -29
  211. package/script/deps/jsr.io/@std/assert/1.0.16/object_match.d.ts.map +0 -1
  212. package/script/deps/jsr.io/@std/assert/1.0.16/object_match.js +0 -170
  213. package/script/deps/jsr.io/@std/assert/1.0.16/rejects.d.ts +0 -42
  214. package/script/deps/jsr.io/@std/assert/1.0.16/rejects.d.ts.map +0 -1
  215. package/script/deps/jsr.io/@std/assert/1.0.16/rejects.js +0 -56
  216. package/script/deps/jsr.io/@std/assert/1.0.16/strict_equals.d.ts +0 -24
  217. package/script/deps/jsr.io/@std/assert/1.0.16/strict_equals.d.ts.map +0 -1
  218. package/script/deps/jsr.io/@std/assert/1.0.16/strict_equals.js +0 -61
  219. package/script/deps/jsr.io/@std/assert/1.0.16/string_includes.d.ts +0 -18
  220. package/script/deps/jsr.io/@std/assert/1.0.16/string_includes.d.ts.map +0 -1
  221. package/script/deps/jsr.io/@std/assert/1.0.16/string_includes.js +0 -29
  222. package/script/deps/jsr.io/@std/assert/1.0.16/throws.d.ts +0 -45
  223. package/script/deps/jsr.io/@std/assert/1.0.16/throws.d.ts.map +0 -1
  224. package/script/deps/jsr.io/@std/assert/1.0.16/throws.js +0 -47
  225. package/script/deps/jsr.io/@std/assert/1.0.16/unimplemented.d.ts +0 -15
  226. package/script/deps/jsr.io/@std/assert/1.0.16/unimplemented.d.ts.map +0 -1
  227. package/script/deps/jsr.io/@std/assert/1.0.16/unimplemented.js +0 -23
  228. package/script/deps/jsr.io/@std/assert/1.0.16/unreachable.d.ts +0 -15
  229. package/script/deps/jsr.io/@std/assert/1.0.16/unreachable.d.ts.map +0 -1
  230. package/script/deps/jsr.io/@std/assert/1.0.16/unreachable.js +0 -23
  231. package/script/deps/jsr.io/@std/internal/1.0.12/build_message.d.ts +0 -80
  232. package/script/deps/jsr.io/@std/internal/1.0.12/build_message.d.ts.map +0 -1
  233. package/script/deps/jsr.io/@std/internal/1.0.12/build_message.js +0 -121
  234. package/script/deps/jsr.io/@std/internal/1.0.12/diff.d.ts +0 -140
  235. package/script/deps/jsr.io/@std/internal/1.0.12/diff.d.ts.map +0 -1
  236. package/script/deps/jsr.io/@std/internal/1.0.12/diff.js +0 -283
  237. package/script/deps/jsr.io/@std/internal/1.0.12/diff_str.d.ts +0 -99
  238. package/script/deps/jsr.io/@std/internal/1.0.12/diff_str.d.ts.map +0 -1
  239. package/script/deps/jsr.io/@std/internal/1.0.12/diff_str.js +0 -188
  240. package/script/deps/jsr.io/@std/internal/1.0.12/format.d.ts +0 -29
  241. package/script/deps/jsr.io/@std/internal/1.0.12/format.d.ts.map +0 -1
  242. package/script/deps/jsr.io/@std/internal/1.0.12/format.js +0 -106
  243. package/script/deps/jsr.io/@std/internal/1.0.12/styles.d.ts +0 -159
  244. package/script/deps/jsr.io/@std/internal/1.0.12/styles.d.ts.map +0 -1
  245. package/script/deps/jsr.io/@std/internal/1.0.12/styles.js +0 -252
  246. package/script/deps/jsr.io/@std/internal/1.0.12/types.d.ts +0 -25
  247. package/script/deps/jsr.io/@std/internal/1.0.12/types.d.ts.map +0 -1
  248. package/script/deps/jsr.io/@std/internal/1.0.12/types.js +0 -4
  249. package/script/message-channel.d.ts +0 -3
  250. package/script/message-channel.d.ts.map +0 -1
  251. package/script/message-channel.js +0 -16
  252. package/script/mod.d.ts +0 -3
  253. package/script/mod.d.ts.map +0 -1
  254. package/script/mod.js +0 -18
  255. package/script/package.json +0 -3
  256. package/script/types.d.ts +0 -33
  257. package/script/types.d.ts.map +0 -1
  258. package/script/types.js +0 -2
  259. package/script/worker-main.d.ts +0 -84
  260. package/script/worker-main.d.ts.map +0 -1
  261. package/script/worker-main.js +0 -190
  262. package/script/worker.d.ts +0 -63
  263. package/script/worker.d.ts.map +0 -1
  264. package/script/worker.js +0 -124
  265. /package/{esm → dist}/message-channel.d.ts +0 -0
  266. /package/{esm → dist}/message-channel.js +0 -0
  267. /package/{esm → dist}/types.d.ts +0 -0
  268. /package/{esm → dist}/types.js +0 -0
  269. /package/{esm → dist}/worker.d.ts +0 -0
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unimplemented = unimplemented;
4
- // Copyright 2018-2025 the Deno authors. MIT license.
5
- // This module is browser compatible.
6
- const assertion_error_js_1 = require("./assertion_error.js");
7
- /**
8
- * Use this to stub out methods that will throw when invoked.
9
- *
10
- * @example Usage
11
- * ```ts ignore
12
- * import { unimplemented } from "@std/assert";
13
- *
14
- * unimplemented(); // Throws
15
- * ```
16
- *
17
- * @param msg Optional message to include in the error.
18
- * @returns Never returns, always throws.
19
- */
20
- function unimplemented(msg) {
21
- const msgSuffix = msg ? `: ${msg}` : ".";
22
- throw new assertion_error_js_1.AssertionError(`Unimplemented${msgSuffix}`);
23
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Use this to assert unreachable code.
3
- *
4
- * @example Usage
5
- * ```ts ignore
6
- * import { unreachable } from "@std/assert";
7
- *
8
- * unreachable(); // Throws
9
- * ```
10
- *
11
- * @param msg Optional message to include in the error.
12
- * @returns Never returns, always throws.
13
- */
14
- export declare function unreachable(msg?: string): never;
15
- //# sourceMappingURL=unreachable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unreachable.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/assert/1.0.16/unreachable.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAG/C"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unreachable = unreachable;
4
- // Copyright 2018-2025 the Deno authors. MIT license.
5
- // This module is browser compatible.
6
- const assertion_error_js_1 = require("./assertion_error.js");
7
- /**
8
- * Use this to assert unreachable code.
9
- *
10
- * @example Usage
11
- * ```ts ignore
12
- * import { unreachable } from "@std/assert";
13
- *
14
- * unreachable(); // Throws
15
- * ```
16
- *
17
- * @param msg Optional message to include in the error.
18
- * @returns Never returns, always throws.
19
- */
20
- function unreachable(msg) {
21
- const msgSuffix = msg ? `: ${msg}` : ".";
22
- throw new assertion_error_js_1.AssertionError(`Unreachable${msgSuffix}`);
23
- }
@@ -1,80 +0,0 @@
1
- import type { DiffResult, DiffType } from "./types.js";
2
- /**
3
- * Colors the output of assertion diffs.
4
- *
5
- * @param diffType Difference type, either added or removed.
6
- * @param background If true, colors the background instead of the text.
7
- *
8
- * @returns A function that colors the input string.
9
- *
10
- * @example Usage
11
- * ```ts
12
- * import { createColor } from "@std/internal";
13
- * import { assertEquals } from "@std/assert";
14
- * import { bold, green, red, white } from "@std/fmt/colors";
15
- *
16
- * assertEquals(createColor("added")("foo"), green(bold("foo")));
17
- * assertEquals(createColor("removed")("foo"), red(bold("foo")));
18
- * assertEquals(createColor("common")("foo"), white("foo"));
19
- * ```
20
- */
21
- export declare function createColor(diffType: DiffType,
22
- /**
23
- * TODO(@littledivy): Remove this when we can detect true color terminals. See
24
- * https://github.com/denoland/std/issues/2575.
25
- */
26
- background?: boolean): (s: string) => string;
27
- /**
28
- * Prefixes `+` or `-` in diff output.
29
- *
30
- * @param diffType Difference type, either added or removed
31
- *
32
- * @returns A string representing the sign.
33
- *
34
- * @example Usage
35
- * ```ts
36
- * import { createSign } from "@std/internal";
37
- * import { assertEquals } from "@std/assert";
38
- *
39
- * assertEquals(createSign("added"), "+ ");
40
- * assertEquals(createSign("removed"), "- ");
41
- * assertEquals(createSign("common"), " ");
42
- * ```
43
- */
44
- export declare function createSign(diffType: DiffType): string;
45
- /** Options for {@linkcode buildMessage}. */
46
- export interface BuildMessageOptions {
47
- /**
48
- * Whether to output the diff as a single string.
49
- * @default {false}
50
- */
51
- stringDiff?: boolean;
52
- }
53
- /**
54
- * Builds a message based on the provided diff result.
55
- *
56
- * @param diffResult The diff result array.
57
- * @param options Optional parameters for customizing the message.
58
- * @param truncateDiff Function to truncate the diff (default is no truncation).
59
- *
60
- * @returns An array of strings representing the built message.
61
- *
62
- * @example Usage
63
- * ```ts no-assert
64
- * import { diffStr, buildMessage } from "@std/internal";
65
- *
66
- * diffStr("Hello, world!", "Hello, world");
67
- * // [
68
- * // "",
69
- * // "",
70
- * // " [Diff] Actual / Expected",
71
- * // "",
72
- * // "",
73
- * // "- Hello, world!",
74
- * // "+ Hello, world",
75
- * // "",
76
- * // ]
77
- * ```
78
- */
79
- export declare function buildMessage(diffResult: ReadonlyArray<DiffResult<string>>, options?: BuildMessageOptions, truncateDiff?: (diffResult: ReadonlyArray<DiffResult<string>>, stringDiff: boolean, contextLength?: number | null) => ReadonlyArray<DiffResult<string>>): string[];
80
- //# sourceMappingURL=build_message.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_message.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.12/build_message.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ;AAClB;;;GAGG;AACH,UAAU,UAAQ,GACjB,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAWvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CASrD;AAED,4CAA4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC7C,OAAO,GAAE,mBAAwB,EACjC,YAAY,CAAC,EAAE,CACb,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC7C,UAAU,EAAE,OAAO,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,KAC1B,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GACrC,MAAM,EAAE,CA8BV"}
@@ -1,121 +0,0 @@
1
- "use strict";
2
- // Copyright 2018-2025 the Deno authors. MIT license.
3
- // This module is browser compatible.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.createColor = createColor;
6
- exports.createSign = createSign;
7
- exports.buildMessage = buildMessage;
8
- const styles_js_1 = require("./styles.js");
9
- /**
10
- * Colors the output of assertion diffs.
11
- *
12
- * @param diffType Difference type, either added or removed.
13
- * @param background If true, colors the background instead of the text.
14
- *
15
- * @returns A function that colors the input string.
16
- *
17
- * @example Usage
18
- * ```ts
19
- * import { createColor } from "@std/internal";
20
- * import { assertEquals } from "@std/assert";
21
- * import { bold, green, red, white } from "@std/fmt/colors";
22
- *
23
- * assertEquals(createColor("added")("foo"), green(bold("foo")));
24
- * assertEquals(createColor("removed")("foo"), red(bold("foo")));
25
- * assertEquals(createColor("common")("foo"), white("foo"));
26
- * ```
27
- */
28
- function createColor(diffType,
29
- /**
30
- * TODO(@littledivy): Remove this when we can detect true color terminals. See
31
- * https://github.com/denoland/std/issues/2575.
32
- */
33
- background = false) {
34
- switch (diffType) {
35
- case "added":
36
- return (s) => background ? (0, styles_js_1.bgGreen)((0, styles_js_1.white)(s)) : (0, styles_js_1.green)((0, styles_js_1.bold)(s));
37
- case "removed":
38
- return (s) => background ? (0, styles_js_1.bgRed)((0, styles_js_1.white)(s)) : (0, styles_js_1.red)((0, styles_js_1.bold)(s));
39
- case "truncation":
40
- return styles_js_1.gray;
41
- default:
42
- return styles_js_1.white;
43
- }
44
- }
45
- /**
46
- * Prefixes `+` or `-` in diff output.
47
- *
48
- * @param diffType Difference type, either added or removed
49
- *
50
- * @returns A string representing the sign.
51
- *
52
- * @example Usage
53
- * ```ts
54
- * import { createSign } from "@std/internal";
55
- * import { assertEquals } from "@std/assert";
56
- *
57
- * assertEquals(createSign("added"), "+ ");
58
- * assertEquals(createSign("removed"), "- ");
59
- * assertEquals(createSign("common"), " ");
60
- * ```
61
- */
62
- function createSign(diffType) {
63
- switch (diffType) {
64
- case "added":
65
- return "+ ";
66
- case "removed":
67
- return "- ";
68
- default:
69
- return " ";
70
- }
71
- }
72
- /**
73
- * Builds a message based on the provided diff result.
74
- *
75
- * @param diffResult The diff result array.
76
- * @param options Optional parameters for customizing the message.
77
- * @param truncateDiff Function to truncate the diff (default is no truncation).
78
- *
79
- * @returns An array of strings representing the built message.
80
- *
81
- * @example Usage
82
- * ```ts no-assert
83
- * import { diffStr, buildMessage } from "@std/internal";
84
- *
85
- * diffStr("Hello, world!", "Hello, world");
86
- * // [
87
- * // "",
88
- * // "",
89
- * // " [Diff] Actual / Expected",
90
- * // "",
91
- * // "",
92
- * // "- Hello, world!",
93
- * // "+ Hello, world",
94
- * // "",
95
- * // ]
96
- * ```
97
- */
98
- function buildMessage(diffResult, options = {}, truncateDiff) {
99
- if (truncateDiff != null) {
100
- diffResult = truncateDiff(diffResult, options.stringDiff ?? false);
101
- }
102
- const { stringDiff = false } = options;
103
- const messages = [
104
- "",
105
- "",
106
- ` ${(0, styles_js_1.gray)((0, styles_js_1.bold)("[Diff]"))} ${(0, styles_js_1.red)((0, styles_js_1.bold)("Actual"))} / ${(0, styles_js_1.green)((0, styles_js_1.bold)("Expected"))}`,
107
- "",
108
- "",
109
- ];
110
- const diffMessages = diffResult.map((result) => {
111
- const color = createColor(result.type);
112
- const line = result.type === "added" || result.type === "removed"
113
- ? result.details?.map((detail) => detail.type !== "common"
114
- ? createColor(detail.type, true)(detail.value)
115
- : detail.value).join("") ?? result.value
116
- : result.value;
117
- return color(`${createSign(result.type)}${line}`);
118
- });
119
- messages.push(...(stringDiff ? [diffMessages.join("")] : diffMessages), "");
120
- return messages;
121
- }
@@ -1,140 +0,0 @@
1
- import type { DiffResult, DiffType } from "./types.js";
2
- /** Represents the farthest point in the diff algorithm. */
3
- export interface FarthestPoint {
4
- /** The y-coordinate of the point. */
5
- y: number;
6
- /** The id of the point. */
7
- id: number;
8
- }
9
- /**
10
- * Creates an array of common elements between two arrays.
11
- *
12
- * @typeParam T The type of elements in the arrays.
13
- *
14
- * @param A The first array.
15
- * @param B The second array.
16
- *
17
- * @returns An array containing the common elements between the two arrays.
18
- *
19
- * @example Usage
20
- * ```ts
21
- * import { createCommon } from "@std/internal/diff";
22
- * import { assertEquals } from "@std/assert";
23
- *
24
- * const a = [1, 2, 3];
25
- * const b = [1, 2, 4];
26
- *
27
- * assertEquals(createCommon(a, b), [1, 2]);
28
- * ```
29
- */
30
- export declare function createCommon<T>(A: T[], B: T[]): T[];
31
- /**
32
- * Asserts that the value is a {@linkcode FarthestPoint}.
33
- * If not, an error is thrown.
34
- *
35
- * @param value The value to check.
36
- *
37
- * @returns A void value that returns once the assertion completes.
38
- *
39
- * @example Usage
40
- * ```ts
41
- * import { assertFp } from "@std/internal/diff";
42
- * import { assertThrows } from "@std/assert";
43
- *
44
- * assertFp({ y: 0, id: 0 });
45
- * assertThrows(() => assertFp({ id: 0 }));
46
- * assertThrows(() => assertFp({ y: 0 }));
47
- * assertThrows(() => assertFp(undefined));
48
- * ```
49
- */
50
- export declare function assertFp(value: unknown): asserts value is FarthestPoint;
51
- /**
52
- * Creates an array of backtraced differences.
53
- *
54
- * @typeParam T The type of elements in the arrays.
55
- *
56
- * @param A The first array.
57
- * @param B The second array.
58
- * @param current The current {@linkcode FarthestPoint}.
59
- * @param swapped Boolean indicating if the arrays are swapped.
60
- * @param routes The routes array.
61
- * @param diffTypesPtrOffset The offset of the diff types in the routes array.
62
- *
63
- * @returns An array of backtraced differences.
64
- *
65
- * @example Usage
66
- * ```ts
67
- * import { backTrace } from "@std/internal/diff";
68
- * import { assertEquals } from "@std/assert";
69
- *
70
- * assertEquals(
71
- * backTrace([], [], { y: 0, id: 0 }, false, new Uint32Array(0), 0),
72
- * [],
73
- * );
74
- * ```
75
- */
76
- export declare function backTrace<T>(A: T[], B: T[], current: FarthestPoint, swapped: boolean, routes: Uint32Array, diffTypesPtrOffset: number): Array<{
77
- type: DiffType;
78
- value: T;
79
- }>;
80
- /**
81
- * Creates a {@linkcode FarthestPoint}.
82
- *
83
- * @param k The current index.
84
- * @param M The length of the first array.
85
- * @param routes The routes array.
86
- * @param diffTypesPtrOffset The offset of the diff types in the routes array.
87
- * @param ptr The current pointer.
88
- * @param slide The slide {@linkcode FarthestPoint}.
89
- * @param down The down {@linkcode FarthestPoint}.
90
- *
91
- * @returns A {@linkcode FarthestPoint}.
92
- *
93
- * @example Usage
94
- * ```ts
95
- * import { createFp } from "@std/internal/diff";
96
- * import { assertEquals } from "@std/assert";
97
- *
98
- * assertEquals(
99
- * createFp(
100
- * 0,
101
- * 0,
102
- * new Uint32Array(0),
103
- * 0,
104
- * 0,
105
- * { y: -1, id: 0 },
106
- * { y: 0, id: 0 },
107
- * ),
108
- * { y: -1, id: 1 },
109
- * );
110
- * ```
111
- */
112
- export declare function createFp(k: number, M: number, routes: Uint32Array, diffTypesPtrOffset: number, ptr: number, slide?: FarthestPoint, down?: FarthestPoint): FarthestPoint;
113
- /**
114
- * Renders the differences between the actual and expected values.
115
- *
116
- * @typeParam T The type of elements in the arrays.
117
- *
118
- * @param A Actual value
119
- * @param B Expected value
120
- *
121
- * @returns An array of differences between the actual and expected values.
122
- *
123
- * @example Usage
124
- * ```ts
125
- * import { diff } from "@std/internal/diff";
126
- * import { assertEquals } from "@std/assert";
127
- *
128
- * const a = [1, 2, 3];
129
- * const b = [1, 2, 4];
130
- *
131
- * assertEquals(diff(a, b), [
132
- * { type: "common", value: 1 },
133
- * { type: "common", value: 2 },
134
- * { type: "removed", value: 3 },
135
- * { type: "added", value: 4 },
136
- * ]);
137
- * ```
138
- */
139
- export declare function diff<T>(A: T[], B: T[]): DiffResult<T>[];
140
- //# sourceMappingURL=diff.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.12/diff.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;CACZ;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAanD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAWvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,CAAC,EAAE,CAAC,EAAE,EACN,CAAC,EAAE,CAAC,EAAE,EACN,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,kBAAkB,EAAE,MAAM,GACzB,KAAK,CAAC;IACP,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,CAAC,CAAC;CACV,CAAC,CAgCD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,WAAW,EACnB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,aAAa,GACnB,aAAa,CAsBf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAwEvD"}
@@ -1,283 +0,0 @@
1
- "use strict";
2
- // Copyright 2018-2025 the Deno authors. MIT license.
3
- // This module is browser compatible.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.createCommon = createCommon;
6
- exports.assertFp = assertFp;
7
- exports.backTrace = backTrace;
8
- exports.createFp = createFp;
9
- exports.diff = diff;
10
- const REMOVED = 1;
11
- const COMMON = 2;
12
- const ADDED = 3;
13
- /**
14
- * Creates an array of common elements between two arrays.
15
- *
16
- * @typeParam T The type of elements in the arrays.
17
- *
18
- * @param A The first array.
19
- * @param B The second array.
20
- *
21
- * @returns An array containing the common elements between the two arrays.
22
- *
23
- * @example Usage
24
- * ```ts
25
- * import { createCommon } from "@std/internal/diff";
26
- * import { assertEquals } from "@std/assert";
27
- *
28
- * const a = [1, 2, 3];
29
- * const b = [1, 2, 4];
30
- *
31
- * assertEquals(createCommon(a, b), [1, 2]);
32
- * ```
33
- */
34
- function createCommon(A, B) {
35
- const common = [];
36
- if (A.length === 0 || B.length === 0)
37
- return [];
38
- for (let i = 0; i < Math.min(A.length, B.length); i += 1) {
39
- const a = A[i];
40
- const b = B[i];
41
- if (a !== undefined && a === b) {
42
- common.push(a);
43
- }
44
- else {
45
- return common;
46
- }
47
- }
48
- return common;
49
- }
50
- /**
51
- * Asserts that the value is a {@linkcode FarthestPoint}.
52
- * If not, an error is thrown.
53
- *
54
- * @param value The value to check.
55
- *
56
- * @returns A void value that returns once the assertion completes.
57
- *
58
- * @example Usage
59
- * ```ts
60
- * import { assertFp } from "@std/internal/diff";
61
- * import { assertThrows } from "@std/assert";
62
- *
63
- * assertFp({ y: 0, id: 0 });
64
- * assertThrows(() => assertFp({ id: 0 }));
65
- * assertThrows(() => assertFp({ y: 0 }));
66
- * assertThrows(() => assertFp(undefined));
67
- * ```
68
- */
69
- function assertFp(value) {
70
- if (value == null ||
71
- typeof value !== "object" ||
72
- typeof value?.y !== "number" ||
73
- typeof value?.id !== "number") {
74
- throw new Error(`Unexpected value, expected 'FarthestPoint': received ${typeof value}`);
75
- }
76
- }
77
- /**
78
- * Creates an array of backtraced differences.
79
- *
80
- * @typeParam T The type of elements in the arrays.
81
- *
82
- * @param A The first array.
83
- * @param B The second array.
84
- * @param current The current {@linkcode FarthestPoint}.
85
- * @param swapped Boolean indicating if the arrays are swapped.
86
- * @param routes The routes array.
87
- * @param diffTypesPtrOffset The offset of the diff types in the routes array.
88
- *
89
- * @returns An array of backtraced differences.
90
- *
91
- * @example Usage
92
- * ```ts
93
- * import { backTrace } from "@std/internal/diff";
94
- * import { assertEquals } from "@std/assert";
95
- *
96
- * assertEquals(
97
- * backTrace([], [], { y: 0, id: 0 }, false, new Uint32Array(0), 0),
98
- * [],
99
- * );
100
- * ```
101
- */
102
- function backTrace(A, B, current, swapped, routes, diffTypesPtrOffset) {
103
- const M = A.length;
104
- const N = B.length;
105
- const result = [];
106
- let a = M - 1;
107
- let b = N - 1;
108
- let j = routes[current.id];
109
- let type = routes[current.id + diffTypesPtrOffset];
110
- while (true) {
111
- if (!j && !type)
112
- break;
113
- const prev = j;
114
- if (type === REMOVED) {
115
- result.unshift({
116
- type: swapped ? "removed" : "added",
117
- value: B[b],
118
- });
119
- b -= 1;
120
- }
121
- else if (type === ADDED) {
122
- result.unshift({
123
- type: swapped ? "added" : "removed",
124
- value: A[a],
125
- });
126
- a -= 1;
127
- }
128
- else {
129
- result.unshift({ type: "common", value: A[a] });
130
- a -= 1;
131
- b -= 1;
132
- }
133
- j = routes[prev];
134
- type = routes[prev + diffTypesPtrOffset];
135
- }
136
- return result;
137
- }
138
- /**
139
- * Creates a {@linkcode FarthestPoint}.
140
- *
141
- * @param k The current index.
142
- * @param M The length of the first array.
143
- * @param routes The routes array.
144
- * @param diffTypesPtrOffset The offset of the diff types in the routes array.
145
- * @param ptr The current pointer.
146
- * @param slide The slide {@linkcode FarthestPoint}.
147
- * @param down The down {@linkcode FarthestPoint}.
148
- *
149
- * @returns A {@linkcode FarthestPoint}.
150
- *
151
- * @example Usage
152
- * ```ts
153
- * import { createFp } from "@std/internal/diff";
154
- * import { assertEquals } from "@std/assert";
155
- *
156
- * assertEquals(
157
- * createFp(
158
- * 0,
159
- * 0,
160
- * new Uint32Array(0),
161
- * 0,
162
- * 0,
163
- * { y: -1, id: 0 },
164
- * { y: 0, id: 0 },
165
- * ),
166
- * { y: -1, id: 1 },
167
- * );
168
- * ```
169
- */
170
- function createFp(k, M, routes, diffTypesPtrOffset, ptr, slide, down) {
171
- if (slide && slide.y === -1 && down && down.y === -1) {
172
- return { y: 0, id: 0 };
173
- }
174
- const isAdding = (down?.y === -1) ||
175
- k === M ||
176
- (slide?.y ?? 0) > (down?.y ?? 0) + 1;
177
- if (slide && isAdding) {
178
- const prev = slide.id;
179
- ptr++;
180
- routes[ptr] = prev;
181
- routes[ptr + diffTypesPtrOffset] = ADDED;
182
- return { y: slide.y, id: ptr };
183
- }
184
- if (down && !isAdding) {
185
- const prev = down.id;
186
- ptr++;
187
- routes[ptr] = prev;
188
- routes[ptr + diffTypesPtrOffset] = REMOVED;
189
- return { y: down.y + 1, id: ptr };
190
- }
191
- throw new Error("Unexpected missing FarthestPoint");
192
- }
193
- /**
194
- * Renders the differences between the actual and expected values.
195
- *
196
- * @typeParam T The type of elements in the arrays.
197
- *
198
- * @param A Actual value
199
- * @param B Expected value
200
- *
201
- * @returns An array of differences between the actual and expected values.
202
- *
203
- * @example Usage
204
- * ```ts
205
- * import { diff } from "@std/internal/diff";
206
- * import { assertEquals } from "@std/assert";
207
- *
208
- * const a = [1, 2, 3];
209
- * const b = [1, 2, 4];
210
- *
211
- * assertEquals(diff(a, b), [
212
- * { type: "common", value: 1 },
213
- * { type: "common", value: 2 },
214
- * { type: "removed", value: 3 },
215
- * { type: "added", value: 4 },
216
- * ]);
217
- * ```
218
- */
219
- function diff(A, B) {
220
- const prefixCommon = createCommon(A, B);
221
- A = A.slice(prefixCommon.length);
222
- B = B.slice(prefixCommon.length);
223
- const swapped = B.length > A.length;
224
- [A, B] = swapped ? [B, A] : [A, B];
225
- const M = A.length;
226
- const N = B.length;
227
- if (!M && !N && !prefixCommon.length)
228
- return [];
229
- if (!N) {
230
- return [
231
- ...prefixCommon.map((value) => ({ type: "common", value })),
232
- ...A.map((value) => ({ type: swapped ? "added" : "removed", value })),
233
- ];
234
- }
235
- const offset = N;
236
- const delta = M - N;
237
- const length = M + N + 1;
238
- const fp = Array.from({ length }, () => ({ y: -1, id: -1 }));
239
- /**
240
- * Note: this buffer is used to save memory and improve performance. The first
241
- * half is used to save route and the last half is used to save diff type.
242
- */
243
- const routes = new Uint32Array((M * N + length + 1) * 2);
244
- const diffTypesPtrOffset = routes.length / 2;
245
- let ptr = 0;
246
- function snake(k, A, B, slide, down) {
247
- const M = A.length;
248
- const N = B.length;
249
- const fp = createFp(k, M, routes, diffTypesPtrOffset, ptr, slide, down);
250
- ptr = fp.id;
251
- while (fp.y + k < M && fp.y < N && A[fp.y + k] === B[fp.y]) {
252
- const prev = fp.id;
253
- ptr++;
254
- fp.id = ptr;
255
- fp.y += 1;
256
- routes[ptr] = prev;
257
- routes[ptr + diffTypesPtrOffset] = COMMON;
258
- }
259
- return fp;
260
- }
261
- let currentFp = fp[delta + offset];
262
- assertFp(currentFp);
263
- let p = -1;
264
- while (currentFp.y < N) {
265
- p = p + 1;
266
- for (let k = -p; k < delta; ++k) {
267
- const index = k + offset;
268
- fp[index] = snake(k, A, B, fp[index - 1], fp[index + 1]);
269
- }
270
- for (let k = delta + p; k > delta; --k) {
271
- const index = k + offset;
272
- fp[index] = snake(k, A, B, fp[index - 1], fp[index + 1]);
273
- }
274
- const index = delta + offset;
275
- fp[delta + offset] = snake(delta, A, B, fp[index - 1], fp[index + 1]);
276
- currentFp = fp[delta + offset];
277
- assertFp(currentFp);
278
- }
279
- return [
280
- ...prefixCommon.map((value) => ({ type: "common", value })),
281
- ...backTrace(A, B, currentFp, swapped, routes, diffTypesPtrOffset),
282
- ];
283
- }