@polkadot-api/ws-middleware 0.2.4-canary.8b5161e → 0.2.4-canary.d38c3ed

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 (103) hide show
  1. package/dist/hybrid.js +102 -0
  2. package/dist/hybrid.js.map +1 -0
  3. package/dist/index.js +12 -1783
  4. package/dist/index.js.map +1 -1
  5. package/dist/{esm/legacy/downstream/archive.mjs → legacy/downstream/archive.js} +13 -13
  6. package/dist/legacy/downstream/archive.js.map +1 -0
  7. package/dist/{esm/legacy/downstream/chain-head.mjs → legacy/downstream/chain-head.js} +19 -19
  8. package/dist/legacy/downstream/chain-head.js.map +1 -0
  9. package/dist/{esm/legacy/downstream/chainspec.mjs → legacy/downstream/chainspec.js} +1 -1
  10. package/dist/legacy/downstream/chainspec.js.map +1 -0
  11. package/dist/{esm/legacy/downstream/downstream.mjs → legacy/downstream/downstream.js} +25 -18
  12. package/dist/legacy/downstream/downstream.js.map +1 -0
  13. package/dist/{esm/legacy/downstream/storage.mjs → legacy/downstream/storage.js} +1 -1
  14. package/dist/legacy/downstream/storage.js.map +1 -0
  15. package/dist/{esm/legacy/downstream/transaction.mjs → legacy/downstream/transaction.js} +4 -4
  16. package/dist/legacy/downstream/transaction.js.map +1 -0
  17. package/dist/{esm/legacy/upstream/blocks/blocks.mjs → legacy/upstream/blocks/blocks.js} +2 -2
  18. package/dist/legacy/upstream/blocks/blocks.js.map +1 -0
  19. package/dist/legacy/upstream/blocks/index.js +7 -0
  20. package/dist/legacy/upstream/blocks/index.js.map +1 -0
  21. package/dist/{esm/legacy/upstream/blocks/upstream-events.mjs → legacy/upstream/blocks/upstream-events.js} +5 -5
  22. package/dist/legacy/upstream/blocks/upstream-events.js.map +1 -0
  23. package/dist/{esm/legacy/upstream/proofs.mjs → legacy/upstream/proofs.js} +1 -1
  24. package/dist/legacy/upstream/proofs.js.map +1 -0
  25. package/dist/{esm/legacy/upstream/upstream.mjs → legacy/upstream/upstream.js} +17 -17
  26. package/dist/legacy/upstream/upstream.js.map +1 -0
  27. package/dist/{esm/legacy/utils/create-opaque-token.mjs → legacy/utils/create-opaque-token.js} +1 -1
  28. package/dist/legacy/utils/create-opaque-token.js.map +1 -0
  29. package/dist/{esm/legacy/utils/fromShittyHeader.mjs → legacy/utils/fromShittyHeader.js} +1 -1
  30. package/dist/legacy/utils/fromShittyHeader.js.map +1 -0
  31. package/dist/{esm/legacy/utils/get-hasher-from-block.mjs → legacy/utils/get-hasher-from-block.js} +2 -2
  32. package/dist/legacy/utils/get-hasher-from-block.js.map +1 -0
  33. package/dist/{esm/legacy/utils/message-from-error.mjs → legacy/utils/message-from-error.js} +1 -1
  34. package/dist/legacy/utils/message-from-error.js.map +1 -0
  35. package/dist/{esm/legacy/utils/share-latest.mjs → legacy/utils/share-latest.js} +1 -1
  36. package/dist/legacy/utils/share-latest.js.map +1 -0
  37. package/dist/{esm/legacy/utils/with-latest-from-bp.mjs → legacy/utils/with-latest-from-bp.js} +20 -14
  38. package/dist/legacy/utils/with-latest-from-bp.js.map +1 -0
  39. package/dist/{esm/methods-router.mjs → methods-router.js} +3 -3
  40. package/dist/methods-router.js.map +1 -0
  41. package/dist/{esm/methods.mjs → methods.js} +1 -1
  42. package/dist/methods.js.map +1 -0
  43. package/dist/middleware.js +9 -0
  44. package/dist/middleware.js.map +1 -0
  45. package/dist/{esm/modern/fix-follow.mjs → modern/fix-follow.js} +5 -5
  46. package/dist/modern/fix-follow.js.map +1 -0
  47. package/dist/{esm/modern/fix-missing-initial-best.mjs → modern/fix-missing-initial-best.js} +3 -3
  48. package/dist/modern/fix-missing-initial-best.js.map +1 -0
  49. package/dist/{esm/modern/fix-premature-blocks.mjs → modern/fix-premature-blocks.js} +6 -6
  50. package/dist/modern/fix-premature-blocks.js.map +1 -0
  51. package/dist/{esm/modern/fix-unordered-blocks.mjs → modern/fix-unordered-blocks.js} +5 -5
  52. package/dist/modern/fix-unordered-blocks.js.map +1 -0
  53. package/dist/{esm/modern/fix-unordered-events.mjs → modern/fix-unordered-events.js} +2 -2
  54. package/dist/modern/fix-unordered-events.js.map +1 -0
  55. package/dist/modern/modern.js +21 -0
  56. package/dist/modern/modern.js.map +1 -0
  57. package/dist/{esm/modern/patch-chainhead-events.mjs → modern/patch-chainhead-events.js} +1 -1
  58. package/dist/modern/patch-chainhead-events.js.map +1 -0
  59. package/dist/{esm/modern/unpin-hash.mjs → modern/unpin-hash.js} +2 -2
  60. package/dist/modern/unpin-hash.js.map +1 -0
  61. package/dist/{esm/numeric-ids.mjs → numeric-ids.js} +1 -1
  62. package/dist/numeric-ids.js.map +1 -0
  63. package/dist/{esm/utils/get-async-middleware.mjs → utils/get-async-middleware.js} +1 -1
  64. package/dist/utils/get-async-middleware.js.map +1 -0
  65. package/dist/{esm/utils/utils.mjs → utils/utils.js} +1 -1
  66. package/dist/utils/utils.js.map +1 -0
  67. package/package.json +13 -23
  68. package/dist/esm/index.mjs +0 -13
  69. package/dist/esm/index.mjs.map +0 -1
  70. package/dist/esm/legacy/downstream/archive.mjs.map +0 -1
  71. package/dist/esm/legacy/downstream/chain-head.mjs.map +0 -1
  72. package/dist/esm/legacy/downstream/chainspec.mjs.map +0 -1
  73. package/dist/esm/legacy/downstream/downstream.mjs.map +0 -1
  74. package/dist/esm/legacy/downstream/storage.mjs.map +0 -1
  75. package/dist/esm/legacy/downstream/transaction.mjs.map +0 -1
  76. package/dist/esm/legacy/upstream/blocks/blocks.mjs.map +0 -1
  77. package/dist/esm/legacy/upstream/blocks/index.mjs +0 -7
  78. package/dist/esm/legacy/upstream/blocks/index.mjs.map +0 -1
  79. package/dist/esm/legacy/upstream/blocks/upstream-events.mjs.map +0 -1
  80. package/dist/esm/legacy/upstream/proofs.mjs.map +0 -1
  81. package/dist/esm/legacy/upstream/upstream.mjs.map +0 -1
  82. package/dist/esm/legacy/utils/create-opaque-token.mjs.map +0 -1
  83. package/dist/esm/legacy/utils/fromShittyHeader.mjs.map +0 -1
  84. package/dist/esm/legacy/utils/get-hasher-from-block.mjs.map +0 -1
  85. package/dist/esm/legacy/utils/message-from-error.mjs.map +0 -1
  86. package/dist/esm/legacy/utils/share-latest.mjs.map +0 -1
  87. package/dist/esm/legacy/utils/with-latest-from-bp.mjs.map +0 -1
  88. package/dist/esm/methods-router.mjs.map +0 -1
  89. package/dist/esm/methods.mjs.map +0 -1
  90. package/dist/esm/middleware.mjs +0 -24
  91. package/dist/esm/middleware.mjs.map +0 -1
  92. package/dist/esm/modern/fix-follow.mjs.map +0 -1
  93. package/dist/esm/modern/fix-missing-initial-best.mjs.map +0 -1
  94. package/dist/esm/modern/fix-premature-blocks.mjs.map +0 -1
  95. package/dist/esm/modern/fix-unordered-blocks.mjs.map +0 -1
  96. package/dist/esm/modern/fix-unordered-events.mjs.map +0 -1
  97. package/dist/esm/modern/modern.mjs +0 -21
  98. package/dist/esm/modern/modern.mjs.map +0 -1
  99. package/dist/esm/modern/patch-chainhead-events.mjs.map +0 -1
  100. package/dist/esm/modern/unpin-hash.mjs.map +0 -1
  101. package/dist/esm/numeric-ids.mjs.map +0 -1
  102. package/dist/esm/utils/get-async-middleware.mjs.map +0 -1
  103. package/dist/esm/utils/utils.mjs.map +0 -1
