constr

✓ Automated Quality Gates, rev. 1, constr

constr~automated-quality-gates~1

Changes are expected to pass linting, tests, coverage collection, dependency audit, and SonarCloud analysis.

Rationale:

The package scripts, developer guide, and Sonar configuration define these checks.

Needs: dsn

doc/spec/design/constraints.md:98

In: 1
✓ Browser and Node.js Runtime Support, rev. 1, constr

constr~browser-and-nodejs-runtime-support~1

The system must run in browser and Node.js runtimes for the core driver and pool features.

Rationale:

Application developers use the library in server-side Node.js services and browser-based applications. Supporting both runtimes lets them use one Exasol driver API across these application types.

Needs: dsn

doc/spec/design/constraints.md:19

In: 4
✓ Exasol WebSocket SQL Protocol, rev. 1, constr

constr~exasol-websocket-sql-protocol~1

The system communicates with Exasol by sending JSON SQL protocol commands over WebSocket.

Rationale:

Connection serializes command objects to JSON and receives SQLResponse payloads.

Needs: dsn

doc/spec/design/constraints.md:74

In: 1
✓ GitHub and npm Distribution, rev. 1, constr

constr~github-and-npm-distribution~1

The system is developed on GitHub and released as an npm package.

Rationale:

The README links GitHub Actions and npm badges. The developer guide documents a manual release process that triggers a GitHub release workflow publishing to npm.

Needs: dsn

doc/spec/design/constraints.md:87

In: 1
✓ Injectable WebSocket Implementation, rev. 1, constr

constr~injectable-websocket-implementation~1

The system must receive its WebSocket implementation from the application through a factory function.

Rationale:

Browser and Node.js runtimes provide different WebSocket implementations, and the public constructors accept a websocketFactory.

Needs: dsn

doc/spec/design/constraints.md:30

In: 3
✓ Node-only CSV Export, rev. 1, constr

constr~node-only-csv-export~1

CSV file export is limited to Node.js because it depends on local filesystem access and Node networking/TLS modules.

Rationale:

The implementation imports node:fs, node:path, node:net, and node:tls.

Needs: dsn

doc/spec/design/constraints.md:63

In: 6
✓ Node-only CSV Import, rev. 1, constr

constr~node-only-csv-import~1

CSV file import is limited to Node.js because it depends on local filesystem access and Node networking/TLS modules.

Rationale:

The implementation imports node:fs, node:path, node:net, and node:tls.

Needs: dsn

doc/spec/design/constraints.md:41

In: 4
✓ Node-only Parquet Import, rev. 1, constr

constr~node-only-parquet-import~1

Parquet file import is limited to Node.js because it depends on local filesystem access and Node networking/TLS modules.

Rationale:

The implementation imports node:fs, node:path, node:net, and node:tls through the local-file import helper.

Needs: dsn

doc/spec/design/constraints.md:52

In: 2
✓ TypeScript Library Package, rev. 1, constr

constr~typescript-library-package~1

The system is implemented as a TypeScript npm package that publishes compiled artifacts from dist/ and type declarations through package.json.

Rationale:

package.json defines main, module, types, conditional package exports, build scripts, and the npm package name @exasol/exasol-driver-ts.

Needs: dsn

doc/spec/design/constraints.md:8

In: 1

dsn

✓ Browser WebSocket Runtime, rev. 2, dsn

dsn~runtime-browser-websocket~2

  • Given* a browser application
  • When* the application imports @exasol/exasol-driver-ts/browser and creates a driver or pool with a factory returning the browser WebSocket
  • Then* the driver uses the supplied object through the ExaWebsocket interface
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:176

In: 6
Out: 3
✓ CSV Export Cancellation, rev. 1, dsn

dsn~runtime-csv-export-cancellation~1

  • Given* an in-flight CSV export with an AbortSignal
  • When* the signal is aborted
  • Then* the driver destroys the destination write stream and both export-tunnel sockets, sends abortQuery for a still-pending server-side export without waiting for its response, removes the newly created destination file, and rejects the export promise with an AbortError using E-EDJS-31
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:452

In: 3
Out: 1
✓ CSV Export Chunked Request Stream, rev. 1, dsn

dsn~runtime-csv-export-chunked-request-stream~1

  • Given* a tunnel HTTP request with Transfer-Encoding: chunked
  • When* the shared tunnel body reader receives the request
  • Then* it decodes the chunks and forwards only their payload data to a destination
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:439

In: 4
Out: 2
✓ CSV Export Compressed File, rev. 1, dsn

dsn~runtime-csv-export-compressed-file~1

  • Given* a new local export destination ending in .zip, .gz, or .bz2
  • When* exportToCsvFile() builds the Exasol export SQL
  • Then* the driver selects the matching canonical 001.zip, 001.gz, or 001.bz2 remote file name case-insensitively and writes Exasol's compressed bytes unchanged to the local file
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:414

In: 5
Out: 2
✓ CSV Export Destination File, rev. 1, dsn

dsn~runtime-csv-export-destination-file~1

  • Given* a Node.js driver and a local CSV export destination path
  • When* exportToCsvFile() is called
  • Then* the driver exclusively reserves the resolved path before creating an Exasol tunnel, rejects an existing file with E-EDJS-30, and removes its newly-created file when the export fails
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:387

In: 4
Out: 2
✓ CSV Export File Stream, rev. 1, dsn

dsn~runtime-csv-export-file-stream~1

  • Given* a Node.js driver, an Exasol table or parenthesized SELECT query, and a new local CSV destination
  • When* exportToCsvFile() is called
  • Then* the driver creates an Exasol tunnel, wraps it with TLS, executes EXPORT <source> INTO CSV, streams Exasol's content-length-delimited or chunked HTTP request body into the file, destroys the tunnel sockets, and returns the export row count
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:400

In: 5
Out: 3
✓ CSV Export Format Options, rev. 1, dsn

dsn~runtime-csv-export-format-options~1

  • Given* CSV export format options
  • When* the export SQL is built
  • Then* the driver appends Exasol CSV clauses for configured separator, delimiter, row separator, encoding, NULL literal, and column names while escaping SQL string literals
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:427

In: 4
Out: 1
✓ CSV Import Cancellation, rev. 1, dsn

dsn~runtime-csv-import-cancellation~1

  • Given* an in-flight CSV import with an AbortSignal
  • When* the signal is aborted
  • Then* the driver destroys the file stream and both import-tunnel sockets, sends abortQuery for the server-side import without waiting for its response, and rejects the import promise with an AbortError
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:319

In: 5
Out: 1
✓ CSV Import File Readability Check, rev. 1, dsn

dsn~runtime-csv-import-file-readability-check~1

  • Given* a Node.js driver and a local CSV file path
  • When* importFromCsvFile() is called
  • Then* the driver checks file readability before creating an Exasol tunnel and rejects with error code E-EDJS-14 if the file is missing or unreadable
Needs: impl, utest

doc/spec/design/runtime_view.md:268

In: 3
Out: 2
✓ CSV Import File Stream, rev. 1, dsn

dsn~runtime-csv-import-file-stream~1

  • Given* a Node.js driver, readable local CSV file, and target table
  • When* importFromCsvFile() is called
  • Then* the driver creates an Exasol tunnel, wraps it with TLS, executes IMPORT INTO ... FROM CSV, waits for Exasol's HTTP request, streams the file using chunked HTTP response data, destroys the secure socket, and returns the import row count
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:294

In: 13
Out: 2
✓ CSV Import Format Options, rev. 1, dsn

dsn~runtime-csv-import-format-options~1

  • Given* CSV format options
  • When* the import SQL is built
  • Then* the driver appends Exasol CSV clauses for configured separator, delimiter, row separator, encoding, skip count, trim mode, and NULL literal while escaping SQL string literals
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:307

In: 3
Out: 1
✓ CSV Import Missing Target Table, rev. 1, dsn

dsn~runtime-csv-import-missing-target-table~1

  • Given* a readable local CSV file and a target table name that does not exist
  • When* importFromCsvFile() executes the generated IMPORT INTO ... FROM CSV SQL
  • Then* Exasol returns a SQL error and the driver rejects the import promise with that error
Needs: impl, itest

doc/spec/design/runtime_view.md:281

In: 2
Out: 2
✓ Command Execution, rev. 1, dsn

dsn~runtime-command-execution~1

  • Given* an authenticated driver and SQL text
  • When* execute() is called
  • Then* the driver sends an execute command, follows the protocol fetch flow for result-set responses, validates that the final result is a row count, and returns that row count
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:90

In: 3
Out: 1
✓ Connect with Basic Authentication, rev. 1, dsn

dsn~runtime-connect-basic-authentication~1

  • Given* a driver configured with user, password, host, port, and WebSocket factory
  • When* connect() is called
  • Then* the driver builds the WebSocket URL, creates a Connection, sends a login command, encrypts the password with the returned public key, sends login metadata and session attributes, enables compression if configured, and resolves the connection promise
Needs: impl, itest

doc/spec/design/runtime_view.md:12

In: 8
Out: 4
✓ Driver Async Disposal, rev. 1, dsn

dsn~runtime-driver-async-disposal~1

  • Given* a connected ExasolDriver
  • When* TypeScript invokes Symbol.asyncDispose
  • Then* the driver delegates to close() and waits for all connections to close
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:51

In: 3
Out: 1
✓ Fetch Size, rev. 1, dsn

dsn~runtime-query-fetch-size~1

  • Given* a configured fetchSize value and a query result with more rows available
  • When* the driver fetches an additional result-set page
  • Then* the driver requests the configured number of bytes from Exasol
Needs: impl, utest

doc/spec/design/runtime_view.md:78

In: 2
Out: 1
✓ In-Flight WebSocket Failure, rev. 1, dsn

dsn~runtime-inflight-websocket-failure~1

  • Given* a Connection with a command awaiting a WebSocket response
  • When* the WebSocket emits an error or close event
  • Then* Connection marks itself broken and inactive, rejects the pending command with the available event details, and ExasolPool destroys the broken borrowed driver rather than returning it to the pool
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:162

In: 10
Out: 1
✓ Login Metadata, rev. 1, dsn

