From 54ba8b421ca6087f002e17b647281b4ae6eb7445 Mon Sep 17 00:00:00 2001 From: Jan Plhak Date: Fri, 10 Feb 2023 12:54:15 +0100 Subject: [PATCH] JS client: use native fetch when available. --- Cargo.lock | 5 +++++ packages/js/libsql-client/package-lock.json | 18 +++++++++--------- packages/js/libsql-client/package.json | 2 +- .../libsql-client/src/lib/driver/HttpDriver.ts | 10 ++++++---- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2b1999b1..b8216fdc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3276,6 +3276,7 @@ dependencies = [ "http", "http-body", "hyper", + "hyper-rustls", "hyper-tls", "ipnet", "js-sys", @@ -3285,16 +3286,20 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "rustls", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", "tokio", "tokio-native-tls", + "tokio-rustls", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "webpki-roots", "winreg", ] diff --git a/packages/js/libsql-client/package-lock.json b/packages/js/libsql-client/package-lock.json index 15ff2e90..977b7a80 100644 --- a/packages/js/libsql-client/package-lock.json +++ b/packages/js/libsql-client/package-lock.json @@ -20,7 +20,7 @@ "@types/jest": "^29.2.5", "jest": "^29.3.1", "prettier": "^2.8.3", - "ts-jest": "^29.0.3", + "ts-jest": "^29.0.5", "typescript": "^4.9.4" } }, @@ -3797,15 +3797,15 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/ts-jest": { - "version": "29.0.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz", - "integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==", + "version": "29.0.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", + "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", "dev": true, "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^29.0.0", - "json5": "^2.2.1", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", @@ -6937,15 +6937,15 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "ts-jest": { - "version": "29.0.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz", - "integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==", + "version": "29.0.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", + "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", "dev": true, "requires": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^29.0.0", - "json5": "^2.2.1", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", diff --git a/packages/js/libsql-client/package.json b/packages/js/libsql-client/package.json index 8a1bddb1..199d7480 100644 --- a/packages/js/libsql-client/package.json +++ b/packages/js/libsql-client/package.json @@ -33,7 +33,7 @@ "@types/jest": "^29.2.5", "jest": "^29.3.1", "prettier": "^2.8.3", - "ts-jest": "^29.0.3", + "ts-jest": "^29.0.5", "typescript": "^4.9.4" }, "dependencies": { diff --git a/packages/js/libsql-client/src/lib/driver/HttpDriver.ts b/packages/js/libsql-client/src/lib/driver/HttpDriver.ts index 8ff1c238..0ac1c8ef 100644 --- a/packages/js/libsql-client/src/lib/driver/HttpDriver.ts +++ b/packages/js/libsql-client/src/lib/driver/HttpDriver.ts @@ -1,4 +1,4 @@ -import fetch from "cross-fetch"; +import { fetch as crossFetch } from "cross-fetch"; import { ResultSet, BoundStatement, Params } from "../libsql-js"; import { Driver } from "./Driver"; @@ -25,11 +25,13 @@ export class HttpDriver implements Driver { } const statements = buildStatements(["BEGIN", ...stmts, "COMMIT"]); - - const response = await fetch(this.url, { + const reqParams = { method: "POST", body: JSON.stringify(statements) - }); + }; + + const compatibleFetch = typeof fetch === "function" ? fetch : crossFetch; + const response = await compatibleFetch(this.url, reqParams); if (response.status === 200) { const results = await response.json(); validateTopLevelResults(results, statements.statements.length);