goscript 0.0.34 → 0.0.36

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 (358) hide show
  1. package/compiler/analysis.go +28 -20
  2. package/compiler/analysis_test.go +14 -0
  3. package/compiler/assignment.go +19 -7
  4. package/compiler/compiler.go +15 -99
  5. package/compiler/composite-lit.go +60 -17
  6. package/compiler/decl.go +1 -1
  7. package/compiler/expr-call.go +233 -35
  8. package/compiler/expr-selector.go +28 -2
  9. package/compiler/expr.go +13 -37
  10. package/compiler/lit.go +111 -2
  11. package/compiler/primitive.go +6 -6
  12. package/compiler/protobuf.go +0 -5
  13. package/compiler/sanitize.go +101 -0
  14. package/compiler/spec-struct.go +41 -8
  15. package/compiler/spec-value.go +29 -18
  16. package/compiler/stmt-assign.go +22 -1
  17. package/compiler/stmt.go +26 -9
  18. package/compiler/type.go +3 -3
  19. package/dist/gs/builtin/builtin.d.ts +3 -2
  20. package/dist/gs/builtin/builtin.js +2 -1
  21. package/dist/gs/builtin/builtin.js.map +1 -1
  22. package/dist/gs/builtin/map.js.map +1 -1
  23. package/dist/gs/builtin/slice.d.ts +7 -1
  24. package/dist/gs/builtin/slice.js +112 -22
  25. package/dist/gs/builtin/slice.js.map +1 -1
  26. package/dist/gs/github.com/pkg/errors/errors.d.ts +13 -0
  27. package/dist/gs/github.com/pkg/errors/errors.js +232 -0
  28. package/dist/gs/github.com/pkg/errors/errors.js.map +1 -0
  29. package/dist/gs/github.com/pkg/errors/go113.d.ts +4 -0
  30. package/dist/gs/github.com/pkg/errors/go113.js +34 -0
  31. package/dist/gs/github.com/pkg/errors/go113.js.map +1 -0
  32. package/dist/gs/github.com/pkg/errors/index.d.ts +3 -0
  33. package/dist/gs/github.com/pkg/errors/index.js +4 -0
  34. package/dist/gs/github.com/pkg/errors/index.js.map +1 -0
  35. package/dist/gs/github.com/pkg/errors/stack.d.ts +32 -0
  36. package/dist/gs/github.com/pkg/errors/stack.js +111 -0
  37. package/dist/gs/github.com/pkg/errors/stack.js.map +1 -0
  38. package/dist/gs/maps/index.d.ts +2 -2
  39. package/dist/gs/maps/index.js +2 -2
  40. package/dist/gs/maps/index.js.map +1 -1
  41. package/dist/gs/maps/iter.d.ts +7 -0
  42. package/dist/gs/maps/iter.js +57 -0
  43. package/dist/gs/maps/iter.js.map +1 -0
  44. package/dist/gs/maps/maps.d.ts +7 -0
  45. package/dist/gs/maps/maps.js +67 -0
  46. package/dist/gs/maps/maps.js.map +1 -0
  47. package/dist/gs/math/abs.gs.d.ts +1 -0
  48. package/dist/gs/math/abs.gs.js +10 -0
  49. package/dist/gs/math/abs.gs.js.map +1 -0
  50. package/dist/gs/math/acosh.gs.d.ts +2 -0
  51. package/dist/gs/math/acosh.gs.js +14 -0
  52. package/dist/gs/math/acosh.gs.js.map +1 -0
  53. package/dist/gs/math/asin.gs.d.ts +4 -0
  54. package/dist/gs/math/asin.gs.js +24 -0
  55. package/dist/gs/math/asin.gs.js.map +1 -0
  56. package/dist/gs/math/asinh.gs.d.ts +2 -0
  57. package/dist/gs/math/asinh.gs.js +14 -0
  58. package/dist/gs/math/asinh.gs.js.map +1 -0
  59. package/dist/gs/math/atan.gs.d.ts +4 -0
  60. package/dist/gs/math/atan.gs.js +22 -0
  61. package/dist/gs/math/atan.gs.js.map +1 -0
  62. package/dist/gs/math/atan2.gs.d.ts +2 -0
  63. package/dist/gs/math/atan2.gs.js +30 -0
  64. package/dist/gs/math/atan2.gs.js.map +1 -0
  65. package/dist/gs/math/atanh.gs.d.ts +2 -0
  66. package/dist/gs/math/atanh.gs.js +16 -0
  67. package/dist/gs/math/atanh.gs.js.map +1 -0
  68. package/dist/gs/math/bits.gs.d.ts +5 -0
  69. package/dist/gs/math/bits.gs.js +46 -0
  70. package/dist/gs/math/bits.gs.js.map +1 -0
  71. package/dist/gs/math/cbrt.gs.d.ts +2 -0
  72. package/dist/gs/math/cbrt.gs.js +14 -0
  73. package/dist/gs/math/cbrt.gs.js.map +1 -0
  74. package/dist/gs/math/const.gs.d.ts +30 -0
  75. package/dist/gs/math/const.gs.js +61 -0
  76. package/dist/gs/math/const.gs.js.map +1 -0
  77. package/dist/gs/math/copysign.gs.d.ts +1 -0
  78. package/dist/gs/math/copysign.gs.js +20 -0
  79. package/dist/gs/math/copysign.gs.js.map +1 -0
  80. package/dist/gs/math/dim.gs.d.ts +5 -0
  81. package/dist/gs/math/dim.gs.js +69 -0
  82. package/dist/gs/math/dim.gs.js.map +1 -0
  83. package/dist/gs/math/erf.gs.d.ts +4 -0
  84. package/dist/gs/math/erf.gs.js +336 -0
  85. package/dist/gs/math/erf.gs.js.map +1 -0
  86. package/dist/gs/math/erfinv.gs.d.ts +2 -0
  87. package/dist/gs/math/erfinv.gs.js +118 -0
  88. package/dist/gs/math/erfinv.gs.js.map +1 -0
  89. package/dist/gs/math/exp.gs.d.ts +5 -0
  90. package/dist/gs/math/exp.gs.js +30 -0
  91. package/dist/gs/math/exp.gs.js.map +1 -0
  92. package/dist/gs/math/expm1.gs.d.ts +2 -0
  93. package/dist/gs/math/expm1.gs.js +17 -0
  94. package/dist/gs/math/expm1.gs.js.map +1 -0
  95. package/dist/gs/math/floor.gs.d.ts +8 -0
  96. package/dist/gs/math/floor.gs.js +75 -0
  97. package/dist/gs/math/floor.gs.js.map +1 -0
  98. package/dist/gs/math/fma.gs.d.ts +1 -0
  99. package/dist/gs/math/fma.gs.js +8 -0
  100. package/dist/gs/math/fma.gs.js.map +1 -0
  101. package/dist/gs/math/frexp.gs.d.ts +2 -0
  102. package/dist/gs/math/frexp.gs.js +28 -0
  103. package/dist/gs/math/frexp.gs.js.map +1 -0
  104. package/dist/gs/math/gamma.gs.d.ts +3 -0
  105. package/dist/gs/math/gamma.gs.js +149 -0
  106. package/dist/gs/math/gamma.gs.js.map +1 -0
  107. package/dist/gs/math/hypot.gs.d.ts +2 -0
  108. package/dist/gs/math/hypot.gs.js +16 -0
  109. package/dist/gs/math/hypot.gs.js.map +1 -0
  110. package/dist/gs/math/index.d.ts +44 -0
  111. package/dist/gs/math/index.js +45 -0
  112. package/dist/gs/math/index.js.map +1 -0
  113. package/dist/gs/math/j0.gs.d.ts +4 -0
  114. package/dist/gs/math/j0.gs.js +228 -0
  115. package/dist/gs/math/j0.gs.js.map +1 -0
  116. package/dist/gs/math/j1.gs.d.ts +4 -0
  117. package/dist/gs/math/j1.gs.js +211 -0
  118. package/dist/gs/math/j1.gs.js.map +1 -0
  119. package/dist/gs/math/jn.gs.d.ts +2 -0
  120. package/dist/gs/math/jn.gs.js +412 -0
  121. package/dist/gs/math/jn.gs.js.map +1 -0
  122. package/dist/gs/math/ldexp.gs.d.ts +2 -0
  123. package/dist/gs/math/ldexp.gs.js +20 -0
  124. package/dist/gs/math/ldexp.gs.js.map +1 -0
  125. package/dist/gs/math/lgamma.gs.d.ts +2 -0
  126. package/dist/gs/math/lgamma.gs.js +243 -0
  127. package/dist/gs/math/lgamma.gs.js.map +1 -0
  128. package/dist/gs/math/log.gs.d.ts +2 -0
  129. package/dist/gs/math/log.gs.js +16 -0
  130. package/dist/gs/math/log.gs.js.map +1 -0
  131. package/dist/gs/math/log10.gs.d.ts +4 -0
  132. package/dist/gs/math/log10.gs.js +17 -0
  133. package/dist/gs/math/log10.gs.js.map +1 -0
  134. package/dist/gs/math/log1p.gs.d.ts +2 -0
  135. package/dist/gs/math/log1p.gs.js +17 -0
  136. package/dist/gs/math/log1p.gs.js.map +1 -0
  137. package/dist/gs/math/logb.gs.d.ts +3 -0
  138. package/dist/gs/math/logb.gs.js +43 -0
  139. package/dist/gs/math/logb.gs.js.map +1 -0
  140. package/dist/gs/math/mod.gs.d.ts +2 -0
  141. package/dist/gs/math/mod.gs.js +26 -0
  142. package/dist/gs/math/mod.gs.js.map +1 -0
  143. package/dist/gs/math/modf.gs.d.ts +2 -0
  144. package/dist/gs/math/modf.gs.js +24 -0
  145. package/dist/gs/math/modf.gs.js.map +1 -0
  146. package/dist/gs/math/nextafter.gs.d.ts +2 -0
  147. package/dist/gs/math/nextafter.gs.js +66 -0
  148. package/dist/gs/math/nextafter.gs.js.map +1 -0
  149. package/dist/gs/math/pow.gs.d.ts +3 -0
  150. package/dist/gs/math/pow.gs.js +40 -0
  151. package/dist/gs/math/pow.gs.js.map +1 -0
  152. package/dist/gs/math/pow10.gs.d.ts +1 -0
  153. package/dist/gs/math/pow10.gs.js +14 -0
  154. package/dist/gs/math/pow10.gs.js.map +1 -0
  155. package/dist/gs/math/remainder.gs.d.ts +2 -0
  156. package/dist/gs/math/remainder.gs.js +25 -0
  157. package/dist/gs/math/remainder.gs.js.map +1 -0
  158. package/dist/gs/math/signbit.gs.d.ts +1 -0
  159. package/dist/gs/math/signbit.gs.js +5 -0
  160. package/dist/gs/math/signbit.gs.js.map +1 -0
  161. package/dist/gs/math/sin.gs.d.ts +4 -0
  162. package/dist/gs/math/sin.gs.js +29 -0
  163. package/dist/gs/math/sin.gs.js.map +1 -0
  164. package/dist/gs/math/sincos.gs.d.ts +1 -0
  165. package/dist/gs/math/sincos.gs.js +11 -0
  166. package/dist/gs/math/sincos.gs.js.map +1 -0
  167. package/dist/gs/math/sinh.gs.d.ts +4 -0
  168. package/dist/gs/math/sinh.gs.js +27 -0
  169. package/dist/gs/math/sinh.gs.js.map +1 -0
  170. package/dist/gs/math/sqrt.gs.d.ts +2 -0
  171. package/dist/gs/math/sqrt.gs.js +15 -0
  172. package/dist/gs/math/sqrt.gs.js.map +1 -0
  173. package/dist/gs/math/tan.gs.d.ts +2 -0
  174. package/dist/gs/math/tan.gs.js +17 -0
  175. package/dist/gs/math/tan.gs.js.map +1 -0
  176. package/dist/gs/math/tanh.gs.d.ts +2 -0
  177. package/dist/gs/math/tanh.gs.js +17 -0
  178. package/dist/gs/math/tanh.gs.js.map +1 -0
  179. package/dist/gs/math/trig_reduce.gs.d.ts +1 -0
  180. package/dist/gs/math/trig_reduce.gs.js +62 -0
  181. package/dist/gs/math/trig_reduce.gs.js.map +1 -0
  182. package/dist/gs/math/unsafe.gs.d.ts +4 -0
  183. package/dist/gs/math/unsafe.gs.js +47 -0
  184. package/dist/gs/math/unsafe.gs.js.map +1 -0
  185. package/dist/gs/strconv/atob.gs.d.ts +4 -0
  186. package/dist/gs/strconv/atob.gs.js +42 -0
  187. package/dist/gs/strconv/atob.gs.js.map +1 -0
  188. package/dist/gs/strconv/atof.gs.d.ts +2 -0
  189. package/dist/gs/strconv/atof.gs.js +51 -0
  190. package/dist/gs/strconv/atof.gs.js.map +1 -0
  191. package/dist/gs/strconv/atoi.gs.d.ts +33 -0
  192. package/dist/gs/strconv/atoi.gs.js +200 -0
  193. package/dist/gs/strconv/atoi.gs.js.map +1 -0
  194. package/dist/gs/strconv/doc.gs.d.ts +1 -0
  195. package/dist/gs/strconv/doc.gs.js +2 -0
  196. package/dist/gs/strconv/doc.gs.js.map +1 -0
  197. package/dist/gs/strconv/ftoa.gs.d.ts +3 -0
  198. package/dist/gs/strconv/ftoa.gs.js +58 -0
  199. package/dist/gs/strconv/ftoa.gs.js.map +1 -0
  200. package/dist/gs/strconv/index.d.ts +6 -0
  201. package/dist/gs/strconv/index.js +7 -0
  202. package/dist/gs/strconv/index.js.map +1 -0
  203. package/dist/gs/strconv/itoa.gs.d.ts +6 -0
  204. package/dist/gs/strconv/itoa.gs.js +37 -0
  205. package/dist/gs/strconv/itoa.gs.js.map +1 -0
  206. package/dist/gs/strconv/quote.gs.d.ts +19 -0
  207. package/dist/gs/strconv/quote.gs.js +217 -0
  208. package/dist/gs/strconv/quote.gs.js.map +1 -0
  209. package/dist/gs/strings/index.d.ts +3 -0
  210. package/dist/gs/strings/index.js +4 -0
  211. package/dist/gs/strings/index.js.map +1 -1
  212. package/dist/gs/strings/replace.d.ts +0 -74
  213. package/dist/gs/strings/replace.js +6 -204
  214. package/dist/gs/strings/replace.js.map +1 -1
  215. package/dist/gs/strings/search.d.ts +0 -1
  216. package/dist/gs/strings/search.js +0 -21
  217. package/dist/gs/strings/search.js.map +1 -1
  218. package/dist/gs/sync/atomic/doc.gs.d.ts +28 -0
  219. package/dist/gs/sync/atomic/doc.gs.js +265 -0
  220. package/dist/gs/sync/atomic/doc.gs.js.map +1 -0
  221. package/dist/gs/sync/atomic/doc_64.gs.d.ts +15 -0
  222. package/dist/gs/sync/atomic/doc_64.gs.js +165 -0
  223. package/dist/gs/sync/atomic/doc_64.gs.js.map +1 -0
  224. package/dist/gs/sync/atomic/index.d.ts +4 -0
  225. package/dist/gs/sync/atomic/index.js +5 -0
  226. package/dist/gs/sync/atomic/index.js.map +1 -0
  227. package/dist/gs/sync/atomic/type.gs.d.ts +130 -0
  228. package/dist/gs/sync/atomic/type.gs.js +433 -0
  229. package/dist/gs/sync/atomic/type.gs.js.map +1 -0
  230. package/dist/gs/sync/atomic/value.gs.d.ts +19 -0
  231. package/dist/gs/sync/atomic/value.gs.js +116 -0
  232. package/dist/gs/sync/atomic/value.gs.js.map +1 -0
  233. package/dist/gs/unsafe/unsafe.d.ts +1 -0
  234. package/dist/gs/unsafe/unsafe.js +5 -0
  235. package/dist/gs/unsafe/unsafe.js.map +1 -1
  236. package/gs/builtin/builtin.ts +9 -7
  237. package/gs/builtin/map.ts +5 -1
  238. package/gs/builtin/slice.ts +152 -24
  239. package/gs/github.com/pkg/errors/errors.ts +307 -0
  240. package/gs/github.com/pkg/errors/go113.ts +39 -0
  241. package/gs/github.com/pkg/errors/index.ts +3 -0
  242. package/gs/github.com/pkg/errors/stack.ts +127 -0
  243. package/gs/maps/index.ts +2 -2
  244. package/gs/maps/iter.ts +67 -0
  245. package/gs/maps/maps.ts +89 -0
  246. package/gs/math/TODO.md +156 -0
  247. package/gs/math/abs.gs.test.ts +29 -0
  248. package/gs/math/abs.gs.ts +13 -0
  249. package/gs/math/acosh.gs.test.ts +39 -0
  250. package/gs/math/acosh.gs.ts +21 -0
  251. package/gs/math/asin.gs.test.ts +66 -0
  252. package/gs/math/asin.gs.ts +27 -0
  253. package/gs/math/asinh.gs.test.ts +37 -0
  254. package/gs/math/asinh.gs.ts +21 -0
  255. package/gs/math/atan.gs.test.ts +49 -0
  256. package/gs/math/atan.gs.ts +27 -0
  257. package/gs/math/atan2.gs.test.ts +55 -0
  258. package/gs/math/atan2.gs.ts +37 -0
  259. package/gs/math/atanh.gs.test.ts +47 -0
  260. package/gs/math/atanh.gs.ts +21 -0
  261. package/gs/math/bits.gs.test.ts +88 -0
  262. package/gs/math/bits.gs.ts +61 -0
  263. package/gs/math/cbrt.gs.test.ts +57 -0
  264. package/gs/math/cbrt.gs.ts +20 -0
  265. package/gs/math/const.gs.test.ts +54 -0
  266. package/gs/math/const.gs.ts +93 -0
  267. package/gs/math/copysign.gs.test.ts +44 -0
  268. package/gs/math/copysign.gs.ts +27 -0
  269. package/gs/math/dim.gs.test.ts +102 -0
  270. package/gs/math/dim.gs.ts +84 -0
  271. package/gs/math/erf.gs.test.ts +92 -0
  272. package/gs/math/erf.gs.ts +409 -0
  273. package/gs/math/erfinv.gs.test.ts +104 -0
  274. package/gs/math/erfinv.gs.ts +169 -0
  275. package/gs/math/exp.gs.test.ts +82 -0
  276. package/gs/math/exp.gs.ts +39 -0
  277. package/gs/math/expm1.gs.test.ts +48 -0
  278. package/gs/math/expm1.gs.ts +23 -0
  279. package/gs/math/floor.gs.test.ts +146 -0
  280. package/gs/math/floor.gs.ts +88 -0
  281. package/gs/math/fma.gs.test.ts +83 -0
  282. package/gs/math/fma.gs.ts +7 -0
  283. package/gs/math/frexp.gs.test.ts +146 -0
  284. package/gs/math/frexp.gs.ts +37 -0
  285. package/gs/math/gamma.gs.test.ts +66 -0
  286. package/gs/math/gamma.gs.ts +158 -0
  287. package/gs/math/hypot.gs.test.ts +73 -0
  288. package/gs/math/hypot.gs.ts +23 -0
  289. package/gs/math/index.ts +44 -0
  290. package/gs/math/j0.gs.test.ts +74 -0
  291. package/gs/math/j0.gs.ts +257 -0
  292. package/gs/math/j1.gs.test.ts +81 -0
  293. package/gs/math/j1.gs.ts +231 -0
  294. package/gs/math/jn.gs.test.ts +133 -0
  295. package/gs/math/jn.gs.ts +447 -0
  296. package/gs/math/ldexp.gs.test.ts +128 -0
  297. package/gs/math/ldexp.gs.ts +28 -0
  298. package/gs/math/lgamma.gs.test.ts +102 -0
  299. package/gs/math/lgamma.gs.ts +251 -0
  300. package/gs/math/log.gs.test.ts +40 -0
  301. package/gs/math/log.gs.ts +21 -0
  302. package/gs/math/log10.gs.test.ts +80 -0
  303. package/gs/math/log10.gs.ts +25 -0
  304. package/gs/math/log1p.gs.test.ts +55 -0
  305. package/gs/math/log1p.gs.ts +24 -0
  306. package/gs/math/logb.gs.test.ts +87 -0
  307. package/gs/math/logb.gs.ts +54 -0
  308. package/gs/math/mod.gs.test.ts +64 -0
  309. package/gs/math/mod.gs.ts +36 -0
  310. package/gs/math/modf.gs.test.ts +80 -0
  311. package/gs/math/modf.gs.ts +32 -0
  312. package/gs/math/nextafter.gs.test.ts +107 -0
  313. package/gs/math/nextafter.gs.ts +71 -0
  314. package/gs/math/pow.gs.test.ts +103 -0
  315. package/gs/math/pow.gs.ts +55 -0
  316. package/gs/math/pow10.gs.test.ts +58 -0
  317. package/gs/math/pow10.gs.ts +19 -0
  318. package/gs/math/remainder.gs.test.ts +70 -0
  319. package/gs/math/remainder.gs.ts +33 -0
  320. package/gs/math/signbit.gs.test.ts +33 -0
  321. package/gs/math/signbit.gs.ts +8 -0
  322. package/gs/math/sin.gs.test.ts +83 -0
  323. package/gs/math/sin.gs.ts +38 -0
  324. package/gs/math/sincos.gs.test.ts +91 -0
  325. package/gs/math/sincos.gs.ts +15 -0
  326. package/gs/math/sinh.gs.test.ts +66 -0
  327. package/gs/math/sinh.gs.ts +34 -0
  328. package/gs/math/sqrt.gs.test.ts +49 -0
  329. package/gs/math/sqrt.gs.ts +20 -0
  330. package/gs/math/tan.gs.test.ts +50 -0
  331. package/gs/math/tan.gs.ts +23 -0
  332. package/gs/math/tanh.gs.test.ts +52 -0
  333. package/gs/math/tanh.gs.ts +23 -0
  334. package/gs/math/trig_reduce.gs.ts +66 -0
  335. package/gs/math/unsafe.gs.ts +52 -0
  336. package/gs/strconv/atob.gs.ts +45 -0
  337. package/gs/strconv/atof.gs.ts +60 -0
  338. package/gs/strconv/atoi.gs.ts +243 -0
  339. package/gs/strconv/doc.gs.ts +2 -0
  340. package/gs/strconv/ftoa.gs.ts +66 -0
  341. package/gs/strconv/index.ts +6 -0
  342. package/gs/strconv/itoa.gs.ts +41 -0
  343. package/gs/strconv/quote.gs.ts +245 -0
  344. package/gs/strings/index.ts +4 -0
  345. package/gs/strings/replace.ts +9 -237
  346. package/gs/strings/search.ts +0 -28
  347. package/gs/sync/atomic/doc.gs.ts +276 -0
  348. package/gs/sync/atomic/doc_64.gs.ts +168 -0
  349. package/gs/sync/atomic/index.ts +4 -0
  350. package/gs/sync/atomic/type.gs.ts +596 -0
  351. package/gs/sync/atomic/value.gs.ts +158 -0
  352. package/gs/unsafe/unsafe.ts +6 -0
  353. package/package.json +1 -1
  354. package/gs/maps/iter.gs.ts +0 -71
  355. package/gs/maps/maps.gs.ts +0 -87
  356. package/gs/stringslite/godoc.txt +0 -17
  357. package/gs/stringslite/index.ts +0 -1
  358. package/gs/stringslite/strings.ts +0 -82