dsn~runtime-login-metadata~1

  • Given* a driver starting either basic or token authentication
  • When* the driver builds the authenticated login command
  • Then* it uses one shared browser-compatible login-options builder for common protocol fields, derives the driver version from build-time package metadata without a runtime filesystem or Node.js dependency, caller-configured metadata takes precedence, and missing metadata is derived best-effort from Node.js built-ins or browser navigator data without a static Node.js import in the browser-compatible entry point
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:27

In: 8
Out: 1
✓ Node.js WebSocket Runtime, rev. 2, dsn

dsn~runtime-node-websocket~2

  • Given* a Node.js application
  • When* the application creates a driver with a factory returning a compatible WebSocket such as ws
  • Then* the driver uses the supplied object through the same ExaWebsocket interface
Needs: impl, itest

doc/spec/design/runtime_view.md:190

In: 3
Out: 3
✓ Parquet Import Cancellation, rev. 1, dsn

dsn~runtime-parquet-import-cancellation~1

  • Given* an in-flight Parquet import with an AbortSignal
  • When* the signal is aborted
  • Then* the driver destroys the file stream and both import-tunnel sockets, sends abortQuery for the server-side import without waiting for its response, and rejects the import promise with an AbortError using E-EDJS-37
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:373

In: 3
Out: 1
✓ Parquet Import File Readability Check, rev. 1, dsn

dsn~runtime-parquet-import-file-readability-check~1

  • Given* a Node.js driver and a local Parquet file path
  • When* importFromParquetFile() is called
  • Then* the driver checks file readability before creating an Exasol tunnel and rejects with error code E-EDJS-14 if the file is missing or unreadable
Needs: impl, utest

doc/spec/design/runtime_view.md:333

In: 3
Out: 2
✓ Parquet Import File Stream, rev. 1, dsn

dsn~runtime-parquet-import-file-stream~1

  • Given* a Node.js driver connected to Exasol 2025.1.9 or later, a readable local Parquet file, and a target table
  • When* importFromParquetFile() is called
  • Then* the driver creates an Exasol tunnel, wraps it with TLS, executes IMPORT INTO ... FROM PARQUET with MaxConcurrentReads=1, serves Exasol's sequential HTTP HEAD and byte-range GET requests with file-size and range-aware responses, destroys the secure socket, and returns the import row count

Evidence: Exasol changelog 28781 introduced HTTP/HTTPS Parquet imports in Exasol 2025.1.9, which the local-file tunnel requires.

Needs: impl, itest, utest

doc/spec/design/runtime_view.md:346

In: 6
Out: 2
✓ Parquet Import Version Support, rev. 1, dsn

dsn~runtime-parquet-import-version-support~1

  • Given* an Exasol version before 2025.1.9 and a request to import a local Parquet file
  • When* the driver executes the IMPORT FROM PARQUET statement
  • Then* Exasol rejects the statement with its version-support message, which the driver includes in its standardized SQL error returned to the application

doc/spec/design/runtime_view.md:361

Out: 1
✓ Pool Async Disposal, rev. 1, dsn

dsn~runtime-pool-async-disposal~1

  • Given* an ExasolPool
  • When* TypeScript invokes Symbol.asyncDispose
  • Then* the pool drains before clearing its pooled driver instances
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:254

In: 3
Out: 1
✓ Pool Borrow Validation, rev. 1, dsn

dsn~runtime-pool-borrow-validation~1

  • Given* an idle driver in an ExasolPool
  • When* generic-pool borrows the driver for a query
  • Then* it validates that the driver has no broken connection, destroys an invalid driver, and creates a replacement before delegating the query
Needs: impl, itest

doc/spec/design/runtime_view.md:230

In: 2
Out: 1
✓ Pool Capacity Management, rev. 1, dsn

dsn~runtime-pool-capacity-management~1

  • Given* concurrent work submitted to an ExasolPool
  • When* the pool needs additional driver instances
  • Then* the underlying generic-pool creates and reuses drivers while honoring the configured minimum and maximum size limits
Needs: impl, itest

doc/spec/design/runtime_view.md:206

In: 2
Out: 1
✓ Pool Shutdown, rev. 1, dsn

dsn~runtime-pool-shutdown~1

  • Given* an ExasolPool
  • When* drain() and then clear() are called
  • Then* the underlying generic-pool drains pending work and destroys pooled drivers by closing them
Needs: impl, itest

doc/spec/design/runtime_view.md:242

In: 3
Out: 1
✓ Pooled Query Execution, rev. 1, dsn

dsn~runtime-pooled-query-execution~1

  • Given* an ExasolPool
  • When* a query is submitted
  • Then* the pool acquires a driver, delegates the query, releases the driver in a finally block, and logs/rethrows errors
Needs: impl, itest

doc/spec/design/runtime_view.md:218

In: 2
Out: 1
✓ Prepared Statement Async Disposal, rev. 1, dsn

dsn~runtime-prepared-statement-async-disposal~1

  • Given* a prepared Statement
  • When* TypeScript invokes Symbol.asyncDispose
  • Then* the statement delegates to close(), closes the remote statement, and releases its connection
Needs: impl, utest

doc/spec/design/runtime_view.md:126

Out: 1
✓ Prepared Statement Execution, rev. 1, dsn

dsn~runtime-prepared-statement-execution~1

  • Given* an authenticated driver and prepared SQL text
  • When* prepare() and Statement.execute() are called
  • Then* the driver creates a prepared statement, validates that supplied positional values align with parameter columns, sends the positional values as column-oriented data to Exasol, and releases the connection when the statement is closed
Needs: impl

doc/spec/design/runtime_view.md:114

Out: 1
✓ Publish CJS and ESM, rev. 3, dsn

dsn~decision-publish-cjs-and-esm~3

The system builds CommonJS, ES module, and declaration outputs for separate Node.js and browser entry points. Package integration tests install the packed artifact into an isolated consumer and exercise every public conditional export route.

Rationale:

This improves compatibility with different consuming application build systems.

Needs: impl, itest, utest

doc/spec/design/architecture_decisions.md:193

In: 7
Out: 1
✓ Publish Through GitHub Release Workflow, rev. 1, dsn

dsn~decision-use-github-release-workflow-for-npm-publishing~1

The system publishes the npm package from the GitHub release workflow after quality gates, package build, and package packing succeed.

Rationale:

Publishing from a dedicated release workflow keeps distribution tied to GitHub releases and uses npm publishing credentials only in the release job.

doc/spec/design/architecture_decisions.md:209

Out: 1
✓ Query Cancellation, rev. 1, dsn

dsn~runtime-query-cancellation~1

  • Given* an operation using a connection
  • When* the application invokes the cancel callback or driver.cancel()
  • Then* the connection sends abortQuery without waiting for a result payload
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:138

In: 5
Out: 1
✓ Query Execution, rev. 3, dsn

dsn~runtime-query-execution~3

  • Given* an authenticated driver and SQL text
  • When* query() is called
  • Then* the driver sends an execute command, fetches additional result-set pages until the result is complete or resultSetMaxRows is reached, closes remote result sets and consumes their acknowledgements before reusing the connection, validates that the result is a result set, and returns QueryResult
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:65

In: 5
Out: 2
✓ Raw Response Execution, rev. 1, dsn

dsn~runtime-raw-response-execution~1

  • Given* an authenticated driver
  • When* query() or execute() is called with responseType set to raw
  • Then* the driver returns the fetched SQLResponse<SQLQueriesResponse> without converting it to a QueryResult or row count
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:102

In: 5
Out: 1
✓ Reject Missing Credentials, rev. 1, dsn

dsn~runtime-reject-missing-credentials~1

  • Given* a driver without basic-auth credentials and without token credentials
  • When* connect() is called
  • Then* the driver rejects with ErrInvalidCredentials before opening a WebSocket
Needs: impl, utest

doc/spec/design/runtime_view.md:39

Out: 1
✓ Response Command Serialization, rev. 1, dsn

dsn~runtime-response-command-serialization~1

  • Given* a Connection with multiple submitted response-producing protocol commands
  • When* it receives a response for the command currently in flight
  • Then* it resolves that command, sends the next command in FIFO order, and keeps abortQuery outside the response queue; an unexpected or malformed response marks the connection broken, rejects all pending commands, and closes the WebSocket
Needs: impl, utest

doc/spec/design/runtime_view.md:150

Out: 1
✓ Share Cross-Runtime Integration Scenarios, rev. 1, dsn

dsn~decision-share-cross-runtime-integration-scenarios~1

The Node.js and browser integration suites execute the same browser-safe basic driver, pool, and compression scenarios. Runtime adapters supply the test framework, database fixture, WebSocket factory, and runtime-specific expectations.

Rationale:

The driver and pool expose the same behavior in both runtimes. Keeping shared behavior in one scenario definition prevents one suite from silently losing coverage when the other gains a regression case. Runtime-specific checks remain local, including Node.js TLS certificate validation and the browser's native WebSocket and wss assertion.

Needs: impl, itest

doc/spec/design/architecture_decisions.md:167

In: 5
Out: 1
✓ Stream CSV Through Export Tunnel, rev. 1, dsn

dsn~decision-stream-csv-through-export-tunnel~1

The system exports local CSV files by opening an Exasol export tunnel and streaming Exasol's content-length-delimited or chunked HTTP request body into a newly reserved file. Tags: csv-export, nodejs

Rationale:

Streaming supports larger files and matches Exasol's EXPORT ... INTO CSV AT ... FILE ... mechanism while avoiding an overwrite race at the local destination.

Needs: impl

doc/spec/design/architecture_decisions.md:104

In: 1
Out: 4
✓ Stream CSV Through Import Tunnel, rev. 1, dsn

dsn~decision-stream-csv-through-import-tunnel~1

The system imports local CSV files by opening an Exasol import tunnel and streaming the file as chunked HTTP response data. Tags: csv-import, nodejs

Rationale:

Streaming supports larger files and matches Exasol's IMPORT FROM CSV AT ... FILE ... mechanism.

Needs: impl

doc/spec/design/architecture_decisions.md:75

In: 1
Out: 2
✓ Use Vitest Browser Mode, rev. 1, dsn

dsn~decision-use-vitest-browser-mode~1

The browser integration suite uses Vitest Browser Mode with its Playwright Chromium provider instead of a standalone Playwright harness.

Rationale:

