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
@@ -0,0 +1,30 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import * as bytes from '@goscript/bytes/index.js';
3
+ import * as http from '@goscript/net/http/index.js';
4
+ import * as io from '@goscript/io/index.js';
5
+ export declare class ResponseRecorder implements http.ResponseWriter {
6
+ Code: number;
7
+ Body: bytes.Buffer;
8
+ private headerMap;
9
+ private wroteHeader;
10
+ Header(): http.Header;
11
+ Write(p: $.Slice<number>): [number, $.GoError];
12
+ WriteHeader(statusCode: number): void;
13
+ Result(): http.Response;
14
+ }
15
+ export declare function NewRecorder(): ResponseRecorder;
16
+ export declare function NewRequest(method: string, target: string, body: io.Reader | null): http.Request;
17
+ export declare class Server {
18
+ URL: string;
19
+ private handler;
20
+ constructor(init?: Partial<Server> & {
21
+ Handler?: http.Handler | null;
22
+ });
23
+ Client(): http.Client;
24
+ Close(): void;
25
+ Config(): http.Server;
26
+ ServeHTTP(w: http.ResponseWriter | null, r: http.Request | $.VarRef<http.Request> | null): void | Promise<void>;
27
+ }
28
+ export declare function NewServer(handler: http.Handler | null): Server;
29
+ export declare function NewUnstartedServer(handler: http.Handler | null): Server;
30
+ export declare function Server_Start(_s: Server | $.VarRef<Server> | null): $.GoError;
@@ -0,0 +1,101 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import * as bytes from '@goscript/bytes/index.js';
3
+ import * as errors from '@goscript/errors/index.js';
4
+ import * as http from '@goscript/net/http/index.js';
5
+ class responseBody {
6
+ reader;
7
+ constructor(data) {
8
+ this.reader = bytes.NewReader(Uint8Array.from(data ?? []));
9
+ }
10
+ Read(p) {
11
+ return this.reader.Read(p);
12
+ }
13
+ Close() {
14
+ return null;
15
+ }
16
+ }
17
+ export class ResponseRecorder {
18
+ Code = 200;
19
+ Body = new bytes.Buffer();
20
+ headerMap = new http.Header();
21
+ wroteHeader = false;
22
+ Header() {
23
+ return this.headerMap;
24
+ }
25
+ Write(p) {
26
+ if (!this.wroteHeader) {
27
+ this.WriteHeader(http.StatusOK);
28
+ }
29
+ return this.Body.Write(p);
30
+ }
31
+ WriteHeader(statusCode) {
32
+ if (this.wroteHeader) {
33
+ return;
34
+ }
35
+ this.wroteHeader = true;
36
+ this.Code = statusCode;
37
+ }
38
+ Result() {
39
+ return new http.Response({
40
+ Body: new responseBody(this.Body.Bytes()),
41
+ Header: this.headerMap,
42
+ StatusCode: this.Code,
43
+ });
44
+ }
45
+ }
46
+ export function NewRecorder() {
47
+ return new ResponseRecorder();
48
+ }
49
+ export function NewRequest(method, target, body) {
50
+ const [req, err] = http.NewRequest(method, target, body);
51
+ if (err != null || req == null) {
52
+ throw err ?? errors.New('net/http/httptest: NewRequest returned nil request');
53
+ }
54
+ return req;
55
+ }
56
+ export class Server {
57
+ URL;
58
+ handler;
59
+ constructor(init) {
60
+ this.URL = init?.URL ?? 'http://127.0.0.1';
61
+ this.handler = init?.Handler ?? null;
62
+ }
63
+ Client() {
64
+ return new http.Client({ Transport: new serverTransport(this) });
65
+ }
66
+ Close() { }
67
+ Config() {
68
+ return new http.Server({ Handler: this.handler });
69
+ }
70
+ ServeHTTP(w, r) {
71
+ return this.handler?.ServeHTTP(w, r);
72
+ }
73
+ }
74
+ class serverTransport {
75
+ server;
76
+ constructor(server) {
77
+ this.server = server;
78
+ }
79
+ RoundTrip(req) {
80
+ const request = $.pointerValue(req);
81
+ if (request == null) {
82
+ return [null, errors.New('net/http: nil Request')];
83
+ }
84
+ const recorder = NewRecorder();
85
+ const served = this.server.ServeHTTP(recorder, request);
86
+ if (served instanceof Promise) {
87
+ return [null, errors.New('net/http/httptest: async handlers are not supported by Client.Do')];
88
+ }
89
+ return [recorder.Result(), null];
90
+ }
91
+ }
92
+ export function NewServer(handler) {
93
+ return new Server({ Handler: handler });
94
+ }
95
+ export function NewUnstartedServer(handler) {
96
+ return new Server({ Handler: handler });
97
+ }
98
+ export function Server_Start(_s) {
99
+ return errors.New('net/http/httptest: Server.Start is not implemented in GoScript');
100
+ }
101
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../gs/net/http/httptest/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import * as context from '@goscript/context/index.js';
3
+ import * as fs from '@goscript/io/fs/fs.js';
4
+ import * as io from '@goscript/io/index.js';
5
+ import * as time from '@goscript/time/index.js';
6
+ export declare const StatusOK = 200;
7
+ export declare const StatusCreated = 201;
8
+ export declare const StatusPartialContent = 206;
9
+ export declare const StatusMovedPermanently = 301;
10
+ export declare const StatusBadRequest = 400;
11
+ export declare const StatusRequestTimeout = 408;
12
+ export declare const StatusConflict = 409;
13
+ export declare const StatusNotFound = 404;
14
+ export declare const StatusTooManyRequests = 429;
15
+ export declare const StatusRequestedRangeNotSatisfiable = 416;
16
+ export declare const StatusInternalServerError = 500;
17
+ export declare const StatusServiceUnavailable = 503;
18
+ export declare const MethodGet = "GET";
19
+ export declare const MethodPost = "POST";
20
+ export declare const MethodDelete = "DELETE";
21
+ export declare const ErrNotSupported: $.GoError;
22
+ export declare const ServerContextKey: unique symbol;
23
+ export declare function StatusText(code: number): string;
24
+ export type Header = Map<string, $.Slice<string>>;
25
+ export declare const Header: {
26
+ new (entries?: Iterable<readonly [string, $.Slice<string>]> | null): Header;
27
+ };
28
+ export declare function Header_Add(h: Header, key: string, value: string): void;
29
+ export declare function Header_Del(h: Header, key: string): void;
30
+ export declare function Header_Get(h: Header, key: string): string;
31
+ export declare function Header_Set(h: Header, key: string, value: string): void;
32
+ export interface ResponseWriter {
33
+ Header(): Header;
34
+ Write(p: $.Slice<number>): [number, $.GoError];
35
+ WriteHeader(statusCode: number): void;
36
+ }
37
+ export declare class Request {
38
+ Method: string;
39
+ URL: any;
40
+ Body: io.Reader | null;
41
+ Header: Header;
42
+ ContentLength: number;
43
+ RequestURI: string;
44
+ RemoteAddr: string;
45
+ private ctx;
46
+ constructor(init?: Partial<Request> & {
47
+ ctx?: context.Context;
48
+ });
49
+ Context(): context.Context;
50
+ WithContext(ctx: context.Context): Request;
51
+ Clone(ctx: context.Context): Request;
52
+ UserAgent(): string;
53
+ FormValue(key: string): string;
54
+ }
55
+ export declare class Response {
56
+ StatusCode: number;
57
+ Body: io.ReadCloser | null;
58
+ Header: Header;
59
+ constructor(init?: Partial<Response>);
60
+ clone(): Response;
61
+ }
62
+ export declare class Client {
63
+ Transport: RoundTripper | null;
64
+ constructor(init?: Partial<Client>);
65
+ Do(_req: Request | $.VarRef<Request> | null): Promise<[Response | null, $.GoError]>;
66
+ }
67
+ export declare const DefaultClient: Client;
68
+ export interface RoundTripper {
69
+ RoundTrip(req: Request | $.VarRef<Request> | null): [Response | null, $.GoError] | Promise<[Response | null, $.GoError]>;
70
+ }
71
+ export declare const DefaultTransport: RoundTripper;
72
+ export interface FileSystem {
73
+ Open(name: string): [File | null, $.GoError];
74
+ }
75
+ export interface File extends io.Closer, io.Reader, io.Seeker {
76
+ Readdir(count: number): [$.Slice<fs.FileInfo>, $.GoError];
77
+ Stat(): [fs.FileInfo, $.GoError];
78
+ }
79
+ export interface Handler {
80
+ ServeHTTP(w: ResponseWriter | null, r: Request | $.VarRef<Request> | null): void | Promise<void>;
81
+ }
82
+ export type HandlerFunc = (w: ResponseWriter | null, r: Request | $.VarRef<Request> | null) => void | Promise<void>;
83
+ export declare function HandlerFunc_ServeHTTP(h: HandlerFunc, w: ResponseWriter | null, r: Request | $.VarRef<Request> | null): void | Promise<void>;
84
+ export declare class Server {
85
+ Addr: string;
86
+ BaseContext: ((listener: any) => context.Context) | null;
87
+ Handler: Handler | null;
88
+ ReadHeaderTimeout: number;
89
+ WriteTimeout: number;
90
+ constructor(init?: Partial<Server>);
91
+ ListenAndServe(): $.GoError;
92
+ ListenAndServeTLS(_certFile: string, _keyFile: string): $.GoError;
93
+ Close(): $.GoError;
94
+ Shutdown(_ctx: context.Context): $.GoError;
95
+ }
96
+ export declare class PushOptions {
97
+ Header: Header;
98
+ constructor(init?: Partial<PushOptions>);
99
+ }
100
+ export interface Flusher {
101
+ Flush(): void;
102
+ }
103
+ export interface Hijacker {
104
+ Hijack(): [any, any, $.GoError];
105
+ }
106
+ export interface Pusher {
107
+ Push(target: string, opts: PushOptions | $.VarRef<PushOptions> | null): $.GoError;
108
+ }
109
+ export declare class ResponseController {
110
+ rw: ResponseWriter | null;
111
+ constructor(rw: ResponseWriter | null);
112
+ Flush(): $.GoError;
113
+ }
114
+ export declare function NewResponseController(rw: ResponseWriter | null): ResponseController;
115
+ export declare class ServeMux implements Handler {
116
+ private handlers;
117
+ Handle(pattern: string, handler: Handler | null): void;
118
+ HandleFunc(pattern: string, handler: HandlerFunc): void;
119
+ Handler(r: Request | $.VarRef<Request> | null): [Handler | null, string];
120
+ ServeHTTP(w: ResponseWriter | null, r: Request | $.VarRef<Request> | null): void | Promise<void>;
121
+ }
122
+ export declare function NewServeMux(): ServeMux;
123
+ export declare function HandleFunc(pattern: string, handler: HandlerFunc): void;
124
+ export declare function StripPrefix(prefix: string, handler: Handler | null): Handler;
125
+ export declare function Error(w: ResponseWriter | null, error: string, code: number): void;
126
+ export declare function NotFound(w: ResponseWriter | null, _r: Request | $.VarRef<Request> | null): void;
127
+ export declare function Redirect(w: ResponseWriter | null, _r: Request | $.VarRef<Request> | null, url: string, code: number): void;
128
+ export declare function ParseTime(text: string): [time.Time, $.GoError];
129
+ export declare function NewRequest(method: string, url: string, body: io.Reader | null): [Request | null, $.GoError];
130
+ export declare function NewRequestWithContext(_ctx: context.Context, method: string, url: string, body: io.Reader | null): [Request | null, $.GoError];
131
+ export declare function Get(_url: string): [Response | null, $.GoError];
@@ -0,0 +1,307 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import * as context from '@goscript/context/index.js';
3
+ import * as errors from '@goscript/errors/index.js';
4
+ import * as time from '@goscript/time/index.js';
5
+ export const StatusOK = 200;
6
+ export const StatusCreated = 201;
7
+ export const StatusPartialContent = 206;
8
+ export const StatusMovedPermanently = 301;
9
+ export const StatusBadRequest = 400;
10
+ export const StatusRequestTimeout = 408;
11
+ export const StatusConflict = 409;
12
+ export const StatusNotFound = 404;
13
+ export const StatusTooManyRequests = 429;
14
+ export const StatusRequestedRangeNotSatisfiable = 416;
15
+ export const StatusInternalServerError = 500;
16
+ export const StatusServiceUnavailable = 503;
17
+ export const MethodGet = 'GET';
18
+ export const MethodPost = 'POST';
19
+ export const MethodDelete = 'DELETE';
20
+ export const ErrNotSupported = errors.New('feature not supported');
21
+ export const ServerContextKey = Symbol('net/http ServerContextKey');
22
+ export function StatusText(code) {
23
+ switch (code) {
24
+ case StatusOK:
25
+ return 'OK';
26
+ case StatusMovedPermanently:
27
+ return 'Moved Permanently';
28
+ case StatusBadRequest:
29
+ return 'Bad Request';
30
+ case StatusRequestTimeout:
31
+ return 'Request Timeout';
32
+ case StatusConflict:
33
+ return 'Conflict';
34
+ case StatusNotFound:
35
+ return 'Not Found';
36
+ case StatusTooManyRequests:
37
+ return 'Too Many Requests';
38
+ case StatusPartialContent:
39
+ return 'Partial Content';
40
+ case StatusRequestedRangeNotSatisfiable:
41
+ return 'Requested Range Not Satisfiable';
42
+ case StatusInternalServerError:
43
+ return 'Internal Server Error';
44
+ case StatusServiceUnavailable:
45
+ return 'Service Unavailable';
46
+ default:
47
+ return '';
48
+ }
49
+ }
50
+ export const Header = Map;
51
+ export function Header_Add(h, key, value) {
52
+ const values = Array.from(h.get(key) ?? []);
53
+ values.push(value);
54
+ h.set(key, $.arrayToSlice(values));
55
+ }
56
+ export function Header_Del(h, key) {
57
+ h.delete(key);
58
+ }
59
+ export function Header_Get(h, key) {
60
+ const values = h.get(key);
61
+ return values == null || values.length === 0 ? '' : String(values[0]);
62
+ }
63
+ export function Header_Set(h, key, value) {
64
+ h.set(key, $.arrayToSlice([value]));
65
+ }
66
+ class QueryValues extends Map {
67
+ Add(key, value) {
68
+ const values = Array.from(this.get(key) ?? []);
69
+ values.push(value);
70
+ this.set(key, $.arrayToSlice(values));
71
+ }
72
+ Get(key) {
73
+ const values = this.get(key);
74
+ return values == null || values.length === 0 ? '' : String(values[0]);
75
+ }
76
+ }
77
+ class RequestURL {
78
+ Path;
79
+ RawQuery;
80
+ constructor(path, rawQuery) {
81
+ this.Path = path;
82
+ this.RawQuery = rawQuery;
83
+ }
84
+ Query() {
85
+ const values = new QueryValues();
86
+ const params = new URLSearchParams(this.RawQuery);
87
+ params.forEach((value, key) => values.Add(key, value));
88
+ return values;
89
+ }
90
+ clone() {
91
+ return new RequestURL(this.Path, this.RawQuery);
92
+ }
93
+ }
94
+ function parseRequestURL(rawURL) {
95
+ try {
96
+ const parsed = new URL(rawURL, 'http://goscript.invalid');
97
+ return new RequestURL(parsed.pathname, parsed.search.startsWith('?') ? parsed.search.slice(1) : parsed.search);
98
+ }
99
+ catch {
100
+ return new RequestURL('', '');
101
+ }
102
+ }
103
+ export class Request {
104
+ Method;
105
+ URL;
106
+ Body;
107
+ Header;
108
+ ContentLength;
109
+ RequestURI;
110
+ RemoteAddr;
111
+ ctx;
112
+ constructor(init) {
113
+ this.Method = init?.Method ?? '';
114
+ this.URL = init?.URL ?? null;
115
+ this.Body = init?.Body ?? null;
116
+ this.Header = init?.Header ?? new Header();
117
+ this.ContentLength = init?.ContentLength ?? 0;
118
+ this.RequestURI = init?.RequestURI ?? '';
119
+ this.RemoteAddr = init?.RemoteAddr ?? '';
120
+ this.ctx = init?.ctx ?? context.Background();
121
+ }
122
+ Context() {
123
+ return this.ctx;
124
+ }
125
+ WithContext(ctx) {
126
+ return this.Clone(ctx);
127
+ }
128
+ Clone(ctx) {
129
+ return new Request({
130
+ Method: this.Method,
131
+ URL: this.URL?.clone != null ? this.URL.clone() : this.URL == null ? null : { ...this.URL },
132
+ Body: this.Body,
133
+ Header: this.Header,
134
+ ContentLength: this.ContentLength,
135
+ RequestURI: this.RequestURI,
136
+ RemoteAddr: this.RemoteAddr,
137
+ ctx,
138
+ });
139
+ }
140
+ UserAgent() {
141
+ return Header_Get(this.Header, 'User-Agent');
142
+ }
143
+ FormValue(key) {
144
+ const query = this.URL?.Query;
145
+ return typeof query === 'function' ? query.call(this.URL).Get(key) : '';
146
+ }
147
+ }
148
+ export class Response {
149
+ StatusCode;
150
+ Body;
151
+ Header;
152
+ constructor(init) {
153
+ this.StatusCode = init?.StatusCode ?? 0;
154
+ this.Body = init?.Body ?? null;
155
+ this.Header = init?.Header ?? new Header();
156
+ }
157
+ clone() {
158
+ return new Response({
159
+ Body: this.Body,
160
+ Header: this.Header,
161
+ StatusCode: this.StatusCode,
162
+ });
163
+ }
164
+ }
165
+ export class Client {
166
+ Transport;
167
+ constructor(init) {
168
+ this.Transport = init?.Transport ?? null;
169
+ }
170
+ async Do(_req) {
171
+ return await (this.Transport ?? DefaultTransport).RoundTrip(_req);
172
+ }
173
+ }
174
+ export const DefaultClient = new Client();
175
+ class unsupportedTransport {
176
+ async RoundTrip(_req) {
177
+ return [null, errors.New('net/http: Client.Do is not implemented in GoScript')];
178
+ }
179
+ }
180
+ export const DefaultTransport = new unsupportedTransport();
181
+ export function HandlerFunc_ServeHTTP(h, w, r) {
182
+ return h(w, r);
183
+ }
184
+ export class Server {
185
+ Addr;
186
+ BaseContext;
187
+ Handler;
188
+ ReadHeaderTimeout;
189
+ WriteTimeout;
190
+ constructor(init) {
191
+ this.Addr = init?.Addr ?? '';
192
+ this.BaseContext = init?.BaseContext ?? null;
193
+ this.Handler = init?.Handler ?? null;
194
+ this.ReadHeaderTimeout = init?.ReadHeaderTimeout ?? 0;
195
+ this.WriteTimeout = init?.WriteTimeout ?? 0;
196
+ }
197
+ ListenAndServe() {
198
+ return errors.New('net/http: Server.ListenAndServe is not implemented in GoScript');
199
+ }
200
+ ListenAndServeTLS(_certFile, _keyFile) {
201
+ return errors.New('net/http: Server.ListenAndServeTLS is not implemented in GoScript');
202
+ }
203
+ Close() {
204
+ return null;
205
+ }
206
+ Shutdown(_ctx) {
207
+ return null;
208
+ }
209
+ }
210
+ export class PushOptions {
211
+ Header;
212
+ constructor(init) {
213
+ this.Header = init?.Header ?? new Header();
214
+ }
215
+ }
216
+ export class ResponseController {
217
+ rw;
218
+ constructor(rw) {
219
+ this.rw = rw;
220
+ }
221
+ Flush() {
222
+ const flusher = this.rw;
223
+ flusher?.Flush?.();
224
+ return null;
225
+ }
226
+ }
227
+ export function NewResponseController(rw) {
228
+ return new ResponseController(rw);
229
+ }
230
+ export class ServeMux {
231
+ handlers = new Map();
232
+ Handle(pattern, handler) {
233
+ if (handler != null) {
234
+ this.handlers.set(pattern, handler);
235
+ }
236
+ }
237
+ HandleFunc(pattern, handler) {
238
+ this.Handle(pattern, { ServeHTTP: handler });
239
+ }
240
+ Handler(r) {
241
+ const req = $.pointerValue(r);
242
+ const path = req?.URL?.Path ?? '';
243
+ const handler = this.handlers.get(path) ?? null;
244
+ return [handler, handler == null ? '' : path];
245
+ }
246
+ ServeHTTP(w, r) {
247
+ const [handler] = this.Handler(r);
248
+ if (handler == null) {
249
+ NotFound(w, r);
250
+ return;
251
+ }
252
+ return handler.ServeHTTP(w, r);
253
+ }
254
+ }
255
+ const defaultServeMux = new ServeMux();
256
+ export function NewServeMux() {
257
+ return new ServeMux();
258
+ }
259
+ export function HandleFunc(pattern, handler) {
260
+ defaultServeMux.HandleFunc(pattern, handler);
261
+ }
262
+ export function StripPrefix(prefix, handler) {
263
+ return {
264
+ ServeHTTP(w, r) {
265
+ const req = $.pointerValue(r);
266
+ if (req?.URL != null && typeof req.URL.Path === 'string' && req.URL.Path.startsWith(prefix)) {
267
+ req.URL = { ...req.URL, Path: req.URL.Path.slice(prefix.length) || '/' };
268
+ }
269
+ return handler?.ServeHTTP(w, req);
270
+ },
271
+ };
272
+ }
273
+ export function Error(w, error, code) {
274
+ w?.WriteHeader(code);
275
+ w?.Write($.stringToBytes(error + '\n'));
276
+ }
277
+ export function NotFound(w, _r) {
278
+ Error(w, '404 page not found', StatusNotFound);
279
+ }
280
+ export function Redirect(w, _r, url, code) {
281
+ const header = w?.Header();
282
+ if (header != null) {
283
+ Header_Set(header, 'Location', url);
284
+ }
285
+ w?.WriteHeader(code);
286
+ }
287
+ export function ParseTime(text) {
288
+ const date = new globalThis.Date(text);
289
+ if (isNaN(date.getTime())) {
290
+ return [new time.Time(), $.newError(`parsing time "${text}" as HTTP-date: cannot parse`)];
291
+ }
292
+ return [time.UnixMilli(date.getTime()), null];
293
+ }
294
+ export function NewRequest(method, url, body) {
295
+ return NewRequestWithContext(null, method, url, body);
296
+ }
297
+ export function NewRequestWithContext(_ctx, method, url, body) {
298
+ if (method === '') {
299
+ method = MethodGet;
300
+ }
301
+ const parsedURL = parseRequestURL(url);
302
+ return [new Request({ Method: method, URL: parsedURL, Body: body, RequestURI: parsedURL.Path, ctx: _ctx }), null];
303
+ }
304
+ export function Get(_url) {
305
+ return [null, errors.New('net/http: Get is not implemented in GoScript')];
306
+ }
307
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/net/http/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import * as http from '@goscript/net/http/index.js';
3
+ export declare function Index(w: http.ResponseWriter | null, _r: http.Request | $.VarRef<http.Request> | null): void;
4
+ export declare function Cmdline(w: http.ResponseWriter | null, _r: http.Request | $.VarRef<http.Request> | null): void;
5
+ export declare function Profile(w: http.ResponseWriter | null, _r: http.Request | $.VarRef<http.Request> | null): void;
6
+ export declare function Symbol(w: http.ResponseWriter | null, _r: http.Request | $.VarRef<http.Request> | null): void;
7
+ export declare function Trace(w: http.ResponseWriter | null, _r: http.Request | $.VarRef<http.Request> | null): void;
8
+ export declare function Handler(name: string): http.Handler;
@@ -0,0 +1,59 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import * as http from '@goscript/net/http/index.js';
3
+ import * as pprof from '@goscript/runtime/pprof/index.js';
4
+ function writeString(w, value) {
5
+ w?.Write($.stringToBytes(value));
6
+ }
7
+ export function Index(w, _r) {
8
+ const header = w?.Header();
9
+ if (header != null) {
10
+ http.Header_Set(header, 'Content-Type', 'text/html; charset=utf-8');
11
+ }
12
+ writeString(w, '<html><body><a href="goroutine?debug=2">full goroutine stack dump</a></body></html>');
13
+ }
14
+ export function Cmdline(w, _r) {
15
+ const header = w?.Header();
16
+ if (header != null) {
17
+ http.Header_Set(header, 'Content-Type', 'text/plain; charset=utf-8');
18
+ }
19
+ writeString(w, 'goscript');
20
+ }
21
+ export function Profile(w, _r) {
22
+ const header = w?.Header();
23
+ if (header != null) {
24
+ http.Header_Set(header, 'Content-Type', 'application/octet-stream');
25
+ }
26
+ writeString(w, 'cpu profile\n');
27
+ }
28
+ export function Symbol(w, _r) {
29
+ const header = w?.Header();
30
+ if (header != null) {
31
+ http.Header_Set(header, 'Content-Type', 'text/plain; charset=utf-8');
32
+ }
33
+ writeString(w, 'num_symbols: 0\n');
34
+ }
35
+ export function Trace(w, _r) {
36
+ const header = w?.Header();
37
+ if (header != null) {
38
+ http.Header_Set(header, 'Content-Type', 'application/octet-stream');
39
+ }
40
+ writeString(w, 'trace\n');
41
+ }
42
+ export function Handler(name) {
43
+ return {
44
+ ServeHTTP(w) {
45
+ const header = w?.Header();
46
+ if (header != null) {
47
+ http.Header_Set(header, 'Content-Type', 'text/plain; charset=utf-8');
48
+ }
49
+ const profile = pprof.Lookup(name);
50
+ if (profile == null) {
51
+ http.NotFound(w, null);
52
+ return;
53
+ }
54
+ writeString(w, `${name} profile\n`);
55
+ profile.WriteTo(w, 1);
56
+ },
57
+ };
58
+ }
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../gs/net/http/pprof/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,6BAA6B,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAA;AAEzD,SAAS,WAAW,CAAC,CAA6B,EAAE,KAAa;IAC/D,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAA6B,EAAE,EAAgD;IACnG,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,0BAA0B,CAAC,CAAA;IACrE,CAAC;IACD,WAAW,CAAC,CAAC,EAAE,qFAAqF,CAAC,CAAA;AACvG,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAA6B,EAAE,EAAgD;IACrG,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,2BAA2B,CAAC,CAAA;IACtE,CAAC;IACD,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAA6B,EAAE,EAAgD;IACrG,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,0BAA0B,CAAC,CAAA;IACrE,CAAC;IACD,WAAW,CAAC,CAAC,EAAE,eAAe,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAA6B,EAAE,EAAgD;IACpG,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,2BAA2B,CAAC,CAAA;IACtE,CAAC;IACD,WAAW,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAA6B,EAAE,EAAgD;IACnG,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,0BAA0B,CAAC,CAAA;IACrE,CAAC;IACD,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO;QACL,SAAS,CAAC,CAAC;YACT,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;YAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,2BAA2B,CAAC,CAAA;YACtE,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;gBACtB,OAAM;YACR,CAAC;YACD,WAAW,CAAC,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,CAAA;YACnC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACvB,CAAC;KACF,CAAA;AACH,CAAC"}