@@ -5,10 +5,12 @@ export * from './io.js'
5
5
  export * from './map.js'
6
6
  export * from './slice.js'
7
7
  export * from './type.js'
8
+ import type { Slice, SliceProxy } from './slice.js'
9
+ import { isSliceProxy } from './slice.js'
8
10
 
9
11
  // Bytes represents all valid []byte representations in TypeScript
10
12
  // This includes Uint8Array (the preferred representation) and $.Slice<number> (which includes null)
11
- export type Bytes = Uint8Array | import('./slice.js').Slice<number>
13
+ export type Bytes = Uint8Array | Slice<number>
12
14
 
13
15
  // int converts a value to a Go int type, handling proper signed integer conversion
14
16
  // This ensures that values like 2147483648 (2^31) are properly handled according to Go semantics
@@ -179,24 +181,24 @@ export function normalizeBytes(
179
181
  * Handles all slice types including null, arrays, Uint8Array, and SliceProxy.
180
182
  * @param s The slice to sort in place
181
183
  */
182
- export function sortSlice<T extends string | number>(s: import('./slice.js').Slice<T>): void {
184
+ export function sortSlice<T extends string | number>(s: Slice<T>): void {
183
185
  if (s === null || s === undefined) {
184
186
  return // Nothing to sort for nil slice
185
187
  }
186
-
188
+
187
189
  if (Array.isArray(s)) {
188
190
  s.sort()
189
191
  return
190
192
  }
191
-
193
+
192
194
  if (s instanceof Uint8Array) {
193
195
  s.sort()
194
196
  return
195
197
  }
196
-
198
+
197
199
  // Handle SliceProxy case - sort the backing array in-place within the slice bounds
198
- if (s && typeof s === 'object' && '__meta__' in s) {
199
- const proxy = s as import('./slice.js').SliceProxy<T>
200
+ if (isSliceProxy(s)) {
201
+ const proxy = s as SliceProxy<T>
200
202
  const meta = proxy.__meta__
201
203
  const section = meta.backing.slice(meta.offset, meta.offset + meta.length)
202
204
  section.sort()
package/gs/builtin/map.ts CHANGED
@@ -12,7 +12,11 @@ export const makeMap = <K, V>(): Map<K, V> => {
12
12
  * @param defaultValue The default value to return if the key doesn't exist.
13
13
  * @returns A tuple [value, exists] where value is the map value or defaultValue, and exists is whether the key was found.
14
14
  */
15
- export function mapGet<K, V, D>(map: Map<K, V>, key: K, defaultValue: D): [V, true] | [D, false] {
15
+ export function mapGet<K, V, D>(
16
+ map: Map<K, V>,
17
+ key: K,
18
+ defaultValue: D,
19
+ ): [V, true] | [D, false] {
16
20
  const exists = map.has(key)
17
21
  if (exists) {
18
22
  return [map.get(key)!, true]
@@ -65,6 +65,14 @@ function isComplexSlice<T>(slice: Slice<T>): slice is SliceProxy<T> {
65
65
  )
66
66
  }
67
67
 
68
+ /**
69
+ * isSliceProxy checks if a slice is a SliceProxy (has __meta__ property)
70
+ * This is an alias for isComplexSlice for better type hinting
71
+ */
72
+ export function isSliceProxy<T>(slice: Slice<T>): slice is SliceProxy<T> {
73
+ return isComplexSlice(slice)
74
+ }
75
+
68
76
  /**
69
77
  * Creates a new slice with the specified length and capacity.
70
78
  * @param length The length of the slice.
@@ -77,9 +85,81 @@ export const makeSlice = <T>(
77
85
  typeHint?: string,
78
86
  ): Slice<T> => {
79
87
  if (typeHint === 'byte') {
80
- // Uint8Array is initialized to zeros by default.
81
- // Capacity for Uint8Array is its length.
82
- return new Uint8Array(length) as Slice<T>
88
+ const actualCapacity = capacity === undefined ? length : capacity
89
+ if (length < 0 || actualCapacity < 0 || length > actualCapacity) {
90
+ throw new Error(
91
+ `Invalid slice length (${length}) or capacity (${actualCapacity})`,
92
+ )
93
+ }
94
+
95
+ // If capacity equals length, use Uint8Array directly for efficiency
96
+ if (actualCapacity === length) {
97
+ return new Uint8Array(length) as Slice<T>
98
+ }
99
+
100
+ // If capacity > length, create a SliceProxy backed by a Uint8Array
101
+ const backingUint8 = new Uint8Array(actualCapacity)
102
+ const backingNumbers = Array.from(backingUint8) as T[] // Convert to number[] for backing
103
+
104
+ const proxyTargetArray = new Array<T>(length)
105
+ for (let i = 0; i < length; i++) {
106
+ proxyTargetArray[i] = 0 as T // Initialize with zeros
107
+ }
108
+
109
+ const proxy = proxyTargetArray as SliceProxy<T>
110
+ proxy.__meta__ = {
111
+ backing: backingNumbers,
112
+ offset: 0,
113
+ length: length,
114
+ capacity: actualCapacity,
115
+ }
116
+
117
+ // Create a proper Proxy with the handler for SliceProxy behavior
118
+ const handler = {
119
+ get(target: any, prop: string | symbol): any {
120
+ if (typeof prop === 'string' && /^\d+$/.test(prop)) {
121
+ const index = Number(prop)
122
+ if (index >= 0 && index < target.__meta__.length) {
123
+ return target.__meta__.backing[target.__meta__.offset + index]
124
+ }
125
+ throw new Error(
126
+ `Slice index out of range: ${index} >= ${target.__meta__.length}`,
127
+ )
128
+ }
129
+
130
+ if (prop === 'length') {
131
+ return target.__meta__.length
132
+ }
133
+
134
+ if (prop === '__meta__') {
135
+ return target.__meta__
136
+ }
137
+
138
+ return Reflect.get(target, prop)
139
+ },
140
+
141
+ set(target: any, prop: string | symbol, value: any): boolean {
142
+ if (typeof prop === 'string' && /^\d+$/.test(prop)) {
143
+ const index = Number(prop)
144
+ if (index >= 0 && index < target.__meta__.length) {
145
+ target.__meta__.backing[target.__meta__.offset + index] = value
146
+ target[index] = value // Also update the proxy target for consistency
147
+ return true
148
+ }
149
+ throw new Error(
150
+ `Slice index out of range: ${index} >= ${target.__meta__.length}`,
151
+ )
152
+ }
153
+
154
+ if (prop === 'length' || prop === '__meta__') {
155
+ return false
156
+ }
157
+
158
+ return Reflect.set(target, prop, value)
159
+ },
160
+ }
161
+
162
+ return new Proxy(proxy, handler) as Slice<T>
83
163
  }
84
164
 
85
165
  const actualCapacity = capacity === undefined ? length : capacity
@@ -127,7 +207,52 @@ export const makeSlice = <T>(
127
207
  capacity: actualCapacity,
128
208
  }
129
209
 
130
- return proxy
210
+ // Create a proper Proxy with the handler for SliceProxy behavior
211
+ const handler = {
212
+ get(target: any, prop: string | symbol): any {
213
+ if (typeof prop === 'string' && /^\d+$/.test(prop)) {
214
+ const index = Number(prop)
215
+ if (index >= 0 && index < target.__meta__.length) {
216
+ return target.__meta__.backing[target.__meta__.offset + index]
217
+ }
218
+ throw new Error(
219
+ `Slice index out of range: ${index} >= ${target.__meta__.length}`,
220
+ )
221
+ }
222
+
223
+ if (prop === 'length') {
224
+ return target.__meta__.length
225
+ }
226
+
227
+ if (prop === '__meta__') {
228
+ return target.__meta__
229
+ }
230
+
231
+ return Reflect.get(target, prop)
232
+ },
233
+
234
+ set(target: any, prop: string | symbol, value: any): boolean {
235
+ if (typeof prop === 'string' && /^\d+$/.test(prop)) {
236
+ const index = Number(prop)
237
+ if (index >= 0 && index < target.__meta__.length) {
238
+ target.__meta__.backing[target.__meta__.offset + index] = value
239
+ target[index] = value // Also update the proxy target for consistency
240
+ return true
241
+ }
242
+ throw new Error(
243
+ `Slice index out of range: ${index} >= ${target.__meta__.length}`,
244
+ )
245
+ }
246
+
247
+ if (prop === 'length' || prop === '__meta__') {
248
+ return false
249
+ }
250
+
251
+ return Reflect.set(target, prop, value)
252
+ },
253
+ }
254
+
255
+ return new Proxy(proxy, handler) as Slice<T>
131
256
  }
132
257
 
133
258
  /**
@@ -329,18 +454,22 @@ export const goSlice = <T>( // T can be number for Uint8Array case
329
454
  const newLength = high - low
330
455
  const newOffset = oldOffset + low
331
456
 
332
- const target = {
333
- __meta__: {
334
- backing: backing,
335
- offset: newOffset,
336
- length: newLength,
337
- capacity: newCap,
338
- },
457
+ // Create an array-like target with the correct length
458
+ const proxyTargetArray = new Array<T>(newLength)
459
+ // Note: We don't need to initialize the values here since the proxy handler
460
+ // will fetch them from the backing array when accessed
461
+
462
+ const proxy = proxyTargetArray as SliceProxy<T>
463
+ proxy.__meta__ = {
464
+ backing: backing,
465
+ offset: newOffset,
466
+ length: newLength,
467
+ capacity: newCap,
339
468
  }
340
469
 
341
470
  // const handler = { ... } // Handler is now defined at the top
342
471
 
343
- return new Proxy(target, handler) as unknown as SliceProxy<T>
472
+ return new Proxy(proxy, handler) as unknown as SliceProxy<T>
344
473
  }
345
474
 
346
475
  /**
@@ -522,10 +651,12 @@ export const cap = <T>(obj: Slice<T> | Uint8Array): number => {
522
651
  * @param elements The elements to append.
523
652
  * @returns The modified or new slice.
524
653
  */
525
- export const append = <T>(
654
+ export function append(slice: Uint8Array, ...elements: any[]): Uint8Array
655
+ export function append<T>(slice: Slice<T>, ...elements: any[]): Slice<T>
656
+ export function append<T>(
526
657
  slice: Slice<T> | Uint8Array,
527
658
  ...elements: any[]
528
- ): Slice<T> => {
659
+ ): Slice<T> {
529
660
  // 1. Flatten all elements from the varargs `...elements` into `varargsElements`.
530
661
  // Determine if the result should be a Uint8Array.
531
662
  const inputIsUint8Array = slice instanceof Uint8Array
@@ -581,7 +712,7 @@ export const append = <T>(
581
712
  }
582
713
  const newArr = new Uint8Array(combinedBytes.length)
583
714
  newArr.set(combinedBytes)
584
- return newArr as Slice<T>
715
+ return newArr as any
585
716
  }
586
717
 
587
718
  // Handle generic Slice<T> (non-Uint8Array result).
@@ -590,7 +721,7 @@ export const append = <T>(
590
721
  const numAdded = elements.length
591
722
 
592
723
  if (numAdded === 0) {
593
- return slice
724
+ return slice as any
594
725
  }
595
726
 
596
727
  let originalElements: T[] = []
@@ -631,7 +762,7 @@ export const append = <T>(
631
762
  length: newLength,
632
763
  capacity: oldCapacity,
633
764
  }
634
- return resultProxy
765
+ return resultProxy as any
635
766
  }
636
767
 
637
768
  // Case 2: Reallocation is needed.
@@ -663,7 +794,7 @@ export const append = <T>(
663
794
  length: newLength,
664
795
  capacity: newCapacity,
665
796
  }
666
- return resultProxy
797
+ return resultProxy as any
667
798
  }
668
799
 
669
800
  /**
@@ -1020,12 +1151,9 @@ export function indexStringOrBytes(
1020
1151
  * @param max Capacity limit (only used for bytes, ignored for strings)
1021
1152
  * @returns The sliced value of the same type as input
1022
1153
  */
1023
- export function sliceStringOrBytes<T extends string | import('./builtin.js').Bytes>(
1024
- value: T,
1025
- low?: number,
1026
- high?: number,
1027
- max?: number,
1028
- ): T {
1154
+ export function sliceStringOrBytes<
1155
+ T extends string | import('./builtin.js').Bytes,
1156
+ >(value: T, low?: number, high?: number, max?: number): T {
1029
1157
  if (typeof value === 'string') {
1030
1158
  // For strings, use sliceString and ignore max parameter
1031
1159
  return sliceString(value, low, high) as T
@@ -0,0 +1,307 @@
1
+ import * as $ from "../../../builtin/builtin.js";
2
+ import { callers } from "./stack.js";
3
+
4
+ // Type definitions
5
+ export type Frame = any; // Simplified frame type
6
+ export type StackTrace = Frame[] | null;
7
+ export type stack = any; // Simplified stack type
8
+ export type uintptr = number;
9
+
10
+ // Simplified fmt functions for basic string formatting
11
+ const fmt = {
12
+ Sprintf: (format: string, ...args: any[]): string => {
13
+ // Basic sprintf implementation for the errors package
14
+ let result = format;
15
+ let argIndex = 0;
16
+ result = result.replace(/%[sdqv%]/g, (match) => {
17
+ if (match === '%%') return '%';
18
+ if (argIndex >= args.length) return match;
19
+ const arg = args[argIndex++];
20
+ switch (match) {
21
+ case '%s': return String(arg);
22
+ case '%d': return String(Number(arg));
23
+ case '%q': return JSON.stringify(String(arg));
24
+ case '%v': return String(arg);
25
+ default: return match;
26
+ }
27
+ });
28
+ return result;
29
+ }
30
+ };
31
+
32
+ // New returns an error with the supplied message.
33
+ // New also records the stack trace at the point it was called.
34
+ export function New(message: string): $.GoError {
35
+ return new fundamental({msg: message, stack: callers()})
36
+ }
37
+
38
+ // Errorf formats according to a format specifier and returns the string
39
+ // as a value that satisfies error.
40
+ // Errorf also records the stack trace at the point it was called.
41
+ export function Errorf(format: string, ...args: any[]): $.GoError {
42
+ return new fundamental({msg: fmt.Sprintf(format, ...args), stack: callers()})
43
+ }
44
+
45
+ class fundamental {
46
+ public get msg(): string {
47
+ return this._fields.msg.value
48
+ }
49
+ public set msg(value: string) {
50
+ this._fields.msg.value = value
51
+ }
52
+
53
+ public get stack(): $.VarRef<stack> | null {
54
+ return this._fields.stack.value
55
+ }
56
+ public set stack(value: $.VarRef<stack> | null) {
57
+ this._fields.stack.value = value
58
+ }
59
+
60
+ public _fields: {
61
+ msg: $.VarRef<string>;
62
+ stack: $.VarRef<$.VarRef<stack> | null>;
63
+ }
64
+
65
+ constructor(init?: Partial<{msg?: string, stack?: $.VarRef<stack> | null}>) {
66
+ this._fields = {
67
+ msg: $.varRef(init?.msg ?? ""),
68
+ stack: $.varRef(init?.stack ?? null)
69
+ }
70
+ }
71
+
72
+ public clone(): fundamental {
73
+ const cloned = new fundamental()
74
+ cloned._fields = {
75
+ msg: $.varRef(this._fields.msg.value),
76
+ stack: $.varRef(this._fields.stack.value)
77
+ }
78
+ return cloned
79
+ }
80
+
81
+ public Error(): string {
82
+ const f = this
83
+ return f!.msg
84
+ }
85
+
86
+ public StackTrace(): StackTrace {
87
+ return null; // Simplified - no stack trace for now
88
+ }
89
+
90
+ // Register this type with the runtime type system
91
+ static __typeInfo = $.registerStructType(
92
+ 'fundamental',
93
+ new fundamental(),
94
+ [{ name: "Error", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }],
95
+ fundamental,
96
+ {"msg": { kind: $.TypeKind.Basic, name: "string" }, "stack": { kind: $.TypeKind.Pointer, elemType: "stack" }}
97
+ );
98
+ }
99
+
100
+ // WithStack annotates err with a stack trace at the point WithStack was called.
101
+ // If err is nil, WithStack returns nil.
102
+ export function WithStack(err: $.GoError): $.GoError {
103
+ if (err == null) {
104
+ return null
105
+ }
106
+ return new withStack({error: err, stack: callers()})
107
+ }
108
+
109
+ class withStack {
110
+ public get error(): $.GoError {
111
+ return this._fields.error.value
112
+ }
113
+ public set error(value: $.GoError) {
114
+ this._fields.error.value = value
115
+ }
116
+
117
+ public get stack(): $.VarRef<stack> | null {
118
+ return this._fields.stack.value
119
+ }
120
+ public set stack(value: $.VarRef<stack> | null) {
121
+ this._fields.stack.value = value
122
+ }
123
+
124
+ public _fields: {
125
+ error: $.VarRef<$.GoError>;
126
+ stack: $.VarRef<$.VarRef<stack> | null>;
127
+ }
128
+
129
+ constructor(init?: Partial<{error?: $.GoError, stack?: $.VarRef<stack> | null}>) {
130
+ this._fields = {
131
+ error: $.varRef(init?.error ?? null),
132
+ stack: $.varRef(init?.stack ?? null)
133
+ }
134
+ }
135
+
136
+ public clone(): withStack {
137
+ const cloned = new withStack()
138
+ cloned._fields = {
139
+ error: $.varRef(this._fields.error.value),
140
+ stack: $.varRef(this._fields.stack.value)
141
+ }
142
+ return cloned
143
+ }
144
+
145
+ public Cause(): $.GoError {
146
+ const w = this
147
+ return w!.error
148
+ }
149
+
150
+ // Unwrap provides compatibility for Go 1.13 error chains.
151
+ public Unwrap(): $.GoError {
152
+ const w = this
153
+ return w!.error
154
+ }
155
+
156
+ public Error(): string {
157
+ return this.error?.Error() ?? ""
158
+ }
159
+
160
+ public StackTrace(): StackTrace {
161
+ return null; // Simplified - no stack trace for now
162
+ }
163
+
164
+ // Register this type with the runtime type system
165
+ static __typeInfo = $.registerStructType(
166
+ 'withStack',
167
+ new withStack(),
168
+ [{ name: "Cause", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "Unwrap", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }],
169
+ withStack,
170
+ {"error": { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] }, "stack": { kind: $.TypeKind.Pointer, elemType: "stack" }}
171
+ );
172
+ }
173
+
174
+ // Wrap returns an error annotating err with a stack trace
175
+ // at the point Wrap is called, and the supplied message.
176
+ // If err is nil, Wrap returns nil.
177
+ export function Wrap(err: $.GoError, message: string): $.GoError {
178
+ if (err == null) {
179
+ return null
180
+ }
181
+ const wrappedErr = new withMessage({cause: err, msg: message})
182
+ return new withStack({error: wrappedErr, stack: callers()})
183
+ }
184
+
185
+ // Wrapf returns an error annotating err with a stack trace
186
+ // at the point Wrapf is called, and the format specifier.
187
+ // If err is nil, Wrapf returns nil.
188
+ export function Wrapf(err: $.GoError, format: string, ...args: any[]): $.GoError {
189
+ if (err == null) {
190
+ return null
191
+ }
192
+ const wrappedErr = new withMessage({cause: err, msg: fmt.Sprintf(format, ...args)})
193
+ return new withStack({error: wrappedErr, stack: callers()})
194
+ }
195
+
196
+ // WithMessage annotates err with a new message.
197
+ // If err is nil, WithMessage returns nil.
198
+ export function WithMessage(err: $.GoError, message: string): $.GoError {
199
+ if (err == null) {
200
+ return null
201
+ }
202
+ return new withMessage({cause: err, msg: message})
203
+ }
204
+
205
+ // WithMessagef annotates err with the format specifier.
206
+ // If err is nil, WithMessagef returns nil.
207
+ export function WithMessagef(err: $.GoError, format: string, ...args: any[]): $.GoError {
208
+ if (err == null) {
209
+ return null
210
+ }
211
+ return new withMessage({cause: err, msg: fmt.Sprintf(format, ...args)})
212
+ }
213
+
214
+ class withMessage {
215
+ public get cause(): $.GoError {
216
+ return this._fields.cause.value
217
+ }
218
+ public set cause(value: $.GoError) {
219
+ this._fields.cause.value = value
220
+ }
221
+
222
+ public get msg(): string {
223
+ return this._fields.msg.value
224
+ }
225
+ public set msg(value: string) {
226
+ this._fields.msg.value = value
227
+ }
228
+
229
+ public _fields: {
230
+ cause: $.VarRef<$.GoError>;
231
+ msg: $.VarRef<string>;
232
+ }
233
+
234
+ constructor(init?: Partial<{cause?: $.GoError, msg?: string}>) {
235
+ this._fields = {
236
+ cause: $.varRef(init?.cause ?? null),
237
+ msg: $.varRef(init?.msg ?? "")
238
+ }
239
+ }
240
+
241
+ public clone(): withMessage {
242
+ const cloned = new withMessage()
243
+ cloned._fields = {
244
+ cause: $.varRef(this._fields.cause.value),
245
+ msg: $.varRef(this._fields.msg.value)
246
+ }
247
+ return cloned
248
+ }
249
+
250
+ public Error(): string {
251
+ const w = this
252
+ return w!.msg + ": " + w!.cause!.Error()
253
+ }
254
+
255
+ public Cause(): $.GoError {
256
+ const w = this
257
+ return w!.cause
258
+ }
259
+
260
+ // Unwrap provides compatibility for Go 1.13 error chains.
261
+ public Unwrap(): $.GoError {
262
+ const w = this
263
+ return w!.cause
264
+ }
265
+
266
+ // Register this type with the runtime type system
267
+ static __typeInfo = $.registerStructType(
268
+ 'withMessage',
269
+ new withMessage(),
270
+ [{ name: "Error", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "Cause", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "Unwrap", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }],
271
+ withMessage,
272
+ {"cause": { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] }, "msg": { kind: $.TypeKind.Basic, name: "string" }}
273
+ );
274
+ }
275
+
276
+ // Cause returns the underlying cause of the error, if possible.
277
+ // An error value has a cause if it implements the following
278
+ // interface:
279
+ //
280
+ // type causer interface {
281
+ // Cause() error
282
+ // }
283
+ //
284
+ // If the error does not implement Cause, the original error will
285
+ // be returned. If the error is nil, nil will be returned without further
286
+ // investigation.
287
+ export function Cause(err: $.GoError): $.GoError {
288
+ type causer = null | {
289
+ Cause(): $.GoError
290
+ }
291
+
292
+ $.registerInterfaceType(
293
+ 'causer',
294
+ null, // Zero value for interface is null
295
+ [{ name: "Cause", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }]
296
+ );
297
+
298
+ for (; err != null; ) {
299
+ let { value: cause, ok: ok } = $.typeAssert<causer>(err, 'causer')
300
+ if (!ok) {
301
+ break
302
+ }
303
+ err = cause!.Cause()
304
+ }
305
+ return err
306
+ }
307
+
@@ -0,0 +1,39 @@
1
+ import * as $ from "../../../builtin/builtin.js";
2
+
3
+ import * as stderrors from "../../../errors/index.js"
4
+
5
+ // Is reports whether any error in err's chain matches target.
6
+ //
7
+ // The chain consists of err itself followed by the sequence of errors obtained by
8
+ // repeatedly calling Unwrap.
9
+ //
10
+ // An error is considered to match a target if it is equal to that target or if
11
+ // it implements a method Is(error) bool such that Is(target) returns true.
12
+ export function Is(err: $.GoError, target: $.GoError): boolean {
13
+ return stderrors.Is(err, target)
14
+ }
15
+
16
+ // As finds the first error in err's chain that matches target, and if so, sets
17
+ // target to that error value and returns true.
18
+ //
19
+ // The chain consists of err itself followed by the sequence of errors obtained by
20
+ // repeatedly calling Unwrap.
21
+ //
22
+ // An error matches target if the error's concrete value is assignable to the value
23
+ // pointed to by target, or if the error has a method As(interface{}) bool such that
24
+ // As(target) returns true. In the latter case, the As method is responsible for
25
+ // setting target.
26
+ //
27
+ // As will panic if target is not a non-nil pointer to either a type that implements
28
+ // error, or to any interface type. As returns false if err is nil.
29
+ export function As(err: $.GoError, target: null | any): boolean {
30
+ return stderrors.As(err, target)
31
+ }
32
+
33
+ // Unwrap returns the result of calling the Unwrap method on err, if err's
34
+ // type contains an Unwrap method returning error.
35
+ // Otherwise, Unwrap returns nil.
36
+ export function Unwrap(err: $.GoError): $.GoError {
37
+ return stderrors.Unwrap(err)
38
+ }
39
+
@@ -0,0 +1,3 @@
1
+ export { Cause, Errorf, New, WithMessage, WithMessagef, WithStack, Wrap, Wrapf } from "./errors.js"
2
+ export { As, Is, Unwrap } from "./go113.js"
3
+ export { Frame, StackTrace } from "./stack.js"