typenative 0.1.3 → 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 (500) 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 +4 -4
  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 +294 -240
  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/transpiler.js +2650 -575
  54. package/bin/version.js +2 -0
  55. package/conformance.md +707 -241
  56. package/govendor/github.com/ncruces/go-sqlite3/LICENSE +21 -0
  57. package/govendor/github.com/ncruces/go-sqlite3/README.md +121 -0
  58. package/govendor/github.com/ncruces/go-sqlite3/backup.go +132 -0
  59. package/govendor/github.com/ncruces/go-sqlite3/blob.go +266 -0
  60. package/govendor/github.com/ncruces/go-sqlite3/config.go +397 -0
  61. package/govendor/github.com/ncruces/go-sqlite3/conn.go +540 -0
  62. package/govendor/github.com/ncruces/go-sqlite3/conn_127.go +93 -0
  63. package/govendor/github.com/ncruces/go-sqlite3/const.go +436 -0
  64. package/govendor/github.com/ncruces/go-sqlite3/context.go +222 -0
  65. package/govendor/github.com/ncruces/go-sqlite3/error.go +182 -0
  66. package/govendor/github.com/ncruces/go-sqlite3/ext.go +153 -0
  67. package/govendor/github.com/ncruces/go-sqlite3/func.go +309 -0
  68. package/govendor/github.com/ncruces/go-sqlite3/go.mod +3 -0
  69. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go +29 -0
  70. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go +13 -0
  71. package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go +57 -0
  72. package/govendor/github.com/ncruces/go-sqlite3/internal/errutil/error.go +41 -0
  73. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/alloc.go +128 -0
  74. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/const.go +122 -0
  75. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/error.go +77 -0
  76. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem.go +116 -0
  77. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_other.go +34 -0
  78. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_unix.go +87 -0
  79. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_windows.go +149 -0
  80. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_unix.go +80 -0
  81. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_windows.go +129 -0
  82. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/sys_windows.go +60 -0
  83. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap.go +82 -0
  84. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_sys.go +113 -0
  85. package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_vfs.go +181 -0
  86. package/govendor/github.com/ncruces/go-sqlite3/internal/testenv/env.go +55 -0
  87. package/govendor/github.com/ncruces/go-sqlite3/internal/util/json.go +54 -0
  88. package/govendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go +54 -0
  89. package/govendor/github.com/ncruces/go-sqlite3/internal/util/math.go +29 -0
  90. package/govendor/github.com/ncruces/go-sqlite3/internal/util/page.go +5 -0
  91. package/govendor/github.com/ncruces/go-sqlite3/internal/util/parse.go +142 -0
  92. package/govendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go +3 -0
  93. package/govendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go +10 -0
  94. package/govendor/github.com/ncruces/go-sqlite3/json.go +100 -0
  95. package/govendor/github.com/ncruces/go-sqlite3/json_v2.go +116 -0
  96. package/govendor/github.com/ncruces/go-sqlite3/pointer.go +13 -0
  97. package/govendor/github.com/ncruces/go-sqlite3/quote.go +140 -0
  98. package/govendor/github.com/ncruces/go-sqlite3/stmt.go +692 -0
  99. package/govendor/github.com/ncruces/go-sqlite3/time.go +360 -0
  100. package/govendor/github.com/ncruces/go-sqlite3/txn.go +374 -0
  101. package/govendor/github.com/ncruces/go-sqlite3/value.go +212 -0
  102. package/govendor/github.com/ncruces/go-sqlite3/vfs/README.md +133 -0
  103. package/govendor/github.com/ncruces/go-sqlite3/vfs/api.go +239 -0
  104. package/govendor/github.com/ncruces/go-sqlite3/vfs/cksm.go +143 -0
  105. package/govendor/github.com/ncruces/go-sqlite3/vfs/const.go +256 -0
  106. package/govendor/github.com/ncruces/go-sqlite3/vfs/file.go +260 -0
  107. package/govendor/github.com/ncruces/go-sqlite3/vfs/filename.go +187 -0
  108. package/govendor/github.com/ncruces/go-sqlite3/vfs/lock.go +128 -0
  109. package/govendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go +23 -0
  110. package/govendor/github.com/ncruces/go-sqlite3/vfs/map.go +63 -0
  111. package/govendor/github.com/ncruces/go-sqlite3/vfs/map_other.go +13 -0
  112. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +110 -0
  113. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +131 -0
  114. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go +140 -0
  115. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go +56 -0
  116. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +117 -0
  117. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +59 -0
  118. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std.go +50 -0
  119. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go +19 -0
  120. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go +9 -0
  121. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go +13 -0
  122. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go +9 -0
  123. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_temp.go +16 -0
  124. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +108 -0
  125. package/govendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +180 -0
  126. package/govendor/github.com/ncruces/go-sqlite3/vfs/registry.go +48 -0
  127. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm.go +26 -0
  128. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go +258 -0
  129. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go +90 -0
  130. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go +168 -0
  131. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go +52 -0
  132. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go +185 -0
  133. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go +21 -0
  134. package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go +124 -0
  135. package/govendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +455 -0
  136. package/govendor/github.com/ncruces/go-sqlite3/vtab.go +677 -0
  137. package/govendor/github.com/ncruces/go-sqlite3/wrap.go +48 -0
  138. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/LICENSE +18 -0
  139. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/README.md +11 -0
  140. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/go.mod +3 -0
  141. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/libc.go +215 -0
  142. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.dat +0 -0
  143. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.go +157903 -0
  144. package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/tools.sh +38 -0
  145. package/govendor/github.com/ncruces/julianday/LICENSE +21 -0
  146. package/govendor/github.com/ncruces/julianday/README.md +9 -0
  147. package/govendor/github.com/ncruces/julianday/go.mod +3 -0
  148. package/govendor/github.com/ncruces/julianday/julianday.go +124 -0
  149. package/govendor/golang.org/x/sys/LICENSE +27 -0
  150. package/govendor/golang.org/x/sys/PATENTS +22 -0
  151. package/govendor/golang.org/x/sys/go.mod +3 -0
  152. package/govendor/golang.org/x/sys/unix/README.md +184 -0
  153. package/govendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
  154. package/govendor/golang.org/x/sys/unix/aliases.go +13 -0
  155. package/govendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
  156. package/govendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
  157. package/govendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
  158. package/govendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
  159. package/govendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
  160. package/govendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
  161. package/govendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
  162. package/govendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
  163. package/govendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
  164. package/govendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
  165. package/govendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
  166. package/govendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
  167. package/govendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
  168. package/govendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
  169. package/govendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
  170. package/govendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
  171. package/govendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
  172. package/govendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
  173. package/govendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
  174. package/govendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
  175. package/govendor/golang.org/x/sys/unix/auxv.go +36 -0
  176. package/govendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
  177. package/govendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
  178. package/govendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
  179. package/govendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
  180. package/govendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
  181. package/govendor/golang.org/x/sys/unix/constants.go +13 -0
  182. package/govendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
  183. package/govendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
  184. package/govendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
  185. package/govendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
  186. package/govendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
  187. package/govendor/golang.org/x/sys/unix/dev_linux.go +42 -0
  188. package/govendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
  189. package/govendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
  190. package/govendor/golang.org/x/sys/unix/dev_zos.go +28 -0
  191. package/govendor/golang.org/x/sys/unix/dirent.go +102 -0
  192. package/govendor/golang.org/x/sys/unix/endian_big.go +9 -0
  193. package/govendor/golang.org/x/sys/unix/endian_little.go +9 -0
  194. package/govendor/golang.org/x/sys/unix/env_unix.go +31 -0
  195. package/govendor/golang.org/x/sys/unix/fcntl.go +36 -0
  196. package/govendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
  197. package/govendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
  198. package/govendor/golang.org/x/sys/unix/fdset.go +27 -0
  199. package/govendor/golang.org/x/sys/unix/gccgo.go +59 -0
  200. package/govendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
  201. package/govendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
  202. package/govendor/golang.org/x/sys/unix/ifreq_linux.go +145 -0
  203. package/govendor/golang.org/x/sys/unix/ioctl_linux.go +341 -0
  204. package/govendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
  205. package/govendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
  206. package/govendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
  207. package/govendor/golang.org/x/sys/unix/mkall.sh +250 -0
  208. package/govendor/golang.org/x/sys/unix/mkerrors.sh +807 -0
  209. package/govendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
  210. package/govendor/golang.org/x/sys/unix/mremap.go +57 -0
  211. package/govendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
  212. package/govendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
  213. package/govendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
  214. package/govendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
  215. package/govendor/golang.org/x/sys/unix/race.go +30 -0
  216. package/govendor/golang.org/x/sys/unix/race0.go +25 -0
  217. package/govendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
  218. package/govendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
  219. package/govendor/golang.org/x/sys/unix/readv_unix.go +103 -0
  220. package/govendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
  221. package/govendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
  222. package/govendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
  223. package/govendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
  224. package/govendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
  225. package/govendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
  226. package/govendor/golang.org/x/sys/unix/syscall.go +86 -0
  227. package/govendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
  228. package/govendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
  229. package/govendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
  230. package/govendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
  231. package/govendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
  232. package/govendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
  233. package/govendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
  234. package/govendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
  235. package/govendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
  236. package/govendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
  237. package/govendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
  238. package/govendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
  239. package/govendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
  240. package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
  241. package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
  242. package/govendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
  243. package/govendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
  244. package/govendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
  245. package/govendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
  246. package/govendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
  247. package/govendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
  248. package/govendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
  249. package/govendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
  250. package/govendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
  251. package/govendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
  252. package/govendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
  253. package/govendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
  254. package/govendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
  255. package/govendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
  256. package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
  257. package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
  258. package/govendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
  259. package/govendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
  260. package/govendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
  261. package/govendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
  262. package/govendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
  263. package/govendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
  264. package/govendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
  265. package/govendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
  266. package/govendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
  267. package/govendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
  268. package/govendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
  269. package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
  270. package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
  271. package/govendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
  272. package/govendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
  273. package/govendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
  274. package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
  275. package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
  276. package/govendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
  277. package/govendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
  278. package/govendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
  279. package/govendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
  280. package/govendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
  281. package/govendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
  282. package/govendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
  283. package/govendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
  284. package/govendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
  285. package/govendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
  286. package/govendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
  287. package/govendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
  288. package/govendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
  289. package/govendor/golang.org/x/sys/unix/timestruct.go +76 -0
  290. package/govendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
  291. package/govendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
  292. package/govendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
  293. package/govendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
  294. package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
  295. package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
  296. package/govendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
  297. package/govendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
  298. package/govendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
  299. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
  300. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
  301. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
  302. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
  303. package/govendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
  304. package/govendor/golang.org/x/sys/unix/zerrors_linux.go +4209 -0
  305. package/govendor/golang.org/x/sys/unix/zerrors_linux_386.go +882 -0
  306. package/govendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +882 -0
  307. package/govendor/golang.org/x/sys/unix/zerrors_linux_arm.go +887 -0
  308. package/govendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +884 -0
  309. package/govendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +874 -0
  310. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips.go +888 -0
  311. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +888 -0
  312. package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +888 -0
  313. package/govendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +888 -0
  314. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +940 -0
  315. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +944 -0
  316. package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +944 -0
  317. package/govendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +884 -0
  318. package/govendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +943 -0
  319. package/govendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +992 -0
  320. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
  321. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
  322. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
  323. package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
  324. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
  325. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
  326. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
  327. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
  328. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
  329. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
  330. package/govendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
  331. package/govendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
  332. package/govendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
  333. package/govendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
  334. package/govendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
  335. package/govendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
  336. package/govendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
  337. package/govendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
  338. package/govendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
  339. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
  340. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
  341. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
  342. package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
  343. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
  344. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
  345. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
  346. package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
  347. package/govendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
  348. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
  349. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
  350. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
  351. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
  352. package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
  353. package/govendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
  354. package/govendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
  355. package/govendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
  356. package/govendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
  357. package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
  358. package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
  359. package/govendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
  360. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
  361. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
  362. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
  363. package/govendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
  364. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
  365. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
  366. package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
  367. package/govendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
  368. package/govendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
  369. package/govendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
  370. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
  371. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
  372. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
  373. package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
  374. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
  375. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
  376. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
  377. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
  378. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
  379. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
  380. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
  381. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
  382. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
  383. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
  384. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
  385. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
  386. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
  387. package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
  388. package/govendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
  389. package/govendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
  390. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
  391. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
  392. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
  393. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
  394. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
  395. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
  396. package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
  397. package/govendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
  398. package/govendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
  399. package/govendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
  400. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
  401. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
  402. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
  403. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
  404. package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
  405. package/govendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
  406. package/govendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
  407. package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
  408. package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
  409. package/govendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
  410. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
  411. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
  412. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
  413. package/govendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
  414. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
  415. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
  416. package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
  417. package/govendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
  418. package/govendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
  419. package/govendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
  420. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
  421. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
  422. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
  423. package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
  424. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
  425. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
  426. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
  427. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
  428. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
  429. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
  430. package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
  431. package/govendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
  432. package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
  433. package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
  434. package/govendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
  435. package/govendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
  436. package/govendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
  437. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
  438. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
  439. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
  440. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
  441. package/govendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
  442. package/govendor/golang.org/x/sys/unix/ztypes_linux.go +6547 -0
  443. package/govendor/golang.org/x/sys/unix/ztypes_linux_386.go +747 -0
  444. package/govendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +761 -0
  445. package/govendor/golang.org/x/sys/unix/ztypes_linux_arm.go +741 -0
  446. package/govendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +740 -0
  447. package/govendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +741 -0
  448. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips.go +746 -0
  449. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +743 -0
  450. package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +743 -0
  451. package/govendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +746 -0
  452. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +754 -0
  453. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +749 -0
  454. package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +749 -0
  455. package/govendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +828 -0
  456. package/govendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +763 -0
  457. package/govendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +744 -0
  458. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
  459. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
  460. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
  461. package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
  462. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
  463. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
  464. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
  465. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
  466. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
  467. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
  468. package/govendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
  469. package/govendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
  470. package/govendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
  471. package/govendor/golang.org/x/sys/windows/aliases.go +13 -0
  472. package/govendor/golang.org/x/sys/windows/dll_windows.go +380 -0
  473. package/govendor/golang.org/x/sys/windows/env_windows.go +57 -0
  474. package/govendor/golang.org/x/sys/windows/eventlog.go +20 -0
  475. package/govendor/golang.org/x/sys/windows/exec_windows.go +248 -0
  476. package/govendor/golang.org/x/sys/windows/memory_windows.go +48 -0
  477. package/govendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
  478. package/govendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
  479. package/govendor/golang.org/x/sys/windows/mksyscall.go +9 -0
  480. package/govendor/golang.org/x/sys/windows/race.go +30 -0
  481. package/govendor/golang.org/x/sys/windows/race0.go +25 -0
  482. package/govendor/golang.org/x/sys/windows/security_windows.go +1537 -0
  483. package/govendor/golang.org/x/sys/windows/service.go +257 -0
  484. package/govendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
  485. package/govendor/golang.org/x/sys/windows/str.go +22 -0
  486. package/govendor/golang.org/x/sys/windows/syscall.go +104 -0
  487. package/govendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
  488. package/govendor/golang.org/x/sys/windows/types_windows.go +4058 -0
  489. package/govendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
  490. package/govendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
  491. package/govendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
  492. package/govendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
  493. package/govendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
  494. package/govendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
  495. package/govendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
  496. package/govendor/manifest.txt +7 -0
  497. package/package.json +6 -1
  498. package/types/typenative-go.d.ts +15159 -5
  499. package/types/typenative-npm.d.ts +2637 -34
  500. package/types/typenative.d.ts +651 -8
