@polkadot-api/ws-middleware 0.3.0 → 0.3.1-canary.63b8d92
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/dist/hybrid.js +13 -4
- package/dist/hybrid.js.map +1 -1
- package/package.json +6 -6
package/dist/hybrid.js
CHANGED
|
@@ -21,8 +21,14 @@ const hybridMiddleware = (methods) => {
|
|
|
21
21
|
);
|
|
22
22
|
return (base) => {
|
|
23
23
|
const multiplexed = multiplex(base);
|
|
24
|
-
const modernProvider = modern(multiplexed);
|
|
25
|
-
const legacyProvider = withLegacy(
|
|
24
|
+
const modernProvider = modern(multiplexed());
|
|
25
|
+
const legacyProvider = withLegacy(
|
|
26
|
+
multiplexed(
|
|
27
|
+
(req) => ["chainHead_v1", "archive_v1"].every(
|
|
28
|
+
(prefix) => !req.method.startsWith(prefix)
|
|
29
|
+
)
|
|
30
|
+
)
|
|
31
|
+
);
|
|
26
32
|
return (onMsg, onHalt) => {
|
|
27
33
|
const modernConnection = modernProvider((message) => {
|
|
28
34
|
if ("error" in message && message.error.code === -32800) {
|
|
@@ -59,13 +65,15 @@ const multiplex = (base) => {
|
|
|
59
65
|
const msg$ = new Subject();
|
|
60
66
|
let refCount = 0;
|
|
61
67
|
let baseConnection = null;
|
|
62
|
-
return (onMsg, onHalt) => {
|
|
68
|
+
return (notificationFilter = () => true) => (onMsg, onHalt) => {
|
|
63
69
|
refCount++;
|
|
64
70
|
baseConnection ?? (baseConnection = base(
|
|
65
71
|
(msg) => msg$.next(msg),
|
|
66
72
|
(e) => halt$.next(e)
|
|
67
73
|
));
|
|
68
|
-
const notificationSub = msg$.pipe(
|
|
74
|
+
const notificationSub = msg$.pipe(
|
|
75
|
+
filter((v) => v.id == null && "method" in v && notificationFilter(v))
|
|
76
|
+
).subscribe(onMsg);
|
|
69
77
|
const haltSub = halt$.subscribe(onHalt);
|
|
70
78
|
const responseSubs = /* @__PURE__ */ new Set();
|
|
71
79
|
return {
|
|
@@ -92,6 +100,7 @@ const multiplex = (base) => {
|
|
|
92
100
|
refCount--;
|
|
93
101
|
if (refCount === 0) {
|
|
94
102
|
baseConnection?.disconnect();
|
|
103
|
+
baseConnection = null;
|
|
95
104
|
}
|
|
96
105
|
}
|
|
97
106
|
};
|
package/dist/hybrid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid.js","sources":["../src/hybrid.ts"],"sourcesContent":["import {\n JsonRpcConnection,\n JsonRpcMessage,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { filter, Subject, Subscription, take } from \"rxjs\"\nimport { withLegacy } from \"./legacy\"\nimport { modern } from \"./modern\"\nimport { Middleware } from \"./types\"\n\nconst modernGroups = [\"chainHead\", \"transaction\", \"chainSpec\", \"archive\"].map(\n (name) => `${name}_v1`,\n)\n\nexport const hybridMiddleware = (methods: string[]): Middleware => {\n const individualChecks = Object.fromEntries(\n modernGroups.map((group) => [\n group,\n !!methods.find((v) => v.startsWith(group)),\n ]),\n )\n\n return (base) => {\n const multiplexed = multiplex(base)\n const modernProvider = modern(multiplexed)\n const legacyProvider = withLegacy(multiplexed)\n\n return (onMsg, onHalt) => {\n const modernConnection = modernProvider((message) => {\n if (\"error\" in message && message.error.code === -32800) {\n console.warn(\"Max follow connections received: chainHead_v1 disabled\")\n individualChecks.chainHead_v1 = false\n }\n onMsg(message)\n }, onHalt)\n const legacyConnection = legacyProvider(onMsg, onHalt)\n\n return {\n send(message) {\n for (const group of modernGroups) {\n if (message.method.startsWith(group)) {\n if (individualChecks[group]) {\n modernConnection.send(message)\n } else {\n legacyConnection.send(message)\n }\n return\n }\n }\n modernConnection.send(message)\n },\n disconnect() {\n modernConnection.disconnect()\n legacyConnection.disconnect()\n },\n }\n }\n }\n}\n\nconst multiplex:
|
|
1
|
+
{"version":3,"file":"hybrid.js","sources":["../src/hybrid.ts"],"sourcesContent":["import {\n JsonRpcConnection,\n JsonRpcMessage,\n JsonRpcRequest,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { filter, Subject, Subscription, take } from \"rxjs\"\nimport { withLegacy } from \"./legacy\"\nimport { modern } from \"./modern\"\nimport { Middleware } from \"./types\"\nimport { InnerJsonRpcProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\n\nconst modernGroups = [\"chainHead\", \"transaction\", \"chainSpec\", \"archive\"].map(\n (name) => `${name}_v1`,\n)\n\nexport const hybridMiddleware = (methods: string[]): Middleware => {\n const individualChecks = Object.fromEntries(\n modernGroups.map((group) => [\n group,\n !!methods.find((v) => v.startsWith(group)),\n ]),\n )\n\n return (base) => {\n const multiplexed = multiplex(base)\n const modernProvider = modern(multiplexed())\n const legacyProvider = withLegacy(\n multiplexed((req) =>\n [\"chainHead_v1\", \"archive_v1\"].every(\n (prefix) => !req.method.startsWith(prefix),\n ),\n ),\n )\n\n return (onMsg, onHalt) => {\n const modernConnection = modernProvider((message) => {\n if (\"error\" in message && message.error.code === -32800) {\n console.warn(\"Max follow connections received: chainHead_v1 disabled\")\n individualChecks.chainHead_v1 = false\n }\n onMsg(message)\n }, onHalt)\n const legacyConnection = legacyProvider(onMsg, onHalt)\n\n return {\n send(message) {\n for (const group of modernGroups) {\n if (message.method.startsWith(group)) {\n if (individualChecks[group]) {\n modernConnection.send(message)\n } else {\n legacyConnection.send(message)\n }\n return\n }\n }\n modernConnection.send(message)\n },\n disconnect() {\n modernConnection.disconnect()\n legacyConnection.disconnect()\n },\n }\n }\n }\n}\n\nconst multiplex: (\n base: InnerJsonRpcProvider,\n) => (\n notificationFilter?: (notification: JsonRpcRequest) => boolean,\n) => InnerJsonRpcProvider = (base) => {\n const halt$ = new Subject<any>()\n const msg$ = new Subject<JsonRpcMessage>()\n\n let refCount = 0\n let baseConnection: JsonRpcConnection | null = null\n\n return (notificationFilter = () => true) =>\n (onMsg, onHalt) => {\n refCount++\n baseConnection ??= base(\n (msg) => msg$.next(msg),\n (e) => halt$.next(e),\n )\n\n const notificationSub = msg$\n .pipe(\n filter((v) => v.id == null && \"method\" in v && notificationFilter(v)),\n )\n .subscribe(onMsg)\n const haltSub = halt$.subscribe(onHalt)\n const responseSubs = new Set<Subscription>()\n\n return {\n send(message) {\n if (message.id == null) {\n return baseConnection?.send(message)\n }\n const id = message.id\n const responseSub = msg$\n .pipe(\n filter((r) => r.id === id),\n take(1),\n )\n .subscribe((msg) => {\n onMsg(msg)\n if (!responseSub) throw new Error(\"unreachable\")\n responseSubs.delete(responseSub)\n })\n responseSubs.add(responseSub)\n baseConnection?.send(message)\n },\n disconnect() {\n notificationSub.unsubscribe()\n haltSub.unsubscribe()\n responseSubs.forEach((s) => s.unsubscribe())\n refCount--\n if (refCount === 0) {\n baseConnection?.disconnect()\n baseConnection = null\n }\n },\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polkadot-api/ws-middleware",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1-canary.63b8d92",
|
|
4
4
|
"author": "Josep M Sobrepere (https://github.com/josepot)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"rxjs": ">=7.8.0"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@polkadot-api/json-rpc-provider": "0.
|
|
32
|
-
"@polkadot-api/
|
|
33
|
-
"@polkadot-api/
|
|
34
|
-
"@polkadot-api/
|
|
35
|
-
"@polkadot-api/
|
|
31
|
+
"@polkadot-api/json-rpc-provider-proxy": "0.4.1-canary.63b8d92",
|
|
32
|
+
"@polkadot-api/raw-client": "0.3.1-canary.63b8d92",
|
|
33
|
+
"@polkadot-api/utils": "0.4.1-canary.63b8d92",
|
|
34
|
+
"@polkadot-api/substrate-bindings": "0.20.1-canary.63b8d92",
|
|
35
|
+
"@polkadot-api/json-rpc-provider": "0.2.1-canary.63b8d92"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"rxjs": "^7.8.2"
|