From 43f6c604498af5b83af3905e6882e99d07b998f0 Mon Sep 17 00:00:00 2001 From: Jeff Raymakers Date: Sun, 30 Jun 2024 12:25:16 -0700 Subject: [PATCH] alternative build experiment --- alt/bindings/.gitignore | 2 + alt/bindings/binding.gyp | 58 + alt/bindings/package-lock.json | 1124 +++++++++++++++++++ alt/bindings/package.json | 16 + alt/bindings/package/index.d.ts | 2 + alt/bindings/package/index.js | 1 + alt/bindings/package/package.json | 5 + alt/bindings/scripts/fetch_libduckdb.py | 30 + alt/bindings/src/duckdb.d.ts | 407 +++++++ alt/bindings/src/duckdb_node_bindings.cpp | 209 ++++ alt/scripts/getDuckDBFunctionSignatures.mjs | 45 + alt/test/package-lock.json | 19 + alt/test/package.json | 6 + alt/test/test.mjs | 4 + 14 files changed, 1928 insertions(+) create mode 100644 alt/bindings/.gitignore create mode 100644 alt/bindings/binding.gyp create mode 100644 alt/bindings/package-lock.json create mode 100644 alt/bindings/package.json create mode 100644 alt/bindings/package/index.d.ts create mode 100644 alt/bindings/package/index.js create mode 100644 alt/bindings/package/package.json create mode 100644 alt/bindings/scripts/fetch_libduckdb.py create mode 100644 alt/bindings/src/duckdb.d.ts create mode 100644 alt/bindings/src/duckdb_node_bindings.cpp create mode 100644 alt/scripts/getDuckDBFunctionSignatures.mjs create mode 100644 alt/test/package-lock.json create mode 100644 alt/test/package.json create mode 100644 alt/test/test.mjs diff --git a/alt/bindings/.gitignore b/alt/bindings/.gitignore new file mode 100644 index 00000000..275d3070 --- /dev/null +++ b/alt/bindings/.gitignore @@ -0,0 +1,2 @@ +libduckdb +package/lib/* \ No newline at end of file diff --git a/alt/bindings/binding.gyp b/alt/bindings/binding.gyp new file mode 100644 index 00000000..4d1c3163 --- /dev/null +++ b/alt/bindings/binding.gyp @@ -0,0 +1,58 @@ +{ + 'targets': [ + { + 'target_name': 'fetch_libduckdb', + 'type': 'none', + 'actions': [ + { + 'action_name': 'run_fetch_libduckdb_script', + 'message': 'Running fetch libduckdb script', + 'inputs': [], + 'action': ['python3', '<(module_root_dir)/scripts/fetch_libduckdb.py', '<(OS)', '<(module_root_dir)/libduckdb'], + 'outputs': ['<(module_root_dir)/libduckdb/libduckdb.zip'], + }, + ], + }, + { + 'target_name': 'duckdb', + 'dependencies': [ + 'fetch_libduckdb', + '=12" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, + "node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.0.0.tgz", + "integrity": "sha512-ipO7rsHEBqa9STO5C5T10fj732ml+5kLN1cAG8/jdHd56ldQeGj3Q7+scUS+VHK/qy1zLEwC4wMK5+yM0btPvw==", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-gyp": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", + "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/alt/bindings/package.json b/alt/bindings/package.json new file mode 100644 index 00000000..20571c9d --- /dev/null +++ b/alt/bindings/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "scripts": { + "configure": "node-gyp configure", + "build": "node-gyp build", + "clean": "npm run clean:downloads && npm run clean:gyp && npm run clean:package", + "clean:downloads": "rimraf downloads", + "clean:gyp": "node-gyp clean", + "clean:package": "rimraf package/lib" + }, + "dependencies": { + "node-addon-api": "^8.0.0", + "node-gyp": "^10.1.0", + "rimraf": "^5.0.7" + } +} diff --git a/alt/bindings/package/index.d.ts b/alt/bindings/package/index.d.ts new file mode 100644 index 00000000..5f1e8096 --- /dev/null +++ b/alt/bindings/package/index.d.ts @@ -0,0 +1,2 @@ +export function hello(): string; +export function library_version(): string; \ No newline at end of file diff --git a/alt/bindings/package/index.js b/alt/bindings/package/index.js new file mode 100644 index 00000000..54d895e7 --- /dev/null +++ b/alt/bindings/package/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/duckdb.node') \ No newline at end of file diff --git a/alt/bindings/package/package.json b/alt/bindings/package/package.json new file mode 100644 index 00000000..96bd0245 --- /dev/null +++ b/alt/bindings/package/package.json @@ -0,0 +1,5 @@ +{ + "name": "duckdb", + "main": "./index.js", + "types": "./index.d.ts" +} \ No newline at end of file diff --git a/alt/bindings/scripts/fetch_libduckdb.py b/alt/bindings/scripts/fetch_libduckdb.py new file mode 100644 index 00000000..2291b378 --- /dev/null +++ b/alt/bindings/scripts/fetch_libduckdb.py @@ -0,0 +1,30 @@ +import os +import sys +import urllib.request +import zipfile + +libduckdb_zip_url_for_os = { + "linux": "https://github.com/duckdb/duckdb/releases/download/v1.0.0/libduckdb-linux-amd64.zip", # TODO: handle linux-aarch64 + "mac": "https://github.com/duckdb/duckdb/releases/download/v1.0.0/libduckdb-osx-universal.zip", + "win": "https://github.com/duckdb/duckdb/releases/download/v1.0.0/libduckdb-windows-amd64.zip", +} + +libduckdb_file_names_for_os = { + "linux": ["duckdb.h", "libduckdb.so"], + "mac": ["duckdb.h", "libduckdb.dylib"], + "win": ["duckdb.h", "libduckdb.lib", "libduckdb.dll"], +} + +os_name = sys.argv[1] +output_dir = sys.argv[2] + +libduckdb_zip_url = libduckdb_zip_url_for_os[os_name] +libduckdb_file_names = libduckdb_file_names_for_os[os_name] + +libduckdb_zip_path = os.path.join(output_dir, "libduckdb.zip") +urllib.request.urlretrieve(libduckdb_zip_url, libduckdb_zip_path) + +zip = zipfile.ZipFile(libduckdb_zip_path) + +for file_name in libduckdb_file_names: + zip.extract(file_name, output_dir) diff --git a/alt/bindings/src/duckdb.d.ts b/alt/bindings/src/duckdb.d.ts new file mode 100644 index 00000000..8853d1a2 --- /dev/null +++ b/alt/bindings/src/duckdb.d.ts @@ -0,0 +1,407 @@ +// Enums + +export enum Type { + INVALID = 0, + BOOLEAN = 1, + TINYINT = 2, + SMALLINT = 3, + INTEGER = 4, + BIGINT = 5, + UTINYINT = 6, + USMALLINT = 7, + UINTEGER = 8, + UBIGINT = 9, + FLOAT = 10, + DOUBLE = 11, + TIMESTAMP = 12, + DATE = 13, + TIME = 14, + INTERVAL = 15, + HUGEINT = 16, + UHUGEINT = 32, + VARCHAR = 17, + BLOB = 18, + DECIMAL = 19, + TIMESTAMP_S = 20, + TIMESTAMP_MS = 21, + TIMESTAMP_NS = 22, + ENUM = 23, + LIST = 24, + STRUCT = 25, + MAP = 26, + ARRAY = 33, + UUID = 27, + UNION = 28, + BIT = 29, + TIME_TZ = 30, + TIMESTAMP_TZ = 31, +} + +export enum ResultType { + INVALID = 0, + CHANGED_ROWS = 1, + NOTHING = 2, + QUERY_RESULT = 3, +} + +export enum StatementType { + INVALID = 0, + SELECT = 1, + INSERT = 2, + UPDATE = 3, + EXPLAIN = 4, + DELETE = 5, + PREPARE = 6, + CREATE = 7, + EXECUTE = 8, + ALTER = 9, + TRANSACTION = 10, + COPY = 11, + ANALYZE = 12, + VARIABLE_SET = 13, + CREATE_FUNC = 14, + DROP = 15, + EXPORT = 16, + PRAGMA = 17, + VACUUM = 18, + CALL = 19, + SET = 20, + LOAD = 21, + RELATION = 22, + EXTENSION = 23, + LOGICAL_PLAN = 24, + ATTACH = 25, + DETACH = 26, + MULTI = 27, +} + + +// Types (no explicit destroy) + +export interface Date_ { + /** + * Days are stored as days since 1970-01-01 + * + * Use the from_date/to_date functions to extract individual information + */ + days: number; +} +export interface DateParts { + year: number; + month: number; + day: number; +} + +export interface Time { + /** + * Time is stored as microseconds since 00:00:00 + * + * Use the from_time/to_time function to extract individual information + */ + micros: number; +} +export interface TimeParts { + hour: number; + min: number; + sec: number; + micros: number; +} + +//! TIME_TZ is stored as 40 bits for int64_t micros, and 24 bits for int32_t offset +// typedef struct { +// uint64_t bits; +// } duckdb_time_tz; +// typedef struct { +// duckdb_time_struct time; +// int32_t offset; +// } duckdb_time_tz_struct; +export interface TimeTZ { + /** + * TIME_TZ is stored as 40 bits for int64_t micros, and 24 bits for int32_t offset + */ + bits: number; +} +export interface TimeTZParts { + time: TimeParts; + offset: number; +} + + +// Types (explicit destroy) + +export class Config { +} + +export class Connection { +} + +export class Database { +} + +export class LogicalType { +} + +export class Result { +} + + +// Types (TypeScript only) + +export interface ConfigFlag { + name: string; + description: string; +} + +export interface QueryProgress { + percentage: number; + rows_processed: number; + total_rows_to_process: number; +} + + +// Functions + +// duckdb_state duckdb_open(const char *path, duckdb_database *out_database) +export function open(path: string): Database; + +// duckdb_state duckdb_open_ext(const char *path, duckdb_database *out_database, duckdb_config config, char **out_error) +export function open_ext(path: string, config: Config): Database; + +// void duckdb_close(duckdb_database *database) +export function close(database: Database): void; + +// duckdb_state duckdb_connect(duckdb_database database, duckdb_connection *out_connection) +export function connect(database: Database): Connection; + +// void duckdb_interrupt(duckdb_connection connection) +export function interrupt(connection: Connection): void; + +// duckdb_query_progress_type duckdb_query_progress(duckdb_connection connection) +export function query_progress(connection: Connection): QueryProgress; + +// void duckdb_disconnect(duckdb_connection *connection) +export function disconnect(connection: Connection): void; + +// const char *duckdb_library_version() +export function library_version(): string; + +// duckdb_state duckdb_create_config(duckdb_config *out_config) +export function create_config(): Config; + +// size_t duckdb_config_count() +export function config_count(): number; + +// duckdb_state duckdb_get_config_flag(size_t index, const char **out_name, const char **out_description) +export function get_config_flag(index: number): ConfigFlag; + +// duckdb_state duckdb_set_config(duckdb_config config, const char *name, const char *option) +export function set_config(config: Config, name: string, option: string): void; + +// void duckdb_destroy_config(duckdb_config *config) +export function destroy_config(config: Config): void; + +// duckdb_state duckdb_query(duckdb_connection connection, const char *query, duckdb_result *out_result) +export function query(connection: Connection, query: string): Result; + +// void duckdb_destroy_result(duckdb_result *result) +export function destroy_result(result: Result): void; + +// const char *duckdb_column_name(duckdb_result *result, idx_t col) +export function column_name(result: Result, col: number): string; + +// duckdb_type duckdb_column_type(duckdb_result *result, idx_t col) +export function column_type(result: Result, col: number): Type; + +// duckdb_statement_type duckdb_result_statement_type(duckdb_result result) +export function result_statement_type(result: Result): StatementType; + +// duckdb_logical_type duckdb_column_logical_type(duckdb_result *result, idx_t col) +export function column_logical_type(result: Result, col: number): LogicalType; + +// idx_t duckdb_column_count(duckdb_result *result) +export function column_count(result: Result): number; + +// idx_t duckdb_rows_changed(duckdb_result *result) +export function rows_changed(result: Result): number; + +// const char *duckdb_result_error(duckdb_result *result) +export function result_error(result: Result): string; + +// duckdb_result_type duckdb_result_return_type(duckdb_result result) +export function result_return_type(result: Result): ResultType; + +// void *duckdb_malloc(size_t size) + +// void duckdb_free(void *ptr) + +// idx_t duckdb_vector_size() +export function vector_size(): number; + +// bool duckdb_string_is_inlined(duckdb_string_t string) + +// duckdb_date_struct duckdb_from_date(duckdb_date date) +export function from_date(date: Date_): DateParts; + +// duckdb_date duckdb_to_date(duckdb_date_struct date) +export function to_date(parts: DateParts): Date_; + +// bool duckdb_is_finite_date(duckdb_date date) +export function is_finite_date(date: Date_): boolean; + +// duckdb_time_struct duckdb_from_time(duckdb_time time) +export function from_time(time: Time): TimeParts; + +// duckdb_time_tz duckdb_create_time_tz(int64_t micros, int32_t offset) +export function create_time_tz(micros: number, offset: number): TimeTZ; + +// duckdb_time_tz_struct duckdb_from_time_tz(duckdb_time_tz micros) +export function from_time_tz(time_tz: TimeTZ): TimeTZParts; + +// duckdb_time duckdb_to_time(duckdb_time_struct time) +export function to_time(parts: TimeParts): Time; + +// duckdb_timestamp_struct duckdb_from_timestamp(duckdb_timestamp ts) +// duckdb_timestamp duckdb_to_timestamp(duckdb_timestamp_struct ts) +// bool duckdb_is_finite_timestamp(duckdb_timestamp ts) +// double duckdb_hugeint_to_double(duckdb_hugeint val) +// duckdb_hugeint duckdb_double_to_hugeint(double val) +// double duckdb_uhugeint_to_double(duckdb_uhugeint val) +// duckdb_uhugeint duckdb_double_to_uhugeint(double val) +// duckdb_decimal duckdb_double_to_decimal(double val, uint8_t width, uint8_t scale) +// double duckdb_decimal_to_double(duckdb_decimal val) +// duckdb_state duckdb_prepare(duckdb_connection connection, const char *query, duckdb_prepared_statement *out_prepared_statement) +// void duckdb_destroy_prepare(duckdb_prepared_statement *prepared_statement) +// const char *duckdb_prepare_error(duckdb_prepared_statement prepared_statement) +// idx_t duckdb_nparams(duckdb_prepared_statement prepared_statement) +// const char *duckdb_parameter_name(duckdb_prepared_statement prepared_statement, idx_t index) +// duckdb_type duckdb_param_type(duckdb_prepared_statement prepared_statement, idx_t param_idx) +// duckdb_state duckdb_clear_bindings(duckdb_prepared_statement prepared_statement) +// duckdb_statement_type duckdb_prepared_statement_type(duckdb_prepared_statement statement) +// duckdb_state duckdb_bind_value(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_value val) +// duckdb_state duckdb_bind_parameter_index(duckdb_prepared_statement prepared_statement, idx_t *param_idx_out, const char *name) +// duckdb_state duckdb_bind_boolean(duckdb_prepared_statement prepared_statement, idx_t param_idx, bool val) +// duckdb_state duckdb_bind_int8(duckdb_prepared_statement prepared_statement, idx_t param_idx, int8_t val) +// duckdb_state duckdb_bind_int16(duckdb_prepared_statement prepared_statement, idx_t param_idx, int16_t val) +// duckdb_state duckdb_bind_int32(duckdb_prepared_statement prepared_statement, idx_t param_idx, int32_t val) +// duckdb_state duckdb_bind_int64(duckdb_prepared_statement prepared_statement, idx_t param_idx, int64_t val) +// duckdb_state duckdb_bind_hugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_hugeint val) +// duckdb_state duckdb_bind_uhugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_uhugeint val) +// duckdb_state duckdb_bind_decimal(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_decimal val) +// duckdb_state duckdb_bind_uint8(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint8_t val) +// duckdb_state duckdb_bind_uint16(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint16_t val) +// duckdb_state duckdb_bind_uint32(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint32_t val) +// duckdb_state duckdb_bind_uint64(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint64_t val) +// duckdb_state duckdb_bind_float(duckdb_prepared_statement prepared_statement, idx_t param_idx, float val) +// duckdb_state duckdb_bind_double(duckdb_prepared_statement prepared_statement, idx_t param_idx, double val) +// duckdb_state duckdb_bind_date(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_date val) +// duckdb_state duckdb_bind_time(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_time val) +// duckdb_state duckdb_bind_timestamp(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_timestamp val) +// duckdb_state duckdb_bind_interval(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_interval val) +// duckdb_state duckdb_bind_varchar(duckdb_prepared_statement prepared_statement, idx_t param_idx, const char *val) +// duckdb_state duckdb_bind_varchar_length(duckdb_prepared_statement prepared_statement, idx_t param_idx, const char *val, idx_t length) +// duckdb_state duckdb_bind_blob(duckdb_prepared_statement prepared_statement, idx_t param_idx, const void *data, idx_t length) +// duckdb_state duckdb_bind_null(duckdb_prepared_statement prepared_statement, idx_t param_idx) +// duckdb_state duckdb_execute_prepared(duckdb_prepared_statement prepared_statement, duckdb_result *out_result) +// idx_t duckdb_extract_statements(duckdb_connection connection, const char *query, duckdb_extracted_statements *out_extracted_statements) +// duckdb_state duckdb_prepare_extracted_statement(duckdb_connection connection, duckdb_extracted_statements extracted_statements, idx_t index, duckdb_prepared_statement *out_prepared_statement) +// const char *duckdb_extract_statements_error(duckdb_extracted_statements extracted_statements) +// void duckdb_destroy_extracted(duckdb_extracted_statements *extracted_statements) +// duckdb_state duckdb_pending_prepared(duckdb_prepared_statement prepared_statement, duckdb_pending_result *out_result) +// void duckdb_destroy_pending(duckdb_pending_result *pending_result) +// const char *duckdb_pending_error(duckdb_pending_result pending_result) +// duckdb_pending_state duckdb_pending_execute_task(duckdb_pending_result pending_result) +// duckdb_pending_state duckdb_pending_execute_check_state(duckdb_pending_result pending_result) +// duckdb_state duckdb_execute_pending(duckdb_pending_result pending_result, duckdb_result *out_result) +// bool duckdb_pending_execution_is_finished(duckdb_pending_state pending_state) +// void duckdb_destroy_value(duckdb_value *value) +// duckdb_value duckdb_create_varchar(const char *text) +// duckdb_value duckdb_create_varchar_length(const char *text, idx_t length) +// duckdb_value duckdb_create_int64(int64_t val) +// duckdb_value duckdb_create_struct_value(duckdb_logical_type type, duckdb_value *values) +// duckdb_value duckdb_create_list_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count) +// duckdb_value duckdb_create_array_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count) +// char *duckdb_get_varchar(duckdb_value value) +// int64_t duckdb_get_int64(duckdb_value value) +// duckdb_logical_type duckdb_create_logical_type(duckdb_type type) +// char *duckdb_logical_type_get_alias(duckdb_logical_type type) +// duckdb_logical_type duckdb_create_list_type(duckdb_logical_type type) +// duckdb_logical_type duckdb_create_array_type(duckdb_logical_type type, idx_t array_size) +// duckdb_logical_type duckdb_create_map_type(duckdb_logical_type key_type, duckdb_logical_type value_type) +// duckdb_logical_type duckdb_create_union_type(duckdb_logical_type *member_types, const char **member_names, idx_t member_count) +// duckdb_logical_type duckdb_create_struct_type(duckdb_logical_type *member_types, const char **member_names, idx_t member_count) +// duckdb_logical_type duckdb_create_enum_type(const char **member_names, idx_t member_count) +// duckdb_logical_type duckdb_create_decimal_type(uint8_t width, uint8_t scale) +// duckdb_type duckdb_get_type_id(duckdb_logical_type type) +// uint8_t duckdb_decimal_width(duckdb_logical_type type) +// uint8_t duckdb_decimal_scale(duckdb_logical_type type) +// duckdb_type duckdb_decimal_internal_type(duckdb_logical_type type) +// duckdb_type duckdb_enum_internal_type(duckdb_logical_type type) +// uint32_t duckdb_enum_dictionary_size(duckdb_logical_type type) +// char *duckdb_enum_dictionary_value(duckdb_logical_type type, idx_t index) +// duckdb_logical_type duckdb_list_type_child_type(duckdb_logical_type type) +// duckdb_logical_type duckdb_array_type_child_type(duckdb_logical_type type) +// idx_t duckdb_array_type_array_size(duckdb_logical_type type) +// duckdb_logical_type duckdb_map_type_key_type(duckdb_logical_type type) +// duckdb_logical_type duckdb_map_type_value_type(duckdb_logical_type type) +// idx_t duckdb_struct_type_child_count(duckdb_logical_type type) +// char *duckdb_struct_type_child_name(duckdb_logical_type type, idx_t index) +// duckdb_logical_type duckdb_struct_type_child_type(duckdb_logical_type type, idx_t index) +// idx_t duckdb_union_type_member_count(duckdb_logical_type type) +// char *duckdb_union_type_member_name(duckdb_logical_type type, idx_t index) +// duckdb_logical_type duckdb_union_type_member_type(duckdb_logical_type type, idx_t index) +// void duckdb_destroy_logical_type(duckdb_logical_type *type) +// duckdb_data_chunk duckdb_create_data_chunk(duckdb_logical_type *types, idx_t column_count) +// void duckdb_destroy_data_chunk(duckdb_data_chunk *chunk) +// void duckdb_data_chunk_reset(duckdb_data_chunk chunk) +// idx_t duckdb_data_chunk_get_column_count(duckdb_data_chunk chunk) +// duckdb_vector duckdb_data_chunk_get_vector(duckdb_data_chunk chunk, idx_t col_idx) +// idx_t duckdb_data_chunk_get_size(duckdb_data_chunk chunk) +// void duckdb_data_chunk_set_size(duckdb_data_chunk chunk, idx_t size) +// duckdb_logical_type duckdb_vector_get_column_type(duckdb_vector vector) +// void *duckdb_vector_get_data(duckdb_vector vector) +// uint64_t *duckdb_vector_get_validity(duckdb_vector vector) +// void duckdb_vector_ensure_validity_writable(duckdb_vector vector) +// void duckdb_vector_assign_string_element(duckdb_vector vector, idx_t index, const char *str) +// void duckdb_vector_assign_string_element_len(duckdb_vector vector, idx_t index, const char *str, idx_t str_len) +// duckdb_vector duckdb_list_vector_get_child(duckdb_vector vector) +// idx_t duckdb_list_vector_get_size(duckdb_vector vector) +// duckdb_state duckdb_list_vector_set_size(duckdb_vector vector, idx_t size) +// duckdb_state duckdb_list_vector_reserve(duckdb_vector vector, idx_t required_capacity) +// duckdb_vector duckdb_struct_vector_get_child(duckdb_vector vector, idx_t index) +// duckdb_vector duckdb_array_vector_get_child(duckdb_vector vector) +// bool duckdb_validity_row_is_valid(uint64_t *validity, idx_t row) +// void duckdb_validity_set_row_validity(uint64_t *validity, idx_t row, bool valid) +// void duckdb_validity_set_row_invalid(uint64_t *validity, idx_t row) +// void duckdb_validity_set_row_valid(uint64_t *validity, idx_t row) +// duckdb_state duckdb_appender_create(duckdb_connection connection, const char *schema, const char *table, duckdb_appender *out_appender) +// idx_t duckdb_appender_column_count(duckdb_appender appender) +// duckdb_logical_type duckdb_appender_column_type(duckdb_appender appender, idx_t col_idx) +// const char *duckdb_appender_error(duckdb_appender appender) +// duckdb_state duckdb_appender_flush(duckdb_appender appender) +// duckdb_state duckdb_appender_close(duckdb_appender appender) +// duckdb_state duckdb_appender_destroy(duckdb_appender *appender) +// duckdb_state duckdb_appender_begin_row(duckdb_appender appender) +// duckdb_state duckdb_appender_end_row(duckdb_appender appender) +// duckdb_state duckdb_append_bool(duckdb_appender appender, bool value) +// duckdb_state duckdb_append_int8(duckdb_appender appender, int8_t value) +// duckdb_state duckdb_append_int16(duckdb_appender appender, int16_t value) +// duckdb_state duckdb_append_int32(duckdb_appender appender, int32_t value) +// duckdb_state duckdb_append_int64(duckdb_appender appender, int64_t value) +// duckdb_state duckdb_append_hugeint(duckdb_appender appender, duckdb_hugeint value) +// duckdb_state duckdb_append_uint8(duckdb_appender appender, uint8_t value) +// duckdb_state duckdb_append_uint16(duckdb_appender appender, uint16_t value) +// duckdb_state duckdb_append_uint32(duckdb_appender appender, uint32_t value) +// duckdb_state duckdb_append_uint64(duckdb_appender appender, uint64_t value) +// duckdb_state duckdb_append_uhugeint(duckdb_appender appender, duckdb_uhugeint value) +// duckdb_state duckdb_append_float(duckdb_appender appender, float value) +// duckdb_state duckdb_append_double(duckdb_appender appender, double value) +// duckdb_state duckdb_append_date(duckdb_appender appender, duckdb_date value) +// duckdb_state duckdb_append_time(duckdb_appender appender, duckdb_time value) +// duckdb_state duckdb_append_timestamp(duckdb_appender appender, duckdb_timestamp value) +// duckdb_state duckdb_append_interval(duckdb_appender appender, duckdb_interval value) +// duckdb_state duckdb_append_varchar(duckdb_appender appender, const char *val) +// duckdb_state duckdb_append_varchar_length(duckdb_appender appender, const char *val, idx_t length) +// duckdb_state duckdb_append_blob(duckdb_appender appender, const void *data, idx_t length) +// duckdb_state duckdb_append_null(duckdb_appender appender) +// duckdb_state duckdb_append_data_chunk(duckdb_appender appender, duckdb_data_chunk chunk) +// duckdb_data_chunk duckdb_fetch_chunk(duckdb_result result) diff --git a/alt/bindings/src/duckdb_node_bindings.cpp b/alt/bindings/src/duckdb_node_bindings.cpp new file mode 100644 index 00000000..2c83ace5 --- /dev/null +++ b/alt/bindings/src/duckdb_node_bindings.cpp @@ -0,0 +1,209 @@ +#define NODE_ADDON_API_DISABLE_DEPRECATED +#include "napi.h" + +#include "duckdb.h" + +class DuckDBNodeAddon : public Napi::Addon { + +public: + + DuckDBNodeAddon(Napi::Env env, Napi::Object exports) { + DefineAddon(exports, { + InstanceMethod("hello", &DuckDBNodeAddon::hello), + InstanceMethod("library_version", &DuckDBNodeAddon::library_version) + }); + } + +private: + + Napi::Value hello(const Napi::CallbackInfo& info) { + return Napi::String::New(info.Env(), "Greetings from DuckDBNodeAddon!"); + } + + Napi::Value library_version(const Napi::CallbackInfo& info) { + return Napi::String::New(info.Env(), duckdb_library_version()); + } + +}; + +NODE_API_ADDON(DuckDBNodeAddon) + +// duckdb_state duckdb_open(const char *path, duckdb_database *out_database) +// duckdb_state duckdb_open_ext(const char *path, duckdb_database *out_database, duckdb_config config, char **out_error) +// void duckdb_close(duckdb_database *database) +// duckdb_state duckdb_connect(duckdb_database database, duckdb_connection *out_connection) +// void duckdb_interrupt(duckdb_connection connection) +// duckdb_query_progress_type duckdb_query_progress(duckdb_connection connection) +// void duckdb_disconnect(duckdb_connection *connection) +// const char *duckdb_library_version() +// duckdb_state duckdb_create_config(duckdb_config *out_config) +// size_t duckdb_config_count() +// duckdb_state duckdb_get_config_flag(size_t index, const char **out_name, const char **out_description) +// duckdb_state duckdb_set_config(duckdb_config config, const char *name, const char *option) +// void duckdb_destroy_config(duckdb_config *config) +// duckdb_state duckdb_query(duckdb_connection connection, const char *query, duckdb_result *out_result) +// void duckdb_destroy_result(duckdb_result *result) +// const char *duckdb_column_name(duckdb_result *result, idx_t col) +// duckdb_type duckdb_column_type(duckdb_result *result, idx_t col) +// duckdb_statement_type duckdb_result_statement_type(duckdb_result result) +// duckdb_logical_type duckdb_column_logical_type(duckdb_result *result, idx_t col) +// idx_t duckdb_column_count(duckdb_result *result) +// idx_t duckdb_rows_changed(duckdb_result *result) +// const char *duckdb_result_error(duckdb_result *result) +// duckdb_result_type duckdb_result_return_type(duckdb_result result) +// void *duckdb_malloc(size_t size) +// void duckdb_free(void *ptr) +// idx_t duckdb_vector_size() +// bool duckdb_string_is_inlined(duckdb_string_t string) +// duckdb_date_struct duckdb_from_date(duckdb_date date) +// duckdb_date duckdb_to_date(duckdb_date_struct date) +// bool duckdb_is_finite_date(duckdb_date date) +// duckdb_time_struct duckdb_from_time(duckdb_time time) +// duckdb_time_tz duckdb_create_time_tz(int64_t micros, int32_t offset) +// duckdb_time_tz_struct duckdb_from_time_tz(duckdb_time_tz micros) +// duckdb_time duckdb_to_time(duckdb_time_struct time) +// duckdb_timestamp_struct duckdb_from_timestamp(duckdb_timestamp ts) +// duckdb_timestamp duckdb_to_timestamp(duckdb_timestamp_struct ts) +// bool duckdb_is_finite_timestamp(duckdb_timestamp ts) +// double duckdb_hugeint_to_double(duckdb_hugeint val) +// duckdb_hugeint duckdb_double_to_hugeint(double val) +// double duckdb_uhugeint_to_double(duckdb_uhugeint val) +// duckdb_uhugeint duckdb_double_to_uhugeint(double val) +// duckdb_decimal duckdb_double_to_decimal(double val, uint8_t width, uint8_t scale) +// double duckdb_decimal_to_double(duckdb_decimal val) +// duckdb_state duckdb_prepare(duckdb_connection connection, const char *query, duckdb_prepared_statement *out_prepared_statement) +// void duckdb_destroy_prepare(duckdb_prepared_statement *prepared_statement) +// const char *duckdb_prepare_error(duckdb_prepared_statement prepared_statement) +// idx_t duckdb_nparams(duckdb_prepared_statement prepared_statement) +// const char *duckdb_parameter_name(duckdb_prepared_statement prepared_statement, idx_t index) +// duckdb_type duckdb_param_type(duckdb_prepared_statement prepared_statement, idx_t param_idx) +// duckdb_state duckdb_clear_bindings(duckdb_prepared_statement prepared_statement) +// duckdb_statement_type duckdb_prepared_statement_type(duckdb_prepared_statement statement) +// duckdb_state duckdb_bind_value(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_value val) +// duckdb_state duckdb_bind_parameter_index(duckdb_prepared_statement prepared_statement, idx_t *param_idx_out, const char *name) +// duckdb_state duckdb_bind_boolean(duckdb_prepared_statement prepared_statement, idx_t param_idx, bool val) +// duckdb_state duckdb_bind_int8(duckdb_prepared_statement prepared_statement, idx_t param_idx, int8_t val) +// duckdb_state duckdb_bind_int16(duckdb_prepared_statement prepared_statement, idx_t param_idx, int16_t val) +// duckdb_state duckdb_bind_int32(duckdb_prepared_statement prepared_statement, idx_t param_idx, int32_t val) +// duckdb_state duckdb_bind_int64(duckdb_prepared_statement prepared_statement, idx_t param_idx, int64_t val) +// duckdb_state duckdb_bind_hugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_hugeint val) +// duckdb_state duckdb_bind_uhugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_uhugeint val) +// duckdb_state duckdb_bind_decimal(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_decimal val) +// duckdb_state duckdb_bind_uint8(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint8_t val) +// duckdb_state duckdb_bind_uint16(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint16_t val) +// duckdb_state duckdb_bind_uint32(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint32_t val) +// duckdb_state duckdb_bind_uint64(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint64_t val) +// duckdb_state duckdb_bind_float(duckdb_prepared_statement prepared_statement, idx_t param_idx, float val) +// duckdb_state duckdb_bind_double(duckdb_prepared_statement prepared_statement, idx_t param_idx, double val) +// duckdb_state duckdb_bind_date(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_date val) +// duckdb_state duckdb_bind_time(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_time val) +// duckdb_state duckdb_bind_timestamp(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_timestamp val) +// duckdb_state duckdb_bind_interval(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_interval val) +// duckdb_state duckdb_bind_varchar(duckdb_prepared_statement prepared_statement, idx_t param_idx, const char *val) +// duckdb_state duckdb_bind_varchar_length(duckdb_prepared_statement prepared_statement, idx_t param_idx, const char *val, idx_t length) +// duckdb_state duckdb_bind_blob(duckdb_prepared_statement prepared_statement, idx_t param_idx, const void *data, idx_t length) +// duckdb_state duckdb_bind_null(duckdb_prepared_statement prepared_statement, idx_t param_idx) +// duckdb_state duckdb_execute_prepared(duckdb_prepared_statement prepared_statement, duckdb_result *out_result) +// idx_t duckdb_extract_statements(duckdb_connection connection, const char *query, duckdb_extracted_statements *out_extracted_statements) +// duckdb_state duckdb_prepare_extracted_statement(duckdb_connection connection, duckdb_extracted_statements extracted_statements, idx_t index, duckdb_prepared_statement *out_prepared_statement) +// const char *duckdb_extract_statements_error(duckdb_extracted_statements extracted_statements) +// void duckdb_destroy_extracted(duckdb_extracted_statements *extracted_statements) +// duckdb_state duckdb_pending_prepared(duckdb_prepared_statement prepared_statement, duckdb_pending_result *out_result) +// void duckdb_destroy_pending(duckdb_pending_result *pending_result) +// const char *duckdb_pending_error(duckdb_pending_result pending_result) +// duckdb_pending_state duckdb_pending_execute_task(duckdb_pending_result pending_result) +// duckdb_pending_state duckdb_pending_execute_check_state(duckdb_pending_result pending_result) +// duckdb_state duckdb_execute_pending(duckdb_pending_result pending_result, duckdb_result *out_result) +// bool duckdb_pending_execution_is_finished(duckdb_pending_state pending_state) +// void duckdb_destroy_value(duckdb_value *value) +// duckdb_value duckdb_create_varchar(const char *text) +// duckdb_value duckdb_create_varchar_length(const char *text, idx_t length) +// duckdb_value duckdb_create_int64(int64_t val) +// duckdb_value duckdb_create_struct_value(duckdb_logical_type type, duckdb_value *values) +// duckdb_value duckdb_create_list_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count) +// duckdb_value duckdb_create_array_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count) +// char *duckdb_get_varchar(duckdb_value value) +// int64_t duckdb_get_int64(duckdb_value value) +// duckdb_logical_type duckdb_create_logical_type(duckdb_type type) +// char *duckdb_logical_type_get_alias(duckdb_logical_type type) +// duckdb_logical_type duckdb_create_list_type(duckdb_logical_type type) +// duckdb_logical_type duckdb_create_array_type(duckdb_logical_type type, idx_t array_size) +// duckdb_logical_type duckdb_create_map_type(duckdb_logical_type key_type, duckdb_logical_type value_type) +// duckdb_logical_type duckdb_create_union_type(duckdb_logical_type *member_types, const char **member_names, idx_t member_count) +// duckdb_logical_type duckdb_create_struct_type(duckdb_logical_type *member_types, const char **member_names, idx_t member_count) +// duckdb_logical_type duckdb_create_enum_type(const char **member_names, idx_t member_count) +// duckdb_logical_type duckdb_create_decimal_type(uint8_t width, uint8_t scale) +// duckdb_type duckdb_get_type_id(duckdb_logical_type type) +// uint8_t duckdb_decimal_width(duckdb_logical_type type) +// uint8_t duckdb_decimal_scale(duckdb_logical_type type) +// duckdb_type duckdb_decimal_internal_type(duckdb_logical_type type) +// duckdb_type duckdb_enum_internal_type(duckdb_logical_type type) +// uint32_t duckdb_enum_dictionary_size(duckdb_logical_type type) +// char *duckdb_enum_dictionary_value(duckdb_logical_type type, idx_t index) +// duckdb_logical_type duckdb_list_type_child_type(duckdb_logical_type type) +// duckdb_logical_type duckdb_array_type_child_type(duckdb_logical_type type) +// idx_t duckdb_array_type_array_size(duckdb_logical_type type) +// duckdb_logical_type duckdb_map_type_key_type(duckdb_logical_type type) +// duckdb_logical_type duckdb_map_type_value_type(duckdb_logical_type type) +// idx_t duckdb_struct_type_child_count(duckdb_logical_type type) +// char *duckdb_struct_type_child_name(duckdb_logical_type type, idx_t index) +// duckdb_logical_type duckdb_struct_type_child_type(duckdb_logical_type type, idx_t index) +// idx_t duckdb_union_type_member_count(duckdb_logical_type type) +// char *duckdb_union_type_member_name(duckdb_logical_type type, idx_t index) +// duckdb_logical_type duckdb_union_type_member_type(duckdb_logical_type type, idx_t index) +// void duckdb_destroy_logical_type(duckdb_logical_type *type) +// duckdb_data_chunk duckdb_create_data_chunk(duckdb_logical_type *types, idx_t column_count) +// void duckdb_destroy_data_chunk(duckdb_data_chunk *chunk) +// void duckdb_data_chunk_reset(duckdb_data_chunk chunk) +// idx_t duckdb_data_chunk_get_column_count(duckdb_data_chunk chunk) +// duckdb_vector duckdb_data_chunk_get_vector(duckdb_data_chunk chunk, idx_t col_idx) +// idx_t duckdb_data_chunk_get_size(duckdb_data_chunk chunk) +// void duckdb_data_chunk_set_size(duckdb_data_chunk chunk, idx_t size) +// duckdb_logical_type duckdb_vector_get_column_type(duckdb_vector vector) +// void *duckdb_vector_get_data(duckdb_vector vector) +// uint64_t *duckdb_vector_get_validity(duckdb_vector vector) +// void duckdb_vector_ensure_validity_writable(duckdb_vector vector) +// void duckdb_vector_assign_string_element(duckdb_vector vector, idx_t index, const char *str) +// void duckdb_vector_assign_string_element_len(duckdb_vector vector, idx_t index, const char *str, idx_t str_len) +// duckdb_vector duckdb_list_vector_get_child(duckdb_vector vector) +// idx_t duckdb_list_vector_get_size(duckdb_vector vector) +// duckdb_state duckdb_list_vector_set_size(duckdb_vector vector, idx_t size) +// duckdb_state duckdb_list_vector_reserve(duckdb_vector vector, idx_t required_capacity) +// duckdb_vector duckdb_struct_vector_get_child(duckdb_vector vector, idx_t index) +// duckdb_vector duckdb_array_vector_get_child(duckdb_vector vector) +// bool duckdb_validity_row_is_valid(uint64_t *validity, idx_t row) +// void duckdb_validity_set_row_validity(uint64_t *validity, idx_t row, bool valid) +// void duckdb_validity_set_row_invalid(uint64_t *validity, idx_t row) +// void duckdb_validity_set_row_valid(uint64_t *validity, idx_t row) +// duckdb_state duckdb_appender_create(duckdb_connection connection, const char *schema, const char *table, duckdb_appender *out_appender) +// idx_t duckdb_appender_column_count(duckdb_appender appender) +// duckdb_logical_type duckdb_appender_column_type(duckdb_appender appender, idx_t col_idx) +// const char *duckdb_appender_error(duckdb_appender appender) +// duckdb_state duckdb_appender_flush(duckdb_appender appender) +// duckdb_state duckdb_appender_close(duckdb_appender appender) +// duckdb_state duckdb_appender_destroy(duckdb_appender *appender) +// duckdb_state duckdb_appender_begin_row(duckdb_appender appender) +// duckdb_state duckdb_appender_end_row(duckdb_appender appender) +// duckdb_state duckdb_append_bool(duckdb_appender appender, bool value) +// duckdb_state duckdb_append_int8(duckdb_appender appender, int8_t value) +// duckdb_state duckdb_append_int16(duckdb_appender appender, int16_t value) +// duckdb_state duckdb_append_int32(duckdb_appender appender, int32_t value) +// duckdb_state duckdb_append_int64(duckdb_appender appender, int64_t value) +// duckdb_state duckdb_append_hugeint(duckdb_appender appender, duckdb_hugeint value) +// duckdb_state duckdb_append_uint8(duckdb_appender appender, uint8_t value) +// duckdb_state duckdb_append_uint16(duckdb_appender appender, uint16_t value) +// duckdb_state duckdb_append_uint32(duckdb_appender appender, uint32_t value) +// duckdb_state duckdb_append_uint64(duckdb_appender appender, uint64_t value) +// duckdb_state duckdb_append_uhugeint(duckdb_appender appender, duckdb_uhugeint value) +// duckdb_state duckdb_append_float(duckdb_appender appender, float value) +// duckdb_state duckdb_append_double(duckdb_appender appender, double value) +// duckdb_state duckdb_append_date(duckdb_appender appender, duckdb_date value) +// duckdb_state duckdb_append_time(duckdb_appender appender, duckdb_time value) +// duckdb_state duckdb_append_timestamp(duckdb_appender appender, duckdb_timestamp value) +// duckdb_state duckdb_append_interval(duckdb_appender appender, duckdb_interval value) +// duckdb_state duckdb_append_varchar(duckdb_appender appender, const char *val) +// duckdb_state duckdb_append_varchar_length(duckdb_appender appender, const char *val, idx_t length) +// duckdb_state duckdb_append_blob(duckdb_appender appender, const void *data, idx_t length) +// duckdb_state duckdb_append_null(duckdb_appender appender) +// duckdb_state duckdb_append_data_chunk(duckdb_appender appender, duckdb_data_chunk chunk) +// duckdb_data_chunk duckdb_fetch_chunk(duckdb_result result) diff --git a/alt/scripts/getDuckDBFunctionSignatures.mjs b/alt/scripts/getDuckDBFunctionSignatures.mjs new file mode 100644 index 00000000..cabbe6fa --- /dev/null +++ b/alt/scripts/getDuckDBFunctionSignatures.mjs @@ -0,0 +1,45 @@ +import fs from 'fs'; + +function getDuckDBHeaderFilePathFromArgs(argv) { + const duckdbHeaderFilePath = process.argv[2]; + if (!duckdbHeaderFilePath) { + throw new Error(`First argument should be path to duckdb.h file.`); + } + return duckdbHeaderFilePath; +} + +function getDuckDBFunctionSignatures(duckdbHeaderFilePath) { + const sigs = []; + const duckdbHeaderContents = fs.readFileSync(duckdbHeaderFilePath, { encoding: 'utf-8' }); + const sigRegex = /^DUCKDB_API (?([^;]|[\r\n])*);$|^#ifndef (?DUCKDB_API_NO_DEPRECATED|DUCKDB_NO_EXTENSION_FUNCTIONS)$|^#endif$/gm; + var skip = false; + var match; + while (match = sigRegex.exec(duckdbHeaderContents)) { + if (match.groups.sig) { + if (skip) { + // console.log(`SKIPPING ${match.groups.sig}`); + continue; + } + // console.log(match.groups.sig); + sigs.push(match.groups.sig.replace(/\r\n/gm, ' ').replace(/\n/gm, ' ').replace(/ +/gm, ' ')); + } else if (match.groups.startif) { + // console.log(match.groups.startif); + skip = true; + } else { + // console.log(match[0]); + skip = false; + } + } + return sigs; +} + +try { + const sigs = getDuckDBFunctionSignatures(getDuckDBHeaderFilePathFromArgs(process.argv)); + console.log(sigs.map((sig) => `// ${sig}`).join('\n')); +} catch (e) { + console.error(e); +} + +// Usage: +// node getDuckDBFunctionSignatures.mjs ../../src/duckdb.h > duckdb.d.ts +// node getDuckDBFunctionSignatures.mjs ../../src/duckdb.h > duckdb_node_bindings.cpp diff --git a/alt/test/package-lock.json b/alt/test/package-lock.json new file mode 100644 index 00000000..95e98351 --- /dev/null +++ b/alt/test/package-lock.json @@ -0,0 +1,19 @@ +{ + "name": "test", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "duckdb": "../bindings/package" + } + }, + "../bindings/package": { + "name": "duckdb" + }, + "node_modules/duckdb": { + "resolved": "../bindings/package", + "link": true + } + } +} diff --git a/alt/test/package.json b/alt/test/package.json new file mode 100644 index 00000000..0b51df9a --- /dev/null +++ b/alt/test/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "dependencies": { + "duckdb": "../bindings/package" + } +} \ No newline at end of file diff --git a/alt/test/test.mjs b/alt/test/test.mjs new file mode 100644 index 00000000..af63c3c1 --- /dev/null +++ b/alt/test/test.mjs @@ -0,0 +1,4 @@ +import duckdb from 'duckdb'; + +console.log(duckdb.hello()); +console.log(duckdb.library_version()); \ No newline at end of file