typenative 0.1.3 → 0.3.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 (505) hide show
  1. package/.gitattributes +1 -0
  2. package/.github/workflows/ci.yml +39 -2
  3. package/.github/workflows/npm-publish-github-packages.yml +7 -2
  4. package/CHANGELOG.md +293 -0
  5. package/CONTRIBUTION.md +8 -6
  6. package/README.md +15 -11
  7. package/bin/cli.js +7 -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 +337 -239
  14. package/bin/main.js +9 -2
  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 +714 -0
  45. package/bin/node/test.js +1068 -0
  46. package/bin/node/timers.js +263 -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 +10 -0
  54. package/bin/parse-node.js +10 -0
  55. package/bin/transpiler.js +2824 -588
  56. package/bin/typecheck-node.js +78 -0
  57. package/bin/version.js +2 -0
  58. package/conformance.md +708 -241
  59. package/govendor/github.com/ncruces/go-sqlite3/LICENSE +21 -0
  60. package/govendor/github.com/ncruces/go-sqlite3/README.md +121 -0
  61. package/govendor/github.com/ncruces/go-sqlite3/backup.go +132 -0
  62. package/govendor/github.com/ncruces/go-sqlite3/blob.go +266 -0
  63. package/govendor/github.com/ncruces/go-sqlite3/config.go +397 -0
  64. package/govendor/github.com/ncruces/go-sqlite3/conn.go +540 -0
  65. package/govendor/github.com/ncruces/go-sqlite3/conn_127.go +93 -0
  66. package/govendor/github.com/ncruces/go-sqlite3/const.go +436 -0
  67. package/govendor/github.com/ncruces/go-sqlite3/context.go +222 -0
  68. package/govendor/github.com/ncruces/go-sqlite3/error.go +182 -0
  69. package/govendor/github.com/ncruces/go-sqlite3/ext.go +153 -0
  70. package/govendor/github.com/ncruces/go-sqlite3/func.go +309 -0
  71. package/govendor/github.com/ncruces/go-sqlite3/go.mod +3 -0
  72. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go +29 -0
  73. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go +13 -0
  74. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go +57 -0
  75. package/govendor/github.com/ncruces/go-sqlite3/internal/errutil/error.go +41 -0
  76. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/alloc.go +128 -0
  77. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/const.go +122 -0
  78. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/error.go +77 -0
  79. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem.go +116 -0
  80. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_other.go +34 -0
  81. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_unix.go +87 -0
  82. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_windows.go +149 -0
  83. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_unix.go +80 -0
  84. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_windows.go +129 -0
  85. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/sys_windows.go +60 -0
  86. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap.go +82 -0
  87. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_sys.go +113 -0
  88. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_vfs.go +181 -0
  89. package/govendor/github.com/ncruces/go-sqlite3/internal/testenv/env.go +55 -0
  90. package/govendor/github.com/ncruces/go-sqlite3/internal/util/json.go +54 -0
  91. package/govendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go +54 -0
  92. package/govendor/github.com/ncruces/go-sqlite3/internal/util/math.go +29 -0
  93. package/govendor/github.com/ncruces/go-sqlite3/internal/util/page.go +5 -0
  94. package/govendor/github.com/ncruces/go-sqlite3/internal/util/parse.go +142 -0
  95. package/govendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go +3 -0
  96. package/govendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go +10 -0
  97. package/govendor/github.com/ncruces/go-sqlite3/json.go +100 -0
  98. package/govendor/github.com/ncruces/go-sqlite3/json_v2.go +116 -0
  99. package/govendor/github.com/ncruces/go-sqlite3/pointer.go +13 -0
  100. package/govendor/github.com/ncruces/go-sqlite3/quote.go +140 -0
  101. package/govendor/github.com/ncruces/go-sqlite3/stmt.go +692 -0
  102. package/govendor/github.com/ncruces/go-sqlite3/time.go +360 -0
  103. package/govendor/github.com/ncruces/go-sqlite3/txn.go +374 -0
  104. package/govendor/github.com/ncruces/go-sqlite3/value.go +212 -0
  105. package/govendor/github.com/ncruces/go-sqlite3/vfs/README.md +133 -0
  106. package/govendor/github.com/ncruces/go-sqlite3/vfs/api.go +239 -0
  107. package/govendor/github.com/ncruces/go-sqlite3/vfs/cksm.go +143 -0
  108. package/govendor/github.com/ncruces/go-sqlite3/vfs/const.go +256 -0
  109. package/govendor/github.com/ncruces/go-sqlite3/vfs/file.go +260 -0
  110. package/govendor/github.com/ncruces/go-sqlite3/vfs/filename.go +187 -0
  111. package/govendor/github.com/ncruces/go-sqlite3/vfs/lock.go +128 -0
  112. package/govendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go +23 -0
  113. package/govendor/github.com/ncruces/go-sqlite3/vfs/map.go +63 -0
  114. package/govendor/github.com/ncruces/go-sqlite3/vfs/map_other.go +13 -0
  115. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +110 -0
  116. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +131 -0
  117. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go +140 -0
  118. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go +56 -0
  119. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +117 -0
  120. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +59 -0
  121. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std.go +50 -0
  122. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go +19 -0
  123. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go +9 -0
  124. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go +13 -0
  125. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go +9 -0
  126. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_temp.go +16 -0
  127. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +108 -0
  128. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +180 -0
  129. package/govendor/github.com/ncruces/go-sqlite3/vfs/registry.go +48 -0
  130. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm.go +26 -0
  131. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go +258 -0
  132. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go +90 -0
  133. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go +168 -0
  134. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go +52 -0
  135. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go +185 -0
  136. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go +21 -0
  137. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go +124 -0
  138. package/govendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +455 -0
  139. package/govendor/github.com/ncruces/go-sqlite3/vtab.go +677 -0
  140. package/govendor/github.com/ncruces/go-sqlite3/wrap.go +48 -0
  141. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/LICENSE +18 -0
  142. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/README.md +11 -0
  143. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/go.mod +3 -0
  144. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/libc.go +215 -0
  145. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.dat +0 -0
  146. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.go +157903 -0
  147. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/tools.sh +38 -0
  148. package/govendor/github.com/ncruces/julianday/LICENSE +21 -0
  149. package/govendor/github.com/ncruces/julianday/README.md +9 -0
  150. package/govendor/github.com/ncruces/julianday/go.mod +3 -0
  151. package/govendor/github.com/ncruces/julianday/julianday.go +124 -0
  152. package/govendor/golang.org/x/sys/LICENSE +27 -0
  153. package/govendor/golang.org/x/sys/PATENTS +22 -0
  154. package/govendor/golang.org/x/sys/go.mod +3 -0
  155. package/govendor/golang.org/x/sys/unix/README.md +184 -0
  156. package/govendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
  157. package/govendor/golang.org/x/sys/unix/aliases.go +13 -0
  158. package/govendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
  159. package/govendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
  160. package/govendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
  161. package/govendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
  162. package/govendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
  163. package/govendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
  164. package/govendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
  165. package/govendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
  166. package/govendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
  167. package/govendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
  168. package/govendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
  169. package/govendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
  170. package/govendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
  171. package/govendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
  172. package/govendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
  173. package/govendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
  174. package/govendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
  175. package/govendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
  176. package/govendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
  177. package/govendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
  178. package/govendor/golang.org/x/sys/unix/auxv.go +36 -0
  179. package/govendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
  180. package/govendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
  181. package/govendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
  182. package/govendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
  183. package/govendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
  184. package/govendor/golang.org/x/sys/unix/constants.go +13 -0
  185. package/govendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
  186. package/govendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
  187. package/govendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
  188. package/govendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
  189. package/govendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
  190. package/govendor/golang.org/x/sys/unix/dev_linux.go +42 -0
  191. package/govendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
  192. package/govendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
  193. package/govendor/golang.org/x/sys/unix/dev_zos.go +28 -0
  194. package/govendor/golang.org/x/sys/unix/dirent.go +102 -0
  195. package/govendor/golang.org/x/sys/unix/endian_big.go +9 -0
  196. package/govendor/golang.org/x/sys/unix/endian_little.go +9 -0
  197. package/govendor/golang.org/x/sys/unix/env_unix.go +31 -0
  198. package/govendor/golang.org/x/sys/unix/fcntl.go +36 -0
  199. package/govendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
  200. package/govendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
  201. package/govendor/golang.org/x/sys/unix/fdset.go +27 -0
  202. package/govendor/golang.org/x/sys/unix/gccgo.go +59 -0
  203. package/govendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
  204. package/govendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
  205. package/govendor/golang.org/x/sys/unix/ifreq_linux.go +145 -0
  206. package/govendor/golang.org/x/sys/unix/ioctl_linux.go +341 -0
  207. package/govendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
  208. package/govendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
  209. package/govendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
  210. package/govendor/golang.org/x/sys/unix/mkall.sh +250 -0
  211. package/govendor/golang.org/x/sys/unix/mkerrors.sh +807 -0
  212. package/govendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
  213. package/govendor/golang.org/x/sys/unix/mremap.go +57 -0
  214. package/govendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
  215. package/govendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
  216. package/govendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
  217. package/govendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
  218. package/govendor/golang.org/x/sys/unix/race.go +30 -0
  219. package/govendor/golang.org/x/sys/unix/race0.go +25 -0
  220. package/govendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
  221. package/govendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
  222. package/govendor/golang.org/x/sys/unix/readv_unix.go +103 -0
  223. package/govendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
  224. package/govendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
  225. package/govendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
  226. package/govendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
  227. package/govendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
  228. package/govendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
  229. package/govendor/golang.org/x/sys/unix/syscall.go +86 -0
  230. package/govendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
  231. package/govendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
  232. package/govendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
  233. package/govendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
  234. package/govendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
  235. package/govendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
  236. package/govendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
  237. package/govendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
  238. package/govendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
  239. package/govendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
  240. package/govendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
  241. package/govendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
  242. package/govendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
  243. package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
  244. package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
  245. package/govendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
  246. package/govendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
  247. package/govendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
  248. package/govendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
  249. package/govendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
  250. package/govendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
  251. package/govendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
  252. package/govendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
  253. package/govendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
  254. package/govendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
  255. package/govendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
  256. package/govendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
  257. package/govendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
  258. package/govendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
  259. package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
  260. package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
  261. package/govendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
  262. package/govendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
  263. package/govendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
  264. package/govendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
  265. package/govendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
  266. package/govendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
  267. package/govendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
  268. package/govendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
  269. package/govendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
  270. package/govendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
  271. package/govendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
  272. package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
  273. package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
  274. package/govendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
  275. package/govendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
  276. package/govendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
  277. package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
  278. package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
  279. package/govendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
  280. package/govendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
  281. package/govendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
  282. package/govendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
  283. package/govendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
  284. package/govendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
  285. package/govendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
  286. package/govendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
  287. package/govendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
  288. package/govendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
  289. package/govendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
  290. package/govendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
  291. package/govendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
  292. package/govendor/golang.org/x/sys/unix/timestruct.go +76 -0
  293. package/govendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
  294. package/govendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
  295. package/govendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
  296. package/govendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
  297. package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
  298. package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
  299. package/govendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
  300. package/govendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
  301. package/govendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
  302. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
  303. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
  304. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
  305. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
  306. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
  307. package/govendor/golang.org/x/sys/unix/zerrors_linux.go +4209 -0
  308. package/govendor/golang.org/x/sys/unix/zerrors_linux_386.go +882 -0
  309. package/govendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +882 -0
  310. package/govendor/golang.org/x/sys/unix/zerrors_linux_arm.go +887 -0
  311. package/govendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +884 -0
  312. package/govendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +874 -0
  313. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips.go +888 -0
  314. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +888 -0
  315. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +888 -0
  316. package/govendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +888 -0
  317. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +940 -0
  318. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +944 -0
  319. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +944 -0
  320. package/govendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +884 -0
  321. package/govendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +943 -0
  322. package/govendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +992 -0
  323. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
  324. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
  325. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
  326. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
  327. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
  328. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
  329. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
  330. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
  331. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
  332. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
  333. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
  334. package/govendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
  335. package/govendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
  336. package/govendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
  337. package/govendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
  338. package/govendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
  339. package/govendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
  340. package/govendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
  341. package/govendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
  342. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
  343. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
  344. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
  345. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
  346. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
  347. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
  348. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
  349. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
  350. package/govendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
  351. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
  352. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
  353. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
  354. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
  355. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
  356. package/govendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
  357. package/govendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
  358. package/govendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
  359. package/govendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
  360. package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
  361. package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
  362. package/govendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
  363. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
  364. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
  365. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
  366. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
  367. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
  368. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
  369. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
  370. package/govendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
  371. package/govendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
  372. package/govendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
  373. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
  374. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
  375. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
  376. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
  377. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
  378. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
  379. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
  380. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
  381. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
  382. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
  383. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
  384. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
  385. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
  386. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
  387. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
  388. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
  389. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
  390. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
  391. package/govendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
  392. package/govendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
  393. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
  394. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
  395. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
  396. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
  397. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
  398. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
  399. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
  400. package/govendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
  401. package/govendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
  402. package/govendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
  403. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
  404. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
  405. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
  406. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
  407. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
  408. package/govendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
  409. package/govendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
  410. package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
  411. package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
  412. package/govendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
  413. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
  414. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
  415. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
  416. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
  417. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
  418. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
  419. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
  420. package/govendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
  421. package/govendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
  422. package/govendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
  423. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
  424. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
  425. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
  426. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
  427. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
  428. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
  429. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
  430. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
  431. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
  432. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
  433. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
  434. package/govendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
  435. package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
  436. package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
  437. package/govendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
  438. package/govendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
  439. package/govendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
  440. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
  441. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
  442. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
  443. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
  444. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
  445. package/govendor/golang.org/x/sys/unix/ztypes_linux.go +6547 -0
  446. package/govendor/golang.org/x/sys/unix/ztypes_linux_386.go +747 -0
  447. package/govendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +761 -0
  448. package/govendor/golang.org/x/sys/unix/ztypes_linux_arm.go +741 -0
  449. package/govendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +740 -0
  450. package/govendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +741 -0
  451. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips.go +746 -0
  452. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +743 -0
  453. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +743 -0
  454. package/govendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +746 -0
  455. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +754 -0
  456. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +749 -0
  457. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +749 -0
  458. package/govendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +828 -0
  459. package/govendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +763 -0
  460. package/govendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +744 -0
  461. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
  462. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
  463. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
  464. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
  465. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
  466. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
  467. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
  468. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
  469. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
  470. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
  471. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
  472. package/govendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
  473. package/govendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
  474. package/govendor/golang.org/x/sys/windows/aliases.go +13 -0
  475. package/govendor/golang.org/x/sys/windows/dll_windows.go +380 -0
  476. package/govendor/golang.org/x/sys/windows/env_windows.go +57 -0
  477. package/govendor/golang.org/x/sys/windows/eventlog.go +20 -0
  478. package/govendor/golang.org/x/sys/windows/exec_windows.go +248 -0
  479. package/govendor/golang.org/x/sys/windows/memory_windows.go +48 -0
  480. package/govendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
  481. package/govendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
  482. package/govendor/golang.org/x/sys/windows/mksyscall.go +9 -0
  483. package/govendor/golang.org/x/sys/windows/race.go +30 -0
  484. package/govendor/golang.org/x/sys/windows/race0.go +25 -0
  485. package/govendor/golang.org/x/sys/windows/security_windows.go +1537 -0
  486. package/govendor/golang.org/x/sys/windows/service.go +257 -0
  487. package/govendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
  488. package/govendor/golang.org/x/sys/windows/str.go +22 -0
  489. package/govendor/golang.org/x/sys/windows/syscall.go +104 -0
  490. package/govendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
  491. package/govendor/golang.org/x/sys/windows/types_windows.go +4058 -0
  492. package/govendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
  493. package/govendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
  494. package/govendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
  495. package/govendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
  496. package/govendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
  497. package/govendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
  498. package/govendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
  499. package/govendor/manifest.txt +7 -0
  500. package/package.json +7 -1
  501. package/tsparser/check.go +157 -0
  502. package/tsparser/main.go +30 -1
  503. package/types/typenative-go.d.ts +15159 -5
  504. package/types/typenative-npm.d.ts +2640 -34
  505. package/types/typenative.d.ts +651 -8
