polkadot-api 0.12.1 → 0.13.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 (71) hide show
  1. package/chains/ksmcc3/package.json +1 -0
  2. package/chains/ksmcc3_asset_hub/package.json +1 -0
  3. package/chains/ksmcc3_bridge_hub/package.json +1 -0
  4. package/chains/ksmcc3_people/package.json +9 -0
  5. package/chains/package.json +1 -0
  6. package/chains/paseo/package.json +1 -0
  7. package/chains/paseo_asset_hub/package.json +1 -0
  8. package/chains/polkadot/package.json +1 -0
  9. package/chains/polkadot_asset_hub/package.json +1 -0
  10. package/chains/polkadot_bridge_hub/package.json +1 -0
  11. package/chains/polkadot_collectives/package.json +1 -0
  12. package/chains/polkadot_people/package.json +1 -0
  13. package/chains/rococo_v2_2/package.json +1 -0
  14. package/chains/rococo_v2_2_asset_hub/package.json +1 -0
  15. package/chains/rococo_v2_2_bridge_hub/package.json +1 -0
  16. package/chains/rococo_v2_2_people/package.json +9 -0
  17. package/chains/westend2/package.json +1 -0
  18. package/chains/westend2_asset_hub/package.json +1 -0
  19. package/chains/westend2_bridge_hub/package.json +1 -0
  20. package/chains/westend2_collectives/package.json +1 -0
  21. package/chains/westend2_people/package.json +9 -0
  22. package/dist/esm/reexports/chains_ksmcc3_people.mjs +2 -0
  23. package/dist/esm/reexports/chains_ksmcc3_people.mjs.map +1 -0
  24. package/dist/esm/reexports/chains_rococo_v2_2_people.mjs +2 -0
  25. package/dist/esm/reexports/chains_rococo_v2_2_people.mjs.map +1 -0
  26. package/dist/esm/reexports/chains_westend2_people.mjs +2 -0
  27. package/dist/esm/reexports/chains_westend2_people.mjs.map +1 -0
  28. package/dist/esm/reexports/polkadot-sdk-compat.mjs +0 -1
  29. package/dist/esm/reexports/polkadot-sdk-compat.mjs.map +1 -1
  30. package/dist/esm/reexports/smoldot_from-node-worker.mjs +2 -0
  31. package/dist/esm/reexports/smoldot_from-node-worker.mjs.map +1 -0
  32. package/dist/esm/reexports/smoldot_node-worker.mjs +2 -0
  33. package/dist/esm/reexports/smoldot_node-worker.mjs.map +1 -0
  34. package/dist/esm/tx/submit-fns.mjs +8 -2
  35. package/dist/esm/tx/submit-fns.mjs.map +1 -1
  36. package/dist/index.d.ts +10 -1
  37. package/dist/index.js +8 -2
  38. package/dist/index.js.map +1 -1
  39. package/dist/reexports/chains.d.ts +5 -0
  40. package/dist/reexports/chains_ksmcc3_people.d.ts +1 -0
  41. package/dist/reexports/chains_ksmcc3_people.js +13 -0
  42. package/dist/reexports/chains_ksmcc3_people.js.map +1 -0
  43. package/dist/reexports/chains_rococo_v2_2_people.d.ts +1 -0
  44. package/dist/reexports/chains_rococo_v2_2_people.js +13 -0
  45. package/dist/reexports/chains_rococo_v2_2_people.js.map +1 -0
  46. package/dist/reexports/chains_westend2_people.d.ts +1 -0
  47. package/dist/reexports/chains_westend2_people.js +13 -0
  48. package/dist/reexports/chains_westend2_people.js.map +1 -0
  49. package/dist/reexports/polkadot-sdk-compat.d.ts +0 -1
  50. package/dist/reexports/polkadot-sdk-compat.js +0 -3
  51. package/dist/reexports/polkadot-sdk-compat.js.map +1 -1
  52. package/dist/reexports/smoldot_from-node-worker.d.ts +1 -0
  53. package/dist/reexports/smoldot_from-node-worker.js +13 -0
  54. package/dist/reexports/smoldot_from-node-worker.js.map +1 -0
  55. package/dist/reexports/smoldot_node-worker.d.ts +1 -0
  56. package/dist/reexports/smoldot_node-worker.js +13 -0
  57. package/dist/reexports/smoldot_node-worker.js.map +1 -0
  58. package/logs-provider/package.json +1 -0
  59. package/package.json +71 -16
  60. package/pjs-signer/package.json +1 -0
  61. package/polkadot-sdk-compat/package.json +1 -0
  62. package/signer/package.json +1 -0
  63. package/sm-provider/package.json +1 -0
  64. package/smoldot/from-node-worker/package.json +9 -0
  65. package/smoldot/from-worker/package.json +1 -0
  66. package/smoldot/node-worker/package.json +9 -0
  67. package/smoldot/package.json +1 -0
  68. package/smoldot/worker/package.json +1 -0
  69. package/utils/package.json +1 -0
  70. package/ws-provider/node/package.json +1 -0
  71. package/ws-provider/web/package.json +1 -0
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_ksmcc3.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_ksmcc3.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_ksmcc3.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_ksmcc3.mjs",
6
7
  "require": "../../dist/reexports/chains_ksmcc3.js",
