cds-dbs
cds-dbs copied to clipboard
feat: Add `sql.js` fallback for `sqlite` in `wasm`
This PR adds support for another SQLite
driver sql.js
is a browser orientated driver which compiles SQLite
to wasm
.
Enabling the possibility to run cds with @cap-js/sqlite
in more environments.
For example better-sqlite3
cannot be loaded into the default npm
promoted online environment runkit
:
https://runkit.com/bobdenos/cds-test
Error: Could not locate the bindings file. Tried:
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/build/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/build/Debug/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/build/Release/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/out/Debug/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/Debug/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/out/Release/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/Release/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/build/default/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/compiled/18.11.0/linux/x64/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/addon-build/release/install-root/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/addon-build/debug/install-root/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/addon-build/default/install-root/better_sqlite3.node
→ /app/available_modules/1713909839000/@cap-js/sqlite/node_modules/better-sqlite3/lib/binding/node-v108-linux-x64/better_sqlite3.node
There are some limitations with sql.js
when comparing to better-sqlite3
. Which is mostly that it uses more memory and is around 50% slower for running the @cap-js/sqlite
tests. Where better-sqlite3
takes ~10
seconds to run all tests. It takes sql.js
~14
seconds, but all current tests are green. Which should be good enough for experimentation scenarios.