diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml
index a33bd5a7..a0d5af2c 100644
--- a/.github/workflows/nodejs.yml
+++ b/.github/workflows/nodejs.yml
@@ -116,7 +116,7 @@ jobs:
set -e
npm ci
npm run docs
- if ! git diff --exit-code -- . ':(exclude)Cargo.lock'; then
+ if ! git diff --exit-code -- ../ ':(exclude)Cargo.lock'; then
echo "Docs need to be updated"
echo "Run 'npm run docs', fix any warnings, and commit the changes."
exit 1
diff --git a/docs/src/js/classes/Connection.md b/docs/src/js/classes/Connection.md
index decaacf0..a99a68e0 100644
--- a/docs/src/js/classes/Connection.md
+++ b/docs/src/js/classes/Connection.md
@@ -25,6 +25,51 @@ the underlying connection has been closed.
## Methods
+### cloneTable()
+
+```ts
+abstract cloneTable(
+ targetTableName,
+ sourceUri,
+ options?): Promise
+```
+
+Clone a table from a source table.
+
+A shallow clone creates a new table that shares the underlying data files
+with the source table but has its own independent manifest. This allows
+both the source and cloned tables to evolve independently while initially
+sharing the same data, deletion, and index files.
+
+#### Parameters
+
+* **targetTableName**: `string`
+ The name of the target table to create.
+
+* **sourceUri**: `string`
+ The URI of the source table to clone from.
+
+* **options?**
+ Clone options.
+
+* **options.isShallow?**: `boolean`
+ Whether to perform a shallow clone (defaults to true).
+
+* **options.sourceTag?**: `string`
+ The tag of the source table to clone.
+
+* **options.sourceVersion?**: `number`
+ The version of the source table to clone.
+
+* **options.targetNamespace?**: `string`[]
+ The namespace for the target table (defaults to root namespace).
+
+#### Returns
+
+`Promise`<[`Table`](Table.md)>
+
+***
+
### close()
```ts
diff --git a/docs/src/js/functions/makeArrowTable.md b/docs/src/js/functions/makeArrowTable.md
index 83389550..949f1cef 100644
--- a/docs/src/js/functions/makeArrowTable.md
+++ b/docs/src/js/functions/makeArrowTable.md
@@ -13,7 +13,7 @@ function makeArrowTable(
metadata?): ArrowTable
```
-An enhanced version of the makeTable function from Apache Arrow
+An enhanced version of the apache-arrow makeTable function from Apache Arrow
that supports nested fields and embeddings columns.
(typically you do not need to call this function. It will be called automatically
diff --git a/docs/src/js/globals.md b/docs/src/js/globals.md
index a8e6ced5..3f38cb4c 100644
--- a/docs/src/js/globals.md
+++ b/docs/src/js/globals.md
@@ -78,6 +78,7 @@
- [TableNamesOptions](interfaces/TableNamesOptions.md)
- [TableStatistics](interfaces/TableStatistics.md)
- [TimeoutConfig](interfaces/TimeoutConfig.md)
+- [TlsConfig](interfaces/TlsConfig.md)
- [TokenResponse](interfaces/TokenResponse.md)
- [UpdateOptions](interfaces/UpdateOptions.md)
- [UpdateResult](interfaces/UpdateResult.md)
diff --git a/docs/src/js/interfaces/ClientConfig.md b/docs/src/js/interfaces/ClientConfig.md
index e6ec0a27..c09764cb 100644
--- a/docs/src/js/interfaces/ClientConfig.md
+++ b/docs/src/js/interfaces/ClientConfig.md
@@ -40,6 +40,14 @@ optional timeoutConfig: TimeoutConfig;
***
+### tlsConfig?
+
+```ts
+optional tlsConfig: TlsConfig;
+```
+
+***
+
### userAgent?
```ts
diff --git a/docs/src/js/interfaces/TlsConfig.md b/docs/src/js/interfaces/TlsConfig.md
new file mode 100644
index 00000000..dbc584fc
--- /dev/null
+++ b/docs/src/js/interfaces/TlsConfig.md
@@ -0,0 +1,49 @@
+[**@lancedb/lancedb**](../README.md) • **Docs**
+
+***
+
+[@lancedb/lancedb](../globals.md) / TlsConfig
+
+# Interface: TlsConfig
+
+TLS/mTLS configuration for the remote HTTP client.
+
+## Properties
+
+### assertHostname?
+
+```ts
+optional assertHostname: boolean;
+```
+
+Whether to verify the hostname in the server's certificate.
+
+***
+
+### certFile?
+
+```ts
+optional certFile: string;
+```
+
+Path to the client certificate file (PEM format) for mTLS authentication.
+
+***
+
+### keyFile?
+
+```ts
+optional keyFile: string;
+```
+
+Path to the client private key file (PEM format) for mTLS authentication.
+
+***
+
+### sslCaCert?
+
+```ts
+optional sslCaCert: string;
+```
+
+Path to the CA certificate file (PEM format) for server verification.
diff --git a/nodejs/__test__/arrow.test.ts b/nodejs/__test__/arrow.test.ts
index e002ae3d..f379d3bd 100644
--- a/nodejs/__test__/arrow.test.ts
+++ b/nodejs/__test__/arrow.test.ts
@@ -1,17 +1,5 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright The LanceDB Authors
-
-import {
- Bool,
- Field,
- Int32,
- List,
- Schema,
- Struct,
- Uint8,
- Utf8,
-} from "apache-arrow";
-
import * as arrow15 from "apache-arrow-15";
import * as arrow16 from "apache-arrow-16";
import * as arrow17 from "apache-arrow-17";
@@ -25,11 +13,9 @@ import {
fromTableToBuffer,
makeArrowTable,
makeEmptyTable,
- tableFromIPC,
} from "../lancedb/arrow";
import {
EmbeddingFunction,
- FieldOptions,
FunctionOptions,
} from "../lancedb/embedding/embedding_function";
import { EmbeddingFunctionConfig } from "../lancedb/embedding/registry";
diff --git a/nodejs/__test__/remote.test.ts b/nodejs/__test__/remote.test.ts
index 9b6ca3d0..ff3826da 100644
--- a/nodejs/__test__/remote.test.ts
+++ b/nodejs/__test__/remote.test.ts
@@ -7,7 +7,6 @@ import {
ClientConfig,
Connection,
ConnectionOptions,
- NativeJsHeaderProvider,
TlsConfig,
connect,
} from "../lancedb";
diff --git a/nodejs/__test__/table.test.ts b/nodejs/__test__/table.test.ts
index 5ba5e751..fa6f76b1 100644
--- a/nodejs/__test__/table.test.ts
+++ b/nodejs/__test__/table.test.ts
@@ -39,7 +39,6 @@ import {
Operator,
instanceOfFullTextQuery,
} from "../lancedb/query";
-import exp = require("constants");
describe.each([arrow15, arrow16, arrow17, arrow18])(
"Given a table",
diff --git a/nodejs/biome.json b/nodejs/biome.json
index 29ca74fa..77695c5b 100644
--- a/nodejs/biome.json
+++ b/nodejs/biome.json
@@ -48,6 +48,7 @@
"noUnreachableSuper": "error",
"noUnsafeFinally": "error",
"noUnsafeOptionalChaining": "error",
+ "noUnusedImports": "error",
"noUnusedLabels": "error",
"noUnusedVariables": "warn",
"useIsNan": "error",
diff --git a/nodejs/lancedb/arrow.ts b/nodejs/lancedb/arrow.ts
index e73f4ba2..9c1d9575 100644
--- a/nodejs/lancedb/arrow.ts
+++ b/nodejs/lancedb/arrow.ts
@@ -41,7 +41,6 @@ import {
vectorFromArray as badVectorFromArray,
makeBuilder,
makeData,
- makeTable,
} from "apache-arrow";
import { Buffers } from "apache-arrow/data";
import { type EmbeddingFunction } from "./embedding/embedding_function";
@@ -279,7 +278,7 @@ export class MakeArrowTableOptions {
}
/**
- * An enhanced version of the {@link makeTable} function from Apache Arrow
+ * An enhanced version of the apache-arrow makeTable function from Apache Arrow
* that supports nested fields and embeddings columns.
*
* (typically you do not need to call this function. It will be called automatically
diff --git a/nodejs/lancedb/connection.ts b/nodejs/lancedb/connection.ts
index 2d29cf68..289694f2 100644
--- a/nodejs/lancedb/connection.ts
+++ b/nodejs/lancedb/connection.ts
@@ -3,7 +3,6 @@
import {
Data,
- Schema,
SchemaLike,
TableLike,
fromTableToStreamBuffer,