goscript 0.1.0 → 0.1.1

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 (327) hide show
  1. package/README.md +267 -255
  2. package/cmd/goscript/cmd-test.go +193 -0
  3. package/cmd/goscript/cmd-test_test.go +76 -0
  4. package/cmd/goscript/main.go +1 -0
  5. package/compiler/build-flags.go +38 -0
  6. package/compiler/compile-request.go +2 -0
  7. package/compiler/compliance_test.go +0 -8
  8. package/compiler/gotest/owner.go +24 -0
  9. package/compiler/gotest/package-result.go +67 -0
  10. package/compiler/gotest/request.go +145 -0
  11. package/compiler/gotest/result.go +28 -0
  12. package/compiler/gotest/runner.go +588 -0
  13. package/compiler/gotest/runner_test.go +627 -0
  14. package/compiler/gotest/test.go +9 -0
  15. package/compiler/index.test.ts +1 -1
  16. package/compiler/lowered-program.go +71 -19
  17. package/compiler/lowering.go +5065 -569
  18. package/compiler/override-facts.go +307 -0
  19. package/compiler/override-registry.go +50 -189
  20. package/compiler/override-registry_test.go +47 -0
  21. package/compiler/package-graph.go +50 -27
  22. package/compiler/package-graph_test.go +37 -2
  23. package/compiler/package-test-function.go +9 -0
  24. package/compiler/package-test-graph-package.go +40 -0
  25. package/compiler/package-test-graph-variant.go +105 -0
  26. package/compiler/package-test-graph.go +117 -0
  27. package/compiler/package-test-graph_test.go +144 -0
  28. package/compiler/runtime-contract.go +189 -29
  29. package/compiler/runtime-contract_test.go +44 -30
  30. package/compiler/semantic-model-types.go +9 -6
  31. package/compiler/semantic-model.go +538 -38
  32. package/compiler/semantic-model_test.go +55 -0
  33. package/compiler/service.go +1 -1
  34. package/compiler/skeleton_test.go +679 -49
  35. package/compiler/tsworkspace/owner.go +334 -0
  36. package/compiler/tsworkspace/owner_test.go +93 -0
  37. package/compiler/tsworkspace/result.go +17 -0
  38. package/compiler/typescript-emitter.go +459 -82
  39. package/compiler/wasm/compile.go +1 -1
  40. package/compiler/wasm/compile_test.go +61 -11
  41. package/compiler/wasm_api.go +172 -7
  42. package/dist/gs/builtin/builtin.d.ts +20 -2
  43. package/dist/gs/builtin/builtin.js +194 -6
  44. package/dist/gs/builtin/builtin.js.map +1 -1
  45. package/dist/gs/builtin/channel.d.ts +8 -0
  46. package/dist/gs/builtin/channel.js +12 -0
  47. package/dist/gs/builtin/channel.js.map +1 -1
  48. package/dist/gs/builtin/slice.d.ts +22 -2
  49. package/dist/gs/builtin/slice.js +216 -44
  50. package/dist/gs/builtin/slice.js.map +1 -1
  51. package/dist/gs/builtin/type.d.ts +5 -2
  52. package/dist/gs/builtin/type.js +83 -24
  53. package/dist/gs/builtin/type.js.map +1 -1
  54. package/dist/gs/builtin/varRef.d.ts +5 -0
  55. package/dist/gs/builtin/varRef.js +23 -0
  56. package/dist/gs/builtin/varRef.js.map +1 -1
  57. package/dist/gs/bytes/buffer.gs.js +48 -44
  58. package/dist/gs/bytes/buffer.gs.js.map +1 -1
  59. package/dist/gs/bytes/reader.gs.js +20 -18
  60. package/dist/gs/bytes/reader.gs.js.map +1 -1
  61. package/dist/gs/context/context.d.ts +5 -4
  62. package/dist/gs/context/context.js +10 -10
  63. package/dist/gs/context/context.js.map +1 -1
  64. package/dist/gs/crypto/internal/fips140deps/byteorder/index.d.ts +1 -0
  65. package/dist/gs/crypto/internal/fips140deps/byteorder/index.js +2 -0
  66. package/dist/gs/crypto/internal/fips140deps/byteorder/index.js.map +1 -0
  67. package/dist/gs/crypto/internal/fips140deps/godebug/index.d.ts +1 -0
  68. package/dist/gs/crypto/internal/fips140deps/godebug/index.js +2 -0
  69. package/dist/gs/crypto/internal/fips140deps/godebug/index.js.map +1 -0
  70. package/dist/gs/embed/index.d.ts +7 -0
  71. package/dist/gs/embed/index.js +16 -0
  72. package/dist/gs/embed/index.js.map +1 -0
  73. package/dist/gs/encoding/json/index.d.ts +1 -0
  74. package/dist/gs/encoding/json/index.js +18 -0
  75. package/dist/gs/encoding/json/index.js.map +1 -1
  76. package/dist/gs/errors/errors.d.ts +4 -0
  77. package/dist/gs/errors/errors.js +81 -0
  78. package/dist/gs/errors/errors.js.map +1 -1
  79. package/dist/gs/fmt/fmt.d.ts +4 -4
  80. package/dist/gs/fmt/fmt.js +42 -11
  81. package/dist/gs/fmt/fmt.js.map +1 -1
  82. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +35 -0
  83. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +211 -1
  84. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js.map +1 -1
  85. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.d.ts +189 -0
  86. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js +825 -0
  87. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -0
  88. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +163 -0
  89. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +449 -0
  90. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +1 -0
  91. package/dist/gs/github.com/klauspost/compress/internal/le/index.d.ts +9 -0
  92. package/dist/gs/github.com/klauspost/compress/internal/le/index.js +71 -0
  93. package/dist/gs/github.com/klauspost/compress/internal/le/index.js.map +1 -0
  94. package/dist/gs/go/internal/scannerhooks/index.d.ts +3 -0
  95. package/dist/gs/go/internal/scannerhooks/index.js +5 -0
  96. package/dist/gs/go/internal/scannerhooks/index.js.map +1 -0
  97. package/dist/gs/go/scanner/index.d.ts +13 -0
  98. package/dist/gs/go/scanner/index.js +35 -0
  99. package/dist/gs/go/scanner/index.js.map +1 -1
  100. package/dist/gs/go/token/index.d.ts +156 -0
  101. package/dist/gs/go/token/index.js +500 -4
  102. package/dist/gs/go/token/index.js.map +1 -1
  103. package/dist/gs/internal/abi/index.d.ts +4 -0
  104. package/dist/gs/internal/abi/index.js +10 -0
  105. package/dist/gs/internal/abi/index.js.map +1 -1
  106. package/dist/gs/internal/bytealg/index.d.ts +2 -0
  107. package/dist/gs/internal/bytealg/index.js +14 -0
  108. package/dist/gs/internal/bytealg/index.js.map +1 -1
  109. package/dist/gs/internal/byteorder/index.d.ts +8 -2
  110. package/dist/gs/internal/byteorder/index.js +56 -25
  111. package/dist/gs/internal/byteorder/index.js.map +1 -1
  112. package/dist/gs/internal/godebug/index.d.ts +12 -0
  113. package/dist/gs/internal/godebug/index.js +30 -0
  114. package/dist/gs/internal/godebug/index.js.map +1 -0
  115. package/dist/gs/io/fs/index.d.ts +1 -0
  116. package/dist/gs/io/fs/index.js +1 -0
  117. package/dist/gs/io/fs/index.js.map +1 -1
  118. package/dist/gs/io/fs/readlink.d.ts +8 -0
  119. package/dist/gs/io/fs/readlink.js +64 -0
  120. package/dist/gs/io/fs/readlink.js.map +1 -0
  121. package/dist/gs/io/fs/walk.d.ts +3 -3
  122. package/dist/gs/io/fs/walk.js +7 -7
  123. package/dist/gs/io/fs/walk.js.map +1 -1
  124. package/dist/gs/io/io.d.ts +40 -6
  125. package/dist/gs/io/io.js +151 -26
  126. package/dist/gs/io/io.js.map +1 -1
  127. package/dist/gs/maps/iter.d.ts +3 -3
  128. package/dist/gs/maps/iter.js +3 -3
  129. package/dist/gs/maps/iter.js.map +1 -1
  130. package/dist/gs/maps/maps.d.ts +2 -2
  131. package/dist/gs/maps/maps.js +1 -1
  132. package/dist/gs/maps/maps.js.map +1 -1
  133. package/dist/gs/math/bits/index.d.ts +13 -4
  134. package/dist/gs/math/bits/index.js +66 -34
  135. package/dist/gs/math/bits/index.js.map +1 -1
  136. package/dist/gs/math/const.gs.d.ts +5 -5
  137. package/dist/gs/math/const.gs.js +4 -4
  138. package/dist/gs/math/const.gs.js.map +1 -1
  139. package/dist/gs/mime/index.d.ts +1 -0
  140. package/dist/gs/mime/index.js +50 -0
  141. package/dist/gs/mime/index.js.map +1 -0
  142. package/dist/gs/net/http/httptest/index.d.ts +11 -0
  143. package/dist/gs/net/http/httptest/index.js +21 -0
  144. package/dist/gs/net/http/httptest/index.js.map +1 -0
  145. package/dist/gs/net/http/index.d.ts +27 -0
  146. package/dist/gs/net/http/index.js +61 -0
  147. package/dist/gs/net/http/index.js.map +1 -0
  148. package/dist/gs/os/dir_unix.gs.js +2 -2
  149. package/dist/gs/os/dir_unix.gs.js.map +1 -1
  150. package/dist/gs/os/types_js.gs.js.map +1 -1
  151. package/dist/gs/path/filepath/match.js +165 -3
  152. package/dist/gs/path/filepath/match.js.map +1 -1
  153. package/dist/gs/path/filepath/path.d.ts +3 -1
  154. package/dist/gs/path/filepath/path.js +133 -4
  155. package/dist/gs/path/filepath/path.js.map +1 -1
  156. package/dist/gs/path/path.d.ts +4 -1
  157. package/dist/gs/path/path.js +16 -4
  158. package/dist/gs/path/path.js.map +1 -1
  159. package/dist/gs/reflect/index.d.ts +1 -1
  160. package/dist/gs/reflect/index.js +1 -1
  161. package/dist/gs/reflect/index.js.map +1 -1
  162. package/dist/gs/reflect/map.js +3 -0
  163. package/dist/gs/reflect/map.js.map +1 -1
  164. package/dist/gs/reflect/type.d.ts +7 -4
  165. package/dist/gs/reflect/type.js +148 -7
  166. package/dist/gs/reflect/type.js.map +1 -1
  167. package/dist/gs/runtime/debug/index.d.ts +2 -0
  168. package/dist/gs/runtime/debug/index.js +8 -0
  169. package/dist/gs/runtime/debug/index.js.map +1 -0
  170. package/dist/gs/runtime/runtime.d.ts +35 -3
  171. package/dist/gs/runtime/runtime.js +72 -0
  172. package/dist/gs/runtime/runtime.js.map +1 -1
  173. package/dist/gs/slices/slices.d.ts +24 -5
  174. package/dist/gs/slices/slices.js +214 -5
  175. package/dist/gs/slices/slices.js.map +1 -1
  176. package/dist/gs/sort/slice.gs.d.ts +3 -3
  177. package/dist/gs/sort/slice.gs.js +6 -6
  178. package/dist/gs/sort/slice.gs.js.map +1 -1
  179. package/dist/gs/sort/sort.gs.d.ts +4 -4
  180. package/dist/gs/sort/sort.gs.js +11 -8
  181. package/dist/gs/sort/sort.gs.js.map +1 -1
  182. package/dist/gs/strings/builder.d.ts +1 -1
  183. package/dist/gs/strings/builder.js +3 -2
  184. package/dist/gs/strings/builder.js.map +1 -1
  185. package/dist/gs/sync/atomic/type.gs.d.ts +9 -8
  186. package/dist/gs/sync/atomic/type.gs.js +0 -2
  187. package/dist/gs/sync/atomic/type.gs.js.map +1 -1
  188. package/dist/gs/sync/sync.d.ts +2 -0
  189. package/dist/gs/sync/sync.js +27 -0
  190. package/dist/gs/sync/sync.js.map +1 -1
  191. package/dist/gs/syscall/constants.d.ts +36 -24
  192. package/dist/gs/syscall/constants.js +12 -0
  193. package/dist/gs/syscall/constants.js.map +1 -1
  194. package/dist/gs/syscall/errors.d.ts +2 -0
  195. package/dist/gs/syscall/errors.js +8 -0
  196. package/dist/gs/syscall/errors.js.map +1 -1
  197. package/dist/gs/syscall/fs.d.ts +43 -0
  198. package/dist/gs/syscall/fs.js +102 -0
  199. package/dist/gs/syscall/fs.js.map +1 -1
  200. package/dist/gs/syscall/js/index.d.ts +90 -0
  201. package/dist/gs/syscall/js/index.js +375 -0
  202. package/dist/gs/syscall/js/index.js.map +1 -0
  203. package/dist/gs/syscall/types.d.ts +22 -0
  204. package/dist/gs/syscall/types.js +45 -1
  205. package/dist/gs/syscall/types.js.map +1 -1
  206. package/dist/gs/testing/index.d.ts +1 -0
  207. package/dist/gs/testing/index.js +2 -0
  208. package/dist/gs/testing/index.js.map +1 -0
  209. package/dist/gs/testing/testing.d.ts +77 -0
  210. package/dist/gs/testing/testing.js +301 -0
  211. package/dist/gs/testing/testing.js.map +1 -0
  212. package/dist/gs/time/time.d.ts +41 -4
  213. package/dist/gs/time/time.js +205 -36
  214. package/dist/gs/time/time.js.map +1 -1
  215. package/dist/gs/unicode/unicode.d.ts +23 -1
  216. package/dist/gs/unicode/unicode.js +79 -10
  217. package/dist/gs/unicode/unicode.js.map +1 -1
  218. package/dist/gs/unicode/utf8/utf8.d.ts +4 -4
  219. package/dist/gs/unicode/utf8/utf8.js +24 -11
  220. package/dist/gs/unicode/utf8/utf8.js.map +1 -1
  221. package/dist/gs/unique/index.d.ts +11 -0
  222. package/dist/gs/unique/index.js +71 -0
  223. package/dist/gs/unique/index.js.map +1 -0
  224. package/go.sum +9 -0
  225. package/gs/builtin/builtin.ts +239 -8
  226. package/gs/builtin/channel.ts +22 -0
  227. package/gs/builtin/runtime-contract.test.ts +126 -0
  228. package/gs/builtin/slice.ts +259 -50
  229. package/gs/builtin/type.ts +109 -34
  230. package/gs/builtin/varRef.ts +38 -1
  231. package/gs/bytes/buffer.gs.ts +48 -44
  232. package/gs/bytes/meta.json +8 -3
  233. package/gs/bytes/reader.gs.ts +20 -19
  234. package/gs/context/context.test.ts +41 -0
  235. package/gs/context/context.ts +22 -26
  236. package/gs/crypto/internal/fips140deps/byteorder/index.ts +1 -0
  237. package/gs/crypto/internal/fips140deps/godebug/index.ts +1 -0
  238. package/gs/embed/index.ts +20 -0
  239. package/gs/embed/meta.json +5 -0
  240. package/gs/encoding/json/index.test.ts +15 -1
  241. package/gs/encoding/json/index.ts +24 -0
  242. package/gs/errors/errors.test.ts +82 -0
  243. package/gs/errors/errors.ts +104 -0
  244. package/gs/fmt/fmt.ts +56 -16
  245. package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +73 -1
  246. package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +297 -1
  247. package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +159 -0
  248. package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +1005 -0
  249. package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +719 -0
  250. package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +40 -0
  251. package/gs/github.com/klauspost/compress/internal/le/index.test.ts +36 -0
  252. package/gs/github.com/klauspost/compress/internal/le/index.ts +114 -0
  253. package/gs/go/internal/scannerhooks/index.test.ts +14 -0
  254. package/gs/go/internal/scannerhooks/index.ts +9 -0
  255. package/gs/go/scanner/index.test.ts +22 -0
  256. package/gs/go/scanner/index.ts +47 -0
  257. package/gs/go/token/index.test.ts +47 -1
  258. package/gs/go/token/index.ts +570 -4
  259. package/gs/internal/abi/index.test.ts +18 -0
  260. package/gs/internal/abi/index.ts +14 -0
  261. package/gs/internal/bytealg/index.test.ts +18 -0
  262. package/gs/internal/bytealg/index.ts +16 -0
  263. package/gs/internal/byteorder/index.test.ts +39 -0
  264. package/gs/internal/byteorder/index.ts +100 -27
  265. package/gs/internal/godebug/index.test.ts +16 -0
  266. package/gs/internal/godebug/index.ts +35 -0
  267. package/gs/io/fs/index.ts +1 -0
  268. package/gs/io/fs/meta.json +5 -0
  269. package/gs/io/fs/readlink.test.ts +43 -0
  270. package/gs/io/fs/readlink.ts +77 -0
  271. package/gs/io/fs/walk.test.ts +61 -0
  272. package/gs/io/fs/walk.ts +9 -9
  273. package/gs/io/io.ts +174 -31
  274. package/gs/io/meta.json +10 -2
  275. package/gs/maps/iter.ts +12 -6
  276. package/gs/maps/maps.ts +8 -6
  277. package/gs/math/bits/index.ts +103 -47
  278. package/gs/math/const.gs.test.ts +11 -5
  279. package/gs/math/const.gs.ts +5 -6
  280. package/gs/mime/index.ts +54 -0
  281. package/gs/net/http/httptest/index.ts +25 -0
  282. package/gs/net/http/index.test.ts +20 -0
  283. package/gs/net/http/index.ts +81 -0
  284. package/gs/os/dir_unix.gs.ts +2 -3
  285. package/gs/os/types_js.gs.ts +2 -2
  286. package/gs/path/filepath/match.test.ts +31 -12
  287. package/gs/path/filepath/match.ts +178 -3
  288. package/gs/path/filepath/path.test.ts +25 -0
  289. package/gs/path/filepath/path.ts +159 -5
  290. package/gs/path/path.ts +20 -5
  291. package/gs/reflect/index.ts +1 -0
  292. package/gs/reflect/map.test.ts +19 -0
  293. package/gs/reflect/map.ts +4 -0
  294. package/gs/reflect/type.ts +197 -17
  295. package/gs/runtime/debug/index.test.ts +24 -0
  296. package/gs/runtime/debug/index.ts +8 -0
  297. package/gs/runtime/runtime.test.ts +19 -0
  298. package/gs/runtime/runtime.ts +98 -3
  299. package/gs/slices/slices.test.ts +94 -0
  300. package/gs/slices/slices.ts +245 -5
  301. package/gs/sort/meta.json +7 -0
  302. package/gs/sort/slice.gs.ts +16 -7
  303. package/gs/sort/sort.gs.ts +16 -13
  304. package/gs/strings/builder.ts +4 -3
  305. package/gs/sync/atomic/type.gs.ts +13 -14
  306. package/gs/sync/meta.json +3 -1
  307. package/gs/sync/sync.test.ts +13 -1
  308. package/gs/sync/sync.ts +27 -0
  309. package/gs/syscall/constants.ts +39 -24
  310. package/gs/syscall/errors.ts +10 -0
  311. package/gs/syscall/fs.ts +195 -0
  312. package/gs/syscall/js/index.ts +458 -0
  313. package/gs/syscall/js/meta.json +4 -0
  314. package/gs/syscall/net.test.ts +85 -0
  315. package/gs/syscall/types.ts +56 -0
  316. package/gs/testing/index.ts +1 -0
  317. package/gs/testing/meta.json +5 -0
  318. package/gs/testing/testing.test.ts +90 -0
  319. package/gs/testing/testing.ts +382 -0
  320. package/gs/time/time.test.ts +106 -0
  321. package/gs/time/time.ts +278 -57
  322. package/gs/unicode/unicode.test.ts +25 -0
  323. package/gs/unicode/unicode.ts +119 -9
  324. package/gs/unicode/utf8/utf8.test.ts +13 -0
  325. package/gs/unicode/utf8/utf8.ts +28 -16
  326. package/gs/unique/index.ts +91 -0
  327. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../gs/syscall/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../gs/syscall/types.ts"],"names":[],"mappings":"AAqBA,MAAM,OAAO,aAAa;IACjB,IAAI,GAAW,CAAC,CAAA;IAChB,IAAI,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IAE3C,YAAY,IAA6B;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,aAAa,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;SAChC,CAAC,CAAA;IACJ,CAAC;CACF;AAED,MAAM,OAAO,aAAa;IACjB,IAAI,GAAW,CAAC,CAAA;IAChB,MAAM,GAAW,CAAC,CAAA;IAClB,IAAI,GAAe,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IAE5C,YAAY,IAA6B;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,aAAa,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;SAChC,CAAC,CAAA;IACJ,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IAChB,IAAI,GAAW,EAAE,CAAA;IAExB,YAAY,IAA4B;QACtC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,KAAK;CAAG"}
