typenative 0.1.2 → 0.2.0

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 (504) hide show
  1. package/.gitattributes +1 -0
  2. package/.github/workflows/ci.yml +1 -1
  3. package/.github/workflows/npm-publish-github-packages.yml +1 -1
  4. package/CHANGELOG.md +247 -0
  5. package/CONTRIBUTION.md +1 -1
  6. package/README.md +30 -21
  7. package/bin/cli.js +3 -1
  8. package/bin/go/bridge.js +919 -0
  9. package/bin/go/convert.js +238 -0
  10. package/bin/go/metadata.js +211 -0
  11. package/bin/go/overrides.js +68 -0
  12. package/bin/go/stdlib.generated.js +175 -0
  13. package/bin/index.js +98 -6
  14. package/bin/main.js +4 -1
  15. package/bin/node/assert.js +344 -0
  16. package/bin/node/async_hooks.js +273 -0
  17. package/bin/node/buffer.js +765 -0
  18. package/bin/node/child_process.js +600 -0
  19. package/bin/node/cluster.js +1002 -0
  20. package/bin/node/console.js +121 -0
  21. package/bin/node/core.js +111 -0
  22. package/bin/node/crypto.js +414 -0
  23. package/bin/node/crypto_keys.js +2685 -0
  24. package/bin/node/dgram.js +388 -0
  25. package/bin/node/diagnostics_channel.js +534 -0
  26. package/bin/node/dns.js +635 -0
  27. package/bin/node/events.js +743 -0
  28. package/bin/node/fetch.js +737 -0
  29. package/bin/node/fs.js +998 -0
  30. package/bin/node/http.js +1500 -0
  31. package/bin/node/http2.js +688 -0
  32. package/bin/node/net.js +1143 -0
  33. package/bin/node/os.js +257 -0
  34. package/bin/node/path.js +758 -0
  35. package/bin/node/process.js +316 -0
  36. package/bin/node/punycode.js +195 -0
  37. package/bin/node/querystring.js +143 -0
  38. package/bin/node/readline.js +299 -0
  39. package/bin/node/registry.js +161 -0
  40. package/bin/node/sqlite.js +1142 -0
  41. package/bin/node/stream.js +1221 -0
  42. package/bin/node/stream_web.js +2259 -0
  43. package/bin/node/string_decoder.js +101 -0
  44. package/bin/node/system_extra.js +661 -0
  45. package/bin/node/test.js +1068 -0
  46. package/bin/node/timers.js +250 -0
  47. package/bin/node/tls.js +719 -0
  48. package/bin/node/url.js +861 -0
  49. package/bin/node/util.js +1311 -0
  50. package/bin/node/util_extra.js +599 -0
  51. package/bin/node/worker_threads.js +745 -0
  52. package/bin/node/zlib.js +263 -0
  53. package/bin/parse-native.js +3 -2
  54. package/bin/parse-node.js +18 -2
  55. package/bin/transpiler.js +3529 -597
  56. package/bin/version.js +2 -0
  57. package/conformance.md +724 -258
  58. package/govendor/github.com/ncruces/go-sqlite3/LICENSE +21 -0
  59. package/govendor/github.com/ncruces/go-sqlite3/README.md +121 -0
  60. package/govendor/github.com/ncruces/go-sqlite3/backup.go +132 -0
  61. package/govendor/github.com/ncruces/go-sqlite3/blob.go +266 -0
  62. package/govendor/github.com/ncruces/go-sqlite3/config.go +397 -0
  63. package/govendor/github.com/ncruces/go-sqlite3/conn.go +540 -0
  64. package/govendor/github.com/ncruces/go-sqlite3/conn_127.go +93 -0
  65. package/govendor/github.com/ncruces/go-sqlite3/const.go +436 -0
  66. package/govendor/github.com/ncruces/go-sqlite3/context.go +222 -0
  67. package/govendor/github.com/ncruces/go-sqlite3/error.go +182 -0
  68. package/govendor/github.com/ncruces/go-sqlite3/ext.go +153 -0
  69. package/govendor/github.com/ncruces/go-sqlite3/func.go +309 -0
  70. package/govendor/github.com/ncruces/go-sqlite3/go.mod +3 -0
  71. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go +29 -0
  72. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go +13 -0
  73. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go +57 -0
  74. package/govendor/github.com/ncruces/go-sqlite3/internal/errutil/error.go +41 -0
  75. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/alloc.go +128 -0
  76. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/const.go +122 -0
  77. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/error.go +77 -0
  78. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem.go +116 -0
  79. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_other.go +34 -0
  80. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_unix.go +87 -0
  81. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_windows.go +149 -0
  82. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_unix.go +80 -0
  83. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_windows.go +129 -0
  84. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/sys_windows.go +60 -0
  85. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap.go +82 -0
  86. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_sys.go +113 -0
  87. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_vfs.go +181 -0
  88. package/govendor/github.com/ncruces/go-sqlite3/internal/testenv/env.go +55 -0
  89. package/govendor/github.com/ncruces/go-sqlite3/internal/util/json.go +54 -0
  90. package/govendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go +54 -0
  91. package/govendor/github.com/ncruces/go-sqlite3/internal/util/math.go +29 -0
  92. package/govendor/github.com/ncruces/go-sqlite3/internal/util/page.go +5 -0
  93. package/govendor/github.com/ncruces/go-sqlite3/internal/util/parse.go +142 -0
  94. package/govendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go +3 -0
  95. package/govendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go +10 -0
  96. package/govendor/github.com/ncruces/go-sqlite3/json.go +100 -0
  97. package/govendor/github.com/ncruces/go-sqlite3/json_v2.go +116 -0
  98. package/govendor/github.com/ncruces/go-sqlite3/pointer.go +13 -0
  99. package/govendor/github.com/ncruces/go-sqlite3/quote.go +140 -0
  100. package/govendor/github.com/ncruces/go-sqlite3/stmt.go +692 -0
  101. package/govendor/github.com/ncruces/go-sqlite3/time.go +360 -0
  102. package/govendor/github.com/ncruces/go-sqlite3/txn.go +374 -0
  103. package/govendor/github.com/ncruces/go-sqlite3/value.go +212 -0
  104. package/govendor/github.com/ncruces/go-sqlite3/vfs/README.md +133 -0
  105. package/govendor/github.com/ncruces/go-sqlite3/vfs/api.go +239 -0
  106. package/govendor/github.com/ncruces/go-sqlite3/vfs/cksm.go +143 -0
  107. package/govendor/github.com/ncruces/go-sqlite3/vfs/const.go +256 -0
  108. package/govendor/github.com/ncruces/go-sqlite3/vfs/file.go +260 -0
  109. package/govendor/github.com/ncruces/go-sqlite3/vfs/filename.go +187 -0
  110. package/govendor/github.com/ncruces/go-sqlite3/vfs/lock.go +128 -0
  111. package/govendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go +23 -0
  112. package/govendor/github.com/ncruces/go-sqlite3/vfs/map.go +63 -0
  113. package/govendor/github.com/ncruces/go-sqlite3/vfs/map_other.go +13 -0
  114. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +110 -0
  115. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +131 -0
  116. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go +140 -0
  117. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go +56 -0
  118. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +117 -0
  119. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +59 -0
  120. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std.go +50 -0
  121. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go +19 -0
  122. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go +9 -0
  123. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go +13 -0
  124. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go +9 -0
  125. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_temp.go +16 -0
  126. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +108 -0
  127. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +180 -0
  128. package/govendor/github.com/ncruces/go-sqlite3/vfs/registry.go +48 -0
  129. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm.go +26 -0
  130. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go +258 -0
  131. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go +90 -0
  132. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go +168 -0
  133. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go +52 -0
  134. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go +185 -0
  135. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go +21 -0
  136. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go +124 -0
  137. package/govendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +455 -0
  138. package/govendor/github.com/ncruces/go-sqlite3/vtab.go +677 -0
  139. package/govendor/github.com/ncruces/go-sqlite3/wrap.go +48 -0
  140. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/LICENSE +18 -0
  141. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/README.md +11 -0
  142. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/go.mod +3 -0
  143. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/libc.go +215 -0
  144. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.dat +0 -0
  145. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.go +157903 -0
  146. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/tools.sh +38 -0
  147. package/govendor/github.com/ncruces/julianday/LICENSE +21 -0
  148. package/govendor/github.com/ncruces/julianday/README.md +9 -0
  149. package/govendor/github.com/ncruces/julianday/go.mod +3 -0
  150. package/govendor/github.com/ncruces/julianday/julianday.go +124 -0
  151. package/govendor/golang.org/x/sys/LICENSE +27 -0
  152. package/govendor/golang.org/x/sys/PATENTS +22 -0
  153. package/govendor/golang.org/x/sys/go.mod +3 -0
  154. package/govendor/golang.org/x/sys/unix/README.md +184 -0
  155. package/govendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
  156. package/govendor/golang.org/x/sys/unix/aliases.go +13 -0
  157. package/govendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
  158. package/govendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
  159. package/govendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
  160. package/govendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
  161. package/govendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
  162. package/govendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
  163. package/govendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
  164. package/govendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
  165. package/govendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
  166. package/govendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
  167. package/govendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
  168. package/govendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
  169. package/govendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
  170. package/govendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
  171. package/govendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
  172. package/govendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
  173. package/govendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
  174. package/govendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
  175. package/govendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
  176. package/govendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
  177. package/govendor/golang.org/x/sys/unix/auxv.go +36 -0
  178. package/govendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
  179. package/govendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
  180. package/govendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
  181. package/govendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
  182. package/govendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
  183. package/govendor/golang.org/x/sys/unix/constants.go +13 -0
  184. package/govendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
  185. package/govendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
  186. package/govendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
  187. package/govendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
  188. package/govendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
  189. package/govendor/golang.org/x/sys/unix/dev_linux.go +42 -0
  190. package/govendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
  191. package/govendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
  192. package/govendor/golang.org/x/sys/unix/dev_zos.go +28 -0
  193. package/govendor/golang.org/x/sys/unix/dirent.go +102 -0
  194. package/govendor/golang.org/x/sys/unix/endian_big.go +9 -0
  195. package/govendor/golang.org/x/sys/unix/endian_little.go +9 -0
  196. package/govendor/golang.org/x/sys/unix/env_unix.go +31 -0
  197. package/govendor/golang.org/x/sys/unix/fcntl.go +36 -0
  198. package/govendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
  199. package/govendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
  200. package/govendor/golang.org/x/sys/unix/fdset.go +27 -0
  201. package/govendor/golang.org/x/sys/unix/gccgo.go +59 -0
  202. package/govendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
  203. package/govendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
  204. package/govendor/golang.org/x/sys/unix/ifreq_linux.go +145 -0
  205. package/govendor/golang.org/x/sys/unix/ioctl_linux.go +341 -0
  206. package/govendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
  207. package/govendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
  208. package/govendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
  209. package/govendor/golang.org/x/sys/unix/mkall.sh +250 -0
  210. package/govendor/golang.org/x/sys/unix/mkerrors.sh +807 -0
  211. package/govendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
  212. package/govendor/golang.org/x/sys/unix/mremap.go +57 -0
  213. package/govendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
  214. package/govendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
  215. package/govendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
  216. package/govendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
  217. package/govendor/golang.org/x/sys/unix/race.go +30 -0
  218. package/govendor/golang.org/x/sys/unix/race0.go +25 -0
  219. package/govendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
  220. package/govendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
  221. package/govendor/golang.org/x/sys/unix/readv_unix.go +103 -0
  222. package/govendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
  223. package/govendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
  224. package/govendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
  225. package/govendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
  226. package/govendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
  227. package/govendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
  228. package/govendor/golang.org/x/sys/unix/syscall.go +86 -0
  229. package/govendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
  230. package/govendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
  231. package/govendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
  232. package/govendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
  233. package/govendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
  234. package/govendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
  235. package/govendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
  236. package/govendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
  237. package/govendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
  238. package/govendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
  239. package/govendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
  240. package/govendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
  241. package/govendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
  242. package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
  243. package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
  244. package/govendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
  245. package/govendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
  246. package/govendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
  247. package/govendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
  248. package/govendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
  249. package/govendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
  250. package/govendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
  251. package/govendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
  252. package/govendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
  253. package/govendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
  254. package/govendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
  255. package/govendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
  256. package/govendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
  257. package/govendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
  258. package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
  259. package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
  260. package/govendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
  261. package/govendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
  262. package/govendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
  263. package/govendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
  264. package/govendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
  265. package/govendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
  266. package/govendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
  267. package/govendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
  268. package/govendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
  269. package/govendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
  270. package/govendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
  271. package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
  272. package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
  273. package/govendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
  274. package/govendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
  275. package/govendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
  276. package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
  277. package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
  278. package/govendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
  279. package/govendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
  280. package/govendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
  281. package/govendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
  282. package/govendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
  283. package/govendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
  284. package/govendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
  285. package/govendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
  286. package/govendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
  287. package/govendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
  288. package/govendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
  289. package/govendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
  290. package/govendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
  291. package/govendor/golang.org/x/sys/unix/timestruct.go +76 -0
  292. package/govendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
  293. package/govendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
  294. package/govendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
  295. package/govendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
  296. package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
  297. package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
  298. package/govendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
  299. package/govendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
  300. package/govendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
  301. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
  302. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
  303. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
  304. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
  305. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
  306. package/govendor/golang.org/x/sys/unix/zerrors_linux.go +4209 -0
  307. package/govendor/golang.org/x/sys/unix/zerrors_linux_386.go +882 -0
  308. package/govendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +882 -0
  309. package/govendor/golang.org/x/sys/unix/zerrors_linux_arm.go +887 -0
  310. package/govendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +884 -0
  311. package/govendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +874 -0
  312. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips.go +888 -0
  313. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +888 -0
  314. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +888 -0
  315. package/govendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +888 -0
  316. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +940 -0
  317. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +944 -0
  318. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +944 -0
  319. package/govendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +884 -0
  320. package/govendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +943 -0
  321. package/govendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +992 -0
  322. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
  323. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
  324. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
  325. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
  326. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
  327. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
  328. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
  329. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
  330. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
  331. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
  332. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
  333. package/govendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
  334. package/govendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
  335. package/govendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
  336. package/govendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
  337. package/govendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
  338. package/govendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
  339. package/govendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
  340. package/govendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
  341. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
  342. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
  343. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
  344. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
  345. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
  346. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
  347. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
  348. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
  349. package/govendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
  350. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
  351. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
  352. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
  353. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
  354. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
  355. package/govendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
  356. package/govendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
  357. package/govendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
  358. package/govendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
  359. package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
  360. package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
  361. package/govendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
  362. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
  363. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
  364. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
  365. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
  366. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
  367. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
  368. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
  369. package/govendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
  370. package/govendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
  371. package/govendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
  372. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
  373. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
  374. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
  375. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
  376. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
  377. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
  378. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
  379. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
  380. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
  381. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
  382. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
  383. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
  384. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
  385. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
  386. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
  387. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
  388. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
  389. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
  390. package/govendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
  391. package/govendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
  392. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
  393. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
  394. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
  395. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
  396. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
  397. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
  398. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
  399. package/govendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
  400. package/govendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
  401. package/govendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
  402. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
  403. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
  404. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
  405. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
  406. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
  407. package/govendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
  408. package/govendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
  409. package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
  410. package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
  411. package/govendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
  412. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
  413. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
  414. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
  415. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
  416. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
  417. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
  418. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
  419. package/govendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
  420. package/govendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
  421. package/govendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
  422. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
  423. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
  424. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
  425. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
  426. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
  427. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
  428. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
  429. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
  430. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
  431. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
  432. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
  433. package/govendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
  434. package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
  435. package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
  436. package/govendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
  437. package/govendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
  438. package/govendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
  439. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
  440. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
  441. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
  442. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
  443. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
  444. package/govendor/golang.org/x/sys/unix/ztypes_linux.go +6547 -0
  445. package/govendor/golang.org/x/sys/unix/ztypes_linux_386.go +747 -0
  446. package/govendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +761 -0
  447. package/govendor/golang.org/x/sys/unix/ztypes_linux_arm.go +741 -0
  448. package/govendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +740 -0
  449. package/govendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +741 -0
  450. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips.go +746 -0
  451. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +743 -0
  452. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +743 -0
  453. package/govendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +746 -0
  454. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +754 -0
  455. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +749 -0
  456. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +749 -0
  457. package/govendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +828 -0
  458. package/govendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +763 -0
  459. package/govendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +744 -0
  460. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
  461. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
  462. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
  463. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
  464. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
  465. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
  466. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
  467. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
  468. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
  469. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
  470. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
  471. package/govendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
  472. package/govendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
  473. package/govendor/golang.org/x/sys/windows/aliases.go +13 -0
  474. package/govendor/golang.org/x/sys/windows/dll_windows.go +380 -0
  475. package/govendor/golang.org/x/sys/windows/env_windows.go +57 -0
  476. package/govendor/golang.org/x/sys/windows/eventlog.go +20 -0
  477. package/govendor/golang.org/x/sys/windows/exec_windows.go +248 -0
  478. package/govendor/golang.org/x/sys/windows/memory_windows.go +48 -0
  479. package/govendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
  480. package/govendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
  481. package/govendor/golang.org/x/sys/windows/mksyscall.go +9 -0
  482. package/govendor/golang.org/x/sys/windows/race.go +30 -0
  483. package/govendor/golang.org/x/sys/windows/race0.go +25 -0
  484. package/govendor/golang.org/x/sys/windows/security_windows.go +1537 -0
  485. package/govendor/golang.org/x/sys/windows/service.go +257 -0
  486. package/govendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
  487. package/govendor/golang.org/x/sys/windows/str.go +22 -0
  488. package/govendor/golang.org/x/sys/windows/syscall.go +104 -0
  489. package/govendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
  490. package/govendor/golang.org/x/sys/windows/types_windows.go +4058 -0
  491. package/govendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
  492. package/govendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
  493. package/govendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
  494. package/govendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
  495. package/govendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
  496. package/govendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
  497. package/govendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
  498. package/govendor/manifest.txt +7 -0
  499. package/package.json +6 -1
  500. package/tsparser/main.go +37 -3
  501. package/tsparser/tsparser.exe +2 -2
  502. package/types/typenative-go.d.ts +15159 -5
  503. package/types/typenative-npm.d.ts +2637 -30
  504. package/types/typenative.d.ts +1092 -56