Jest's browser-like jsdom environment does not provide Chromium's native WebSocket implementation or a real browser transport. Vitest Browser Mode executes test, expect, and lifecycle hooks directly in Chromium, keeping browser scenarios close to the existing Jest-style tests while Node global setup owns Docker lifecycle. This removes a custom browser protocol and code serialization layer. Vitest creates contexts that accept certificate errors, so the suite verifies native-browser wss transport but deliberately does not authenticate the database certificate.

Needs: impl, itest

doc/spec/design/architecture_decisions.md:153

In: 2
Out: 1
✓ Use WebSocket Factory, rev. 1, dsn

dsn~decision-use-websocket-factory~1

The system uses an injected WebSocket factory as the runtime abstraction for database connections.

Rationale:

This supports the documented browser and Node.js usage model and avoids forcing one runtime's WebSocket implementation onto all consumers.

doc/spec/design/architecture_decisions.md:18

Out: 2
✓ Use generic-pool, rev. 1, dsn

dsn~decision-use-generic-pool~1

The system uses generic-pool for connection pool lifecycle and capacity management.

Rationale:

Pooling is a general-purpose concern. Reusing an existing library keeps the Exasol-specific code focused on driver behavior.

Needs: impl

doc/spec/design/architecture_decisions.md:44

In: 1
Out: 4
✓ Use the Destination Extension for Compression, rev. 1, dsn

dsn~decision-select-csv-export-compression~1

The CSV export maps destination file extensions .zip, .gz, and .bz2 case-insensitively to Exasol remote filenames 001.zip, 001.gz, and 001.bz2; all other destinations use 001.csv. Tags: csv-export, compression, nodejs

Rationale:

Exasol selects the export compression format from the FILE name. Reusing the local extension avoids expanding the public driver API and preserves uncompressed export behavior.

Needs: impl

doc/spec/design/architecture_decisions.md:134

In: 1
Out: 2
✓ Verification Gate Definition, rev. 1, dsn

dsn~verification-gate-definition~1

The system defines quality gates through npm scripts, Jest project configuration, ESLint configuration, npm audit configuration, and SonarCloud project settings.

doc/spec/design/quality_requirements.md:64

Out: 1

feat

✓ CSV File Export, rev. 1, feat

feat~csv-file-export~1

The driver lets Node.js applications export Exasol tables or query results to new local CSV files.

Needs: req

doc/spec/system_requirements.md:129

In: 4
✓ CSV File Import, rev. 1, feat

feat~csv-file-import~1

The driver lets Node.js applications import local CSV files into Exasol tables.

Needs: req

doc/spec/system_requirements.md:115

In: 3
✓ Connection Pooling, rev. 1, feat

feat~connection-pooling~1

The driver provides a pool API for applications that need multiple reusable database connections.

Needs: req

doc/spec/system_requirements.md:108

In: 2
✓ Explicit Resource Management, rev. 1, feat

feat~explicit-resource-management~1

The driver supports TypeScript explicit resource management for closeable driver resources.

Needs: req

doc/spec/system_requirements.md:94

In: 1
✓ Parquet File Import, rev. 1, feat

feat~parquet-file-import~1

The driver lets Node.js applications import local Parquet files into Exasol tables on Exasol 2025.1.9 or later.

Needs: req

doc/spec/system_requirements.md:122

In: 2
✓ Runtime Portability, rev. 1, feat

feat~runtime-portability~1

The driver supports browser and Node.js applications without hard-wiring one concrete WebSocket implementation.

Needs: req

doc/spec/system_requirements.md:101

In: 2
✓ SQL Connectivity, rev. 1, feat

feat~sql-connectivity~1

The driver lets applications connect to Exasol, authenticate, execute SQL, read results, and close the connection.

Needs: req

doc/spec/system_requirements.md:87

In: 8
✓ Secure and Configurable Sessions, rev. 1, feat

feat~secure-configurable-sessions~1

The driver lets applications configure session behavior including TLS usage, authentication mode, autocommit, compression, schema, client metadata, fetch size, and result row limits.

Needs: req

doc/spec/system_requirements.md:136

In: 3

impl

✓ decision-publish-cjs-and-esm-3844112016, rev. 0, impl

impl~decision-publish-cjs-and-esm-3844112016~0

rollup.config.mjs:7

Out: 1
✓ decision-select-csv-export-compression-2566593369, rev. 0, impl

impl~decision-select-csv-export-compression-2566593369~0

src/lib/import/export-sql-builder.ts:7

Out: 1
✓ decision-share-cross-runtime-integration-scenarios-214557086, rev. 0, impl

impl~decision-share-cross-runtime-integration-scenarios-214557086~0

integration-test/node/test-runtime.ts:11

Out: 1
✓ decision-share-cross-runtime-integration-scenarios-2306476286, rev. 0, impl

impl~decision-share-cross-runtime-integration-scenarios-2306476286~0

integration-test/browser/test-runtime.ts:6

Out: 1
✓ decision-stream-csv-through-export-tunnel-1614011297, rev. 0, impl

impl~decision-stream-csv-through-export-tunnel-1614011297~0

src/lib/import/csv-file-export.ts:23

Out: 1
✓ decision-stream-csv-through-import-tunnel-2402898750, rev. 0, impl

impl~decision-stream-csv-through-import-tunnel-2402898750~0

src/lib/import/csv-file-import.ts:17

Out: 1
✓ decision-use-generic-pool-3558749960, rev. 0, impl

impl~decision-use-generic-pool-3558749960~0

src/lib/exasol-pool.ts:9

Out: 1
✓ decision-use-vitest-browser-mode-2315330264, rev. 0, impl

impl~decision-use-vitest-browser-mode-2315330264~0

integration-test/browser/global-setup.ts:3

Out: 1
✓ do-not-allow-disabling-encryption-3381979509, rev. 0, impl

impl~do-not-allow-disabling-encryption-3381979509~0

src/lib/sql-client.ts:120

Out: 1
✓ runtime-browser-websocket-1526950820, rev. 0, impl

impl~runtime-browser-websocket-1526950820~0

src/lib/exasol-pool.ts:185

Out: 1
✓ runtime-browser-websocket-1682525751, rev. 0, impl

impl~runtime-browser-websocket-1682525751~0

src/lib/sql-client.ts:528

Out: 1
✓ runtime-browser-websocket-2295876818, rev. 0, impl

impl~runtime-browser-websocket-2295876818~0

src/lib/connection.ts:10

Out: 1
✓ runtime-command-execution-2345144467, rev. 0, impl

impl~runtime-command-execution-2345144467~0

src/lib/sql-client.ts:338

Out: 1
✓ runtime-connect-basic-authentication-790055242, rev. 0, impl

impl~runtime-connect-basic-authentication-790055242~0

src/lib/sql-client.ts:100

Out: 1
✓ runtime-csv-export-cancellation-1269674408, rev. 0, impl

impl~runtime-csv-export-cancellation-1269674408~0

src/lib/import/csv-file-export.ts:30

Out: 1
✓ runtime-csv-export-chunked-request-stream-2554278518, rev. 0, impl

impl~runtime-csv-export-chunked-request-stream-2554278518~0

src/lib/import/http-protocol.ts:92

Out: 1
✓ runtime-csv-export-compressed-file-2837891483, rev. 0, impl

impl~runtime-csv-export-compressed-file-2837891483~0

src/lib/import/csv-file-export.ts:29

Out: 1
✓ runtime-csv-export-compressed-file-408400465, rev. 0, impl

impl~runtime-csv-export-compressed-file-408400465~0

src/lib/import/export-sql-builder.ts:6

Out: 1
✓ runtime-csv-export-destination-file-979787761, rev. 0, impl

impl~runtime-csv-export-destination-file-979787761~0

src/lib/import/csv-file-export.ts:27

Out: 1
✓ runtime-csv-export-file-stream-923094657, rev. 0, impl

impl~runtime-csv-export-file-stream-923094657~0

src/lib/import/csv-file-export.ts:28

Out: 1
✓ runtime-csv-export-format-options-1139905334, rev. 0, impl

impl~runtime-csv-export-format-options-1139905334~0

src/lib/import/export-sql-builder.ts:5

Out: 1
✓ runtime-csv-import-cancellation-3525445429, rev. 0, impl

impl~runtime-csv-import-cancellation-3525445429~0

src/lib/import/csv-file-import.ts:22

Out: 1
✓ runtime-csv-import-file-readability-check-1467669918, rev. 0, impl

impl~runtime-csv-import-file-readability-check-1467669918~0

src/lib/import/csv-file-import.ts:19

Out: 1
✓ runtime-csv-import-file-stream-1612144633, rev. 0, impl

impl~runtime-csv-import-file-stream-1612144633~0

src/lib/import/http-protocol.ts:9

Out: 1
✓ runtime-csv-import-file-stream-2387968671, rev. 0, impl

impl~runtime-csv-import-file-stream-2387968671~0

src/lib/import/http-transport.ts:4

Out: 1
✓ runtime-csv-import-file-stream-531404025, rev. 0, impl

impl~runtime-csv-import-file-stream-531404025~0

src/lib/import/tls-transport.ts:5

Out: 1
✓ runtime-csv-import-file-stream-98736346, rev. 0, impl

impl~runtime-csv-import-file-stream-98736346~0

src/lib/import/csv-file-import.ts:21

Out: 1
✓ runtime-csv-import-format-options-2895147665, rev. 0, impl

impl~runtime-csv-import-format-options-2895147665~0

src/lib/import/import-sql-builder.ts:4

Out: 1
✓ runtime-csv-import-missing-target-table-3451683423, rev. 0, impl

impl~runtime-csv-import-missing-target-table-3451683423~0

src/lib/import/csv-file-import.ts:20

Out: 1
✓ runtime-driver-async-disposal-1947815579, rev. 0, impl

impl~runtime-driver-async-disposal-1947815579~0

src/lib/sql-client.ts:205

Out: 1
✓ runtime-inflight-websocket-failure-77618635, rev. 0, impl

impl~runtime-inflight-websocket-failure-77618635~0

src/lib/connection.ts:12

Out: 1
✓ runtime-login-metadata-1047591205, rev. 0, impl

impl~runtime-login-metadata-1047591205~0

src/lib/login-options.ts:46

Out: 1
✓ runtime-node-websocket-4017149182, rev. 0, impl

impl~runtime-node-websocket-4017149182~0

src/lib/node-sql-client.ts:12