7
8
  "default": "../../dist/reexports/chains_ksmcc3.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_ksmcc3_asset_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_ksmcc3_asset_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_ksmcc3_asset_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_ksmcc3_asset_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_ksmcc3_asset_hub.js",
7
8
  "default": "../../dist/reexports/chains_ksmcc3_asset_hub.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_ksmcc3_bridge_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_ksmcc3_bridge_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_ksmcc3_bridge_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_ksmcc3_bridge_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_ksmcc3_bridge_hub.js",
7
8
  "default": "../../dist/reexports/chains_ksmcc3_bridge_hub.js"
8
9
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "polkadot-api_chains_ksmcc3_people",
3
+ "types": "../../dist/reexports/chains_ksmcc3_people.d.ts",
4
+ "module": "../../dist/esm/reexports/chains_ksmcc3_people.mjs",
5
+ "import": "../../dist/esm/reexports/chains_ksmcc3_people.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_ksmcc3_people.mjs",
7
+ "require": "../../dist/reexports/chains_ksmcc3_people.js",
8
+ "default": "../../dist/reexports/chains_ksmcc3_people.js"
9
+ }
@@ -3,6 +3,7 @@
3
3
  "types": "../dist/reexports/chains.d.ts",
4
4
  "module": "../dist/esm/reexports/chains.mjs",
5
5
  "import": "../dist/esm/reexports/chains.mjs",
6
+ "browser": "../dist/esm/reexports/chains.mjs",
6
7
  "require": "../dist/reexports/chains.js",
7
8
  "default": "../dist/reexports/chains.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_paseo.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_paseo.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_paseo.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_paseo.mjs",
6
7
  "require": "../../dist/reexports/chains_paseo.js",
7
8
  "default": "../../dist/reexports/chains_paseo.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_paseo_asset_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_paseo_asset_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_paseo_asset_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_paseo_asset_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_paseo_asset_hub.js",
7
8
  "default": "../../dist/reexports/chains_paseo_asset_hub.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_polkadot.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_polkadot.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_polkadot.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_polkadot.mjs",
6
7
  "require": "../../dist/reexports/chains_polkadot.js",
7
8
  "default": "../../dist/reexports/chains_polkadot.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_polkadot_asset_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_polkadot_asset_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_polkadot_asset_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_polkadot_asset_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_polkadot_asset_hub.js",
7
8
  "default": "../../dist/reexports/chains_polkadot_asset_hub.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_polkadot_bridge_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_polkadot_bridge_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_polkadot_bridge_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_polkadot_bridge_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_polkadot_bridge_hub.js",