@@ -0,0 +1,374 @@
1
+ package sqlite3
2
+
3
+ import (
4
+ "math/rand"
5
+ "runtime"
6
+ "strconv"
7
+ "strings"
8
+ )
9
+
10
+ // Txn is an in-progress database transaction.
11
+ //
12
+ // https://sqlite.org/lang_transaction.html
13
+ type Txn struct {
14
+ c *Conn
15
+ }
16
+
17
+ // Begin starts a deferred transaction.
18
+ // It panics if a transaction is in-progress.
19
+ // For nested transactions, use [Conn.Savepoint].
20
+ //
21
+ // https://sqlite.org/lang_transaction.html
22
+ func (c *Conn) Begin() Txn {
23
+ // BEGIN even if interrupted.
24
+ err := c.exec(`BEGIN DEFERRED`)
25
+ if err != nil {
26
+ panic(err)
27
+ }
28
+ return Txn{c}
29
+ }
30
+
31
+ // BeginConcurrent starts a concurrent transaction.
32
+ //
33
+ // Experimental: requires a custom build of SQLite.
34
+ //
35
+ // https://sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
36
+ func (c *Conn) BeginConcurrent() (Txn, error) {
37
+ err := c.Exec(`BEGIN CONCURRENT`)
38
+ if err != nil {
39
+ return Txn{}, err
40
+ }
41
+ return Txn{c}, nil
42
+ }
43
+
44
+ // BeginImmediate starts an immediate transaction.
45
+ //
46
+ // https://sqlite.org/lang_transaction.html
47
+ func (c *Conn) BeginImmediate() (Txn, error) {
48
+ err := c.Exec(`BEGIN IMMEDIATE`)
49
+ if err != nil {
50
+ return Txn{}, err
51
+ }
52
+ return Txn{c}, nil
53
+ }
54
+
55
+ // BeginExclusive starts an exclusive transaction.
56
+ //
57
+ // https://sqlite.org/lang_transaction.html
58
+ func (c *Conn) BeginExclusive() (Txn, error) {
59
+ err := c.Exec(`BEGIN EXCLUSIVE`)
60
+ if err != nil {
61
+ return Txn{}, err
62
+ }
63
+ return Txn{c}, nil
64
+ }
65
+
66
+ // End calls either [Txn.Commit] or [Txn.Rollback]
67
+ // depending on whether *error points to a nil or non-nil error.
68
+ //
69
+ // This is meant to be deferred:
70
+ //
71
+ // func doWork(db *sqlite3.Conn) (err error) {
72
+ // tx := db.Begin()
73
+ // defer tx.End(&err)
74
+ //
75
+ // // ... do work in the transaction
76
+ // }
77
+ //
78
+ // https://sqlite.org/lang_transaction.html
79
+ func (tx Txn) End(errp *error) {
80
+ recovered := recover()
81
+ if recovered != nil {
82
+ defer panic(recovered)
83
+ }
84
+
85
+ if *errp == nil && recovered == nil {
86
+ // Success path.
87
+ if tx.c.GetAutocommit() { // There is nothing to commit.
88
+ return
89
+ }
90
+ *errp = tx.Commit()
91
+ if *errp == nil {
92
+ return
93
+ }
94
+ // Fall through to the error path.
95
+ }
96
+
97
+ // Error path.
98
+ if tx.c.GetAutocommit() { // There is nothing to rollback.
99
+ return
100
+ }
101
+ err := tx.Rollback()
102
+ if err != nil {
103
+ panic(err)
104
+ }
105
+ }
106
+
107
+ // Commit commits the transaction.
108
+ //
109
+ // https://sqlite.org/lang_transaction.html
110
+ func (tx Txn) Commit() error {
111
+ return tx.c.Exec(`COMMIT`)
112
+ }
113
+
114
+ // Rollback rolls back the transaction,
115
+ // even if the connection has been interrupted.
116
+ //
117
+ // https://sqlite.org/lang_transaction.html
118
+ func (tx Txn) Rollback() error {
119
+ // ROLLBACK even if interrupted.
120
+ return tx.c.exec(`ROLLBACK`)
121
+ }
122
+
123
+ // Savepoint is a marker within a transaction
124
+ // that allows for partial rollback.
125
+ //
126
+ // https://sqlite.org/lang_savepoint.html
127
+ type Savepoint struct {
128
+ c *Conn
129
+ name string
130
+ }
131
+
132
+ // Savepoint establishes a new transaction savepoint.
133
+ //
134
+ // https://sqlite.org/lang_savepoint.html
135
+ func (c *Conn) Savepoint() Savepoint {
136
+ name := callerName()
137
+ if name == "" {
138
+ name = "sqlite3.Savepoint"
139
+ }
140
+ // Names can be reused, but this makes catching bugs more likely.
141
+ name = QuoteIdentifier(name + "_" + strconv.Itoa(int(rand.Int31())))
142
+
143
+ err := c.exec(`SAVEPOINT ` + name)
144
+ if err != nil {
145
+ panic(err)
146
+ }
147
+ return Savepoint{c: c, name: name}
148
+ }
149
+
150
+ func callerName() (name string) {
151
+ var pc [8]uintptr
152
+ n := runtime.Callers(3, pc[:])
153
+ if n <= 0 {
154
+ return ""
155
+ }
156
+ frames := runtime.CallersFrames(pc[:n])
157
+ frame, more := frames.Next()
158
+ for more && (strings.HasPrefix(frame.Function, "database/sql.") ||
159
+ strings.HasPrefix(frame.Function, "github.com/ncruces/go-sqlite3/driver.")) {
160
+ frame, more = frames.Next()
161
+ }
162
+ return frame.Function
163
+ }
164
+
165
+ // Release releases the savepoint rolling back any changes
166
+ // if *error points to a non-nil error.
167
+ //
168
+ // This is meant to be deferred:
169
+ //
170
+ // func doWork(db *sqlite3.Conn) (err error) {
171
+ // savept := db.Savepoint()
172
+ // defer savept.Release(&err)
173
+ //
174
+ // // ... do work in the transaction
175
+ // }
176
+ func (s Savepoint) Release(errp *error) {
177
+ recovered := recover()
178
+ if recovered != nil {
179
+ defer panic(recovered)
180
+ }
181
+
182
+ if *errp == nil && recovered == nil {
183
+ // Success path.
184
+ if s.c.GetAutocommit() { // There is nothing to commit.
185
+ return
186
+ }
187
+ *errp = s.c.Exec(`RELEASE ` + s.name)
188
+ if *errp == nil {
189
+ return
190
+ }
191
+ // Fall through to the error path.
192
+ }
193
+
194
+ // Error path.
195
+ if s.c.GetAutocommit() { // There is nothing to rollback.
196
+ return
197
+ }
198
+ // ROLLBACK and RELEASE even if interrupted.
199
+ err := s.c.exec(`ROLLBACK TO ` + s.name + `; RELEASE ` + s.name)
200
+ if err != nil {
201
+ panic(err)
202
+ }
203
+ }
204
+
205
+ // Rollback rolls the transaction back to the savepoint,
206
+ // even if the connection has been interrupted.
207
+ // Rollback does not release the savepoint.
208
+ //
209
+ // https://sqlite.org/lang_transaction.html
210
+ func (s Savepoint) Rollback() error {
211
+ // ROLLBACK even if interrupted.
212
+ return s.c.exec(`ROLLBACK TO ` + s.name)
213
+ }
214
+
215
+ // TxnState determines the transaction state of a database.
216
+ //
217
+ // https://sqlite.org/c3ref/txn_state.html
218
+ func (c *Conn) TxnState(schema string) TxnState {
219
+ var ptr ptr_t
220
+ if schema != "" {
221
+ defer c.arena.Mark()()
222
+ ptr = c.arena.String(schema)
223
+ }
224
+ return TxnState(c.wrp.Xsqlite3_txn_state(int32(c.handle), int32(ptr)))
225
+ }
226
+
227
+ // CommitHook registers a callback function to be invoked
228
+ // whenever a transaction is committed.
229
+ // Return true to allow the commit operation to continue normally.
230
+ //
231
+ // https://sqlite.org/c3ref/commit_hook.html
232
+ func (c *Conn) CommitHook(cb func() (ok bool)) {
233
+ var enable int32
234
+ if cb != nil {
235
+ enable = 1
236
+ }
237
+ c.wrp.Xsqlite3_commit_hook_go(int32(c.handle), enable)
238
+ c.commit = cb
239
+ }
240
+
241
+ // RollbackHook registers a callback function to be invoked
242
+ // whenever a transaction is rolled back.
243
+ //
244
+ // https://sqlite.org/c3ref/commit_hook.html
245
+ func (c *Conn) RollbackHook(cb func()) {
246
+ var enable int32
247
+ if cb != nil {
248
+ enable = 1
249
+ }
250
+ c.wrp.Xsqlite3_rollback_hook_go(int32(c.handle), enable)
251
+ c.rollback = cb
252
+ }
253
+
254
+ // UpdateHook registers a callback function to be invoked
255
+ // whenever a row is updated, inserted or deleted in a rowid table.
256
+ //
257
+ // https://sqlite.org/c3ref/update_hook.html
258
+ func (c *Conn) UpdateHook(cb func(op AuthorizerActionCode, schema, table string, rowid int64)) {
259
+ var enable int32
260
+ if cb != nil {
261
+ enable = 1
262
+ }
263
+ c.wrp.Xsqlite3_update_hook_go(int32(c.handle), enable)
264
+ c.update = cb
265
+ }
266
+
267
+ // PreUpdateHook registers a callback function that is invoked prior
268
+ // to each INSERT, UPDATE, and DELETE operation on a database table.
269
+ //
270
+ // https://sqlite.org/c3ref/preupdate_blobwrite.html
271
+ func (c *Conn) PreUpdateHook(cb func(PreUpdateData)) {
272
+ var enable int32
273
+ if cb != nil {
274
+ enable = 1
275
+ }
276
+ c.wrp.Xsqlite3_preupdate_hook_go(int32(c.handle), enable)
277
+ c.preupdate = cb
278
+ }
279
+
280
+ func (e env) Xgo_commit_hook(pDB int32) (rollback int32) {
281
+ if c, ok := e.DB.(*Conn); ok && c.handle == ptr_t(pDB) && c.commit != nil {
282
+ if !c.commit() {
283
+ rollback = 1
284
+ }
285
+ }
286
+ return rollback
287
+ }
288
+
289
+ func (e env) Xgo_rollback_hook(pDB int32) {
290
+ if c, ok := e.DB.(*Conn); ok && c.handle == ptr_t(pDB) && c.rollback != nil {
291
+ c.rollback()
292
+ }
293
+ }
294
+
295
+ func (e env) Xgo_update_hook(pDB, op, zSchema, zTabName int32, rowid int64) {
296
+ if c, ok := e.DB.(*Conn); ok && c.handle == ptr_t(pDB) && c.update != nil {
297
+ schema := e.ReadString(ptr_t(zSchema), _MAX_NAME)
298
+ table := e.ReadString(ptr_t(zTabName), _MAX_NAME)
299
+ c.update(AuthorizerActionCode(op), schema, table, rowid)
300
+ }
301
+ }
302
+
303
+ func (e env) Xgo_preupdate_hook(_, pDB, op, zSchema, zTabName int32, oldRowID, newRowID int64) {
304
+ if c, ok := e.DB.(*Conn); ok && c.handle == ptr_t(pDB) && c.preupdate != nil {
305
+ c.preupdate(PreUpdateData{
306
+ c: c,
307
+ Op: AuthorizerActionCode(op),
308
+ Schema: e.ReadString(ptr_t(zSchema), _MAX_NAME),
309
+ Table: e.ReadString(ptr_t(zTabName), _MAX_NAME),
310
+ OldRowID: oldRowID,
311
+ NewRowID: newRowID,
312
+ })
313
+ }
314
+ }
315
+
316
+ // CacheFlush flushes caches to disk mid-transaction.
317
+ //
318
+ // https://sqlite.org/c3ref/db_cacheflush.html
319
+ func (c *Conn) CacheFlush() error {
320
+ rc := res_t(c.wrp.Xsqlite3_db_cacheflush(int32(c.handle)))
321
+ return c.error(rc)
322
+ }
323
+
324
+ // PreUpdateData provides information about a preupdate event.
325
+ //
326
+ // https://sqlite.org/c3ref/preupdate_blobwrite.html
327
+ type PreUpdateData struct {
328
+ c *Conn
329
+ Op AuthorizerActionCode
330
+ Schema string
331
+ Table string
332
+ OldRowID int64
333
+ NewRowID int64
334
+ }
335
+
336
+ // Conn returns the database connection associated with the preupdate event.
337
+ func (pud *PreUpdateData) Conn() *Conn {
338
+ return pud.c
339
+ }
340
+
341
+ // Count returns the number of columns in the row that is being inserted, updated, or deleted.
342
+ //
343
+ // https://sqlite.org/c3ref/preupdate_blobwrite.html
344
+ func (pud *PreUpdateData) Count() int {
345
+ return int(pud.c.wrp.Xsqlite3_preupdate_count(int32(pud.c.handle)))
346
+ }
347
+
348
+ // Depth returns the trigger depth of the insert, update, or delete operation.
349
+ //
350
+ // https://sqlite.org/c3ref/preupdate_blobwrite.html
351
+ func (pud *PreUpdateData) Depth() int {
352
+ return int(pud.c.wrp.Xsqlite3_preupdate_depth(int32(pud.c.handle)))
353
+ }
354
+
355
+ // BlobWrite returns the index of the column being written to using [Blob].
356
+ //
357
+ // https://sqlite.org/c3ref/preupdate_blobwrite.html
358
+ func (pud *PreUpdateData) BlobWrite() int {
359
+ return int(pud.c.wrp.Xsqlite3_preupdate_blobwrite(int32(pud.c.handle)))
360
+ }
361
+
362
+ // Old returns the value of a column of the table row before it is updated.
363
+ //
364
+ // https://sqlite.org/c3ref/preupdate_blobwrite.html
365
+ func (pud *PreUpdateData) Old(column int) (Value, error) {
366
+ return pud.c.columnValue(pud.c.wrp.Xsqlite3_preupdate_old, pud.c.handle, column)
367
+ }
368
+
369
+ // New returns the value of a column of the table row after it is updated.
370
+ //
371
+ // https://sqlite.org/c3ref/preupdate_blobwrite.html
372
+ func (pud *PreUpdateData) New(column int) (Value, error) {
373
+ return pud.c.columnValue(pud.c.wrp.Xsqlite3_preupdate_new, pud.c.handle, column)
374
+ }
@@ -0,0 +1,212 @@
1
+ package sqlite3
2
+
3
+ import (
4
+ "time"
5
+
6
+ "github.com/ncruces/go-sqlite3/internal/errutil"
7
+ )
8
+
9
+ // Value is any value that can be stored in a database table.
10
+ //
11
+ // https://sqlite.org/c3ref/value.html
12
+ type Value struct {
13
+ c *Conn
14
+ handle ptr_t
15
+ }
16
+
17
+ // Dup makes a copy of the SQL value and returns a pointer to that copy.
18
+ //
19
+ // https://sqlite.org/c3ref/value_dup.html
20
+ func (v Value) Dup() *Value {
21
+ ptr := ptr_t(v.c.wrp.Xsqlite3_value_dup(int32(v.handle)))
22
+ return &Value{
23
+ c: v.c,
24
+ handle: ptr,
25
+ }
26
+ }
27
+
28
+ // Close frees an SQL value previously obtained by [Value.Dup].
29
+ //
30
+ // https://sqlite.org/c3ref/value_dup.html
31
+ func (v *Value) Close() error {
32
+ v.c.wrp.Xsqlite3_value_free(int32(v.handle))
33
+ v.handle = 0
34
+ return nil
35
+ }
36
+
37
+ // Type returns the initial datatype of the value.
38
+ //
39
+ // https://sqlite.org/c3ref/value_blob.html
40
+ func (v Value) Type() Datatype {
41
+ return Datatype(v.c.wrp.Xsqlite3_value_type(int32(v.handle)))
42
+ }
43
+
44
+ // Subtype returns the subtype of the value.
45
+ //
46
+ // https://sqlite.org/c3ref/value_subtype.html
47
+ func (v Value) Subtype() uint {
48
+ return uint(uint32(v.c.wrp.Xsqlite3_value_subtype(int32(v.handle))))
49
+ }
50
+
51
+ // NumericType returns the numeric datatype of the value.
52
+ //
53
+ // https://sqlite.org/c3ref/value_blob.html
54
+ func (v Value) NumericType() Datatype {
55
+ return Datatype(v.c.wrp.Xsqlite3_value_numeric_type(int32(v.handle)))
56
+ }
57
+
58
+ // Bool returns the value as a bool.
59
+ // SQLite does not have a separate boolean storage class.
60
+ // Instead, boolean values are retrieved as numbers,
61
+ // with 0 converted to false and any other value to true.
62
+ //
63
+ // https://sqlite.org/c3ref/value_blob.html
64
+ func (v Value) Bool() bool {
65
+ return v.Float() != 0
66
+ }
67
+
68
+ // Int returns the value as an int.
69
+ //
70
+ // https://sqlite.org/c3ref/value_blob.html
71
+ func (v Value) Int() int {
72
+ return int(v.Int64())
73
+ }
74
+
75
+ // Int64 returns the value as an int64.
76
+ //
77
+ // https://sqlite.org/c3ref/value_blob.html
78
+ func (v Value) Int64() int64 {
79
+ return v.c.wrp.Xsqlite3_value_int64(int32(v.handle))
80
+ }
81
+
82
+ // Float returns the value as a float64.
83
+ //
84
+ // https://sqlite.org/c3ref/value_blob.html
85
+ func (v Value) Float() float64 {
86
+ return v.c.wrp.Xsqlite3_value_double(int32(v.handle))
87
+ }
88
+
89
+ // Time returns the value as a [time.Time].
90
+ //
91
+ // https://sqlite.org/c3ref/value_blob.html
92
+ func (v Value) Time(format TimeFormat) time.Time {
93
+ var a any
94
+ switch v.Type() {
95
+ case INTEGER:
96
+ a = v.Int64()
97
+ case FLOAT:
98
+ a = v.Float()
99
+ case TEXT, BLOB:
100
+ a = v.Text()
101
+ case NULL:
102
+ return time.Time{}
103
+ default:
104
+ panic(errutil.AssertErr())
105
+ }
106
+ t, _ := format.Decode(a)
107
+ return t
108
+ }
109
+
110
+ // Text returns the value as a string.
111
+ //
112
+ // https://sqlite.org/c3ref/value_blob.html
113
+ func (v Value) Text() string {
114
+ return string(v.RawText())
115
+ }
116
+
117
+ // Blob appends to buf and returns
118
+ // the value as a []byte.
119
+ //
120
+ // https://sqlite.org/c3ref/value_blob.html
121
+ func (v Value) Blob(buf []byte) []byte {
122
+ return append(buf, v.RawBlob()...)
123
+ }
124
+
125
+ // RawText returns the value as a []byte.
126
+ // The []byte is owned by SQLite and may be invalidated by
127
+ // subsequent calls to [Value] methods.
128
+ //
129
+ // https://sqlite.org/c3ref/value_blob.html
130
+ func (v Value) RawText() []byte {
131
+ ptr := ptr_t(v.c.wrp.Xsqlite3_value_text(int32(v.handle)))
132
+ return v.rawBytes(ptr, 1)
133
+ }
134
+
135
+ // RawBlob returns the value as a []byte.
136
+ // The []byte is owned by SQLite and may be invalidated by
137
+ // subsequent calls to [Value] methods.
138
+ //
139
+ // https://sqlite.org/c3ref/value_blob.html
140
+ func (v Value) RawBlob() []byte {
141
+ ptr := ptr_t(v.c.wrp.Xsqlite3_value_blob(int32(v.handle)))
142
+ return v.rawBytes(ptr, 0)
143
+ }
144
+
145
+ func (v Value) rawBytes(ptr ptr_t, nul int32) []byte {
146
+ if ptr == 0 {
147
+ return nil
148
+ }
149
+
150
+ n := v.c.wrp.Xsqlite3_value_bytes(int32(v.handle))
151
+ return v.c.wrp.Bytes(ptr, int64(n+nul))[:n]
152
+ }
153
+
154
+ // Pointer gets the pointer associated with this value,
155
+ // or nil if it has no associated pointer.
156
+ func (v Value) Pointer() any {
157
+ ptr := ptr_t(v.c.wrp.Xsqlite3_value_pointer_go(int32(v.handle)))
158
+ return v.c.wrp.GetHandle(ptr)
159
+ }
160
+
161
+ // NoChange returns true if and only if the value is unchanged
162
+ // in a virtual table update operatiom.
163
+ //
164
+ // https://sqlite.org/c3ref/value_blob.html
165
+ func (v Value) NoChange() bool {
166
+ b := v.c.wrp.Xsqlite3_value_nochange(int32(v.handle))
167
+ return b != 0
168
+ }
169
+
170
+ // FromBind returns true if value originated from a bound parameter.
171
+ //
172
+ // https://sqlite.org/c3ref/value_blob.html
173
+ func (v Value) FromBind() bool {
174
+ b := v.c.wrp.Xsqlite3_value_frombind(int32(v.handle))
175
+ return b != 0
176
+ }
177
+
178
+ // InFirst returns the first element
179
+ // on the right-hand side of an IN constraint.
180
+ //
181
+ // https://sqlite.org/c3ref/vtab_in_first.html
182
+ func (v Value) InFirst() (Value, error) {
183
+ return v.c.returnValue(v.c.wrp.Xsqlite3_vtab_in_first, v.handle)
184
+ }
185
+
186
+ // InNext returns the next element
187
+ // on the right-hand side of an IN constraint.
188
+ //
189
+ // https://sqlite.org/c3ref/vtab_in_first.html
190
+ func (v Value) InNext() (Value, error) {
191
+ return v.c.returnValue(v.c.wrp.Xsqlite3_vtab_in_next, v.handle)
192
+ }
193
+
194
+ func (c *Conn) returnValue(fn func(_, _ int32) int32, handle ptr_t) (Value, error) {
195
+ defer c.wrp.StackMark()()
196
+ valPtr := c.wrp.StackAlloc(ptrlen)
197
+ rc := res_t(fn(int32(handle), int32(valPtr)))
198
+ if err := c.error(rc); err != nil {
199
+ return Value{}, err
200
+ }
201
+ return Value{c: c, handle: ptr_t(c.wrp.Read32(valPtr))}, nil
202
+ }
203
+
204
+ func (c *Conn) columnValue(fn func(_, _, _ int32) int32, handle ptr_t, column int) (Value, error) {
205
+ defer c.wrp.StackMark()()
206
+ valPtr := c.wrp.StackAlloc(ptrlen)
207
+ rc := res_t(fn(int32(handle), int32(column), int32(valPtr)))
208
+ if err := c.error(rc); err != nil {
209
+ return Value{}, err
210
+ }
211
+ return Value{c: c, handle: ptr_t(c.wrp.Read32(valPtr))}, nil
212
+ }