Out: 1
✓ runtime-node-websocket-4073827434, rev. 0, impl

impl~runtime-node-websocket-4073827434~0

src/lib/connection.ts:11

Out: 1
✓ runtime-parquet-import-cancellation-3116266142, rev. 0, impl

impl~runtime-parquet-import-cancellation-3116266142~0

src/lib/import/parquet-file-import.ts:31

Out: 1
✓ runtime-parquet-import-file-readability-check-2964718215, rev. 0, impl

impl~runtime-parquet-import-file-readability-check-2964718215~0

src/lib/import/parquet-file-import.ts:29

Out: 1
✓ runtime-parquet-import-file-stream-160644854, rev. 0, impl

impl~runtime-parquet-import-file-stream-160644854~0

src/lib/import/import-sql-builder.ts:23

Out: 1
✓ runtime-parquet-import-file-stream-504840963, rev. 0, impl

impl~runtime-parquet-import-file-stream-504840963~0

src/lib/import/parquet-file-import.ts:30

Out: 1
✓ runtime-pool-async-disposal-1800755823, rev. 0, impl

impl~runtime-pool-async-disposal-1800755823~0

src/lib/exasol-pool.ts:174

Out: 1
✓ runtime-pool-borrow-validation-913425728, rev. 0, impl

impl~runtime-pool-borrow-validation-913425728~0

src/lib/exasol-pool.ts:45

Out: 1
✓ runtime-pool-capacity-management-2119481703, rev. 0, impl

impl~runtime-pool-capacity-management-2119481703~0

src/lib/exasol-pool.ts:26

Out: 1
✓ runtime-pool-shutdown-2147665910, rev. 0, impl

impl~runtime-pool-shutdown-2147665910~0

src/lib/exasol-pool.ts:169

Out: 1
✓ runtime-pool-shutdown-2346084664, rev. 0, impl

impl~runtime-pool-shutdown-2346084664~0

src/lib/exasol-pool.ts:162

Out: 1
✓ runtime-pooled-query-execution-653628952, rev. 0, impl

impl~runtime-pooled-query-execution-653628952~0

src/lib/exasol-pool.ts:140

Out: 1
✓ runtime-prepared-statement-async-disposal-1141960773, rev. 0, impl

impl~runtime-prepared-statement-async-disposal-1141960773~0

src/lib/statement.ts:34

Out: 1
✓ runtime-prepared-statement-execution-1839467287, rev. 0, impl

impl~runtime-prepared-statement-execution-1839467287~0

src/lib/statement.ts:8

Out: 1
✓ runtime-prepared-statement-execution-2115630526, rev. 0, impl

impl~runtime-prepared-statement-execution-2115630526~0

src/lib/sql-client.ts:420

Out: 1
✓ runtime-query-cancellation-2940041696, rev. 0, impl

impl~runtime-query-cancellation-2940041696~0

src/lib/sql-client.ts:176

Out: 1
✓ runtime-query-cancellation-532142307, rev. 0, impl

impl~runtime-query-cancellation-532142307~0

src/lib/connection.ts:170

Out: 1
✓ runtime-query-execution-18274776, rev. 0, impl

impl~runtime-query-execution-18274776~0

src/lib/fetch.ts:84

Out: 1
✓ runtime-query-execution-2281532445, rev. 0, impl

impl~runtime-query-execution-2281532445~0

src/lib/sql-client.ts:268

Out: 1
✓ runtime-query-execution-943053888, rev. 0, impl

impl~runtime-query-execution-943053888~0

src/lib/fetch.ts:37

Out: 1
✓ runtime-query-fetch-size-2137897987, rev. 0, impl

impl~runtime-query-fetch-size-2137897987~0

src/lib/fetch.ts:128

Out: 1
✓ runtime-raw-response-execution-1450354008, rev. 0, impl

impl~runtime-raw-response-execution-1450354008~0

src/lib/sql-client.ts:339

Out: 1
✓ runtime-raw-response-execution-1458181203, rev. 0, impl

impl~runtime-raw-response-execution-1458181203~0

src/lib/sql-client.ts:269

Out: 1
✓ runtime-reject-missing-credentials-2672507147, rev. 0, impl

impl~runtime-reject-missing-credentials-2672507147~0

src/lib/sql-client.ts:101

Out: 1
✓ runtime-response-command-serialization-25867889, rev. 0, impl

impl~runtime-response-command-serialization-25867889~0

src/lib/connection.ts:13

Out: 1

itest

✓ decision-publish-cjs-and-esm-1644565714, rev. 0, itest

itest~decision-publish-cjs-and-esm-1644565714~0

integration-test/package/consumer/node-cjs.cjs:5

Out: 1
✓ decision-publish-cjs-and-esm-168594438, rev. 0, itest

itest~decision-publish-cjs-and-esm-168594438~0

integration-test/package/consumer/node-esm.mjs:4

Out: 1
✓ decision-publish-cjs-and-esm-2687243180, rev. 0, itest

itest~decision-publish-cjs-and-esm-2687243180~0

integration-test/package/consumer/browser-esm.mjs:4

Out: 1
✓ decision-publish-cjs-and-esm-3357969272, rev. 0, itest

itest~decision-publish-cjs-and-esm-3357969272~0

integration-test/package/consumer/browser-cjs.cjs:5

Out: 1
✓ decision-publish-cjs-and-esm-697140601, rev. 0, itest

itest~decision-publish-cjs-and-esm-697140601~0

integration-test/node/package-consumer.spec.ts:7

Out: 1
✓ decision-share-cross-runtime-integration-scenarios-2420110891, rev. 0, itest

itest~decision-share-cross-runtime-integration-scenarios-2420110891~0

integration-test/testcases/pool.basic.spec.ts:6

Out: 1
✓ decision-share-cross-runtime-integration-scenarios-3864250101, rev. 0, itest

itest~decision-share-cross-runtime-integration-scenarios-3864250101~0

integration-test/testcases/compression.basic.spec.ts:4

Out: 1
✓ decision-share-cross-runtime-integration-scenarios-3947423083, rev. 0, itest

itest~decision-share-cross-runtime-integration-scenarios-3947423083~0

integration-test/testcases/basic.spec.ts:6

Out: 1
✓ decision-use-vitest-browser-mode-384413183, rev. 0, itest

itest~decision-use-vitest-browser-mode-384413183~0

integration-test/browser/basic.browser.spec.ts:11

Out: 1
✓ runtime-browser-websocket-2726562314, rev. 0, itest

itest~runtime-browser-websocket-2726562314~0

integration-test/testcases/basic.spec.ts:4

Out: 1
✓ runtime-browser-websocket-563221979, rev. 0, itest

itest~runtime-browser-websocket-563221979~0

integration-test/browser/basic.browser.spec.ts:10

Out: 1
✓ runtime-command-execution-1113944553, rev. 0, itest

itest~runtime-command-execution-1113944553~0

integration-test/testcases/basic.spec.ts:115

Out: 1
✓ runtime-connect-basic-authentication-1243287695, rev. 0, itest

itest~runtime-connect-basic-authentication-1243287695~0

integration-test/testcases/basic.spec.ts:3

Out: 1
✓ runtime-connect-basic-authentication-169533382, rev. 0, itest

itest~runtime-connect-basic-authentication-169533382~0

integration-test/testcases/compression.basic.spec.ts:3

Out: 1
✓ runtime-connect-basic-authentication-3914805032, rev. 0, itest

itest~runtime-connect-basic-authentication-3914805032~0

integration-test/node/package-consumer.spec.ts:8

Out: 1
✓ runtime-connect-basic-authentication-754069363, rev. 0, itest

itest~runtime-connect-basic-authentication-754069363~0

integration-test/package/consumer/node-esm.mjs:5

Out: 1
✓ runtime-connect-basic-authentication-772473056, rev. 0, itest

itest~runtime-connect-basic-authentication-772473056~0

integration-test/package/consumer/node-cjs.cjs:6

Out: 1
✓ runtime-connect-basic-authentication-826113904, rev. 0, itest

itest~runtime-connect-basic-authentication-826113904~0

integration-test/package/consumer/browser-cjs.cjs:6

Out: 1
✓ runtime-connect-basic-authentication-868503779, rev. 0, itest

itest~runtime-connect-basic-authentication-868503779~0

integration-test/package/consumer/browser-esm.mjs:5

Out: 1
✓ runtime-csv-export-cancellation-2267910132, rev. 0, itest

itest~runtime-csv-export-cancellation-2267910132~0

integration-test/node/export.spec.ts:115

Out: 1
✓ runtime-csv-export-chunked-request-stream-1806326816, rev. 0, itest

itest~runtime-csv-export-chunked-request-stream-1806326816~0

integration-test/node/http-protocol.spec.ts:118

Out: 1
✓ runtime-csv-export-compressed-file-1187814590, rev. 0, itest

itest~runtime-csv-export-compressed-file-1187814590~0

integration-test/node/export.spec.ts:99

Out: 1
✓ runtime-csv-export-compressed-file-1918274289, rev. 0, itest

itest~runtime-csv-export-compressed-file-1918274289~0

integration-test/node/export.spec.ts:20

Out: 1
✓ runtime-csv-export-destination-file-3157531383, rev. 0, itest

itest~runtime-csv-export-destination-file-3157531383~0

integration-test/node/export.spec.ts:107

Out: 1
✓ runtime-csv-export-destination-file-4223509682, rev. 0, itest

itest~runtime-csv-export-destination-file-4223509682~0

integration-test/node/export.spec.ts:17

Out: 1
✓ runtime-csv-export-file-stream-2508822095, rev. 0, itest

itest~runtime-csv-export-file-stream-2508822095~0

integration-test/node/export.spec.ts:18

Out: 1
✓ runtime-csv-export-file-stream-3051015550, rev. 0, itest

itest~runtime-csv-export-file-stream-3051015550~0

integration-test/node/export.spec.ts:82

Out: 1
✓ runtime-csv-export-file-stream-3313456032, rev. 0, itest

itest~runtime-csv-export-file-stream-3313456032~0

integration-test/node/export.spec.ts:76

Out: 1
✓ runtime-csv-export-format-options-2889994659, rev. 0, itest

itest~runtime-csv-export-format-options-2889994659~0

integration-test/node/export.spec.ts:88

