DaBigBlob / libsql-stateless-easy

Thin libSQL stateless HTTP driver for TypeScript and JavaScript for the edge but easy 🚀
https://www.npmjs.com/package/libsql-stateless-easy
MIT License
56 stars 3 forks source link

TypeError: Invalid URL #9

Closed fl0wo closed 2 weeks ago

fl0wo commented 2 weeks ago

Hi, I'm not sure how it's possibile, but in some weird cases I get an initialization problem where the URL seems not being valid.

Here's the complete log:

node:internal/deps/undici/undici:12344
    Error.captureStackTrace(err, this);
          ^
TypeError: Failed to parse URL from undefined/v3
Here's the full stack-trace:
TypeError: Failed to parse URL from undefined/v3
    at node:internal/deps/undici/undici:12344:11 {
  [cause]: TypeError: Invalid URL
      at new URL (node:internal/url:775:36)
      at new Request (node:internal/deps/undici/undici:5853:25)
      at fetch (node:internal/deps/undici/undici:10123:25)
      at Object.fetch (node:internal/deps/undici/undici:12343:10)
      at fetch (node:internal/process/pre_execution:335:27)
      at Object.o [as libsqlServerCompatCheck] (/Users/flo/WebstormProjects/drizzle-turso/node_modules/libsql-stateless/dist/main.cjs:3:1026)
      at Z (/Users/flo/WebstormProjects/drizzle-turso/node_modules/libsql-stateless-easy/dist/main.cjs:5:6935)
      at et (/Users/flo/WebstormProjects/drizzle-turso/node_modules/libsql-stateless-easy/dist/main.cjs:5:7857)
      at new L (/Users/flo/WebstormProjects/drizzle-turso/node_modules/libsql-stateless-easy/dist/main.cjs:5:8647)
      at oe (/Users/flo/WebstormProjects/drizzle-turso/node_modules/libsql-stateless-easy/dist/main.cjs:5:8488)
      at buildTursoClientEdge (/Users/flo/WebstormProjects/drizzle-turso/src/buildTursoClient.ts:2547:71)
      at /Users/flo/WebstormProjects/drizzle-turso/test/live.spec.ts:29:38
      at _dispatchDescribe (/Users/flo/WebstormProjects/drizzle-turso/node_modules/jest-circus/build/index.js:91:26)
      at describe (/Users/flo/WebstormProjects/drizzle-turso/node_modules/jest-circus/build/index.js:55:5)
      at Object.<anonymous> (/Users/flo/WebstormProjects/drizzle-turso/test/live.spec.ts:27:1)
      at Runtime._execModule (/Users/flo/WebstormProjects/drizzle-turso/node_modules/jest-runtime/build/index.js:1439:24)
      at Runtime._loadModule (/Users/flo/WebstormProjects/drizzle-turso/node_modules/jest-runtime/build/index.js:1022:12)
      at Runtime.requireModule (/Users/flo/WebstormProjects/drizzle-turso/node_modules/jest-runtime/build/index.js:882:12)
      at jestAdapter (/Users/flo/WebstormProjects/drizzle-turso/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)
      at runTestInternal (/Users/flo/WebstormProjects/drizzle-turso/node_modules/jest-runner/build/runTest.js:367:16)
      at runTest (/Users/flo/WebstormProjects/drizzle-turso/node_modules/jest-runner/build/runTest.js:444:34) {
    code: 'ERR_INVALID_URL',
    input: 'undefined/v3'
  }
}

Node.js v20.11.0

I'm using v1.7.0 but same happens on 1.7.7 as well. When switching to libsql-client/web the same queries work as expected.

Here's how I build the drizzle client with libsql-stateless-easy vs how I do it without stateless-easy

import * as schema from "./drizzle/schema";
import {drizzle} from "drizzle-orm/libsql";
import {createClient as createClientEdge} from "libsql-stateless-easy";
import {createClient as createClientWs} from "@libsql/client/web";

export function buildTursoClientEdge(context?: TursoDbEnv) {
    const {url, authToken} = buildClient(context);
    const httpsUrl = url.trim()?.replace('libsql','https');
    const client = createClientEdge({url:httpsUrl, authToken});
    return drizzle(client, {schema});
}

export function buildTursoClientWs(context?: TursoDbEnv) {
    const {url, authToken} = buildClient(context);
    return drizzle(createClientWs({url, authToken}), {schema});
}

It always worked as expected before, not sure if anything in particular changed.

Sorry for the poor issue, I'm not sure how to create a repro

DaBigBlob commented 2 weeks ago

its because npm (or whatever js pacman your using) was using the latest patch to the underlying library (libsql-stateless) it should be fixed in 1.7.8

DaBigBlob commented 2 weeks ago

this almost certainly resolved but im keeping this open for further comments

fl0wo commented 2 weeks ago

Confirm, resolved