@autonomys/auto-utils 0.1.5 → 0.1.6

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/README.md CHANGED
@@ -1,56 +1,56 @@
1
- # Autonomys Auto SDK Utility
2
-
3
- ## Overview
4
-
5
- The Autonomys Auto SDK Utility provides functionalities for wallet setup, network management, data storage, cryptographic operations, and API activation.
6
-
7
- ## Wallet Management
8
-
9
- - `setupWallet(params: MnemonicOrURI): Promise<KeyringPair>`: Initializes a wallet using a mnemonic or URI.
10
- - `activateWallet(params: ActivateWalletParams): Promise<WalletActivated>`: Activates a wallet and returns API and accounts.
11
- - `mockWallets(network: NetworkParams | DomainParams): Promise<WalletActivated[]>`: Creates mock wallets for testing.
12
- - `getMockWallet(name: string, wallets: WalletActivated[]): WalletActivated`: Retrieves a mock wallet by name.
13
-
14
- ## Network Management
15
-
16
- - `getNetworkDetails(input?: NetworkParams): Network`: Gets network details.
17
- - `getNetworkRpcUrls(input?: NetworkParams): string[]`: Gets network RPC URLs.
18
- - `getNetworkDomainDetails(params: DomainParams): Domain`: Gets domain details.
19
- - `getNetworkDomainRpcUrls(params: DomainParams): string[]`: Gets domain RPC URLs.
20
-
21
- ## Data Storage
22
-
23
- - `save(key: string, value: any)`: Saves data to local storage or file system.
24
- - `read(key: string): any`: Reads data from local storage or file system.
25
-
26
- ## Cryptographic Functions
27
-
28
- - `blake2b_256(data: Uint8Array): string`: Hashes data with BLAKE2b-256.
29
- - `stringToUint8Array(text: string): Uint8Array`: Converts a string to a Uint8Array.
30
- - `concatenateUint8Arrays(array1: Uint8Array, array2: Uint8Array): Uint8Array`: Concatenates two Uint8Arrays.
31
-
32
- ## API Activation
33
-
34
- - `activate(input?: NetworkParams): Promise<ApiPromise>`: Activates the API for a network.
35
- - `activateDomain(params: DomainParams): Promise<ApiPromise>`: Activates the API for a domain.
36
- - `disconnect()`: Disconnects the API.
37
- - `disconnectDomain()`: Disconnects the domain API.
38
-
39
- ## Constants
40
-
41
- - `networks`: Array of network configurations.
42
- - `defaultNetwork`: Default network configuration.
43
- - `mockURIs`: Array of mock URIs.
44
-
45
- ## Types
46
-
47
- - `Network`, `Domain`, `Explorer`, `NetworkParams`, `DomainParams`
48
- - `Mnemonic`, `URI`, `AppName`, `MnemonicOrURI`
49
-
50
- For more details, refer to the source files in the `src` directory.
51
-
52
- ## Import Example
53
-
54
- ```typescript
55
- import { activateWallet } from '@autonomys/auto-utils'
56
- ```
1
+ # Autonomys Auto SDK Utility
2
+
3
+ ## Overview
4
+
5
+ The Autonomys Auto SDK Utility provides functionalities for wallet setup, network management, data storage, cryptographic operations, and API activation.
6
+
7
+ ## Wallet Management
8
+
9
+ - `setupWallet(params: MnemonicOrURI): Promise<KeyringPair>`: Initializes a wallet using a mnemonic or URI.
10
+ - `activateWallet(params: ActivateWalletParams): Promise<WalletActivated>`: Activates a wallet and returns API and accounts.
11
+ - `mockWallets(network: NetworkParams | DomainParams): Promise<WalletActivated[]>`: Creates mock wallets for testing.
12
+ - `getMockWallet(name: string, wallets: WalletActivated[]): WalletActivated`: Retrieves a mock wallet by name.
13
+
14
+ ## Network Management
15
+
16
+ - `getNetworkDetails(input?: NetworkParams): Network`: Gets network details.
17
+ - `getNetworkRpcUrls(input?: NetworkParams): string[]`: Gets network RPC URLs.
18
+ - `getNetworkDomainDetails(params: DomainParams): Domain`: Gets domain details.
19
+ - `getNetworkDomainRpcUrls(params: DomainParams): string[]`: Gets domain RPC URLs.
20
+
21
+ ## Data Storage
22
+
23
+ - `save(key: string, value: any)`: Saves data to local storage or file system.
24
+ - `read(key: string): any`: Reads data from local storage or file system.
25
+
26
+ ## Cryptographic Functions
27
+
28
+ - `blake2b_256(data: Uint8Array): string`: Hashes data with BLAKE2b-256.
29
+ - `stringToUint8Array(text: string): Uint8Array`: Converts a string to a Uint8Array.
30
+ - `concatenateUint8Arrays(array1: Uint8Array, array2: Uint8Array): Uint8Array`: Concatenates two Uint8Arrays.
31
+
32
+ ## API Activation
33
+
34
+ - `activate(input?: NetworkParams): Promise<ApiPromise>`: Activates the API for a network.
35
+ - `activateDomain(params: DomainParams): Promise<ApiPromise>`: Activates the API for a domain.
36
+ - `disconnect()`: Disconnects the API.
37
+ - `disconnectDomain()`: Disconnects the domain API.
38
+
39
+ ## Constants
40
+
41
+ - `networks`: Array of network configurations.
42
+ - `defaultNetwork`: Default network configuration.
43
+ - `mockURIs`: Array of mock URIs.
44
+
45
+ ## Types
46
+
47
+ - `Network`, `Domain`, `Explorer`, `NetworkParams`, `DomainParams`
48
+ - `Mnemonic`, `URI`, `AppName`, `MnemonicOrURI`
49
+
50
+ For more details, refer to the source files in the `src` directory.
51
+
52
+ ## Import Example
53
+
54
+ ```typescript
55
+ import { activateWallet } from '@autonomys/auto-utils'
56
+ ```
@@ -1,3 +1,5 @@
1
1
  import type { EventRecord } from '@polkadot/types/interfaces';
