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
package/gs/syscall/fs.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import * as $ from '@goscript/builtin/index.js'
2
+ import { RWMutex } from '@goscript/sync/index.js'
2
3
  import { ENOSYS } from './errors.js'
4
+ import type { Iovec, Sockaddr } from './types.js'
3
5
 
4
6
  // Dirent structure with Reclen field
5
7
  export class Dirent {
@@ -54,9 +56,202 @@ export function Sysctl(_name: string): [string, $.GoError] {
54
56
  return ['', ENOSYS]
55
57
  }
56
58
 
59
+ export function Unlink(_path: string): $.GoError {
60
+ return ENOSYS
61
+ }
62
+
63
+ export const ForkLock = new RWMutex()
64
+
65
+ export function Close(_fd: number): $.GoError {
66
+ return null
67
+ }
68
+
69
+ export function CloseOnExec(_fd: number): void {}
70
+
71
+ export function SetNonblock(_fd: number, _nonblocking: boolean): $.GoError {
72
+ return null
73
+ }
74
+
75
+ export function Fchdir(_fd: number): $.GoError {
76
+ return ENOSYS
77
+ }
78
+
79
+ export function Fchmod(_fd: number, _mode: number): $.GoError {
80
+ return ENOSYS
81
+ }
82
+
83
+ export function Fchown(_fd: number, _uid: number, _gid: number): $.GoError {
84
+ return ENOSYS
85
+ }
86
+
87
+ export function Fstat(
88
+ _fd: number,
89
+ _stat: Stat_t | $.VarRef<Stat_t> | null,
90
+ ): $.GoError {
91
+ return ENOSYS
92
+ }
93
+
94
+ export function Fsync(_fd: number): $.GoError {
95
+ return ENOSYS
96
+ }
97
+
98
+ export function Ftruncate(_fd: number, _length: number): $.GoError {
99
+ return ENOSYS
100
+ }
101
+
102
+ export function Read(_fd: number, _b: $.Bytes | null): [number, $.GoError] {
103
+ return [0, ENOSYS]
104
+ }
105
+
106
+ export function ReadDirent(
107
+ _fd: number,
108
+ _buf: $.Bytes | null,
109
+ ): [number, $.GoError] {
110
+ return [0, ENOSYS]
111
+ }
112
+
113
+ export function Pread(
114
+ _fd: number,
115
+ _b: $.Bytes | null,
116
+ _offset: number,
117
+ ): [number, $.GoError] {
118
+ return [0, ENOSYS]
119
+ }
120
+
121
+ export function Pwrite(
122
+ _fd: number,
123
+ _b: $.Bytes | null,
124
+ _offset: number,
125
+ ): [number, $.GoError] {
126
+ return [0, ENOSYS]
127
+ }
128
+
129
+ export function Seek(
130
+ _fd: number,
131
+ _offset: number,
132
+ _whence: number,
133
+ ): [number, $.GoError] {
134
+ return [0, ENOSYS]
135
+ }
136
+
137
+ export function Write(_fd: number, _b: $.Bytes | null): [number, $.GoError] {
138
+ return [0, ENOSYS]
139
+ }
140
+
141
+ export function Dup(_fd: number): [number, $.GoError] {
142
+ return [0, ENOSYS]
143
+ }
144
+
57
145
  // Getpagesize returns the underlying system's memory page size.
58
146
  export function Getpagesize(): number {
59
147
  // Return a standard page size for JavaScript environment
60
148
  // Most systems use 4096 bytes as the default page size
61
149
  return 4096
62
150
  }
151
+
152
+ export function Socket(
153
+ _domain: number,
154
+ _typ: number,
155
+ _proto: number,
156
+ ): [number, $.GoError] {
157
+ return [-1, ENOSYS]
158
+ }
159
+
160
+ export function Connect(_fd: number, _sa: Sockaddr | null): $.GoError {
161
+ return ENOSYS
162
+ }
163
+
164
+ export function Listen(_fd: number, _backlog: number): $.GoError {
165
+ return ENOSYS
166
+ }
167
+
168
+ export function Bind(_fd: number, _sa: Sockaddr | null): $.GoError {
169
+ return ENOSYS
170
+ }
171
+
172
+ export function StopIO(_fd: number): $.GoError {
173
+ return ENOSYS
174
+ }
175
+
176
+ export function Accept(_fd: number): [number, Sockaddr | null, $.GoError] {
177
+ return [0, null, ENOSYS]
178
+ }
179
+
180
+ export function Recvfrom(
181
+ _fd: number,
182
+ _p: $.Bytes | null,
183
+ _flags: number,
184
+ ): [number, Sockaddr | null, $.GoError] {
185
+ return [0, null, ENOSYS]
186
+ }
187
+
188
+ export function Sendto(
189
+ _fd: number,
190
+ _p: $.Bytes | null,
191
+ _flags: number,
192
+ _to: Sockaddr | null,
193
+ ): $.GoError {
194
+ return ENOSYS
195
+ }
196
+
197
+ export function Recvmsg(
198
+ _fd: number,
199
+ _p: $.Bytes | null,
200
+ _oob: $.Bytes | null,
201
+ _flags: number,
202
+ ): [number, number, number, Sockaddr | null, $.GoError] {
203
+ return [0, 0, 0, null, ENOSYS]
204
+ }
205
+
206
+ export function SendmsgN(
207
+ _fd: number,
208
+ _p: $.Bytes | null,
209
+ _oob: $.Bytes | null,
210
+ _to: Sockaddr | null,
211
+ _flags: number,
212
+ ): [number, $.GoError] {
213
+ return [0, ENOSYS]
214
+ }
215
+
216
+ export function SetReadDeadline(_fd: number, _t: number): $.GoError {
217
+ return ENOSYS
218
+ }
219
+
220
+ export function SetWriteDeadline(_fd: number, _t: number): $.GoError {
221
+ return ENOSYS
222
+ }
223
+
224
+ export function Shutdown(_fd: number, _how: number): $.GoError {
225
+ return ENOSYS
226
+ }
227
+
228
+ export function GetsockoptInt(
229
+ _fd: number,
230
+ _level: number,
231
+ _opt: number,
232
+ ): [number, $.GoError] {
233
+ return [0, ENOSYS]
234
+ }
235
+
236
+ export function SetsockoptInt(
237
+ _fd: number,
238
+ _level: number,
239
+ _opt: number,
240
+ _value: number,
241
+ ): $.GoError {
242
+ return null
243
+ }
244
+
245
+ export function readv(
246
+ _fd: number,
247
+ _iovecs: $.Slice<Iovec> | null,
248
+ ): [number, $.GoError] {
249
+ return [0, ENOSYS]
250
+ }
251
+
252
+ export function writev(
253
+ _fd: number,
254
+ _iovecs: $.Slice<Iovec> | null,
255
+ ): [number, $.GoError] {
256
+ return [0, ENOSYS]
257
+ }
@@ -0,0 +1,485 @@
1
+ import * as $ from '@goscript/builtin/index.js'
2
+
3
+ export type Type = number
4
+
5
+ export const TypeUndefined: Type = 0
6
+ export const TypeNull: Type = 1
7
+ export const TypeBoolean: Type = 2
8
+ export const TypeNumber: Type = 3
9
+ export const TypeString: Type = 4
10
+ export const TypeSymbol: Type = 5
11
+ export const TypeObject: Type = 6
12
+ export const TypeFunction: Type = 7
13
+
14
+ export class Value {
15
+ public _raw: unknown
16
+
17
+ constructor(init?: Partial<{ raw: unknown }> | unknown) {
18
+ if (isRawInit(init)) {
19
+ this._raw = init.raw
20
+ return
21
+ }
22
+ this._raw = init
23
+ }
24
+
25
+ public clone(): Value {
26
+ return new Value({ raw: this._raw })
27
+ }
28
+
29
+ public Equal(w: Value): boolean {
30
+ return this._raw === w._raw && !Number.isNaN(this._raw)
31
+ }
32
+
33
+ public IsUndefined(): boolean {
34
+ return this._raw === undefined
35
+ }
36
+
37
+ public IsNull(): boolean {
38
+ return this._raw === null
39
+ }
40
+
41
+ public IsNaN(): boolean {
42
+ return typeof this._raw === 'number' && Number.isNaN(this._raw)
43
+ }
44
+
45
+ public Type(): Type {
46
+ if (this._raw === undefined) {
47
+ return TypeUndefined
48
+ }
49
+ if (this._raw === null) {
50
+ return TypeNull
51
+ }
52
+ switch (typeof this._raw) {
53
+ case 'boolean':
54
+ return TypeBoolean
55
+ case 'number':
56
+ return TypeNumber
57
+ case 'string':
58
+ return TypeString
59
+ case 'symbol':
60
+ return TypeSymbol
61
+ case 'function':
62
+ return TypeFunction
63
+ case 'object':
64
+ return TypeObject
65
+ default:
66
+ $.panic('bad type')
67
+ }
68
+ }
69
+
70
+ public Get(p: string): Value {
71
+ this.requireObject('Value.Get')
72
+ return new Value({ raw: Reflect.get(this._raw as object, p) })
73
+ }
74
+
75
+ public Set(p: string, x: unknown): void {
76
+ this.requireObject('Value.Set')
77
+ Reflect.set(this._raw as object, p, ValueOf(x)._raw)
78
+ }
79
+
80
+ public Delete(p: string): void {
81
+ this.requireObject('Value.Delete')
82
+ Reflect.deleteProperty(this._raw as object, p)
83
+ }
84
+
85
+ public Index(i: number): Value {
86
+ this.requireObject('Value.Index')
87
+ return new Value({ raw: Reflect.get(this._raw as object, i) })
88
+ }
89
+
90
+ public SetIndex(i: number, x: unknown): void {
91
+ this.requireObject('Value.SetIndex')
92
+ Reflect.set(this._raw as object, i, ValueOf(x)._raw)
93
+ }
94
+
95
+ public Length(): number {
96
+ this.requireObject('Value.SetIndex')
97
+ return Number(Reflect.get(this._raw as object, 'length') ?? 0)
98
+ }
99
+
100
+ public Call(m: string, ...args: unknown[]): Value {
101
+ this.requireObject('Value.Call')
102
+ const fn = Reflect.get(this._raw as object, m)
103
+ if (typeof fn !== 'function') {
104
+ $.panic(
105
+ `syscall/js: Value.Call: property ${m} is not a function, got ${Type_String(ValueOf(fn).Type())}`,
106
+ )
107
+ }
108
+ return new Value({
109
+ raw: fn.apply(
110
+ this._raw,
111
+ args.map((arg) => ValueOf(arg)._raw),
112
+ ),
113
+ })
114
+ }
115
+
116
+ public Invoke(...args: unknown[]): Value {
117
+ if (typeof this._raw !== 'function') {
118
+ $.panic(new ValueError({ Method: 'Value.Invoke', Type: this.Type() }))
119
+ }
120
+ return new Value({
121
+ raw: this._raw(...args.map((arg) => ValueOf(arg)._raw)),
122
+ })
123
+ }
124
+
125
+ public New(...args: unknown[]): Value {
126
+ if (typeof this._raw !== 'function') {
127
+ $.panic(new ValueError({ Method: 'Value.Invoke', Type: this.Type() }))
128
+ }
129
+ return new Value({
130
+ raw: Reflect.construct(
131
+ this._raw,
132
+ args.map((arg) => ValueOf(arg)._raw),
133
+ ),
134
+ })
135
+ }
136
+
137
+ public InstanceOf(t: Value): boolean {
138
+ if (typeof t._raw !== 'function') {
139
+ return false
140
+ }
141
+ return this._raw instanceof t._raw
142
+ }
143
+
144
+ public Float(): number {
145
+ return this.number('Value.Float')
146
+ }
147
+
148
+ public Int(): number {
149
+ return Math.trunc(this.number('Value.Int'))
150
+ }
151
+
152
+ public Bool(): boolean {
153
+ if (typeof this._raw !== 'boolean') {
154
+ $.panic(new ValueError({ Method: 'Value.Bool', Type: this.Type() }))
155
+ }
156
+ return this._raw
157
+ }
158
+
159
+ public Truthy(): boolean {
160
+ return !!this._raw
161
+ }
162
+
163
+ public String(): string {
164
+ switch (this.Type()) {
165
+ case TypeString:
166
+ return this._raw as string
167
+ case TypeUndefined:
168
+ return '<undefined>'
169
+ case TypeNull:
170
+ return '<null>'
171
+ case TypeBoolean:
172
+ case TypeNumber:
173
+ return `<${Type_String(this.Type())}: ${String(this._raw)}>`
174
+ case TypeSymbol:
175
+ return '<symbol>'
176
+ case TypeObject:
177
+ return '<object>'
178
+ case TypeFunction:
179
+ return '<function>'
180
+ default:
181
+ $.panic('bad type')
182
+ }
183
+ }
184
+
185
+ private requireObject(method: string): void {
186
+ if (!Type_isObject(this.Type())) {
187
+ $.panic(new ValueError({ Method: method, Type: this.Type() }))
188
+ }
189
+ }
190
+
191
+ private number(method: string): number {
192
+ if (typeof this._raw !== 'number') {
193
+ $.panic(new ValueError({ Method: method, Type: this.Type() }))
194
+ }
195
+ return this._raw
196
+ }
197
+ }
198
+
199
+ export class Error {
200
+ public Value: Value
201
+
202
+ constructor(init?: Partial<Error>) {
203
+ this.Value = init?.Value?.clone() ?? Undefined()
204
+ }
205
+
206
+ public clone(): Error {
207
+ return new Error({ Value: this.Value })
208
+ }
209
+
210
+ public Error(): string {
211
+ return `JavaScript error: ${this.Value.Get('message').String()}`
212
+ }
213
+ }
214
+
215
+ export class ValueError {
216
+ public Method: string
217
+ public Type: Type
218
+
219
+ constructor(init?: Partial<ValueError>) {
220
+ this.Method = init?.Method ?? ''
221
+ this.Type = init?.Type ?? TypeUndefined
222
+ }
223
+
224
+ public clone(): ValueError {
225
+ return new ValueError({ Method: this.Method, Type: this.Type })
226
+ }
227
+
228
+ public Error(): string {
229
+ return `syscall/js: call of ${this.Method} on ${Type_String(this.Type)}`
230
+ }
231
+ }
232
+
233
+ export class Func {
234
+ public Value: Value
235
+ private _released = false
236
+
237
+ constructor(
238
+ init?: Partial<Func> & {
239
+ fn?: (this$: Value, args: $.Slice<Value>) => unknown
240
+ },
241
+ ) {
242
+ const fn = init?.fn
243
+ this.Value =
244
+ init?.Value?.clone() ??
245
+ new Value({
246
+ raw: function (this: unknown, ...args: unknown[]) {
247
+ if (fn === undefined) {
248
+ return undefined
249
+ }
250
+ return ValueOf(
251
+ fn(
252
+ new Value({ raw: this }),
253
+ args.map((arg) => new Value({ raw: arg })) as $.Slice<Value>,
254
+ ),
255
+ )._raw
256
+ },
257
+ })
258
+ }
259
+
260
+ public clone(): Func {
261
+ return new Func({ Value: this.Value })
262
+ }
263
+
264
+ public Release(): void {
265
+ this._released = true
266
+ }
267
+
268
+ public Equal(w: Value): boolean {
269
+ return this.Value.Equal(w)
270
+ }
271
+
272
+ public IsUndefined(): boolean {
273
+ return this.Value.IsUndefined()
274
+ }
275
+
276
+ public IsNull(): boolean {
277
+ return this.Value.IsNull()
278
+ }
279
+
280
+ public IsNaN(): boolean {
281
+ return this.Value.IsNaN()
282
+ }
283
+
284
+ public Type(): Type {
285
+ return this.Value.Type()
286
+ }
287
+
288
+ public Get(p: string): Value {
289
+ return this.Value.Get(p)
290
+ }
291
+
292
+ public Set(p: string, x: unknown): void {
293
+ this.Value.Set(p, x)
294
+ }
295
+
296
+ public Delete(p: string): void {
297
+ this.Value.Delete(p)
298
+ }
299
+
300
+ public Index(i: number): Value {
301
+ return this.Value.Index(i)
302
+ }
303
+
304
+ public SetIndex(i: number, x: unknown): void {
305
+ this.Value.SetIndex(i, x)
306
+ }
307
+
308
+ public Length(): number {
309
+ return this.Value.Length()
310
+ }
311
+
312
+ public Call(m: string, ...args: unknown[]): Value {
313
+ return this.Value.Call(m, ...args)
314
+ }
315
+
316
+ public Invoke(...args: unknown[]): Value {
317
+ return this.Value.Invoke(...args)
318
+ }
319
+
320
+ public New(...args: unknown[]): Value {
321
+ return this.Value.New(...args)
322
+ }
323
+
324
+ public InstanceOf(t: Value): boolean {
325
+ return this.Value.InstanceOf(t)
326
+ }
327
+
328
+ public Float(): number {
329
+ return this.Value.Float()
330
+ }
331
+
332
+ public Int(): number {
333
+ return this.Value.Int()
334
+ }
335
+
336
+ public Bool(): boolean {
337
+ return this.Value.Bool()
338
+ }
339
+
340
+ public Truthy(): boolean {
341
+ return this.Value.Truthy()
342
+ }
343
+
344
+ public String(): string {
345
+ return this.Value.String()
346
+ }
347
+ }
348
+
349
+ export function Undefined(): Value {
350
+ return new Value({ raw: undefined })
351
+ }
352
+
353
+ export function Null(): Value {
354
+ return new Value({ raw: null })
355
+ }
356
+
357
+ export function Global(): Value {
358
+ return new Value({ raw: globalThis })
359
+ }
360
+
361
+ export function ValueOf(x: unknown): Value {
362
+ if (x instanceof Value) {
363
+ return x.clone()
364
+ }
365
+ if (x instanceof Func) {
366
+ return x.Value.clone()
367
+ }
368
+ if (x === null || x === undefined) {
369
+ return Null()
370
+ }
371
+ if (
372
+ typeof x === 'boolean' ||
373
+ typeof x === 'number' ||
374
+ typeof x === 'string'
375
+ ) {
376
+ return new Value({ raw: x })
377
+ }
378
+ if (typeof x === 'bigint') {
379
+ return new Value({ raw: Number(x) })
380
+ }
381
+ if (x instanceof Uint8Array) {
382
+ return new Value({ raw: x })
383
+ }
384
+ if (Array.isArray(x)) {
385
+ return new Value({ raw: x.map((item) => ValueOf(item)._raw) })
386
+ }
387
+ if (x instanceof Map) {
388
+ const out: Record<string, unknown> = {}
389
+ for (const [key, value] of x.entries()) {
390
+ out[String(key)] = ValueOf(value)._raw
391
+ }
392
+ return new Value({ raw: out })
393
+ }
394
+ return new Value({ raw: x })
395
+ }
396
+
397
+ export function FuncOf(
398
+ fn: (this$: Value, args: $.Slice<Value>) => unknown,
399
+ ): Func {
400
+ return new Func({ fn })
401
+ }
402
+
403
+ export function Type_String(t: Type): string {
404
+ switch (t) {
405
+ case TypeUndefined:
406
+ return 'undefined'
407
+ case TypeNull:
408
+ return 'null'
409
+ case TypeBoolean:
410
+ return 'boolean'
411
+ case TypeNumber:
412
+ return 'number'
413
+ case TypeString:
414
+ return 'string'
415
+ case TypeSymbol:
416
+ return 'symbol'
417
+ case TypeObject:
418
+ return 'object'
419
+ case TypeFunction:
420
+ return 'function'
421
+ default:
422
+ $.panic('bad type')
423
+ }
424
+ }
425
+
426
+ export function Type_isObject(t: Type): boolean {
427
+ return t === TypeObject || t === TypeFunction
428
+ }
429
+
430
+ export function CopyBytesToGo(dst: $.Bytes | null, src: Value): number {
431
+ const bytes = sourceBytes(src)
432
+ const n = Math.min($.len(dst), bytes.length)
433
+ if (dst instanceof Uint8Array) {
434
+ dst.set(bytes.subarray(0, n), 0)
435
+ return n
436
+ }
437
+ const arr = $.asArray(dst)
438
+ for (let i = 0; i < n; i++) {
439
+ arr[i] = bytes[i]
440
+ }
441
+ return n
442
+ }
443
+
444
+ export function CopyBytesToJS(dst: Value, src: $.Bytes | null): number {
445
+ const target = dstRawBytes(dst)
446
+ const bytes =
447
+ src instanceof Uint8Array ? src : Uint8Array.from($.asArray(src))
448
+ const n = Math.min(target.length, bytes.length)
449
+ target.set(bytes.subarray(0, n), 0)
450
+ return n
451
+ }
452
+
453
+ function sourceBytes(src: Value): Uint8Array {
454
+ const raw = srcRaw(src)
455
+ if (raw instanceof Uint8Array || raw instanceof Uint8ClampedArray) {
456
+ return raw instanceof Uint8Array ? raw : (
457
+ new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength)
458
+ )
459
+ }
460
+ $.panic(
461
+ 'syscall/js: CopyBytesToGo: expected src to be a Uint8Array or Uint8ClampedArray',
462
+ )
463
+ }
464
+
465
+ function dstRawBytes(dst: Value): Uint8Array | Uint8ClampedArray {
466
+ const raw = srcRaw(dst)
467
+ if (raw instanceof Uint8Array || raw instanceof Uint8ClampedArray) {
468
+ return raw
469
+ }
470
+ $.panic(
471
+ 'syscall/js: CopyBytesToJS: expected dst to be a Uint8Array or Uint8ClampedArray',
472
+ )
473
+ }
474
+
475
+ function srcRaw(value: Value): unknown {
476
+ return (value as unknown as { _raw: unknown })._raw
477
+ }
478
+
479
+ function isRawInit(value: unknown): value is { raw: unknown } {
480
+ return (
481
+ typeof value === 'object' &&
482
+ value !== null &&
483
+ Object.prototype.hasOwnProperty.call(value, 'raw')
484
+ )
485
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "dependencies": [],
3
+ "asyncMethods": {}
4
+ }