[bun:sqlite] Add sqlite-type symbol for Database #22109
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Related: nodejs/node@d1eabcb
Related: nodejs/node#59405
Related: better-auth/better-auth#3869
Nowadays, there are tons of database packages, like sqlite3, sqlite, better-sqlite, bun:sqlite... Checking the difference from them is pretty hard.
instanceof is not good, since the developer will still need to import the module, which is costly.
I think we should provide a symbol to distinguish different SQLite classes, at least nodejs could make the first step
This symbol could help with lots of duplicate properties checking, like https://github.com/kysely-org/kysely, https://github.com/knex/knex
It helps the library author to write an adapter for a different SQLite library. Right now, the library is checking the prototype method to determine whether it's node:sqlite, bun:sqlite, or better-sqlite... It was a lot of performance, and it's not stable as the API could change
https://github.com/better-auth/better-auth/blob/375e9f3ced6f3842c133f4cae689cb2a604ba94a/packages/better-auth/src/adapters/kysely-adapter/dialect.ts#L53-L109
I hope there's an easy way. like a symbol tag, to determine the user's land SQLite lib
How did you verify your code works?
Adding tests