@triton-one/yellowstone-grpc 4.0.2 → 5.0.0
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 +22 -0
- package/package.json +24 -4
- package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm.d.ts +0 -783
- package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm.js +0 -4653
- package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm.js.map +0 -1
- package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm +0 -0
- package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm.d.ts +0 -302
- package/dist/cjs/grpc/geyser.js +0 -4216
- package/dist/cjs/grpc/geyser.js.map +0 -1
- package/dist/cjs/grpc/google/protobuf/timestamp.js +0 -88
- package/dist/cjs/grpc/google/protobuf/timestamp.js.map +0 -1
- package/dist/cjs/grpc/solana-storage.js +0 -1974
- package/dist/cjs/grpc/solana-storage.js.map +0 -1
- package/dist/cjs/index.js +0 -313
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/types.js +0 -9
- package/dist/cjs/types.js.map +0 -1
- package/dist/esm/encoding/yellowstone_grpc_solana_encoding_wasm.d.ts +0 -783
- package/dist/esm/encoding/yellowstone_grpc_solana_encoding_wasm.js +0 -4653
- package/dist/esm/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm +0 -0
- package/dist/esm/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm.d.ts +0 -302
- package/dist/esm/grpc/geyser.js +0 -4076
- package/dist/esm/grpc/google/protobuf/timestamp.js +0 -85
- package/dist/esm/grpc/solana-storage.js +0 -1911
- package/dist/esm/index.js +0 -165
- package/dist/esm/types.js +0 -7
- package/dist/types/encoding/yellowstone_grpc_solana_encoding_wasm.d.ts +0 -783
- package/dist/types/encoding/yellowstone_grpc_solana_encoding_wasm.js +0 -4653
- package/dist/types/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm +0 -0
- package/dist/types/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm.d.ts +0 -302
- package/dist/types/grpc/geyser.d.ts +0 -10052
- package/dist/types/grpc/google/protobuf/timestamp.d.ts +0 -139
- package/dist/types/grpc/solana-storage.d.ts +0 -3826
- package/dist/types/index.d.ts +0 -45
- package/dist/types/types.d.ts +0 -282
package/README.md
CHANGED
|
@@ -24,3 +24,25 @@ npm run build
|
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Please refer to [examples/typescript](../examples/typescript/README.md) for some usage examples.
|
|
27
|
+
|
|
28
|
+
## Troubleshooting
|
|
29
|
+
|
|
30
|
+
### For macOS:
|
|
31
|
+
|
|
32
|
+
You might have to run `npm run build` with `RUSTFLAGS="-Clink-arg=-undefined -Clink-arg=dynamic_lookup"` to skip the strict linkers from failing the build step and resolve `dylib`s via runtime.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
RUSTFLAGS="-Clink-arg=-undefined -Clink-arg=dynamic_lookup" npm run build
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Working
|
|
39
|
+
|
|
40
|
+
Since the start, the `@triton-one/yellowstone-grpc` package has used the `@grpc/grpc-js` lib for gRPC types enforcement, connection and subscription management. This hit a bottleneck, described in [this blog](https://blog.triton.one/supercharging-the-javascript-sdk-with-napi/)
|
|
41
|
+
|
|
42
|
+
From `v5.0.0` the [napi-rs](https://github.com/napi-rs/napi-rs) framework is used for gRPC connection and subscription management. It's described into [this blog](https://blog.triton.one/supercharging-the-javascript-sdk-with-napi/)
|
|
43
|
+
|
|
44
|
+
These changes are internal to the SDK and do not have any breaking changes for client code. If you face any issues, please open an issue
|
|
45
|
+
|
|
46
|
+
The `@grpc/grpc-js` lib is still being used for types management. This is will be removed in the future release without any braking API changes
|
|
47
|
+
|
|
48
|
+
The [napi-rs](https://github.com/napi-rs/napi-rs) based implementation is inspired from the implemenation of the [LaserStream SDK](https://github.com/helius-labs/laserstream-sdk)
|
package/package.json
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@triton-one/yellowstone-grpc",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Triton One",
|
|
6
6
|
"description": "Yellowstone gRPC Geyser Node.js Client",
|
|
7
7
|
"main": "./dist/cjs/index.js",
|
|
8
8
|
"types": "./dist/types/index.d.ts",
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "npm run grpc-generate && tsc --project tsconfig.esm.json && tsc --project tsconfig.cjs.json && npm run cp-encoding-files && node add-js-extensions.js",
|
|
10
|
+
"build": "npm run grpc-generate && npm run build:napi && npm run cp-napi-files && tsc --project tsconfig.esm.json && tsc --project tsconfig.cjs.json && npm run cp-encoding-files && node add-js-extensions.js",
|
|
11
|
+
"build:napi": "cd napi && napi build --platform --release --no-dts-cache",
|
|
12
|
+
"build:napi:debug": "cd napi && napi build --platform --no-dts-cache",
|
|
11
13
|
"cp-encoding-files": "mkdir -p dist/esm/encoding && cp -r src/encoding/* dist/cjs/encoding/ && mkdir -p dist/esm/encoding && cp -r src/encoding/* dist/esm/encoding/ && mkdir -p dist/types/encoding && cp -r src/encoding/* dist/types/encoding/",
|
|
14
|
+
"cp-napi-files": "mkdir -p src/napi && mkdir -p dist/cjs/napi && mkdir -p dist/esm/napi && mkdir -p dist/types/napi && cp -r napi/*.node src/napi/ 2>/dev/null || true && cp -r napi/*.node dist/cjs/napi/ 2>/dev/null || true && cp -r napi/*.node dist/esm/napi/ 2>/dev/null || true && cp -r napi/index.d.ts src/napi 2>/dev/null || true && cp -r napi/index.d.ts dist/types/napi/ 2>/dev/null || true && cp -r napi/index.js src/napi 2>/dev/null || true && cp -r napi/index.js dist/cjs/napi/ 2>/dev/null || true && cp -r napi/index.js dist/esm/napi/ 2>/dev/null || true",
|
|
12
15
|
"fmt": "prettier -w .",
|
|
13
|
-
"grpc-generate": "mkdir -p src/grpc && protoc -I../yellowstone-grpc-proto/proto --plugin=node_modules/.bin/protoc-gen-ts_proto --ts_proto_opt=forceLong=string --ts_proto_opt=outputServices=grpc-js --experimental_allow_proto3_optional --ts_proto_out=src/grpc geyser.proto --ts_proto_opt=esModuleInterop=true"
|
|
16
|
+
"grpc-generate": "mkdir -p src/grpc && protoc -I../yellowstone-grpc-proto/proto --plugin=node_modules/.bin/protoc-gen-ts_proto --ts_proto_opt=forceLong=string --ts_proto_opt=outputServices=grpc-js --experimental_allow_proto3_optional --ts_proto_out=src/grpc geyser.proto --ts_proto_opt=esModuleInterop=true",
|
|
17
|
+
"test": "jest",
|
|
18
|
+
"test:debug": "jest --detectOpenHandles"
|
|
14
19
|
},
|
|
15
20
|
"repository": {
|
|
16
21
|
"type": "git",
|
|
@@ -30,11 +35,21 @@
|
|
|
30
35
|
"@grpc/grpc-js": "^1.8.0"
|
|
31
36
|
},
|
|
32
37
|
"devDependencies": {
|
|
38
|
+
"@babel/core": "^7.28.5",
|
|
33
39
|
"@babel/parser": "^7.26.3",
|
|
40
|
+
"@babel/preset-env": "^7.28.5",
|
|
41
|
+
"@babel/preset-typescript": "^7.28.5",
|
|
42
|
+
"@napi-rs/cli": "^3.4.1",
|
|
34
43
|
"@solana/rpc-api": "=2.0.0",
|
|
44
|
+
"@types/jest": "^30.0.0",
|
|
45
|
+
"babel-jest": "^30.2.0",
|
|
46
|
+
"dotenv": "^17.2.3",
|
|
47
|
+
"jest": "^30.2.0",
|
|
48
|
+
"jest-json-schema": "^6.1.0",
|
|
35
49
|
"prettier": "^2.8.3",
|
|
36
50
|
"recast": "^0.23.9",
|
|
37
|
-
"ts-
|
|
51
|
+
"ts-jest": "^29.4.5",
|
|
52
|
+
"ts-proto": "^1.139.0",
|
|
38
53
|
"typescript": "=5.2.2"
|
|
39
54
|
},
|
|
40
55
|
"engines": {
|
|
@@ -48,6 +63,11 @@
|
|
|
48
63
|
"import": "./dist/esm/index.js",
|
|
49
64
|
"require": "./dist/cjs/index.js",
|
|
50
65
|
"types": "./dist/types/index.d.ts"
|
|
66
|
+
},
|
|
67
|
+
"./napi": {
|
|
68
|
+
"import": "./dist/esm/napi/index.js",
|
|
69
|
+
"require": "./dist/cjs/napi/index.js",
|
|
70
|
+
"types": "./dist/types/napi/index.d.ts"
|
|
51
71
|
}
|
|
52
72
|
}
|
|
53
73
|
}
|