Out: 1
✓ runtime-csv-export-format-options-3975475547, rev. 0, itest

itest~runtime-csv-export-format-options-3975475547~0

integration-test/node/export.spec.ts:19

Out: 1
✓ runtime-csv-import-cancellation-1376326611, rev. 0, itest

itest~runtime-csv-import-cancellation-1376326611~0

integration-test/node/import.spec.ts:68

Out: 1
✓ runtime-csv-import-file-stream-1965268677, rev. 0, itest

itest~runtime-csv-import-file-stream-1965268677~0

integration-test/node/http-protocol.spec.ts:6

Out: 1
✓ runtime-csv-import-file-stream-3107945684, rev. 0, itest

itest~runtime-csv-import-file-stream-3107945684~0

integration-test/node/import.spec.ts:19

Out: 1
✓ runtime-csv-import-file-stream-3463600543, rev. 0, itest

itest~runtime-csv-import-file-stream-3463600543~0

integration-test/node/package-consumer.spec.ts:9

Out: 1
✓ runtime-csv-import-file-stream-3898135353, rev. 0, itest

itest~runtime-csv-import-file-stream-3898135353~0

integration-test/package/consumer/node-cjs.cjs:7

Out: 1
✓ runtime-csv-import-file-stream-4091060318, rev. 0, itest

itest~runtime-csv-import-file-stream-4091060318~0

integration-test/package/consumer/node-esm.mjs:6

Out: 1
✓ runtime-csv-import-format-options-2388835526, rev. 0, itest

itest~runtime-csv-import-format-options-2388835526~0

integration-test/node/import.spec.ts:20

Out: 1
✓ runtime-csv-import-missing-target-table-2784543709, rev. 0, itest

itest~runtime-csv-import-missing-target-table-2784543709~0

integration-test/node/import.spec.ts:18

Out: 1
✓ runtime-driver-async-disposal-2517463473, rev. 0, itest

itest~runtime-driver-async-disposal-2517463473~0

integration-test/testcases/resource-management.spec.ts:12

Out: 1
✓ runtime-inflight-websocket-failure-1728176933, rev. 0, itest

itest~runtime-inflight-websocket-failure-1728176933~0

integration-test/node/connection-lifecycle.spec.ts:10

Out: 1
✓ runtime-login-metadata-351174113, rev. 0, itest

itest~runtime-login-metadata-351174113~0

integration-test/testcases/basic.spec.ts:51

Out: 1
✓ runtime-login-metadata-851316487, rev. 0, itest

itest~runtime-login-metadata-851316487~0

integration-test/testcases/basic.spec.ts:31

Out: 1
✓ runtime-node-websocket-3368625917, rev. 0, itest

itest~runtime-node-websocket-3368625917~0

integration-test/testcases/basic.spec.ts:5

Out: 1
✓ runtime-parquet-import-cancellation-830309158, rev. 0, itest

itest~runtime-parquet-import-cancellation-830309158~0

integration-test/node/import.spec.ts:194

Out: 1
✓ runtime-parquet-import-file-stream-83005395, rev. 0, itest

itest~runtime-parquet-import-file-stream-83005395~0

integration-test/node/import.spec.ts:192

Out: 1
✓ runtime-pool-async-disposal-1329484161, rev. 0, itest

itest~runtime-pool-async-disposal-1329484161~0

integration-test/testcases/resource-management.spec.ts:25

Out: 1
✓ runtime-pool-borrow-validation-1990198375, rev. 0, itest

itest~runtime-pool-borrow-validation-1990198375~0

integration-test/node/connection-lifecycle.spec.ts:98

Out: 1
✓ runtime-pool-capacity-management-2722499327, rev. 0, itest

itest~runtime-pool-capacity-management-2722499327~0

integration-test/testcases/pool.basic.spec.ts:3

Out: 1
✓ runtime-pool-shutdown-1541422317, rev. 0, itest

itest~runtime-pool-shutdown-1541422317~0

integration-test/testcases/pool.basic.spec.ts:5

Out: 1
✓ runtime-pooled-query-execution-1825895614, rev. 0, itest

itest~runtime-pooled-query-execution-1825895614~0

integration-test/testcases/pool.basic.spec.ts:4

Out: 1
✓ runtime-query-cancellation-1456678995, rev. 0, itest

itest~runtime-query-cancellation-1456678995~0

integration-test/testcases/basic.spec.ts:103

Out: 1
✓ runtime-query-cancellation-2961630480, rev. 0, itest

itest~runtime-query-cancellation-2961630480~0

integration-test/testcases/basic.spec.ts:130

Out: 1
✓ runtime-query-execution-127916806, rev. 0, itest

itest~runtime-query-execution-127916806~0

integration-test/testcases/basic.spec.ts:65

Out: 1
✓ runtime-raw-response-execution-3774508803, rev. 0, itest

itest~runtime-raw-response-execution-3774508803~0

integration-test/testcases/basic.spec.ts:117

Out: 1

req

✓ Automatically Dispose Driver Resources, rev. 1, req

req~automatically-dispose-driver-resources~1

The application developer uses TypeScript await using declarations to automatically clean up drivers, prepared statements, and connection pools when leaving scope.

Needs: scn

doc/spec/system_requirements.md:228

In: 3
Out: 1
✓ Cancel CSV File Export, rev. 1, req

req~cancel-csv-file-export~1

The Node.js application cancels an in-flight CSV file export through an AbortSignal, promptly releases the local file and export-tunnel resources, and removes the partial output file.

Needs: scn

doc/spec/system_requirements.md:360

In: 1
Out: 1
✓ Cancel CSV File Import, rev. 1, req

req~cancel-csv-file-import~1

The Node.js application cancels an in-flight CSV file import through an AbortSignal and promptly releases the local file and import-tunnel resources.

Needs: scn

doc/spec/system_requirements.md:296

In: 1
Out: 1
✓ Cancel Parquet File Import, rev. 1, req

req~cancel-parquet-file-import~1

The Node.js application cancels an in-flight local Parquet import through an AbortSignal and promptly releases the local file and import-tunnel resources.

Needs: scn

doc/spec/system_requirements.md:318

In: 1
Out: 1
✓ Cancel Running Work, rev. 1, req

req~cancel-running-work~1

The application developer cancels active database work through the driver.

Needs: scn

doc/spec/system_requirements.md:197

In: 1
Out: 1
✓ Configure CSV Export Format, rev. 1, req

req~configure-csv-export-format~1

The Node.js application configures CSV export format options including column separator, column delimiter, row separator, encoding, NULL representation, and column names.

Needs: scn

doc/spec/system_requirements.md:340

In: 1
Out: 1
✓ Configure CSV Format, rev. 1, req

req~configure-csv-format~1

The Node.js application developer configures CSV import format options including column separator, column delimiter, row separator, encoding, skipped rows, trimming, and NULL representation.

Needs: scn

doc/spec/system_requirements.md:286

In: 1
Out: 1
✓ Configure Session Attributes, rev. 2, req

req~configure-session-attributes~2

The application developer configures session attributes including autocommit, schema, compression, fetch size, and result row limit, plus login metadata including client name, client version, operating system, operating-system username, and runtime.

Needs: scn

doc/spec/system_requirements.md:394

In: 4
Out: 1
✓ Connect to Exasol, rev. 1, req

req~connect-to-exasol~1

The application developer creates a driver with database connection settings, authenticates with credentials or tokens, and establishes a database session.

Needs: scn

doc/spec/system_requirements.md:147

In: 2
Out: 1
✓ Don't Allow Disabling Encryption, rev. 1, req

req~do-not-allow-disabling-encryption~1

Disabling encryption is not possible.

Rationale:

All supported Exasol versions require encrypted connections. Unecrypted connections are rejected.

Needs: impl

doc/spec/system_requirements.md:380

In: 1
Out: 1
✓ Encrypt Connections by Default, rev. 1, req

req~encrypt-connections-by-default~1

The application developer uses encrypted WebSocket connections by default.

Needs: scn

doc/spec/system_requirements.md:370

In: 1
Out: 1
✓ Execute SQL Commands, rev. 1, req

req~execute-sql-commands~1

The application developer executes SQL commands and receives the affected row count.

Needs: scn

doc/spec/system_requirements.md:167

In: 1
Out: 1
✓ Execute SQL Queries, rev. 1, req

req~execute-sql-queries~1

The application developer executes a SQL query and retrieves result metadata and rows.

Needs: scn

doc/spec/system_requirements.md:157

In: 1
Out: 1
✓ Export Compressed Local CSV Files, rev. 1, req

req~export-compressed-local-csv-files~1

The Node.js application exports an Exasol table or query result to a new local ZIP, GZIP, or BZIP2-compressed CSV file.

Needs: scn

doc/spec/system_requirements.md:350

In: 1
Out: 1
✓ Export Local CSV Files, rev. 1, req

req~export-local-csv-files~1

The Node.js application exports an Exasol table or query result to a new local CSV file and receives the exported row count.

Needs: scn

doc/spec/system_requirements.md:330

In: 4
Out: 1
✓ Handle Unexpected WebSocket Termination, rev. 2, req

req~handle-unexpected-websocket-termination~2

The application receives a rejected command promise when the WebSocket closes or errors during database work. A connection pool discards that broken driver and validates idle drivers before handing them out, replacing a driver whose WebSocket closed while idle.

Needs: scn

doc/spec/system_requirements.md:207

In: 2
Out: 2
✓ Import Local CSV Files, rev. 1, req

req~import-local-csv-files~1

The Node.js application developer imports a readable local CSV file into a target Exasol table and receives the imported row count.

Needs: scn

doc/spec/system_requirements.md:276

In: 3
Out: 1
✓ Import Local Parquet Files, rev. 1, req

req~import-local-parquet-files~1

The Node.js application imports a readable local Parquet file into a target Exasol table and receives the imported row count when connected to Exasol 2025.1.9 or later.

Needs: scn

doc/spec/system_requirements.md:308

In: 3
Out: 1
✓ Manage a Connection Pool, rev. 1, req

req~manage-connection-pool~1

The application developer creates a connection pool with configurable minimum and maximum sizes, executes queries through it, drains it, and clears it.

Needs: scn

doc/spec/system_requirements.md:264

In: 3
Out: 1
✓ Receive Raw SQL Responses, rev. 1, req

