Package Exports
- trino-client
- trino-client/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (trino-client) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
trino-js-client
Join us on Trino Slack in #core-dev to discuss and help this project.
Features
- Connections over HTTP or HTTPS
- Supports HTTP Basic Authentication
- Per-query user information for access control
Requirements
- Node 12 or newer.
- Trino 0.16x or newer.
Install
npm install trino-client or yarn add trino-client
Usage
For additional info on all available methods and types have a look at the
API documentation.
Create a Trino client
const trino: Trino = Trino.create({
server: 'http://localhost:8080',
catalog: 'tpcds',
schema: 'sf100000',
auth: new BasicAuth('test'),
});Submit a query
const iter: Iterator<QueryResult> = await trino.query(
'select * from customer limit 100'
);Iterate through the query results
for await (const queryResult of iter) {
console.log(queryResult.data);
}Alternative: map and aggregate the data
const data: QueryData[] = await iter
.map(r => r.data ?? [])
.fold<QueryData[]>([], (row, acc) => [...acc, ...row]);Examples
More usage examples can be found in the integration tests.
Build
Use the following commands to build the project locally with your modifications, and in preparation to contribute a pull request.
Requirements:
- yarn
Install dependencies:
yarn install --frozen-lockfileLint the source code:
yarn test:lintBuild:
yarn buildA successful build run does not produce any message on the terminal.
Integration test
Integration tests run against a Trino server running on your workstation.
Requirements:
Create a cluster:
kind create clusterDeploy Trino:
kubectl apply -f tests/it/trino.ymlWait for pods to be ready:
kubectl wait --for=condition=ready pods -n trino-system --all --timeout=120sEnsure Trino is running and available on port 8080. Run the following
command in a separate terminal:
kubectl -n trino-system port-forward svc/trino 8080:8080Run tests:
yarn test:it --testTimeout=60000Output should look similar to the following:
PASS tests/it/client.spec.ts
trino
✓ exhaust query results (1567 ms)
✓ close running query (200 ms)
✓ cancel running query (17 ms)
✓ get query info (1 ms)
✓ client extra header propagation
✓ query request header propagation (88 ms)
✓ QueryResult has error info
✓ QueryInfo has failure info (1 ms)
✓ prepare statement (98 ms)
✓ multiple prepare statement (432 ms)
Test Suites: 1 passed, 1 total
Tests: 10 passed, 10 total
Snapshots: 0 total
Time: 3.457 s
Ran all test suites matching /tests\/it/i.Remove the cluster:
kind delete clusterContributing
Follow the Trino contribution guidelines and contact us on Slack and GitHub.
Copyright Trino JS Client contributors 2022-present
Releasing
Releases are automated with GitHub Actions and only require a pull request
that updates the version in package.json. For example, see
PR 723