7
8
  "default": "../../dist/reexports/chains_polkadot_bridge_hub.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_polkadot_collectives.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_polkadot_collectives.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_polkadot_collectives.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_polkadot_collectives.mjs",
6
7
  "require": "../../dist/reexports/chains_polkadot_collectives.js",
7
8
  "default": "../../dist/reexports/chains_polkadot_collectives.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_polkadot_people.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_polkadot_people.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_polkadot_people.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_polkadot_people.mjs",
6
7
  "require": "../../dist/reexports/chains_polkadot_people.js",
7
8
  "default": "../../dist/reexports/chains_polkadot_people.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_rococo_v2_2.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_rococo_v2_2.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_rococo_v2_2.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_rococo_v2_2.mjs",
6
7
  "require": "../../dist/reexports/chains_rococo_v2_2.js",
7
8
  "default": "../../dist/reexports/chains_rococo_v2_2.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_rococo_v2_2_asset_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_rococo_v2_2_asset_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_rococo_v2_2_asset_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_rococo_v2_2_asset_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_rococo_v2_2_asset_hub.js",
7
8
  "default": "../../dist/reexports/chains_rococo_v2_2_asset_hub.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_rococo_v2_2_bridge_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_rococo_v2_2_bridge_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_rococo_v2_2_bridge_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_rococo_v2_2_bridge_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_rococo_v2_2_bridge_hub.js",
7
8
  "default": "../../dist/reexports/chains_rococo_v2_2_bridge_hub.js"
8
9
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "polkadot-api_chains_rococo_v2_2_people",
3
+ "types": "../../dist/reexports/chains_rococo_v2_2_people.d.ts",
4
+ "module": "../../dist/esm/reexports/chains_rococo_v2_2_people.mjs",
5
+ "import": "../../dist/esm/reexports/chains_rococo_v2_2_people.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_rococo_v2_2_people.mjs",
7
+ "require": "../../dist/reexports/chains_rococo_v2_2_people.js",
8
+ "default": "../../dist/reexports/chains_rococo_v2_2_people.js"
9
+ }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_westend2.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_westend2.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_westend2.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_westend2.mjs",
6
7
  "require": "../../dist/reexports/chains_westend2.js",
7
8
  "default": "../../dist/reexports/chains_westend2.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_westend2_asset_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_westend2_asset_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_westend2_asset_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_westend2_asset_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_westend2_asset_hub.js",
7
8
  "default": "../../dist/reexports/chains_westend2_asset_hub.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_westend2_bridge_hub.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_westend2_bridge_hub.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_westend2_bridge_hub.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_westend2_bridge_hub.mjs",
6
7
  "require": "../../dist/reexports/chains_westend2_bridge_hub.js",
7
8
  "default": "../../dist/reexports/chains_westend2_bridge_hub.js"
8
9
  }
@@ -3,6 +3,7 @@
3
3
  "types": "../../dist/reexports/chains_westend2_collectives.d.ts",
4
4
  "module": "../../dist/esm/reexports/chains_westend2_collectives.mjs",
5
5
  "import": "../../dist/esm/reexports/chains_westend2_collectives.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_westend2_collectives.mjs",
6
7
  "require": "../../dist/reexports/chains_westend2_collectives.js",
7
8
  "default": "../../dist/reexports/chains_westend2_collectives.js"
8
9
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "polkadot-api_chains_westend2_people",
3
+ "types": "../../dist/reexports/chains_westend2_people.d.ts",
4
+ "module": "../../dist/esm/reexports/chains_westend2_people.mjs",
5
+ "import": "../../dist/esm/reexports/chains_westend2_people.mjs",
6
+ "browser": "../../dist/esm/reexports/chains_westend2_people.mjs",
7
+ "require": "../../dist/reexports/chains_westend2_people.js",
8
+ "default": "../../dist/reexports/chains_westend2_people.js"
9
+ }
@@ -0,0 +1,2 @@
1
+ export * from '@polkadot-api/known-chains/ksmcc3_people';
2
+ //# sourceMappingURL=chains_ksmcc3_people.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains_ksmcc3_people.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from '@polkadot-api/known-chains/rococo_v2_2_people';
2
+ //# sourceMappingURL=chains_rococo_v2_2_people.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains_rococo_v2_2_people.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from '@polkadot-api/known-chains/westend2_people';
2
+ //# sourceMappingURL=chains_westend2_people.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains_westend2_people.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,3 +1,2 @@
1
1
  export * from '@polkadot-api/polkadot-sdk-compat';
