@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.
Files changed (35) hide show
  1. package/README.md +22 -0
  2. package/package.json +24 -4
  3. package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm.d.ts +0 -783
  4. package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm.js +0 -4653
  5. package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm.js.map +0 -1
  6. package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm +0 -0
  7. package/dist/cjs/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm.d.ts +0 -302
  8. package/dist/cjs/grpc/geyser.js +0 -4216
  9. package/dist/cjs/grpc/geyser.js.map +0 -1
  10. package/dist/cjs/grpc/google/protobuf/timestamp.js +0 -88
  11. package/dist/cjs/grpc/google/protobuf/timestamp.js.map +0 -1
  12. package/dist/cjs/grpc/solana-storage.js +0 -1974
  13. package/dist/cjs/grpc/solana-storage.js.map +0 -1
  14. package/dist/cjs/index.js +0 -313
  15. package/dist/cjs/index.js.map +0 -1
  16. package/dist/cjs/types.js +0 -9
  17. package/dist/cjs/types.js.map +0 -1
  18. package/dist/esm/encoding/yellowstone_grpc_solana_encoding_wasm.d.ts +0 -783
  19. package/dist/esm/encoding/yellowstone_grpc_solana_encoding_wasm.js +0 -4653
  20. package/dist/esm/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm +0 -0
  21. package/dist/esm/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm.d.ts +0 -302
  22. package/dist/esm/grpc/geyser.js +0 -4076
  23. package/dist/esm/grpc/google/protobuf/timestamp.js +0 -85
  24. package/dist/esm/grpc/solana-storage.js +0 -1911
  25. package/dist/esm/index.js +0 -165
  26. package/dist/esm/types.js +0 -7
  27. package/dist/types/encoding/yellowstone_grpc_solana_encoding_wasm.d.ts +0 -783
  28. package/dist/types/encoding/yellowstone_grpc_solana_encoding_wasm.js +0 -4653
  29. package/dist/types/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm +0 -0
  30. package/dist/types/encoding/yellowstone_grpc_solana_encoding_wasm_bg.wasm.d.ts +0 -302
  31. package/dist/types/grpc/geyser.d.ts +0 -10052
  32. package/dist/types/grpc/google/protobuf/timestamp.d.ts +0 -139
  33. package/dist/types/grpc/solana-storage.d.ts +0 -3826
  34. package/dist/types/index.d.ts +0 -45
  35. 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": "4.0.2",
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-proto": "^1.181.2",
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
  }