From 96dc2765d6c8efcde876fe8d7d1d9df7adeb8593 Mon Sep 17 00:00:00 2001 From: Daniele Briggi <=> Date: Wed, 12 Mar 2025 16:13:38 +0100 Subject: [PATCH 1/3] fix(config): config properties cast Config values from the connection string are parsed as boolean or number --- src/drivers/utilities.ts | 17 ++++++++++++++++- test/utilities.test.ts | 24 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/drivers/utilities.ts b/src/drivers/utilities.ts index d0fe859..b7075ab 100644 --- a/src/drivers/utilities.ts +++ b/src/drivers/utilities.ts @@ -219,11 +219,26 @@ export function parseconnectionstring(connectionstring: string): SQLiteCloudConf }) const config: SQLiteCloudConfig = { + ...options, username: decodeURIComponent(url.username), password: decodeURIComponent(url.password), + password_hashed: options.password_hashed ? parseBoolean(options.password_hashed) : undefined, host: url.hostname, + // type cast values port: url.port ? parseInt(url.port) : undefined, - ...options + insecure: options.insecure ? parseBoolean(options.insecure) : undefined, + timeout: options.timeout ? parseInt(options.timeout) : undefined, + zerotext: options.zerotext ? parseBoolean(options.zerotext) : undefined, + create: options.create ? parseBoolean(options.create) : undefined, + memory: options.memory ? parseBoolean(options.memory) : undefined, + compression: options.compression ? parseBoolean(options.compression) : undefined, + non_linearizable: options.non_linearizable ? parseBoolean(options.non_linearizable) : undefined, + noblob: options.noblob ? parseBoolean(options.noblob) : undefined, + maxdata: options.maxdata ? parseInt(options.maxdata) : undefined, + maxrows: options.maxrows ? parseInt(options.maxrows) : undefined, + maxrowset: options.maxrowset ? parseInt(options.maxrowset) : undefined, + usewebsocket: options.usewebsocket ? parseBoolean(options.usewebsocket) : undefined, + verbose: options.verbose ? parseBoolean(options.verbose) : undefined } // either you use an apikey or username and password diff --git a/test/utilities.test.ts b/test/utilities.test.ts index c524db7..8c3e162 100644 --- a/test/utilities.test.ts +++ b/test/utilities.test.ts @@ -138,6 +138,30 @@ describe('parseconnectionstring', () => { database: 'database' }) }) + + it('should parse connection with insecure as bool or number', () => { + let connectionstring = `sqlitecloud://host:1234/database?insecure=true` + let config = parseconnectionstring(connectionstring) + + expect(config.insecure).toBe(true) + + connectionstring = `sqlitecloud://host:1234/database?insecure=1` + config = parseconnectionstring(connectionstring) + + expect(config.insecure).toBe(true) + + connectionstring = `sqlitecloud://host:1234/database?insecure=0` + config = parseconnectionstring(connectionstring) + + expect(config.insecure).toBe(false) + }) + + it('should parse connection with timeout as number', () => { + let connectionstring = `sqlitecloud://host:1234/database?timeout=123` + let config = parseconnectionstring(connectionstring) + + expect(config.timeout).toBe(123) + }) }) describe('getTestingDatabaseName', () => { From ace81d6a2784c19c18aa86c48d202c63051bd761 Mon Sep 17 00:00:00 2001 From: Daniele Briggi <=> Date: Wed, 12 Mar 2025 17:23:56 +0100 Subject: [PATCH 2/3] fix(workflow): remove files not folder From 8534acc62a3a397d891c68c659c0eab763f649af Mon Sep 17 00:00:00 2001 From: Daniele Briggi <=> Date: Wed, 12 Mar 2025 17:41:29 +0100 Subject: [PATCH 3/3] chore: test --- test/utilities.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/utilities.test.ts b/test/utilities.test.ts index 8c3e162..423b3ca 100644 --- a/test/utilities.test.ts +++ b/test/utilities.test.ts @@ -57,7 +57,7 @@ describe('parseconnectionstring', () => { expect(config4).toEqual({ host: 'host', apikey: 'yyy', - maxrows: '42' // only parsing here, validation is later in validateConfiguration + maxrows: 42 // only parsing here, validation is later in validateConfiguration }) })