mirror of
https://github.com/lancedb/lancedb.git
synced 2025-12-27 15:12:53 +00:00
Arrow-js uses brittle `instanceof` checks throughout the code base. These fail unless the library instance that produced the object matches exactly the same instance the vectordb is using. At a minimum, this means that a user using arrow version 15 (or any version that doesn't match exactly the version that vectordb is using) will get strange errors when they try and use vectordb. However, there are even cases where the versions can be perfectly identical, and the instanceof check still fails. One such example is when using `vite` (e.g. https://github.com/vitejs/vite/issues/3910) This PR solves the problem in a rather brute force, but workable, fashion. If we encounter a schema that does not pass the `instanceof` check then we will attempt to sanitize that schema by traversing the object and, if it has all the correct properties, constructing an appropriate `Schema` instance via deep cloning.
(New) LanceDB NodeJS SDK
It will replace the NodeJS SDK when it is ready.
Development
npm run build
npm t
Running lint / format
LanceDb uses eslint for linting. VSCode does not need any plugins to use eslint. However, it may need some additional configuration. Make sure that eslint.experimental.useFlatConfig is set to true. Also, if your vscode root folder is the repo root then you will need to set the eslint.workingDirectories to ["nodejs"]. To manually lint your code you can run:
npm run lint
LanceDb uses prettier for formatting. If you are using VSCode you will need to install the "Prettier - Code formatter" extension. You should then configure it to be the default formatter for typescript and you should enable format on save. To manually check your code's format you can run:
npm run chkformat
If you need to manually format your code you can run:
npx prettier --write .
Generating docs
npm run docs
cd ../docs
# Asssume the virtual environment was created
# python3 -m venv venv
# pip install -r requirements.txt
. ./venv/bin/activate
mkdocs build