@pezkuwi/api 16.5.6 → 16.5.8
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/build/LICENSE +201 -0
- package/build/README.md +100 -0
- package/build/augment.d.ts +1 -0
- package/build/augment.js +1 -0
- package/build/base/Decorate.d.ts +143 -0
- package/build/base/Decorate.js +752 -0
- package/build/base/Events.d.ts +67 -0
- package/build/base/Events.js +78 -0
- package/build/base/Getters.d.ts +163 -0
- package/build/base/Getters.js +207 -0
- package/build/base/Init.d.ts +44 -0
- package/build/base/Init.js +400 -0
- package/build/base/find.d.ts +3 -0
- package/build/base/find.js +7 -0
- package/build/base/index.d.ts +47 -0
- package/build/base/index.js +57 -0
- package/build/base/types.d.ts +15 -0
- package/build/base/types.js +1 -0
- package/build/bundle-pezkuwi-api.js +26247 -0
- package/build/bundle.d.ts +7 -0
- package/build/bundle.js +7 -0
- package/build/cjs/augment.d.ts +1 -0
- package/build/cjs/augment.js +3 -0
- package/build/cjs/base/Decorate.d.ts +143 -0
- package/build/cjs/base/Decorate.js +756 -0
- package/build/cjs/base/Events.d.ts +67 -0
- package/build/cjs/base/Events.js +82 -0
- package/build/cjs/base/Getters.d.ts +163 -0
- package/build/cjs/base/Getters.js +211 -0
- package/build/cjs/base/Init.d.ts +44 -0
- package/build/cjs/base/Init.js +404 -0
- package/build/cjs/base/find.d.ts +3 -0
- package/build/cjs/base/find.js +11 -0
- package/build/cjs/base/index.d.ts +47 -0
- package/build/cjs/base/index.js +61 -0
- package/build/cjs/base/types.d.ts +15 -0
- package/build/cjs/base/types.js +2 -0
- package/build/cjs/bundle.d.ts +7 -0
- package/build/cjs/bundle.js +17 -0
- package/build/cjs/index.d.ts +2 -0
- package/build/cjs/index.js +5 -0
- package/build/cjs/package.json +3 -0
- package/build/cjs/packageDetect.d.ts +1 -0
- package/build/cjs/packageDetect.js +10 -0
- package/build/cjs/packageInfo.d.ts +6 -0
- package/build/cjs/packageInfo.js +4 -0
- package/build/cjs/promise/Api.d.ts +158 -0
- package/build/cjs/promise/Api.js +195 -0
- package/build/cjs/promise/Combinator.d.ts +12 -0
- package/build/cjs/promise/Combinator.js +72 -0
- package/build/cjs/promise/decorateMethod.d.ts +14 -0
- package/build/cjs/promise/decorateMethod.js +75 -0
- package/build/cjs/promise/index.d.ts +2 -0
- package/build/cjs/promise/index.js +7 -0
- package/build/cjs/promise/types.d.ts +5 -0
- package/build/cjs/promise/types.js +2 -0
- package/build/cjs/rx/Api.d.ts +155 -0
- package/build/cjs/rx/Api.js +173 -0
- package/build/cjs/rx/decorateMethod.d.ts +3 -0
- package/build/cjs/rx/decorateMethod.js +6 -0
- package/build/cjs/rx/index.d.ts +2 -0
- package/build/cjs/rx/index.js +7 -0
- package/build/cjs/submittable/Result.d.ts +31 -0
- package/build/cjs/submittable/Result.js +84 -0
- package/build/cjs/submittable/createClass.d.ts +12 -0
- package/build/cjs/submittable/createClass.js +277 -0
- package/build/cjs/submittable/createSubmittable.d.ts +8 -0
- package/build/cjs/submittable/createSubmittable.js +8 -0
- package/build/cjs/submittable/index.d.ts +2 -0
- package/build/cjs/submittable/index.js +7 -0
- package/build/cjs/submittable/types.d.ts +1 -0
- package/build/cjs/submittable/types.js +2 -0
- package/build/cjs/types/calls.d.ts +1 -0
- package/build/cjs/types/calls.js +4 -0
- package/build/cjs/types/consts.d.ts +1 -0
- package/build/cjs/types/consts.js +4 -0
- package/build/cjs/types/errors.d.ts +1 -0
- package/build/cjs/types/errors.js +4 -0
- package/build/cjs/types/events.d.ts +1 -0
- package/build/cjs/types/events.js +4 -0
- package/build/cjs/types/index.d.ts +114 -0
- package/build/cjs/types/index.js +13 -0
- package/build/cjs/types/storage.d.ts +1 -0
- package/build/cjs/types/storage.js +4 -0
- package/build/cjs/types/submittable.d.ts +1 -0
- package/build/cjs/types/submittable.js +4 -0
- package/build/cjs/util/augmentObject.d.ts +9 -0
- package/build/cjs/util/augmentObject.js +84 -0
- package/build/cjs/util/decorate.d.ts +16 -0
- package/build/cjs/util/decorate.js +17 -0
- package/build/cjs/util/filterEvents.d.ts +6 -0
- package/build/cjs/util/filterEvents.js +25 -0
- package/build/cjs/util/index.d.ts +4 -0
- package/build/cjs/util/index.js +11 -0
- package/build/cjs/util/isKeyringPair.d.ts +3 -0
- package/build/cjs/util/isKeyringPair.js +7 -0
- package/build/cjs/util/logging.d.ts +1 -0
- package/build/cjs/util/logging.js +5 -0
- package/build/cjs/util/validate.d.ts +3 -0
- package/build/cjs/util/validate.js +26 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +2 -0
- package/build/package.json +612 -0
- package/build/packageDetect.d.ts +1 -0
- package/build/packageDetect.js +8 -0
- package/build/packageInfo.d.ts +6 -0
- package/build/packageInfo.js +1 -0
- package/build/promise/Api.d.ts +158 -0
- package/build/promise/Api.js +191 -0
- package/build/promise/Combinator.d.ts +12 -0
- package/build/promise/Combinator.js +68 -0
- package/build/promise/decorateMethod.d.ts +14 -0
- package/build/promise/decorateMethod.js +71 -0
- package/build/promise/index.d.ts +2 -0
- package/build/promise/index.js +2 -0
- package/build/promise/types.d.ts +5 -0
- package/build/promise/types.js +1 -0
- package/build/rx/Api.d.ts +155 -0
- package/build/rx/Api.js +169 -0
- package/build/rx/decorateMethod.d.ts +3 -0
- package/build/rx/decorateMethod.js +3 -0
- package/build/rx/index.d.ts +2 -0
- package/build/rx/index.js +2 -0
- package/build/submittable/Result.d.ts +31 -0
- package/build/submittable/Result.js +80 -0
- package/build/submittable/createClass.d.ts +12 -0
- package/build/submittable/createClass.js +274 -0
- package/build/submittable/createSubmittable.d.ts +8 -0
- package/build/submittable/createSubmittable.js +5 -0
- package/build/submittable/index.d.ts +2 -0
- package/build/submittable/index.js +2 -0
- package/build/submittable/types.d.ts +1 -0
- package/build/submittable/types.js +1 -0
- package/build/types/calls.d.ts +1 -0
- package/build/types/calls.js +1 -0
- package/build/types/consts.d.ts +1 -0
- package/build/types/consts.js +1 -0
- package/build/types/errors.d.ts +1 -0
- package/build/types/errors.js +1 -0
- package/build/types/events.d.ts +1 -0
- package/build/types/events.js +1 -0
- package/build/types/index.d.ts +114 -0
- package/build/types/index.js +8 -0
- package/build/types/storage.d.ts +1 -0
- package/build/types/storage.js +1 -0
- package/build/types/submittable.d.ts +1 -0
- package/build/types/submittable.js +1 -0
- package/build/util/augmentObject.d.ts +9 -0
- package/build/util/augmentObject.js +81 -0
- package/build/util/decorate.d.ts +16 -0
- package/build/util/decorate.js +14 -0
- package/build/util/filterEvents.d.ts +6 -0
- package/build/util/filterEvents.js +22 -0
- package/build/util/index.d.ts +4 -0
- package/build/util/index.js +4 -0
- package/build/util/isKeyringPair.d.ts +3 -0
- package/build/util/isKeyringPair.js +4 -0
- package/build/util/logging.d.ts +1 -0
- package/build/util/logging.js +2 -0
- package/build/util/validate.d.ts +3 -0
- package/build/util/validate.js +23 -0
- package/build-deno/README.md +95 -0
- package/build-deno/augment.ts +2 -0
- package/build-deno/base/Decorate.ts +1100 -0
- package/build-deno/base/Events.ts +89 -0
- package/build-deno/base/Getters.ts +243 -0
- package/build-deno/base/Init.ts +523 -0
- package/build-deno/base/find.ts +12 -0
- package/build-deno/base/index.ts +83 -0
- package/build-deno/base/types.ts +17 -0
- package/build-deno/bundle.ts +11 -0
- package/build-deno/checkTypes.manual.ts +320 -0
- package/build-deno/index.ts +4 -0
- package/build-deno/mod.ts +2 -0
- package/build-deno/packageDetect.ts +12 -0
- package/build-deno/packageInfo.ts +3 -0
- package/build-deno/promise/Api.ts +212 -0
- package/build-deno/promise/Combinator.ts +89 -0
- package/build-deno/promise/decorateMethod.ts +111 -0
- package/build-deno/promise/index.ts +3 -0
- package/build-deno/promise/types.ts +7 -0
- package/build-deno/rx/Api.ts +184 -0
- package/build-deno/rx/decorateMethod.ts +7 -0
- package/build-deno/rx/index.ts +3 -0
- package/build-deno/submittable/Result.ts +109 -0
- package/build-deno/submittable/createClass.ts +436 -0
- package/build-deno/submittable/createSubmittable.ts +17 -0
- package/build-deno/submittable/index.ts +3 -0
- package/build-deno/submittable/types.ts +2 -0
- package/build-deno/test/SingleAccountSigner.ts +51 -0
- package/build-deno/test/index.ts +3 -0
- package/build-deno/test/logEvents.ts +21 -0
- package/build-deno/types/calls.ts +2 -0
- package/build-deno/types/consts.ts +2 -0
- package/build-deno/types/errors.ts +2 -0
- package/build-deno/types/events.ts +2 -0
- package/build-deno/types/index.ts +124 -0
- package/build-deno/types/storage.ts +2 -0
- package/build-deno/types/submittable.ts +2 -0
- package/build-deno/util/augmentObject.ts +109 -0
- package/build-deno/util/decorate.ts +38 -0
- package/build-deno/util/filterEvents.ts +32 -0
- package/build-deno/util/index.ts +6 -0
- package/build-deno/util/isKeyringPair.ts +9 -0
- package/build-deno/util/logging.ts +4 -0
- package/build-deno/util/validate.ts +32 -0
- package/build-tsc/augment.d.ts +1 -0
- package/build-tsc/base/Decorate.d.ts +143 -0
- package/build-tsc/base/Events.d.ts +67 -0
- package/build-tsc/base/Getters.d.ts +163 -0
- package/build-tsc/base/Init.d.ts +44 -0
- package/build-tsc/base/find.d.ts +3 -0
- package/build-tsc/base/index.d.ts +47 -0
- package/build-tsc/base/types.d.ts +15 -0
- package/build-tsc/bundle.d.ts +7 -0
- package/build-tsc/index.d.ts +2 -0
- package/build-tsc/packageDetect.d.ts +1 -0
- package/build-tsc/packageInfo.d.ts +6 -0
- package/build-tsc/promise/Api.d.ts +158 -0
- package/build-tsc/promise/Combinator.d.ts +12 -0
- package/build-tsc/promise/decorateMethod.d.ts +14 -0
- package/build-tsc/promise/index.d.ts +2 -0
- package/build-tsc/promise/types.d.ts +5 -0
- package/build-tsc/rx/Api.d.ts +155 -0
- package/build-tsc/rx/decorateMethod.d.ts +3 -0
- package/build-tsc/rx/index.d.ts +2 -0
- package/build-tsc/submittable/Result.d.ts +31 -0
- package/build-tsc/submittable/createClass.d.ts +12 -0
- package/build-tsc/submittable/createSubmittable.d.ts +8 -0
- package/build-tsc/submittable/index.d.ts +2 -0
- package/build-tsc/submittable/types.d.ts +1 -0
- package/build-tsc/types/calls.d.ts +1 -0
- package/build-tsc/types/consts.d.ts +1 -0
- package/build-tsc/types/errors.d.ts +1 -0
- package/build-tsc/types/events.d.ts +1 -0
- package/build-tsc/types/index.d.ts +114 -0
- package/build-tsc/types/storage.d.ts +1 -0
- package/build-tsc/types/submittable.d.ts +1 -0
- package/build-tsc/util/augmentObject.d.ts +9 -0
- package/build-tsc/util/decorate.d.ts +16 -0
- package/build-tsc/util/filterEvents.d.ts +6 -0
- package/build-tsc/util/index.d.ts +4 -0
- package/build-tsc/util/isKeyringPair.d.ts +3 -0
- package/build-tsc/util/logging.d.ts +1 -0
- package/build-tsc/util/validate.d.ts +3 -0
- package/build-tsc-cjs/augment.js +3 -0
- package/build-tsc-cjs/base/Decorate.js +756 -0
- package/build-tsc-cjs/base/Events.js +82 -0
- package/build-tsc-cjs/base/Getters.js +211 -0
- package/build-tsc-cjs/base/Init.js +404 -0
- package/build-tsc-cjs/base/find.js +11 -0
- package/build-tsc-cjs/base/index.js +61 -0
- package/build-tsc-cjs/base/types.js +2 -0
- package/build-tsc-cjs/bundle.js +17 -0
- package/build-tsc-cjs/index.js +5 -0
- package/build-tsc-cjs/packageDetect.js +10 -0
- package/build-tsc-cjs/packageInfo.js +4 -0
- package/build-tsc-cjs/promise/Api.js +195 -0
- package/build-tsc-cjs/promise/Combinator.js +72 -0
- package/build-tsc-cjs/promise/decorateMethod.js +75 -0
- package/build-tsc-cjs/promise/index.js +7 -0
- package/build-tsc-cjs/promise/types.js +2 -0
- package/build-tsc-cjs/rx/Api.js +173 -0
- package/build-tsc-cjs/rx/decorateMethod.js +6 -0
- package/build-tsc-cjs/rx/index.js +7 -0
- package/build-tsc-cjs/submittable/Result.js +84 -0
- package/build-tsc-cjs/submittable/createClass.js +277 -0
- package/build-tsc-cjs/submittable/createSubmittable.js +8 -0
- package/build-tsc-cjs/submittable/index.js +7 -0
- package/build-tsc-cjs/submittable/types.js +2 -0
- package/build-tsc-cjs/types/calls.js +4 -0
- package/build-tsc-cjs/types/consts.js +4 -0
- package/build-tsc-cjs/types/errors.js +4 -0
- package/build-tsc-cjs/types/events.js +4 -0
- package/build-tsc-cjs/types/index.js +13 -0
- package/build-tsc-cjs/types/storage.js +4 -0
- package/build-tsc-cjs/types/submittable.js +4 -0
- package/build-tsc-cjs/util/augmentObject.js +84 -0
- package/build-tsc-cjs/util/decorate.js +17 -0
- package/build-tsc-cjs/util/filterEvents.js +25 -0
- package/build-tsc-cjs/util/index.js +11 -0
- package/build-tsc-cjs/util/isKeyringPair.js +7 -0
- package/build-tsc-cjs/util/logging.js +5 -0
- package/build-tsc-cjs/util/validate.js +26 -0
- package/build-tsc-esm/augment.js +1 -0
- package/build-tsc-esm/base/Decorate.js +752 -0
- package/build-tsc-esm/base/Events.js +78 -0
- package/build-tsc-esm/base/Getters.js +207 -0
- package/build-tsc-esm/base/Init.js +400 -0
- package/build-tsc-esm/base/find.js +7 -0
- package/build-tsc-esm/base/index.js +57 -0
- package/build-tsc-esm/base/types.js +1 -0
- package/build-tsc-esm/bundle.js +7 -0
- package/build-tsc-esm/index.js +2 -0
- package/build-tsc-esm/packageDetect.js +8 -0
- package/build-tsc-esm/packageInfo.js +1 -0
- package/build-tsc-esm/promise/Api.js +191 -0
- package/build-tsc-esm/promise/Combinator.js +68 -0
- package/build-tsc-esm/promise/decorateMethod.js +71 -0
- package/build-tsc-esm/promise/index.js +2 -0
- package/build-tsc-esm/promise/types.js +1 -0
- package/build-tsc-esm/rx/Api.js +169 -0
- package/build-tsc-esm/rx/decorateMethod.js +3 -0
- package/build-tsc-esm/rx/index.js +2 -0
- package/build-tsc-esm/submittable/Result.js +80 -0
- package/build-tsc-esm/submittable/createClass.js +274 -0
- package/build-tsc-esm/submittable/createSubmittable.js +5 -0
- package/build-tsc-esm/submittable/index.js +2 -0
- package/build-tsc-esm/submittable/types.js +1 -0
- package/build-tsc-esm/types/calls.js +1 -0
- package/build-tsc-esm/types/consts.js +1 -0
- package/build-tsc-esm/types/errors.js +1 -0
- package/build-tsc-esm/types/events.js +1 -0
- package/build-tsc-esm/types/index.js +8 -0
- package/build-tsc-esm/types/storage.js +1 -0
- package/build-tsc-esm/types/submittable.js +1 -0
- package/build-tsc-esm/util/augmentObject.js +81 -0
- package/build-tsc-esm/util/decorate.js +14 -0
- package/build-tsc-esm/util/filterEvents.js +22 -0
- package/build-tsc-esm/util/index.js +4 -0
- package/build-tsc-esm/util/isKeyringPair.js +4 -0
- package/build-tsc-esm/util/logging.js +2 -0
- package/build-tsc-esm/util/validate.js +23 -0
- package/bundle-pezkuwi-api.js +26240 -26231
- package/cjs/packageInfo.js +1 -1
- package/package.json +12 -12
- package/packageInfo.js +1 -1
- package/src/augment.ts +4 -0
- package/src/base/Decorate.ts +1103 -0
- package/src/base/Events.ts +91 -0
- package/src/base/Getters.ts +245 -0
- package/src/base/Init.ts +525 -0
- package/src/base/find.ts +14 -0
- package/src/base/index.ts +85 -0
- package/src/base/types.ts +19 -0
- package/src/bundle.ts +16 -0
- package/src/checkTypes.manual.ts +323 -0
- package/src/index.ts +6 -0
- package/src/mod.ts +4 -0
- package/src/packageDetect.ts +16 -0
- package/src/packageInfo.ts +6 -0
- package/src/promise/Api.ts +214 -0
- package/src/promise/Combinator.ts +91 -0
- package/src/promise/Combinators.spec.ts +109 -0
- package/src/promise/decorateMethod.ts +118 -0
- package/src/promise/index.spec.ts +167 -0
- package/src/promise/index.ts +5 -0
- package/src/promise/types.ts +9 -0
- package/src/rx/Api.ts +186 -0
- package/src/rx/decorateMethod.ts +9 -0
- package/src/rx/index.ts +5 -0
- package/src/submittable/Result.ts +111 -0
- package/src/submittable/createClass.ts +438 -0
- package/src/submittable/createSubmittable.ts +19 -0
- package/src/submittable/index.ts +5 -0
- package/src/submittable/types.ts +4 -0
- package/src/test/SingleAccountSigner.ts +53 -0
- package/src/test/index.ts +5 -0
- package/src/test/logEvents.ts +24 -0
- package/src/types/calls.ts +4 -0
- package/src/types/consts.ts +4 -0
- package/src/types/errors.ts +4 -0
- package/src/types/events.ts +4 -0
- package/src/types/index.ts +137 -0
- package/src/types/storage.ts +4 -0
- package/src/types/submittable.ts +4 -0
- package/src/util/augmentObject.spec.ts +54 -0
- package/src/util/augmentObject.ts +112 -0
- package/src/util/decorate.ts +43 -0
- package/src/util/filterEvents.ts +34 -0
- package/src/util/index.ts +10 -0
- package/src/util/isKeyringPair.ts +11 -0
- package/src/util/logging.ts +6 -0
- package/src/util/validate.spec.ts +72 -0
- package/src/util/validate.ts +36 -0
- package/tsconfig.build.json +25 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.spec.json +26 -0
- package/tsconfig.spec.tsbuildinfo +1 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { ApiOptions, UnsubscribePromise } from '../types/index.js';
|
|
2
|
+
import type { CombinatorCallback, CombinatorFunction } from './Combinator.js';
|
|
3
|
+
import { ApiBase } from '../base/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* # @pezkuwi/api/promise
|
|
6
|
+
*
|
|
7
|
+
* ## Overview
|
|
8
|
+
*
|
|
9
|
+
* @name ApiPromise
|
|
10
|
+
* @description
|
|
11
|
+
* ApiPromise is a standard JavaScript wrapper around the RPC and interfaces on the Pezkuwi network. As a full Promise-based, all interface calls return Promises, including the static `.create(...)`. Subscription calls utilise `(value) => {}` callbacks to pass through the latest values.
|
|
12
|
+
*
|
|
13
|
+
* The API is well suited to real-time applications where either the single-shot state is needed or use is to be made of the subscription-based features of Pezkuwi (and Bizinikiwi) clients.
|
|
14
|
+
*
|
|
15
|
+
* @see [[ApiRx]]
|
|
16
|
+
*
|
|
17
|
+
* ## Usage
|
|
18
|
+
*
|
|
19
|
+
* Making rpc calls -
|
|
20
|
+
* <BR>
|
|
21
|
+
*
|
|
22
|
+
* ```javascript
|
|
23
|
+
* import ApiPromise from '@pezkuwi/api/promise';
|
|
24
|
+
*
|
|
25
|
+
* // initialise via static create
|
|
26
|
+
* const api = await ApiPromise.create();
|
|
27
|
+
*
|
|
28
|
+
* // make a subscription to the network head
|
|
29
|
+
* api.rpc.chain.subscribeNewHeads((header) => {
|
|
30
|
+
* console.log(`Chain is at #${header.number}`);
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
* <BR>
|
|
34
|
+
*
|
|
35
|
+
* Subscribing to chain state -
|
|
36
|
+
* <BR>
|
|
37
|
+
*
|
|
38
|
+
* ```javascript
|
|
39
|
+
* import { ApiPromise, WsProvider } from '@pezkuwi/api';
|
|
40
|
+
*
|
|
41
|
+
* // initialise a provider with a specific endpoint
|
|
42
|
+
* const provider = new WsProvider('wss://example.com:9944')
|
|
43
|
+
*
|
|
44
|
+
* // initialise via isReady & new with specific provider
|
|
45
|
+
* const api = await new ApiPromise({ provider }).isReady;
|
|
46
|
+
*
|
|
47
|
+
* // retrieve the block target time
|
|
48
|
+
* const blockPeriod = await api.query.timestamp.blockPeriod().toNumber();
|
|
49
|
+
* let last = 0;
|
|
50
|
+
*
|
|
51
|
+
* // subscribe to the current block timestamp, updates automatically (callback provided)
|
|
52
|
+
* api.query.timestamp.now((timestamp) => {
|
|
53
|
+
* const elapsed = last
|
|
54
|
+
* ? `, ${timestamp.toNumber() - last}s since last`
|
|
55
|
+
* : '';
|
|
56
|
+
*
|
|
57
|
+
* last = timestamp.toNumber();
|
|
58
|
+
* console.log(`timestamp ${timestamp}${elapsed} (${blockPeriod}s target)`);
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
* <BR>
|
|
62
|
+
*
|
|
63
|
+
* Submitting a transaction -
|
|
64
|
+
* <BR>
|
|
65
|
+
*
|
|
66
|
+
* ```javascript
|
|
67
|
+
* import ApiPromise from '@pezkuwi/api/promise';
|
|
68
|
+
*
|
|
69
|
+
* ApiPromise.create().then((api) => {
|
|
70
|
+
* const [nonce] = await api.query.system.account(keyring.alice.address);
|
|
71
|
+
*
|
|
72
|
+
* api.tx.balances
|
|
73
|
+
* // create transfer
|
|
74
|
+
* transfer(keyring.bob.address, 12345)
|
|
75
|
+
* // sign the transcation
|
|
76
|
+
* .sign(keyring.alice, { nonce })
|
|
77
|
+
* // send the transaction (optional status callback)
|
|
78
|
+
* .send((status) => {
|
|
79
|
+
* console.log(`current status ${status.type}`);
|
|
80
|
+
* })
|
|
81
|
+
* // retrieve the submitted extrinsic hash
|
|
82
|
+
* .then((hash) => {
|
|
83
|
+
* console.log(`submitted with hash ${hash}`);
|
|
84
|
+
* });
|
|
85
|
+
* });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare class ApiPromise extends ApiBase<'promise'> {
|
|
89
|
+
#private;
|
|
90
|
+
/**
|
|
91
|
+
* @description Creates an instance of the ApiPromise class
|
|
92
|
+
* @param options Options to create an instance. This can be either [[ApiOptions]] or
|
|
93
|
+
* an [[WsProvider]].
|
|
94
|
+
* @example
|
|
95
|
+
* <BR>
|
|
96
|
+
*
|
|
97
|
+
* ```javascript
|
|
98
|
+
* import Api from '@pezkuwi/api/promise';
|
|
99
|
+
*
|
|
100
|
+
* new Api().isReady.then((api) => {
|
|
101
|
+
* api.rpc.subscribeNewHeads((header) => {
|
|
102
|
+
* console.log(`new block #${header.number.toNumber()}`);
|
|
103
|
+
* });
|
|
104
|
+
* });
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
constructor(options?: ApiOptions);
|
|
108
|
+
/**
|
|
109
|
+
* @description Creates an ApiPromise instance using the supplied provider. Returns an Promise containing the actual Api instance.
|
|
110
|
+
* @param options options that is passed to the class contructor. Can be either [[ApiOptions]] or a
|
|
111
|
+
* provider (see the constructor arguments)
|
|
112
|
+
* @example
|
|
113
|
+
* <BR>
|
|
114
|
+
*
|
|
115
|
+
* ```javascript
|
|
116
|
+
* import Api from '@pezkuwi/api/promise';
|
|
117
|
+
*
|
|
118
|
+
* Api.create().then(async (api) => {
|
|
119
|
+
* const timestamp = await api.query.timestamp.now();
|
|
120
|
+
*
|
|
121
|
+
* console.log(`lastest block timestamp ${timestamp}`);
|
|
122
|
+
* });
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
static create(options?: ApiOptions): Promise<ApiPromise>;
|
|
126
|
+
/**
|
|
127
|
+
* @description Promise that resolves the first time we are connected and loaded
|
|
128
|
+
*/
|
|
129
|
+
get isReady(): Promise<ApiPromise>;
|
|
130
|
+
/**
|
|
131
|
+
* @description Promise that resolves if we can connect, or reject if there is an error
|
|
132
|
+
*/
|
|
133
|
+
get isReadyOrError(): Promise<ApiPromise>;
|
|
134
|
+
/**
|
|
135
|
+
* @description Returns a clone of this ApiPromise instance (new underlying provider connection)
|
|
136
|
+
*/
|
|
137
|
+
clone(): ApiPromise;
|
|
138
|
+
/**
|
|
139
|
+
* @description Creates a combinator that can be used to combine the latest results from multiple subscriptions
|
|
140
|
+
* @param fns An array of function to combine, each in the form of `(cb: (value: void)) => void`
|
|
141
|
+
* @param callback A callback that will return an Array of all the values this combinator has been applied to
|
|
142
|
+
* @example
|
|
143
|
+
* <BR>
|
|
144
|
+
*
|
|
145
|
+
* ```javascript
|
|
146
|
+
* const address = '5DTestUPts3kjeXSTMyerHihn1uwMfLj8vU8sqF7qYrFacT7';
|
|
147
|
+
*
|
|
148
|
+
* // combines values from balance & nonce as it updates
|
|
149
|
+
* api.combineLatest([
|
|
150
|
+
* api.rpc.chain.subscribeNewHeads,
|
|
151
|
+
* (cb) => api.query.system.account(address, cb)
|
|
152
|
+
* ], ([head, [balance, nonce]]) => {
|
|
153
|
+
* console.log(`#${head.number}: You have ${balance.free} units, with ${nonce} transactions sent`);
|
|
154
|
+
* });
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
combineLatest<T extends any[] = any[]>(fns: (CombinatorFunction | [CombinatorFunction, ...any[]])[], callback: CombinatorCallback<T>): UnsubscribePromise;
|
|
158
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiPromise = void 0;
|
|
4
|
+
const util_1 = require("@pezkuwi/util");
|
|
5
|
+
const index_js_1 = require("../base/index.js");
|
|
6
|
+
const Combinator_js_1 = require("./Combinator.js");
|
|
7
|
+
const decorateMethod_js_1 = require("./decorateMethod.js");
|
|
8
|
+
/**
|
|
9
|
+
* # @pezkuwi/api/promise
|
|
10
|
+
*
|
|
11
|
+
* ## Overview
|
|
12
|
+
*
|
|
13
|
+
* @name ApiPromise
|
|
14
|
+
* @description
|
|
15
|
+
* ApiPromise is a standard JavaScript wrapper around the RPC and interfaces on the Pezkuwi network. As a full Promise-based, all interface calls return Promises, including the static `.create(...)`. Subscription calls utilise `(value) => {}` callbacks to pass through the latest values.
|
|
16
|
+
*
|
|
17
|
+
* The API is well suited to real-time applications where either the single-shot state is needed or use is to be made of the subscription-based features of Pezkuwi (and Bizinikiwi) clients.
|
|
18
|
+
*
|
|
19
|
+
* @see [[ApiRx]]
|
|
20
|
+
*
|
|
21
|
+
* ## Usage
|
|
22
|
+
*
|
|
23
|
+
* Making rpc calls -
|
|
24
|
+
* <BR>
|
|
25
|
+
*
|
|
26
|
+
* ```javascript
|
|
27
|
+
* import ApiPromise from '@pezkuwi/api/promise';
|
|
28
|
+
*
|
|
29
|
+
* // initialise via static create
|
|
30
|
+
* const api = await ApiPromise.create();
|
|
31
|
+
*
|
|
32
|
+
* // make a subscription to the network head
|
|
33
|
+
* api.rpc.chain.subscribeNewHeads((header) => {
|
|
34
|
+
* console.log(`Chain is at #${header.number}`);
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
* <BR>
|
|
38
|
+
*
|
|
39
|
+
* Subscribing to chain state -
|
|
40
|
+
* <BR>
|
|
41
|
+
*
|
|
42
|
+
* ```javascript
|
|
43
|
+
* import { ApiPromise, WsProvider } from '@pezkuwi/api';
|
|
44
|
+
*
|
|
45
|
+
* // initialise a provider with a specific endpoint
|
|
46
|
+
* const provider = new WsProvider('wss://example.com:9944')
|
|
47
|
+
*
|
|
48
|
+
* // initialise via isReady & new with specific provider
|
|
49
|
+
* const api = await new ApiPromise({ provider }).isReady;
|
|
50
|
+
*
|
|
51
|
+
* // retrieve the block target time
|
|
52
|
+
* const blockPeriod = await api.query.timestamp.blockPeriod().toNumber();
|
|
53
|
+
* let last = 0;
|
|
54
|
+
*
|
|
55
|
+
* // subscribe to the current block timestamp, updates automatically (callback provided)
|
|
56
|
+
* api.query.timestamp.now((timestamp) => {
|
|
57
|
+
* const elapsed = last
|
|
58
|
+
* ? `, ${timestamp.toNumber() - last}s since last`
|
|
59
|
+
* : '';
|
|
60
|
+
*
|
|
61
|
+
* last = timestamp.toNumber();
|
|
62
|
+
* console.log(`timestamp ${timestamp}${elapsed} (${blockPeriod}s target)`);
|
|
63
|
+
* });
|
|
64
|
+
* ```
|
|
65
|
+
* <BR>
|
|
66
|
+
*
|
|
67
|
+
* Submitting a transaction -
|
|
68
|
+
* <BR>
|
|
69
|
+
*
|
|
70
|
+
* ```javascript
|
|
71
|
+
* import ApiPromise from '@pezkuwi/api/promise';
|
|
72
|
+
*
|
|
73
|
+
* ApiPromise.create().then((api) => {
|
|
74
|
+
* const [nonce] = await api.query.system.account(keyring.alice.address);
|
|
75
|
+
*
|
|
76
|
+
* api.tx.balances
|
|
77
|
+
* // create transfer
|
|
78
|
+
* transfer(keyring.bob.address, 12345)
|
|
79
|
+
* // sign the transcation
|
|
80
|
+
* .sign(keyring.alice, { nonce })
|
|
81
|
+
* // send the transaction (optional status callback)
|
|
82
|
+
* .send((status) => {
|
|
83
|
+
* console.log(`current status ${status.type}`);
|
|
84
|
+
* })
|
|
85
|
+
* // retrieve the submitted extrinsic hash
|
|
86
|
+
* .then((hash) => {
|
|
87
|
+
* console.log(`submitted with hash ${hash}`);
|
|
88
|
+
* });
|
|
89
|
+
* });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
class ApiPromise extends index_js_1.ApiBase {
|
|
93
|
+
#isReadyPromise;
|
|
94
|
+
#isReadyOrErrorPromise;
|
|
95
|
+
/**
|
|
96
|
+
* @description Creates an instance of the ApiPromise class
|
|
97
|
+
* @param options Options to create an instance. This can be either [[ApiOptions]] or
|
|
98
|
+
* an [[WsProvider]].
|
|
99
|
+
* @example
|
|
100
|
+
* <BR>
|
|
101
|
+
*
|
|
102
|
+
* ```javascript
|
|
103
|
+
* import Api from '@pezkuwi/api/promise';
|
|
104
|
+
*
|
|
105
|
+
* new Api().isReady.then((api) => {
|
|
106
|
+
* api.rpc.subscribeNewHeads((header) => {
|
|
107
|
+
* console.log(`new block #${header.number.toNumber()}`);
|
|
108
|
+
* });
|
|
109
|
+
* });
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
constructor(options) {
|
|
113
|
+
super(options, 'promise', decorateMethod_js_1.toPromiseMethod);
|
|
114
|
+
this.#isReadyPromise = new Promise((resolve) => {
|
|
115
|
+
super.once('ready', () => resolve(this));
|
|
116
|
+
});
|
|
117
|
+
this.#isReadyOrErrorPromise = new Promise((resolve, reject) => {
|
|
118
|
+
const tracker = (0, decorateMethod_js_1.promiseTracker)(resolve, reject);
|
|
119
|
+
super.once('ready', () => tracker.resolve(this));
|
|
120
|
+
super.once('error', (error) => tracker.reject(error));
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* @description Creates an ApiPromise instance using the supplied provider. Returns an Promise containing the actual Api instance.
|
|
125
|
+
* @param options options that is passed to the class contructor. Can be either [[ApiOptions]] or a
|
|
126
|
+
* provider (see the constructor arguments)
|
|
127
|
+
* @example
|
|
128
|
+
* <BR>
|
|
129
|
+
*
|
|
130
|
+
* ```javascript
|
|
131
|
+
* import Api from '@pezkuwi/api/promise';
|
|
132
|
+
*
|
|
133
|
+
* Api.create().then(async (api) => {
|
|
134
|
+
* const timestamp = await api.query.timestamp.now();
|
|
135
|
+
*
|
|
136
|
+
* console.log(`lastest block timestamp ${timestamp}`);
|
|
137
|
+
* });
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
static create(options) {
|
|
141
|
+
const instance = new ApiPromise(options);
|
|
142
|
+
if (options && options.throwOnConnect) {
|
|
143
|
+
return instance.isReadyOrError;
|
|
144
|
+
}
|
|
145
|
+
// Swallow any rejections on isReadyOrError
|
|
146
|
+
// (in Node 15.x this creates issues, when not being looked at)
|
|
147
|
+
instance.isReadyOrError.catch(util_1.noop);
|
|
148
|
+
return instance.isReady;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* @description Promise that resolves the first time we are connected and loaded
|
|
152
|
+
*/
|
|
153
|
+
get isReady() {
|
|
154
|
+
return this.#isReadyPromise;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* @description Promise that resolves if we can connect, or reject if there is an error
|
|
158
|
+
*/
|
|
159
|
+
get isReadyOrError() {
|
|
160
|
+
return this.#isReadyOrErrorPromise;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* @description Returns a clone of this ApiPromise instance (new underlying provider connection)
|
|
164
|
+
*/
|
|
165
|
+
clone() {
|
|
166
|
+
return new ApiPromise((0, util_1.objectSpread)({}, this._options, { source: this }));
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* @description Creates a combinator that can be used to combine the latest results from multiple subscriptions
|
|
170
|
+
* @param fns An array of function to combine, each in the form of `(cb: (value: void)) => void`
|
|
171
|
+
* @param callback A callback that will return an Array of all the values this combinator has been applied to
|
|
172
|
+
* @example
|
|
173
|
+
* <BR>
|
|
174
|
+
*
|
|
175
|
+
* ```javascript
|
|
176
|
+
* const address = '5DTestUPts3kjeXSTMyerHihn1uwMfLj8vU8sqF7qYrFacT7';
|
|
177
|
+
*
|
|
178
|
+
* // combines values from balance & nonce as it updates
|
|
179
|
+
* api.combineLatest([
|
|
180
|
+
* api.rpc.chain.subscribeNewHeads,
|
|
181
|
+
* (cb) => api.query.system.account(address, cb)
|
|
182
|
+
* ], ([head, [balance, nonce]]) => {
|
|
183
|
+
* console.log(`#${head.number}: You have ${balance.free} units, with ${nonce} transactions sent`);
|
|
184
|
+
* });
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
188
|
+
async combineLatest(fns, callback) {
|
|
189
|
+
const combinator = new Combinator_js_1.Combinator(fns, callback);
|
|
190
|
+
return () => {
|
|
191
|
+
combinator.unsubscribe();
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.ApiPromise = ApiPromise;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Callback } from '@pezkuwi/types/types';
|
|
2
|
+
import type { UnsubscribePromise } from '../types/index.js';
|
|
3
|
+
export type CombinatorCallback<T extends unknown[]> = Callback<T>;
|
|
4
|
+
export type CombinatorFunction = (cb: Callback<any>) => UnsubscribePromise;
|
|
5
|
+
export declare class Combinator<T extends unknown[] = unknown[]> {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(fns: (CombinatorFunction | [CombinatorFunction, ...unknown[]])[], callback: CombinatorCallback<T>);
|
|
8
|
+
protected _allHasFired(): boolean;
|
|
9
|
+
protected _createCallback(index: number): (value: any) => void;
|
|
10
|
+
protected _triggerUpdate(): void;
|
|
11
|
+
unsubscribe(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Combinator = void 0;
|
|
4
|
+
const util_1 = require("@pezkuwi/util");
|
|
5
|
+
class Combinator {
|
|
6
|
+
#allHasFired = false;
|
|
7
|
+
#callback;
|
|
8
|
+
#fired = [];
|
|
9
|
+
#fns = [];
|
|
10
|
+
#isActive = true;
|
|
11
|
+
#results = [];
|
|
12
|
+
#subscriptions = [];
|
|
13
|
+
constructor(fns, callback) {
|
|
14
|
+
this.#callback = callback;
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises, @typescript-eslint/require-await
|
|
16
|
+
this.#subscriptions = fns.map(async (input, index) => {
|
|
17
|
+
const [fn, ...args] = Array.isArray(input)
|
|
18
|
+
? input
|
|
19
|
+
: [input];
|
|
20
|
+
this.#fired.push(false);
|
|
21
|
+
this.#fns.push(fn);
|
|
22
|
+
// Not quite 100% how to have a variable number at the front here
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/ban-types
|
|
24
|
+
return fn(...args, this._createCallback(index));
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
_allHasFired() {
|
|
28
|
+
this.#allHasFired ||= this.#fired.filter((hasFired) => !hasFired).length === 0;
|
|
29
|
+
return this.#allHasFired;
|
|
30
|
+
}
|
|
31
|
+
_createCallback(index) {
|
|
32
|
+
return (value) => {
|
|
33
|
+
this.#fired[index] = true;
|
|
34
|
+
this.#results[index] = value;
|
|
35
|
+
this._triggerUpdate();
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
_triggerUpdate() {
|
|
39
|
+
if (!this.#isActive || !(0, util_1.isFunction)(this.#callback) || !this._allHasFired()) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
Promise
|
|
44
|
+
.resolve(this.#callback(this.#results))
|
|
45
|
+
.catch(util_1.noop);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// swallow, we don't want the handler to trip us up
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
unsubscribe() {
|
|
52
|
+
if (!this.#isActive) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.#isActive = false;
|
|
56
|
+
Promise
|
|
57
|
+
.all(this.#subscriptions.map(async (subscription) => {
|
|
58
|
+
try {
|
|
59
|
+
const unsubscribe = await subscription;
|
|
60
|
+
if ((0, util_1.isFunction)(unsubscribe)) {
|
|
61
|
+
unsubscribe();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// ignore
|
|
66
|
+
}
|
|
67
|
+
})).catch(() => {
|
|
68
|
+
// ignore, already ignored above, should never throw
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.Combinator = Combinator;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Observable } from 'rxjs';
|
|
2
|
+
import type { Codec } from '@pezkuwi/types/types';
|
|
3
|
+
import type { DecorateFn, DecorateMethodOptions, ObsInnerType, StorageEntryPromiseOverloads } from '../types/index.js';
|
|
4
|
+
interface Tracker<T> {
|
|
5
|
+
reject: (value: Error) => Observable<never>;
|
|
6
|
+
resolve: (value: T) => void;
|
|
7
|
+
}
|
|
8
|
+
type CodecReturnType<T extends (...args: unknown[]) => Observable<Codec>> = T extends (...args: any) => infer R ? R extends Observable<Codec> ? ObsInnerType<R> : never : never;
|
|
9
|
+
export declare function promiseTracker<T>(resolve: (value: T) => void, reject: (value: Error) => void): Tracker<T>;
|
|
10
|
+
/**
|
|
11
|
+
* @description Decorate method for ApiPromise, where the results are converted to the Promise equivalent
|
|
12
|
+
*/
|
|
13
|
+
export declare function toPromiseMethod<M extends DecorateFn<CodecReturnType<M>>>(method: M, options?: DecorateMethodOptions): StorageEntryPromiseOverloads;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.promiseTracker = promiseTracker;
|
|
4
|
+
exports.toPromiseMethod = toPromiseMethod;
|
|
5
|
+
const rxjs_1 = require("rxjs");
|
|
6
|
+
const util_1 = require("@pezkuwi/util");
|
|
7
|
+
function promiseTracker(resolve, reject) {
|
|
8
|
+
let isCompleted = false;
|
|
9
|
+
return {
|
|
10
|
+
reject: (error) => {
|
|
11
|
+
if (!isCompleted) {
|
|
12
|
+
isCompleted = true;
|
|
13
|
+
reject(error);
|
|
14
|
+
}
|
|
15
|
+
return rxjs_1.EMPTY;
|
|
16
|
+
},
|
|
17
|
+
resolve: (value) => {
|
|
18
|
+
if (!isCompleted) {
|
|
19
|
+
isCompleted = true;
|
|
20
|
+
resolve(value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function extractArgs(args, needsCallback) {
|
|
26
|
+
const actualArgs = args.slice();
|
|
27
|
+
// If the last arg is a function, we pop it, put it into callback.
|
|
28
|
+
// actualArgs will then hold the actual arguments to be passed to `method`
|
|
29
|
+
const callback = (args.length && (0, util_1.isFunction)(args[args.length - 1]))
|
|
30
|
+
? actualArgs.pop()
|
|
31
|
+
: undefined;
|
|
32
|
+
// When we need a subscription, ensure that a valid callback is actually passed
|
|
33
|
+
if (needsCallback && !(0, util_1.isFunction)(callback)) {
|
|
34
|
+
throw new Error('Expected a callback to be passed with subscriptions');
|
|
35
|
+
}
|
|
36
|
+
return [actualArgs, callback];
|
|
37
|
+
}
|
|
38
|
+
function decorateCall(method, args) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
// single result tracker - either reject with Error or resolve with Codec result
|
|
41
|
+
const tracker = promiseTracker(resolve, reject);
|
|
42
|
+
// encoding errors reject immediately, any result unsubscribes and resolves
|
|
43
|
+
const subscription = method(...args)
|
|
44
|
+
.pipe((0, rxjs_1.catchError)((error) => tracker.reject(error)))
|
|
45
|
+
.subscribe((result) => {
|
|
46
|
+
tracker.resolve(result);
|
|
47
|
+
(0, util_1.nextTick)(() => subscription.unsubscribe());
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function decorateSubscribe(method, args, resultCb) {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
// either reject with error or resolve with unsubscribe callback
|
|
54
|
+
const tracker = promiseTracker(resolve, reject);
|
|
55
|
+
// errors reject immediately, the first result resolves with an unsubscribe promise, all results via callback
|
|
56
|
+
const subscription = method(...args)
|
|
57
|
+
.pipe((0, rxjs_1.catchError)((error) => tracker.reject(error)), (0, rxjs_1.tap)(() => tracker.resolve(() => subscription.unsubscribe())))
|
|
58
|
+
.subscribe((result) => {
|
|
59
|
+
// queue result (back of queue to clear current)
|
|
60
|
+
(0, util_1.nextTick)(() => resultCb(result));
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* @description Decorate method for ApiPromise, where the results are converted to the Promise equivalent
|
|
66
|
+
*/
|
|
67
|
+
function toPromiseMethod(method, options) {
|
|
68
|
+
const needsCallback = !!(options?.methodName && options.methodName.includes('subscribe'));
|
|
69
|
+
return function (...args) {
|
|
70
|
+
const [actualArgs, resultCb] = extractArgs(args, needsCallback);
|
|
71
|
+
return resultCb
|
|
72
|
+
? decorateSubscribe(method, actualArgs, resultCb)
|
|
73
|
+
: decorateCall(options?.overrideNoSub || method, actualArgs);
|
|
74
|
+
};
|
|
75
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toPromiseMethod = exports.ApiPromise = void 0;
|
|
4
|
+
var Api_js_1 = require("./Api.js");
|
|
5
|
+
Object.defineProperty(exports, "ApiPromise", { enumerable: true, get: function () { return Api_js_1.ApiPromise; } });
|
|
6
|
+
var decorateMethod_js_1 = require("./decorateMethod.js");
|
|
7
|
+
Object.defineProperty(exports, "toPromiseMethod", { enumerable: true, get: function () { return decorateMethod_js_1.toPromiseMethod; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SubmittableExtrinsic as SubmittableExtrinsicBase } from '../submittable/types.js';
|
|
2
|
+
import type { QueryableStorageEntry as QueryableStorageEntryBase, SubmittableExtrinsicFunction as SubmittableExtrinsicFunctionBase } from '../types/index.js';
|
|
3
|
+
export type QueryableStorageEntry = QueryableStorageEntryBase<'promise'>;
|
|
4
|
+
export type SubmittableExtrinsic = SubmittableExtrinsicBase<'promise'>;
|
|
5
|
+
export type SubmittableExtrinsicFunction = SubmittableExtrinsicFunctionBase<'promise'>;
|