package/dist/hybrid.js ADDED
@@ -0,0 +1,102 @@
1
+ import { Subject, filter, take } from 'rxjs';
2
+ import { withLegacy } from './legacy/downstream/downstream.js';
3
+ import { modern } from './modern/modern.js';
4
+ import './modern/fix-follow.js';
5
+ import './modern/fix-premature-blocks.js';
6
+ import './modern/fix-unordered-blocks.js';
7
+ import './modern/fix-unordered-events.js';
8
+ import './methods.js';
9
+ import '@polkadot-api/raw-client';
10
+ import '@polkadot-api/utils';
11
+
12
+ const modernGroups = ["chainHead", "transaction", "chainSpec", "archive"].map(
13
+ (name) => `${name}_v1`
14
+ );
15
+ const hybridMiddleware = (methods) => {
16
+ const individualChecks = Object.fromEntries(
17
+ modernGroups.map((group) => [
18
+ group,
19
+ !!methods.find((v) => v.startsWith(group))
20
+ ])
21
+ );
22
+ return (base) => {
23
+ const multiplexed = multiplex(base);
24
+ const modernProvider = modern(multiplexed);
25
+ const legacyProvider = withLegacy(multiplexed);
26
+ return (onMsg, onHalt) => {
27
+ const modernConnection = modernProvider((message) => {
28
+ if ("error" in message && message.error.code === -32800) {
29
+ console.warn("Max follow connections received: chainHead_v1 disabled");
30
+ individualChecks.chainHead_v1 = false;
31
+ }
32
+ onMsg(message);
33
+ }, onHalt);
34
+ const legacyConnection = legacyProvider(onMsg, onHalt);
35
+ return {
36
+ send(message) {
37
+ for (const group of modernGroups) {
38
+ if (message.method.startsWith(group)) {
39
+ if (individualChecks[group]) {
40
+ modernConnection.send(message);
41
+ } else {
42
+ legacyConnection.send(message);
43
+ }
44
+ return;
45
+ }
46
+ }
47
+ modernConnection.send(message);
48
+ },
49
+ disconnect() {
50
+ modernConnection.disconnect();
51
+ legacyConnection.disconnect();
52
+ }
53
+ };
54
+ };
55
+ };
56
+ };
57
+ const multiplex = (base) => {
58
+ const halt$ = new Subject();
59
+ const msg$ = new Subject();
60
+ let refCount = 0;
61
+ let baseConnection = null;
62
+ return (onMsg, onHalt) => {
63
+ refCount++;
64
+ baseConnection ?? (baseConnection = base(
65
+ (msg) => msg$.next(msg),
66
+ (e) => halt$.next(e)
67
+ ));
68
+ const notificationSub = msg$.pipe(filter((v) => v.id == null)).subscribe(onMsg);
69
+ const haltSub = halt$.subscribe(onHalt);
70
+ const responseSubs = /* @__PURE__ */ new Set();
71
+ return {
72
+ send(message) {
73
+ if (message.id == null) {
74
+ return baseConnection?.send(message);
75
+ }
76
+ const id = message.id;
77
+ const responseSub = msg$.pipe(
78
+ filter((r) => r.id === id),
79
+ take(1)
80
+ ).subscribe((msg) => {
81
+ onMsg(msg);
82
+ if (!responseSub) throw new Error("unreachable");
83
+ responseSubs.delete(responseSub);
84
+ });
85
+ responseSubs.add(responseSub);
86
+ baseConnection?.send(message);
87
+ },
88
+ disconnect() {
89
+ notificationSub.unsubscribe();
90
+ haltSub.unsubscribe();
91
+ responseSubs.forEach((s) => s.unsubscribe());
92
+ refCount--;
93
+ if (refCount === 0) {
94
+ baseConnection?.disconnect();
95
+ }
96
+ }
97
+ };
98
+ };
99
+ };
100
+
101
+ export { hybridMiddleware };
102
+ //# sourceMappingURL=hybrid.js.map
@@ -0,0 +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: Middleware = (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 (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(filter((v) => v.id == null))\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 }\n },\n }\n }\n}\n"],"names":[],"mappings":"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"}