req~receive-raw-sql-responses~1

The application developer requests raw Exasol protocol responses for queries and commands when the normalized return type is not sufficient, for example to inspect protocol fields such as status, attributes, or responseData.

Needs: scn

doc/spec/system_requirements.md:177

In: 1
Out: 1
✓ Run in Browser, rev. 2, req

req~run-in-browser~2

The application developer imports @exasol/exasol-driver-ts/browser in browser runtimes and supplies a WebSocket factory that returns the runtime-provided WebSocket implementation.

Needs: scn

doc/spec/system_requirements.md:240

In: 1
Out: 1
✓ Run in Node.js, rev. 2, req

req~run-in-nodejs~2

The application developer imports @exasol/exasol-driver-ts in Node.js runtimes and supplies a compatible Node.js WebSocket factory.

Rationale:

This keeps server-side consumers independent from the browser runtime while preserving the same package contract.

Needs: scn

doc/spec/system_requirements.md:250

In: 1
Out: 1
✓ Serialize WebSocket Command Responses, rev. 1, req

req~serialize-websocket-command-responses~1

The application can submit concurrent driver work without protocol responses being delivered to the wrong command.

Needs: scn

doc/spec/system_requirements.md:218

In: 1
Out: 1
✓ Use Prepared Statements, rev. 1, req

req~use-prepared-statements~1

The application developer creates prepared statements, executes them with positional values, and closes them.

Needs: scn

doc/spec/system_requirements.md:187

In: 1
Out: 1

scn

✓ Automatically Dispose a Connection Pool, rev. 1, scn

scn~async-dispose-connection-pool~1

  • Given* an ExasolPool in an await using declaration
  • When* execution leaves the declaration's scope
  • Then* the pool drains and clears its driver instances
Needs: dsn, uman

doc/spec/system_requirements.md:614

In: 2
Out: 1
✓ Automatically Dispose a Driver, rev. 1, scn

scn~async-dispose-driver~1

  • Given* a connected ExasolDriver in an await using declaration
  • When* execution leaves the declaration's scope
  • Then* the driver closes its database connections
Needs: dsn, uman

doc/spec/system_requirements.md:530

In: 2
Out: 1
✓ Automatically Dispose a Prepared Statement, rev. 1, scn

scn~async-dispose-prepared-statement~1

  • Given* a prepared statement in an await using declaration
  • When* execution leaves the declaration's scope
  • Then* the driver closes the prepared statement and releases its connection
Needs: dsn, uman

doc/spec/system_requirements.md:542

In: 2
Out: 1
✓ Browser Connection Uses Native WebSocket, rev. 2, scn

scn~browser-connection-uses-native-websocket~2

  • Given* a browser application with native WebSocket
  • When* the application imports @exasol/exasol-driver-ts/browser and creates a driver or pool with a factory returning new WebSocket(url)
  • Then* the driver can use the browser WebSocket implementation without resolving Node.js file or TLS modules
Needs: dsn, uman

doc/spec/system_requirements.md:554

In: 3
Out: 1
✓ CSV Export Applies Format Options, rev. 1, scn

scn~csv-export-applies-format-options~1

  • Given* a Node.js application and CSV export format options for columnSeparator, columnDelimiter, rowSeparator, encoding, null, or withColumnNames
  • When* the application calls exportToCsvFile() with those options
  • Then* the driver adds the corresponding Exasol EXPORT INTO CSV format clauses
Needs: dsn, uman

doc/spec/system_requirements.md:788

In: 2
Out: 1
✓ CSV Export Compressed File Succeeds, rev. 1, scn

scn~csv-export-compressed-file-succeeds~1

  • Given* a Node.js application, an authenticated driver, an Exasol table or parenthesized SELECT query, and a new destination path ending in .zip, .gz, or .bz2
  • When* the application calls exportToCsvFile()
  • Then* the driver requests the matching compressed export file from Exasol and writes its compressed bytes unchanged to the local destination
Needs: dsn, uman

doc/spec/system_requirements.md:764

In: 3
Out: 1
✓ CSV Export Is Cancelled, rev. 1, scn

scn~csv-export-is-cancelled~1

  • Given* a Node.js application exporting a local CSV file with an AbortSignal
  • When* the application aborts the signal while the export is in flight
  • Then* the driver stops receiving export data, closes the export tunnel, aborts the server-side export query, removes the partial local file, and rejects promptly with an AbortError using E-EDJS-31
Needs: dsn, uman

doc/spec/system_requirements.md:812

In: 2
Out: 1
✓ CSV Export Query Succeeds, rev. 1, scn

scn~csv-export-query-succeeds~1

  • Given* a Node.js application, an authenticated driver, a parenthesized Exasol SELECT query, and a destination path that does not exist
  • When* the application calls exportToCsvFile()
  • Then* the driver streams the query result as CSV data through Exasol's export tunnel into the new local file and resolves with the exported row count
Needs: dsn, uman

doc/spec/system_requirements.md:752

In: 3
Out: 1
✓ CSV Export Rejects Existing Destination, rev. 1, scn

scn~csv-export-rejects-existing-destination~1

  • Given* a Node.js application, an authenticated driver, and a destination path that already exists
  • When* the application calls exportToCsvFile()
  • Then* the driver rejects before opening the export tunnel with error code E-EDJS-30 and leaves the existing file unchanged
Needs: dsn, uman

doc/spec/system_requirements.md:776

In: 3
Out: 1
✓ CSV Export Streams Chunked Request Bodies, rev. 1, scn

scn~csv-export-streams-chunked-request-body~1

  • Given* an in-flight CSV export whose tunnel sends an HTTP request with Transfer-Encoding: chunked
  • When* the driver receives the request body
  • Then* the driver decodes the HTTP chunks and writes their payload data to the destination file
Needs: dsn

doc/spec/system_requirements.md:800

In: 1
Out: 1
✓ CSV Export Table Succeeds, rev. 1, scn

scn~csv-export-table-succeeds~1

  • Given* a Node.js application, an authenticated driver, an Exasol table, and a destination path that does not exist
  • When* the application calls exportToCsvFile()
  • Then* the driver streams the exported CSV data through Exasol's export tunnel into the new local file and resolves with the exported row count
Needs: dsn, uman

doc/spec/system_requirements.md:740

In: 3
Out: 1
✓ CSV Import Applies Format Options, rev. 1, scn

scn~csv-import-applies-format-options~1

  • Given* a Node.js application and CSV format options for columnSeparator, columnDelimiter, rowSeparator, encoding, skip, trim, or null
  • When* the application calls importFromCsvFile() with those options
  • Then* the driver adds the corresponding Exasol IMPORT FROM CSV format clauses
Needs: dsn

doc/spec/system_requirements.md:664

In: 1
Out: 1
✓ CSV Import Is Cancelled, rev. 1, scn

scn~csv-import-is-cancelled~1

  • Given* a Node.js application importing a local CSV file with an AbortSignal
  • When* the application aborts the signal while the import is in flight
  • Then* the driver stops streaming the file, closes the import tunnel, aborts the server-side import query, and rejects promptly with an AbortError
Needs: dsn, uman

doc/spec/system_requirements.md:676

In: 2
Out: 1
✓ CSV Import Rejects Missing File, rev. 1, scn

scn~csv-import-rejects-missing-file~1

  • Given* a Node.js application and an authenticated driver
  • When* the application calls importFromCsvFile() with a missing or unreadable file path
  • Then* the driver rejects before opening the import tunnel and reports a file-not-found error
Needs: dsn

doc/spec/system_requirements.md:652

In: 1
Out: 1
✓ CSV Import Rejects Missing Target Table, rev. 1, scn

scn~csv-import-rejects-missing-target-table~1

  • Given* a Node.js application, an authenticated driver, a readable local CSV file, and a target table name that does not exist
  • When* the application calls importFromCsvFile()
  • Then* the driver rejects with the SQL error returned by Exasol for the missing table
Needs: dsn

doc/spec/system_requirements.md:640

In: 1
Out: 1
✓ CSV Import Succeeds, rev. 1, scn

scn~csv-import-succeeds~1

  • Given* a Node.js application, an authenticated driver, a readable local CSV file, and an existing target table
  • When* the application calls importFromCsvFile()
  • Then* the driver streams the file through Exasol's import tunnel and resolves with the imported row count
Needs: dsn

doc/spec/system_requirements.md:628

In: 2
Out: 1
✓ Cancel Active Work, rev. 1, scn

scn~cancel-active-work~1

  • Given* an active database operation
  • When* the application calls the provided cancel function or driver.cancel()
  • Then* the driver sends an Exasol abort query command
Needs: dsn

doc/spec/system_requirements.md:482

In: 1
Out: 1
✓ Configured Fetch Size Used During Fetch, rev. 1, scn

scn~configured-fetch-size-used-during-fetch~1

  • Given* a configured fetchSize value and a query result with more rows available
  • When* the driver fetches additional result data
  • Then* each fetch command requests the configured number of bytes from Exasol
Needs: dsn, uman

doc/spec/system_requirements.md:880

In: 2
Out: 1
✓ Connect With Basic Authentication, rev. 1, scn

scn~connect-with-basic-authentication~1

  • Given* a configured driver with host, port, user, password, encryption setting, and WebSocket factory
  • When* the application calls connect()
  • Then* the driver opens a WebSocket connection, performs the Exasol login flow, and resolves after the session is authenticated
Needs: dsn

doc/spec/system_requirements.md:406

In: 1
Out: 1
✓ Encrypted Connection by Default, rev. 1, scn

scn~encrypted-connection-by-default~1

  • Given* a driver configuration that does not override encryption
  • When* the application connects
  • Then* the driver builds a secure WebSocket URL by default
Needs: dsn

doc/spec/system_requirements.md:826

In: 1
Out: 1
✓ Execute Returns Row Count, rev. 1, scn

scn~execute-returns-row-count~1

  • Given* an authenticated driver and a SQL statement that returns a row count
  • When* the application calls execute()
  • Then* the driver returns the row count
Needs: dsn

doc/spec/system_requirements.md:442

In: 1
Out: 1
✓ Login Metadata Sent During Login, rev. 1, scn

scn~login-metadata-sent-during-login~1

  • Given* a driver configuration with explicit client operating-system, operating-system username, and runtime metadata
  • When* the application connects with basic or token authentication
  • Then* the driver sends that metadata and identifies itself with the package version in the login command; when a value is not configured, it reports best-effort values from the active Node.js or browser platform without adding a runtime dependency
