@ferricstore/ferricstore 0.11.9 → 0.11.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,8 +18,8 @@ Requires Node.js 22.22 or newer. The SDK ships ESM and CommonJS builds and is te
18
18
 
19
19
  ## Compatibility
20
20
 
21
- TypeScript SDK `0.11.9` requires FerricStore server `0.11.4` or newer. With
22
- FerricStore 0.11.8 it negotiates compact Stream mode 34 for homogeneous auto-ID
21
+ TypeScript SDK `0.11.11` requires FerricStore server `0.11.4` or newer. With
22
+ FerricStore 0.11.11 it negotiates compact Stream mode 34 for homogeneous auto-ID
23
23
  `XADD` pipelines and compact Pub/Sub mode 35 for homogeneous `PUBLISH`
24
24
  pipelines. Native wire protocol v1 and the generic fallback are unchanged.
25
25
  Capabilities and response-size limits are negotiated
@@ -44,7 +44,7 @@ const { FerricStoreClient, JsonCodec } = require("@ferricstore/ferricstore");
44
44
  docker run -p 6388:6388 \
45
45
  -e FERRICSTORE_PROTECTED_MODE=false \
46
46
  -v ferricstore_data:/data \
47
- quay.io/ferricstore/ferricstore:0.11.8
47
+ quay.io/ferricstore/ferricstore:0.11.11@sha256:d9f488539f0d6c1a513d2315e7a9c2947cc795b393f3774c9de8ba5e5b5c21b5
48
48
  ```
49
49
 
50
50
  ## Query durable runs
@@ -114,16 +114,36 @@ await client.ping();
114
114
  Use `bearerToken` for Bearer authentication. Basic username/password
115
115
  authentication requires HTTPS; omitting the username uses `default`. One SDK
116
116
  pipeline becomes one ordered HTTP request. `httpOptions` also bounds request
117
- and response bytes, batch items, HTTP/1.1 connections, redirects, and the whole
118
- request deadline.
117
+ and response bytes, batch items, HTTP/1.1 sockets or concurrent HTTP/2 streams,
118
+ redirects, and the whole request deadline. HTTP/2 honors the peer's advertised
119
+ stream limit and queues excess work locally within the same deadline.
119
120
 
120
121
  The HTTP endpoint is stateless. `AUTH`, `CLIENT`, transactions, Pub/Sub
121
- subscriptions, blocking list/stream reads, and `WATCH` require native TCP and
122
- fail before network I/O. Redirects intentionally retain authentication and
123
- custom headers across origins, so configure only endpoints and redirect targets
124
- you trust. Use `ferric://` or `ferrics://` whenever connection-local behavior is
122
+ subscriptions, session state, and cluster/replication session controls require
123
+ native TCP and fail before network I/O. Blocking list, sorted-set, and stream
124
+ reads remain supported as long-lived HTTP requests, including inside an explicit
125
+ ordered pipeline. Their declared server waits are added to the ordinary
126
+ whole-request deadline; a zero block disables the SDK request deadline until the
127
+ request completes or the client closes. Independently submitted blocking calls
128
+ are not auto-coalesced. Redirects intentionally retain authentication and custom
129
+ headers across origins, so configure only endpoints and redirect targets you
130
+ trust. Use `ferric://` or `ferrics://` whenever connection-local behavior is
125
131
  required.
126
132
 
133
+ Run the complete HTTP-compatible integration surface through a real TLS
134
+ listener with ACL authentication using:
135
+
136
+ ```bash
137
+ FERRICSTORE_IMAGE=quay.io/ferricstore/ferricstore:0.11.11@sha256:d9f488539f0d6c1a513d2315e7a9c2947cc795b393f3774c9de8ba5e5b5c21b5 \
138
+ npm run test:integration:http
139
+ ```
140
+
141
+ The runner creates a private CA, verifies that unauthenticated access and a
142
+ restricted user's forbidden `SET` are rejected, and sets
143
+ `FERRICSTORE_USERNAME`, `FERRICSTORE_PASSWORD`, and `FERRICSTORE_CA_FILE` for
144
+ the tests. Native-only subscriptions, topology, and session controls stay in
145
+ the native integration jobs.
146
+
127
147
  ## Cluster-aware client
128
148
 
129
149
  For a single node, use `fromUrl`. For a FerricStore cluster, pass multiple seed URLs. The SDK fetches the server `SHARDS` topology, routes keyed commands to the current shard leader, and refuses learned hosts outside the seed-host trust set by default. The creation promise resolves only after startup and authentication succeed; cluster creation also waits for the initial topology, so connection failures reject the corresponding `await` directly.