goscript 0.1.0 → 0.1.2

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 (495) hide show
  1. package/README.md +267 -255
  2. package/cmd/goscript/cmd-test.go +286 -0
  3. package/cmd/goscript/cmd-test_test.go +76 -0
  4. package/cmd/goscript/cmd_compile.go +9 -0
  5. package/cmd/goscript/main.go +1 -0
  6. package/compiler/build-flags.go +38 -0
  7. package/compiler/compile-request.go +33 -0
  8. package/compiler/compiler.go +1 -1
  9. package/compiler/compliance_test.go +0 -10
  10. package/compiler/config.go +2 -0
  11. package/compiler/gotest/owner.go +24 -0
  12. package/compiler/gotest/package-result.go +69 -0
  13. package/compiler/gotest/request.go +210 -0
  14. package/compiler/gotest/result.go +28 -0
  15. package/compiler/gotest/runner.go +1225 -0
  16. package/compiler/gotest/runner_test.go +1271 -0
  17. package/compiler/gotest/test.go +9 -0
  18. package/compiler/index.test.ts +1 -1
  19. package/compiler/lowered-program.go +80 -21
  20. package/compiler/lowering.go +6754 -602
  21. package/compiler/override-facts.go +357 -0
  22. package/compiler/override-registry.go +52 -190
  23. package/compiler/override-registry_test.go +182 -0
  24. package/compiler/package-graph.go +50 -27
  25. package/compiler/package-graph_test.go +99 -9
  26. package/compiler/package-test-function.go +9 -0
  27. package/compiler/package-test-graph-package.go +40 -0
  28. package/compiler/package-test-graph-variant.go +129 -0
  29. package/compiler/package-test-graph.go +112 -0
  30. package/compiler/package-test-graph_test.go +202 -0
  31. package/compiler/runtime-contract.go +229 -29
  32. package/compiler/runtime-contract_test.go +44 -30
  33. package/compiler/semantic-model-types.go +25 -6
  34. package/compiler/semantic-model.go +819 -74
  35. package/compiler/semantic-model_test.go +104 -0
  36. package/compiler/service.go +10 -4
  37. package/compiler/skeleton_test.go +2777 -524
  38. package/compiler/tsworkspace/owner-process-unix_test.go +72 -0
  39. package/compiler/tsworkspace/owner.go +342 -0
  40. package/compiler/tsworkspace/owner_test.go +93 -0
  41. package/compiler/tsworkspace/result.go +17 -0
  42. package/compiler/tsworkspace/tool-process-other.go +14 -0
  43. package/compiler/tsworkspace/tool-process-unix.go +19 -0
  44. package/compiler/typescript-emitter.go +576 -86
  45. package/compiler/wasm/compile.go +1 -1
  46. package/compiler/wasm/compile_test.go +61 -11
  47. package/compiler/wasm_api.go +172 -7
  48. package/dist/gs/builtin/builtin.d.ts +40 -3
  49. package/dist/gs/builtin/builtin.js +430 -22
  50. package/dist/gs/builtin/builtin.js.map +1 -1
  51. package/dist/gs/builtin/channel.d.ts +32 -10
  52. package/dist/gs/builtin/channel.js +119 -25
  53. package/dist/gs/builtin/channel.js.map +1 -1
  54. package/dist/gs/builtin/defer.d.ts +1 -0
  55. package/dist/gs/builtin/defer.js +12 -2
  56. package/dist/gs/builtin/defer.js.map +1 -1
  57. package/dist/gs/builtin/hostio.d.ts +9 -0
  58. package/dist/gs/builtin/hostio.js +25 -0
  59. package/dist/gs/builtin/hostio.js.map +1 -1
  60. package/dist/gs/builtin/map.js +40 -6
  61. package/dist/gs/builtin/map.js.map +1 -1
  62. package/dist/gs/builtin/print.js.map +1 -1
  63. package/dist/gs/builtin/slice.d.ts +64 -10
  64. package/dist/gs/builtin/slice.js +619 -244
  65. package/dist/gs/builtin/slice.js.map +1 -1
  66. package/dist/gs/builtin/type.d.ts +7 -2
  67. package/dist/gs/builtin/type.js +128 -29
  68. package/dist/gs/builtin/type.js.map +1 -1
  69. package/dist/gs/builtin/varRef.d.ts +7 -0
  70. package/dist/gs/builtin/varRef.js +23 -0
  71. package/dist/gs/builtin/varRef.js.map +1 -1
  72. package/dist/gs/bytes/buffer.gs.js +74 -70
  73. package/dist/gs/bytes/buffer.gs.js.map +1 -1
  74. package/dist/gs/bytes/iter.gs.js +13 -13
  75. package/dist/gs/bytes/iter.gs.js.map +1 -1
  76. package/dist/gs/bytes/reader.gs.js +20 -18
  77. package/dist/gs/bytes/reader.gs.js.map +1 -1
  78. package/dist/gs/compress/zlib/index.d.ts +26 -0
  79. package/dist/gs/compress/zlib/index.js +168 -0
  80. package/dist/gs/compress/zlib/index.js.map +1 -0
  81. package/dist/gs/context/context.d.ts +6 -5
  82. package/dist/gs/context/context.js +17 -12
  83. package/dist/gs/context/context.js.map +1 -1
  84. package/dist/gs/crypto/ecdh/index.d.ts +52 -0
  85. package/dist/gs/crypto/ecdh/index.js +226 -0
  86. package/dist/gs/crypto/ecdh/index.js.map +1 -0
  87. package/dist/gs/crypto/ed25519/index.d.ts +34 -0
  88. package/dist/gs/crypto/ed25519/index.js +160 -0
  89. package/dist/gs/crypto/ed25519/index.js.map +1 -0
  90. package/dist/gs/crypto/internal/constanttime/index.d.ts +4 -0
  91. package/dist/gs/crypto/internal/constanttime/index.js +18 -0
  92. package/dist/gs/crypto/internal/constanttime/index.js.map +1 -0
  93. package/dist/gs/crypto/internal/fips140deps/byteorder/index.d.ts +1 -0
  94. package/dist/gs/crypto/internal/fips140deps/byteorder/index.js +2 -0
  95. package/dist/gs/crypto/internal/fips140deps/byteorder/index.js.map +1 -0
  96. package/dist/gs/crypto/internal/fips140deps/godebug/index.d.ts +1 -0
  97. package/dist/gs/crypto/internal/fips140deps/godebug/index.js +2 -0
  98. package/dist/gs/crypto/internal/fips140deps/godebug/index.js.map +1 -0
  99. package/dist/gs/crypto/rand/index.d.ts +2 -0
  100. package/dist/gs/crypto/rand/index.js +85 -0
  101. package/dist/gs/crypto/rand/index.js.map +1 -1
  102. package/dist/gs/crypto/sha256/index.d.ts +8 -0
  103. package/dist/gs/crypto/sha256/index.js +118 -0
  104. package/dist/gs/crypto/sha256/index.js.map +1 -0
  105. package/dist/gs/crypto/sha512/index.d.ts +14 -0
  106. package/dist/gs/crypto/sha512/index.js +129 -0
  107. package/dist/gs/crypto/sha512/index.js.map +1 -0
  108. package/dist/gs/embed/index.d.ts +7 -0
  109. package/dist/gs/embed/index.js +16 -0
  110. package/dist/gs/embed/index.js.map +1 -0
  111. package/dist/gs/encoding/json/index.d.ts +4 -0
  112. package/dist/gs/encoding/json/index.js +33 -0
  113. package/dist/gs/encoding/json/index.js.map +1 -1
  114. package/dist/gs/errors/errors.d.ts +4 -0
  115. package/dist/gs/errors/errors.js +108 -4
  116. package/dist/gs/errors/errors.js.map +1 -1
  117. package/dist/gs/fmt/fmt.d.ts +4 -4
  118. package/dist/gs/fmt/fmt.js +42 -11
  119. package/dist/gs/fmt/fmt.js.map +1 -1
  120. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +37 -2
  121. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +245 -1
  122. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js.map +1 -1
  123. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.d.ts +189 -0
  124. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js +861 -0
  125. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -0
  126. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +217 -0
  127. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +814 -0
  128. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +1 -0
  129. package/dist/gs/github.com/aperturerobotics/util/conc/index.d.ts +20 -0
  130. package/dist/gs/github.com/aperturerobotics/util/conc/index.js +134 -0
  131. package/dist/gs/github.com/aperturerobotics/util/conc/index.js.map +1 -0
  132. package/dist/gs/github.com/aperturerobotics/wasivm/wazero/kernel/runtime/browser/browser.js.map +1 -1
  133. package/dist/gs/github.com/hack-pad/safejs/internal/catch/index.d.ts +3 -0
  134. package/dist/gs/github.com/hack-pad/safejs/internal/catch/index.js +50 -0
  135. package/dist/gs/github.com/hack-pad/safejs/internal/catch/index.js.map +1 -0
  136. package/dist/gs/github.com/klauspost/compress/internal/le/index.d.ts +9 -0
  137. package/dist/gs/github.com/klauspost/compress/internal/le/index.js +72 -0
  138. package/dist/gs/github.com/klauspost/compress/internal/le/index.js.map +1 -0
  139. package/dist/gs/github.com/mr-tron/base58/base58/index.d.ts +27 -0
  140. package/dist/gs/github.com/mr-tron/base58/base58/index.js +172 -0
  141. package/dist/gs/github.com/mr-tron/base58/base58/index.js.map +1 -0
  142. package/dist/gs/github.com/zeebo/blake3/internal/consts/index.d.ts +21 -0
  143. package/dist/gs/github.com/zeebo/blake3/internal/consts/index.js +22 -0
  144. package/dist/gs/github.com/zeebo/blake3/internal/consts/index.js.map +1 -0
  145. package/dist/gs/go/internal/scannerhooks/index.d.ts +3 -0
  146. package/dist/gs/go/internal/scannerhooks/index.js +5 -0
  147. package/dist/gs/go/internal/scannerhooks/index.js.map +1 -0
  148. package/dist/gs/go/scanner/index.d.ts +13 -0
  149. package/dist/gs/go/scanner/index.js +35 -0
  150. package/dist/gs/go/scanner/index.js.map +1 -1
  151. package/dist/gs/go/token/index.d.ts +156 -0
  152. package/dist/gs/go/token/index.js +507 -4
  153. package/dist/gs/go/token/index.js.map +1 -1
  154. package/dist/gs/hash/fnv/index.d.ts +57 -0
  155. package/dist/gs/hash/fnv/index.js +299 -0
  156. package/dist/gs/hash/fnv/index.js.map +1 -0
  157. package/dist/gs/hash/index.d.ts +17 -0
  158. package/dist/gs/hash/index.js +94 -0
  159. package/dist/gs/hash/index.js.map +1 -0
  160. package/dist/gs/internal/abi/index.d.ts +4 -0
  161. package/dist/gs/internal/abi/index.js +10 -0
  162. package/dist/gs/internal/abi/index.js.map +1 -1
  163. package/dist/gs/internal/bytealg/index.d.ts +2 -0
  164. package/dist/gs/internal/bytealg/index.js +14 -0
  165. package/dist/gs/internal/bytealg/index.js.map +1 -1
  166. package/dist/gs/internal/byteorder/index.d.ts +8 -2
  167. package/dist/gs/internal/byteorder/index.js +56 -25
  168. package/dist/gs/internal/byteorder/index.js.map +1 -1
  169. package/dist/gs/internal/godebug/index.d.ts +12 -0
  170. package/dist/gs/internal/godebug/index.js +30 -0
  171. package/dist/gs/internal/godebug/index.js.map +1 -0
  172. package/dist/gs/io/fs/index.d.ts +1 -0
  173. package/dist/gs/io/fs/index.js +1 -0
  174. package/dist/gs/io/fs/index.js.map +1 -1
  175. package/dist/gs/io/fs/readlink.d.ts +8 -0
  176. package/dist/gs/io/fs/readlink.js +60 -0
  177. package/dist/gs/io/fs/readlink.js.map +1 -0
  178. package/dist/gs/io/fs/walk.d.ts +3 -3
  179. package/dist/gs/io/fs/walk.js +7 -7
  180. package/dist/gs/io/fs/walk.js.map +1 -1
  181. package/dist/gs/io/io.d.ts +40 -6
  182. package/dist/gs/io/io.js +151 -26
  183. package/dist/gs/io/io.js.map +1 -1
  184. package/dist/gs/iter/iter.d.ts +3 -2
  185. package/dist/gs/iter/iter.js.map +1 -1
  186. package/dist/gs/maps/iter.d.ts +5 -5
  187. package/dist/gs/maps/iter.js +48 -21
  188. package/dist/gs/maps/iter.js.map +1 -1
  189. package/dist/gs/maps/maps.d.ts +6 -6
  190. package/dist/gs/maps/maps.js +1 -1
  191. package/dist/gs/maps/maps.js.map +1 -1
  192. package/dist/gs/math/bits/index.d.ts +13 -4
  193. package/dist/gs/math/bits/index.js +70 -48
  194. package/dist/gs/math/bits/index.js.map +1 -1
  195. package/dist/gs/math/const.gs.d.ts +5 -5
  196. package/dist/gs/math/const.gs.js +4 -4
  197. package/dist/gs/math/const.gs.js.map +1 -1
  198. package/dist/gs/mime/index.d.ts +1 -0
  199. package/dist/gs/mime/index.js +52 -0
  200. package/dist/gs/mime/index.js.map +1 -0
  201. package/dist/gs/net/http/httptest/index.d.ts +30 -0
  202. package/dist/gs/net/http/httptest/index.js +101 -0
  203. package/dist/gs/net/http/httptest/index.js.map +1 -0
  204. package/dist/gs/net/http/index.d.ts +131 -0
  205. package/dist/gs/net/http/index.js +307 -0
  206. package/dist/gs/net/http/index.js.map +1 -0
  207. package/dist/gs/net/http/pprof/index.d.ts +8 -0
  208. package/dist/gs/net/http/pprof/index.js +59 -0
  209. package/dist/gs/net/http/pprof/index.js.map +1 -0
  210. package/dist/gs/os/dir_unix.gs.js +2 -2
  211. package/dist/gs/os/dir_unix.gs.js.map +1 -1
  212. package/dist/gs/os/error.gs.js +9 -7
  213. package/dist/gs/os/error.gs.js.map +1 -1
  214. package/dist/gs/os/types_js.gs.js +95 -15
  215. package/dist/gs/os/types_js.gs.js.map +1 -1
  216. package/dist/gs/path/filepath/match.js +165 -3
  217. package/dist/gs/path/filepath/match.js.map +1 -1
  218. package/dist/gs/path/filepath/path.d.ts +8 -4
  219. package/dist/gs/path/filepath/path.js +192 -8
  220. package/dist/gs/path/filepath/path.js.map +1 -1
  221. package/dist/gs/path/path.d.ts +4 -1
  222. package/dist/gs/path/path.js +16 -4
  223. package/dist/gs/path/path.js.map +1 -1
  224. package/dist/gs/reflect/index.d.ts +4 -3
  225. package/dist/gs/reflect/index.js +3 -2
  226. package/dist/gs/reflect/index.js.map +1 -1
  227. package/dist/gs/reflect/iter.js +2 -2
  228. package/dist/gs/reflect/iter.js.map +1 -1
  229. package/dist/gs/reflect/map.js +29 -0
  230. package/dist/gs/reflect/map.js.map +1 -1
  231. package/dist/gs/reflect/type.d.ts +31 -9
  232. package/dist/gs/reflect/type.js +536 -43
  233. package/dist/gs/reflect/type.js.map +1 -1
  234. package/dist/gs/reflect/types.d.ts +1 -0
  235. package/dist/gs/reflect/types.js +3 -1
  236. package/dist/gs/reflect/types.js.map +1 -1
  237. package/dist/gs/reflect/value.d.ts +4 -1
  238. package/dist/gs/reflect/value.js +39 -1
  239. package/dist/gs/reflect/value.js.map +1 -1
  240. package/dist/gs/reflect/visiblefields.js +1 -1
  241. package/dist/gs/reflect/visiblefields.js.map +1 -1
  242. package/dist/gs/runtime/debug/index.d.ts +41 -0
  243. package/dist/gs/runtime/debug/index.js +66 -0
  244. package/dist/gs/runtime/debug/index.js.map +1 -0
  245. package/dist/gs/runtime/pprof/index.d.ts +20 -0
  246. package/dist/gs/runtime/pprof/index.js +85 -0
  247. package/dist/gs/runtime/pprof/index.js.map +1 -0
  248. package/dist/gs/runtime/runtime.d.ts +35 -3
  249. package/dist/gs/runtime/runtime.js +72 -0
  250. package/dist/gs/runtime/runtime.js.map +1 -1
  251. package/dist/gs/runtime/trace/index.d.ts +19 -0
  252. package/dist/gs/runtime/trace/index.js +64 -0
  253. package/dist/gs/runtime/trace/index.js.map +1 -0
  254. package/dist/gs/slices/slices.d.ts +42 -8
  255. package/dist/gs/slices/slices.js +425 -11
  256. package/dist/gs/slices/slices.js.map +1 -1
  257. package/dist/gs/sort/slice.gs.d.ts +5 -3
  258. package/dist/gs/sort/slice.gs.js +60 -22
  259. package/dist/gs/sort/slice.gs.js.map +1 -1
  260. package/dist/gs/sort/sort.gs.d.ts +4 -4
  261. package/dist/gs/sort/sort.gs.js +11 -8
  262. package/dist/gs/sort/sort.gs.js.map +1 -1
  263. package/dist/gs/strings/builder.d.ts +1 -1
  264. package/dist/gs/strings/builder.js +29 -19
  265. package/dist/gs/strings/builder.js.map +1 -1
  266. package/dist/gs/strings/iter.js +140 -75
  267. package/dist/gs/strings/iter.js.map +1 -1
  268. package/dist/gs/strings/replace.js +2 -2
  269. package/dist/gs/strings/replace.js.map +1 -1
  270. package/dist/gs/strings/strings.js +52 -6
  271. package/dist/gs/strings/strings.js.map +1 -1
  272. package/dist/gs/sync/atomic/type.gs.d.ts +9 -8
  273. package/dist/gs/sync/atomic/type.gs.js +0 -2
  274. package/dist/gs/sync/atomic/type.gs.js.map +1 -1
  275. package/dist/gs/sync/sync.d.ts +8 -3
  276. package/dist/gs/sync/sync.js +66 -11
  277. package/dist/gs/sync/sync.js.map +1 -1
  278. package/dist/gs/syscall/constants.d.ts +36 -24
  279. package/dist/gs/syscall/constants.js +12 -0
  280. package/dist/gs/syscall/constants.js.map +1 -1
  281. package/dist/gs/syscall/errors.d.ts +117 -111
  282. package/dist/gs/syscall/errors.js +45 -0
  283. package/dist/gs/syscall/errors.js.map +1 -1
  284. package/dist/gs/syscall/fs.d.ts +37 -0
  285. package/dist/gs/syscall/fs.js +102 -0
  286. package/dist/gs/syscall/fs.js.map +1 -1
  287. package/dist/gs/syscall/js/index.d.ts +90 -0
  288. package/dist/gs/syscall/js/index.js +383 -0
  289. package/dist/gs/syscall/js/index.js.map +1 -0
  290. package/dist/gs/syscall/types.d.ts +26 -1
  291. package/dist/gs/syscall/types.js +45 -1
  292. package/dist/gs/syscall/types.js.map +1 -1
  293. package/dist/gs/testing/index.d.ts +1 -0
  294. package/dist/gs/testing/index.js +2 -0
  295. package/dist/gs/testing/index.js.map +1 -0
  296. package/dist/gs/testing/testing.d.ts +78 -0
  297. package/dist/gs/testing/testing.js +318 -0
  298. package/dist/gs/testing/testing.js.map +1 -0
  299. package/dist/gs/time/time.d.ts +41 -4
  300. package/dist/gs/time/time.js +227 -36
  301. package/dist/gs/time/time.js.map +1 -1
  302. package/dist/gs/unicode/unicode.d.ts +23 -1
  303. package/dist/gs/unicode/unicode.js +79 -10
  304. package/dist/gs/unicode/unicode.js.map +1 -1
  305. package/dist/gs/unicode/utf8/utf8.d.ts +4 -4
  306. package/dist/gs/unicode/utf8/utf8.js +24 -11
  307. package/dist/gs/unicode/utf8/utf8.js.map +1 -1
  308. package/dist/gs/unique/index.d.ts +11 -0
  309. package/dist/gs/unique/index.js +76 -0
  310. package/dist/gs/unique/index.js.map +1 -0
  311. package/go.mod +8 -8
  312. package/go.sum +14 -14
  313. package/gs/builtin/builtin.ts +585 -27
  314. package/gs/builtin/channel.ts +183 -29
  315. package/gs/builtin/defer.ts +13 -2
  316. package/gs/builtin/hostio.test.ts +1 -0
  317. package/gs/builtin/hostio.ts +38 -0
  318. package/gs/builtin/map.ts +46 -6
  319. package/gs/builtin/print.ts +12 -3
  320. package/gs/builtin/runtime-contract.test.ts +383 -10
  321. package/gs/builtin/slice.test.ts +70 -0
  322. package/gs/builtin/slice.ts +785 -265
  323. package/gs/builtin/type.ts +160 -41
  324. package/gs/builtin/varRef.ts +40 -1
  325. package/gs/bytes/buffer.gs.ts +74 -70
  326. package/gs/bytes/iter.gs.ts +13 -14
  327. package/gs/bytes/meta.json +8 -3
  328. package/gs/bytes/reader.gs.ts +20 -19
  329. package/gs/compress/zlib/index.test.ts +28 -0
  330. package/gs/compress/zlib/index.ts +200 -0
  331. package/gs/compress/zlib/meta.json +3 -0
  332. package/gs/context/context.test.ts +71 -0
  333. package/gs/context/context.ts +30 -29
  334. package/gs/crypto/ecdh/index.test.ts +43 -0
  335. package/gs/crypto/ecdh/index.ts +274 -0
  336. package/gs/crypto/ed25519/index.test.ts +41 -0
  337. package/gs/crypto/ed25519/index.ts +238 -0
  338. package/gs/crypto/ed25519/meta.json +13 -0
  339. package/gs/crypto/internal/constanttime/index.test.ts +25 -0
  340. package/gs/crypto/internal/constanttime/index.ts +22 -0
  341. package/gs/crypto/internal/fips140deps/byteorder/index.ts +1 -0
  342. package/gs/crypto/internal/fips140deps/godebug/index.ts +1 -0
  343. package/gs/crypto/rand/index.test.ts +89 -1
  344. package/gs/crypto/rand/index.ts +103 -1
  345. package/gs/crypto/rand/meta.json +4 -1
  346. package/gs/crypto/sha256/index.test.ts +78 -0
  347. package/gs/crypto/sha256/index.ts +150 -0
  348. package/gs/crypto/sha256/meta.json +9 -0
  349. package/gs/crypto/sha512/index.test.ts +31 -0
  350. package/gs/crypto/sha512/index.ts +161 -0
  351. package/gs/crypto/sha512/meta.json +11 -0
  352. package/gs/embed/index.ts +20 -0
  353. package/gs/embed/meta.json +5 -0
  354. package/gs/encoding/json/index.test.ts +39 -3
  355. package/gs/encoding/json/index.ts +45 -3
  356. package/gs/errors/errors.test.ts +85 -0
  357. package/gs/errors/errors.ts +132 -4
  358. package/gs/fmt/fmt.test.ts +3 -1
  359. package/gs/fmt/fmt.ts +55 -19
  360. package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +128 -1
  361. package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +342 -4
  362. package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +180 -0
  363. package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +1084 -0
  364. package/gs/github.com/aperturerobotics/starpc/srpc/index.test.ts +31 -0
  365. package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +1233 -0
  366. package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +46 -0
  367. package/gs/github.com/aperturerobotics/util/conc/index.test.ts +30 -0
  368. package/gs/github.com/aperturerobotics/util/conc/index.ts +172 -0
  369. package/gs/github.com/aperturerobotics/util/conc/meta.json +9 -0
  370. package/gs/github.com/aperturerobotics/wasivm/wazero/kernel/runtime/browser/browser.ts +1 -4
  371. package/gs/github.com/hack-pad/safejs/internal/catch/index.test.ts +35 -0
  372. package/gs/github.com/hack-pad/safejs/internal/catch/index.ts +65 -0
  373. package/gs/github.com/hack-pad/safejs/internal/catch/meta.json +9 -0
  374. package/gs/github.com/klauspost/compress/internal/le/index.test.ts +37 -0
  375. package/gs/github.com/klauspost/compress/internal/le/index.ts +115 -0
  376. package/gs/github.com/mr-tron/base58/base58/index.test.ts +70 -0
  377. package/gs/github.com/mr-tron/base58/base58/index.ts +231 -0
  378. package/gs/github.com/mr-tron/base58/base58/meta.json +3 -0
  379. package/gs/github.com/zeebo/blake3/internal/consts/index.test.ts +46 -0
  380. package/gs/github.com/zeebo/blake3/internal/consts/index.ts +26 -0
  381. package/gs/go/internal/scannerhooks/index.test.ts +14 -0
  382. package/gs/go/internal/scannerhooks/index.ts +9 -0
  383. package/gs/go/scanner/index.test.ts +22 -0
  384. package/gs/go/scanner/index.ts +47 -0
  385. package/gs/go/token/index.test.ts +47 -1
  386. package/gs/go/token/index.ts +583 -4
  387. package/gs/hash/fnv/index.test.ts +67 -0
  388. package/gs/hash/fnv/index.ts +351 -0
  389. package/gs/hash/fnv/meta.json +3 -0
  390. package/gs/hash/index.test.ts +37 -0
  391. package/gs/hash/index.ts +118 -0
  392. package/gs/hash/meta.json +5 -0
  393. package/gs/internal/abi/index.test.ts +18 -0
  394. package/gs/internal/abi/index.ts +14 -0
  395. package/gs/internal/bytealg/index.test.ts +18 -0
  396. package/gs/internal/bytealg/index.ts +16 -0
  397. package/gs/internal/byteorder/index.test.ts +39 -0
  398. package/gs/internal/byteorder/index.ts +100 -27
  399. package/gs/internal/godebug/index.test.ts +16 -0
  400. package/gs/internal/godebug/index.ts +35 -0
  401. package/gs/io/fs/index.ts +1 -0
  402. package/gs/io/fs/meta.json +5 -0
  403. package/gs/io/fs/readlink.test.ts +43 -0
  404. package/gs/io/fs/readlink.ts +69 -0
  405. package/gs/io/fs/walk.test.ts +61 -0
  406. package/gs/io/fs/walk.ts +17 -9
  407. package/gs/io/io.ts +177 -31
  408. package/gs/io/meta.json +10 -2
  409. package/gs/iter/iter.ts +8 -2
  410. package/gs/maps/iter.ts +75 -26
  411. package/gs/maps/maps.test.ts +23 -0
  412. package/gs/maps/maps.ts +13 -11
  413. package/gs/math/bits/index.test.ts +20 -0
  414. package/gs/math/bits/index.ts +107 -64
  415. package/gs/math/const.gs.test.ts +11 -5
  416. package/gs/math/const.gs.ts +5 -6
  417. package/gs/mime/index.ts +60 -0
  418. package/gs/net/http/httptest/index.test.ts +53 -0
  419. package/gs/net/http/httptest/index.ts +120 -0
  420. package/gs/net/http/index.test.ts +148 -0
  421. package/gs/net/http/index.ts +432 -0
  422. package/gs/net/http/meta.json +6 -0
  423. package/gs/net/http/pprof/index.test.ts +47 -0
  424. package/gs/net/http/pprof/index.ts +65 -0
  425. package/gs/os/dir_unix.gs.ts +2 -3
  426. package/gs/os/error.gs.ts +9 -10
  427. package/gs/os/error.test.ts +41 -0
  428. package/gs/os/file_unix_js.test.ts +55 -0
  429. package/gs/os/tempfile.gs.test.ts +37 -10
  430. package/gs/os/types_js.gs.ts +96 -17
  431. package/gs/path/filepath/match.test.ts +31 -12
  432. package/gs/path/filepath/match.ts +181 -3
  433. package/gs/path/filepath/meta.json +6 -0
  434. package/gs/path/filepath/path.test.ts +80 -0
  435. package/gs/path/filepath/path.ts +244 -11
  436. package/gs/path/path.ts +20 -5
  437. package/gs/reflect/field.test.ts +63 -0
  438. package/gs/reflect/index.ts +5 -1
  439. package/gs/reflect/iter.ts +2 -2
  440. package/gs/reflect/map.test.ts +42 -1
  441. package/gs/reflect/map.ts +39 -0
  442. package/gs/reflect/type.ts +728 -65
  443. package/gs/reflect/typefor.test.ts +100 -0
  444. package/gs/reflect/types.ts +3 -1
  445. package/gs/reflect/value.ts +50 -1
  446. package/gs/reflect/visiblefields.ts +1 -1
  447. package/gs/runtime/debug/index.test.ts +45 -0
  448. package/gs/runtime/debug/index.ts +96 -0
  449. package/gs/runtime/pprof/index.test.ts +36 -0
  450. package/gs/runtime/pprof/index.ts +104 -0
  451. package/gs/runtime/pprof/meta.json +6 -0
  452. package/gs/runtime/runtime.test.ts +19 -0
  453. package/gs/runtime/runtime.ts +98 -3
  454. package/gs/runtime/trace/index.test.ts +45 -0
  455. package/gs/runtime/trace/index.ts +97 -0
  456. package/gs/runtime/trace/meta.json +7 -0
  457. package/gs/slices/meta.json +2 -1
  458. package/gs/slices/slices.test.ts +180 -0
  459. package/gs/slices/slices.ts +502 -15
  460. package/gs/sort/meta.json +7 -0
  461. package/gs/sort/slice.gs.ts +85 -26
  462. package/gs/sort/slice.test.ts +40 -0
  463. package/gs/sort/sort.gs.ts +16 -13
  464. package/gs/strings/builder.test.ts +8 -0
  465. package/gs/strings/builder.ts +33 -20
  466. package/gs/strings/iter.test.ts +5 -7
  467. package/gs/strings/iter.ts +146 -71
  468. package/gs/strings/replace.test.ts +1 -4
  469. package/gs/strings/replace.ts +6 -6
  470. package/gs/strings/strings.test.ts +4 -0
  471. package/gs/strings/strings.ts +54 -6
  472. package/gs/sync/atomic/type.gs.ts +13 -14
  473. package/gs/sync/meta.json +3 -1
  474. package/gs/sync/sync.test.ts +69 -1
  475. package/gs/sync/sync.ts +72 -13
  476. package/gs/syscall/constants.ts +39 -24
  477. package/gs/syscall/errors.ts +165 -112
  478. package/gs/syscall/fs.ts +195 -0
  479. package/gs/syscall/js/index.ts +485 -0
  480. package/gs/syscall/js/meta.json +4 -0
  481. package/gs/syscall/net.test.ts +111 -0
  482. package/gs/syscall/types.ts +63 -2
  483. package/gs/testing/index.ts +1 -0
  484. package/gs/testing/meta.json +5 -0
  485. package/gs/testing/testing.test.ts +146 -0
  486. package/gs/testing/testing.ts +399 -0
  487. package/gs/time/meta.json +2 -2
  488. package/gs/time/time.test.ts +110 -0
  489. package/gs/time/time.ts +309 -57
  490. package/gs/unicode/unicode.test.ts +36 -0
  491. package/gs/unicode/unicode.ts +115 -9
  492. package/gs/unicode/utf8/utf8.test.ts +13 -0
  493. package/gs/unicode/utf8/utf8.ts +28 -16
  494. package/gs/unique/index.ts +98 -0
  495. package/package.json +3 -2
