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,692 @@
1
+ package sqlite3
2
+
3
+ import (
4
+ "time"
5
+
6
+ "github.com/ncruces/go-sqlite3/internal/errutil"
7
+ )
8
+
9
+ // Stmt is a prepared statement object.
10
+ //
11
+ // https://sqlite.org/c3ref/stmt.html
12
+ type Stmt struct {
13
+ c *Conn
14
+ err error
15
+ sql string
16
+ handle ptr_t
17
+ }
18
+
19
+ // Close destroys the prepared statement object.
20
+ //
21
+ // It is safe to close a nil, zero or closed Stmt.
22
+ //
23
+ // https://sqlite.org/c3ref/finalize.html
24
+ func (s *Stmt) Close() error {
25
+ if s == nil || s.handle == 0 {
26
+ return nil
27
+ }
28
+
29
+ rc := res_t(s.c.wrp.Xsqlite3_finalize(int32(s.handle)))
30
+ stmts := s.c.stmts
31
+ for i := range stmts {
32
+ if s == stmts[i] {
33
+ l := len(stmts) - 1
34
+ stmts[i] = stmts[l]
35
+ stmts[l] = nil
36
+ s.c.stmts = stmts[:l]
37
+ break
38
+ }
39
+ }
40
+
41
+ s.handle = 0
42
+ return s.c.error(rc)
43
+ }
44
+
45
+ // Conn returns the database connection to which the prepared statement belongs.
46
+ //
47
+ // https://sqlite.org/c3ref/db_handle.html
48
+ func (s *Stmt) Conn() *Conn {
49
+ return s.c
50
+ }
51
+
52
+ // SQL returns the SQL text used to create the prepared statement.
53
+ //
54
+ // https://sqlite.org/c3ref/expanded_sql.html
55
+ func (s *Stmt) SQL() string {
56
+ return s.sql
57
+ }
58
+
59
+ // ExpandedSQL returns the SQL text of the prepared statement
60
+ // with bound parameters expanded.
61
+ //
62
+ // https://sqlite.org/c3ref/expanded_sql.html
63
+ func (s *Stmt) ExpandedSQL() string {
64
+ ptr := ptr_t(s.c.wrp.Xsqlite3_expanded_sql(int32(s.handle)))
65
+ sql := s.c.wrp.ReadString(ptr, _MAX_SQL_LENGTH)
66
+ s.c.wrp.Free(ptr)
67
+ return sql
68
+ }
69
+
70
+ // ReadOnly returns true if and only if the statement
71
+ // makes no direct changes to the content of the database file.
72
+ //
73
+ // https://sqlite.org/c3ref/stmt_readonly.html
74
+ func (s *Stmt) ReadOnly() bool {
75
+ b := s.c.wrp.Xsqlite3_stmt_readonly(int32(s.handle))
76
+ return b != 0
77
+ }
78
+
79
+ // Reset resets the prepared statement object.
80
+ //
81
+ // https://sqlite.org/c3ref/reset.html
82
+ func (s *Stmt) Reset() error {
83
+ rc := res_t(s.c.wrp.Xsqlite3_reset(int32(s.handle)))
84
+ s.err = nil
85
+ return s.c.error(rc)
86
+ }
87
+
88
+ // Busy determines if a prepared statement has been reset.
89
+ //
90
+ // https://sqlite.org/c3ref/stmt_busy.html
91
+ func (s *Stmt) Busy() bool {
92
+ rc := res_t(s.c.wrp.Xsqlite3_stmt_busy(int32(s.handle)))
93
+ return rc != 0
94
+ }
95
+
96
+ // Step evaluates the SQL statement.
97
+ // If the SQL statement being executed returns any data,
98
+ // then true is returned each time a new row of data is ready for processing by the caller.
99
+ // The values may be accessed using the Column access functions.
100
+ // Step is called again to retrieve the next row of data.
101
+ // If an error has occurred, Step returns false;
102
+ // call [Stmt.Err] or [Stmt.Reset] to get the error.
103
+ //
104
+ // https://sqlite.org/c3ref/step.html
105
+ func (s *Stmt) Step() bool {
106
+ if s.c.interrupt.Err() != nil {
107
+ s.err = INTERRUPT
108
+ return false
109
+ }
110
+
111
+ rc := res_t(s.c.wrp.Xsqlite3_step(int32(s.handle)))
112
+ switch rc {
113
+ case _ROW:
114
+ s.err = nil
115
+ return true
116
+ case _DONE:
117
+ s.err = nil
118
+ default:
119
+ s.err = s.c.error(rc)
120
+ }
121
+ return false
122
+ }
123
+
124
+ // Err gets the last error occurred during [Stmt.Step].
125
+ // Err returns nil after [Stmt.Reset] is called.
126
+ //
127
+ // https://sqlite.org/c3ref/step.html
128
+ func (s *Stmt) Err() error {
129
+ return s.err
130
+ }
131
+
132
+ // Exec is a convenience function that repeatedly calls [Stmt.Step] until it returns false,
133
+ // then calls [Stmt.Reset] to reset the statement and get any error that occurred.
134
+ func (s *Stmt) Exec() error {
135
+ if s.c.interrupt.Err() != nil {
136
+ return INTERRUPT
137
+ }
138
+ rc := res_t(s.c.wrp.Xsqlite3_exec_go(int32(s.handle)))
139
+ s.err = nil
140
+ return s.c.error(rc)
141
+ }
142
+
143
+ // Status monitors the performance characteristics of prepared statements.
144
+ //
145
+ // https://sqlite.org/c3ref/stmt_status.html
146
+ func (s *Stmt) Status(op StmtStatus, reset bool) int {
147
+ if op > STMTSTATUS_FILTER_HIT && op != STMTSTATUS_MEMUSED {
148
+ return 0
149
+ }
150
+ var i int32
151
+ if reset {
152
+ i = 1
153
+ }
154
+ return int(s.c.wrp.Xsqlite3_stmt_status(int32(s.handle), int32(op), i))
155
+ }
156
+
157
+ // ClearBindings resets all bindings on the prepared statement.
158
+ //
159
+ // https://sqlite.org/c3ref/clear_bindings.html
160
+ func (s *Stmt) ClearBindings() error {
161
+ rc := res_t(s.c.wrp.Xsqlite3_clear_bindings(int32(s.handle)))
162
+ return s.c.error(rc)
163
+ }
164
+
165
+ // BindCount returns the number of SQL parameters in the prepared statement.
166
+ //
167
+ // https://sqlite.org/c3ref/bind_parameter_count.html
168
+ func (s *Stmt) BindCount() int {
169
+ return int(s.c.wrp.Xsqlite3_bind_parameter_count(int32(s.handle)))
170
+ }
171
+
172
+ // BindIndex returns the index of a parameter in the prepared statement
173
+ // given its name.
174
+ //
175
+ // https://sqlite.org/c3ref/bind_parameter_index.html
176
+ func (s *Stmt) BindIndex(name string) int {
177
+ defer s.c.arena.Mark()()
178
+ namePtr := s.c.arena.String(name)
179
+ return int(s.c.wrp.Xsqlite3_bind_parameter_index(int32(s.handle), int32(namePtr)))
180
+ }
181
+
182
+ // BindName returns the name of a parameter in the prepared statement.
183
+ // The leftmost SQL parameter has an index of 1.
184
+ //
185
+ // https://sqlite.org/c3ref/bind_parameter_name.html
186
+ func (s *Stmt) BindName(param int) string {
187
+ ptr := ptr_t(s.c.wrp.Xsqlite3_bind_parameter_name(
188
+ int32(s.handle), int32(param)))
189
+ if ptr == 0 {
190
+ return ""
191
+ }
192
+ return s.c.wrp.ReadString(ptr, _MAX_NAME)
193
+ }
194
+
195
+ // BindBool binds a bool to the prepared statement.
196
+ // The leftmost SQL parameter has an index of 1.
197
+ // SQLite does not have a separate boolean storage class.
198
+ // Instead, boolean values are stored as integers 0 (false) and 1 (true).
199
+ //
200
+ // https://sqlite.org/c3ref/bind_blob.html
201
+ func (s *Stmt) BindBool(param int, value bool) error {
202
+ var i int64
203
+ if value {
204
+ i = 1
205
+ }
206
+ return s.BindInt64(param, i)
207
+ }
208
+
209
+ // BindInt binds an int to the prepared statement.
210
+ // The leftmost SQL parameter has an index of 1.
211
+ //
212
+ // https://sqlite.org/c3ref/bind_blob.html
213
+ func (s *Stmt) BindInt(param int, value int) error {
214
+ return s.BindInt64(param, int64(value))
215
+ }
216
+
217
+ // BindInt64 binds an int64 to the prepared statement.
218
+ // The leftmost SQL parameter has an index of 1.
219
+ //
220
+ // https://sqlite.org/c3ref/bind_blob.html
221
+ func (s *Stmt) BindInt64(param int, value int64) error {
222
+ rc := res_t(s.c.wrp.Xsqlite3_bind_int64(
223
+ int32(s.handle), int32(param), value))
224
+ return s.c.error(rc)
225
+ }
226
+
227
+ // BindFloat binds a float64 to the prepared statement.
228
+ // The leftmost SQL parameter has an index of 1.
229
+ //
230
+ // https://sqlite.org/c3ref/bind_blob.html
231
+ func (s *Stmt) BindFloat(param int, value float64) error {
232
+ rc := res_t(s.c.wrp.Xsqlite3_bind_double(
233
+ int32(s.handle), int32(param), value))
234
+ return s.c.error(rc)
235
+ }
236
+
237
+ // BindText binds a string to the prepared statement.
238
+ // The leftmost SQL parameter has an index of 1.
239
+ //
240
+ // https://sqlite.org/c3ref/bind_blob.html
241
+ func (s *Stmt) BindText(param int, value string) error {
242
+ if len(value) > _MAX_LENGTH {
243
+ return TOOBIG
244
+ }
245
+ ptr := s.c.wrp.NewString(value)
246
+ rc := res_t(s.c.wrp.Xsqlite3_bind_text_go(
247
+ int32(s.handle), int32(param),
248
+ int32(ptr), int64(len(value))))
249
+ return s.c.error(rc)
250
+ }
251
+
252
+ // BindRawText binds a []byte to the prepared statement as text.
253
+ // The leftmost SQL parameter has an index of 1.
254
+ //
255
+ // https://sqlite.org/c3ref/bind_blob.html
256
+ func (s *Stmt) BindRawText(param int, value []byte) error {
257
+ return s.BindText(param, string(value)) // does not escape
258
+ }
259
+
260
+ // BindBlob binds a []byte to the prepared statement.
261
+ // The leftmost SQL parameter has an index of 1.
262
+ //
263
+ // https://sqlite.org/c3ref/bind_blob.html
264
+ func (s *Stmt) BindBlob(param int, value []byte) error {
265
+ if len(value) > _MAX_LENGTH {
266
+ return TOOBIG
267
+ }
268
+ if len(value) == 0 {
269
+ return s.BindZeroBlob(param, 0)
270
+ }
271
+ ptr := s.c.wrp.NewBytes(value)
272
+ rc := res_t(s.c.wrp.Xsqlite3_bind_blob_go(
273
+ int32(s.handle), int32(param),
274
+ int32(ptr), int64(len(value))))
275
+ return s.c.error(rc)
276
+ }
277
+
278
+ // BindZeroBlob binds a zero-filled, length n BLOB to the prepared statement.
279
+ // The leftmost SQL parameter has an index of 1.
280
+ //
281
+ // https://sqlite.org/c3ref/bind_blob.html
282
+ func (s *Stmt) BindZeroBlob(param int, n int64) error {
283
+ rc := res_t(s.c.wrp.Xsqlite3_bind_zeroblob64(
284
+ int32(s.handle), int32(param), n))
285
+ return s.c.error(rc)
286
+ }
287
+
288
+ // BindNull binds a NULL to the prepared statement.
289
+ // The leftmost SQL parameter has an index of 1.
290
+ //
291
+ // https://sqlite.org/c3ref/bind_blob.html
292
+ func (s *Stmt) BindNull(param int) error {
293
+ rc := res_t(s.c.wrp.Xsqlite3_bind_null(
294
+ int32(s.handle), int32(param)))
295
+ return s.c.error(rc)
296
+ }
297
+
298
+ // BindTime binds a [time.Time] to the prepared statement.
299
+ // The leftmost SQL parameter has an index of 1.
300
+ //
301
+ // https://sqlite.org/c3ref/bind_blob.html
302
+ func (s *Stmt) BindTime(param int, value time.Time, format TimeFormat) error {
303
+ switch format {
304
+ case TimeFormatDefault, TimeFormatAuto, time.RFC3339Nano:
305
+ return s.bindRFC3339Nano(param, value)
306
+ }
307
+ switch v := format.Encode(value).(type) {
308
+ case string:
309
+ return s.BindText(param, v)
310
+ case int64:
311
+ return s.BindInt64(param, v)
312
+ case float64:
313
+ return s.BindFloat(param, v)
314
+ default:
315
+ panic(errutil.AssertErr())
316
+ }
317
+ }
318
+
319
+ func (s *Stmt) bindRFC3339Nano(param int, value time.Time) error {
320
+ const maxlen = 48
321
+ ptr := s.c.wrp.New(maxlen)
322
+ buf := s.c.wrp.Bytes(ptr, maxlen)
323
+ buf = value.AppendFormat(buf[:0], time.RFC3339Nano)
324
+ _ = append(buf, 0)
325
+
326
+ rc := res_t(s.c.wrp.Xsqlite3_bind_text_go(
327
+ int32(s.handle), int32(param),
328
+ int32(ptr), int64(len(buf))))
329
+ return s.c.error(rc)
330
+ }
331
+
332
+ // BindPointer binds a NULL to the prepared statement, just like [Stmt.BindNull],
333
+ // but it also associates ptr with that NULL value such that it can be retrieved
334
+ // within an application-defined SQL function using [Value.Pointer].
335
+ // The leftmost SQL parameter has an index of 1.
336
+ //
337
+ // https://sqlite.org/c3ref/bind_blob.html
338
+ func (s *Stmt) BindPointer(param int, ptr any) error {
339
+ valPtr := s.c.wrp.AddHandle(ptr)
340
+ rc := res_t(s.c.wrp.Xsqlite3_bind_pointer_go(
341
+ int32(s.handle), int32(param), int32(valPtr)))
342
+ return s.c.error(rc)
343
+ }
344
+
345
+ // BindValue binds a copy of value to the prepared statement.
346
+ // The leftmost SQL parameter has an index of 1.
347
+ //
348
+ // https://sqlite.org/c3ref/bind_blob.html
349
+ func (s *Stmt) BindValue(param int, value Value) error {
350
+ if value.c != s.c {
351
+ return MISUSE
352
+ }
353
+ rc := res_t(s.c.wrp.Xsqlite3_bind_value(
354
+ int32(s.handle), int32(param), int32(value.handle)))
355
+ return s.c.error(rc)
356
+ }
357
+
358
+ // DataCount resets the number of columns in a result set.
359
+ //
360
+ // https://sqlite.org/c3ref/data_count.html
361
+ func (s *Stmt) DataCount() int {
362
+ return int(s.c.wrp.Xsqlite3_data_count(int32(s.handle)))
363
+ }
364
+
365
+ // ColumnCount returns the number of columns in a result set.
366
+ //
367
+ // https://sqlite.org/c3ref/column_count.html
368
+ func (s *Stmt) ColumnCount() int {
369
+ return int(s.c.wrp.Xsqlite3_column_count(int32(s.handle)))
370
+ }
371
+
372
+ // ColumnName returns the name of the result column.
373
+ // The leftmost column of the result set has the index 0.
374
+ //
375
+ // https://sqlite.org/c3ref/column_name.html
376
+ func (s *Stmt) ColumnName(col int) string {
377
+ ptr := ptr_t(s.c.wrp.Xsqlite3_column_name(
378
+ int32(s.handle), int32(col)))
379
+ if ptr == 0 {
380
+ panic(errutil.OOMErr)
381
+ }
382
+ return s.c.wrp.ReadString(ptr, _MAX_NAME)
383
+ }
384
+
385
+ // ColumnType returns the initial [Datatype] of the result column.
386
+ // The leftmost column of the result set has the index 0.
387
+ //
388
+ // https://sqlite.org/c3ref/column_blob.html
389
+ func (s *Stmt) ColumnType(col int) Datatype {
390
+ return Datatype(s.c.wrp.Xsqlite3_column_type(
391
+ int32(s.handle), int32(col)))
392
+ }
393
+
394
+ // ColumnDeclType returns the declared datatype of the result column.
395
+ // The leftmost column of the result set has the index 0.
396
+ //
397
+ // https://sqlite.org/c3ref/column_decltype.html
398
+ func (s *Stmt) ColumnDeclType(col int) string {
399
+ ptr := ptr_t(s.c.wrp.Xsqlite3_column_decltype(
400
+ int32(s.handle), int32(col)))
401
+ if ptr == 0 {
402
+ return ""
403
+ }
404
+ return s.c.wrp.ReadString(ptr, _MAX_NAME)
405
+ }
406
+
407
+ // ColumnDatabaseName returns the name of the database
408
+ // that is the origin of a particular result column.
409
+ // The leftmost column of the result set has the index 0.
410
+ //
411
+ // https://sqlite.org/c3ref/column_database_name.html
412
+ func (s *Stmt) ColumnDatabaseName(col int) string {
413
+ ptr := ptr_t(s.c.wrp.Xsqlite3_column_database_name(
414
+ int32(s.handle), int32(col)))
415
+ if ptr == 0 {
416
+ return ""
417
+ }
418
+ return s.c.wrp.ReadString(ptr, _MAX_NAME)
419
+ }
420
+
421
+ // ColumnTableName returns the name of the table
422
+ // that is the origin of a particular result column.
423
+ // The leftmost column of the result set has the index 0.
424
+ //
425
+ // https://sqlite.org/c3ref/column_database_name.html
426
+ func (s *Stmt) ColumnTableName(col int) string {
427
+ ptr := ptr_t(s.c.wrp.Xsqlite3_column_table_name(
428
+ int32(s.handle), int32(col)))
429
+ if ptr == 0 {
430
+ return ""
431
+ }
432
+ return s.c.wrp.ReadString(ptr, _MAX_NAME)
433
+ }
434
+
435
+ // ColumnOriginName returns the name of the table column
436
+ // that is the origin of a particular result column.
437
+ // The leftmost column of the result set has the index 0.
438
+ //
439
+ // https://sqlite.org/c3ref/column_database_name.html
440
+ func (s *Stmt) ColumnOriginName(col int) string {
441
+ ptr := ptr_t(s.c.wrp.Xsqlite3_column_origin_name(
442
+ int32(s.handle), int32(col)))
443
+ if ptr == 0 {
444
+ return ""
445
+ }
446
+ return s.c.wrp.ReadString(ptr, _MAX_NAME)
447
+ }
448
+
449
+ // ColumnBool returns the value of the result column as a bool.
450
+ // The leftmost column of the result set has the index 0.
451
+ // SQLite does not have a separate boolean storage class.
452
+ // Instead, boolean values are retrieved as numbers,
453
+ // with 0 converted to false and any other value to true.
454
+ //
455
+ // https://sqlite.org/c3ref/column_blob.html
456
+ func (s *Stmt) ColumnBool(col int) bool {
457
+ return s.ColumnFloat(col) != 0
458
+ }
459
+
460
+ // ColumnInt returns the value of the result column as an int.
461
+ // The leftmost column of the result set has the index 0.
462
+ //
463
+ // https://sqlite.org/c3ref/column_blob.html
464
+ func (s *Stmt) ColumnInt(col int) int {
465
+ return int(s.ColumnInt64(col))
466
+ }
467
+
468
+ // ColumnInt64 returns the value of the result column as an int64.
469
+ // The leftmost column of the result set has the index 0.
470
+ //
471
+ // https://sqlite.org/c3ref/column_blob.html
472
+ func (s *Stmt) ColumnInt64(col int) int64 {
473
+ return s.c.wrp.Xsqlite3_column_int64(
474
+ int32(s.handle), int32(col))
475
+ }
476
+
477
+ // ColumnFloat returns the value of the result column as a float64.
478
+ // The leftmost column of the result set has the index 0.
479
+ //
480
+ // https://sqlite.org/c3ref/column_blob.html
481
+ func (s *Stmt) ColumnFloat(col int) float64 {
482
+ return s.c.wrp.Xsqlite3_column_double(
483
+ int32(s.handle), int32(col))
484
+ }
485
+
486
+ // ColumnTime returns the value of the result column as a [time.Time].
487
+ // The leftmost column of the result set has the index 0.
488
+ //
489
+ // https://sqlite.org/c3ref/column_blob.html
490
+ func (s *Stmt) ColumnTime(col int, format TimeFormat) time.Time {
491
+ var v any
492
+ switch s.ColumnType(col) {
493
+ case INTEGER:
494
+ v = s.ColumnInt64(col)
495
+ case FLOAT:
496
+ v = s.ColumnFloat(col)
497
+ case TEXT, BLOB:
498
+ v = s.ColumnText(col)
499
+ case NULL:
500
+ return time.Time{}
501
+ default:
502
+ panic(errutil.AssertErr())
503
+ }
504
+ t, err := format.Decode(v)
505
+ if err != nil {
506
+ s.err = err
507
+ }
508
+ return t
509
+ }
510
+
511
+ // ColumnText returns the value of the result column as a string.
512
+ // The leftmost column of the result set has the index 0.
513
+ //
514
+ // https://sqlite.org/c3ref/column_blob.html
515
+ func (s *Stmt) ColumnText(col int) string {
516
+ return string(s.ColumnRawText(col))
517
+ }
518
+
519
+ // ColumnBlob appends to buf and returns
520
+ // the value of the result column as a []byte.
521
+ // The leftmost column of the result set has the index 0.
522
+ //
523
+ // https://sqlite.org/c3ref/column_blob.html
524
+ func (s *Stmt) ColumnBlob(col int, buf []byte) []byte {
525
+ return append(buf, s.ColumnRawBlob(col)...)
526
+ }
527
+
528
+ // ColumnRawText returns the value of the result column as a []byte.
529
+ // The []byte is owned by SQLite and may be invalidated by
530
+ // subsequent calls to [Stmt] methods.
531
+ // The leftmost column of the result set has the index 0.
532
+ //
533
+ // https://sqlite.org/c3ref/column_blob.html
534
+ func (s *Stmt) ColumnRawText(col int) []byte {
535
+ ptr := ptr_t(s.c.wrp.Xsqlite3_column_text(
536
+ int32(s.handle), int32(col)))
537
+ return s.columnRawBytes(col, ptr, 1)
538
+ }
539
+
540
+ // ColumnRawBlob returns the value of the result column as a []byte.
541
+ // The []byte is owned by SQLite and may be invalidated by
542
+ // subsequent calls to [Stmt] methods.
543
+ // The leftmost column of the result set has the index 0.
544
+ //
545
+ // https://sqlite.org/c3ref/column_blob.html
546
+ func (s *Stmt) ColumnRawBlob(col int) []byte {
547
+ ptr := ptr_t(s.c.wrp.Xsqlite3_column_blob(
548
+ int32(s.handle), int32(col)))
549
+ return s.columnRawBytes(col, ptr, 0)
550
+ }
551
+
552
+ func (s *Stmt) columnRawBytes(col int, ptr ptr_t, nul int32) []byte {
553
+ if ptr == 0 {
554
+ rc := res_t(s.c.wrp.Xsqlite3_errcode(int32(s.c.handle)))
555
+ if rc != _ROW && rc != _DONE {
556
+ s.err = s.c.error(rc)
557
+ }
558
+ return nil
559
+ }
560
+
561
+ n := s.c.wrp.Xsqlite3_column_bytes(int32(s.handle), int32(col))
562
+ return s.c.wrp.Bytes(ptr, int64(n+nul))[:n]
563
+ }
564
+
565
+ // ColumnValue returns the unprotected value of the result column.
566
+ // The leftmost column of the result set has the index 0.
567
+ //
568
+ // https://sqlite.org/c3ref/column_blob.html
569
+ func (s *Stmt) ColumnValue(col int) Value {
570
+ ptr := ptr_t(s.c.wrp.Xsqlite3_column_value(
571
+ int32(s.handle), int32(col)))
572
+ return Value{
573
+ c: s.c,
574
+ handle: ptr,
575
+ }
576
+ }
577
+
578
+ // Columns populates result columns into the provided slice.
579
+ // The slice must have [Stmt.ColumnCount] length.
580
+ //
581
+ // [INTEGER] columns will be retrieved as int64 values,
582
+ // [FLOAT] as float64, [NULL] as nil,
583
+ // [TEXT] as string, and [BLOB] as []byte.
584
+ func (s *Stmt) Columns(dest ...any) error {
585
+ defer s.c.arena.Mark()()
586
+ types, ptr, err := s.columns(int64(len(dest)))
587
+ if err != nil {
588
+ return err
589
+ }
590
+
591
+ // Avoid bounds checks on types below.
592
+ if len(types) != len(dest) {
593
+ panic(errutil.AssertErr())
594
+ }
595
+
596
+ mem := s.c.wrp.Memory
597
+ for i := range dest {
598
+ switch types[i] {
599
+ case byte(INTEGER):
600
+ dest[i] = int64(mem.Read64(ptr))
601
+ case byte(FLOAT):
602
+ dest[i] = mem.ReadFloat64(ptr)
603
+ case byte(NULL):
604
+ dest[i] = nil
605
+ case byte(TEXT):
606
+ len := int32(mem.Read32(ptr + 4))
607
+ if len != 0 {
608
+ ptr := ptr_t(mem.Read32(ptr))
609
+ buf := mem.Bytes(ptr, int64(len))
610
+ dest[i] = string(buf)
611
+ } else {
612
+ dest[i] = ""
613
+ }
614
+ case byte(BLOB):
615
+ len := int32(mem.Read32(ptr + 4))
616
+ if len != 0 {
617
+ ptr := ptr_t(mem.Read32(ptr))
618
+ buf := mem.Bytes(ptr, int64(len))
619
+ tmp, _ := dest[i].([]byte)
620
+ dest[i] = append(tmp[:0], buf...)
621
+ } else {
622
+ dest[i], _ = dest[i].([]byte)
623
+ }
624
+ }
625
+ ptr += 8
626
+ }
627
+ return nil
628
+ }
629
+
630
+ // ColumnsRaw populates result columns into the provided slice.
631
+ // The slice must have [Stmt.ColumnCount] length.
632
+ //
633
+ // [INTEGER] columns will be retrieved as int64 values,
634
+ // [FLOAT] as float64, [NULL] as nil,
635
+ // [TEXT] and [BLOB] as []byte.
636
+ // Any []byte are owned by SQLite and may be invalidated by
637
+ // subsequent calls to [Stmt] methods.
638
+ func (s *Stmt) ColumnsRaw(dest ...any) error {
639
+ defer s.c.arena.Mark()()
640
+ types, ptr, err := s.columns(int64(len(dest)))
641
+ if err != nil {
642
+ return err
643
+ }
644
+
645
+ // Avoid bounds checks on types below.
646
+ if len(types) != len(dest) {
647
+ panic(errutil.AssertErr())
648
+ }
649
+
650
+ mem := s.c.wrp.Memory
651
+ for i := range dest {
652
+ switch types[i] {
653
+ case byte(INTEGER):
654
+ dest[i] = int64(mem.Read64(ptr))
655
+ case byte(FLOAT):
656
+ dest[i] = mem.ReadFloat64(ptr)
657
+ case byte(NULL):
658
+ dest[i] = nil
659
+ default:
660
+ len := int32(mem.Read32(ptr + 4))
661
+ if len == 0 && types[i] == byte(BLOB) {
662
+ dest[i] = []byte{}
663
+ } else {
664
+ cap := len
665
+ if types[i] == byte(TEXT) {
666
+ cap++
667
+ }
668
+ ptr := ptr_t(mem.Read32(ptr))
669
+ buf := mem.Bytes(ptr, int64(cap))[:len]
670
+ dest[i] = buf
671
+ }
672
+ }
673
+ ptr += 8
674
+ }
675
+ return nil
676
+ }
677
+
678
+ func (s *Stmt) columns(count int64) ([]byte, ptr_t, error) {
679
+ typePtr := s.c.arena.New(count)
680
+ dataPtr := s.c.arena.New(count * 8)
681
+
682
+ rc := res_t(s.c.wrp.Xsqlite3_columns_go(
683
+ int32(s.handle), int32(count), int32(typePtr), int32(dataPtr)))
684
+ if rc == res_t(MISUSE) {
685
+ return nil, 0, MISUSE
686
+ }
687
+ if err := s.c.error(rc); err != nil {
688
+ return nil, 0, err
689
+ }
690
+
691
+ return s.c.wrp.Bytes(typePtr, count), dataPtr, nil
692
+ }