@@ -0,0 +1,238 @@
1
+ // Go bridge conversions: TypeScript values ↔ Go values at the boundary.
2
+ //
3
+ // toGo(expr, fromType, toType): wraps an already-visited Go expression so it
4
+ // has the target Go type (int(x), T(x), tnGoNums[T](x), ...).
5
+ // fromGo(expr, goType): wraps a Go expression so it reads as a TS number
6
+ // (float64(x)) where needed.
7
+ //
8
+ // Kept in a plain style because this file is part of the self-hosted
9
+ // compiler and must transpile with TypeNative.
10
+ import { goTypeInfo, isGoNumeric, allGoPaths } from './metadata.js';
11
+ let convertServices = {
12
+ pkg: (_name) => { },
13
+ helper: (_id) => { },
14
+ typeOf: (_node) => '',
15
+ localType: (goType) => goType
16
+ };
17
+ let convertKnownPaths = {};
18
+ export function initConvertPaths() {
19
+ convertKnownPaths = {};
20
+ for (const p of allGoPaths())
21
+ convertKnownPaths[p] = true;
22
+ }
23
+ // Import the package named by a Go type when it is emitted into code.
24
+ function ensureTypePackage(goType) {
25
+ if (!goType)
26
+ return;
27
+ const cleaned = goType.replace(/\[[^\]]*\]/g, ' ').replace(/[*,{}()]/g, ' ');
28
+ for (const part of cleaned.split(/\s+/)) {
29
+ if (!part || part === 'error' || part === 'any' || part === 'interface{}')
30
+ continue;
31
+ const dot = part.lastIndexOf('.');
32
+ if (dot < 0)
33
+ continue;
34
+ const path = part.slice(0, dot);
35
+ if (convertKnownPaths[path])
36
+ convertServices.pkg(path);
37
+ }
38
+ }
39
+ export function bindConvertServices(s) {
40
+ convertServices = s;
41
+ }
42
+ // Base name of a Go type: strips pointers, qualifiers and generic args.
43
+ export function goBaseName(goType) {
44
+ let base = goType;
45
+ while (base.startsWith('*'))
46
+ base = base.slice(1);
47
+ const dot = base.lastIndexOf('.');
48
+ if (dot >= 0)
49
+ base = base.slice(dot + 1);
50
+ const bracket = base.indexOf('[');
51
+ if (bracket >= 0)
52
+ base = base.slice(0, bracket);
53
+ return base;
54
+ }
55
+ // Whether the Go type is a plain (unnamed) integer kind.
56
+ export function isGoIntKind(goType) {
57
+ const base = goBaseName(goType);
58
+ return (base === 'int' || base === 'int8' || base === 'int16' || base === 'int32' || base === 'int64' ||
59
+ base === 'uint' || base === 'uint8' || base === 'uint16' || base === 'uint32' || base === 'uint64' ||
60
+ base === 'uintptr' || base === 'byte' || base === 'rune');
61
+ }
62
+ // Whether the Go type is a plain float kind.
63
+ export function isGoFloatKind(goType) {
64
+ const base = goBaseName(goType);
65
+ return base === 'float32' || base === 'float64';
66
+ }
67
+ // Whether the Go type is a basic kind (never has fields).
68
+ export function isGoBasicKind(goType) {
69
+ let base = goType;
70
+ while (base.startsWith('*'))
71
+ base = base.slice(1);
72
+ if (base.indexOf('.') >= 0)
73
+ return false;
74
+ const bare = base.indexOf('[') >= 0 ? base.slice(0, base.indexOf('[')) : base;
75
+ return (bare === 'string' || bare === 'bool' ||
76
+ bare === 'int' || bare === 'int8' || bare === 'int16' || bare === 'int32' || bare === 'int64' ||
77
+ bare === 'uint' || bare === 'uint8' || bare === 'uint16' || bare === 'uint32' || bare === 'uint64' ||
78
+ bare === 'uintptr' || bare === 'float32' || bare === 'float64' || bare === 'byte' || bare === 'rune');
79
+ }
80
+ // Whether the Go type is any numeric kind (plain or named).
81
+ export function isGoNumericKind(goType) {
82
+ if (isGoIntKind(goType) || isGoFloatKind(goType))
83
+ return true;
84
+ return isGoNumeric(goType);
85
+ }
86
+ // Convert an already-visited expression to the target Go type. toType is
87
+ // fully qualified (metadata lookups need the path); emitted type names are
88
+ // localized.
89
+ export function toGo(expr, fromType, toType) {
90
+ if (!toType || toType === 'interface{}' || toType === 'any' || fromType === toType)
91
+ return expr;
92
+ if (expr === 'nil')
93
+ return expr;
94
+ // Array references read as the slice they point to.
95
+ if (fromType.startsWith('*[]'))
96
+ fromType = fromType.slice(1);
97
+ // Named numeric target: T(x).
98
+ if (isGoNumeric(toType) && !isGoNumericKind(fromType)) {
99
+ ensureTypePackage(toType);
100
+ return `${convertServices.localType(toType)}(${expr})`;
101
+ }
102
+ if (isGoNumeric(toType) && isGoNumericKind(fromType) && fromType !== toType) {
103
+ ensureTypePackage(toType);
104
+ return `${convertServices.localType(toType)}(${expr})`;
105
+ }
106
+ // Plain int target from a TS number: T(x) with the exact kind.
107
+ if (isGoIntKind(toType) && fromType === 'float64') {
108
+ return `${goBaseName(toType)}(${expr})`;
109
+ }
110
+ if (isGoIntKind(toType) && isGoFloatKind(fromType)) {
111
+ return `${convertServices.localType(toType)}(${expr})`;
112
+ }
113
+ // Named numeric from a plain int kind.
114
+ if (isGoNumeric(toType) && (isGoIntKind(fromType) || isGoFloatKind(fromType))) {
115
+ ensureTypePackage(toType);
116
+ return `${convertServices.localType(toType)}(${expr})`;
117
+ }
118
+ // Fixed arrays [N]T → slice when the target is a slice. Call results
119
+ // are unaddressable, so always go through a temp variable.
120
+ if (fromType.startsWith('[') && !fromType.startsWith('[]') && toType.startsWith('[]')) {
121
+ const close = fromType.indexOf(']');
122
+ const fromElem = close >= 0 ? fromType.slice(close + 1) : '';
123
+ const toElem = toType.slice(2);
124
+ if (fromElem === toElem || ((fromElem === 'byte' || fromElem === 'uint8') && (toElem === 'byte' || toElem === 'uint8'))) {
125
+ return `func() ${convertServices.localType(toType)} { __v := ${expr}; return __v[:] }()`;
126
+ }
127
+ if (isGoNumericKind(toElem)) {
128
+ convertServices.helper('goNums');
129
+ return `func() ${convertServices.localType(toType)} { __v := ${expr}; return tnGoNums[${convertServices.localType(toElem)}](__v[:]) }()`;
130
+ }
131
+ return `func() ${convertServices.localType(toType)} { __v := ${expr}; return __v[:] }()`;
132
+ }
133
+ // Slices of numbers: tnGoNums[T](x) / element conversion.
134
+ // []byte ↔ []byte passes through (Uint8Array needs no conversion).
135
+ if (toType.startsWith('[]') && fromType.startsWith('[]')) {
136
+ const toElem = toType.slice(2);
137
+ const fromElem = fromType.slice(2);
138
+ if (toElem === fromElem)
139
+ return expr;
140
+ if ((toElem === 'byte' || toElem === 'uint8') && (fromElem === 'byte' || fromElem === 'uint8')) {
141
+ return expr;
142
+ }
143
+ if (isGoNumericKind(toElem)) {
144
+ convertServices.helper('goNums');
145
+ return `tnGoNums[${convertServices.localType(toElem)}](${expr})`;
146
+ }
147
+ }
148
+ // Untyped constants arrive as float64: convert to the target.
149
+ if (fromType === 'float64' && isGoNumericKind(toType)) {
150
+ ensureTypePackage(toType);
151
+ return `${convertServices.localType(toType)}(${expr})`;
152
+ }
153
+ // String target.
154
+ if (toType === 'string' && fromType !== 'string') {
155
+ return `string(${expr})`;
156
+ }
157
+ // interface{}/any to a concrete named type: type assertion.
158
+ if ((fromType === 'interface{}' || fromType === 'any' || fromType === '') && !isGoNumericKind(toType)) {
159
+ const base = goBaseName(toType);
160
+ if (base && base !== 'string' && base !== 'bool' && base !== 'float64' && !toType.startsWith('[]') && !toType.startsWith('map[') && !toType.startsWith('func(') && !toType.startsWith('chan ') && toType !== 'any' && toType !== 'interface{}') {
161
+ ensureTypePackage(toType);
162
+ return `${expr}.(${convertServices.localType(toType)})`;
163
+ }
164
+ }
165
+ // Struct value to pointer slot: take address. Never dereference into
166
+ // an interface slot (pointer-receiver methods would be lost).
167
+ if (toType.startsWith('*') && !fromType.startsWith('*') && !fromType.startsWith('[]') && fromType !== 'string' && fromType !== 'float64' && fromType !== 'bool' && fromType !== 'interface{}' && fromType !== 'any') {
168
+ return `&(${expr})`;
169
+ }
170
+ // Single-char string to byte/rune (strconv.FormatFloat 'f', unicode funcs).
171
+ if ((toType === 'byte' || toType === 'uint8') && fromType === 'string') {
172
+ return `${expr}[0]`;
173
+ }
174
+ if (toType === 'rune' && fromType === 'string') {
175
+ convertServices.helper('goStrings');
176
+ return `tnGoRune(${expr})`;
177
+ }
178
+ return expr;
179
+ }
180
+ // Convert a Go expression back to a TS-facing value.
181
+ export function fromGo(expr, goType) {
182
+ if (!goType)
183
+ return expr;
184
+ // Named numerics and plain non-float numbers read as TS numbers.
185
+ if (isGoNumeric(goType) && goType !== 'float64') {
186
+ return `float64(${expr})`;
187
+ }
188
+ if (isGoIntKind(goType) && goType !== 'float64') {
189
+ return `float64(${expr})`;
190
+ }
191
+ if (isGoFloatKind(goType) && goType !== 'float64') {
192
+ return `float64(${expr})`;
193
+ }
194
+ // Slices of numbers read back as []float64 ([]byte stays []byte).
195
+ if (goType.startsWith('[]')) {
196
+ const elem = goType.slice(2);
197
+ if ((elem === 'byte' || elem === 'uint8'))
198
+ return expr;
199
+ if (isGoNumericKind(elem) && elem !== 'float64') {
200
+ convertServices.helper('goNums');
201
+ return `tnGoFromNums[${elem}](${expr})`;
202
+ }
203
+ }
204
+ return expr;
205
+ }
206
+ // Wrap a (T, error) or (A, B, error) call so it throws on error.
207
+ export function mustCall(expr, resultCount) {
208
+ if (resultCount === 1) {
209
+ convertServices.helper('goMust');
210
+ return `tnGoMust(${expr})`;
211
+ }
212
+ if (resultCount === 2) {
213
+ convertServices.helper('goMust');
214
+ return `tnGoMust2(${expr})`;
215
+ }
216
+ return expr;
217
+ }
218
+ // Wrap an error-only call so it throws on error.
219
+ export function checkCall(expr) {
220
+ convertServices.helper('goMust');
221
+ return `tnGoCheck(${expr})`;
222
+ }
223
+ // Whether the expression needs no conversion (already the target type).
224
+ export function needsConversion(fromType, toType) {
225
+ if (!toType || toType === 'interface{}' || toType === 'any')
226
+ return false;
227
+ if (fromType === toType)
228
+ return false;
229
+ if (isGoNumericKind(toType) && fromType === 'float64')
230
+ return true;
231
+ if (toType.startsWith('[]') && fromType.startsWith('[]')) {
232
+ return toType.slice(2) !== fromType.slice(2);
233
+ }
234
+ return false;
235
+ }
236
+ export function goTypeInfoRef(goType) {
237
+ return goTypeInfo(goType);
238
+ }
@@ -0,0 +1,211 @@
1
+ // Go bridge metadata: parses one package string from stdlib.generated.ts
2
+ // into GoPackageInfo. Parsed only for imported packages and cached per run.
3
+ //
4
+ // Kept in a plain style (records of closures, positional helpers) because
5
+ // this file is part of the self-hosted compiler and must transpile with
6
+ // TypeNative.
7
+ import { goStdlib } from './stdlib.generated.js';
8
+ const packageCache = {};
9
+ function unesc(s) {
10
+ let out = '';
11
+ for (let i = 0; i < s.length; i++) {
12
+ if (s[i] === '\\' && i + 1 < s.length) {
13
+ const next = s[i + 1];
14
+ if (next === 'n') {
15
+ out += '\n';
16
+ i++;
17
+ }
18
+ else if (next === 'p') {
19
+ out += '|';
20
+ i++;
21
+ }
22
+ else if (next === '\\') {
23
+ out += '\\';
24
+ i++;
25
+ }
26
+ else {
27
+ out += s[i];
28
+ }
29
+ }
30
+ else {
31
+ out += s[i];
32
+ }
33
+ }
34
+ return out;
35
+ }
36
+ function splitTop(s) {
37
+ const out = [];
38
+ let depth = 0;
39
+ let start = 0;
40
+ for (let i = 0; i < s.length; i++) {
41
+ const ch = s[i];
42
+ if (ch === '[' || ch === '(' || ch === '{')
43
+ depth++;
44
+ else if (ch === ']' || ch === ')' || ch === '}')
45
+ depth--;
46
+ else if (ch === ',' && depth === 0) {
47
+ out.push(s.slice(start, i));
48
+ start = i + 1;
49
+ }
50
+ }
51
+ out.push(s.slice(start));
52
+ return out;
53
+ }
54
+ function parseParams(s) {
55
+ const out = [];
56
+ if (!s)
57
+ return out;
58
+ for (const part of splitTop(s)) {
59
+ const space = part.indexOf(' ');
60
+ if (space < 0)
61
+ continue;
62
+ out.push({ name: unesc(part.slice(0, space)), goType: unesc(part.slice(space + 1)) });
63
+ }
64
+ return out;
65
+ }
66
+ function parseResults(s) {
67
+ if (!s)
68
+ return [];
69
+ return splitTop(s).map((r) => unesc(r));
70
+ }
71
+ // The metadata of one Go package, parsed on demand and cached.
72
+ export function goPackage(path) {
73
+ if (path in packageCache)
74
+ return packageCache[path];
75
+ const raw = goStdlib[path];
76
+ if (raw === undefined) {
77
+ packageCache[path] = null;
78
+ return null;
79
+ }
80
+ const info = { path, name: path, funcs: {}, types: {}, consts: {}, vars: {} };
81
+ for (const line of raw.split('\n')) {
82
+ if (!line)
83
+ continue;
84
+ const kind = line[0];
85
+ const body = line.slice(1);
86
+ if (kind === 'P') {
87
+ info.name = unesc(body);
88
+ }
89
+ else if (kind === 'F') {
90
+ const parts = body.split('|');
91
+ const name = unesc(parts[0] ?? '');
92
+ info.funcs[name] = {
93
+ name,
94
+ tparams: parts[1] ? unesc(parts[1]).split(',') : [],
95
+ tcores: parts[5] ? unesc(parts[5]).split(';') : [],
96
+ params: parseParams(parts[2] ?? ''),
97
+ results: parseResults(parts[3] ?? ''),
98
+ variadic: (parts[4] ?? '') === 'true'
99
+ };
100
+ }
101
+ else if (kind === 'T') {
102
+ const parts = body.split('|');
103
+ const name = unesc(parts[0] ?? '');
104
+ info.types[name] = {
105
+ name,
106
+ kind: unesc(parts[1] ?? ''),
107
+ under: unesc(parts[2] ?? ''),
108
+ tparams: parts[3] ? unesc(parts[3]).split(',') : [],
109
+ numeric: (parts[4] ?? '') === 'true',
110
+ fields: [],
111
+ methods: [],
112
+ ifaceMethods: []
113
+ };
114
+ }
115
+ else if (kind === 'f') {
116
+ const parts = body.split('|');
117
+ const typeName = unesc(parts[0] ?? '');
118
+ const type = info.types[typeName];
119
+ if (type)
120
+ type.fields.push({ name: unesc(parts[1] ?? ''), goType: unesc(parts[2] ?? '') });
121
+ }
122
+ else if (kind === 'M') {
123
+ const parts = body.split('|');
124
+ const typeName = unesc(parts[0] ?? '');
125
+ const type = info.types[typeName];
126
+ if (type) {
127
+ type.methods.push({
128
+ name: unesc(parts[1] ?? ''),
129
+ ptr: (parts[2] ?? '') === 'true',
130
+ params: parseParams(parts[3] ?? ''),
131
+ results: parseResults(parts[4] ?? '')
132
+ });
133
+ }
134
+ }
135
+ else if (kind === 'I') {
136
+ const parts = body.split('|');
137
+ const typeName = unesc(parts[0] ?? '');
138
+ const type = info.types[typeName];
139
+ if (type) {
140
+ type.ifaceMethods.push({
141
+ name: unesc(parts[1] ?? ''),
142
+ ptr: false,
143
+ params: parseParams(parts[2] ?? ''),
144
+ results: parseResults(parts[3] ?? '')
145
+ });
146
+ }
147
+ }
148
+ else if (kind === 'C') {
149
+ const parts = body.split('|');
150
+ const name = unesc(parts[0] ?? '');
151
+ info.consts[name] = { name, kind: unesc(parts[1] ?? ''), goType: unesc(parts[2] ?? '') };
152
+ }
153
+ else if (kind === 'V') {
154
+ const parts = body.split('|');
155
+ const name = unesc(parts[0] ?? '');
156
+ info.vars[name] = { name, goType: unesc(parts[1] ?? '') };
157
+ }
158
+ }
159
+ packageCache[path] = info;
160
+ return info;
161
+ }
162
+ // Whether a package path has bridge metadata.
163
+ export function hasGoPackage(path) {
164
+ return goStdlib[path] !== undefined;
165
+ }
166
+ // All known package paths (for resolving cross-package type references).
167
+ export function allGoPaths() {
168
+ return Object.keys(goStdlib);
169
+ }
170
+ // Resolve a qualified Go type to its type info.
171
+ export function goTypeInfo(goType) {
172
+ let base = goType;
173
+ while (base.startsWith('*'))
174
+ base = base.slice(1);
175
+ const dot = base.lastIndexOf('.');
176
+ if (dot < 0)
177
+ return null;
178
+ const path = base.slice(0, dot);
179
+ let name = base.slice(dot + 1);
180
+ const bracket = name.indexOf('[');
181
+ if (bracket >= 0)
182
+ name = name.slice(0, bracket);
183
+ const info = goPackage(path);
184
+ if (!info)
185
+ return null;
186
+ const type = info.types[name] ?? null;
187
+ // Aliases of named types resolve to the target (os.FileMode = fs.FileMode).
188
+ if (type && type.kind === 'alias' && type.under && type.under !== goType && type.under.indexOf('.') >= 0) {
189
+ const target = goTypeInfo(type.under);
190
+ if (target)
191
+ return target;
192
+ }
193
+ return type;
194
+ }
195
+ // Whether the Go type is a named numeric (time.Duration, fs.FileMode).
196
+ export function isGoNumeric(goType) {
197
+ const info = goTypeInfo(goType);
198
+ return !!info && info.kind === 'basic' && info.numeric;
199
+ }
200
+ // Canonical form of a struct type: pointer when it has any pointer-receiver
201
+ // method, value otherwise.
202
+ export function goCanonical(typeName, info) {
203
+ const type = info.types[typeName];
204
+ if (!type)
205
+ return typeName;
206
+ for (const m of type.methods) {
207
+ if (m.ptr)
208
+ return '*' + typeName;
209
+ }
210
+ return typeName;
211
+ }
@@ -0,0 +1,68 @@
1
+ // Go bridge overrides: hand-written exceptions keyed 'pkg.Func'.
2
+ // This is the only hand-maintained per-package data.
3
+ //
4
+ // sync: callbacks listed here run synchronously on the caller, so a TS
5
+ // closure can be invoked directly. Anything else taking a callback is
6
+ // wrapped in TnLoopCall.
7
+ // blocking: calls that block (network, sleep, wait) run on a goroutine
8
+ // while the baton holder pumps TnLoopRunPending.
9
+ // excluded: packages with no bridge and the reason why.
10
+ export const goOverrides = {
11
+ 'sort.Slice': { sync: true },
12
+ 'sort.SliceStable': { sync: true },
13
+ 'sort.SliceIsSorted': { sync: true },
14
+ 'slices.SortFunc': { sync: true },
15
+ 'slices.SortStableFunc': { sync: true },
16
+ 'slices.IsSortedFunc': { sync: true },
17
+ 'slices.BinarySearchFunc': { sync: true },
18
+ 'slices.CompareFunc': { sync: true },
19
+ 'slices.MinFunc': { sync: true },
20
+ 'slices.MaxFunc': { sync: true },
21
+ 'maps.Keys': { sync: true },
22
+ 'maps.Values': { sync: true },
23
+ 'maps.All': { sync: true },
24
+ 'strings.Map': { sync: true },
25
+ 'strings.ReplaceAll': { sync: true },
26
+ 'bytes.Map': { sync: true },
27
+ 'path/filepath.Walk': { sync: true },
28
+ 'path/filepath.WalkDir': { sync: true },
29
+ 'time.AfterFunc': { sync: true },
30
+ 'time.Sleep': { blocking: true },
31
+ 'net/http.ListenAndServe': { blocking: true },
32
+ 'net/http.Serve': { blocking: true },
33
+ 'net.Accept': { blocking: true },
34
+ 'os/exec.Wait': { blocking: true },
35
+ 'sync.WaitGroup.Wait': { blocking: true }
36
+ };
37
+ // Import-path → emitted qualifier for packages whose name collides with
38
+ // another importable package (or a common variable name). Single source of
39
+ // truth: the transpiler's goImportLine and the bridge qualifier use it.
40
+ export const goPathAliases = {
41
+ 'math/big': 'tnbig',
42
+ crypto: 'tncrypto',
43
+ 'net/url': 'tnurl',
44
+ 'crypto/rand': 'cryptorand',
45
+ 'math/rand/v2': 'randv2',
46
+ 'html/template': 'htmltemplate',
47
+ 'golang.org/x/text/unicode/norm': 'tnnorm',
48
+ // node:sqlite's driver: the package name differs from the last path element
49
+ 'github.com/ncruces/go-sqlite3': 'sqlite3'
50
+ };
51
+ export const goExcluded = {
52
+ plugin: 'cgo, `-buildmode=plugin`',
53
+ unsafe: 'raw pointers',
54
+ 'runtime/race': 'needs `-race`',
55
+ 'runtime/coverage': 'needs `-cover`',
56
+ 'runtime/cgo': 'needs cgo',
57
+ embed: 'needs a `//go:embed` directive; a later phase'
58
+ };
59
+ // Whether a call taking a callback invokes it synchronously.
60
+ export function isSyncCallback(pkgPath, funcName) {
61
+ const override = goOverrides[`${pkgPath}.${funcName}`];
62
+ return !!override && override.sync === true;
63
+ }
64
+ // Whether a call blocks and needs the goroutine wrapper.
65
+ export function isBlockingCall(pkgPath, funcName) {
66
+ const override = goOverrides[`${pkgPath}.${funcName}`];
67
+ return !!override && override.blocking === true;
68
+ }