Skip to content

Commit e6825af

Browse files
authored
feat: add ws provider package (#2578)
1 parent 15c5a58 commit e6825af

10 files changed

+207
-3
lines changed

package.json

+3
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@
7070
"overrides": {
7171
"@substrate/connect": "workspace:^",
7272
"smoldot": "^2.0.34"
73+
},
74+
"patchedDependencies": {
75+
"@polkadot-api/ws-provider": "patches/@polkadot-api__ws-provider.patch"
7376
}
7477
}
7578
}

packages/ws-provider/.eslintignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dist

packages/ws-provider/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# @substrate/ws-provider

packages/ws-provider/package.json

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{
2+
"name": "@substrate/ws-provider",
3+
"version": "0.3.6",
4+
"author": "Parity Technologies (https://github.com/paritytech)",
5+
"repository": {
6+
"type": "git",
7+
"url": "git+https://github.com/paritytech/substrate-connect.git"
8+
},
9+
"license": "MIT",
10+
"type": "module",
11+
"exports": {
12+
"./package.json": "./package.json",
13+
".": {
14+
"import": {
15+
"@substrate-connect/source": "./src/index.ts",
16+
"types": "./dist/esm/index.d.ts",
17+
"default": "./dist/esm/index.js"
18+
},
19+
"require": {
20+
"types": "./dist/commonjs/index.d.ts",
21+
"default": "./dist/commonjs/index.js"
22+
}
23+
}
24+
},
25+
"main": "./dist/commonjs/index.js",
26+
"types": "./dist/commonjs/index.d.ts",
27+
"module": "./dist/esm/index.js",
28+
"files": [
29+
"dist"
30+
],
31+
"scripts": {
32+
"deep-clean": "rimraf dist node_modules",
33+
"build": "tsup",
34+
"typecheck": "tsc --noEmit",
35+
"dev": "pnpm build --watch",
36+
"lint": "prettier --check README.md \"src/**/*.{js,jsx,ts,tsx,json,md}\""
37+
},
38+
"prettier": {
39+
"printWidth": 80,
40+
"semi": false,
41+
"trailingComma": "all"
42+
},
43+
"dependencies": {
44+
"@polkadot-api/ws-provider": "0.3.6",
45+
"@polkadot-api/json-rpc-provider-proxy": "0.2.4",
46+
"@polkadot-api/json-rpc-provider": "0.0.4"
47+
},
48+
"devDependencies": {
49+
"typescript": "5.6.2",
50+
"vitest": "^2.1.4"
51+
},
52+
"peerDependencies": {}
53+
}

packages/ws-provider/src/mod.ts

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import {
2+
getInternalWsProvider,
3+
type StatusChange,
4+
type WsJsonRpcProvider,
5+
} from "@polkadot-api/ws-provider/web"
6+
7+
export namespace GetWsProvider {
8+
export type Options = {
9+
endpoints: Array<
10+
| string
11+
| {
12+
uri: string
13+
protocol: string[]
14+
}
15+
>
16+
onStatusChanged?: (status: StatusChange) => void
17+
timeout?: number
18+
websocketConstructor?: typeof globalThis.WebSocket
19+
}
20+
21+
export type GetWsProvider = (options: Options) => WsJsonRpcProvider
22+
}
23+
24+
export const getWsProvider: GetWsProvider.GetWsProvider = (options) => {
25+
const wsProvider = getInternalWsProvider(
26+
options.websocketConstructor ?? globalThis.WebSocket,
27+
)
28+
29+
return wsProvider(options)
30+
}
31+
32+
export {
33+
WsEvent,
34+
type WsConnecting,
35+
type WsConnected,
36+
type WsError,
37+
type WsClose,
38+
type StatusChange,
39+
type JsonRpcProvider,
40+
type WsJsonRpcProvider,
41+
} from "@polkadot-api/ws-provider/web"
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": "../../tsconfig.build.json",
3+
"include": ["src"],
4+
"compilerOptions": {
5+
"incremental": false,
6+
"composite": false
7+
}
8+
}