@@ -66,7 +66,7 @@ export class Buffer {
66
66
  // The slice aliases the buffer content at least until the next buffer modification,
67
67
  // so immediate changes to the slice will affect the result of future reads.
68
68
  public Bytes(): $.Bytes {
69
- const b = this
69
+ const b = $.pointerValue<Buffer>(this)
70
70
  return $.goSlice(b.buf, b.off, undefined)
71
71
  }
72
72
 
@@ -75,7 +75,7 @@ export class Buffer {
75
75
  // passed to an immediately succeeding [Buffer.Write] call.
76
76
  // The buffer is only valid until the next write operation on b.
77
77
  public AvailableBuffer(): $.Bytes {
78
- const b = this
78
+ const b = $.pointerValue<Buffer>(this)
79
79
  return $.goSlice(b.buf, $.len(b.buf), undefined)
80
80
  }
81
81
 
@@ -84,7 +84,7 @@ export class Buffer {
84
84
  //
85
85
  // To build strings more efficiently, see the [strings.Builder] type.
86
86
  public String(): string {
87
- const b = this
87
+ const b = $.pointerValueOrNil<Buffer>(this)
88
88
  if (b == null) {
89
89
  // Special case, useful in debugging.
90
90
  return "<nil>"
@@ -97,27 +97,27 @@ export class Buffer {
97
97
 
98
98
  // empty reports whether the unread portion of the buffer is empty.
99
99
  public empty(): boolean {
100
- const b = this
100
+ const b = $.pointerValue<Buffer>(this)
101
101
  return $.len(b.buf) <= b.off
102
102
  }
103
103
 
104
104
  // Len returns the number of bytes of the unread portion of the buffer;
105
105
  // b.Len() == len(b.Bytes()).
106
106
  public Len(): number {
107
- const b = this
107
+ const b = $.pointerValue<Buffer>(this)
108
108
  return $.len(b.buf) - b.off
109
109
  }
110
110
 
111
111
  // Cap returns the capacity of the buffer's underlying byte slice, that is, the
112
112
  // total space allocated for the buffer's data.
113
113
  public Cap(): number {
114
- const b = this
114
+ const b = $.pointerValue<Buffer>(this)
115
115
  return $.cap(b.buf)
116
116
  }
117
117
 
118
118
  // Available returns how many bytes are unused in the buffer.
119
119
  public Available(): number {
120
- const b = this
120
+ const b = $.pointerValue<Buffer>(this)
121
121
  return $.cap(b.buf) - $.len(b.buf)
122
122
  }
123
123
 
@@ -125,7 +125,7 @@ export class Buffer {
125
125
  // but continues to use the same allocated storage.
126
126
  // It panics if n is negative or greater than the length of the buffer.
127
127
  public Truncate(n: number): void {
128
- const b = this
128
+ const b = $.pointerValue<Buffer>(this)
129
129
  if (n == 0) {
130
130
  b.Reset()
131
131
  return
@@ -141,7 +141,7 @@ export class Buffer {
141
141
  // but it retains the underlying storage for use by future writes.
142
142
  // Reset is the same as [Buffer.Truncate](0).
143
143
  public Reset(): void {
144
- const b = this
144
+ const b = $.pointerValue<Buffer>(this)
145
145
  b.buf = $.goSlice(b.buf, undefined, 0)
146
146
  b.off = 0
147
147
  b.lastRead = 0
@@ -151,7 +151,7 @@ export class Buffer {
151
151
  // internal buffer only needs to be resliced.
152
152
  // It returns the index where bytes should be written and whether it succeeded.
153
153
  public tryGrowByReslice(n: number): [number, boolean] {
154
- const b = this
154
+ const b = $.pointerValue<Buffer>(this)
155
155
  if (b.buf === null) {
156
156
  return [0, false]
157
157
  }
@@ -169,7 +169,7 @@ export class Buffer {
169
169
  // It returns the index where bytes should be written.
170
170
  // If the buffer can't grow it will panic with ErrTooLarge.
171
171
  public grow(n: number): number {
172
- const b = this
172
+ const b = $.pointerValue<Buffer>(this)
173
173
  let m = b.Len()
174
174
  if (m == 0 && b.off != 0) {
175
175
  b.Reset()
@@ -210,7 +210,7 @@ export class Buffer {
210
210
  // If n is negative, Grow will panic.
211
211
  // If the buffer can't grow it will panic with [ErrTooLarge].
212
212
  public Grow(n: number): void {
213
- const b = this
213
+ const b = $.pointerValue<Buffer>(this)
214
214
  if (n < 0) {
215
215
  $.panic("bytes.Buffer.Grow: negative count")
216
216
  }
@@ -222,7 +222,7 @@ export class Buffer {
222
222
  // needed. The return value n is the length of p; err is always nil. If the
223
223
  // buffer becomes too large, Write will panic with [ErrTooLarge].
224
224
  public Write(p: $.Bytes): [number, $.GoError] {
225
- const b = this
225
+ const b = $.pointerValue<Buffer>(this)
226
226
  b.lastRead = 0
227
227
  let [m, ok] = b.tryGrowByReslice($.len(p))
228
228
  if (!ok) {
@@ -248,7 +248,7 @@ export class Buffer {
248
248
  // needed. The return value n is the length of s; err is always nil. If the
249
249
  // buffer becomes too large, WriteString will panic with [ErrTooLarge].
250
250
  public WriteString(s: string): [number, $.GoError] {
251
- const b = this
251
+ const b = $.pointerValue<Buffer>(this)
252
252
  b.lastRead = 0
253
253
  let [m, ok] = b.tryGrowByReslice($.len(s))
254
254
  if (!ok) {
@@ -269,28 +269,30 @@ export class Buffer {
269
269
  // error except io.EOF encountered during the read is also returned. If the
270
270
  // buffer becomes too large, ReadFrom will panic with [ErrTooLarge].
271
271
  public ReadFrom(r: io.Reader): [number, $.GoError] {
272
- const b = this
273
- b.lastRead = 0
274
- let n = 0
275
- for (; ; ) {
276
- let i = b.grow(512)
277
- b.buf = $.goSlice(b.buf, undefined, i)
278
- let [m, e] = r!.Read($.bytesToUint8Array($.goSlice(b.buf, i, $.cap(b.buf))))
279
- if (m < 0) {
280
- $.panic(errNegativeRead)
281
- }
272
+ return (async (): Promise<[number, $.GoError]> => {
273
+ const b = $.pointerValue<Buffer>(this)
274
+ b.lastRead = 0
275
+ let n = 0
276
+ for (; ; ) {
277
+ let i = b.grow(512)
278
+ b.buf = $.goSlice(b.buf, undefined, i)
279
+ let [m, e] = await (r!.Read($.bytesToUint8Array($.goSlice(b.buf, i, $.cap(b.buf)))) as any)
280
+ if (m < 0) {
281
+ $.panic(errNegativeRead)
282
+ }
282
283
 
283
- b.buf = $.goSlice(b.buf, undefined, i + m)
284
- n += (m as number)
284
+ b.buf = $.goSlice(b.buf, undefined, i + m)
285
+ n += (m as number)
285
286
 
286
- // e is EOF, so return nil explicitly
287
- if (e == io.EOF) {
288
- return [n, null]
289
- }
290
- if (e != null) {
291
- return [n, e]
287
+ // e is EOF, so return nil explicitly
288
+ if (e == io.EOF) {
289
+ return [n, null]
290
+ }
291
+ if (e != null) {
292
+ return [n, e]
293
+ }
292
294
  }
293
- }
295
+ })() as any
294
296
  }
295
297
 
296
298
  // WriteTo writes data to w until the buffer is drained or an error occurs.
@@ -298,30 +300,32 @@ export class Buffer {
298
300
  // int, but it is int64 to match the [io.WriterTo] interface. Any error
299
301
  // encountered during the write is also returned.
300
302
  public WriteTo(w: io.Writer): [number, $.GoError] {
301
- const b = this
302
- b.lastRead = 0
303
- let n = 0
304
- {
305
- let nBytes = b.Len()
306
- if (nBytes > 0) {
307
- let [m, e] = w!.Write($.bytesToUint8Array($.goSlice(b.buf, b.off, undefined)))
308
- if (m > nBytes) {
309
- $.panic("bytes.Buffer.WriteTo: invalid Write count")
310
- }
311
- b.off += m
312
- n = (m as number)
313
- if (e != null) {
314
- return [n, e]
315
- }
316
- // all bytes should have been written, by definition of
317
- // Write method in io.Writer
318
- if (m != nBytes) {
319
- return [n, io.ErrShortWrite]
303
+ return (async (): Promise<[number, $.GoError]> => {
304
+ const b = $.pointerValue<Buffer>(this)
305
+ b.lastRead = 0
306
+ let n = 0
307
+ {
308
+ let nBytes = b.Len()
309
+ if (nBytes > 0) {
310
+ let [m, e] = await (w!.Write($.bytesToUint8Array($.goSlice(b.buf, b.off, undefined))) as any)
311
+ if (m > nBytes) {
312
+ $.panic("bytes.Buffer.WriteTo: invalid Write count")
313
+ }
314
+ b.off += m
315
+ n = (m as number)
316
+ if (e != null) {
317
+ return [n, e]
318
+ }
319
+ // all bytes should have been written, by definition of
320
+ // Write method in io.Writer
321
+ if (m != nBytes) {
322
+ return [n, io.ErrShortWrite]
323
+ }
320
324
  }
321
325
  }
322
- }
323
- b.Reset()
324
- return [n, null]
326
+ b.Reset()
327
+ return [n, null]
328
+ })() as any
325
329
  }
326
330
 
327
331
  // WriteByte appends the byte c to the buffer, growing the buffer as needed.
@@ -329,7 +333,7 @@ export class Buffer {
329
333
  // WriteByte. If the buffer becomes too large, WriteByte will panic with
330
334
  // [ErrTooLarge].
331
335
  public WriteByte(c: number): $.GoError {
332
- const b = this
336
+ const b = $.pointerValue<Buffer>(this)
333
337
  b.lastRead = 0
334
338
  let [m, ok] = b.tryGrowByReslice(1)
335
339
  if (!ok) {
@@ -344,7 +348,7 @@ export class Buffer {
344
348
  // included to match [bufio.Writer]'s WriteRune. The buffer is grown as needed;
345
349
  // if it becomes too large, WriteRune will panic with [ErrTooLarge].
346
350
  public WriteRune(r: number): [number, $.GoError] {
347
- const b = this
351
+ const b = $.pointerValue<Buffer>(this)
348
352
  if ((r as number) < utf8.RuneSelf) {
349
353
  b.WriteByte($.byte(r))
350
354
  return [1, null]
@@ -363,7 +367,7 @@ export class Buffer {
363
367
  // buffer has no data to return, err is [io.EOF] (unless len(p) is zero);
364
368
  // otherwise it is nil.
365
369
  public Read(p: $.Bytes): [number, $.GoError] {
366
- const b = this
370
+ const b = $.pointerValue<Buffer>(this)
367
371
  b.lastRead = 0
368
372
  if (b.empty()) {
369
373
  // Buffer is empty, reset to recover space.
@@ -373,7 +377,7 @@ export class Buffer {
373
377
  }
374
378
  return [0, io.EOF]
375
379
  }
376
- const n = $.copy($.bytesToUint8Array(p), $.bytesToUint8Array($.goSlice(b.buf, b.off, undefined)))
380
+ const n = $.copy(p, $.goSlice(b.buf, b.off, undefined))
377
381
  b.off += n
378
382
  if (n > 0) {
379
383
  b.lastRead = -1
@@ -386,7 +390,7 @@ export class Buffer {
386
390
  // If there are fewer than n bytes in the buffer, Next returns the entire buffer.
387
391
  // The slice is only valid until the next call to a read or write method.
388
392
  public Next(n: number): $.Bytes {
389
- const b = this
393
+ const b = $.pointerValue<Buffer>(this)
390
394
  b.lastRead = 0
391
395
  let m = b.Len()
392
396
  if (n > m) {
@@ -403,7 +407,7 @@ export class Buffer {
403
407
  // Peek returns the next n bytes without advancing the buffer.
404
408
  // If fewer than n bytes are available, it returns the unread bytes and io.EOF.
405
409
  public Peek(n: number): [$.Bytes, $.GoError] {
406
- const b = this
410
+ const b = $.pointerValue<Buffer>(this)
407
411
  if (n < 0) {
408
412
  return [null, errors.New("bytes.Buffer.Peek: negative count")]
409
413
  }
@@ -424,7 +428,7 @@ export class Buffer {
424
428
  // ReadByte reads and returns the next byte from the buffer.
425
429
  // If no byte is available, it returns error [io.EOF].
426
430
  public ReadByte(): [number, $.GoError] {
427
- const b = this
431
+ const b = $.pointerValue<Buffer>(this)
428
432
  if (b.empty()) {
429
433
  // Buffer is empty, reset to recover space.
430
434
  b.Reset()
@@ -442,7 +446,7 @@ export class Buffer {
442
446
  // If the bytes are an erroneous UTF-8 encoding, it
443
447
  // consumes one byte and returns U+FFFD, 1.
444
448
  public ReadRune(): [number, number, $.GoError] {
445
- const b = this
449
+ const b = $.pointerValue<Buffer>(this)
446
450
  if (b.empty()) {
447
451
  // Buffer is empty, reset to recover space.
448
452
  b.Reset()
@@ -468,7 +472,7 @@ export class Buffer {
468
472
  // it is stricter than [Buffer.UnreadByte], which will unread the last byte
469
473
  // from any read operation.)
470
474
  public UnreadRune(): $.GoError {
471
- const b = this
475
+ const b = $.pointerValue<Buffer>(this)
472
476
  if (b.lastRead <= 0) {
473
477
  return errors.New("bytes.Buffer: UnreadRune: previous operation was not a successful ReadRune")
474
478
  }
@@ -484,7 +488,7 @@ export class Buffer {
484
488
  // the last read, if the last read returned an error, or if the read read zero
485
489
  // bytes, UnreadByte returns an error.
486
490
  public UnreadByte(): $.GoError {
487
- const b = this
491
+ const b = $.pointerValue<Buffer>(this)
488
492
  if (b.lastRead == 0) {
489
493
  return errUnreadByte
490
494
  }
@@ -502,7 +506,7 @@ export class Buffer {
502
506
  // ReadBytes returns err != nil if and only if the returned data does not end in
503
507
  // delim.
504
508
  public ReadBytes(delim: number): [$.Bytes, $.GoError] {
505
- const b = this
509
+ const b = $.pointerValue<Buffer>(this)
506
510
  let [slice, err] = b.readSlice(delim)
507
511
  let line = $.append<number>(null, slice)
508
512
  return [line, err]
@@ -510,7 +514,7 @@ export class Buffer {
510
514
 
511
515
  // readSlice is like ReadBytes but returns a reference to internal buffer data.
512
516
  public readSlice(delim: number): [$.Bytes, $.GoError] {
513
- const b = this
517
+ const b = $.pointerValue<Buffer>(this)
514
518
  let i = IndexByte($.goSlice(b.buf, b.off, undefined), delim)
515
519
  let end = b.off + i + 1
516
520
  let err: $.GoError = null
@@ -532,7 +536,7 @@ export class Buffer {
532
536
  // ReadString returns err != nil if and only if the returned data does not end
533
537
  // in delim.
534
538
  public ReadString(delim: number): [string, $.GoError] {
535
- const b = this
539
+ const b = $.pointerValue<Buffer>(this)
536
540
  let slice: $.Bytes
537
541
  let err: $.GoError
538
542
  [slice, err] = b.readSlice(delim)
@@ -603,8 +607,8 @@ export function growSlice(b: $.Bytes, n: number): $.Bytes {
603
607
  // we could rely purely on append to determine the growth rate.
604
608
  c = 2 * $.cap(b)
605
609
  }
606
- let b2 = $.append<number>(null, new Uint8Array(c))
607
- let i = $.copy($.bytesToUint8Array(b2), $.bytesToUint8Array(b))
610
+ let b2 = $.makeSlice<number>(c, c, 'byte')
611
+ let i = $.copy(b2, b)
608
612
  return $.goSlice(b2, undefined, i)
609
613
  }
610
614
 
@@ -13,7 +13,7 @@ import * as utf8 from "@goscript/unicode/utf8/index.js"
13
13
  // If s does not end in a newline, the final yielded line will not end in a newline.
14
14
  // It returns a single-use iterator.
15
15
  export function Lines(s: $.Bytes): iter.Seq<$.Bytes> {
16
- return (_yield: ((p0: $.Bytes) => boolean) | null): void => {
16
+ return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
17
17
  for (; $.len(s) > 0; ) {
18
18
  let line: $.Bytes = new Uint8Array(0)
19
19
  {
@@ -24,7 +24,7 @@ export function Lines(s: $.Bytes): iter.Seq<$.Bytes> {
24
24
  [line, s] = [s, null]
25
25
  }
26
26
  }
27
- if (!_yield!($.goSlice(line, undefined, $.len(line), $.len(line)))) {
27
+ if (!await _yield!($.goSlice(line, undefined, $.len(line), $.len(line)))) {
28
28
  return
29
29
  }
30
30
  }
@@ -34,10 +34,10 @@ export function Lines(s: $.Bytes): iter.Seq<$.Bytes> {
34
34
 
35
35
  // explodeSeq returns an iterator over the runes in s.
36
36
  export function explodeSeq(s: $.Bytes): iter.Seq<$.Bytes> {
37
- return (_yield: ((p0: $.Bytes) => boolean) | null): void => {
37
+ return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
38
38
  for (; $.len(s) > 0; ) {
39
39
  let [, size] = utf8.DecodeRune(s)
40
- if (!_yield!($.goSlice(s, undefined, size, size))) {
40
+ if (!await _yield!($.goSlice(s, undefined, size, size))) {
41
41
  return
42
42
  }
43
43
  s = $.goSlice(s, size, undefined)
@@ -51,19 +51,19 @@ export function splitSeq(s: $.Bytes, sep: $.Bytes, sepSave: number): iter.Seq<$.
51
51
  if ($.len(sep) == 0) {
52
52
  return explodeSeq(s)
53
53
  }
54
- return (_yield: ((p0: $.Bytes) => boolean) | null): void => {
54
+ return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
55
55
  for (; ; ) {
56
56
  let i = Index(s, sep)
57
57
  if (i < 0) {
58
58
  break
59
59
  }
60
60
  let frag = $.goSlice(s, undefined, i + sepSave)
61
- if (!_yield!($.goSlice(frag, undefined, $.len(frag), $.len(frag)))) {
61
+ if (!await _yield!($.goSlice(frag, undefined, $.len(frag), $.len(frag)))) {
62
62
  return
63
63
  }
64
64
  s = $.goSlice(s, i + $.len(sep), undefined)
65
65
  }
66
- _yield!($.goSlice(s, undefined, $.len(s), $.len(s)))
66
+ await _yield!($.goSlice(s, undefined, $.len(s), $.len(s)))
67
67
  }
68
68
  }
69
69
 
@@ -88,7 +88,7 @@ export function SplitAfterSeq(s: $.Bytes, sep: $.Bytes): iter.Seq<$.Bytes> {
88
88
  // The iterator yields the same subslices that would be returned by [Fields](s),
89
89
  // but without constructing a new slice containing the subslices.
90
90
  export function FieldsSeq(s: $.Bytes): iter.Seq<$.Bytes> {
91
- return (_yield: ((p0: $.Bytes) => boolean) | null): void => {
91
+ return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
92
92
  let start = -1
93
93
  for (let i = 0; i < $.len(s); ) {
94
94
  let size = 1
@@ -100,7 +100,7 @@ export function FieldsSeq(s: $.Bytes): iter.Seq<$.Bytes> {
100
100
  }
101
101
  if (isSpace) {
102
102
  if (start >= 0) {
103
- if (!_yield!($.goSlice(s, start, i, i))) {
103
+ if (!await _yield!($.goSlice(s, start, i, i))) {
104
104
  return
105
105
  }
106
106
  start = -1
@@ -111,7 +111,7 @@ export function FieldsSeq(s: $.Bytes): iter.Seq<$.Bytes> {
111
111
  i += size
112
112
  }
113
113
  if (start >= 0) {
114
- _yield!($.goSlice(s, start, $.len(s), $.len(s)))
114
+ await _yield!($.goSlice(s, start, $.len(s), $.len(s)))
115
115
  }
116
116
  }
117
117
  }
@@ -121,7 +121,7 @@ export function FieldsSeq(s: $.Bytes): iter.Seq<$.Bytes> {
121
121
  // The iterator yields the same subslices that would be returned by [FieldsFunc](s),
122
122
  // but without constructing a new slice containing the subslices.
123
123
  export function FieldsFuncSeq(s: $.Bytes, f: ((p0: number) => boolean) | null): iter.Seq<$.Bytes> {
124
- return (_yield: ((p0: $.Bytes) => boolean) | null): void => {
124
+ return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
125
125
  let start = -1
126
126
  for (let i = 0; i < $.len(s); ) {
127
127
  let size = 1
@@ -131,7 +131,7 @@ export function FieldsFuncSeq(s: $.Bytes, f: ((p0: number) => boolean) | null):
131
131
  }
132
132
  if (f!(r)) {
133
133
  if (start >= 0) {
134
- if (!_yield!($.goSlice(s, start, i, i))) {
134
+ if (!await _yield!($.goSlice(s, start, i, i))) {
135
135
  return
136
136
  }
137
137
  start = -1
@@ -142,8 +142,7 @@ export function FieldsFuncSeq(s: $.Bytes, f: ((p0: number) => boolean) | null):
142
142
  i += size
143
143
  }
144
144
  if (start >= 0) {
145
- _yield!($.goSlice(s, start, $.len(s), $.len(s)))
145
+ await _yield!($.goSlice(s, start, $.len(s), $.len(s)))
146
146
  }
147
147
  }
148
148
  }
149
-
@@ -1,10 +1,15 @@
1
1
  {
2
2
  "dependencies": [
3
3
  "errors",
4
- "io",
4
+ "io",
5
5
  "iter",
6
6
  "unicode",
7
7
  "unicode/utf8",
8
8
  "unsafe"
9
- ]
10
- }
9
+ ],
10
+ "asyncMethods": {
11
+ "Buffer.ReadFrom": true,
12
+ "Buffer.WriteTo": true,
13
+ "Reader.WriteTo": true
14
+ }
15
+ }
@@ -80,7 +80,7 @@ export class Reader {
80
80
  return [0, io.EOF]
81
81
  }
82
82
  r.prevRune = -1
83
- const n = $.copy($.bytesToUint8Array(b), $.bytesToUint8Array($.goSlice(r.s, r.i, undefined)))
83
+ const n = $.copy(b, $.goSlice(r.s, r.i, undefined))
84
84
  r.i += (n as number)
85
85
  return [n, null]
86
86
  }
@@ -94,7 +94,7 @@ export class Reader {
94
94
  if (off >= ($.len(r.s) as number)) {
95
95
  return [0, io.EOF]
96
96
  }
97
- const n = $.copy($.bytesToUint8Array(b), $.bytesToUint8Array($.goSlice(r.s, off, undefined)))
97
+ const n = $.copy(b, $.goSlice(r.s, off, undefined))
98
98
  let err: $.GoError = null
99
99
  if (n < $.len(b)) {
100
100
  err = io.EOF
@@ -187,22 +187,24 @@ export class Reader {
187
187
 
188
188
  // WriteTo implements the [io.WriterTo] interface.
189
189
  public WriteTo(w: io.Writer): [number, $.GoError] {
190
- const r = this
191
- r.prevRune = -1
192
- if (r.i >= ($.len(r.s) as number)) {
193
- return [0, null]
194
- }
195
- const b = $.goSlice(r.s, r.i, undefined)
196
- const [m, err] = w!.Write($.bytesToUint8Array(b))
197
- if (m > $.len(b)) {
198
- $.panic("bytes.Reader.WriteTo: invalid Write count")
199
- }
200
- r.i += (m as number)
201
- const n = (m as number)
202
- if (m != $.len(b) && err == null) {
203
- return [n, io.ErrShortWrite]
204
- }
205
- return [n, err]
190
+ return (async (): Promise<[number, $.GoError]> => {
191
+ const r = this
192
+ r.prevRune = -1
193
+ if (r.i >= ($.len(r.s) as number)) {
194
+ return [0, null]
195
+ }
196
+ const b = $.goSlice(r.s, r.i, undefined)
197
+ const [m, err] = await (w!.Write($.bytesToUint8Array(b)) as any)
198
+ if (m > $.len(b)) {
199
+ $.panic("bytes.Reader.WriteTo: invalid Write count")
200
+ }
201
+ r.i += (m as number)
202
+ const n = (m as number)
203
+ if (m != $.len(b) && err == null) {
204
+ return [n, io.ErrShortWrite]
205
+ }
206
+ return [n, err]
207
+ })() as any
206
208
  }
207
209
 
208
210
  // Reset resets the [Reader] to be reading from b.
@@ -227,4 +229,3 @@ export class Reader {
227
229
  export function NewReader(b: $.Bytes): Reader {
228
230
  return new Reader({s: $.normalizeBytes(b), i: 0, prevRune: -1})
229
231
  }
230
-
@@ -0,0 +1,28 @@
1
+ import { describe, expect, test } from 'vitest'
2
+
3
+ import * as $ from '@goscript/builtin/index.js'
4
+ import * as bytes from '@goscript/bytes/index.js'
5
+ import * as io from '@goscript/io/index.js'
6
+
7
+ import { NewReader, NewWriter } from './index.js'
8
+
9
+ describe('compress/zlib override', () => {
10
+ test('round trips bytes through writer and reader', async () => {
11
+ const input = $.stringToBytes('hello compressed world')
12
+ const buf = $.markAsStructValue(new bytes.Buffer())
13
+ const writer = NewWriter(buf)
14
+
15
+ const [written, writeErr] = writer.Write(input)
16
+ expect(writeErr).toBeNull()
17
+ expect(written).toBe(input.length)
18
+ expect(await writer.Close()).toBeNull()
19
+
20
+ const [reader, readerErr] = await NewReader(bytes.NewReader(buf.Bytes()))
21
+ expect(readerErr).toBeNull()
22
+ expect(reader).not.toBeNull()
23
+
24
+ const [out, readErr] = await io.ReadAll(reader!)
25
+ expect(readErr).toBeNull()
26
+ expect($.bytesToString(out)).toBe('hello compressed world')
27
+ })
28
+ })