2
+ export type ActionEvents = string | string[];
3
+ export type Events = ActionEvents | ActionEvents[];
2
4
  export type { EventRecord };
3
5
  //# sourceMappingURL=event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D,YAAY,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AAC5C,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG,YAAY,EAAE,CAAA;AAElD,YAAY,EAAE,WAAW,EAAE,CAAA"}
@@ -2,6 +2,7 @@ import type { BN } from '@polkadot/util';
2
2
  export * from './event';
3
3
  export * from './extrinsic';
4
4
  export * from './network';
5
+ export * from './transaction';
5
6
  export * from './wallet';
6
7
  export type { BN };
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAExC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AAExB,YAAY,EAAE,EAAE,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAExC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AAExB,YAAY,EAAE,EAAE,EAAE,CAAA"}
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./event"), exports);
18
18
  __exportStar(require("./extrinsic"), exports);
19
19
  __exportStar(require("./network"), exports);
20
+ __exportStar(require("./transaction"), exports);
20
21
  __exportStar(require("./wallet"), exports);
@@ -0,0 +1,14 @@
1
+ import type { SignerOptions } from '@polkadot/api/types';
2
+ import type { ActionEvents } from '../types/event';
3
+ export type EventsValidated = {
4
+ expected: ActionEvents[];
5
+ found: ActionEvents[];
6
+ };
7
+ export type TransactionSignedAndSend = {
8
+ success: boolean;
9
+ txHash: string | undefined;
10
+ blockHash: string | undefined;
11
+ events: EventsValidated;
12
+ };
13
+ export { SignerOptions };
14
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/types/transaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,MAAM,EAAE,eAAe,CAAA;CACxB,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ // file: src/types/transaction.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ import type { EventRecord } from '../types/event';
2
+ export declare const detectTxSuccess: (events: EventRecord[]) => boolean;
3
+ //# sourceMappingURL=detectTxSuccess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectTxSuccess.d.ts","sourceRoot":"","sources":["../../src/utils/detectTxSuccess.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGjD,eAAO,MAAM,eAAe,WAAY,WAAW,EAAE,KAAG,OAMvD,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ // file: src/utils/detectTxSuccess.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.detectTxSuccess = void 0;
5
+ const events_1 = require("./events");
6
+ const detectTxSuccess = (events) => {
7
+ events.forEach(({ event: { method, section } }) => {
8
+ if (events_1.expectSuccessfulTxEvent.indexOf(`${section}.${method}`) > -1)
9
+ return true;
10
+ });
11
+ return false;
12
+ };
13
+ exports.detectTxSuccess = detectTxSuccess;
@@ -0,0 +1,11 @@
1
+ export declare const enum Type {
2
+ system = "system"
3
+ }
4
+ export declare const eventName: (type: Type, event: string) => string;
5
+ export declare const eventsGroup: {
6
+ system: {
7
+ [key: string]: string;
8
+ };
9
+ };
10
+ export declare const expectSuccessfulTxEvent: string[];
11
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/utils/events.ts"],"names":[],"mappings":"AAGA,0BAAkB,IAAI;IACpB,MAAM,WAAW;CAClB;AAGD,eAAO,MAAM,SAAS,SAAU,IAAI,SAAS,MAAM,WAAuB,CAAA;AAY1E,eAAO,MAAM,WAAW;;;;CAEvB,CAAA;AAGD,eAAO,MAAM,uBAAuB,UAAmB,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ // file: src/utils/events.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.expectSuccessfulTxEvent = exports.eventsGroup = exports.eventName = void 0;
5
+ // Utility Function for Event Names
6
+ const eventName = (type, event) => `${type}.${event}`;
7
+ exports.eventName = eventName;
8
+ // System Events
9
+ const system = {
10
+ failure: (0, exports.eventName)("system" /* Type.system */, 'ExtrinsicFailed'),
11
+ newAccount: (0, exports.eventName)("system" /* Type.system */, 'NewAccount'),
12
+ success: (0, exports.eventName)("system" /* Type.system */, 'ExtrinsicSuccess'),
13
+ };
14
+ // Group of Events
15
+ exports.eventsGroup = {
16
+ system,
17
+ };
18
+ // Export a default success event
19
+ exports.expectSuccessfulTxEvent = [system.success];
@@ -1,6 +1,9 @@
1
1
  export * from './createType';