@@ -0,0 +1,540 @@
1
+ package sqlite3
2
+
3
+ import (
4
+ "context"
5
+ "fmt"
6
+ "iter"
7
+ "math"
8
+ "math/rand"
9
+ "net/url"
10
+ "runtime"
11
+ "strings"
12
+ "time"
13
+
14
+ "github.com/ncruces/go-sqlite3/internal/errutil"
15
+ "github.com/ncruces/go-sqlite3/internal/sqlite3_wrap"
16
+ "github.com/ncruces/go-sqlite3/vfs"
17
+ )
18
+
19
+ // Conn is a database connection handle.
20
+ // A Conn is not safe for concurrent use by multiple goroutines.
21
+ //
22
+ // https://sqlite.org/c3ref/sqlite3.html
23
+ type Conn struct {
24
+ wrp *sqlite3_wrap.Wrapper
25
+
26
+ interrupt context.Context
27
+ stmts []*Stmt
28
+ busy func(context.Context, int) bool
29
+ log func(xErrorCode, string)
30
+ collation func(*Conn, string)
31
+ wal func(*Conn, string, int) error
32
+ trace func(TraceEvent, any, any) error
33
+ authorizer func(AuthorizerActionCode, string, string, string, string) AuthorizerReturnCode
34
+ update func(AuthorizerActionCode, string, string, int64)
35
+ commit func() bool
36
+ rollback func()
37
+ preupdate func(PreUpdateData)
38
+
39
+ busy1st time.Time
40
+ busylst time.Time
41
+ arena sqlite3_wrap.Arena
42
+ handle ptr_t
43
+ gosched uint8
44
+ }
45
+
46
+ // Open calls [OpenFlags] with [OPEN_READWRITE], [OPEN_CREATE] and [OPEN_URI].
47
+ func Open(filename string) (*Conn, error) {
48
+ return newConn(context.Background(), filename, OPEN_READWRITE|OPEN_CREATE|OPEN_URI)
49
+ }
50
+
51
+ // OpenContext is like [Open] but includes a context,
52
+ // which is used to interrupt the process of opening the connection.
53
+ func OpenContext(ctx context.Context, filename string) (*Conn, error) {
54
+ return newConn(ctx, filename, OPEN_READWRITE|OPEN_CREATE|OPEN_URI)
55
+ }
56
+
57
+ // OpenFlags opens an SQLite database file as specified by the filename argument.
58
+ //
59
+ // If none of the required flags are used, a combination of [OPEN_READWRITE] and [OPEN_CREATE] is used.
60
+ // If a URI filename is used, PRAGMA statements to execute can be specified using "_pragma":
61
+ //
62
+ // sqlite3.Open("file:demo.db?_pragma=busy_timeout(10000)")
63
+ //
64
+ // https://sqlite.org/c3ref/open.html
65
+ func OpenFlags(filename string, flags OpenFlag) (*Conn, error) {
66
+ if flags&(OPEN_READONLY|OPEN_READWRITE|OPEN_CREATE) == 0 {
67
+ flags |= OPEN_READWRITE | OPEN_CREATE
68
+ }
69
+ return newConn(context.Background(), filename, flags)
70
+ }
71
+
72
+ func newConn(ctx context.Context, filename string, flags OpenFlag) (ret *Conn, _ error) {
73
+ err := ctx.Err()
74
+ if err != nil {
75
+ return nil, err
76
+ }
77
+
78
+ c := &Conn{interrupt: ctx}
79
+ c.wrp, err = createWrapper(ctx)
80
+ if err != nil {
81
+ return nil, err
82
+ }
83
+ defer func() {
84
+ if ret == nil {
85
+ c.Close()
86
+ } else {
87
+ c.interrupt = context.Background()
88
+ }
89
+ }()
90
+
91
+ c.wrp.DB = c
92
+ if logger := defaultLogger.Load(); logger != nil {
93
+ c.ConfigLog(*logger)
94
+ }
95
+ c.arena = c.wrp.NewArena()
96
+ c.handle, err = c.openDB(filename, flags)
97
+ if err == nil {
98
+ err = initExtensions(c)
99
+ }
100
+ if err != nil {
101
+ return nil, err
102
+ }
103
+ return c, nil
104
+ }
105
+
106
+ func (c *Conn) openDB(filename string, flags OpenFlag) (ptr_t, error) {
107
+ defer c.arena.Mark()()
108
+ connPtr := c.arena.New(ptrlen)
109
+ namePtr := c.arena.String(filename)
110
+
111
+ flags |= OPEN_EXRESCODE
112
+ rc := res_t(c.wrp.Xsqlite3_open_v2(int32(namePtr), int32(connPtr), int32(flags), 0))
113
+
114
+ handle := ptr_t(c.wrp.Read32(connPtr))
115
+ if err := c.errorFor(handle, rc); err != nil {
116
+ c.closeDB(handle)
117
+ return 0, err
118
+ }
119
+
120
+ c.wrp.Xsqlite3_progress_handler_go(int32(handle), 1000)
121
+ if flags|OPEN_URI != 0 && strings.HasPrefix(filename, "file:") {
122
+ var pragmas strings.Builder
123
+ if u, err := url.Parse(filename); err == nil {
124
+ query := u.Query()
125
+ for _, p := range query["_pragma"] {
126
+ pragmas.WriteString(`PRAGMA `)
127
+ pragmas.WriteString(p)
128
+ pragmas.WriteString(`;`)
129
+ }
130
+ }
131
+ if pragmas.Len() != 0 {
132
+ pragmaPtr := c.arena.String(pragmas.String())
133
+ rc := res_t(c.wrp.Xsqlite3_exec(int32(handle), int32(pragmaPtr), 0, 0, 0))
134
+ if err := c.errorFor(handle, rc, pragmas.String()); err != nil {
135
+ err = fmt.Errorf("sqlite3: invalid _pragma: %w", err)
136
+ c.closeDB(handle)
137
+ return 0, err
138
+ }
139
+ }
140
+ }
141
+ return handle, nil
142
+ }
143
+
144
+ func (c *Conn) closeDB(handle ptr_t) {
145
+ rc := res_t(c.wrp.Xsqlite3_close_v2(int32(handle)))
146
+ if err := c.errorFor(handle, rc); err != nil {
147
+ panic(err) // MISUSE
148
+ }
149
+ }
150
+
151
+ // Close closes the database connection.
152
+ //
153
+ // If the database connection is associated with unfinalized prepared statements,
154
+ // open blob handles, and/or unfinished backup objects,
155
+ // Close will leave the database connection open and return [BUSY].
156
+ //
157
+ // It is safe to close a nil, zero or closed Conn.
158
+ //
159
+ // https://sqlite.org/c3ref/close.html
160
+ func (c *Conn) Close() error {
161
+ if c == nil || c.handle == 0 {
162
+ return nil
163
+ }
164
+
165
+ rc := res_t(c.wrp.Xsqlite3_close(int32(c.handle)))
166
+ if err := c.error(rc); err != nil {
167
+ return err
168
+ }
169
+
170
+ c.handle = 0
171
+ return c.wrp.Close()
172
+ }
173
+
174
+ // Exec is a convenience function that allows an application to run
175
+ // multiple statements of SQL without having to use a lot of code.
176
+ //
177
+ // https://sqlite.org/c3ref/exec.html
178
+ func (c *Conn) Exec(sql string) error {
179
+ if c.interrupt.Err() != nil {
180
+ return INTERRUPT
181
+ }
182
+ return c.exec(sql)
183
+ }
184
+
185
+ func (c *Conn) exec(sql string) error {
186
+ defer c.arena.Mark()()
187
+ textPtr := c.arena.String(sql)
188
+ rc := res_t(c.wrp.Xsqlite3_exec(int32(c.handle), int32(textPtr), 0, 0, 0))
189
+ return c.error(rc, sql)
190
+ }
191
+
192
+ // Prepare calls [Conn.PrepareFlags] with no flags.
193
+ func (c *Conn) Prepare(sql string) (stmt *Stmt, tail string, err error) {
194
+ return c.PrepareFlags(sql, 0)
195
+ }
196
+
197
+ // PrepareFlags compiles the first SQL statement in sql;
198
+ // tail is left pointing to what remains uncompiled.
199
+ // If the input text contains no SQL (if the input is an empty string or a comment),
200
+ // both stmt and err will be nil.
201
+ //
202
+ // https://sqlite.org/c3ref/prepare.html
203
+ func (c *Conn) PrepareFlags(sql string, flags PrepareFlag) (stmt *Stmt, tail string, err error) {
204
+ if len(sql) > _MAX_SQL_LENGTH {
205
+ return nil, "", TOOBIG
206
+ }
207
+ if c.interrupt.Err() != nil {
208
+ return nil, "", INTERRUPT
209
+ }
210
+
211
+ defer c.arena.Mark()()
212
+ stmtPtr := c.arena.New(ptrlen)
213
+ tailPtr := c.arena.New(ptrlen)
214
+ textPtr := c.arena.String(sql)
215
+
216
+ rc := res_t(c.wrp.Xsqlite3_prepare_v3(int32(c.handle),
217
+ int32(textPtr), int32(len(sql)+1), int32(flags),
218
+ int32(stmtPtr), int32(tailPtr)))
219
+
220
+ stmt = &Stmt{c: c, sql: sql}
221
+ stmt.handle = ptr_t(c.wrp.Read32(stmtPtr))
222
+ if sql := sql[ptr_t(c.wrp.Read32(tailPtr))-textPtr:]; sql != "" {
223
+ tail = sql
224
+ }
225
+
226
+ if err := c.error(rc, sql); err != nil {
227
+ return nil, "", err
228
+ }
229
+ if stmt.handle == 0 {
230
+ return nil, "", nil
231
+ }
232
+ c.stmts = append(c.stmts, stmt)
233
+ return stmt, tail, nil
234
+ }
235
+
236
+ // DBName returns the schema name for n-th database on the database connection.
237
+ //
238
+ // https://sqlite.org/c3ref/db_name.html
239
+ func (c *Conn) DBName(n int) string {
240
+ ptr := ptr_t(c.wrp.Xsqlite3_db_name(int32(c.handle), int32(n)))
241
+ if ptr == 0 {
242
+ return ""
243
+ }
244
+ return c.wrp.ReadString(ptr, _MAX_NAME)
245
+ }
246
+
247
+ // Filename returns the filename for a database.
248
+ //
249
+ // https://sqlite.org/c3ref/db_filename.html
250
+ func (c *Conn) Filename(schema string) *vfs.Filename {
251
+ var ptr ptr_t
252
+ if schema != "" {
253
+ defer c.arena.Mark()()
254
+ ptr = c.arena.String(schema)
255
+ }
256
+ ptr = ptr_t(c.wrp.Xsqlite3_db_filename(int32(c.handle), int32(ptr)))
257
+ return vfs.GetFilename(c.wrp, ptr, vfs.OPEN_MAIN_DB)
258
+ }
259
+
260
+ // ReadOnly determines if a database is read-only.
261
+ //
262
+ // https://sqlite.org/c3ref/db_readonly.html
263
+ func (c *Conn) ReadOnly(schema string) (ro, ok bool) {
264
+ var ptr ptr_t
265
+ if schema != "" {
266
+ defer c.arena.Mark()()
267
+ ptr = c.arena.String(schema)
268
+ }
269
+ b := c.wrp.Xsqlite3_db_readonly(int32(c.handle), int32(ptr))
270
+ return b > 0, b < 0
271
+ }
272
+
273
+ // GetAutocommit tests the connection for auto-commit mode.
274
+ //
275
+ // https://sqlite.org/c3ref/get_autocommit.html
276
+ func (c *Conn) GetAutocommit() bool {
277
+ b := c.wrp.Xsqlite3_get_autocommit(int32(c.handle))
278
+ return b != 0
279
+ }
280
+
281
+ // LastInsertRowID returns the rowid of the most recent successful INSERT
282
+ // on the database connection.
283
+ //
284
+ // https://sqlite.org/c3ref/last_insert_rowid.html
285
+ func (c *Conn) LastInsertRowID() int64 {
286
+ return c.wrp.Xsqlite3_last_insert_rowid(int32(c.handle))
287
+ }
288
+
289
+ // SetLastInsertRowID allows the application to set the value returned by
290
+ // [Conn.LastInsertRowID].
291
+ //
292
+ // https://sqlite.org/c3ref/set_last_insert_rowid.html
293
+ func (c *Conn) SetLastInsertRowID(id int64) {
294
+ c.wrp.Xsqlite3_set_last_insert_rowid(int32(c.handle), id)
295
+ }
296
+
297
+ // Changes returns the number of rows modified, inserted or deleted
298
+ // by the most recently completed INSERT, UPDATE or DELETE statement
299
+ // on the database connection.
300
+ //
301
+ // https://sqlite.org/c3ref/changes.html
302
+ func (c *Conn) Changes() int64 {
303
+ return c.wrp.Xsqlite3_changes64(int32(c.handle))
304
+ }
305
+
306
+ // TotalChanges returns the number of rows modified, inserted or deleted
307
+ // by all INSERT, UPDATE or DELETE statements completed
308
+ // since the database connection was opened.
309
+ //
310
+ // https://sqlite.org/c3ref/total_changes.html
311
+ func (c *Conn) TotalChanges() int64 {
312
+ return c.wrp.Xsqlite3_total_changes64(int32(c.handle))
313
+ }
314
+
315
+ // ReleaseMemory frees memory used by a database connection.
316
+ //
317
+ // https://sqlite.org/c3ref/db_release_memory.html
318
+ func (c *Conn) ReleaseMemory() error {
319
+ rc := res_t(c.wrp.Xsqlite3_db_release_memory(int32(c.handle)))
320
+ return c.error(rc)
321
+ }
322
+
323
+ // GetInterrupt gets the context set with [Conn.SetInterrupt].
324
+ func (c *Conn) GetInterrupt() context.Context {
325
+ return c.interrupt
326
+ }
327
+
328
+ // SetInterrupt interrupts a long-running query when a context is done.
329
+ //
330
+ // Subsequent uses of the connection will return [INTERRUPT]
331
+ // until the context is reset by another call to SetInterrupt.
332
+ //
333
+ // To associate a timeout with a connection:
334
+ //
335
+ // ctx, cancel := context.WithTimeout(context.TODO(), 100*time.Millisecond)
336
+ // conn.SetInterrupt(ctx)
337
+ // defer cancel()
338
+ //
339
+ // SetInterrupt returns the old context assigned to the connection.
340
+ //
341
+ // https://sqlite.org/c3ref/interrupt.html
342
+ func (c *Conn) SetInterrupt(ctx context.Context) (old context.Context) {
343
+ if ctx == nil {
344
+ panic("nil Context")
345
+ }
346
+ old = c.interrupt
347
+ c.interrupt = ctx
348
+ return old
349
+ }
350
+
351
+ func (e env) Xgo_progress_handler(_ int32) (interrupt int32) {
352
+ if c, ok := e.DB.(*Conn); ok {
353
+ if c.gosched++; c.gosched%16 == 0 {
354
+ runtime.Gosched()
355
+ }
356
+ if c.interrupt.Err() != nil {
357
+ interrupt = 1
358
+ }
359
+ }
360
+ return interrupt
361
+ }
362
+
363
+ // BusyTimeout sets a busy timeout.
364
+ //
365
+ // https://sqlite.org/c3ref/busy_timeout.html
366
+ func (c *Conn) BusyTimeout(timeout time.Duration) error {
367
+ ms := min((timeout+time.Millisecond-1)/time.Millisecond, math.MaxInt32)
368
+ rc := res_t(c.wrp.Xsqlite3_busy_timeout(int32(c.handle), int32(ms)))
369
+ return c.error(rc)
370
+ }
371
+
372
+ func (e env) Xgo_busy_timeout(count, tmout int32) (retry int32) {
373
+ // https://fractaledmind.github.io/2024/04/15/sqlite-on-rails-the-how-and-why-of-optimal-performance/
374
+ if c, ok := e.DB.(*Conn); ok && c.interrupt.Err() == nil {
375
+ switch {
376
+ case count == 0:
377
+ c.busy1st = time.Now()
378
+ case time.Since(c.busy1st) >= time.Duration(tmout)*time.Millisecond:
379
+ return 0
380
+ }
381
+ if time.Since(c.busylst) < time.Millisecond {
382
+ const sleepIncrement = 2*1024*1024 - 1 // power of two, ~2ms
383
+ time.Sleep(time.Duration(rand.Int63() & sleepIncrement))
384
+ }
385
+ c.busylst = time.Now()
386
+ return 1
387
+ }
388
+ return 0
389
+ }
390
+
391
+ // BusyHandler registers a callback to handle [BUSY] errors.
392
+ //
393
+ // https://sqlite.org/c3ref/busy_handler.html
394
+ func (c *Conn) BusyHandler(cb func(ctx context.Context, count int) (retry bool)) error {
395
+ var enable int32
396
+ if cb != nil {
397
+ enable = 1
398
+ }
399
+ rc := res_t(c.wrp.Xsqlite3_busy_handler_go(int32(c.handle), enable))
400
+ if err := c.error(rc); err != nil {
401
+ return err
402
+ }
403
+ c.busy = cb
404
+ return nil
405
+ }
406
+
407
+ func (e env) Xgo_busy_handler(pDB, count int32) (retry int32) {
408
+ if c, ok := e.DB.(*Conn); ok && c.handle == ptr_t(pDB) && c.busy != nil {
409
+ if interrupt := c.interrupt; interrupt.Err() == nil &&
410
+ c.busy(interrupt, int(count)) {
411
+ retry = 1
412
+ }
413
+ }
414
+ return retry
415
+ }
416
+
417
+ // Status retrieves runtime status information about a database connection.
418
+ //
419
+ // https://sqlite.org/c3ref/db_status.html
420
+ func (c *Conn) Status(op DBStatus, reset bool) (current, highwater int64, err error) {
421
+ defer c.wrp.StackMark()()
422
+ hiPtr := c.wrp.StackAlloc(8)
423
+ curPtr := c.wrp.StackAlloc(8)
424
+
425
+ var i int32
426
+ if reset {
427
+ i = 1
428
+ }
429
+
430
+ rc := res_t(c.wrp.Xsqlite3_db_status64(int32(c.handle),
431
+ int32(op), int32(curPtr), int32(hiPtr), i))
432
+ if err = c.error(rc); err == nil {
433
+ current = int64(c.wrp.Read64(curPtr))
434
+ highwater = int64(c.wrp.Read64(hiPtr))
435
+ }
436
+ return
437
+ }
438
+
439
+ // TableColumnMetadata extracts metadata about a column of a table.
440
+ //
441
+ // https://sqlite.org/c3ref/table_column_metadata.html
442
+ func (c *Conn) TableColumnMetadata(schema, table, column string) (declType, collSeq string, notNull, primaryKey, autoInc bool, err error) {
443
+ defer c.arena.Mark()()
444
+ var (
445
+ declTypePtr ptr_t
446
+ collSeqPtr ptr_t
447
+ notNullPtr ptr_t
448
+ primaryKeyPtr ptr_t
449
+ autoIncPtr ptr_t
450
+ columnPtr ptr_t
451
+ schemaPtr ptr_t
452
+ )
453
+ if column != "" {
454
+ declTypePtr = c.arena.New(ptrlen)
455
+ collSeqPtr = c.arena.New(ptrlen)
456
+ notNullPtr = c.arena.New(ptrlen)
457
+ primaryKeyPtr = c.arena.New(ptrlen)
458
+ autoIncPtr = c.arena.New(ptrlen)
459
+ columnPtr = c.arena.String(column)
460
+ }
461
+ if schema != "" {
462
+ schemaPtr = c.arena.String(schema)
463
+ }
464
+ tablePtr := c.arena.String(table)
465
+
466
+ rc := res_t(c.wrp.Xsqlite3_table_column_metadata(int32(c.handle),
467
+ int32(schemaPtr), int32(tablePtr), int32(columnPtr),
468
+ int32(declTypePtr), int32(collSeqPtr),
469
+ int32(notNullPtr), int32(primaryKeyPtr), int32(autoIncPtr)))
470
+ if err = c.error(rc); err == nil && column != "" {
471
+ if ptr := ptr_t(c.wrp.Read32(declTypePtr)); ptr != 0 {
472
+ declType = c.wrp.ReadString(ptr, _MAX_NAME)
473
+ }
474
+ if ptr := ptr_t(c.wrp.Read32(collSeqPtr)); ptr != 0 {
475
+ collSeq = c.wrp.ReadString(ptr, _MAX_NAME)
476
+ }
477
+ notNull = c.wrp.ReadBool(notNullPtr)
478
+ autoInc = c.wrp.ReadBool(autoIncPtr)
479
+ primaryKey = c.wrp.ReadBool(primaryKeyPtr)
480
+ }
481
+ return
482
+ }
483
+
484
+ func (c *Conn) error(rc res_t, sql ...string) error {
485
+ return c.errorFor(c.handle, rc, sql...)
486
+ }
487
+
488
+ func (c *Conn) errorFor(handle ptr_t, rc res_t, sql ...string) error {
489
+ if rc == _OK {
490
+ return nil
491
+ }
492
+
493
+ if ErrorCode(rc) == NOMEM || xErrorCode(rc) == IOERR_NOMEM {
494
+ panic(errutil.OOMErr)
495
+ }
496
+
497
+ var msg, query string
498
+ if handle != 0 {
499
+ if ptr := ptr_t(c.wrp.Xsqlite3_errmsg(int32(handle))); ptr != 0 {
500
+ msg = c.wrp.ReadString(ptr, _MAX_LENGTH)
501
+ msg = strings.TrimPrefix(msg, "sqlite3: ")
502
+ msg = strings.TrimPrefix(msg, sqlite3_wrap.ErrorCodeString(rc)[len("sqlite3: "):])
503
+ msg = strings.TrimPrefix(msg, ": ")
504
+ if msg == "" || msg == "not an error" {
505
+ msg = ""
506
+ }
507
+ }
508
+
509
+ if len(sql) != 0 {
510
+ if i := c.wrp.Xsqlite3_error_offset(int32(handle)); i != -1 {
511
+ query = sql[0][i:]
512
+ }
513
+ }
514
+ }
515
+
516
+ var sys error
517
+ switch ErrorCode(rc) {
518
+ case CANTOPEN, IOERR:
519
+ sys = c.wrp.SysError
520
+ }
521
+
522
+ if sys != nil || msg != "" || query != "" {
523
+ return &Error{code: rc, sys: sys, msg: msg, sql: query}
524
+ }
525
+ return xErrorCode(rc)
526
+ }
527
+
528
+ // Stmts returns an iterator for the prepared statements
529
+ // associated with the database connection.
530
+ //
531
+ // https://sqlite.org/c3ref/next_stmt.html
532
+ func (c *Conn) Stmts() iter.Seq[*Stmt] {
533
+ return func(yield func(*Stmt) bool) {
534
+ for _, s := range c.stmts {
535
+ if !yield(s) {
536
+ break
537
+ }
538
+ }
539
+ }
540
+ }
@@ -0,0 +1,93 @@
1
+ //go:build go1.27
2
+
3
+ package sqlite3
4
+
5
+ import (
6
+ "errors"
7
+ "fmt"
8
+ "uuid"
9
+ )
10
+
11
+ // CreateModule registers a new virtual table module name.
12
+ // If create is nil, the virtual table is eponymous.
13
+ //
14
+ // https://sqlite.org/c3ref/create_module.html
15
+ func (c *Conn) CreateModule[T VTab](name string, create, connect VTabConstructor[T]) error {
16
+ return CreateModule(c, name, create, connect)
17
+ }
18
+
19
+ // ExtensionInit loads an SQLite extension library.
20
+ //
21
+ // https://sqlite.org/loadext.html
22
+ func (c *Conn) ExtensionInit[Env any, Mod ExtensionLibrary](init func(env Env) Mod, info ExtensionInfo) error {
23
+ return ExtensionInit(c, init, info)
24
+ }
25
+
26
+ func (c *Conn) uuid() error {
27
+ const flags = DETERMINISTIC | INNOCUOUS
28
+ return errors.Join(
29
+ c.CreateFunction("uuid", 0, INNOCUOUS, uuidNew),
30
+ c.CreateFunction("uuid", 1, INNOCUOUS, uuidNew),
31
+ c.CreateFunction("uuid_str", 1, flags, uuidStr),
32
+ c.CreateFunction("uuid_blob", 1, flags, uuidBlob))
33
+ }
34
+
35
+ func uuidNew(ctx Context, arg ...Value) {
36
+ ver := 4
37
+ if len(arg) > 0 {
38
+ ver = arg[0].Int()
39
+ }
40
+
41
+ var u uuid.UUID
42
+ switch ver {
43
+ case 4:
44
+ u = uuid.NewV4()
45
+ case 7:
46
+ u = uuid.NewV7()
47
+ default:
48
+ ctx.ResultError(fmt.Errorf("uuid: invalid version: %d", ver)) // notest
49
+ return
50
+ }
51
+
52
+ ctx.ResultText(u.String())
53
+ }
54
+
55
+ func uuidFrom(arg Value) (u uuid.UUID, err error) {
56
+ switch t := arg.Type(); t {
57
+ case TEXT:
58
+ err = u.UnmarshalText(arg.RawText())
59
+ if err != nil {
60
+ err = fmt.Errorf("uuid: %w", err)
61
+ }
62
+
63
+ case BLOB:
64
+ blob := arg.RawBlob()
65
+ if size := len(blob); size != len(u) {
66
+ err = fmt.Errorf("uuid: invalid BLOB length: %d", size)
67
+ } else {
68
+ copy(u[:], blob)
69
+ }
70
+
71
+ default:
72
+ err = fmt.Errorf("uuid: invalid type: %v", t)
73
+ }
74
+ return u, err
75
+ }
76
+
77
+ func uuidBlob(ctx Context, arg ...Value) {
78
+ u, err := uuidFrom(arg[0])
79
+ if err != nil {
80
+ ctx.ResultError(err) // notest
81
+ } else {
82
+ ctx.ResultBlob(u[:])
83
+ }
84
+ }
85
+
86
+ func uuidStr(ctx Context, arg ...Value) {
87
+ u, err := uuidFrom(arg[0])
88
+ if err != nil {
89
+ ctx.ResultError(err) // notest
90
+ } else {
91
+ ctx.ResultText(u.String())
92
+ }
93
+ }