Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
177 commits
Select commit Hold shift + click to select a range
417ccbd
chore: add pull request review skill
glasstiger Aug 17, 2026
b3fdbaa
fix: omit nullish column values
glasstiger Aug 17, 2026
8d2629f
chore: update pull request review skill
glasstiger Aug 17, 2026
757fe17
feat(qwp): add browser-safe protocol core
glasstiger Aug 17, 2026
f233db2
feat(qwp): add websocket ingress sessions
glasstiger Aug 17, 2026
a44587d
feat(qwp): add egress query sessions
glasstiger Aug 17, 2026
253994b
test(qwp): add authenticated browser e2e
glasstiger Aug 17, 2026
eaa1705
feat(qwp): support durable acknowledgements
glasstiger Aug 17, 2026
22cd5fd
feat(qwp): negotiate server batch limits
glasstiger Aug 17, 2026
e2adc3b
feat(qwp): classify websocket upgrade failures
glasstiger Aug 17, 2026
6352720
feat(qwp): apply websocket send backpressure
glasstiger Aug 17, 2026
75c4484
feat(qwp): add reconnect failover and replay
glasstiger Aug 17, 2026
c98135a
feat(qwp): add typed query binds
glasstiger Aug 17, 2026
020d5d5
ci(qwp): dispatch Enterprise durable ack e2e
glasstiger Aug 17, 2026
dd775a7
feat(qwp): add high-level sender API
glasstiger Aug 17, 2026
e7e3953
feat(qwp): complete ingress symbol dictionary deltas
glasstiger Aug 17, 2026
c321750
feat(qwp): harden resource cleanup and timeouts
glasstiger Aug 17, 2026
331e6a4
feat(qwp): add zstd egress decompression
glasstiger Aug 17, 2026
d14f754
feat(qwp): complete compression negotiation and tuning
glasstiger Aug 17, 2026
a337486
feat(qwp): negotiate durable ACKs in browsers
glasstiger Aug 17, 2026
c27e72e
feat(qwp): automate egress credit and timeouts
glasstiger Aug 17, 2026
05f6c98
feat(qwp): split ingress batches to server cap
glasstiger Aug 18, 2026
49975c6
feat(qwp): bootstrap browser authentication sessions
glasstiger Aug 18, 2026
d5b6454
feat(qwp): add transactional sender mode
glasstiger Aug 18, 2026
62f9bf5
feat(qwp): add ingress observability metrics
glasstiger Aug 18, 2026
a635a5c
docs(qwp): document public API and migration
glasstiger Aug 18, 2026
0a9c0bc
fix(qwp): discard recovered deferred transaction tails
glasstiger Aug 18, 2026
0098ed3
fix(qwp): trim cumulative durable transaction ACKs
glasstiger Aug 18, 2026
7f96403
feat(qwp): add offline store-and-forward publishing
glasstiger Aug 18, 2026
c8f9135
fix(qwp): lock replay directories exclusively
glasstiger Aug 18, 2026
eff6f14
fix(qwp): bound egress cancellation draining
glasstiger Aug 18, 2026
69f5eaf
fix(qwp): bound egress buffering by default
glasstiger Aug 18, 2026
ffd7e7d
fix(qwp): detect poisoned ingress replays
glasstiger Aug 18, 2026
777f8ca
fix(qwp): preserve replay journal liveness
glasstiger Aug 18, 2026
88b2139
feat(qwp): add topology-aware endpoint routing
glasstiger Aug 18, 2026
b765899
feat(qwp): add pooled client facade
glasstiger Aug 18, 2026
3a7a431
feat(qwp): drain orphaned replay slots
glasstiger Aug 18, 2026
402e98e
feat(qwp): expose ingress ack watermarks
glasstiger Aug 18, 2026
3a48971
feat(qwp): add store-forward durability policies
glasstiger Aug 18, 2026
9652483
feat(qwp): add byte-based auto flush
glasstiger Aug 18, 2026
0d9c23b
feat(qwp): drain ingress on sender close
glasstiger Aug 18, 2026
3b96563
feat(qwp): add reusable egress column views
glasstiger Aug 18, 2026
9cfc95d
fix(qwp): reconcile durable symbol dictionary on publish failure
glasstiger Aug 18, 2026
5a8c71b
fix(qwp): fall back when symbol persistence fails
glasstiger Aug 18, 2026
85e9e66
fix(qwp): preserve borrowed resources during client close
glasstiger Aug 18, 2026
6e0f83b
feat(qwp): negotiate browser caps and compression
glasstiger Aug 18, 2026
4d63635
feat(qwp): align store-forward retry policies
glasstiger Aug 18, 2026
806e7a0
fix(qwp): retire drained symbol dictionaries
glasstiger Aug 18, 2026
209c7e8
feat(qwp): bound egress result batches
glasstiger Aug 18, 2026
c298ec7
feat(qwp): add reusable egress row views
glasstiger Aug 18, 2026
58bf575
fix(qwp): omit unsupported query flags
glasstiger Aug 18, 2026
a7e5611
fix(qwp): re-encode queries after failover
glasstiger Aug 18, 2026
1e27bc4
feat(qwp): expose failover server info
glasstiger Aug 18, 2026
3fbe982
feat(qwp): reap aged pooled connections
glasstiger Aug 18, 2026
4a57aa3
fix(qwp): close borrowed query sessions
glasstiger Aug 18, 2026
61fcd14
feat(qwp): split Node connection timeouts
glasstiger Aug 18, 2026
9c72dd3
feat(qwp): jitter reconnect backoff
glasstiger Aug 18, 2026
30f0c2f
feat(qwp): unify Node client configuration
glasstiger Aug 18, 2026
564cc68
docs(qwp): correct browser compression negotiation
glasstiger Aug 18, 2026
6bb56e9
fix(qwp): rotate endpoints after not-writable nack
glasstiger Aug 18, 2026
387f646
fix(qwp): recover persistent replay slots
glasstiger Aug 18, 2026
5e0b243
fix(qwp): align egress failover with Java client
glasstiger Aug 18, 2026
818379f
feat(qwp): enable ingress reconnect by default
glasstiger Aug 18, 2026
49f7a9e
fix(qwp): align unified config with Java client
glasstiger Aug 18, 2026
d5d9d9a
feat(qwp): isolate observability callbacks
glasstiger Aug 18, 2026
e975044
feat(qwp): add segmented replay and UDP ingress
glasstiger Aug 18, 2026
c302d81
fix(qwp): retain rows until local publication
glasstiger Aug 18, 2026
ba9cee6
fix(qwp): retry durable ack capability gaps
glasstiger Aug 18, 2026
2d834ff
fix(qwp): rebuild recoverable symbol sidecars
glasstiger Aug 18, 2026
3b54005
fix(qwp): report asynchronous sender failures
glasstiger Aug 18, 2026
40b6013
feat(qwp): expose current egress server info
glasstiger Aug 18, 2026
745054f
feat(qwp): unify browser cluster configuration
glasstiger Aug 19, 2026
f3b7739
feat(qwp): add fixed-segment replay store
glasstiger Aug 19, 2026
514da34
feat(qwp): adopt cross-client SFA persistence format
glasstiger Aug 19, 2026
3a9b092
fix(qwp): coordinate SFA ownership across clients
glasstiger Aug 19, 2026
ef07a22
fix(qwp): align identifier handling with Java
glasstiger Aug 19, 2026
948f1c1
fix(qwp): bound in-memory replay
glasstiger Aug 19, 2026
1d881d8
fix(qwp): align flush publication semantics
glasstiger Aug 19, 2026
8b737d8
fix(qwp): recover idle pooled SFA slots
glasstiger Aug 19, 2026
42722cc
fix(qwp): share failover health across drainers
glasstiger Aug 19, 2026
43debcf
feat(qwp): unify Sender WebSocket configuration
glasstiger Aug 19, 2026
1267de2
perf(qwp): decode result views ahead
glasstiger Aug 19, 2026
a39865d
fix(qwp): align egress flow control defaults
glasstiger Aug 19, 2026
61cb47f
perf(qwp): streamline store-and-forward persistence
glasstiger Aug 19, 2026
5579c5e
test(qwp): add performance benchmark suite
glasstiger Aug 19, 2026
9d751bd
feat(qwp): add compiled object-row table writers
glasstiger Aug 20, 2026
b8a57b3
feat(qwp): complete compiled writer column types
glasstiger Aug 20, 2026
b90d56e
fix(qwp): release the table selection on failed rows
glasstiger Aug 20, 2026
6170522
Merge remote-tracking branch 'origin/main' into ia_node_qwp
glasstiger Aug 20, 2026
55afb31
chore(qwp): extend the review skill to QWP
glasstiger Aug 20, 2026
b963ab9
feat(qwp): make the native locking module optional and lazily loaded
glasstiger Aug 20, 2026
9b31c06
fix(qwp): share the writer column brand across bundles
glasstiger Aug 20, 2026
2b871aa
fix(qwp): discard the row when a symbol value cannot be converted
glasstiger Aug 20, 2026
bf93367
fix(qwp): allocate frame sequences only for journalled frames
glasstiger Aug 20, 2026
a42fec5
fix(qwp): retry background segment maintenance instead of latching
glasstiger Aug 20, 2026
e42368a
fix(qwp): retry orphan slots that fail to drain transiently
glasstiger Aug 20, 2026
436d841
fix(qwp): release rows that cannot fit the negotiated batch cap
glasstiger Aug 20, 2026
b3f13a4
fix(qwp): encode DATE columns as timestamps on ingress
glasstiger Aug 20, 2026
91c9603
fix(qwp): trim the ingress wire log as cumulative ACKs arrive
glasstiger Aug 20, 2026
47ade10
Revert "fix(qwp): encode DATE columns as timestamps on ingress"
glasstiger Aug 20, 2026
4540b84
fix(qwp): roll back the schema a discarded row introduced
glasstiger Aug 20, 2026
70776f4
fix(qwp): parse ws/wss connect strings with one schema
glasstiger Aug 20, 2026
7629fbd
fix(qwp): match the Java close-flush timeout and always bound close()
glasstiger Aug 20, 2026
a644688
fix(qwp): retry an over-cap frame instead of failing the sender
glasstiger Aug 20, 2026
4717b60
fix(qwp): discard an over-cap batch on close, not on flush
glasstiger Aug 20, 2026
f05f9ae
docs: describe null and undefined column values
glasstiger Aug 20, 2026
2e8e514
docs(qwp): add a configuration-string key reference
glasstiger Aug 20, 2026
de9fac4
ci: enforce the browser, benchmark, and export-map gates
glasstiger Aug 20, 2026
7997f0b
test(qwp): close the mutation-proven coverage gaps
glasstiger Aug 20, 2026
ca78e94
fix(qwp): store a UUID passed as bytes in canonical order
glasstiger Aug 21, 2026
bd65a05
fix(qwp): walk failover endpoints on an opaque upgrade error
glasstiger Aug 21, 2026
e13f250
fix(qwp): keep UDP rows staged when a datagram cannot be encoded
glasstiger Aug 21, 2026
21d6145
fix(qwp): lock a decimal column's scale and keep its width stable
glasstiger Aug 21, 2026
00dae53
fix(qwp): bound egress recovery from an undecodable response
glasstiger Aug 21, 2026
0a236d8
fix(qwp): report journal bytes abandoned by torn-tail recovery
glasstiger Aug 21, 2026
c7be5bb
fix(qwp): retry a transient journal read instead of latching the sender
glasstiger Aug 21, 2026
a5f261a
fix(qwp): drop a frame's wire slot when a reconnect lands during its …
glasstiger Aug 21, 2026
3b5a746
fix(qwp): reject instead of throwing when flushing a closed sender
glasstiger Aug 21, 2026
bd4a224
fix(qwp): cancel a connect still negotiating when close() is called
glasstiger Aug 21, 2026
df1d952
fix(qwp): close the UDP socket when bind fails
glasstiger Aug 21, 2026
0092879
docs(qwp): state the auto-flush defaults and correct auto_flush_bytes
glasstiger Aug 21, 2026
da1132b
refactor(qwp): drop the unreachable resolved-sender constructor branch
glasstiger Aug 21, 2026
2ac6907
fix(qwp): keep compiled-writer row typing across published bundles
glasstiger Aug 21, 2026
822da58
ci: typecheck a consumer against the built declaration files
glasstiger Aug 21, 2026
4756867
test(qwp): pin which published classes can be named in a type position
glasstiger Aug 21, 2026
aabde6e
build(qwp): emit src/qwp/** as shared chunks instead of per-entry copies
glasstiger Aug 21, 2026
2399426
test(qwp): cover failover in a real browser
glasstiger Aug 21, 2026
a543a4f
ci: allow the build workflow to be dispatched manually
glasstiger Aug 21, 2026
5225cdd
refactor(qwp): replace the native slot lock with a pure-JS directory …
glasstiger Aug 21, 2026
68be1cc
fix(tcp): derive the JWK public point from the configured private key
glasstiger Aug 21, 2026
3360f67
test(qwp): drop browser tests that need a live QuestDB
glasstiger Aug 21, 2026
0a11537
ci: type-check test/** and fix what that surfaces
glasstiger Aug 21, 2026
a11f2dd
fix(ci): keep test/dist-types out of the test type-check
glasstiger Aug 21, 2026
3b494f5
fix(ci): make the build-artifact gate runnable
glasstiger Aug 21, 2026
93cbad4
fix(qwp): attach socket listeners before an aborted signal closes them
glasstiger Aug 21, 2026
5f305bf
fix(qwp): prove advisory-lock ownership with an acquisition token
glasstiger Aug 21, 2026
8870a28
fix(qwp): stop writing to a journal whose slot lock was reclaimed
glasstiger Aug 21, 2026
7aaf8df
fix: validate a column call even when its value is nullish
glasstiger Aug 21, 2026
be17047
fix(qwp): accept nullish words in long256Column
glasstiger Aug 21, 2026
1981bf2
fix(qwp): reject symbol IDs and encode options that cannot be honoured
glasstiger Aug 21, 2026
597991c
fix(qwp): bound decoded identifiers in bytes, not code units
glasstiger Aug 21, 2026
c754bfb
fix: make the QWP entry points reachable for docs and node10 consumers
glasstiger Aug 21, 2026
0606437
fix(qwp): stop close() from leaving connects and writes behind
glasstiger Aug 21, 2026
390c1bc
test(qwp): cover store-and-forward exclusion across real processes
glasstiger Aug 22, 2026
ce3ae47
fix(qwp): reject geohash and decimal values that cannot be encoded
glasstiger Aug 23, 2026
d7c90dc
fix(qwp): retry a transient journal fault raised while applying an ACK
glasstiger Aug 23, 2026
6e8951b
fix(qwp): quarantine an orphan slot whose head the server rejects
glasstiger Aug 23, 2026
a9a1948
fix(qwp): bound the grid a RESULT_BATCH declares, not only each dimen…
glasstiger Aug 23, 2026
89f0ee6
fix(qwp): close segment handles when the hot spare cannot be discarded
glasstiger Aug 23, 2026
18b2877
docs: generate the QWP entry points typedoc.json already declares
glasstiger Aug 23, 2026
81bb837
fix: discard a row that cannot be closed instead of wedging the sender
glasstiger Aug 23, 2026
0a1fccf
fix(qwp): keep auto-flush accurate when reset() lands during a flush
glasstiger Aug 23, 2026
5f2f692
fix(qwp): let an explicit connect_timeout bound the WebSocket upgrade
glasstiger Aug 23, 2026
4ea0f38
perf(qwp): decompress a RESULT_BATCH in place, not through a shifting…
glasstiger Aug 23, 2026
6417967
fix(qwp): retry a transient upgrade rejection instead of failing term…
glasstiger Aug 24, 2026
12f32f1
fix(qwp): stop a transient owner-record read from latching the slot lock
glasstiger Aug 24, 2026
6c3de06
fix(qwp): make the ACK watermark durable before the manifest that tri…
glasstiger Aug 24, 2026
6d02085
fix(qwp): keep a reclaimed journal from deleting the new owner's files
glasstiger Aug 24, 2026
ff32123
fix(qwp): retry a recoverable slot before quarantining it
glasstiger Aug 24, 2026
45a380a
perf(qwp): split UDP datagrams without re-encoding the batch each time
glasstiger Aug 24, 2026
68b06b4
fix(qwp): keep a QWP logger supplied without a top-level one
glasstiger Aug 24, 2026
de38f5a
fix(qwp): make the zstd over-run marker impossible to spell by accident
glasstiger Aug 24, 2026
266438f
fix(qwp): validate a column call even when its value is nullish
glasstiger Aug 24, 2026
0843b0e
fix(qwp): apply target and zone to ingress, not only egress
glasstiger Aug 24, 2026
26a190d
fix(qwp): let close() abort a connect that holds a store-and-forward …
glasstiger Aug 24, 2026
a645bf3
test(qwp): stop the auto-flush row trigger racing the interval trigger
glasstiger Aug 24, 2026
8f5a475
docs: name the client after JavaScript, not Node.js
glasstiger Aug 24, 2026
d9e0893
ci: point the Enterprise dispatch at the renamed e2e pipeline
glasstiger Aug 24, 2026
88311dd
fix(qwp): keep an async observability callback from crashing the host
glasstiger Aug 24, 2026
e3f7475
test(qwp): assert wss:// verifies certificates and preserves credentials
glasstiger Aug 24, 2026
c4fc77d
fix(qwp): validate nullish dateColumn and fixed-width decimal calls
glasstiger Aug 24, 2026
5745581
perf(qwp): drop the per-cell column-key rebuild on the ingest path
glasstiger Aug 25, 2026
8d2cf79
fix(qwp): send an all-nullish compiled-writer row instead of rejectin…
glasstiger Aug 25, 2026
fcebb9c
fix(qwp): point the udp-only relocation hint at udp, not http/tcp/udp
glasstiger Aug 25, 2026
e0b3611
fix(qwp): count rows a reset-interrupted flush already published
glasstiger Aug 25, 2026
687913b
fix(qwp): keep a parked append waiting through a self-healing trim fault
glasstiger Aug 25, 2026
c61f26e
test(qwp): count only payload bytes in the sfa-multiprocess marker check
glasstiger Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
857 changes: 857 additions & 0 deletions .claude/skills/review-pr/SKILL.md

Large diffs are not rendered by default.

126 changes: 125 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ on:
- main
pull_request:
schedule:
- cron: '15 2,10,18 * * *'
- cron: "15 2,10,18 * * *"
# GitHub disables a scheduled workflow after 60 days of repository
# inactivity, which stops it running on pull requests too. Dispatch is
# how to re-run it after that without pushing to a branch.
workflow_dispatch:

jobs:
test:
Expand Down Expand Up @@ -37,5 +41,125 @@ jobs:
- name: Type-checking
run: pnpm typecheck

# tsconfig.qwp-browser.json is where the browser contract lives: strict,
# no @types/node, DOM lib, over src/qwp/** minus node.ts. `pnpm typecheck`
# does not cover it, so without this step nothing stops a Node built-in or
# a strict-null violation reaching the browser entry point.
- name: Type-checking (browser)
run: pnpm typecheck:qwp-browser

# `pnpm typecheck` covers src plus a single contract file, so nothing
# type-checked test/** at all: a test could reference a deleted export
# and still pass, because vitest strips types without checking them.
- name: Type-checking (tests)
run: pnpm typecheck:test

- name: Type-checking (benchmarks)
run: pnpm typecheck:bench

- name: Linting (benchmarks)
run: pnpm lint:bench

- name: Tests
run: pnpm test

# Loads the built bundles through package.json `exports`, the way a
# consumer does. Every other suite imports from `src/`, where all four
# entry points share one module instance and cross-bundle defects are
# invisible.
- name: Built package tests
run: pnpm test:dist

# test:dist asserts runtime behaviour only. The compiled writers promise
# per-column row typing, which lives entirely in the emitted .d.ts files
# and is therefore invisible to every suite that imports from `src/`,
# where all four entry points share one module instance.
- name: Type-checking (built package consumer)
run: pnpm typecheck:dist

# The same gate publish.yml runs. Keeping it here too means a chunk that
# escapes `files`, or a regression in the check itself, fails a pull
# request instead of first being discovered during a release.
- name: Check for build artifacts
run: node scripts/check-build-artifacts.mjs

# Drives the built browser bundle in real Chromium against a local mock
# server. Tests that need a live QuestDB belong in the server repositories,
# where the topology and authentication fixtures already exist.
qwp-browser:
name: QWP browser bundle
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 20

- uses: pnpm/action-setup@v4
with:
version: 9
run_install: true

- name: Install Chromium
run: pnpm exec playwright install --with-deps chromium

- name: Browser bundle tests
run: pnpm test:qwp-browser

enterprise-qwp-e2e:
name: Dispatch Enterprise QWP E2E
runs-on: ubuntu-latest
# Azure credentials are not exposed to fork PRs. The repository variable
# keeps this dormant until the Enterprise pipeline and PAT are configured.
if: >-
vars.ENTERPRISE_E2E_ENABLED == 'true' &&
(github.event_name != 'pull_request' ||
github.event.pull_request.head.repo.full_name == github.repository)
steps:
- name: Queue Enterprise TypeScript-client E2E
env:
ENT_DISPATCH_PAT: ${{ secrets.ENT_DISPATCH_PAT }}
CLIENT_COMMIT: ${{ github.event.pull_request.head.sha || github.sha }}
CLIENT_PR_NUMBER: ${{ github.event.pull_request.number || '' }}
CLIENT_BRANCH: ${{ github.head_ref || github.ref_name }}
run: |
set -euo pipefail

if [ -z "${ENT_DISPATCH_PAT:-}" ]; then
echo "ENT_DISPATCH_PAT is not configured" >&2
exit 1
fi

ORG_URL="https://dev.azure.com/questdb/"
PROJECT="questdb-enterprise"
PIPELINE_NAME="build-and-test-e2e-javascript-client"
PIPELINES=$(curl -fsS -u ":${ENT_DISPATCH_PAT}" \
"${ORG_URL}${PROJECT}/_apis/pipelines?api-version=7.0")
PIPELINE_ID=$(echo "$PIPELINES" | jq -r --arg name "$PIPELINE_NAME" \
'.value[] | select(.name == $name) | .id' | head -1)
if [ -z "$PIPELINE_ID" ] || [ "$PIPELINE_ID" = "null" ]; then
echo "Enterprise pipeline '$PIPELINE_NAME' is not registered" >&2
exit 1
fi

BODY=$(jq -n \
--arg commit "$CLIENT_COMMIT" \
--arg pr "$CLIENT_PR_NUMBER" \
--arg branch "$CLIENT_BRANCH" \
'{
templateParameters: {
javascriptClientCommit: $commit,
javascriptClientPrNumber: $pr,
clientBranch: $branch
}
}')
RESPONSE=$(curl -fsS -u ":${ENT_DISPATCH_PAT}" \
-H "Content-Type: application/json" \
-X POST \
-d "$BODY" \
"${ORG_URL}${PROJECT}/_apis/pipelines/${PIPELINE_ID}/runs?api-version=7.0")
echo "Enterprise E2E queued: $(echo "$RESPONSE" | jq -r '._links.web.href')"
22 changes: 19 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,32 @@ jobs:
- name: Type-checking
run: pnpm typecheck

# tsconfig.qwp-browser.json is where the browser contract lives: strict,
# no @types/node, DOM lib, over src/qwp/** minus node.ts. `pnpm typecheck`
# does not cover it, so without this step nothing stops a Node built-in or
# a strict-null violation reaching the browser entry point.
- name: Type-checking (browser)
run: pnpm typecheck:qwp-browser

- name: Tests
run: pnpm test

- name: Build
run: pnpm build

- name: Check for build artifacts
# Guards the emitted .d.ts row typing, which no runtime suite can see.
- name: Type-checking (built package consumer)
run: |
[ -f dist/cjs/index.js ] || (echo "CJS build missing" && exit 1)
[ -f dist/es/index.mjs ] || (echo "ESM build missing" && exit 1)
pnpm exec tsc --noEmit -p tsconfig.dist-types.json
pnpm exec tsc --noEmit -p tsconfig.dist-types.cjs.json

# Every subpath in `exports`, not just the root: a publish that omits
# ./qwp, ./qwp/browser or ./qwp/node resolves to nothing for consumers.
# Entry bundles also import shared chunks that no `exports` entry names,
# so the walk follows relative imports: a chunk left out of `files`
# publishes a package whose every entry resolves to a missing file.
- name: Check for build artifacts
run: node scripts/check-build-artifacts.mjs

- name: Publish
uses: JS-DevTools/npm-publish@v3
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Project Overview

This is the QuestDB Node.js client library (@questdb/nodejs-client) that provides data ingestion capabilities to QuestDB databases. The client supports multiple transport protocols (HTTP/HTTPS, TCP/TCPS) and authentication methods.
This is the QuestDB JavaScript client library (@questdb/nodejs-client) that provides data ingestion capabilities to QuestDB databases. The client supports multiple transport protocols (HTTP/HTTPS, TCP/TCPS) and authentication methods.

## Development Commands

Expand Down
Loading
Loading