@@ -0,0 +1 @@
1
+ export * from './testing.js';
@@ -0,0 +1,2 @@
1
+ export * from './testing.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
@@ -0,0 +1,77 @@
1
+ export type TestFunc = (t: T) => void | Promise<void>;
2
+ export type TB = T | B | F;
3
+ export type TestCase = {
4
+ name: string;
5
+ fn: TestFunc;
6
+ };
7
+ export type RunOptions = {
8
+ verbose?: boolean;
9
+ count?: number;
10
+ short?: boolean;
11
+ };
12
+ export type RunResult = {
13
+ ok: boolean;
14
+ failed: number;
15
+ skipped: number;
16
+ };
17
+ export declare class T {
18
+ private readonly testName;
19
+ private failed;
20
+ private skipped;
21
+ private logs;
22
+ private cleanups;
23
+ private tempDirs;
24
+ constructor(name: string);
25
+ Name(): string;
26
+ Fail(): void;
27
+ FailNow(): never;
28
+ Failed(): boolean;
29
+ Error(...args: unknown[]): void;
30
+ Errorf(format: string, ...args: unknown[]): void;
31
+ Fatal(...args: unknown[]): never;
32
+ Fatalf(format: string, ...args: unknown[]): never;
33
+ Log(...args: unknown[]): void;
34
+ Logf(format: string, ...args: unknown[]): void;
35
+ Skip(...args: unknown[]): never;
36
+ Skipf(format: string, ...args: unknown[]): never;
37
+ SkipNow(): never;
38
+ Skipped(): boolean;
39
+ Helper(): void;
40
+ Cleanup(fn: () => void | Promise<void>): void;
41
+ Run(name: string, fn: TestFunc): Promise<boolean>;
42
+ TempDir(): string;
43
+ Parallel(): never;
44
+ Setenv(key: string, value: string): void;
45
+ Chdir(dir: string): void;
46
+ ArtifactDir(): string;
47
+ Attr(_key: string, _value: string): void;
48
+ Context(): null;
49
+ Output(): null;
50
+ private(): void;
51
+ runCleanups(): Promise<void>;
52
+ flushLogs(): void;
53
+ }
54
+ export declare class B extends T {
55
+ N: number;
56
+ constructor(name?: string);
57
+ Run(name: string, fn: (b: B) => void | Promise<void>): Promise<boolean>;
58
+ StartTimer(): void;
59
+ StopTimer(): void;
60
+ ResetTimer(): void;
61
+ ReportAllocs(): void;
62
+ SetBytes(_bytes: number): void;
63
+ ReportMetric(_n: number, _unit: string): void;
64
+ RunParallel(_fn: (pb: PB) => void): void;
65
+ Loop(): boolean;
66
+ }
67
+ export declare class F extends T {
68
+ constructor(name?: string);
69
+ Add(..._args: unknown[]): void;
70
+ Fuzz(_fn: unknown): void;
71
+ }
72
+ export declare class PB {
73
+ private remaining;
74
+ Next(): boolean;
75
+ }
76
+ export declare function Short(): boolean;
77
+ export declare function runTests(packagePath: string, tests: TestCase[], options?: RunOptions): Promise<RunResult>;
@@ -0,0 +1,301 @@
1
+ import { mkdirSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ class TestControl extends Error {
5
+ kind;
6
+ constructor(kind, message) {
7
+ super(message);
8
+ this.kind = kind;
9
+ }
10
+ }
11
+ let shortMode = false;
12
+ export class T {
13
+ testName;
14
+ failed = false;
15
+ skipped = false;
16
+ logs = [];
17
+ cleanups = [];
18
+ tempDirs = [];
19
+ constructor(name) {
20
+ this.testName = name;
21
+ }
22
+ Name() {
23
+ return this.testName;
24
+ }
25
+ Fail() {
26
+ this.failed = true;
27
+ }
28
+ FailNow() {
29
+ this.failed = true;
30
+ throw new TestControl('fatal', 'test failed');
31
+ }
32
+ Failed() {
33
+ return this.failed;
34
+ }
35
+ Error(...args) {
36
+ this.Log(...args);
37
+ this.Fail();
38
+ }
39
+ Errorf(format, ...args) {
40
+ this.Log(formatMessage(format, args));
41
+ this.Fail();
42
+ }
43
+ Fatal(...args) {
44
+ this.Log(...args);
45
+ this.FailNow();
46
+ }
47
+ Fatalf(format, ...args) {
48
+ this.Log(formatMessage(format, args));
49
+ this.FailNow();
50
+ }
51
+ Log(...args) {
52
+ this.logs.push(args.map(formatValue).join(' '));
53
+ }
54
+ Logf(format, ...args) {
55
+ this.logs.push(formatMessage(format, args));
56
+ }
57
+ Skip(...args) {
58
+ this.Log(...args);
59
+ this.SkipNow();
60
+ }
61
+ Skipf(format, ...args) {
62
+ this.Log(formatMessage(format, args));
63
+ this.SkipNow();
64
+ }
65
+ SkipNow() {
66
+ this.skipped = true;
67
+ throw new TestControl('skip', 'test skipped');
68
+ }
69
+ Skipped() {
70
+ return this.skipped;
71
+ }
72
+ Helper() { }
73
+ Cleanup(fn) {
74
+ this.cleanups.push(fn);
75
+ }
76
+ async Run(name, fn) {
77
+ const child = new T(this.testName + '/' + name);
78
+ try {
79
+ await fn(child);
80
+ }
81
+ catch (err) {
82
+ if (err instanceof TestControl && err.kind === 'skip') {
83
+ // A skipped subtest is still a successful Run result.
84
+ }
85
+ else {
86
+ child.Fail();
87
+ if (!(err instanceof TestControl)) {
88
+ child.Log(formatValue(err));
89
+ }
90
+ }
91
+ }
92
+ try {
93
+ await child.runCleanups();
94
+ }
95
+ catch (err) {
96
+ child.Fail();
97
+ if (!(err instanceof TestControl)) {
98
+ child.Log(formatValue(err));
99
+ }
100
+ }
101
+ if (child.Failed()) {
102
+ this.Fail();
103
+ child.flushLogs();
104
+ return false;
105
+ }
106
+ return true;
107
+ }
108
+ TempDir() {
109
+ const path = join(tmpdir(), 'goscript-test-' +
110
+ this.testName.replace(/[^A-Za-z0-9_.-]/g, '_') +
111
+ '-' +
112
+ String(this.tempDirs.length));
113
+ mkdirSync(path, { recursive: true });
114
+ this.tempDirs.push(path);
115
+ return path;
116
+ }
117
+ Parallel() {
118
+ throw new TestControl('fatal', 'testing.T.Parallel is not supported by GoScript test');
119
+ }
120
+ Setenv(key, value) {
121
+ const proc = globalThis.process;
122
+ const env = proc?.env;
123
+ if (env === undefined) {
124
+ return;
125
+ }
126
+ const oldValue = env[key];
127
+ env[key] = value;
128
+ this.Cleanup(() => {
129
+ if (oldValue === undefined) {
130
+ delete env[key];
131
+ return;
132
+ }
133
+ env[key] = oldValue;
134
+ });
135
+ }
136
+ Chdir(dir) {
137
+ const proc = globalThis.process;
138
+ if (proc?.cwd === undefined || proc.chdir === undefined) {
139
+ return;
140
+ }
141
+ const oldDir = proc.cwd();
142
+ proc.chdir(dir);
143
+ this.Cleanup(() => {
144
+ proc.chdir(oldDir);
145
+ });
146
+ }
147
+ ArtifactDir() {
148
+ return this.TempDir();
149
+ }
150
+ Attr(_key, _value) { }
151
+ Context() {
152
+ return null;
153
+ }
154
+ Output() {
155
+ return null;
156
+ }
157
+ private() { }
158
+ async runCleanups() {
159
+ for (let i = this.cleanups.length - 1; i >= 0; i--) {
160
+ await this.cleanups[i]();
161
+ }
162
+ }
163
+ flushLogs() {
164
+ for (const line of this.logs) {
165
+ console.log(' ' + line);
166
+ }
167
+ }
168
+ }
169
+ export class B extends T {
170
+ N = 1;
171
+ constructor(name = 'Benchmark') {
172
+ super(name);
173
+ }
174
+ async Run(name, fn) {
175
+ const child = new B(this.Name() + '/' + name);
176
+ child.N = this.N;
177
+ try {
178
+ await fn(child);
179
+ }
180
+ catch (err) {
181
+ child.Error(err);
182
+ }
183
+ if (child.Failed()) {
184
+ this.Fail();
185
+ return false;
186
+ }
187
+ return true;
188
+ }
189
+ StartTimer() { }
190
+ StopTimer() { }
191
+ ResetTimer() { }
192
+ ReportAllocs() { }
193
+ SetBytes(_bytes) { }
194
+ ReportMetric(_n, _unit) { }
195
+ RunParallel(_fn) { }
196
+ Loop() {
197
+ if (this.N > 0) {
198
+ this.N--;
199
+ return true;
200
+ }
201
+ return false;
202
+ }
203
+ }
204
+ export class F extends T {
205
+ constructor(name = 'Fuzz') {
206
+ super(name);
207
+ }
208
+ Add(..._args) { }
209
+ Fuzz(_fn) { }
210
+ }
211
+ export class PB {
212
+ remaining = 1;
213
+ Next() {
214
+ if (this.remaining > 0) {
215
+ this.remaining--;
216
+ return true;
217
+ }
218
+ return false;
219
+ }
220
+ }
221
+ export function Short() {
222
+ return shortMode;
223
+ }
224
+ export async function runTests(packagePath, tests, options = {}) {
225
+ const previousShortMode = shortMode;
226
+ shortMode = options.short ?? false;
227
+ const count = options.count ?? 1;
228
+ let failed = 0;
229
+ let skipped = 0;
230
+ try {
231
+ for (let run = 0; run < count; run++) {
232
+ for (const test of tests) {
233
+ if (options.verbose) {
234
+ console.log('=== RUN ' + test.name);
235
+ }
236
+ const t = new T(test.name);
237
+ const start = Date.now();
238
+ try {
239
+ await test.fn(t);
240
+ }
241
+ catch (err) {
242
+ if (err instanceof TestControl && err.kind === 'skip') {
243
+ skipped++;
244
+ }
245
+ else {
246
+ t.Fail();
247
+ if (!(err instanceof TestControl)) {
248
+ t.Log(formatValue(err));
249
+ }
250
+ }
251
+ }
252
+ finally {
253
+ await t.runCleanups();
254
+ }
255
+ const elapsed = ((Date.now() - start) / 1000).toFixed(2);
256
+ if (t.Skipped()) {
257
+ if (options.verbose) {
258
+ t.flushLogs();
259
+ }
260
+ console.log('--- SKIP: ' + test.name + ' (' + elapsed + 's)');
261
+ continue;
262
+ }
263
+ if (t.Failed()) {
264
+ failed++;
265
+ t.flushLogs();
266
+ console.log('--- FAIL: ' + test.name + ' (' + elapsed + 's)');
267
+ continue;
268
+ }
269
+ if (options.verbose) {
270
+ t.flushLogs();
271
+ console.log('--- PASS: ' + test.name + ' (' + elapsed + 's)');
272
+ }
273
+ }
274
+ }
275
+ if (failed === 0) {
276
+ if (options.verbose) {
277
+ console.log('PASS');
278
+ }
279
+ return { ok: true, failed, skipped };
280
+ }
281
+ console.log('FAIL\t' + packagePath);
282
+ return { ok: false, failed, skipped };
283
+ }
284
+ finally {
285
+ shortMode = previousShortMode;
286
+ }
287
+ }
288
+ function formatMessage(format, args) {
289
+ let index = 0;
290
+ return format.replace(/%[vds]/g, () => formatValue(args[index++]));
291
+ }
292
+ function formatValue(value) {
293
+ if (value instanceof Error) {
294
+ return value.message;
295
+ }
296
+ if (value === null) {
297
+ return '<nil>';
298
+ }
299
+ return String(value);
300
+ }
301
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../gs/testing/testing.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import * as $ from '../builtin/index.js';
1
2
  import { ChannelRef } from '../builtin/channel.js';
2
3
  export declare class Time {
3
4
  private _date;
@@ -19,11 +20,18 @@ export declare class Time {
19
20
  Minute(): number;
20
21
  Second(): number;
21
22
  Nanosecond(): number;
23
+ Date(): [number, Month, number];
24
+ Clock(): [number, number, number];
25
+ Zone(): [string, number];
22
26
  Location(): Location;
27
+ UTC(): Time;
28
+ In(loc: Location | $.VarRef<Location> | null): Time;
23
29
  Format(layout: string): string;
24
30
  Sub(u: Time): Duration;
25
31
  Add(d: Duration): Time;
32
+ AddDate(years: number, months: number, days: number): Time;
26
33
  Equal(u: Time): boolean;
34
+ IsZero(): boolean;
27
35
  Before(u: Time): boolean;
28
36
  After(u: Time): boolean;
29
37
  Round(_d: Duration): Time;
@@ -33,6 +41,17 @@ export declare class Time {
33
41
  export type Duration = number;
34
42
  export declare function Duration_lt(receiver: Duration, other: Duration): boolean;
35
43
  export declare function Duration_multiply(receiver: Duration, multiplier: number): Duration;
44
+ export declare function Duration_Abs(receiver: Duration): Duration;
45
+ export declare function Duration_Hours(receiver: Duration): number;
46
+ export declare function Duration_Microseconds(receiver: Duration): number;
47
+ export declare function Duration_Milliseconds(receiver: Duration): number;
48
+ export declare function Duration_Minutes(receiver: Duration): number;
49
+ export declare function Duration_Nanoseconds(receiver: Duration): number;
50
+ export declare function Duration_Round(receiver: Duration, multiple: Duration): Duration;
51
+ export declare function Duration_Seconds(receiver: Duration): number;
52
+ export declare function Duration_Truncate(receiver: Duration, multiple: Duration): Duration;
53
+ export declare function Duration_String(receiver: Duration): string;
54
+ export declare function Duration_format(receiver: Duration, buf: $.VarRef<number[]>): number;
36
55
  export declare class Location {
37
56
  private _name;
38
57
  private _offsetSeconds?;
@@ -78,18 +97,24 @@ export declare class Timer {
78
97
  private _timeout;
79
98
  private _duration;
80
99
  private _callback?;
100
+ private _channel;
101
+ C: ChannelRef<Time>;
81
102
  constructor(duration: Duration, callback?: () => void);
82
103
  Stop(): boolean;
83
104
  Reset(d: Duration): boolean;
105
+ private start;
84
106
  }
85
107
  export declare class Ticker {
86
108
  private _interval;
87
109
  private _duration;
88
110
  private _stopped;
111
+ private _channel;
112
+ C: ChannelRef<Time>;
89
113
  constructor(duration: Duration);
90
114
  Stop(): void;
91
115
  Reset(d: Duration): void;
92
116
  Channel(): AsyncIterableIterator<Time>;
117
+ private start;
93
118
  }
94
119
  export declare function Now(): Time;
95
120
  export declare function Date(year: number, month: Month, day: number, hour: number, min: number, sec: number, nsec: number, loc: Location): Time;
@@ -104,22 +129,34 @@ export declare const Hour = 3600000000000;
104
129
  export declare function Since(t: Time): Duration;
105
130
  export declare function Until(t: Time): Duration;
106
131
  export declare function Sleep(d: Duration): Promise<void>;
132
+ export declare const January = Month.January;
133
+ export declare const February = Month.February;
134
+ export declare const March = Month.March;
135
+ export declare const April = Month.April;
107
136
  export declare const May = Month.May;
137
+ export declare const June = Month.June;
138
+ export declare const July = Month.July;
139
+ export declare const August = Month.August;
140
+ export declare const September = Month.September;
141
+ export declare const October = Month.October;
142
+ export declare const November = Month.November;
143
+ export declare const December = Month.December;
108
144
  export declare const DateTime = "2006-01-02 15:04:05";
109
145
  export declare const Layout = "01/02 03:04:05PM '06 -0700";
110
146
  export declare const RFC3339 = "2006-01-02T15:04:05Z07:00";
147
+ export declare const RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00";
111
148
  export declare const Kitchen = "3:04PM";
112
149
  export declare function Unix(sec: number, nsec?: number): Time;
113
150
  export declare function UnixMilli(msec: number): Time;
114
151
  export declare function UnixMicro(usec: number): Time;
115
152
  export declare function UnixNano(nsec: number): Time;
116
- export declare function ParseDuration(s: string): Duration;
117
- export declare function Parse(layout: string, value: string): Time;
118
- export declare function ParseInLocation(layout: string, value: string, loc: Location): Time;
153
+ export declare function ParseDuration(s: string): [Duration, $.GoError];
154
+ export declare function Parse(layout: string, value: string): [Time, $.GoError];
155
+ export declare function ParseInLocation(layout: string, value: string, loc: Location): [Time, $.GoError];
119
156
  export declare function After(d: Duration): ChannelRef<Time>;
120
157
  export declare function AfterFunc(d: Duration, f: () => void): Timer;
121
158
  export declare function NewTimer(d: Duration): Timer;
122
159
  export declare function NewTicker(d: Duration): Ticker;
123
- export declare function Tick(d: Duration): AsyncIterableIterator<Time>;
160
+ export declare function Tick(d: Duration): ChannelRef<Time>;
124
161
  export declare function LoadLocation(name: string): Location;
125
162
  export declare function LoadLocationFromTZData(name: string, _data: Uint8Array): Location;