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,182 @@
1
+ package sqlite3
2
+
3
+ import (
4
+ "errors"
5
+ "strings"
6
+
7
+ "github.com/ncruces/go-sqlite3/internal/sqlite3_wrap"
8
+ )
9
+
10
+ // Error wraps an SQLite Error Code.
11
+ //
12
+ // https://sqlite.org/c3ref/errcode.html
13
+ type Error struct {
14
+ sys error
15
+ msg string
16
+ sql string
17
+ code res_t
18
+ }
19
+
20
+ // Code returns the primary error code for this error.
21
+ //
22
+ // https://sqlite.org/rescode.html
23
+ func (e *Error) Code() ErrorCode {
24
+ return ErrorCode(e.code)
25
+ }
26
+
27
+ // ExtendedCode returns the extended error code for this error.
28
+ //
29
+ // https://sqlite.org/rescode.html
30
+ func (e *Error) ExtendedCode() ExtendedErrorCode {
31
+ return xErrorCode(e.code)
32
+ }
33
+
34
+ // Error implements the error interface.
35
+ func (e *Error) Error() string {
36
+ var b strings.Builder
37
+ b.WriteString(sqlite3_wrap.ErrorCodeString(e.code))
38
+
39
+ if e.msg != "" {
40
+ b.WriteString(": ")
41
+ b.WriteString(e.msg)
42
+ }
43
+ if e.sys != nil {
44
+ b.WriteString(": ")
45
+ b.WriteString(e.sys.Error())
46
+ }
47
+
48
+ return b.String()
49
+ }
50
+
51
+ // Unwrap returns the underlying operating system error
52
+ // that caused the I/O error or failure to open a file.
53
+ //
54
+ // https://sqlite.org/c3ref/system_errno.html
55
+ func (e *Error) Unwrap() error {
56
+ return e.sys
57
+ }
58
+
59
+ // Is tests whether this error matches a given [ErrorCode] or [ExtendedErrorCode].
60
+ //
61
+ // It makes it possible to do:
62
+ //
63
+ // if errors.Is(err, sqlite3.BUSY) {
64
+ // // ... handle BUSY
65
+ // }
66
+ func (e *Error) Is(err error) bool {
67
+ switch c := err.(type) {
68
+ case ErrorCode:
69
+ return c == e.Code()
70
+ case ExtendedErrorCode:
71
+ return c == e.ExtendedCode()
72
+ }
73
+ return false
74
+ }
75
+
76
+ // As converts this error to an [ErrorCode] or [ExtendedErrorCode].
77
+ func (e *Error) As(err any) bool {
78
+ switch c := err.(type) {
79
+ case *ErrorCode:
80
+ *c = e.Code()
81
+ return true
82
+ case *ExtendedErrorCode:
83
+ *c = e.ExtendedCode()
84
+ return true
85
+ }
86
+ return false
87
+ }
88
+
89
+ // Temporary returns true for [BUSY] errors.
90
+ func (e *Error) Temporary() bool {
91
+ return e.Code() == BUSY || e.Code() == INTERRUPT
92
+ }
93
+
94
+ // Timeout returns true for [BUSY_TIMEOUT] errors.
95
+ func (e *Error) Timeout() bool {
96
+ return e.ExtendedCode() == BUSY_TIMEOUT
97
+ }
98
+
99
+ // SQL returns the SQL starting at the token that triggered a syntax error.
100
+ func (e *Error) SQL() string {
101
+ return e.sql
102
+ }
103
+
104
+ // Error implements the error interface.
105
+ func (e ErrorCode) Error() string {
106
+ return sqlite3_wrap.ErrorCodeString(e)
107
+ }
108
+
109
+ // As converts this error to an [ExtendedErrorCode].
110
+ func (e ErrorCode) As(err any) bool {
111
+ c, ok := err.(*xErrorCode)
112
+ if ok {
113
+ *c = xErrorCode(e)
114
+ }
115
+ return ok
116
+ }
117
+
118
+ // Temporary returns true for [BUSY] errors.
119
+ func (e ErrorCode) Temporary() bool {
120
+ return e == BUSY || e == INTERRUPT
121
+ }
122
+
123
+ // ExtendedCode returns the extended error code for this error.
124
+ func (e ErrorCode) ExtendedCode() ExtendedErrorCode {
125
+ return xErrorCode(e)
126
+ }
127
+
128
+ // Error implements the error interface.
129
+ func (e ExtendedErrorCode) Error() string {
130
+ return sqlite3_wrap.ErrorCodeString(e)
131
+ }
132
+
133
+ // Is tests whether this error matches a given [ErrorCode].
134
+ func (e ExtendedErrorCode) Is(err error) bool {
135
+ c, ok := err.(ErrorCode)
136
+ return ok && c == ErrorCode(e)
137
+ }
138
+
139
+ // As converts this error to an [ErrorCode].
140
+ func (e ExtendedErrorCode) As(err any) bool {
141
+ c, ok := err.(*ErrorCode)
142
+ if ok {
143
+ *c = ErrorCode(e)
144
+ }
145
+ return ok
146
+ }
147
+
148
+ // Temporary returns true for [BUSY] errors.
149
+ func (e ExtendedErrorCode) Temporary() bool {
150
+ return ErrorCode(e) == BUSY || ErrorCode(e) == INTERRUPT
151
+ }
152
+
153
+ // Timeout returns true for [BUSY_TIMEOUT] errors.
154
+ func (e ExtendedErrorCode) Timeout() bool {
155
+ return e == BUSY_TIMEOUT
156
+ }
157
+
158
+ // Code returns the primary error code for this error.
159
+ func (e ExtendedErrorCode) Code() ErrorCode {
160
+ return ErrorCode(e)
161
+ }
162
+
163
+ func errorCode(err error, def ErrorCode) (msg string, code res_t) {
164
+ switch code := err.(type) {
165
+ case nil:
166
+ return "", _OK
167
+ case ErrorCode:
168
+ return "", res_t(code)
169
+ case xErrorCode:
170
+ return "", res_t(code)
171
+ case *Error:
172
+ return code.msg, res_t(code.code)
173
+ }
174
+
175
+ var xcode xErrorCode
176
+ if errors.As(err, &xcode) {
177
+ code = res_t(xcode)
178
+ } else {
179
+ code = res_t(def)
180
+ }
181
+ return err.Error(), code
182
+ }
@@ -0,0 +1,153 @@
1
+ package sqlite3
2
+
3
+ import (
4
+ "bytes"
5
+ "encoding/base64"
6
+ "sync"
7
+
8
+ "github.com/ncruces/go-sqlite3/internal/errutil"
9
+ "github.com/ncruces/go-sqlite3/internal/sqlite3_wrap"
10
+ )
11
+
12
+ var (
13
+ // +checklocks:extRegistryMtx
14
+ extRegistry []func(*Conn) error
15
+ extRegistryMtx sync.RWMutex
16
+ )
17
+
18
+ // AutoExtension causes the entryPoint function to be invoked
19
+ // for each new database connection that is created.
20
+ //
21
+ // https://sqlite.org/c3ref/auto_extension.html
22
+ func AutoExtension(entryPoint func(*Conn) error) {
23
+ extRegistryMtx.Lock()
24
+ extRegistry = append(extRegistry, entryPoint)
25
+ extRegistryMtx.Unlock()
26
+ }
27
+
28
+ func initExtensions(c *Conn) error {
29
+ c.uuid()
30
+ c.base64()
31
+ extRegistryMtx.RLock()
32
+ defer extRegistryMtx.RUnlock()
33
+ for _, f := range extRegistry {
34
+ if err := f(c); err != nil {
35
+ return err
36
+ }
37
+ }
38
+ return nil
39
+ }
40
+
41
+ func (c *Conn) base64() error {
42
+ return c.CreateFunction("base64", 1, DETERMINISTIC, func(ctx Context, arg ...Value) {
43
+ switch a := arg[0]; a.Type() {
44
+ case NULL:
45
+
46
+ case BLOB:
47
+ data := a.RawBlob()
48
+ code := base64.StdEncoding
49
+ size := int64(code.EncodedLen(len(data)))
50
+ if size > _MAX_LENGTH {
51
+ ctx.ResultError(TOOBIG)
52
+ return
53
+ }
54
+ ptr := c.wrp.New(size)
55
+ if size > 0 {
56
+ code.Encode(c.wrp.Bytes(ptr, size), data)
57
+ }
58
+ ctx.c.wrp.Xsqlite3_result_text_go(int32(ctx.handle), int32(ptr), size)
59
+
60
+ case TEXT:
61
+ data := a.RawText()
62
+ data = bytes.Trim(data, " \t\n\v\f\r")
63
+ data = bytes.TrimRight(data, "=")
64
+ code := base64.RawStdEncoding
65
+ size := int64(code.DecodedLen(len(data)))
66
+ if size > _MAX_LENGTH {
67
+ ctx.ResultError(TOOBIG)
68
+ return
69
+ }
70
+ ptr := c.wrp.New(size)
71
+ if size > 0 {
72
+ n, _ := code.Decode(c.wrp.Bytes(ptr, size), data)
73
+ size = int64(n)
74
+ }
75
+ ctx.c.wrp.Xsqlite3_result_blob_go(int32(ctx.handle), int32(ptr), size)
76
+
77
+ default:
78
+ ctx.ResultError(errutil.ErrorString("base64: accepts only blob or text"))
79
+ }
80
+ })
81
+ }
82
+
83
+ // ExtensionLibrary represents a dynamically linked SQLite extension.
84
+ type ExtensionLibrary interface {
85
+ Xsqlite3_extension_init(db, _, _ int32) int32
86
+ }
87
+
88
+ // ExtensionInfo returns values needed to load a dynamically linked SQLite extension.
89
+ type ExtensionInfo func() (memorySize, memoryAlignment, tableSize, tableAlignment int64)
90
+
91
+ // ExtEnv is the concrete type passed to [ExtensionInit] initializers.
92
+ //
93
+ // ExtEnv exposes undocumented internal APIs that are subject to change without notice.
94
+ type ExtEnv struct {
95
+ *sqlite3_wrap.Wrapper
96
+ memoryBase int32
97
+ tableBase int32
98
+ }
99
+
100
+ func (e *ExtEnv) X__memory_base() *int32 { return &e.memoryBase }
101
+ func (e *ExtEnv) X__table_base() *int32 { return &e.tableBase }
102
+
103
+ // CallWithContextValues calls fn with a [Context] and [Value] arguments decoded from pointers.
104
+ func (e *ExtEnv) CallWithContextValues(pCtx, nVal, pVal int32, fn func(Context, ...Value)) {
105
+ db := e.DB.(*Conn)
106
+ args := callbackArgs(db, nVal, ptr_t(pVal))
107
+ defer returnArgs(args)
108
+ fn(Context{db, ptr_t(pCtx)}, *args...)
109
+ }
110
+
111
+ // ExtensionInit loads an SQLite extension library.
112
+ //
113
+ // https://sqlite.org/loadext.html
114
+ //
115
+ // Deprecated: use the generic method.
116
+ func ExtensionInit[Env any, Mod ExtensionLibrary](db *Conn, init func(env Env) Mod, info ExtensionInfo) error {
117
+ memSize, memAlign, tableSize, tableAlign := info()
118
+
119
+ var memBase int32
120
+ if memSize > 0 {
121
+ memBase = db.wrp.Xmemalign(int32(memAlign), int32(memSize))
122
+ if memBase == 0 {
123
+ panic(errutil.OOMErr)
124
+ }
125
+ }
126
+
127
+ var tableBase int
128
+ if tableSize > 0 {
129
+ // Round up to the alignment.
130
+ rnd := int(tableAlign) - 1
131
+ tab := db.wrp.X__indirect_function_table()
132
+ tableBase = (len(*tab) + rnd) &^ rnd
133
+ if add := tableBase + int(tableSize) - len(*tab); add > 0 {
134
+ *tab = append(*tab, make([]any, add)...)
135
+ }
136
+ }
137
+
138
+ e := &ExtEnv{
139
+ Wrapper: db.wrp,
140
+ memoryBase: memBase,
141
+ tableBase: int32(tableBase),
142
+ }
143
+
144
+ mod := init(any(e).(Env))
145
+ if opt, ok := any(mod).(interface{ X__wasm_apply_data_relocs() }); ok {
146
+ opt.X__wasm_apply_data_relocs()
147
+ }
148
+ if opt, ok := any(mod).(interface{ X__wasm_call_ctors() }); ok {
149
+ opt.X__wasm_call_ctors()
150
+ }
151
+ rc := mod.Xsqlite3_extension_init(int32(db.handle), 0, 0)
152
+ return db.error(res_t(rc))
153
+ }
@@ -0,0 +1,309 @@
1
+ package sqlite3
2
+
3
+ import (
4
+ "bytes"
5
+ "io"
6
+ "iter"
7
+ "sync"
8
+ "sync/atomic"
9
+
10
+ "github.com/ncruces/go-sqlite3/internal/errutil"
11
+ )
12
+
13
+ // CollationNeeded registers a callback to be invoked
14
+ // whenever an unknown collation sequence is required.
15
+ //
16
+ // https://sqlite.org/c3ref/collation_needed.html
17
+ func (c *Conn) CollationNeeded(cb func(db *Conn, name string)) error {
18
+ var enable int32
19
+ if cb != nil {
20
+ enable = 1
21
+ }
22
+ rc := res_t(c.wrp.Xsqlite3_collation_needed_go(int32(c.handle), enable))
23
+ if err := c.error(rc); err != nil {
24
+ return err
25
+ }
26
+ c.collation = cb
27
+ return nil
28
+ }
29
+
30
+ // AnyCollationNeeded uses [Conn.CollationNeeded] to register
31
+ // a fake collating function for any unknown collating sequence.
32
+ // The fake collating function works like BINARY.
33
+ //
34
+ // This can be used to load schemas that contain
35
+ // one or more unknown collating sequences.
36
+ func (c *Conn) AnyCollationNeeded() error {
37
+ return c.CollationNeeded(func(db *Conn, name string) {
38
+ db.CreateCollation(name, bytes.Compare)
39
+ })
40
+ }
41
+
42
+ // CreateCollation defines a new collating sequence.
43
+ //
44
+ // https://sqlite.org/c3ref/create_collation.html
45
+ func (c *Conn) CreateCollation(name string, fn CollatingFunction) error {
46
+ var funcPtr ptr_t
47
+ defer c.arena.Mark()()
48
+ namePtr := c.arena.String(name)
49
+ if fn != nil {
50
+ funcPtr = c.wrp.AddHandle(fn)
51
+ }
52
+ rc := res_t(c.wrp.Xsqlite3_create_collation_go(
53
+ int32(c.handle), int32(namePtr), int32(funcPtr)))
54
+ return c.error(rc)
55
+ }
56
+
57
+ // CollatingFunction is the type of a collation callback.
58
+ // Implementations must not retain a or b.
59
+ type CollatingFunction func(a, b []byte) int
60
+
61
+ // CreateFunction defines a new scalar SQL function.
62
+ //
63
+ // https://sqlite.org/c3ref/create_function.html
64
+ func (c *Conn) CreateFunction(name string, nArg int, flag FunctionFlag, fn ScalarFunction) error {
65
+ var funcPtr ptr_t
66
+ defer c.arena.Mark()()
67
+ namePtr := c.arena.String(name)
68
+ if fn != nil {
69
+ funcPtr = c.wrp.AddHandle(fn)
70
+ }
71
+ rc := res_t(c.wrp.Xsqlite3_create_function_go(
72
+ int32(c.handle), int32(namePtr), int32(nArg),
73
+ int32(flag), int32(funcPtr)))
74
+ return c.error(rc)
75
+ }
76
+
77
+ // ScalarFunction is the type of a scalar SQL function.
78
+ // Implementations must not retain arg.
79
+ type ScalarFunction func(ctx Context, arg ...Value)
80
+
81
+ // CreateAggregateFunction defines a new aggregate SQL function.
82
+ //
83
+ // https://sqlite.org/c3ref/create_function.html
84
+ func (c *Conn) CreateAggregateFunction(name string, nArg int, flag FunctionFlag, fn AggregateSeqFunction) error {
85
+ var funcPtr ptr_t
86
+ defer c.arena.Mark()()
87
+ namePtr := c.arena.String(name)
88
+ if fn != nil {
89
+ funcPtr = c.wrp.AddHandle(AggregateConstructor(func() AggregateFunction {
90
+ a := aggregateFunc{fn: fn}
91
+ coro := func(yieldCoro func(struct{}) bool) {
92
+ seq := func(yieldSeq func([]Value) bool) {
93
+ for yieldSeq(a.arg) {
94
+ if !yieldCoro(struct{}{}) {
95
+ break
96
+ }
97
+ }
98
+ }
99
+ fn(&a.ctx, seq)
100
+ }
101
+ a.next, a.stop = iter.Pull(coro)
102
+ return &a
103
+ }))
104
+ }
105
+ rc := res_t(c.wrp.Xsqlite3_create_aggregate_function_go(
106
+ int32(c.handle), int32(namePtr), int32(nArg),
107
+ int32(flag), int32(funcPtr)))
108
+ return c.error(rc)
109
+ }
110
+
111
+ // AggregateSeqFunction is the type of an aggregate SQL function.
112
+ // Implementations must not retain the slices yielded by seq.
113
+ type AggregateSeqFunction func(ctx *Context, seq iter.Seq[[]Value])
114
+
115
+ // CreateWindowFunction defines a new aggregate or aggregate window SQL function.
116
+ // If fn returns a [WindowFunction], an aggregate window function is created.
117
+ // If fn returns an [io.Closer], it will be called to free resources.
118
+ //
119
+ // https://sqlite.org/c3ref/create_function.html
120
+ func (c *Conn) CreateWindowFunction(name string, nArg int, flag FunctionFlag, fn AggregateConstructor) error {
121
+ var funcPtr ptr_t
122
+ defer c.arena.Mark()()
123
+ namePtr := c.arena.String(name)
124
+ if fn != nil {
125
+ funcPtr = c.wrp.AddHandle(fn)
126
+ }
127
+ rc := res_t(c.wrp.Xsqlite3_create_window_function_go(
128
+ int32(c.handle), int32(namePtr), int32(nArg),
129
+ int32(flag), int32(funcPtr)))
130
+ return c.error(rc)
131
+ }
132
+
133
+ // AggregateConstructor is a an [AggregateFunction] constructor.
134
+ type AggregateConstructor func() AggregateFunction
135
+
136
+ // AggregateFunction is the interface an aggregate function should implement.
137
+ //
138
+ // https://sqlite.org/appfunc.html
139
+ type AggregateFunction interface {
140
+ // Step is invoked to add a row to the current window.
141
+ // The function arguments, if any, corresponding to the row being added, are passed to Step.
142
+ // Implementations must not retain arg.
143
+ Step(ctx Context, arg ...Value)
144
+
145
+ // Value is invoked to return the current (or final) value of the aggregate.
146
+ Value(ctx Context)
147
+ }
148
+
149
+ // WindowFunction is the interface an aggregate window function should implement.
150
+ //
151
+ // https://sqlite.org/windowfunctions.html
152
+ type WindowFunction interface {
153
+ AggregateFunction
154
+
155
+ // Inverse is invoked to remove the oldest presently aggregated result of Step from the current window.
156
+ // The function arguments, if any, are those passed to Step for the row being removed.
157
+ // Implementations must not retain arg.
158
+ Inverse(ctx Context, arg ...Value)
159
+ }
160
+
161
+ // OverloadFunction overloads a function for a virtual table.
162
+ //
163
+ // https://sqlite.org/c3ref/overload_function.html
164
+ func (c *Conn) OverloadFunction(name string, nArg int) error {
165
+ defer c.arena.Mark()()
166
+ namePtr := c.arena.String(name)
167
+ rc := res_t(c.wrp.Xsqlite3_overload_function(
168
+ int32(c.handle), int32(namePtr), int32(nArg)))
169
+ return c.error(rc)
170
+ }
171
+
172
+ func (e env) Xgo_collation_needed(pArg, pDB, eTextRep, zName int32) {
173
+ if c, ok := e.DB.(*Conn); ok && c.handle == ptr_t(pDB) && c.collation != nil {
174
+ name := e.ReadString(ptr_t(zName), _MAX_NAME)
175
+ c.collation(c, name)
176
+ }
177
+ }
178
+
179
+ func (e env) Xgo_compare(pApp, nKey1, pKey1, nKey2, pKey2 int32) int32 {
180
+ fn := e.GetHandle(ptr_t(pApp)).(CollatingFunction)
181
+ return int32(fn(
182
+ e.Bytes(ptr_t(pKey1), int64(nKey1)),
183
+ e.Bytes(ptr_t(pKey2), int64(nKey2))))
184
+ }
185
+
186
+ func (e env) Xgo_func(pCtx, pApp, nArg, pArg int32) {
187
+ db := e.DB.(*Conn)
188
+ args := callbackArgs(db, nArg, ptr_t(pArg))
189
+ defer returnArgs(args)
190
+ fn := db.wrp.GetHandle(ptr_t(pApp)).(ScalarFunction)
191
+ fn(Context{db, ptr_t(pCtx)}, *args...)
192
+ }
193
+
194
+ func (e env) Xgo_step(pCtx, pAgg, pApp, nArg, pArg int32) {
195
+ db := e.DB.(*Conn)
196
+ args := callbackArgs(db, nArg, ptr_t(pArg))
197
+ defer returnArgs(args)
198
+ fn, _ := callbackAggregate(db, ptr_t(pAgg), ptr_t(pApp))
199
+ fn.Step(Context{db, ptr_t(pCtx)}, *args...)
200
+ }
201
+
202
+ func (e env) Xgo_value(pCtx, pAgg, pApp, final int32) {
203
+ db := e.DB.(*Conn)
204
+ fn, handle := callbackAggregate(db, ptr_t(pAgg), ptr_t(pApp))
205
+ fn.Value(Context{db, ptr_t(pCtx)})
206
+
207
+ // Cleanup.
208
+ if final != 0 {
209
+ var err error
210
+ if handle != 0 {
211
+ err = e.DelHandle(handle)
212
+ } else if c, ok := fn.(io.Closer); ok {
213
+ err = c.Close()
214
+ }
215
+ if err != nil {
216
+ Context{db, ptr_t(pCtx)}.ResultError(err)
217
+ return // notest
218
+ }
219
+ }
220
+ }
221
+
222
+ func (e env) Xgo_inverse(pCtx, pAgg, nArg, pArg int32) {
223
+ db := e.DB.(*Conn)
224
+ args := callbackArgs(db, nArg, ptr_t(pArg))
225
+ defer returnArgs(args)
226
+ fn, ok := db.wrp.GetHandle(ptr_t(pAgg)).(WindowFunction)
227
+ if !ok {
228
+ Context{db, ptr_t(pCtx)}.ResultError(
229
+ errutil.ErrorString("may not be used as a window function"))
230
+ return // notest
231
+ }
232
+ fn.Inverse(Context{db, ptr_t(pCtx)}, *args...)
233
+ }
234
+
235
+ func callbackAggregate(db *Conn, pAgg, pApp ptr_t) (AggregateFunction, ptr_t) {
236
+ if pApp == 0 {
237
+ handle := ptr_t(db.wrp.Read32(pAgg))
238
+ return db.wrp.GetHandle(handle).(AggregateFunction), handle
239
+ }
240
+
241
+ // We need to create the aggregate.
242
+ fn := db.wrp.GetHandle(pApp).(AggregateConstructor)()
243
+ if pAgg != 0 {
244
+ handle := db.wrp.AddHandle(fn)
245
+ db.wrp.Write32(pAgg, uint32(handle))
246
+ return fn, handle
247
+ }
248
+ return fn, 0
249
+ }
250
+
251
+ var (
252
+ valueArgsPool sync.Pool
253
+ valueArgsLen atomic.Int32
254
+ )
255
+
256
+ func callbackArgs(db *Conn, nArg int32, pArg ptr_t) *[]Value {
257
+ arg, ok := valueArgsPool.Get().(*[]Value)
258
+ if !ok || cap(*arg) < int(nArg) {
259
+ max := valueArgsLen.Or(nArg) | nArg
260
+ lst := make([]Value, max)
261
+ arg = &lst
262
+ }
263
+ lst := (*arg)[:nArg]
264
+ for i := range lst {
265
+ lst[i] = Value{
266
+ c: db,
267
+ handle: ptr_t(db.wrp.Read32(pArg + ptr_t(i)*ptrlen)),
268
+ }
269
+ }
270
+ *arg = lst
271
+ return arg
272
+ }
273
+
274
+ func returnArgs(p *[]Value) {
275
+ valueArgsPool.Put(p)
276
+ }
277
+
278
+ type aggregateFunc struct {
279
+ next func() (struct{}, bool)
280
+ stop func()
281
+ fn AggregateSeqFunction
282
+ ctx Context
283
+ arg []Value
284
+ step bool
285
+ }
286
+
287
+ func (a *aggregateFunc) Step(ctx Context, arg ...Value) {
288
+ a.step = true
289
+ a.ctx = ctx
290
+ a.arg = append(a.arg[:0], arg...)
291
+ if _, more := a.next(); !more {
292
+ a.stop()
293
+ }
294
+ }
295
+
296
+ func (a *aggregateFunc) Value(ctx Context) {
297
+ a.ctx = ctx
298
+ a.stop()
299
+ if !a.step {
300
+ a.fn(&a.ctx, noValuesSeq)
301
+ }
302
+ }
303
+
304
+ func (a *aggregateFunc) Close() error {
305
+ a.stop()
306
+ return nil
307
+ }
308
+
309
+ func noValuesSeq(func([]Value) bool) {}
@@ -0,0 +1,3 @@
1
+ module github.com/ncruces/go-sqlite3
2
+
3
+ go 1.26.0
@@ -0,0 +1,29 @@
1
+ package dotlk
2
+
3
+ import (
4
+ "errors"
5
+ "io/fs"
6
+ "os"
7
+ )
8
+
9
+ // LockShm creates a directory on disk to prevent SQLite
10
+ // from using this path for a shared memory file.
11
+ func LockShm(name string) error {
12
+ err := os.Mkdir(name, 0777)
13
+ if errors.Is(err, fs.ErrExist) {
14
+ s, err := os.Lstat(name)
15
+ if err == nil && s.IsDir() {
16
+ return nil
17
+ }
18
+ }
19
+ return err
20
+ }
21
+
22
+ // Unlock removes the lock or shared memory file.
23
+ func Unlock(name string) error {
24
+ err := os.Remove(name)
25
+ if errors.Is(err, fs.ErrNotExist) {
26
+ return nil
27
+ }
28
+ return err
29
+ }
@@ -0,0 +1,13 @@
1
+ //go:build !unix
2
+
3
+ package dotlk
4
+
5
+ import "os"
6
+
7
+ // TryLock returns nil if it acquired the lock,
8
+ // fs.ErrExist if another process has the lock.
9
+ func TryLock(name string) error {
10
+ f, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0666)
11
+ f.Close()
12
+ return err
13
+ }