2
+ export * from './events';
2
3
  export * from './format';
3
4
  export * from './ready';
4
5
  export * from './sign';
6
+ export * from './signAndSendTx';
7
+ export * from './validateEvents';
5
8
  export * from './verify';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA"}
@@ -15,7 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./createType"), exports);
18
+ __exportStar(require("./events"), exports);
18
19
  __exportStar(require("./format"), exports);
19
20
  __exportStar(require("./ready"), exports);
20
21
  __exportStar(require("./sign"), exports);
22
+ __exportStar(require("./signAndSendTx"), exports);
23
+ __exportStar(require("./validateEvents"), exports);
21
24
  __exportStar(require("./verify"), exports);
@@ -0,0 +1,3 @@
1
+ import type { AddressOrPair, Events, ISubmittableResult, SignerOptions, SubmittableExtrinsic, TransactionSignedAndSend } from '../types';
2
+ export declare const signAndSendTx: (sender: AddressOrPair, tx: SubmittableExtrinsic<'promise', ISubmittableResult>, options?: Partial<SignerOptions>, eventsExpected?: Events, log?: boolean) => Promise<TransactionSignedAndSend>;
3
+ //# sourceMappingURL=signAndSendTx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signAndSendTx.d.ts","sourceRoot":"","sources":["../../src/utils/signAndSendTx.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EAEN,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,UAAU,CAAA;AAKjB,eAAO,MAAM,aAAa,WAChB,aAAa,MACjB,qBAAqB,SAAS,EAAE,kBAAkB,CAAC,YAC9C,QAAQ,aAAa,CAAC,mBACf,MAAM,QACjB,OAAO,KACX,QAAQ,wBAAwB,CAgClC,CAAA"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ // file: src/utils/signAndSendTx.ts
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.signAndSendTx = void 0;
14
+ const detectTxSuccess_1 = require("./detectTxSuccess");
15
+ const events_1 = require("./events");
16
+ const validateEvents_1 = require("./validateEvents");
17
+ const signAndSendTx = (sender_1, tx_1, ...args_1) => __awaiter(void 0, [sender_1, tx_1, ...args_1], void 0, function* (sender, tx, options = {}, eventsExpected = events_1.expectSuccessfulTxEvent, log = false) {
18
+ let success = false;
19
+ let txHashHex = undefined;
20
+ let blockHash = undefined;
21
+ let eventsValidated = { expected: [], found: [] };
22
+ yield new Promise((resolve, reject) => {
23
+ tx.signAndSend(sender, options, ({ events, status, txHash }) => {
24
+ if (status.isInBlock) {
25
+ txHashHex = txHash.toHex();
26
+ blockHash = status.asInBlock.toHex();
27
+ if (log)
28
+ console.log('Successful tx', txHashHex, 'in block', blockHash);
29
+ success = (0, detectTxSuccess_1.detectTxSuccess)(events);
30
+ if (eventsExpected.length > 0) {
31
+ const _events = (0, validateEvents_1.validateEvents)(events, eventsExpected, txHashHex, blockHash, log);
32
+ if (_events.expected.length === 0)
33
+ resolve();
34
+ else
35
+ reject(new Error('Events not found'));
36
+ }
37
+ else
38
+ resolve();
39
+ }
40
+ else if (status.isRetracted ||
41
+ status.isFinalityTimeout ||
42
+ status.isDropped ||
43
+ status.isInvalid) {
44
+ if (log)
45
+ console.error('Transaction failed');
46
+ reject(new Error('Transaction failed'));
47
+ }
48
+ });
49
+ });
50
+ return { success, txHash: txHashHex, blockHash, events: eventsValidated };
51
+ });
52
+ exports.signAndSendTx = signAndSendTx;
@@ -0,0 +1,3 @@
1
+ import type { EventRecord, Events, EventsValidated } from '../types';
2
+ export declare const validateEvents: (events: EventRecord[], eventsExpected: Events | undefined, tx: string, block: string, log?: boolean) => EventsValidated;
3
+ //# sourceMappingURL=validateEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateEvents.d.ts","sourceRoot":"","sources":["../../src/utils/validateEvents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAGpE,eAAO,MAAM,cAAc,WACjB,WAAW,EAAE,0CAEjB,MAAM,SACH,MAAM,QACR,OAAO,KACX,eAmBF,CAAA"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ // file: src/utils/validateEvents.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.validateEvents = void 0;
5
+ const events_1 = require("./events");
6
+ const validateEvents = (events, eventsExpected = events_1.expectSuccessfulTxEvent, tx, block, log = false) => {
7
+ const _eventsExpected = typeof eventsExpected === 'string'
8
+ ? [eventsExpected]
9
+ : eventsExpected.map((e) => (typeof e === 'string' ? [e] : e)).flat();
10
+ const found = [];
11
+ events.forEach(({ event: { data, method, section } }) => {
12
+ const index = _eventsExpected.indexOf(`${section}.${method}`);
13
+ if (index > -1) {
14
+ _eventsExpected.splice(index, 1);
15
+ found.push(`${section}.${method}`);
16
+ }
17
+ else if (log)
18
+ console.log('Event not expected', `${section}.${method}`, 'tx', tx, 'block', block);
19
+ });
20
+ if (_eventsExpected.length > 0)
21
+ console.log('Events not found', _eventsExpected, 'tx', tx, 'block', block);
22
+ return { expected: _eventsExpected, found };
23
+ };
24
+ exports.validateEvents = validateEvents;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autonomys/auto-utils",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "tsc",
@@ -36,5 +36,5 @@
36
36
  "browser": {
37
37
  "fs": false
38
38
  },
39
- "gitHead": "8f1d6171a537e44d29aa19ff2f5c5176046ca0f9"
39
+ "gitHead": "eb9ee6dc6987a47bebb38c9ed073c4b99440a920"
40
40
  }