2
- export { default } from '@polkadot-api/polkadot-sdk-compat';
3
2
  //# sourceMappingURL=polkadot-sdk-compat.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"polkadot-sdk-compat.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"polkadot-sdk-compat.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from '@polkadot-api/smoldot/from-node-worker';
2
+ //# sourceMappingURL=smoldot_from-node-worker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoldot_from-node-worker.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from '@polkadot-api/smoldot/node-worker';
2
+ //# sourceMappingURL=smoldot_node-worker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoldot_node-worker.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -76,8 +76,14 @@ const computeState = (analized$, blocks$) => new Observable((observer) => {
76
76
  const getTxSuccessFromSystemEvents = (systemEvents, txIdx) => {
77
77
  const events = systemEvents.filter((x) => x.phase.type === "ApplyExtrinsic" && x.phase.value === txIdx).map((x) => x.event);
78
78
  const lastEvent = events[events.length - 1];
79
- const ok = lastEvent.type === "System" && lastEvent.value.type === "ExtrinsicSuccess";
80
- return { ok, events };
79
+ if (lastEvent.type === "System" && lastEvent.value.type === "ExtrinsicFailed") {
80
+ return {
81
+ ok: false,
82
+ events,
83
+ dispatchError: lastEvent.value.value.dispatch_error
84
+ };
85
+ }
86
+ return { ok: true, events };
81
87
  };