Needs: dsn, uman

doc/spec/system_requirements.md:852

In: 2
Out: 1
✓ Node Connection Uses Injected WebSocket, rev. 2, scn

scn~node-connection-uses-injected-websocket~2

  • Given* a Node.js application with a WebSocket implementation such as ws
  • When* the application creates a driver with a factory returning a compatible WebSocket
  • Then* the driver can connect with the supplied Node.js WebSocket implementation
Needs: dsn

doc/spec/system_requirements.md:566

In: 1
Out: 1
✓ Parquet Import Is Cancelled, rev. 1, scn

scn~parquet-import-is-cancelled~1

  • Given* a Node.js application importing a local Parquet file with an AbortSignal
  • When* the application aborts the signal while the import is in flight
  • Then* the driver stops streaming the file, closes the import tunnel, aborts the server-side import query, and rejects promptly with an AbortError using E-EDJS-37
Needs: dsn, uman

doc/spec/system_requirements.md:726

In: 2
Out: 1
✓ Parquet Import Rejects Missing File, rev. 1, scn

scn~parquet-import-rejects-missing-file~1

  • Given* a Node.js application and an authenticated driver
  • When* the application calls importFromParquetFile() with a missing or unreadable file path
  • Then* the driver rejects before opening the import tunnel and reports a file-not-found error
Needs: dsn

doc/spec/system_requirements.md:702

In: 1
Out: 1
✓ Parquet Import Rejects Unsupported Exasol Versions, rev. 1, scn

scn~parquet-import-rejects-unsupported-server~1

  • Given* a Node.js application, an authenticated driver connected to an Exasol version before 2025.1.9, a readable local Parquet file, and an existing target table
  • When* the application calls importFromParquetFile()
  • Then* the driver rejects with Exasol's message that explains Parquet import is unavailable
Needs: dsn

doc/spec/system_requirements.md:714

In: 1
Out: 1
✓ Parquet Import Succeeds, rev. 1, scn

scn~parquet-import-succeeds~1

  • Given* a Node.js application, an authenticated driver connected to Exasol 2025.1.9 or later, a readable local Parquet file, and an existing target table
  • When* the application calls importFromParquetFile()
  • Then* the driver streams the original file bytes through Exasol's import tunnel and resolves with the imported row count
Needs: dsn, uman

doc/spec/system_requirements.md:690

In: 2
Out: 1
✓ Pool Enforces Configured Size Limits, rev. 1, scn

scn~pool-enforces-configured-size-limits~1

  • Given* a configured ExasolPool with minimum and maximum pool sizes
  • When* the application submits more concurrent work than one driver can serve
  • Then* the pool creates and reuses driver instances without exceeding the configured pool size limits
Needs: dsn

doc/spec/system_requirements.md:590

In: 2
Out: 1
✓ Pool Reuses Drivers for Queries, rev. 1, scn

scn~pool-reuses-drivers-for-queries~1

  • Given* a configured ExasolPool
  • When* the application submits multiple queries
  • Then* the pool acquires driver instances, runs the queries, and releases drivers after each operation
Needs: dsn

doc/spec/system_requirements.md:578

In: 2
Out: 1
✓ Pool Shutdown, rev. 1, scn

scn~pool-shutdown~1

  • Given* a configured ExasolPool
  • When* the application calls drain() and then clear()
  • Then* the pool stops accepting new work and closes pooled driver instances
Needs: dsn

doc/spec/system_requirements.md:602

In: 2
Out: 1
✓ Prepared Statement Execution, rev. 1, scn

scn~prepared-statement-execution~1

  • Given* an authenticated driver and a SQL statement with parameters
  • When* the application prepares the statement, executes it with a value count matching the parameter columns, and closes it
  • Then* the driver sends Exasol prepared-statement commands and releases the underlying connection when the statement is closed
Needs: dsn

doc/spec/system_requirements.md:470

In: 1
Out: 1
✓ Query Returns Rows, rev. 1, scn

scn~query-returns-rows~1

  • Given* an authenticated driver and a SQL statement that returns a result set
  • When* the application calls query()
  • Then* the driver fetches all required result data, closes the remote result set, and returns a QueryResult exposing columns and row objects
Needs: dsn

doc/spec/system_requirements.md:430

In: 1
Out: 1
✓ Raw Response Requested, rev. 1, scn

scn~raw-response-requested~1

  • Given* an authenticated driver
  • When* the application calls query() or execute() with responseType set to raw
  • Then* the driver returns the Exasol protocol response instead of converting it to a QueryResult or row count
Comment:

A protocol response is the low-level object returned by the Exasol WebSocket API, for example a SQLResponse<SQLQueriesResponse> with fields such as status, attributes, responseData, and optional exception.

Needs: dsn

doc/spec/system_requirements.md:454

In: 1
Out: 1
✓ Reject Missing Credentials, rev. 1, scn

scn~reject-missing-credentials~1

  • Given* a configured driver without user/password and without access or refresh token
  • When* the application calls connect()
  • Then* the driver rejects the connection attempt with an invalid-credentials error
Needs: dsn

doc/spec/system_requirements.md:418

In: 1
Out: 1
✓ Reject a Command on Unexpected WebSocket Termination, rev. 1, scn

scn~reject-command-on-unexpected-websocket-termination~1

  • Given* an authenticated driver or pooled driver executing a database command
  • When* its WebSocket emits an error or closes before a response arrives
  • Then* the command rejects with available socket failure details, the connection is no longer active, and a pool discards the broken driver before later requests
Needs: dsn

doc/spec/system_requirements.md:494

In: 1
Out: 1
✓ Replace an Idle-Closed Pooled Driver, rev. 1, scn

scn~replace-idle-closed-pooled-driver~1

  • Given* a released driver in an ExasolPool whose WebSocket closes while idle
  • When* the application submits a later query
  • Then* the pool validates the driver, destroys it when invalid, creates a replacement, and executes the query with the replacement
Needs: dsn

doc/spec/system_requirements.md:518

In: 2
Out: 1
✓ Result Row Limit Applied During Fetch, rev. 1, scn

scn~result-row-limit-applied-during-fetch~1

  • Given* a configured resultSetMaxRows value and a query result with more rows available
  • When* the driver fetches additional result data
  • Then* the driver stops appending rows after the configured maximum, even if Exasol can provide more rows
Comment:

The driver applies this limit while assembling the fetched result pages. It does not change the SQL statement or send a separate server-side row-limit command.

Needs: dsn

doc/spec/system_requirements.md:864

In: 1
Out: 1
✓ Serialize WebSocket Command Responses, rev. 1, scn

scn~serialize-websocket-command-responses~1

  • Given* a connection with more than one response-producing protocol command submitted
  • When* Exasol returns protocol responses
  • Then* the driver sends and resolves the commands in submission order, while an abortQuery cancellation command is sent immediately without waiting for a response
Needs: dsn

doc/spec/system_requirements.md:506

In: 1
Out: 1
✓ Session Attributes Sent During Login, rev. 1, scn

scn~session-attributes-sent-during-login~1

  • Given* a driver configuration with session attributes
  • When* the application connects
  • Then* the driver sends supported attributes such as autocommit, schema, and compression during login
Needs: dsn

doc/spec/system_requirements.md:840

In: 1
Out: 1

uman

✓ async-dispose-connection-pool-3014535674, rev. 0, uman

uman~async-dispose-connection-pool-3014535674~0

doc/user_guide/user_guide.md:67

Out: 1
✓ async-dispose-driver-2334683095, rev. 0, uman

uman~async-dispose-driver-2334683095~0

doc/user_guide/user_guide.md:46

Out: 1
✓ async-dispose-prepared-statement-2102051960, rev. 0, uman

uman~async-dispose-prepared-statement-2102051960~0

doc/user_guide/user_guide.md:49

Out: 1
✓ browser-connection-uses-native-websocket-2726923473, rev. 0, uman

uman~browser-connection-uses-native-websocket-2726923473~0

doc/user_guide/user_guide.md:114

Out: 1
✓ configured-fetch-size-used-during-fetch-3195286811, rev. 0, uman

uman~configured-fetch-size-used-during-fetch-3195286811~0

doc/user_guide/user_guide.md:430

Out: 1
✓ csv-export-applies-format-options-1850736022, rev. 0, uman

uman~csv-export-applies-format-options-1850736022~0

doc/user_guide/user_guide.md:355

Out: 1
✓ csv-export-compressed-file-succeeds-781333720, rev. 0, uman

uman~csv-export-compressed-file-succeeds-781333720~0

doc/user_guide/user_guide.md:390

Out: 1
✓ csv-export-is-cancelled-3080108810, rev. 0, uman

uman~csv-export-is-cancelled-3080108810~0

doc/user_guide/user_guide.md:397

Out: 1
✓ csv-export-query-succeeds-523741490, rev. 0, uman

uman~csv-export-query-succeeds-523741490~0

doc/user_guide/user_guide.md:345

Out: 1
✓ csv-export-rejects-existing-destination-1797395252, rev. 0, uman

uman~csv-export-rejects-existing-destination-1797395252~0

doc/user_guide/user_guide.md:366

Out: 1
✓ csv-export-table-succeeds-4145859515, rev. 0, uman

uman~csv-export-table-succeeds-4145859515~0

doc/user_guide/user_guide.md:338

Out: 1
✓ csv-import-is-cancelled-4045933699, rev. 0, uman

uman~csv-import-is-cancelled-4045933699~0

doc/user_guide/user_guide.md:271

Out: 1
✓ login-metadata-sent-during-login-3091610967, rev. 0, uman

uman~login-metadata-sent-during-login-3091610967~0

doc/user_guide/user_guide.md:424

Out: 1
✓ parquet-import-is-cancelled-2414044212, rev. 0, uman

uman~parquet-import-is-cancelled-2414044212~0

doc/user_guide/user_guide.md:317

Out: 1
✓ parquet-import-succeeds-2522115579, rev. 0, uman

uman~parquet-import-succeeds-2522115579~0

doc/user_guide/user_guide.md:303

Out: 1

utest

✓ decision-publish-cjs-and-esm-3617751281, rev. 0, utest

