Proto commits in EventStore/EventStore-Client-NodeJS

These 18 commits are when the Protocol Buffers files have changed:

Commit:a50837c
Author:William Chong

Add version 2 of Streams and add new Registry proto definitions

Commit:9e15b0a
Author:William Chong
Committer:GitHub

[DEVEX-189] Rebrand Client (#392) # Highlights 1. Use Rust client for read operations 2. Added a benchmark workflow in GitHub Actions. You can run the benchmark on GitHub by dispatching it manually ```mermaid xychart-beta title "KurrentDB NodeJS Client Performance Comparison" x-axis ["EventStoreDB Client v6.2.1", "KurrentDB Client 1.0.0", "KurrentDB bridge"] y-axis "Events per millisecond" 0 --> 70 bar [31.33, 60.66, 65.58] ``` ## Breaking Changes This document outlines the breaking changes introduced in the upcoming release of the KurrentDB client, which includes a performance boost for read operations as it now uses the Rust client for these operations. **Upgrading users must address these changes to ensure compatibility.** --- ## 1. Client Initialization via Connection String ### What Changed We've removed the class constructor method for initializing `KurrentDBClient`. Clients must now be created using a **connection string**, aligning with patterns used in other clients in our ecosystem. ### Migration Guide #### Old Approach ```typescript // Legacy constructor-based initialization const client = new KurrentDBClient({ { endpoint: "localhost:2113" }, { rootCertificate: node.certs.root }, { username: "admin", password: "changeit" } }); ``` #### Change to ```typescript const client = KurrentDBClient.connectionString`kdb://localhost:2113?tls=false`; ``` > **_NOTE:_** If you were using connection string, the code will remain unchanged. --- ## 2. Node.js 14 Deprecation ### What Changed We've officially dropped support for Node.js 14 following the [Node.js Release Schedule](https://github.com/nodejs/Release?tab=readme-ov-file#release-schedule). ### Action Required - Upgrade to Node.js **v20** or higher (LTS) - If maintaining multiple Node versions, use a version manager like `nvm`: ```bash nvm install --lts nvm use --lts ``` ### Impact - CI/CD pipelines using Node 14 will fail - TypeScript definitions now use features from ES2021+ --- ## 3. Stream Handling Migration to Async Iterables ### What Changed Previously, we supported both event emitter pattern and async iteration. In this release, we've **removed event emitter pattern** and now support only async iteration. ### Migration Guide #### Previously Supported Approaches ```typescript // Event Emitter Pattern client .readAll() .on("data", (event) => handleEvent(event)) .on("error", (err) => handleError(err)); // Async Iteration Pattern try { const stream = client.readAll(); for await (const event of stream) { handleEvent(event); } } catch (err) { handleError(err); } ``` #### Now Required ```typescript try { const stream = client.readAll(); for await (const event of stream) { handleEvent(event); } } catch (err) { handleError(err); } ``` ## 4. Removed the certChain and privateKey options from the KurrentDB client settings constructor ## 5. Rename otel tags Previously, we were using esdb as prefix in opentelemetry tags. With the rebranding efforts, we now changed it to kurrent. **Before** ``` db.esdb.user db.esdb.system db.esdb.operation db.esdb.subscription.id db.esdb.event db.esdb.event.type db.esdb.stream ``` **After** ``` db.kurrent.user db.kurrent.system db.kurrent.operation db.kurrent.subscription.id db.kurrent.event db.kurrent.event.type db.kurrent.stream ```

The documentation is generated from this commit.

Commit:565956d
Author:William Chong
Committer:William Chong

feat: support kurrentdb protocol and rename package name

The documentation is generated from this commit.

Commit:d2b2874
Author:William Chong
Committer:GitHub

Convert into monorepo (#367) * Convert into monorepo * Using lerna for managing packages * Add incremental and composite options in tsconfig to improve build optimization and project referencing * Isolate tests into a separate package

Commit:5d11c69
Author:William Chong
Committer:GitHub

Deprecate unused protobuf messages (#372) * Deprecate unused protobuf messages

Commit:e00beb1
Author:William Chong
Committer:GitHub

Add support for caught up and fell behind subscription message (#354) * Add support for caught up and fell behind subscription message * Remove redundant listener arguments in event handling * Rename RegularSubscription to CatchupSubscription

Commit:a9988a2
Author:George Payne

update projections proto to latest

Commit:90b78c4
Author:George Payne
Committer:George Payne

Update `persistent` proto to latest - Regenerate code - Fix build for grpcSettings util

Commit:eff05f5
Author:George Payne
Committer:George Payne

Update client capabilities to updated serverFeatures api - remove in-client version matching - move version matching to tests only - update tests

Commit:85c7ae3
Author:George Payne
Committer:George Payne

Update protos to latest - add extra sed for adding JS_STRING to deprecated uint64 - generate code - update streamname -> streamName

Commit:33efa20
Author:George Payne

update protos to latest

Commit:ef0143b
Author:George Payne
Committer:George Payne

Update write events to give correct expected version - update to new proto - enable previously failing test

Commit:1e711bd
Author:George Payne
Committer:George Payne

[19] Force grpc to use strings for 64bit ints - add `generate:replace` script to add `[jstype = JS_STRING]` if not present - regenerate proto files

Commit:65f0442
Author:George Payne

update to latest protos

Commit:04e6837
Author:YoEight

Update code generation.

Commit:b8aa349
Author:Mat McLoughlin

Some refactorings and the addition of stream revision

Commit:fffb575
Author:Mat McLoughlin

Fleshing out the append test

Commit:12f0788
Author:Mat McLoughlin

Creating scripts for generating js from protos