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,861 @@
1
+ // node:url + globals URL / URLSearchParams: a WHATWG URL parser (special
2
+ // schemes, relative resolution, dot segments, default ports, percent-encode
3
+ // sets, IDN hosts via punycode), live searchParams, file URL helpers.
4
+ import { defineClass, defineHelper, defineModule, setResults } from './registry.js';
5
+ const urlHelper = `// WHATWG URL
6
+ type TnURL struct {
7
+ protocol string // "https:"
8
+ username string
9
+ password string
10
+ hostname string
11
+ port string
12
+ pathname string
13
+ search string // "" or "?…"
14
+ hash string // "" or "#…"
15
+ authority bool // has //host
16
+ params *TnURLSearchParams
17
+ }
18
+
19
+ var tnSpecialSchemes = map[string]string{"http:": "80", "https:": "443", "ws:": "80", "wss:": "443", "ftp:": "21", "file:": ""}
20
+
21
+ var tnSchemePattern = regexp.MustCompile("^[A-Za-z][A-Za-z0-9+.-]*:")
22
+
23
+ func tnInvalidURL(input string) *TnError {
24
+ e := TnNodeError("TypeError", "ERR_INVALID_URL", "Invalid URL")
25
+ e.props["input"] = input
26
+ return e
27
+ }
28
+
29
+ // Percent-encodes the bytes of s that are in the set (C0 controls and non-ASCII always)
30
+ func tnPercentEncode(s string, set string) string {
31
+ var sb strings.Builder
32
+ for i := 0; i < len(s); i++ {
33
+ c := s[i]
34
+ if c < 0x20 || c > 0x7E || strings.IndexByte(set, c) >= 0 {
35
+ fmt.Fprintf(&sb, "%%%02X", c)
36
+ } else {
37
+ sb.WriteByte(c)
38
+ }
39
+ }
40
+ return sb.String()
41
+ }
42
+
43
+ const tnFragmentSet = " \\"<>\`"
44
+ const tnQuerySet = " \\"#<>"
45
+ const tnSpecialQuerySet = " \\"#<>'"
46
+ const tnPathSet = " \\"#<>?\`{}"
47
+ const tnUserinfoSet = " \\"#<>?\`{}/:;=@[\\\\]^|"
48
+
49
+ func (u *TnURL) special() bool {
50
+ _, ok := tnSpecialSchemes[u.protocol]
51
+ return ok
52
+ }
53
+
54
+ // RFC 3986 remove_dot_segments on a "/"-separated path
55
+ func tnRemoveDotSegments(path string) string {
56
+ segments := strings.Split(path, "/")
57
+ out := []string{}
58
+ for i, seg := range segments {
59
+ last := i == len(segments)-1
60
+ switch strings.ToLower(seg) {
61
+ case ".", "%2e":
62
+ if last {
63
+ out = append(out, "")
64
+ }
65
+ case "..", ".%2e", "%2e.", "%2e%2e":
66
+ if len(out) > 1 {
67
+ out = out[:len(out)-1]
68
+ }
69
+ if last {
70
+ out = append(out, "")
71
+ }
72
+ default:
73
+ out = append(out, seg)
74
+ }
75
+ }
76
+ result := strings.Join(out, "/")
77
+ if strings.HasPrefix(path, "/") && !strings.HasPrefix(result, "/") {
78
+ result = "/" + result
79
+ }
80
+ return result
81
+ }
82
+
83
+ func tnParseHost(host string, special bool) (string, bool) {
84
+ if host == "" {
85
+ return "", !special
86
+ }
87
+ if strings.HasPrefix(host, "[") {
88
+ if !strings.HasSuffix(host, "]") {
89
+ return "", false
90
+ }
91
+ return strings.ToLower(host), true
92
+ }
93
+ if !special {
94
+ return tnPercentEncode(host, ""), true
95
+ }
96
+ if decoded, err := tnurl.PathUnescape(host); err == nil {
97
+ host = decoded
98
+ }
99
+ host = strings.ToLower(host)
100
+ if !tnIsASCII(host) {
101
+ host = TnPunycodeToASCII(host)
102
+ }
103
+ if strings.ContainsAny(host, " #%/:<>?@[\\\\]^|") {
104
+ return "", false
105
+ }
106
+ return host, true
107
+ }
108
+
109
+ func (u *TnURL) setPath(path string) {
110
+ if u.special() {
111
+ path = strings.ReplaceAll(path, "\\\\", "/")
112
+ if !strings.HasPrefix(path, "/") {
113
+ path = "/" + path
114
+ }
115
+ }
116
+ if u.authority || u.special() {
117
+ path = tnRemoveDotSegments(path)
118
+ }
119
+ u.pathname = tnPercentEncode(path, tnPathSet)
120
+ }
121
+
122
+ func (u *TnURL) setSearch(query string, updateParams bool) {
123
+ query = strings.TrimPrefix(query, "?")
124
+ set := tnQuerySet
125
+ if u.special() {
126
+ set = tnSpecialQuerySet
127
+ }
128
+ if query == "" {
129
+ u.search = ""
130
+ } else {
131
+ u.search = "?" + tnPercentEncode(query, set)
132
+ }
133
+ if updateParams && u.params != nil {
134
+ u.params.list = tnParseQuery(strings.TrimPrefix(u.search, "?"))
135
+ }
136
+ }
137
+
138
+ func (u *TnURL) setHash(fragment string) {
139
+ fragment = strings.TrimPrefix(fragment, "#")
140
+ if fragment == "" {
141
+ u.hash = ""
142
+ } else {
143
+ u.hash = "#" + tnPercentEncode(fragment, tnFragmentSet)
144
+ }
145
+ }
146
+
147
+ // Splits "host:port" (IPv6 hosts are bracketed)
148
+ func tnSplitHostPort(hostport string) (string, string) {
149
+ if strings.HasPrefix(hostport, "[") {
150
+ if i := strings.Index(hostport, "]"); i >= 0 {
151
+ rest := hostport[i+1:]
152
+ return hostport[:i+1], strings.TrimPrefix(rest, ":")
153
+ }
154
+ return hostport, ""
155
+ }
156
+ if i := strings.LastIndex(hostport, ":"); i >= 0 {
157
+ return hostport[:i], hostport[i+1:]
158
+ }
159
+ return hostport, ""
160
+ }
161
+
162
+ func (u *TnURL) setPort(port string) bool {
163
+ if port == "" {
164
+ u.port = ""
165
+ return true
166
+ }
167
+ for _, c := range port {
168
+ if c < '0' || c > '9' {
169
+ return false
170
+ }
171
+ }
172
+ n, err := strconv.Atoi(port)
173
+ if err != nil || n > 65535 {
174
+ return false
175
+ }
176
+ port = strconv.Itoa(n)
177
+ if def, ok := tnSpecialSchemes[u.protocol]; ok && def == port {
178
+ port = ""
179
+ }
180
+ u.port = port
181
+ return true
182
+ }
183
+
184
+ func (u *TnURL) setAuthority(auth string) bool {
185
+ u.username, u.password = "", ""
186
+ if at := strings.LastIndex(auth, "@"); at >= 0 {
187
+ userinfo := auth[:at]
188
+ auth = auth[at+1:]
189
+ if colon := strings.Index(userinfo, ":"); colon >= 0 {
190
+ u.username = tnPercentEncode(userinfo[:colon], tnUserinfoSet)
191
+ u.password = tnPercentEncode(userinfo[colon+1:], tnUserinfoSet)
192
+ } else {
193
+ u.username = tnPercentEncode(userinfo, tnUserinfoSet)
194
+ }
195
+ }
196
+ host, port := tnSplitHostPort(auth)
197
+ parsed, ok := tnParseHost(host, u.special() && u.protocol != "file:")
198
+ if !ok || !u.setPort(port) {
199
+ return false
200
+ }
201
+ u.hostname = parsed
202
+ if u.protocol == "file:" && u.hostname == "localhost" {
203
+ u.hostname = ""
204
+ }
205
+ return true
206
+ }
207
+
208
+ func tnCopyURL(b *TnURL) *TnURL {
209
+ c := *b
210
+ c.params = nil
211
+ return &c
212
+ }
213
+
214
+ func tnParseURLString(input string, base *TnURL) (*TnURL, bool) {
215
+ input = strings.TrimFunc(input, func(r rune) bool { return r <= 0x20 })
216
+ input = strings.NewReplacer("\\t", "", "\\n", "", "\\r", "").Replace(input)
217
+ fragment, hasFragment := "", false
218
+ if i := strings.Index(input, "#"); i >= 0 {
219
+ fragment, hasFragment = input[i+1:], true
220
+ input = input[:i]
221
+ }
222
+ query, hasQuery := "", false
223
+ if i := strings.Index(input, "?"); i >= 0 {
224
+ query, hasQuery = input[i+1:], true
225
+ input = input[:i]
226
+ }
227
+ u := &TnURL{}
228
+ if scheme := tnSchemePattern.FindString(input); scheme != "" {
229
+ u.protocol = strings.ToLower(scheme)
230
+ rest := input[len(scheme):]
231
+ if u.special() {
232
+ rest = strings.ReplaceAll(rest, "\\\\", "/")
233
+ }
234
+ if base != nil && u.special() && base.protocol == u.protocol && !strings.HasPrefix(rest, "/") {
235
+ // "http:foo" relative to an http: base
236
+ return tnResolveRelative(rest, query, hasQuery, fragment, hasFragment, base)
237
+ }
238
+ if strings.HasPrefix(rest, "//") || (u.special() && u.protocol != "file:") {
239
+ if u.protocol == "file:" || !u.special() {
240
+ rest = rest[2:]
241
+ } else {
242
+ rest = strings.TrimLeft(rest, "/")
243
+ }
244
+ if u.protocol == "file:" || strings.HasPrefix(input[len(scheme):], "//") || u.special() {
245
+ u.authority = true
246
+ end := strings.IndexAny(rest, "/")
247
+ auth := rest
248
+ if end >= 0 {
249
+ auth, rest = rest[:end], rest[end:]
250
+ } else {
251
+ rest = ""
252
+ }
253
+ if u.protocol == "file:" && len(auth) == 2 && auth[1] == ':' {
254
+ // file://C:/x — the drive letter is part of the path
255
+ rest = "/" + auth + rest
256
+ auth = ""
257
+ }
258
+ if !u.setAuthority(auth) {
259
+ return nil, false
260
+ }
261
+ if u.special() && u.protocol != "file:" && u.hostname == "" {
262
+ return nil, false
263
+ }
264
+ }
265
+ } else if u.protocol == "file:" {
266
+ u.authority = true
267
+ }
268
+ u.setPath(rest)
269
+ } else {
270
+ if base == nil {
271
+ return nil, false
272
+ }
273
+ return tnResolveRelative(input, query, hasQuery, fragment, hasFragment, base)
274
+ }
275
+ if hasQuery {
276
+ u.setSearch(query, false)
277
+ }
278
+ if hasFragment {
279
+ u.setHash(fragment)
280
+ }
281
+ return u, true
282
+ }
283
+
284
+ func tnResolveRelative(input string, query string, hasQuery bool, fragment string, hasFragment bool, base *TnURL) (*TnURL, bool) {
285
+ u := tnCopyURL(base)
286
+ if u.special() {
287
+ input = strings.ReplaceAll(input, "\\\\", "/")
288
+ }
289
+ switch {
290
+ case strings.HasPrefix(input, "//"):
291
+ rest := input[2:]
292
+ end := strings.Index(rest, "/")
293
+ auth := rest
294
+ if end >= 0 {
295
+ auth, rest = rest[:end], rest[end:]
296
+ } else {
297
+ rest = "/"
298
+ }
299
+ u.authority = true
300
+ if !u.setAuthority(auth) {
301
+ return nil, false
302
+ }
303
+ u.setPath(rest)
304
+ u.search, u.hash = "", ""
305
+ case strings.HasPrefix(input, "/"):
306
+ u.setPath(input)
307
+ u.search, u.hash = "", ""
308
+ case input == "":
309
+ u.hash = ""
310
+ if hasQuery {
311
+ u.search = ""
312
+ }
313
+ default:
314
+ dir := u.pathname
315
+ if i := strings.LastIndex(dir, "/"); i >= 0 {
316
+ dir = dir[:i+1]
317
+ } else {
318
+ dir = "/"
319
+ }
320
+ u.setPath(dir + input)
321
+ u.search, u.hash = "", ""
322
+ }
323
+ if hasQuery {
324
+ u.setSearch(query, false)
325
+ }
326
+ if hasFragment {
327
+ u.setHash(fragment)
328
+ }
329
+ return u, true
330
+ }
331
+
332
+ func tnURLBase(base []interface{}) (*TnURL, bool, string) {
333
+ if len(base) == 0 || base[0] == nil {
334
+ return nil, true, ""
335
+ }
336
+ switch b := base[0].(type) {
337
+ case *TnURL:
338
+ return b, true, ""
339
+ case string:
340
+ parsed, ok := tnParseURLString(b, nil)
341
+ return parsed, ok, b
342
+ }
343
+ s := fmt.Sprint(base[0])
344
+ parsed, ok := tnParseURLString(s, nil)
345
+ return parsed, ok, s
346
+ }
347
+
348
+ func tnURLInput(input interface{}) string {
349
+ if u, ok := input.(*TnURL); ok {
350
+ return u.Get_href()
351
+ }
352
+ if s, ok := input.(string); ok {
353
+ return s
354
+ }
355
+ return fmt.Sprint(input)
356
+ }
357
+
358
+ // new URL(input, base?)
359
+ func TnNewURL(input interface{}, base ...interface{}) *TnURL {
360
+ text := tnURLInput(input)
361
+ b, ok, baseText := tnURLBase(base)
362
+ if !ok {
363
+ panic(tnInvalidURL(baseText))
364
+ }
365
+ u, ok := tnParseURLString(text, b)
366
+ if !ok {
367
+ panic(tnInvalidURL(text))
368
+ }
369
+ return u
370
+ }
371
+
372
+ // URL.parse(input, base?): null instead of throwing
373
+ func TnParseURL(input interface{}, base ...interface{}) *TnURL {
374
+ b, ok, _ := tnURLBase(base)
375
+ if !ok {
376
+ return nil
377
+ }
378
+ u, ok := tnParseURLString(tnURLInput(input), b)
379
+ if !ok {
380
+ return nil
381
+ }
382
+ return u
383
+ }
384
+
385
+ func TnCanParseURL(input interface{}, base ...interface{}) bool {
386
+ return TnParseURL(input, base...) != nil
387
+ }
388
+
389
+ func (u *TnURL) Get_protocol() string { return u.protocol }
390
+ func (u *TnURL) Get_username() string { return u.username }
391
+ func (u *TnURL) Get_password() string { return u.password }
392
+ func (u *TnURL) Get_hostname() string { return u.hostname }
393
+ func (u *TnURL) Get_port() string { return u.port }
394
+ func (u *TnURL) Get_pathname() string { return u.pathname }
395
+ func (u *TnURL) Get_search() string { return u.search }
396
+ func (u *TnURL) Get_hash() string { return u.hash }
397
+
398
+ func (u *TnURL) Get_host() string {
399
+ if u.port != "" {
400
+ return u.hostname + ":" + u.port
401
+ }
402
+ return u.hostname
403
+ }
404
+
405
+ func (u *TnURL) Get_origin() string {
406
+ if u.special() && u.protocol != "file:" {
407
+ return u.protocol + "//" + u.Get_host()
408
+ }
409
+ return "null"
410
+ }
411
+
412
+ func (u *TnURL) Get_href() string {
413
+ var sb strings.Builder
414
+ sb.WriteString(u.protocol)
415
+ if u.authority {
416
+ sb.WriteString("//")
417
+ if u.username != "" || u.password != "" {
418
+ sb.WriteString(u.username)
419
+ if u.password != "" {
420
+ sb.WriteString(":" + u.password)
421
+ }
422
+ sb.WriteString("@")
423
+ }
424
+ sb.WriteString(u.Get_host())
425
+ }
426
+ sb.WriteString(u.pathname)
427
+ sb.WriteString(u.search)
428
+ sb.WriteString(u.hash)
429
+ return sb.String()
430
+ }
431
+
432
+ func (u *TnURL) Get_searchParams() *TnURLSearchParams {
433
+ if u.params == nil {
434
+ u.params = &TnURLSearchParams{list: tnParseQuery(strings.TrimPrefix(u.search, "?")), url: u}
435
+ }
436
+ return u.params
437
+ }
438
+
439
+ func (u *TnURL) Set_href(v string) {
440
+ parsed, ok := tnParseURLString(v, nil)
441
+ if !ok {
442
+ panic(tnInvalidURL(v))
443
+ }
444
+ params := u.params
445
+ *u = *parsed
446
+ u.params = params
447
+ if params != nil {
448
+ params.list = tnParseQuery(strings.TrimPrefix(u.search, "?"))
449
+ }
450
+ }
451
+
452
+ func (u *TnURL) Set_protocol(v string) {
453
+ v = strings.ToLower(strings.TrimSuffix(v, ":")) + ":"
454
+ if !tnSchemePattern.MatchString(v) {
455
+ return
456
+ }
457
+ _, toSpecial := tnSpecialSchemes[v]
458
+ if toSpecial != u.special() {
459
+ return
460
+ }
461
+ u.protocol = v
462
+ if def, ok := tnSpecialSchemes[v]; ok && def == u.port {
463
+ u.port = ""
464
+ }
465
+ }
466
+
467
+ func (u *TnURL) Set_username(v string) { u.username = tnPercentEncode(v, tnUserinfoSet) }
468
+ func (u *TnURL) Set_password(v string) { u.password = tnPercentEncode(v, tnUserinfoSet) }
469
+
470
+ func (u *TnURL) Set_host(v string) {
471
+ host, port := tnSplitHostPort(v)
472
+ if parsed, ok := tnParseHost(host, u.special() && u.protocol != "file:"); ok && parsed != "" {
473
+ u.hostname = parsed
474
+ if port != "" {
475
+ u.setPort(port)
476
+ }
477
+ }
478
+ }
479
+
480
+ func (u *TnURL) Set_hostname(v string) {
481
+ if parsed, ok := tnParseHost(v, u.special() && u.protocol != "file:"); ok && parsed != "" {
482
+ u.hostname = parsed
483
+ }
484
+ }
485
+
486
+ func (u *TnURL) Set_port(v string) {
487
+ digits := v
488
+ end := 0
489
+ for end < len(digits) && digits[end] >= '0' && digits[end] <= '9' {
490
+ end++
491
+ }
492
+ if v == "" || end > 0 {
493
+ u.setPort(digits[:end])
494
+ }
495
+ }
496
+
497
+ func (u *TnURL) Set_pathname(v string) { u.setPath(v) }
498
+ func (u *TnURL) Set_search(v string) { u.setSearch(v, true) }
499
+ func (u *TnURL) Set_hash(v string) { u.setHash(v) }
500
+
501
+ func (u *TnURL) toString() string { return u.Get_href() }
502
+ func (u *TnURL) toJSON() string { return u.Get_href() }
503
+ func (u *TnURL) String() string { return u.Get_href() }
504
+
505
+ // URLSearchParams: ordered name/value pairs; when owned by a URL, changes
506
+ // rewrite its search
507
+ type TnURLSearchParams struct {
508
+ list [][2]string
509
+ url *TnURL
510
+ }
511
+
512
+ // application/x-www-form-urlencoded decoding: + is a space, bad escapes stay
513
+ func tnFormDecode(s string) string {
514
+ s = strings.ReplaceAll(s, "+", " ")
515
+ if !strings.Contains(s, "%") {
516
+ return s
517
+ }
518
+ var out []byte
519
+ for i := 0; i < len(s); i++ {
520
+ if s[i] == '%' && i+2 < len(s) {
521
+ if b, err := hex.DecodeString(s[i+1 : i+3]); err == nil {
522
+ out = append(out, b[0])
523
+ i += 2
524
+ continue
525
+ }
526
+ }
527
+ out = append(out, s[i])
528
+ }
529
+ return string(out)
530
+ }
531
+
532
+ func tnFormEncode(s string) string {
533
+ var sb strings.Builder
534
+ for i := 0; i < len(s); i++ {
535
+ c := s[i]
536
+ switch {
537
+ case c == ' ':
538
+ sb.WriteByte('+')
539
+ case (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '*' || c == '-' || c == '.' || c == '_':
540
+ sb.WriteByte(c)
541
+ default:
542
+ fmt.Fprintf(&sb, "%%%02X", c)
543
+ }
544
+ }
545
+ return sb.String()
546
+ }
547
+
548
+ func tnParseQuery(query string) [][2]string {
549
+ list := [][2]string{}
550
+ for _, part := range strings.Split(query, "&") {
551
+ if part == "" {
552
+ continue
553
+ }
554
+ name, value := part, ""
555
+ if i := strings.Index(part, "="); i >= 0 {
556
+ name, value = part[:i], part[i+1:]
557
+ }
558
+ list = append(list, [2]string{tnFormDecode(name), tnFormDecode(value)})
559
+ }
560
+ return list
561
+ }
562
+
563
+ func tnStringOfValue(v interface{}) string {
564
+ switch x := v.(type) {
565
+ case string:
566
+ return x
567
+ case float64:
568
+ return TnNumStr(x)
569
+ case nil:
570
+ return "undefined"
571
+ }
572
+ return fmt.Sprint(v)
573
+ }
574
+
575
+ // new URLSearchParams(init): a query string, a record / object, pairs or another instance
576
+ func TnNewURLSearchParams(init ...interface{}) *TnURLSearchParams {
577
+ p := &TnURLSearchParams{list: [][2]string{}}
578
+ if len(init) == 0 || init[0] == nil {
579
+ return p
580
+ }
581
+ switch x := init[0].(type) {
582
+ case string:
583
+ p.list = tnParseQuery(strings.TrimPrefix(x, "?"))
584
+ return p
585
+ case *TnURLSearchParams:
586
+ p.list = append([][2]string{}, x.list...)
587
+ return p
588
+ case [][]string:
589
+ for _, pair := range x {
590
+ if len(pair) != 2 {
591
+ panic(TnNodeError("TypeError", "ERR_INVALID_TUPLE", "Each query pair must be an iterable [name, value] tuple"))
592
+ }
593
+ p.list = append(p.list, [2]string{pair[0], pair[1]})
594
+ }
595
+ return p
596
+ case map[string]interface{}:
597
+ keys := make([]string, 0, len(x))
598
+ for k := range x {
599
+ keys = append(keys, k)
600
+ }
601
+ sort.Strings(keys)
602
+ for _, k := range keys {
603
+ p.list = append(p.list, [2]string{k, tnStringOfValue(x[k])})
604
+ }
605
+ return p
606
+ }
607
+ if withEntries, ok := init[0].(interface{ Entries() [][]interface{} }); ok {
608
+ for _, e := range withEntries.Entries() {
609
+ p.list = append(p.list, [2]string{tnStringOfValue(e[0]), tnStringOfValue(e[1])})
610
+ }
611
+ return p
612
+ }
613
+ rv := reflect.ValueOf(init[0])
614
+ if rv.Kind() == reflect.Slice {
615
+ for i := 0; i < rv.Len(); i++ {
616
+ pair := reflect.ValueOf(rv.Index(i).Interface())
617
+ if pair.Kind() == reflect.Slice && pair.Len() == 2 {
618
+ p.list = append(p.list, [2]string{tnStringOfValue(pair.Index(0).Interface()), tnStringOfValue(pair.Index(1).Interface())})
619
+ }
620
+ }
621
+ return p
622
+ }
623
+ if rv.Kind() == reflect.Pointer && !rv.IsNil() && rv.Elem().Kind() == reflect.Struct {
624
+ sv := rv.Elem()
625
+ for i := 0; i < sv.NumField(); i++ {
626
+ f := sv.Field(i)
627
+ value := reflect.NewAt(f.Type(), unsafe.Pointer(f.UnsafeAddr())).Elem().Interface()
628
+ p.list = append(p.list, [2]string{strings.TrimSuffix(sv.Type().Field(i).Name, "_"), tnStringOfValue(value)})
629
+ }
630
+ }
631
+ return p
632
+ }
633
+
634
+ func (p *TnURLSearchParams) update() {
635
+ if p.url != nil {
636
+ s := p.toString()
637
+ if s == "" {
638
+ p.url.search = ""
639
+ } else {
640
+ p.url.search = "?" + s
641
+ }
642
+ }
643
+ }
644
+
645
+ func (p *TnURLSearchParams) append(name string, value interface{}) {
646
+ p.list = append(p.list, [2]string{name, tnStringOfValue(value)})
647
+ p.update()
648
+ }
649
+
650
+ func (p *TnURLSearchParams) set(name string, value interface{}) {
651
+ v := tnStringOfValue(value)
652
+ out := [][2]string{}
653
+ found := false
654
+ for _, pair := range p.list {
655
+ if pair[0] == name {
656
+ if !found {
657
+ out = append(out, [2]string{name, v})
658
+ found = true
659
+ }
660
+ continue
661
+ }
662
+ out = append(out, pair)
663
+ }
664
+ if !found {
665
+ out = append(out, [2]string{name, v})
666
+ }
667
+ p.list = out
668
+ p.update()
669
+ }
670
+
671
+ func (p *TnURLSearchParams) delete(name string, value ...interface{}) {
672
+ out := [][2]string{}
673
+ for _, pair := range p.list {
674
+ if pair[0] == name && (len(value) == 0 || value[0] == nil || tnStringOfValue(value[0]) == pair[1]) {
675
+ continue
676
+ }
677
+ out = append(out, pair)
678
+ }
679
+ p.list = out
680
+ p.update()
681
+ }
682
+
683
+ func (p *TnURLSearchParams) get(name string) *string {
684
+ for _, pair := range p.list {
685
+ if pair[0] == name {
686
+ v := pair[1]
687
+ return &v
688
+ }
689
+ }
690
+ return nil
691
+ }
692
+
693
+ func (p *TnURLSearchParams) getAll(name string) []string {
694
+ out := []string{}
695
+ for _, pair := range p.list {
696
+ if pair[0] == name {
697
+ out = append(out, pair[1])
698
+ }
699
+ }
700
+ return out
701
+ }
702
+
703
+ func (p *TnURLSearchParams) has(name string, value ...interface{}) bool {
704
+ for _, pair := range p.list {
705
+ if pair[0] == name && (len(value) == 0 || value[0] == nil || tnStringOfValue(value[0]) == pair[1]) {
706
+ return true
707
+ }
708
+ }
709
+ return false
710
+ }
711
+
712
+ func (p *TnURLSearchParams) sort() {
713
+ sort.SliceStable(p.list, func(i, j int) bool {
714
+ return utf16Less(p.list[i][0], p.list[j][0])
715
+ })
716
+ p.update()
717
+ }
718
+
719
+ // Code-unit order, as JS sorts strings
720
+ func utf16Less(a string, b string) bool {
721
+ ua, ub := utf16.Encode([]rune(a)), utf16.Encode([]rune(b))
722
+ for i := 0; i < len(ua) && i < len(ub); i++ {
723
+ if ua[i] != ub[i] {
724
+ return ua[i] < ub[i]
725
+ }
726
+ }
727
+ return len(ua) < len(ub)
728
+ }
729
+
730
+ func (p *TnURLSearchParams) toString() string {
731
+ parts := make([]string, len(p.list))
732
+ for i, pair := range p.list {
733
+ parts[i] = tnFormEncode(pair[0]) + "=" + tnFormEncode(pair[1])
734
+ }
735
+ return strings.Join(parts, "&")
736
+ }
737
+
738
+ func (p *TnURLSearchParams) String() string { return p.toString() }
739
+
740
+ func (p *TnURLSearchParams) Get_size() float64 { return float64(len(p.list)) }
741
+
742
+ func (p *TnURLSearchParams) keys() []string {
743
+ out := make([]string, len(p.list))
744
+ for i, pair := range p.list {
745
+ out[i] = pair[0]
746
+ }
747
+ return out
748
+ }
749
+
750
+ func (p *TnURLSearchParams) values() []string {
751
+ out := make([]string, len(p.list))
752
+ for i, pair := range p.list {
753
+ out[i] = pair[1]
754
+ }
755
+ return out
756
+ }
757
+
758
+ func (p *TnURLSearchParams) entries() [][]string {
759
+ out := make([][]string, len(p.list))
760
+ for i, pair := range p.list {
761
+ out[i] = []string{pair[0], pair[1]}
762
+ }
763
+ return out
764
+ }
765
+
766
+ // forEach((value, key, params) => …)
767
+ func (p *TnURLSearchParams) forEach(fn interface{}) {
768
+ for _, pair := range append([][2]string{}, p.list...) {
769
+ TnInvoke(fn, pair[1], pair[0], p)
770
+ }
771
+ }
772
+
773
+ // url.fileURLToPath(string | URL)
774
+ func TnFileURLToPath(input interface{}) string {
775
+ u, ok := tnParseURLString(tnURLInput(input), nil)
776
+ if !ok || u.protocol != "file:" {
777
+ panic(TnNodeError("TypeError", "ERR_INVALID_URL_SCHEME", "The URL must be of scheme file"))
778
+ }
779
+ path, err := tnurl.PathUnescape(u.pathname)
780
+ if err != nil {
781
+ path = u.pathname
782
+ }
783
+ if runtime.GOOS == "windows" {
784
+ if len(path) >= 3 && path[0] == '/' && path[2] == ':' {
785
+ path = path[1:]
786
+ } else if u.hostname != "" {
787
+ path = "//" + u.hostname + path
788
+ }
789
+ return filepath.FromSlash(path)
790
+ }
791
+ return path
792
+ }
793
+
794
+ func TnPathToFileURLObject(path string) *TnURL {
795
+ u, _ := tnParseURLString(TnPathToFileURL(path), nil)
796
+ return u
797
+ }
798
+
799
+ func TnDomainToASCII(domain string) string {
800
+ host, ok := tnParseHost(domain, true)
801
+ if !ok {
802
+ return ""
803
+ }
804
+ return host
805
+ }
806
+
807
+ func TnDomainToUnicode(domain string) string {
808
+ return TnPunycodeToUnicode(strings.ToLower(domain))
809
+ }`;
810
+ export function registerUrl(r) {
811
+ defineModule(r, 'url');
812
+ defineHelper(r, 'nodeUrl', ['encoding/hex', 'fmt', 'net/url', 'path/filepath', 'reflect', 'regexp', 'runtime', 'sort', 'strconv', 'strings', 'unicode/utf16', 'unsafe'], ['error', 'dynamic', 'punycode', 'pathToFileURL', 'nodeInvoke'], urlHelper);
813
+ defineClass(r, 'url.URL', '*TnURL', 'class', 'toString=string; toJSON=string', '', 'href=string; protocol=string; username=string; password=string; host=string; hostname=string; port=string; pathname=string; search=string; hash=string; origin=string; searchParams=*TnURLSearchParams', 'href; protocol; username; password; host; hostname; port; pathname; search; hash');
814
+ defineClass(r, 'url.URLSearchParams', '*TnURLSearchParams', 'class', 'append=; set=; delete=; get=*string; getAll=[]string; has=bool; sort=; toString=string; keys=[]string; values=[]string; entries=[][]string; forEach=', '', 'size=float64', '');
815
+ r.iterators['*TnURLSearchParams'] = 'entries';
816
+ r.paramTypers['url.URLSearchParams#forEach'] = (_n) => ['string', 'string', '*TnURLSearchParams'];
817
+ r.globals['URL'] = 'url.URL';
818
+ r.globals['URLSearchParams'] = 'url.URLSearchParams';
819
+ const use = () => r.helper('nodeUrl');
820
+ r.constructors['url.URL'] = (call) => {
821
+ use();
822
+ return `TnNewURL(${call.args.join(', ')})`;
823
+ };
824
+ r.constructors['url.URLSearchParams'] = (call) => {
825
+ use();
826
+ return `TnNewURLSearchParams(${call.args.join(', ')})`;
827
+ };
828
+ r.functions['url.URL.canParse'] = (call) => {
829
+ use();
830
+ return `TnCanParseURL(${call.args.join(', ')})`;
831
+ };
832
+ r.functions['url.URL.parse'] = (call) => {
833
+ use();
834
+ return `TnParseURL(${call.args.join(', ')})`;
835
+ };
836
+ r.results['url.URL.canParse'] = 'bool';
837
+ r.results['url.URL.parse'] = '*TnURL';
838
+ r.functions['url.fileURLToPath'] = (call) => {
839
+ use();
840
+ return `TnFileURLToPath(${call.args[0]})`;
841
+ };
842
+ r.functions['url.pathToFileURL'] = (call) => {
843
+ use();
844
+ return `TnPathToFileURLObject(${call.args[0]})`;
845
+ };
846
+ r.functions['url.format'] = (call) => {
847
+ use();
848
+ if (call.types[0] === '*TnURL')
849
+ return `${call.args[0]}.Get_href()`;
850
+ return `tnURLInput(${call.args[0]})`;
851
+ };
852
+ r.functions['url.domainToASCII'] = (call) => {
853
+ use();
854
+ return `TnDomainToASCII(${call.args[0]})`;
855
+ };
856
+ r.functions['url.domainToUnicode'] = (call) => {
857
+ use();
858
+ return `TnDomainToUnicode(${call.args[0]})`;
859
+ };
860
+ setResults(r, 'url', 'fileURLToPath=string; pathToFileURL=*TnURL; format=string; domainToASCII=string; domainToUnicode=string');
861
+ }