utest~decision-publish-cjs-and-esm-3617751281~0

src/browser.spec.dom.ts:5

Out: 1
✓ runtime-browser-websocket-198584189, rev. 0, utest

utest~runtime-browser-websocket-198584189~0

src/browser.spec.dom.ts:6

Out: 1
✓ runtime-command-execution-1069434585, rev. 0, utest

utest~runtime-command-execution-1069434585~0

src/lib/sql-client.spec.node.ts:306

Out: 1
✓ runtime-csv-export-cancellation-1461106964, rev. 0, utest

utest~runtime-csv-export-cancellation-1461106964~0

src/lib/import/csv-file-export.spec.node.ts:73

Out: 1
✓ runtime-csv-export-chunked-request-stream-1464646415, rev. 0, utest

utest~runtime-csv-export-chunked-request-stream-1464646415~0

src/lib/import/http-protocol.spec.node.ts:88

Out: 1
✓ runtime-csv-export-chunked-request-stream-2065247288, rev. 0, utest

utest~runtime-csv-export-chunked-request-stream-2065247288~0

src/lib/import/chunked-http-body.spec.node.ts:4

Out: 1
✓ runtime-csv-export-compressed-file-2150967243, rev. 0, utest

utest~runtime-csv-export-compressed-file-2150967243~0

src/lib/import/export-sql-builder.spec.node.ts:5

Out: 1
✓ runtime-csv-export-destination-file-1483480713, rev. 0, utest

utest~runtime-csv-export-destination-file-1483480713~0

src/lib/import/csv-file-export.spec.node.ts:21

Out: 1
✓ runtime-csv-export-file-stream-1003536193, rev. 0, utest

utest~runtime-csv-export-file-stream-1003536193~0

src/lib/import/csv-file-export.spec.node.ts:22

Out: 1
✓ runtime-csv-export-format-options-4162490999, rev. 0, utest

utest~runtime-csv-export-format-options-4162490999~0

src/lib/import/export-sql-builder.spec.node.ts:4

Out: 1
✓ runtime-csv-import-cancellation-1324643134, rev. 0, utest

utest~runtime-csv-import-cancellation-1324643134~0

src/lib/import/local-file-import.spec.node.ts:51

Out: 1
✓ runtime-csv-import-cancellation-2000859339, rev. 0, utest

utest~runtime-csv-import-cancellation-2000859339~0

src/lib/import/http-transport.spec.node.ts:43

Out: 1
✓ runtime-csv-import-cancellation-3487823066, rev. 0, utest

utest~runtime-csv-import-cancellation-3487823066~0

src/lib/import/csv-file-import.spec.node.ts:69

Out: 1
✓ runtime-csv-import-file-readability-check-1232825326, rev. 0, utest

utest~runtime-csv-import-file-readability-check-1232825326~0

src/lib/sql-client.spec.node.ts:417

Out: 1
✓ runtime-csv-import-file-readability-check-2739475730, rev. 0, utest

utest~runtime-csv-import-file-readability-check-2739475730~0

src/lib/import/csv-file-import.spec.node.ts:16

Out: 1
✓ runtime-csv-import-file-stream-1316881174, rev. 0, utest

utest~runtime-csv-import-file-stream-1316881174~0

src/lib/import/http-protocol.spec.node.ts:9

Out: 1
✓ runtime-csv-import-file-stream-324661538, rev. 0, utest

utest~runtime-csv-import-file-stream-324661538~0

src/lib/import/http-transport.spec.node.ts:6

Out: 1
✓ runtime-csv-import-file-stream-3384287420, rev. 0, utest

utest~runtime-csv-import-file-stream-3384287420~0

src/lib/import/tls-transport.spec.node.ts:5

Out: 1
✓ runtime-csv-import-file-stream-765325271, rev. 0, utest

utest~runtime-csv-import-file-stream-765325271~0

src/lib/import/local-file-import.spec.node.ts:15

Out: 1
✓ runtime-csv-import-format-options-1979285367, rev. 0, utest

utest~runtime-csv-import-format-options-1979285367~0

src/lib/import/import-sql-builder.spec.node.ts:4

Out: 1
✓ runtime-driver-async-disposal-660439739, rev. 0, utest

utest~runtime-driver-async-disposal-660439739~0

src/lib/sql-client.spec.node.ts:45

Out: 1
✓ runtime-inflight-websocket-failure-1048387411, rev. 0, utest

utest~runtime-inflight-websocket-failure-1048387411~0

src/lib/connection.spec.ts:142

Out: 1
✓ runtime-inflight-websocket-failure-1059631773, rev. 0, utest

utest~runtime-inflight-websocket-failure-1059631773~0

src/lib/connection.spec.ts:127

Out: 1
✓ runtime-inflight-websocket-failure-1718567320, rev. 0, utest

utest~runtime-inflight-websocket-failure-1718567320~0

src/lib/sql-client.spec.node.ts:109

Out: 1
✓ runtime-inflight-websocket-failure-2097278445, rev. 0, utest

utest~runtime-inflight-websocket-failure-2097278445~0

src/lib/connection.spec.ts:185

Out: 1
✓ runtime-inflight-websocket-failure-2820701088, rev. 0, utest

utest~runtime-inflight-websocket-failure-2820701088~0

src/lib/connection.spec.ts:155

Out: 1
✓ runtime-inflight-websocket-failure-3291807596, rev. 0, utest

utest~runtime-inflight-websocket-failure-3291807596~0

src/lib/errors/errors.spec.dom.ts:14

Out: 1
✓ runtime-inflight-websocket-failure-3589086875, rev. 0, utest

utest~runtime-inflight-websocket-failure-3589086875~0

src/lib/errors/errors.spec.ts:37

Out: 1
✓ runtime-inflight-websocket-failure-4264556280, rev. 0, utest

utest~runtime-inflight-websocket-failure-4264556280~0

src/lib/sql-client.spec.node.ts:81

Out: 1
✓ runtime-login-metadata-1452329639, rev. 0, utest

utest~runtime-login-metadata-1452329639~0

src/lib/login-options.spec.ts:4

Out: 1
✓ runtime-login-metadata-152923217, rev. 0, utest

utest~runtime-login-metadata-152923217~0

src/lib/login-options.spec.node.ts:4

Out: 1
✓ runtime-login-metadata-2264299369, rev. 0, utest

utest~runtime-login-metadata-2264299369~0

src/lib/sql-client.spec.node.ts:59

Out: 1
✓ runtime-login-metadata-3633702368, rev. 0, utest

utest~runtime-login-metadata-3633702368~0

src/lib/login-options.spec.ts:28

Out: 1
✓ runtime-login-metadata-4039312502, rev. 0, utest

utest~runtime-login-metadata-4039312502~0

src/lib/login-options.spec.node.ts:23

Out: 1
✓ runtime-parquet-import-cancellation-3122759462, rev. 0, utest

utest~runtime-parquet-import-cancellation-3122759462~0

src/lib/import/parquet-file-import.spec.node.ts:52

Out: 1
✓ runtime-parquet-import-file-readability-check-2683025607, rev. 0, utest

utest~runtime-parquet-import-file-readability-check-2683025607~0

src/lib/sql-client.spec.node.ts:445

Out: 1
✓ runtime-parquet-import-file-readability-check-3536872765, rev. 0, utest

utest~runtime-parquet-import-file-readability-check-3536872765~0

src/lib/import/parquet-file-import.spec.node.ts:15

Out: 1
✓ runtime-parquet-import-file-stream-1154394782, rev. 0, utest

utest~runtime-parquet-import-file-stream-1154394782~0

src/lib/import/http-protocol.spec.node.ts:304

Out: 1
✓ runtime-parquet-import-file-stream-3743433524, rev. 0, utest

utest~runtime-parquet-import-file-stream-3743433524~0

src/lib/import/parquet-file-import.spec.node.ts:32

Out: 1
✓ runtime-parquet-import-file-stream-3965780528, rev. 0, utest

utest~runtime-parquet-import-file-stream-3965780528~0

src/lib/import/import-sql-builder.spec.node.ts:86

Out: 1
✓ runtime-pool-async-disposal-2771544764, rev. 0, utest

utest~runtime-pool-async-disposal-2771544764~0

src/lib/exasol-pool.spec.ts:5

Out: 1
✓ runtime-prepared-statement-async-disposal-3412096965, rev. 0, utest

utest~runtime-prepared-statement-async-disposal-3412096965~0

src/lib/statement.spec.ts:96

Out: 1
✓ runtime-query-cancellation-991788134, rev. 0, utest

utest~runtime-query-cancellation-991788134~0

src/lib/sql-client.spec.node.ts:476

Out: 1
✓ runtime-query-execution-3743171727, rev. 0, utest

utest~runtime-query-execution-3743171727~0

src/lib/sql-client.spec.node.ts:144

Out: 1
✓ runtime-query-fetch-size-766941907, rev. 0, utest

utest~runtime-query-fetch-size-766941907~0

src/lib/sql-client.spec.node.ts:202

Out: 1
✓ runtime-raw-response-execution-3076921389, rev. 0, utest

utest~runtime-raw-response-execution-3076921389~0

src/lib/sql-client.spec.node.ts:349

Out: 1
✓ runtime-raw-response-execution-882077746, rev. 0, utest

utest~runtime-raw-response-execution-882077746~0

src/lib/sql-client.spec.node.ts:247

Out: 1
✓ runtime-reject-missing-credentials-1757681918, rev. 0, utest

utest~runtime-reject-missing-credentials-1757681918~0

src/lib/sql-client.spec.dom.ts:4

Out: 1
✓ runtime-reject-missing-credentials-1835330977, rev. 0, utest

utest~runtime-reject-missing-credentials-1835330977~0

src/lib/sql-client.spec.node.ts:33

Out: 1
✓ runtime-response-command-serialization-173805517, rev. 0, utest

utest~runtime-response-command-serialization-173805517~0

src/lib/response-command-queue.spec.ts:4

Out: 1
✓ runtime-response-command-serialization-3808177681, rev. 0, utest

utest~runtime-response-command-serialization-3808177681~0

src/lib/connection.spec.ts:168

Out: 1
✓ runtime-response-command-serialization-827492509, rev. 0, utest

utest~runtime-response-command-serialization-827492509~0

src/lib/connection.spec.ts:109

Out: 1