packages/ws-provider/tsconfig.json

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"extends": "../../tsconfig.base.json",
3+
"include": ["src", "tests"]
4+
}

packages/ws-provider/tsup.config.ts

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { defineConfig } from "tsup"
2+
3+
export default defineConfig([
4+
{
5+
entry: {
6+
index: "src/mod.ts",
7+
},
8+
outDir: "dist/esm",
9+
format: ["esm"],
10+
dts: true,
11+
sourcemap: true,
12+
clean: true,
13+
tsconfig: "./tsconfig.build.json",
14+
noExternal: ["@polkadot-api/ws-provider"],
15+
external: [
16+
"@polkadot-api/json-rpc-provider-proxy",
17+
"@polkadot-api/json-rpc-provider",
18+
],
19+
},
20+
{
21+
entry: {
22+
index: "src/mod.ts",
23+
},
24+
outDir: "dist/commonjs",
25+
format: ["cjs"],
26+
dts: true,
27+
sourcemap: true,
28+
clean: true,
29+
tsconfig: "./tsconfig.build.json",
30+
noExternal: ["@polkadot-api/ws-provider"],
31+
external: [
32+
"@polkadot-api/json-rpc-provider-proxy",
33+
"@polkadot-api/json-rpc-provider",
34+
],
35+
},
36+
])
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
diff --git a/dist/web/esm/web.mjs b/dist/web/esm/web.mjs
2+
index 241ec3bf8ebec5d7cfee0dc98fd95309b1298135..6aa173d56ed6702387325974b4ef912a5168abe9 100644
3+
--- a/dist/web/esm/web.mjs
4+
+++ b/dist/web/esm/web.mjs
5+
@@ -3,5 +3,5 @@ export { WsEvent } from './types.mjs';
6+
7+
const getWsProvider = getInternalWsProvider(WebSocket);
8+
9+
-export { getWsProvider };
10+
+export { getWsProvider, getInternalWsProvider };
11+
//# sourceMappingURL=web.mjs.map
12+
diff --git a/dist/web/web.d.ts b/dist/web/web.d.ts
13+
index d426010c36aa1ef4696409cc81036597d15f43b3..dc525d2d35ee5011eaeb9c0519ebe3f91dbbd2fa 100644
14+
--- a/dist/web/web.d.ts
15+
+++ b/dist/web/web.d.ts
16+
@@ -49,5 +49,6 @@ interface GetWsProviderInput {
17+
}
18+
19+
declare const getWsProvider: GetWsProviderInput;
20+
+declare const getInternalWsProvider: (wsCtor: typeof globalThis.WebSocket) => GetWsProviderInput;
21+
22+
-export { type GetWsProviderInput, type StatusChange, type WsClose, type WsConnected, type WsConnecting, type WsError, WsEvent, type WsJsonRpcProvider, type WsProviderConfig, getWsProvider };
23+
+export { type GetWsProviderInput, type StatusChange, type WsClose, type WsConnected, type WsConnecting, type WsError, WsEvent, type WsJsonRpcProvider, type WsProviderConfig, getWsProvider, getInternalWsProvider };
24+
diff --git a/dist/web/web.js b/dist/web/web.js
25+
index 0fa7cd8079fb1834bda11013eca4af81b3c12106..d533a1bd65deb63e7e3d1c5f690cacdf7ffbda15 100644
26+
--- a/dist/web/web.js
27+
+++ b/dist/web/web.js
28+
@@ -227,4 +227,5 @@ const getWsProvider = getInternalWsProvider(WebSocket);
29+
30+
exports.WsEvent = WsEvent;
31+
exports.getWsProvider = getWsProvider;
32+
+exports.getInternalWsProvider = getInternalWsProvider;
33+
//# sourceMappingURL=web.js.map

pnpm-lock.yaml

+27-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)