@talismn/sapi 0.0.2 → 0.0.4

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.
@@ -1,7 +1,6 @@
1
1
  import { ExtDef } from "@polkadot/types/extrinsic/signedExtensions/types";
2
- import { getDynamicBuilder, getLookupFn, V14, V15 } from "@talismn/scale";
2
+ import { getDynamicBuilder, getLookupFn, UnifiedMetadata } from "@talismn/scale";
3
3
  import { SapiConnector } from "./getSapiConnector";
4
- export type ScaleMetadata = V14 | V15;
5
4
  export type ScaleBuilder = ReturnType<typeof getDynamicBuilder>;
6
5
  export type ScaleLookup = ReturnType<typeof getLookupFn>;
7
6
  export type Chain = {
@@ -14,7 +13,7 @@ export type Chain = {
14
13
  hasCheckMetadataHash?: boolean;
15
14
  signedExtensions?: ExtDef;
16
15
  registryTypes?: unknown;
17
- metadata: ScaleMetadata;
16
+ metadata: UnifiedMetadata;
18
17
  lookup: ScaleLookup;
19
18
  builder: ScaleBuilder;
20
19
  };
@@ -33,7 +33,7 @@ export declare const getScaleApi: (connector: SapiConnectorProps, hexMetadata: `
33
33
  getFeeEstimate: (payload: SignerPayloadJSON) => Promise<bigint>;
34
34
  getRuntimeCallValue: <T>(apiName: string, method: string, args: unknown[]) => Promise<T>;
35
35
  getTypeRegistry: (payload: SignerPayloadJSON) => import("@polkadot/types").TypeRegistry;
36
- submit: (payload: SignerPayloadJSON, signature?: `0x${string}`) => Promise<{
36
+ submit: (payload: SignerPayloadJSON, signature?: `0x${string}`, txInfo?: any) => Promise<{
37
37
  hash: `0x${string}`;
38
38
  }>;
39
39
  getCallDocs: (pallet: string, method: string) => string | null;
@@ -12,7 +12,7 @@ export type JsonRpcRequestSend = (method: string, params: unknown[], isCacheable
12
12
  export type SapiConnectorProps = {
13
13
  chainId: string;
14
14
  send: JsonRpcRequestSend;
15
- submit?: (payload: SignerPayloadJSON, signature?: `0x${string}`) => Promise<{
15
+ submit?: (payload: SignerPayloadJSON, signature?: `0x${string}`, txInfo?: any) => Promise<{
16
16
  hash: `0x${string}`;
17
17
  }>;
18
18
  };
@@ -23,7 +23,7 @@ const getCallDocs = (chain, pallet, method) => {
23
23
  try {
24
24
  const typeIdCalls = chain.metadata.pallets.find(({
25
25
  name
26
- }) => name === pallet)?.calls;
26
+ }) => name === pallet)?.calls?.type;
27
27
  if (!typeIdCalls) return null;
28
28
 
29
29
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -375,7 +375,7 @@ const getPayloadWithMetadataHash = (chain, chainInfo, payload) => {
375
375
 
376
376
  // TODO do this without PJS / registry => waiting for @polkadot-api/tx-utils
377
377
  // const { extra, additionalSigned } = getSignedExtensionValues(payload, metadata)
378
- // const badExtPayload = mergeUint8(fromHex(payload.method), ...extra, ...additionalSigned)
378
+ // const badExtPayload = mergeUint8([fromHex(payload.method), ...extra, ...additionalSigned])
379
379
 
380
380
  const registry = getTypeRegistry(chain, payload);
381
381
  const extPayload = registry.createType("ExtrinsicPayload", payloadWithMetadataHash);
@@ -435,7 +435,7 @@ const getSignerPayloadJSON = async (chain, palletName, methodName, args, signerC
435
435
  codec,
436
436
  location
437
437
  } = chain.builder.buildCall(palletName, methodName);
438
- const method = polkadotApi.Binary.fromBytes(utils.mergeUint8(new Uint8Array(location), codec.enc(args)));
438
+ const method = polkadotApi.Binary.fromBytes(utils.mergeUint8([new Uint8Array(location), codec.enc(args)]));
439
439
  const blockNumber = await getStorageValue(chain, "System", "Number", []);
440
440
  if (blockNumber === null) throw new Error("Block number not found");
441
441
  const [account, genesisHash, blockHash] = await Promise.all([
@@ -485,11 +485,8 @@ const getSignerPayloadJSON = async (chain, palletName, methodName, args, signerC
485
485
  };
486
486
 
487
487
  const getScaleApi = (connector, hexMetadata, token, hasCheckMetadataHash, signedExtensions, registryTypes) => {
488
- const decoded = scale.decodeMetadata(hexMetadata);
489
- util.assert(decoded.metadata, `Missing Metadata V14+ for chain ${connector.chainId}`);
490
- const {
491
- metadata
492
- } = decoded;
488
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(hexMetadata));
489
+ util.assert(metadata, `Missing Metadata V14+ for chain ${connector.chainId}`);
493
490
  const lookup = scale.getLookupFn(metadata);
494
491
  const builder = scale.getDynamicBuilder(lookup);
495
492
  const chain = {
@@ -525,7 +522,8 @@ const getScaleApi = (connector, hexMetadata, token, hasCheckMetadataHash, signed
525
522
  getFeeEstimate: payload => getFeeEstimate(chain, payload, chainInfo),
526
523
  getRuntimeCallValue: (apiName, method, args) => getRuntimeCallResult(chain, apiName, method, args),
527
524
  getTypeRegistry: payload => getTypeRegistry(chain, payload),
528
- submit: (payload, signature) => chain.connector.submit(payload, signature),
525
+ submit: (payload, signature, txInfo // eslint-disable-line @typescript-eslint/no-explicit-any
526
+ ) => chain.connector.submit(payload, signature, txInfo),
529
527
  getCallDocs: (pallet, method) => getCallDocs(chain, pallet, method),
530
528
  getDryRunCall: (from, decodedCall) => getDryRunCall(chain, from, decodedCall),
531
529
  isApiAvailable: (name, method) => isApiAvailable(chain, name, method)
@@ -23,7 +23,7 @@ const getCallDocs = (chain, pallet, method) => {
23
23
  try {
24
24
  const typeIdCalls = chain.metadata.pallets.find(({
25
25
  name
26
- }) => name === pallet)?.calls;
26
+ }) => name === pallet)?.calls?.type;
27
27
  if (!typeIdCalls) return null;
28
28
 
29
29
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -375,7 +375,7 @@ const getPayloadWithMetadataHash = (chain, chainInfo, payload) => {
375
375
 
376
376
  // TODO do this without PJS / registry => waiting for @polkadot-api/tx-utils
377
377
  // const { extra, additionalSigned } = getSignedExtensionValues(payload, metadata)
378
- // const badExtPayload = mergeUint8(fromHex(payload.method), ...extra, ...additionalSigned)
378
+ // const badExtPayload = mergeUint8([fromHex(payload.method), ...extra, ...additionalSigned])
379
379
 
380
380
  const registry = getTypeRegistry(chain, payload);
381
381
  const extPayload = registry.createType("ExtrinsicPayload", payloadWithMetadataHash);
@@ -435,7 +435,7 @@ const getSignerPayloadJSON = async (chain, palletName, methodName, args, signerC
435
435
  codec,
436
436
  location
437
437
  } = chain.builder.buildCall(palletName, methodName);
438
- const method = polkadotApi.Binary.fromBytes(utils.mergeUint8(new Uint8Array(location), codec.enc(args)));
438
+ const method = polkadotApi.Binary.fromBytes(utils.mergeUint8([new Uint8Array(location), codec.enc(args)]));
439
439
  const blockNumber = await getStorageValue(chain, "System", "Number", []);
440
440
  if (blockNumber === null) throw new Error("Block number not found");
441
441
  const [account, genesisHash, blockHash] = await Promise.all([
@@ -485,11 +485,8 @@ const getSignerPayloadJSON = async (chain, palletName, methodName, args, signerC
485
485
  };
486
486
 
487
487
  const getScaleApi = (connector, hexMetadata, token, hasCheckMetadataHash, signedExtensions, registryTypes) => {
488
- const decoded = scale.decodeMetadata(hexMetadata);
489
- util.assert(decoded.metadata, `Missing Metadata V14+ for chain ${connector.chainId}`);
490
- const {
491
- metadata
492
- } = decoded;
488
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(hexMetadata));
489
+ util.assert(metadata, `Missing Metadata V14+ for chain ${connector.chainId}`);
493
490
  const lookup = scale.getLookupFn(metadata);
494
491
  const builder = scale.getDynamicBuilder(lookup);
495
492
  const chain = {
@@ -525,7 +522,8 @@ const getScaleApi = (connector, hexMetadata, token, hasCheckMetadataHash, signed
525
522
  getFeeEstimate: payload => getFeeEstimate(chain, payload, chainInfo),
526
523
  getRuntimeCallValue: (apiName, method, args) => getRuntimeCallResult(chain, apiName, method, args),
527
524
  getTypeRegistry: payload => getTypeRegistry(chain, payload),
528
- submit: (payload, signature) => chain.connector.submit(payload, signature),
525
+ submit: (payload, signature, txInfo // eslint-disable-line @typescript-eslint/no-explicit-any
526
+ ) => chain.connector.submit(payload, signature, txInfo),
529
527
  getCallDocs: (pallet, method) => getCallDocs(chain, pallet, method),
530
528
  getDryRunCall: (from, decodedCall) => getDryRunCall(chain, from, decodedCall),
531
529
  isApiAvailable: (name, method) => isApiAvailable(chain, name, method)
@@ -1,5 +1,5 @@
1
1
  import { assert, u8aConcatStrict } from '@polkadot/util';
2
- import { decodeMetadata, getLookupFn as getLookupFn$1, getDynamicBuilder } from '@talismn/scale';
2
+ import { unifyMetadata, decAnyMetadata, getLookupFn as getLookupFn$1, getDynamicBuilder } from '@talismn/scale';
3
3
  import anylogger from 'anylogger';
4
4
  import { Enum, Binary } from 'polkadot-api';
5
5
  import { getLookupFn } from '@polkadot-api/metadata-builders';
@@ -17,7 +17,7 @@ const getCallDocs = (chain, pallet, method) => {
17
17
  try {
18
18
  const typeIdCalls = chain.metadata.pallets.find(({
19
19
  name
20
- }) => name === pallet)?.calls;
20
+ }) => name === pallet)?.calls?.type;
21
21
  if (!typeIdCalls) return null;
22
22
 
23
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -369,7 +369,7 @@ const getPayloadWithMetadataHash = (chain, chainInfo, payload) => {
369
369
 
370
370
  // TODO do this without PJS / registry => waiting for @polkadot-api/tx-utils
371
371
  // const { extra, additionalSigned } = getSignedExtensionValues(payload, metadata)
372
- // const badExtPayload = mergeUint8(fromHex(payload.method), ...extra, ...additionalSigned)
372
+ // const badExtPayload = mergeUint8([fromHex(payload.method), ...extra, ...additionalSigned])
373
373
 
374
374
  const registry = getTypeRegistry(chain, payload);
375
375
  const extPayload = registry.createType("ExtrinsicPayload", payloadWithMetadataHash);
@@ -429,7 +429,7 @@ const getSignerPayloadJSON = async (chain, palletName, methodName, args, signerC
429
429
  codec,
430
430
  location
431
431
  } = chain.builder.buildCall(palletName, methodName);
432
- const method = Binary.fromBytes(mergeUint8(new Uint8Array(location), codec.enc(args)));
432
+ const method = Binary.fromBytes(mergeUint8([new Uint8Array(location), codec.enc(args)]));
433
433
  const blockNumber = await getStorageValue(chain, "System", "Number", []);
434
434
  if (blockNumber === null) throw new Error("Block number not found");
435
435
  const [account, genesisHash, blockHash] = await Promise.all([
@@ -479,11 +479,8 @@ const getSignerPayloadJSON = async (chain, palletName, methodName, args, signerC
479
479
  };
480
480
 
481
481
  const getScaleApi = (connector, hexMetadata, token, hasCheckMetadataHash, signedExtensions, registryTypes) => {
482
- const decoded = decodeMetadata(hexMetadata);
483
- assert(decoded.metadata, `Missing Metadata V14+ for chain ${connector.chainId}`);
484
- const {
485
- metadata
486
- } = decoded;
482
+ const metadata = unifyMetadata(decAnyMetadata(hexMetadata));
483
+ assert(metadata, `Missing Metadata V14+ for chain ${connector.chainId}`);
487
484
  const lookup = getLookupFn$1(metadata);
488
485
  const builder = getDynamicBuilder(lookup);
489
486
  const chain = {
@@ -519,7 +516,8 @@ const getScaleApi = (connector, hexMetadata, token, hasCheckMetadataHash, signed
519
516
  getFeeEstimate: payload => getFeeEstimate(chain, payload, chainInfo),
520
517
  getRuntimeCallValue: (apiName, method, args) => getRuntimeCallResult(chain, apiName, method, args),
521
518
  getTypeRegistry: payload => getTypeRegistry(chain, payload),
522
- submit: (payload, signature) => chain.connector.submit(payload, signature),
519
+ submit: (payload, signature, txInfo // eslint-disable-line @typescript-eslint/no-explicit-any
520
+ ) => chain.connector.submit(payload, signature, txInfo),
523
521
  getCallDocs: (pallet, method) => getCallDocs(chain, pallet, method),
524
522
  getDryRunCall: (from, decodedCall) => getDryRunCall(chain, from, decodedCall),
525
523
  isApiAvailable: (name, method) => isApiAvailable(chain, name, method)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/sapi",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "author": "Talisman",
5
5
  "homepage": "https://talisman.xyz",
6
6
  "license": "GPL-3.0-or-later",
@@ -21,16 +21,16 @@
21
21
  "node": ">=18"
22
22
  },
23
23
  "dependencies": {
24
- "@polkadot-api/merkleize-metadata": "1.1.14",
25
- "@polkadot-api/metadata-builders": "0.10.2",
26
- "@polkadot-api/substrate-bindings": "0.11.1",
27
- "@polkadot-api/utils": "0.1.2",
28
- "@polkadot/types": "15.8.1",
29
- "@polkadot/types-codec": "15.8.1",
30
- "@polkadot/util": "13.4.3",
24
+ "@polkadot-api/merkleize-metadata": "1.1.18",
25
+ "@polkadot-api/metadata-builders": "0.12.2",
26
+ "@polkadot-api/substrate-bindings": "0.14.0",
27
+ "@polkadot-api/utils": "0.2.0",
28
+ "@polkadot/types": "16.1.2",
29
+ "@polkadot/types-codec": "16.1.2",
30
+ "@polkadot/util": "13.5.1",
31
31
  "anylogger": "^1.0.11",
32
- "polkadot-api": "1.7.6",
33
- "@talismn/scale": "0.1.1"
32
+ "polkadot-api": "1.13.1",
33
+ "@talismn/scale": "0.1.2"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/jest": "^29.5.14",