82
88
  class InvalidTxError extends Error {
83
89
  // likely to be a `TransactionValidityError`
@@ -1 +1 @@
1
- {"version":3,"file":"submit-fns.mjs","sources":["../../../src/tx/submit-fns.ts"],"sourcesContent":["import {\n Binary,\n Blake2256,\n HexString,\n ResultPayload,\n} from \"@polkadot-api/substrate-bindings\"\nimport {\n EMPTY,\n Observable,\n concat,\n distinctUntilChanged,\n filter,\n lastValueFrom,\n map,\n mergeMap,\n of,\n take,\n} from \"rxjs\"\nimport {\n ChainHead$,\n PinnedBlocks,\n SystemEvent,\n} from \"@polkadot-api/observable-client\"\nimport { AnalyzedBlock } from \"@polkadot-api/observable-client\"\nimport { TxEvent, TxEventsPayload, TxFinalizedPayload } from \"./types\"\nimport { continueWith } from \"@/utils\"\nimport { fromHex, toHex } from \"@polkadot-api/utils\"\n\n// TODO: make it dynamic based on the tx-function of the client\nconst hashFromTx = (tx: HexString) => toHex(Blake2256(fromHex(tx)))\n\nconst computeState = (\n analized$: Observable<AnalyzedBlock>,\n blocks$: Observable<PinnedBlocks>,\n) =>\n new Observable<\n | {\n found: true\n hash: string\n number: number\n index: number\n events: any\n }\n | { found: false; validity: ResultPayload<any, any> | null }\n >((observer) => {\n const analyzedBlocks = new Map<string, AnalyzedBlock>()\n let pinnedBlocks: PinnedBlocks\n let latestState:\n | {\n found: true\n hash: string\n number: number\n index: number\n events: any\n }\n | { found: false; validity: ResultPayload<any, any> | null }\n\n const computeNextState = () => {\n let current: string = pinnedBlocks.best\n let analyzed: AnalyzedBlock | undefined = analyzedBlocks.get(current)\n\n while (!analyzed) {\n const block = pinnedBlocks.blocks.get(current)\n if (!block) break\n analyzed = analyzedBlocks.get((current = block.parent))\n }\n\n if (!analyzed) return // this shouldn't happen, though\n\n const analyzedNumber = pinnedBlocks.blocks.get(analyzed.hash)!.number\n const isFinalized =\n analyzedNumber <=\n pinnedBlocks.blocks.get(pinnedBlocks.finalized)!.number\n\n const found = analyzed.found.type\n if (found && latestState?.found && latestState.hash === analyzed.hash) {\n if (isFinalized) observer.complete()\n return\n }\n\n observer.next(\n (latestState = analyzed.found.type\n ? {\n found: found as true,\n hash: analyzed.hash,\n number: analyzedNumber,\n index: analyzed.found.index,\n events: analyzed.found.events,\n }\n : {\n found: found as false,\n validity: analyzed.found.validity,\n }),\n )\n\n if (isFinalized) {\n if (found) observer.complete()\n else if (analyzed.found.validity?.success === false)\n observer.error(new InvalidTxError(analyzed.found.validity.value))\n }\n }\n\n const subscription = blocks$\n .pipe(\n distinctUntilChanged(\n (a, b) => a.finalized === b.finalized && a.best === b.best,\n ),\n )\n .subscribe({\n next: (pinned: PinnedBlocks) => {\n pinnedBlocks = pinned\n if (analyzedBlocks.size === 0) return\n computeNextState()\n },\n error(e) {\n observer.error(e)\n },\n })\n\n subscription.add(\n analized$.subscribe({\n next: (block) => {\n analyzedBlocks.set(block.hash, block)\n computeNextState()\n },\n error(e) {\n observer.error(e)\n },\n }),\n )\n\n return subscription\n }).pipe(distinctUntilChanged((a, b) => a === b))\n\nconst getTxSuccessFromSystemEvents = (\n systemEvents: Array<SystemEvent>,\n txIdx: number,\n): Omit<TxEventsPayload, \"block\"> => {\n const events = systemEvents\n .filter((x) => x.phase.type === \"ApplyExtrinsic\" && x.phase.value === txIdx)\n .map((x) => x.event)\n\n const lastEvent = events[events.length - 1]\n const ok =\n lastEvent.type === \"System\" && lastEvent.value.type === \"ExtrinsicSuccess\"\n\n return { ok, events }\n}\n\n/*\ntype TransactionValidityError = Enum<{\n Invalid: Enum<{\n Call: undefined\n Payment: undefined\n Future: undefined\n Stale: undefined\n BadProof: undefined\n AncientBirthBlock: undefined\n ExhaustsResources: undefined\n Custom: number\n BadMandatory: undefined\n MandatoryValidation: undefined\n BadSigner: undefined\n }>\n Unknown: Enum<{\n CannotLookup: undefined\n NoUnsignedValidator: undefined\n Custom: number\n }>\n}>\n*/\n\nexport class InvalidTxError extends Error {\n error: any // likely to be a `TransactionValidityError`\n constructor(e: any) {\n super(\n JSON.stringify(\n e,\n (_, value) => {\n if (typeof value === \"bigint\") return value.toString()\n return value instanceof Binary ? value.asHex() : value\n },\n 2,\n ),\n )\n this.name = \"InvalidTxError\"\n this.error = e\n }\n}\n\nexport const submit$ = (\n chainHead: ChainHead$,\n broadcastTx$: (tx: string) => Observable<never>,\n tx: HexString,\n at?: HexString,\n emitSign = false,\n): Observable<TxEvent> => {\n const txHash = hashFromTx(tx)\n const getTxEvent = <\n Type extends TxEvent[\"type\"],\n Rest extends Omit<TxEvent & { type: Type }, \"type\" | \"txHash\">,\n >(\n type: Type,\n rest: Rest,\n ): TxEvent & { type: Type } =>\n ({\n type,\n txHash,\n ...rest,\n }) as any\n\n const at$ = chainHead.pinnedBlocks$.pipe(\n take(1),\n map((blocks) => blocks.blocks.get(at!)?.hash ?? blocks.finalized),\n )\n\n const validate$: Observable<never> = at$.pipe(\n mergeMap((at) =>\n chainHead.validateTx$(at, tx).pipe(\n filter((x) => !x.success),\n map((x) => {\n throw new InvalidTxError(x.value)\n }),\n ),\n ),\n )\n\n const track$ = new Observable<AnalyzedBlock>((observer) => {\n const subscription = chainHead.trackTx$(tx).subscribe(observer)\n subscription.add(\n broadcastTx$(tx).subscribe({\n error(e) {\n observer.error(e)\n },\n }),\n )\n return subscription\n })\n\n const bestBlockState$ = computeState(track$, chainHead.pinnedBlocks$).pipe(\n map((x) => {\n if (!x.found)\n return getTxEvent(\"txBestBlocksState\", {\n found: false,\n isValid: x.validity?.success !== false,\n })\n\n return getTxEvent(\"txBestBlocksState\", {\n found: true,\n block: {\n index: x.index,\n number: x.number,\n hash: x.hash,\n },\n ...getTxSuccessFromSystemEvents(x.events, x.index),\n })\n }),\n )\n\n return concat(\n emitSign ? of(getTxEvent(\"signed\", {})) : EMPTY,\n validate$,\n of(getTxEvent(\"broadcasted\", {})),\n bestBlockState$.pipe(\n continueWith(({ found, type, ...rest }) =>\n found ? of(getTxEvent(\"finalized\", rest as any)) : EMPTY,\n ),\n ),\n )\n}\n\nexport const submit = async (\n chainHead: ChainHead$,\n broadcastTx$: (tx: string) => Observable<never>,\n transaction: HexString,\n at?: HexString,\n): Promise<TxFinalizedPayload> =>\n lastValueFrom(submit$(chainHead, broadcastTx$, transaction, at)).then((x) => {\n if (x.type !== \"finalized\") throw null\n const result: TxFinalizedPayload = { ...x }\n delete (result as any).type\n return result\n })\n"],"names":["at"],"mappings":"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"}
1
+ {"version":3,"file":"submit-fns.mjs","sources":["../../../src/tx/submit-fns.ts"],"sourcesContent":["import {\n Binary,\n Blake2256,\n HexString,\n ResultPayload,\n} from \"@polkadot-api/substrate-bindings\"\nimport {\n EMPTY,\n Observable,\n concat,\n distinctUntilChanged,\n filter,\n lastValueFrom,\n map,\n mergeMap,\n of,\n take,\n} from \"rxjs\"\nimport {\n ChainHead$,\n PinnedBlocks,\n SystemEvent,\n} from \"@polkadot-api/observable-client\"\nimport { AnalyzedBlock } from \"@polkadot-api/observable-client\"\nimport { TxEvent, TxEventsPayload, TxFinalizedPayload } from \"./types\"\nimport { continueWith } from \"@/utils\"\nimport { fromHex, toHex } from \"@polkadot-api/utils\"\n\n// TODO: make it dynamic based on the tx-function of the client\nconst hashFromTx = (tx: HexString) => toHex(Blake2256(fromHex(tx)))\n\nconst computeState = (\n analized$: Observable<AnalyzedBlock>,\n blocks$: Observable<PinnedBlocks>,\n) =>\n new Observable<\n | {\n found: true\n hash: string\n number: number\n index: number\n events: any\n }\n | { found: false; validity: ResultPayload<any, any> | null }\n >((observer) => {\n const analyzedBlocks = new Map<string, AnalyzedBlock>()\n let pinnedBlocks: PinnedBlocks\n let latestState:\n | {\n found: true\n hash: string\n number: number\n index: number\n events: any\n }\n | { found: false; validity: ResultPayload<any, any> | null }\n\n const computeNextState = () => {\n let current: string = pinnedBlocks.best\n let analyzed: AnalyzedBlock | undefined = analyzedBlocks.get(current)\n\n while (!analyzed) {\n const block = pinnedBlocks.blocks.get(current)\n if (!block) break\n analyzed = analyzedBlocks.get((current = block.parent))\n }\n\n if (!analyzed) return // this shouldn't happen, though\n\n const analyzedNumber = pinnedBlocks.blocks.get(analyzed.hash)!.number\n const isFinalized =\n analyzedNumber <=\n pinnedBlocks.blocks.get(pinnedBlocks.finalized)!.number\n\n const found = analyzed.found.type\n if (found && latestState?.found && latestState.hash === analyzed.hash) {\n if (isFinalized) observer.complete()\n return\n }\n\n observer.next(\n (latestState = analyzed.found.type\n ? {\n found: found as true,\n hash: analyzed.hash,\n number: analyzedNumber,\n index: analyzed.found.index,\n events: analyzed.found.events,\n }\n : {\n found: found as false,\n validity: analyzed.found.validity,\n }),\n )\n\n if (isFinalized) {\n if (found) observer.complete()\n else if (analyzed.found.validity?.success === false)\n observer.error(new InvalidTxError(analyzed.found.validity.value))\n }\n }\n\n const subscription = blocks$\n .pipe(\n distinctUntilChanged(\n (a, b) => a.finalized === b.finalized && a.best === b.best,\n ),\n )\n .subscribe({\n next: (pinned: PinnedBlocks) => {\n pinnedBlocks = pinned\n if (analyzedBlocks.size === 0) return\n computeNextState()\n },\n error(e) {\n observer.error(e)\n },\n })\n\n subscription.add(\n analized$.subscribe({\n next: (block) => {\n analyzedBlocks.set(block.hash, block)\n computeNextState()\n },\n error(e) {\n observer.error(e)\n },\n }),\n )\n\n return subscription\n }).pipe(distinctUntilChanged((a, b) => a === b))\n\nconst getTxSuccessFromSystemEvents = (\n systemEvents: Array<SystemEvent>,\n txIdx: number,\n): Omit<TxEventsPayload, \"block\"> => {\n const events = systemEvents\n .filter((x) => x.phase.type === \"ApplyExtrinsic\" && x.phase.value === txIdx)\n .map((x) => x.event)\n\n const lastEvent = events[events.length - 1]\n if (\n lastEvent.type === \"System\" &&\n lastEvent.value.type === \"ExtrinsicFailed\"\n ) {\n return {\n ok: false,\n events,\n dispatchError: lastEvent.value.value.dispatch_error,\n }\n }\n\n return { ok: true, events }\n}\n\n/*\ntype TransactionValidityError = Enum<{\n Invalid: Enum<{\n Call: undefined\n Payment: undefined\n Future: undefined\n Stale: undefined\n BadProof: undefined\n AncientBirthBlock: undefined\n ExhaustsResources: undefined\n Custom: number\n BadMandatory: undefined\n MandatoryValidation: undefined\n BadSigner: undefined\n }>\n Unknown: Enum<{\n CannotLookup: undefined\n NoUnsignedValidator: undefined\n Custom: number\n }>\n}>\n*/\n\nexport class InvalidTxError extends Error {\n error: any // likely to be a `TransactionValidityError`\n constructor(e: any) {\n super(\n JSON.stringify(\n e,\n (_, value) => {\n if (typeof value === \"bigint\") return value.toString()\n return value instanceof Binary ? value.asHex() : value\n },\n 2,\n ),\n )\n this.name = \"InvalidTxError\"\n this.error = e\n }\n}\n\nexport const submit$ = (\n chainHead: ChainHead$,\n broadcastTx$: (tx: string) => Observable<never>,\n tx: HexString,\n at?: HexString,\n emitSign = false,\n): Observable<TxEvent> => {\n const txHash = hashFromTx(tx)\n const getTxEvent = <\n Type extends TxEvent[\"type\"],\n Rest extends Omit<TxEvent & { type: Type }, \"type\" | \"txHash\">,\n >(\n type: Type,\n rest: Rest,\n ): TxEvent & { type: Type } =>\n ({\n type,\n txHash,\n ...rest,\n }) as any\n\n const at$ = chainHead.pinnedBlocks$.pipe(\n take(1),\n map((blocks) => blocks.blocks.get(at!)?.hash ?? blocks.finalized),\n )\n\n const validate$: Observable<never> = at$.pipe(\n mergeMap((at) =>\n chainHead.validateTx$(at, tx).pipe(\n filter((x) => !x.success),\n map((x) => {\n throw new InvalidTxError(x.value)\n }),\n ),\n ),\n )\n\n const track$ = new Observable<AnalyzedBlock>((observer) => {\n const subscription = chainHead.trackTx$(tx).subscribe(observer)\n subscription.add(\n broadcastTx$(tx).subscribe({\n error(e) {\n observer.error(e)\n },\n }),\n )\n return subscription\n })\n\n const bestBlockState$ = computeState(track$, chainHead.pinnedBlocks$).pipe(\n map((x) => {\n if (!x.found)\n return getTxEvent(\"txBestBlocksState\", {\n found: false,\n isValid: x.validity?.success !== false,\n })\n\n return getTxEvent(\"txBestBlocksState\", {\n found: true,\n block: {\n index: x.index,\n number: x.number,\n hash: x.hash,\n },\n ...getTxSuccessFromSystemEvents(x.events, x.index),\n })\n }),\n )\n\n return concat(\n emitSign ? of(getTxEvent(\"signed\", {})) : EMPTY,\n validate$,\n of(getTxEvent(\"broadcasted\", {})),\n bestBlockState$.pipe(\n continueWith(({ found, type, ...rest }) =>\n found ? of(getTxEvent(\"finalized\", rest as any)) : EMPTY,\n ),\n ),\n )\n}\n\nexport const submit = async (\n chainHead: ChainHead$,\n broadcastTx$: (tx: string) => Observable<never>,\n transaction: HexString,\n at?: HexString,\n): Promise<TxFinalizedPayload> =>\n lastValueFrom(submit$(chainHead, broadcastTx$, transaction, at)).then((x) => {\n if (x.type !== \"finalized\") throw null\n const result: TxFinalizedPayload = { ...x }\n delete (result as any).type\n return result\n })\n"],"names":["at"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -317,7 +317,16 @@ type TxEventsPayload = {
317
317
  number: number;
318
318
  index: number;
319
319
  };
320
- };
320
+ } & ({
321
+ ok: true;
322
+ dispatchError?: undefined;
323
+ } | {
324
+ ok: false;
325
+ dispatchError: {
326
+ type: string;
327
+ value: unknown;
328
+ };
329
+ });
321
330
  type TxFinalized = {
322
331
  type: "finalized";
323
332
  txHash: HexString;
package/dist/index.js CHANGED
@@ -815,8 +815,14 @@ const computeState = (analized$, blocks$) => new rxjs.Observable((observer) => {
815
815
  const getTxSuccessFromSystemEvents = (systemEvents, txIdx) => {
816
816
  const events = systemEvents.filter((x) => x.phase.type === "ApplyExtrinsic" && x.phase.value === txIdx).map((x) => x.event);
817
817
  const lastEvent = events[events.length - 1];
818
- const ok = lastEvent.type === "System" && lastEvent.value.type === "ExtrinsicSuccess";
819
- return { ok, events };
818
+ if (lastEvent.type === "System" && lastEvent.value.type === "ExtrinsicFailed") {
819
+ return {
820
+ ok: false,
821
+ events,
822
+ dispatchError: lastEvent.value.value.dispatch_error
823
+ };
824
+ }
825
+ return { ok: true, events };
820
826
  };
821
827
  class InvalidTxError extends Error {
822
828
  // likely to be a `TransactionValidityError`