polkadot-api 2.0.0-rc.2 → 2.0.0-rc.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.
- package/bin/cli.mjs +1 -1
- package/dist/esm/src/client.mjs +3 -5
- package/dist/esm/src/client.mjs.map +1 -1
- package/dist/esm/src/compatibility/compatibility.mjs.map +1 -1
- package/dist/esm/src/offline.mjs.map +1 -1
- package/dist/esm/src/static-apis.mjs +55 -45
- package/dist/esm/src/static-apis.mjs.map +1 -1
- package/dist/esm/src/tx/tx.mjs +2 -2
- package/dist/esm/src/tx/tx.mjs.map +1 -1
- package/dist/reexports/ws.d.ts +1 -1
- package/dist/src/client.js +3 -5
- package/dist/src/client.js.map +1 -1
- package/dist/src/compatibility/compatibility.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/offline.js.map +1 -1
- package/dist/src/static-apis.js +55 -45
- package/dist/src/static-apis.js.map +1 -1
- package/dist/src/tx/tx.js +2 -2
- package/dist/src/tx/tx.js.map +1 -1
- package/dist/{types-JyQ08u3_.d.ts → types-sRmpUhNh.d.ts} +21 -45
- package/dist/umd/index.min.js +2 -2
- package/dist/umd/ws.min.js +3 -3
- package/package.json +9 -9
package/bin/cli.mjs
CHANGED
package/dist/esm/src/client.mjs
CHANGED
|
@@ -20,11 +20,9 @@ import { submit$, submit } from './tx/submit-fns.mjs';
|
|
|
20
20
|
|
|
21
21
|
const HEX_REGEX = /^(?:0x)?((?:[0-9a-fA-F][0-9a-fA-F])+)$/;
|
|
22
22
|
const createApi = (chainHead, broadcast$, chainDefinition) => {
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
getSyncHelpers
|
|
27
|
-
);
|
|
23
|
+
const compatHelpers = createCompatHelpers(chainDefinition);
|
|
24
|
+
const { getClientCompat, getIsAsssetCompat } = compatHelpers;
|
|
25
|
+
const getStaticApis = createStaticApis(chainHead, broadcast$, compatHelpers);
|
|
28
26
|
const getWatchEntries = createWatchEntries(
|
|
29
27
|
chainHead.pinnedBlocks$,
|
|
30
28
|
chainHead.storage$,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.mjs","sources":["../../../src/client.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport {\n BlockInfo,\n ChainHead$,\n getObservableClient,\n withArchive,\n} from \"@polkadot-api/observable-client\"\nimport { Binary, HexString } from \"@polkadot-api/substrate-bindings\"\nimport {\n SubstrateClient,\n UnsubscribeFn,\n createClient as createRawClient,\n} from \"@polkadot-api/substrate-client\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport {\n Observable,\n catchError,\n combineLatest,\n defer,\n firstValueFrom,\n from,\n map,\n shareReplay,\n} from \"rxjs\"\nimport { createCompatHelpers } from \"./compatibility\"\nimport { createConstantEntry } from \"./constants\"\nimport { ChainDefinition } from \"./descriptors\"\nimport { createEventEntry } from \"./event\"\nimport { createRuntimeCallEntry } from \"./runtime-call\"\nimport { createStaticApis } from \"./static-apis\"\nimport { createStorageEntry } from \"./storage\"\nimport { createTxEntry, submit, submit$ } from \"./tx\"\nimport type { PolkadotClient, TypedApi } from \"./types\"\nimport { createProxyPath, firstValueFromWithSignal } from \"./utils\"\nimport { createViewFnEntry } from \"./viewFns\"\nimport { createWatchEntries } from \"./watch-entries\"\n\nconst HEX_REGEX = /^(?:0x)?((?:[0-9a-fA-F][0-9a-fA-F])+)$/\n\nconst createApi = <D extends ChainDefinition>(\n chainHead: ChainHead$,\n broadcast$: (tx: Uint8Array) => Observable<never>,\n chainDefinition?: ChainDefinition,\n): TypedApi<D> => {\n const { getClientCompat, getIsAsssetCompat, getSyncHelpers } =\n createCompatHelpers(chainDefinition)\n\n const getStaticApis = createStaticApis(\n chainHead.getRuntimeContext$,\n getSyncHelpers,\n )\n\n const getWatchEntries = createWatchEntries(\n chainHead.pinnedBlocks$,\n chainHead.storage$,\n chainHead.withRuntime,\n )\n\n const query = createProxyPath((pallet, name) =>\n createStorageEntry(\n pallet,\n name,\n chainHead,\n getWatchEntries,\n getClientCompat(\"query\", pallet, name),\n ),\n )\n\n const tx = createProxyPath((pallet, name) =>\n createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n ),\n )\n\n const event = createProxyPath((pallet, name) =>\n createEventEntry(\n pallet,\n name,\n chainHead,\n getClientCompat(\"event\", pallet, name),\n ),\n )\n\n const constants = createProxyPath((pallet, name) =>\n createConstantEntry(\n pallet,\n name,\n chainHead,\n getClientCompat(\"constants\", pallet, name),\n ),\n )\n\n const apis = createProxyPath((api, method) =>\n createRuntimeCallEntry(\n api,\n method,\n chainHead,\n getClientCompat(\"apis\", api, method),\n ),\n )\n\n const view = createProxyPath((pallet, entry) =>\n createViewFnEntry(\n pallet,\n entry,\n chainHead,\n getClientCompat(\"view\", pallet, entry),\n ),\n )\n\n const txFromCallData = (\n callData: Uint8Array,\n { at, signal }: Partial<{ at: string; signal: AbortSignal }> = {},\n ) =>\n firstValueFromWithSignal(\n chainHead.getRuntimeContext$(at ?? null).pipe(\n map(({ dynamicBuilder, lookup }) => {\n try {\n const {\n type: pallet,\n value: { type: name, value: args },\n } = dynamicBuilder.buildDefinition(lookup.call!).dec(callData)\n\n return createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n )(args)\n } catch {\n throw new Error(\"createTx: invalid call data\")\n }\n }),\n ),\n signal,\n )\n\n return {\n tx,\n constants,\n apis,\n view,\n query,\n event,\n txFromCallData,\n getStaticApis,\n } as any\n}\n\nexport type CreateClientOptions = Partial<{\n getMetadata: (codeHash: HexString) => Promise<Uint8Array | null>\n setMetadata: (codeHash: HexString, metadata: Uint8Array) => void\n}>\n\n/**\n * This is the top-level export for `polkadot-api`.\n *\n * @param provider A `JsonRpcProvider` compliant with the [JSON-RPC\n * spec](https://paritytech.github.io/json-rpc-interface-spec/),\n * which must support the `chainHead`, `transaction` and\n * `chainSpec` groups.\n * @param options - *(Optional)* An object that allows customization of\n * metadata handling.\n * You can supply functions to retrieve and/or persist the\n * metadata associated with runtime `codeHash` values:\n *\n * - `getMetadata`: A function that, given a `codeHash` (the\n * `:code:` hash),\n * returns a `Promise` resolving to a `Uint8Array`\n * representing the metadata,\n * or `null` if unavailable.\n * - `setMetadata`: A function that accepts a `codeHash` and\n * its associated `Uint8Array` metadata,\n * allowing you to persist the metadata (e.g., in a cache or\n * local store).\n * @example\n *\n * import { getMetadata } from \"@polkadot-api/descriptors\"\n * import { createClient } from \"polkadot-api\"\n * import { getSmProvider } from \"polkadot-api/sm-provider\"\n * import { chainSpec } from \"polkadot-api/chains/polkadot\"\n * import { start } from \"polkadot-api/smoldot\"\n *\n * const smoldot = start()\n * const chain = await smoldot.addChain({ chainSpec })\n *\n * // Connect to the polkadot relay chain.\n * const client = createClient(getSmProvider(chain), { getMetadata })\n *\n */\nexport function createClient(\n provider: JsonRpcProvider,\n { getMetadata, setMetadata }: CreateClientOptions = {},\n): PolkadotClient {\n const rawClient: SubstrateClient = createRawClient(provider)\n const client = getObservableClient(rawClient, {\n getMetadata: getMetadata\n ? (codeHash: string) => from(getMetadata(codeHash))\n : undefined,\n setMetadata,\n })\n const { getChainSpecData } = rawClient\n\n const withArchiveBlock =\n <T extends any[], R>(\n fn: (blockHash: string, ...args: T) => Observable<R>,\n ) =>\n (\n blockHash: string,\n ...args: T\n ): Observable<{ value: R; block: BlockInfo }> =>\n combineLatest([\n fn(blockHash, ...args),\n archive.header$(blockHash).pipe(\n map(({ number, parentHash }) => ({\n hash: blockHash,\n number,\n parent: parentHash,\n // Not correct, but it would be overkill to fix. Only relevant on chainHead, not on archive.\n hasNewRuntime: false,\n })),\n ),\n ]).pipe(map(([value, block]) => ({ value, block })))\n\n const { genesis$, ..._chainHead } = client.chainHead$()\n const archive = client.archive(_chainHead.getRuntime$)\n const chainHead: ChainHead$ = {\n ..._chainHead,\n genesis$: defer(getChainSpecData).pipe(\n map(({ genesisHash }) => genesisHash),\n catchError(() => genesis$),\n shareReplay(1),\n ),\n storage$: withArchive(\n _chainHead.storage$,\n withArchiveBlock(archive.storage$),\n ),\n body$: withArchive(_chainHead.body$, archive.body$),\n call$: withArchive(_chainHead.call$, archive.call$),\n header$: withArchive(_chainHead.header$, archive.header$),\n eventsAt$: withArchive(_chainHead.eventsAt$, archive.eventsAt$),\n storageQueries$: withArchive(\n _chainHead.storageQueries$,\n archive.storageQueries$,\n ),\n getRuntimeContext$: withArchive(\n _chainHead.getRuntimeContext$,\n archive.getRuntimeContext$,\n ),\n }\n\n const _request: <Reply = any, Params extends Array<any> = any[]>(\n method: string,\n params: Params,\n ) => Promise<Reply> = rawClient.request\n\n const _subscribe: PolkadotClient[\"_subscribe\"] = (\n method,\n unsubscribeMethod,\n params,\n ) =>\n new Observable((obs) => {\n let unsubInner: UnsubscribeFn | null = null\n let subId: string | null = null\n\n const sendUnsubscribe = () => {\n // Fire-and-forget\n subId != null && rawClient.request(unsubscribeMethod, [subId])\n }\n\n rawClient._request(method, params, {\n onSuccess: (res: string, follow) => {\n subId = res\n if (obs.closed) {\n sendUnsubscribe()\n return\n }\n unsubInner = follow(subId, {\n next: (data: any) => obs.next(data),\n error: (e) => obs.error(e),\n })\n },\n onError(e) {\n obs.error(e)\n },\n })\n\n return () => {\n sendUnsubscribe()\n unsubInner?.()\n }\n })\n\n let unsafeApi: TypedApi<any, false>\n const typedApis = new WeakMap<ChainDefinition, TypedApi<any, true>>()\n\n const { broadcastTx$ } = client\n\n const getMetadata$ = (at: HexString) =>\n chainHead.getRuntimeContext$(at).pipe(map((ctx) => ctx.metadataRaw))\n\n const {\n holdBlock,\n finalized$,\n bestBlocks$,\n body$,\n header$,\n storage$,\n unfollow,\n } = chainHead\n\n const result: PolkadotClient = {\n getChainSpecData,\n\n getMetadata$,\n getMetadata: (atBlock: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(getMetadata$(atBlock), signal),\n\n blocks$: chainHead.newBlocks$,\n hodlBlock: (block: HexString) => holdBlock(block, true),\n\n finalizedBlock$: finalized$,\n getFinalizedBlock: () => firstValueFrom(finalized$),\n\n bestBlocks$: chainHead.bestBlocks$,\n getBestBlocks: () => firstValueFrom(bestBlocks$),\n\n getBlockBody$: body$,\n getBlockBody: (hash: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(body$(hash), signal),\n\n getBlockHeader$: header$,\n getBlockHeader: (hash: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(header$(hash), signal),\n\n submit: (...args) => submit(chainHead, broadcastTx$, ...args),\n submitAndWatch: (tx) => submit$(chainHead, broadcastTx$, tx),\n\n getTypedApi: <D extends ChainDefinition>(chainDefinition: D) => {\n if (typedApis.has(chainDefinition)) return typedApis.get(chainDefinition)!\n const api = createApi<D>(chainHead, broadcastTx$)\n\n typedApis.set(chainDefinition, api)\n return api\n },\n\n getUnsafeApi: <D extends ChainDefinition>() => {\n unsafeApi ??= createApi<D>(chainHead, broadcastTx$)\n return unsafeApi\n },\n\n rawQuery: (key, { at, signal } = {}) =>\n firstValueFromWithSignal(\n storage$(at ?? null, \"value\", () => {\n const hex = key.match(HEX_REGEX)?.[1]\n return hex ? `0x${hex}` : toHex(Binary.fromText(key))\n }).pipe(map((v) => v.value)),\n signal,\n ),\n\n destroy: () => {\n unfollow()\n client.destroy()\n },\n\n _request,\n _subscribe,\n }\n\n ;(result as any).___INTERNAL_DO_NOT_USE = chainHead\n\n return result\n}\n"],"names":["createRawClient"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.mjs","sources":["../../../src/client.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport {\n BlockInfo,\n ChainHead$,\n getObservableClient,\n withArchive,\n} from \"@polkadot-api/observable-client\"\nimport { Binary, HexString } from \"@polkadot-api/substrate-bindings\"\nimport {\n SubstrateClient,\n UnsubscribeFn,\n createClient as createRawClient,\n} from \"@polkadot-api/substrate-client\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport {\n Observable,\n catchError,\n combineLatest,\n defer,\n firstValueFrom,\n from,\n map,\n shareReplay,\n} from \"rxjs\"\nimport { createCompatHelpers } from \"./compatibility\"\nimport { createConstantEntry } from \"./constants\"\nimport { ChainDefinition } from \"./descriptors\"\nimport { createEventEntry } from \"./event\"\nimport { createRuntimeCallEntry } from \"./runtime-call\"\nimport { createStaticApis } from \"./static-apis\"\nimport { createStorageEntry } from \"./storage\"\nimport { createTxEntry, submit, submit$ } from \"./tx\"\nimport type { PolkadotClient, TypedApi } from \"./types\"\nimport { createProxyPath, firstValueFromWithSignal } from \"./utils\"\nimport { createViewFnEntry } from \"./viewFns\"\nimport { createWatchEntries } from \"./watch-entries\"\n\nconst HEX_REGEX = /^(?:0x)?((?:[0-9a-fA-F][0-9a-fA-F])+)$/\n\nconst createApi = <D extends ChainDefinition>(\n chainHead: ChainHead$,\n broadcast$: (tx: Uint8Array) => Observable<never>,\n chainDefinition?: ChainDefinition,\n): TypedApi<D> => {\n const compatHelpers = createCompatHelpers(chainDefinition)\n const { getClientCompat, getIsAsssetCompat } = compatHelpers\n\n const getStaticApis = createStaticApis(chainHead, broadcast$, compatHelpers)\n\n const getWatchEntries = createWatchEntries(\n chainHead.pinnedBlocks$,\n chainHead.storage$,\n chainHead.withRuntime,\n )\n\n const query = createProxyPath((pallet, name) =>\n createStorageEntry(\n pallet,\n name,\n chainHead,\n getWatchEntries,\n getClientCompat(\"query\", pallet, name),\n ),\n )\n\n const tx = createProxyPath((pallet, name) =>\n createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n ),\n )\n\n const event = createProxyPath((pallet, name) =>\n createEventEntry(\n pallet,\n name,\n chainHead,\n getClientCompat(\"event\", pallet, name),\n ),\n )\n\n const constants = createProxyPath((pallet, name) =>\n createConstantEntry(\n pallet,\n name,\n chainHead,\n getClientCompat(\"constants\", pallet, name),\n ),\n )\n\n const apis = createProxyPath((api, method) =>\n createRuntimeCallEntry(\n api,\n method,\n chainHead,\n getClientCompat(\"apis\", api, method),\n ),\n )\n\n const view = createProxyPath((pallet, entry) =>\n createViewFnEntry(\n pallet,\n entry,\n chainHead,\n getClientCompat(\"view\", pallet, entry),\n ),\n )\n\n const txFromCallData = (\n callData: Uint8Array,\n { at, signal }: Partial<{ at: string; signal: AbortSignal }> = {},\n ) =>\n firstValueFromWithSignal(\n chainHead.getRuntimeContext$(at ?? null).pipe(\n map(({ dynamicBuilder, lookup }) => {\n try {\n const {\n type: pallet,\n value: { type: name, value: args },\n } = dynamicBuilder.buildDefinition(lookup.call!).dec(callData)\n\n return createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n )(args)\n } catch {\n throw new Error(\"createTx: invalid call data\")\n }\n }),\n ),\n signal,\n )\n\n return {\n tx,\n constants,\n apis,\n view,\n query,\n event,\n txFromCallData,\n getStaticApis,\n } as any\n}\n\nexport type CreateClientOptions = Partial<{\n getMetadata: (codeHash: HexString) => Promise<Uint8Array | null>\n setMetadata: (codeHash: HexString, metadata: Uint8Array) => void\n}>\n\n/**\n * This is the top-level export for `polkadot-api`.\n *\n * @param provider A `JsonRpcProvider` compliant with the [JSON-RPC\n * spec](https://paritytech.github.io/json-rpc-interface-spec/),\n * which must support the `chainHead`, `transaction` and\n * `chainSpec` groups.\n * @param options - *(Optional)* An object that allows customization of\n * metadata handling.\n * You can supply functions to retrieve and/or persist the\n * metadata associated with runtime `codeHash` values:\n *\n * - `getMetadata`: A function that, given a `codeHash` (the\n * `:code:` hash),\n * returns a `Promise` resolving to a `Uint8Array`\n * representing the metadata,\n * or `null` if unavailable.\n * - `setMetadata`: A function that accepts a `codeHash` and\n * its associated `Uint8Array` metadata,\n * allowing you to persist the metadata (e.g., in a cache or\n * local store).\n * @example\n *\n * import { getMetadata } from \"@polkadot-api/descriptors\"\n * import { createClient } from \"polkadot-api\"\n * import { getSmProvider } from \"polkadot-api/sm-provider\"\n * import { chainSpec } from \"polkadot-api/chains/polkadot\"\n * import { start } from \"polkadot-api/smoldot\"\n *\n * const smoldot = start()\n * const chain = await smoldot.addChain({ chainSpec })\n *\n * // Connect to the polkadot relay chain.\n * const client = createClient(getSmProvider(chain), { getMetadata })\n *\n */\nexport function createClient(\n provider: JsonRpcProvider,\n { getMetadata, setMetadata }: CreateClientOptions = {},\n): PolkadotClient {\n const rawClient: SubstrateClient = createRawClient(provider)\n const client = getObservableClient(rawClient, {\n getMetadata: getMetadata\n ? (codeHash: string) => from(getMetadata(codeHash))\n : undefined,\n setMetadata,\n })\n const { getChainSpecData } = rawClient\n\n const withArchiveBlock =\n <T extends any[], R>(\n fn: (blockHash: string, ...args: T) => Observable<R>,\n ) =>\n (\n blockHash: string,\n ...args: T\n ): Observable<{ value: R; block: BlockInfo }> =>\n combineLatest([\n fn(blockHash, ...args),\n archive.header$(blockHash).pipe(\n map(({ number, parentHash }) => ({\n hash: blockHash,\n number,\n parent: parentHash,\n // Not correct, but it would be overkill to fix. Only relevant on chainHead, not on archive.\n hasNewRuntime: false,\n })),\n ),\n ]).pipe(map(([value, block]) => ({ value, block })))\n\n const { genesis$, ..._chainHead } = client.chainHead$()\n const archive = client.archive(_chainHead.getRuntime$)\n const chainHead: ChainHead$ = {\n ..._chainHead,\n genesis$: defer(getChainSpecData).pipe(\n map(({ genesisHash }) => genesisHash),\n catchError(() => genesis$),\n shareReplay(1),\n ),\n storage$: withArchive(\n _chainHead.storage$,\n withArchiveBlock(archive.storage$),\n ),\n body$: withArchive(_chainHead.body$, archive.body$),\n call$: withArchive(_chainHead.call$, archive.call$),\n header$: withArchive(_chainHead.header$, archive.header$),\n eventsAt$: withArchive(_chainHead.eventsAt$, archive.eventsAt$),\n storageQueries$: withArchive(\n _chainHead.storageQueries$,\n archive.storageQueries$,\n ),\n getRuntimeContext$: withArchive(\n _chainHead.getRuntimeContext$,\n archive.getRuntimeContext$,\n ),\n }\n\n const _request: <Reply = any, Params extends Array<any> = any[]>(\n method: string,\n params: Params,\n ) => Promise<Reply> = rawClient.request\n\n const _subscribe: PolkadotClient[\"_subscribe\"] = (\n method,\n unsubscribeMethod,\n params,\n ) =>\n new Observable((obs) => {\n let unsubInner: UnsubscribeFn | null = null\n let subId: string | null = null\n\n const sendUnsubscribe = () => {\n // Fire-and-forget\n subId != null && rawClient.request(unsubscribeMethod, [subId])\n }\n\n rawClient._request(method, params, {\n onSuccess: (res: string, follow) => {\n subId = res\n if (obs.closed) {\n sendUnsubscribe()\n return\n }\n unsubInner = follow(subId, {\n next: (data: any) => obs.next(data),\n error: (e) => obs.error(e),\n })\n },\n onError(e) {\n obs.error(e)\n },\n })\n\n return () => {\n sendUnsubscribe()\n unsubInner?.()\n }\n })\n\n let unsafeApi: TypedApi<any, false>\n const typedApis = new WeakMap<ChainDefinition, TypedApi<any, true>>()\n\n const { broadcastTx$ } = client\n\n const getMetadata$ = (at: HexString) =>\n chainHead.getRuntimeContext$(at).pipe(map((ctx) => ctx.metadataRaw))\n\n const {\n holdBlock,\n finalized$,\n bestBlocks$,\n body$,\n header$,\n storage$,\n unfollow,\n } = chainHead\n\n const result: PolkadotClient = {\n getChainSpecData,\n\n getMetadata$,\n getMetadata: (atBlock: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(getMetadata$(atBlock), signal),\n\n blocks$: chainHead.newBlocks$,\n hodlBlock: (block: HexString) => holdBlock(block, true),\n\n finalizedBlock$: finalized$,\n getFinalizedBlock: () => firstValueFrom(finalized$),\n\n bestBlocks$: chainHead.bestBlocks$,\n getBestBlocks: () => firstValueFrom(bestBlocks$),\n\n getBlockBody$: body$,\n getBlockBody: (hash: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(body$(hash), signal),\n\n getBlockHeader$: header$,\n getBlockHeader: (hash: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(header$(hash), signal),\n\n submit: (...args) => submit(chainHead, broadcastTx$, ...args),\n submitAndWatch: (tx) => submit$(chainHead, broadcastTx$, tx),\n\n getTypedApi: <D extends ChainDefinition>(chainDefinition: D) => {\n if (typedApis.has(chainDefinition)) return typedApis.get(chainDefinition)!\n const api = createApi<D>(chainHead, broadcastTx$)\n\n typedApis.set(chainDefinition, api)\n return api\n },\n\n getUnsafeApi: <D extends ChainDefinition>() => {\n unsafeApi ??= createApi<D>(chainHead, broadcastTx$)\n return unsafeApi\n },\n\n rawQuery: (key, { at, signal } = {}) =>\n firstValueFromWithSignal(\n storage$(at ?? null, \"value\", () => {\n const hex = key.match(HEX_REGEX)?.[1]\n return hex ? `0x${hex}` : toHex(Binary.fromText(key))\n }).pipe(map((v) => v.value)),\n signal,\n ),\n\n destroy: () => {\n unfollow()\n client.destroy()\n },\n\n _request,\n _subscribe,\n }\n\n ;(result as any).___INTERNAL_DO_NOT_USE = chainHead\n\n return result\n}\n"],"names":["createRawClient"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.mjs","sources":["../../../../src/compatibility/compatibility.ts"],"sourcesContent":["import { RuntimeContext } from \"@polkadot-api/observable-client\"\nimport {\n CompatibilityCache,\n CompatibilityLevel,\n EntryPoint,\n entryPointsAreCompatible,\n TypedefNode,\n valueIsCompatibleWithDest,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { ChainDefinition } from \"@/descriptors\"\nimport {\n CompatCtx,\n getDestCompatCtx,\n getEntryAndGetter,\n getUserCompatCtx,\n OpType,\n} from \"./compat-ctx\"\nimport { createProxyPath } from \"@/utils\"\nimport { withWeakCache } from \"@/utils/with-weak-cache\"\n\nexport type CompatApi<T> = Promise<(ctx: RuntimeContext) => T>\nexport type CompatHelper<T = any> = {\n level: CompatibilityLevel\n isCompatible: (from?: CompatibilityLevel) => boolean\n isValueCompatible: (dest: T) => boolean\n}\nexport type ArgsValueCompatHelper<Args = any, Value = any> = {\n args: CompatHelper<Args>\n value: CompatHelper<Value>\n isCompatible: (from?: CompatibilityLevel) => boolean\n}\nexport type ValueCompat = CompatApi<CompatHelper>\nexport type InOutCompat = CompatApi<ArgsValueCompatHelper>\nexport type ConstCompat = Promise<(dest: any) => boolean>\n\nconst incompatible: CompatHelper = {\n level: CompatibilityLevel.Incompatible,\n isCompatible: () => false,\n isValueCompatible: () => false,\n}\nconst inOutIncompat: ArgsValueCompatHelper = {\n args: incompatible,\n value: incompatible,\n isCompatible: () => false,\n}\n\nconst identical: CompatHelper = {\n level: CompatibilityLevel.Identical,\n isCompatible: () => true,\n isValueCompatible: () => true,\n}\n\nconst getIsApiCompatible =\n (currentLevel: CompatibilityLevel) =>\n (target = CompatibilityLevel.BackwardsCompatible) =>\n currentLevel >= target\n\nconst getCompatibilityHelper = <K extends OpType>(\n kind: OpType,\n cache: CompatibilityCache,\n user: {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n } | null,\n dest: {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n },\n): K extends OpType.Tx | OpType.Event | OpType.Const\n ? CompatHelper\n : ArgsValueCompatHelper => {\n let result: { args: CompatHelper; value: CompatHelper }\n\n if (!dest.entry) result = inOutIncompat\n else {\n const { args } = dest.entry\n\n const _isCompat = (value: any) =>\n valueIsCompatibleWithDest(args, dest.getter, value)\n const isValueCompatible =\n kind === OpType.Storage\n ? (value: any[]) => _isCompat(value.length === 1 ? value[0] : value)\n : _isCompat\n\n if (!user?.entry) {\n const level = CompatibilityLevel.Partial\n result = {\n args: {\n level,\n isValueCompatible,\n isCompatible: getIsApiCompatible(level),\n },\n value: user ? incompatible : identical,\n }\n } else {\n const { values: userValues } = user.entry\n\n const { args, values } = entryPointsAreCompatible(\n user.entry,\n user.getter,\n dest.entry,\n dest.getter,\n cache,\n )\n\n result = {\n args: {\n level: args.level,\n isValueCompatible,\n isCompatible: getIsApiCompatible(args.level),\n },\n value:\n values.level === CompatibilityLevel.Incompatible\n ? incompatible\n : {\n level: values.level,\n isValueCompatible:\n values.level > CompatibilityLevel.Partial\n ? () => true\n : (val) =>\n valueIsCompatibleWithDest(userValues, user.getter, val),\n isCompatible: getIsApiCompatible(values.level),\n },\n }\n }\n }\n\n if (kind === OpType.Storage || kind === OpType.Api || kind === OpType.ViewFns)\n return Object.assign(result, {\n isCompatible: getIsApiCompatible(\n Math.min(result.args.level, result.value.level),\n ),\n }) as any\n\n return (kind === OpType.Tx ? result.args : result.value) as any\n}\n\nexport const createCompatHelpers = withWeakCache(\n (descriptors?: ChainDefinition) => {\n let userCtx: CompatCtx | null = null\n const awaitedUserCtx: Promise<CompatCtx | null> = (\n descriptors ? getUserCompatCtx(descriptors) : Promise.resolve(null)\n ).then((x) => (userCtx = x))\n\n // before calling this function we must await on `awaitedUserCtx`\n const getHelpers = withWeakCache((runtimeCtx: RuntimeContext) => {\n const cache = new Map()\n const destCtx = getDestCompatCtx(runtimeCtx)\n const getCompat = <K extends OpType>(kind: K) =>\n createProxyPath(\n (\n group: string,\n name: string,\n ): K extends OpType.Tx | OpType.Event | OpType.Const\n ? CompatHelper\n : ArgsValueCompatHelper =>\n getCompatibilityHelper(\n kind,\n cache,\n getEntryAndGetter(userCtx, kind, group, name),\n getEntryAndGetter(destCtx, kind, group, name),\n ),\n )\n\n return {\n tx: getCompat(OpType.Tx),\n constants: getCompat(OpType.Const),\n apis: getCompat(OpType.Api),\n view: getCompat(OpType.ViewFns),\n query: getCompat(OpType.Storage),\n event: getCompat(OpType.Event),\n }\n })\n\n const getClientCompat = async <\n K extends \"tx\" | \"constants\" | \"apis\" | \"view\" | \"query\" | \"event\",\n >(\n kind: K,\n group: string,\n name: string,\n ): CompatApi<\n K extends \"tx\" | \"event\" | \"constants\"\n ? CompatHelper\n : ArgsValueCompatHelper\n > => {\n await awaitedUserCtx\n return (ctx: RuntimeContext) => getHelpers(ctx)[kind][group][name] as any\n }\n\n return {\n getSyncHelpers: async (ctx: RuntimeContext) => {\n await awaitedUserCtx\n return getHelpers(ctx)\n },\n getClientCompat,\n getIsAsssetCompat: (ctx: RuntimeContext) =>\n getDestCompatCtx(ctx).isAssetCompat,\n }\n },\n)\n\nexport type
|
|
1
|
+
{"version":3,"file":"compatibility.mjs","sources":["../../../../src/compatibility/compatibility.ts"],"sourcesContent":["import { RuntimeContext } from \"@polkadot-api/observable-client\"\nimport {\n CompatibilityCache,\n CompatibilityLevel,\n EntryPoint,\n entryPointsAreCompatible,\n TypedefNode,\n valueIsCompatibleWithDest,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { ChainDefinition } from \"@/descriptors\"\nimport {\n CompatCtx,\n getDestCompatCtx,\n getEntryAndGetter,\n getUserCompatCtx,\n OpType,\n} from \"./compat-ctx\"\nimport { createProxyPath } from \"@/utils\"\nimport { withWeakCache } from \"@/utils/with-weak-cache\"\n\nexport type CompatApi<T> = Promise<(ctx: RuntimeContext) => T>\nexport type CompatHelper<T = any> = {\n level: CompatibilityLevel\n isCompatible: (from?: CompatibilityLevel) => boolean\n isValueCompatible: (dest: T) => boolean\n}\nexport type ArgsValueCompatHelper<Args = any, Value = any> = {\n args: CompatHelper<Args>\n value: CompatHelper<Value>\n isCompatible: (from?: CompatibilityLevel) => boolean\n}\nexport type ValueCompat = CompatApi<CompatHelper>\nexport type InOutCompat = CompatApi<ArgsValueCompatHelper>\nexport type ConstCompat = Promise<(dest: any) => boolean>\n\nconst incompatible: CompatHelper = {\n level: CompatibilityLevel.Incompatible,\n isCompatible: () => false,\n isValueCompatible: () => false,\n}\nconst inOutIncompat: ArgsValueCompatHelper = {\n args: incompatible,\n value: incompatible,\n isCompatible: () => false,\n}\n\nconst identical: CompatHelper = {\n level: CompatibilityLevel.Identical,\n isCompatible: () => true,\n isValueCompatible: () => true,\n}\n\nconst getIsApiCompatible =\n (currentLevel: CompatibilityLevel) =>\n (target = CompatibilityLevel.BackwardsCompatible) =>\n currentLevel >= target\n\nconst getCompatibilityHelper = <K extends OpType>(\n kind: OpType,\n cache: CompatibilityCache,\n user: {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n } | null,\n dest: {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n },\n): K extends OpType.Tx | OpType.Event | OpType.Const\n ? CompatHelper\n : ArgsValueCompatHelper => {\n let result: { args: CompatHelper; value: CompatHelper }\n\n if (!dest.entry) result = inOutIncompat\n else {\n const { args } = dest.entry\n\n const _isCompat = (value: any) =>\n valueIsCompatibleWithDest(args, dest.getter, value)\n const isValueCompatible =\n kind === OpType.Storage\n ? (value: any[]) => _isCompat(value.length === 1 ? value[0] : value)\n : _isCompat\n\n if (!user?.entry) {\n const level = CompatibilityLevel.Partial\n result = {\n args: {\n level,\n isValueCompatible,\n isCompatible: getIsApiCompatible(level),\n },\n value: user ? incompatible : identical,\n }\n } else {\n const { values: userValues } = user.entry\n\n const { args, values } = entryPointsAreCompatible(\n user.entry,\n user.getter,\n dest.entry,\n dest.getter,\n cache,\n )\n\n result = {\n args: {\n level: args.level,\n isValueCompatible,\n isCompatible: getIsApiCompatible(args.level),\n },\n value:\n values.level === CompatibilityLevel.Incompatible\n ? incompatible\n : {\n level: values.level,\n isValueCompatible:\n values.level > CompatibilityLevel.Partial\n ? () => true\n : (val) =>\n valueIsCompatibleWithDest(userValues, user.getter, val),\n isCompatible: getIsApiCompatible(values.level),\n },\n }\n }\n }\n\n if (kind === OpType.Storage || kind === OpType.Api || kind === OpType.ViewFns)\n return Object.assign(result, {\n isCompatible: getIsApiCompatible(\n Math.min(result.args.level, result.value.level),\n ),\n }) as any\n\n return (kind === OpType.Tx ? result.args : result.value) as any\n}\n\nexport const createCompatHelpers = withWeakCache(\n (descriptors?: ChainDefinition) => {\n let userCtx: CompatCtx | null = null\n const awaitedUserCtx: Promise<CompatCtx | null> = (\n descriptors ? getUserCompatCtx(descriptors) : Promise.resolve(null)\n ).then((x) => (userCtx = x))\n\n // before calling this function we must await on `awaitedUserCtx`\n const getHelpers = withWeakCache((runtimeCtx: RuntimeContext) => {\n const cache = new Map()\n const destCtx = getDestCompatCtx(runtimeCtx)\n const getCompat = <K extends OpType>(kind: K) =>\n createProxyPath(\n (\n group: string,\n name: string,\n ): K extends OpType.Tx | OpType.Event | OpType.Const\n ? CompatHelper\n : ArgsValueCompatHelper =>\n getCompatibilityHelper(\n kind,\n cache,\n getEntryAndGetter(userCtx, kind, group, name),\n getEntryAndGetter(destCtx, kind, group, name),\n ),\n )\n\n return {\n tx: getCompat(OpType.Tx),\n constants: getCompat(OpType.Const),\n apis: getCompat(OpType.Api),\n view: getCompat(OpType.ViewFns),\n query: getCompat(OpType.Storage),\n event: getCompat(OpType.Event),\n }\n })\n\n const getClientCompat = async <\n K extends \"tx\" | \"constants\" | \"apis\" | \"view\" | \"query\" | \"event\",\n >(\n kind: K,\n group: string,\n name: string,\n ): CompatApi<\n K extends \"tx\" | \"event\" | \"constants\"\n ? CompatHelper\n : ArgsValueCompatHelper\n > => {\n await awaitedUserCtx\n return (ctx: RuntimeContext) => getHelpers(ctx)[kind][group][name] as any\n }\n\n return {\n getSyncHelpers: async (ctx: RuntimeContext) => {\n await awaitedUserCtx\n return getHelpers(ctx)\n },\n getClientCompat,\n getIsAsssetCompat: (ctx: RuntimeContext) =>\n getDestCompatCtx(ctx).isAssetCompat,\n }\n },\n)\n\nexport type CompatHelpers = ReturnType<typeof createCompatHelpers>\n"],"names":["args"],"mappings":";;;;;;;;;;AAmCA,MAAM,YAAA,GAA6B;AAAA,EACjC,OAAO,kBAAA,CAAmB,YAAA;AAAA,EAC1B,cAAc,MAAM,KAAA;AAAA,EACpB,mBAAmB,MAAM;AAC3B,CAAA;AACA,MAAM,aAAA,GAAuC;AAAA,EAC3C,IAAA,EAAM,YAAA;AAAA,EACN,KAAA,EAAO,YAAA;AAAA,EACP,cAAc,MAAM;AACtB,CAAA;AAEA,MAAM,SAAA,GAA0B;AAAA,EAC9B,OAAO,kBAAA,CAAmB,SAAA;AAAA,EAC1B,cAAc,MAAM,IAAA;AAAA,EACpB,mBAAmB,MAAM;AAC3B,CAAA;AAEA,MAAM,qBACJ,CAAC,YAAA,KACD,CAAC,MAAA,GAAS,kBAAA,CAAmB,wBAC3B,YAAA,IAAgB,MAAA;AAEpB,MAAM,sBAAA,GAAyB,CAC7B,IAAA,EACA,KAAA,EACA,MAIA,IAAA,KAM2B;AAC3B,EAAA,IAAI,MAAA;AAEJ,EAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,MAAA,GAAS,aAAA;AAAA,OACrB;AACH,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,IAAA,CAAK,KAAA;AAEtB,IAAA,MAAM,YAAY,CAAC,KAAA,KACjB,0BAA0B,IAAA,EAAM,IAAA,CAAK,QAAQ,KAAK,CAAA;AACpD,IAAA,MAAM,iBAAA,GACJ,IAAA,KAAS,MAAA,CAAO,OAAA,GACZ,CAAC,KAAA,KAAiB,SAAA,CAAU,KAAA,CAAM,MAAA,KAAW,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA,GAAI,KAAK,CAAA,GACjE,SAAA;AAEN,IAAA,IAAI,CAAC,MAAM,KAAA,EAAO;AAChB,MAAA,MAAM,QAAQ,kBAAA,CAAmB,OAAA;AACjC,MAAA,MAAA,GAAS;AAAA,QACP,IAAA,EAAM;AAAA,UACJ,KAAA;AAAA,UACA,iBAAA;AAAA,UACA,YAAA,EAAc,mBAAmB,KAAK;AAAA,SACxC;AAAA,QACA,KAAA,EAAO,OAAO,YAAA,GAAe;AAAA,OAC/B;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAI,IAAA,CAAK,KAAA;AAEpC,MAAA,MAAM,EAAE,IAAA,EAAAA,KAAAA,EAAM,MAAA,EAAO,GAAI,wBAAA;AAAA,QACvB,IAAA,CAAK,KAAA;AAAA,QACL,IAAA,CAAK,MAAA;AAAA,QACL,IAAA,CAAK,KAAA;AAAA,QACL,IAAA,CAAK,MAAA;AAAA,QACL;AAAA,OACF;AAEA,MAAA,MAAA,GAAS;AAAA,QACP,IAAA,EAAM;AAAA,UACJ,OAAOA,KAAAA,CAAK,KAAA;AAAA,UACZ,iBAAA;AAAA,UACA,YAAA,EAAc,kBAAA,CAAmBA,KAAAA,CAAK,KAAK;AAAA,SAC7C;AAAA,QACA,KAAA,EACE,MAAA,CAAO,KAAA,KAAU,kBAAA,CAAmB,eAChC,YAAA,GACA;AAAA,UACE,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,iBAAA,EACE,MAAA,CAAO,KAAA,GAAQ,kBAAA,CAAmB,OAAA,GAC9B,MAAM,IAAA,GACN,CAAC,GAAA,KACC,yBAAA,CAA0B,UAAA,EAAY,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA,UAC9D,YAAA,EAAc,kBAAA,CAAmB,MAAA,CAAO,KAAK;AAAA;AAC/C,OACR;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,SAAS,MAAA,CAAO,OAAA,IAAW,SAAS,MAAA,CAAO,GAAA,IAAO,SAAS,MAAA,CAAO,OAAA;AACpE,IAAA,OAAO,MAAA,CAAO,OAAO,MAAA,EAAQ;AAAA,MAC3B,YAAA,EAAc,kBAAA;AAAA,QACZ,KAAK,GAAA,CAAI,MAAA,CAAO,KAAK,KAAA,EAAO,MAAA,CAAO,MAAM,KAAK;AAAA;AAChD,KACD,CAAA;AAEH,EAAA,OAAQ,IAAA,KAAS,MAAA,CAAO,EAAA,GAAK,MAAA,CAAO,OAAO,MAAA,CAAO,KAAA;AACpD,CAAA;AAEO,MAAM,mBAAA,GAAsB,aAAA;AAAA,EACjC,CAAC,WAAA,KAAkC;AACjC,IAAA,IAAI,OAAA,GAA4B,IAAA;AAChC,IAAA,MAAM,cAAA,GAAA,CACJ,WAAA,GAAc,gBAAA,CAAiB,WAAW,CAAA,GAAI,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA,EAClE,IAAA,CAAK,CAAC,CAAA,KAAO,UAAU,CAAE,CAAA;AAG3B,IAAA,MAAM,UAAA,GAAa,aAAA,CAAc,CAAC,UAAA,KAA+B;AAC/D,MAAA,MAAM,KAAA,uBAAY,GAAA,EAAI;AACtB,MAAA,MAAM,OAAA,GAAU,iBAAiB,UAAU,CAAA;AAC3C,MAAA,MAAM,SAAA,GAAY,CAAmB,IAAA,KACnC,eAAA;AAAA,QACE,CACE,OACA,IAAA,KAIA,sBAAA;AAAA,UACE,IAAA;AAAA,UACA,KAAA;AAAA,UACA,iBAAA,CAAkB,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,IAAI,CAAA;AAAA,UAC5C,iBAAA,CAAkB,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,IAAI;AAAA;AAC9C,OACJ;AAEF,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,SAAA,CAAU,MAAA,CAAO,EAAE,CAAA;AAAA,QACvB,SAAA,EAAW,SAAA,CAAU,MAAA,CAAO,KAAK,CAAA;AAAA,QACjC,IAAA,EAAM,SAAA,CAAU,MAAA,CAAO,GAAG,CAAA;AAAA,QAC1B,IAAA,EAAM,SAAA,CAAU,MAAA,CAAO,OAAO,CAAA;AAAA,QAC9B,KAAA,EAAO,SAAA,CAAU,MAAA,CAAO,OAAO,CAAA;AAAA,QAC/B,KAAA,EAAO,SAAA,CAAU,MAAA,CAAO,KAAK;AAAA,OAC/B;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,eAAA,GAAkB,OAGtB,IAAA,EACA,KAAA,EACA,IAAA,KAKG;AACH,MAAA,MAAM,cAAA;AACN,MAAA,OAAO,CAAC,QAAwB,UAAA,CAAW,GAAG,EAAE,IAAI,CAAA,CAAE,KAAK,CAAA,CAAE,IAAI,CAAA;AAAA,IACnE,CAAA;AAEA,IAAA,OAAO;AAAA,MACL,cAAA,EAAgB,OAAO,GAAA,KAAwB;AAC7C,QAAA,MAAM,cAAA;AACN,QAAA,OAAO,WAAW,GAAG,CAAA;AAAA,MACvB,CAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA,EAAmB,CAAC,GAAA,KAClB,gBAAA,CAAiB,GAAG,CAAA,CAAE;AAAA,KAC1B;AAAA,EACF;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offline.mjs","sources":["../../../src/offline.ts"],"sourcesContent":["import { getDynamicBuilder, getLookupFn } from \"@polkadot-api/metadata-builders\"\nimport {\n Enum,\n metadata as metadataCodec,\n unifyMetadata,\n} from \"@polkadot-api/substrate-bindings\"\nimport { fromHex, mergeUint8 } from \"@polkadot-api/utils\"\nimport { ChainDefinition, PlainDescriptor } from \"./descriptors\"\nimport { OfflineTxEntry } from \"./tx\"\nimport { getSignExtensionsCreator } from \"./tx/signed-extensions\"\nimport { OfflineApi } from \"./types\"\n\nconst createOfflineTxEntry = <\n Arg extends {} | undefined,\n
|
|
1
|
+
{"version":3,"file":"offline.mjs","sources":["../../../src/offline.ts"],"sourcesContent":["import { getDynamicBuilder, getLookupFn } from \"@polkadot-api/metadata-builders\"\nimport {\n Enum,\n metadata as metadataCodec,\n unifyMetadata,\n} from \"@polkadot-api/substrate-bindings\"\nimport { fromHex, mergeUint8 } from \"@polkadot-api/utils\"\nimport { ChainDefinition, PlainDescriptor } from \"./descriptors\"\nimport { OfflineTxEntry } from \"./tx\"\nimport { getSignExtensionsCreator } from \"./tx/signed-extensions\"\nimport { OfflineApi } from \"./types\"\n\nconst createOfflineTxEntry = <\n Arg extends {} | undefined,\n Asset extends PlainDescriptor<any>,\n>(\n pallet: string,\n name: string,\n metadataRaw: Uint8Array,\n dynamicBuilder: ReturnType<typeof getDynamicBuilder>,\n signExtensionCreator: ReturnType<typeof getSignExtensionsCreator>,\n): OfflineTxEntry<Arg, Asset> => {\n let codecs\n try {\n codecs = dynamicBuilder.buildCall(pallet, name)\n } catch {\n throw new Error(`Runtime entry Tx(${pallet}.${name}) not found`)\n }\n const { location, codec } = codecs\n const locationBytes = new Uint8Array(location)\n\n return (arg: Arg) => {\n const encodedData = mergeUint8([locationBytes, codec.enc(arg)])\n\n return {\n encodedData,\n decodedCall: Enum(pallet, Enum(name, arg)),\n sign: async (from, extensions) =>\n await from.signTx(\n encodedData,\n signExtensionCreator(extensions),\n metadataRaw,\n extensions.mortality.mortal\n ? extensions.mortality.startAtBlock.height\n : 0,\n ),\n }\n }\n}\n\n/**\n * Asynchronously create an instance of `OfflineApi`.\n * OfflineApi allows to create and sign transactions and access chain constants.\n *\n * @param chainDefinition Pass descriptors from `@polkadot-api/descriptors`\n * generated by `papi` CLI.\n */\nexport const getOfflineApi: <D extends ChainDefinition>(\n chainDefinition: D,\n) => Promise<OfflineApi<D>> = async ({ genesis: genesisHex, getMetadata }) => {\n if (!genesisHex) throw new Error(\"Missing genesis hash\")\n const genesis = fromHex(genesisHex)\n const metadataRaw = await getMetadata()\n const metadata = unifyMetadata(metadataCodec.dec(metadataRaw))\n const lookupFn = getLookupFn(metadata)\n const dynamicBuilder = getDynamicBuilder(lookupFn)\n const signExtensionCreator = getSignExtensionsCreator(\n genesis,\n lookupFn,\n dynamicBuilder,\n )\n\n const getPallet = (name: string) =>\n metadata.pallets.find((p) => p.name === name)\n\n const target = {}\n const createProxy = (propCall: (prop: string) => unknown) =>\n new Proxy(target, {\n get(_, prop) {\n return propCall(prop as string)\n },\n })\n\n const createProxyPath = <T>(pathCall: (a: string, b: string) => T) => {\n const cache: Record<string, Record<string, T>> = {}\n return createProxy((a) => {\n if (!cache[a]) cache[a] = {}\n return createProxy((b) => {\n if (!cache[a][b]) cache[a][b] = pathCall(a, b)\n return cache[a][b]\n })\n }) as Record<string, Record<string, T>>\n }\n\n const constants = createProxyPath((pallet, name) => {\n const constant = getPallet(pallet)?.constants.find((c) => c.name === name)\n if (!constant)\n throw new Error(`Runtime entry Constant(${pallet}.${name}) not found`)\n return dynamicBuilder.buildConstant(pallet, name).dec(constant.value)\n })\n\n const tx = createProxyPath((pallet, name) =>\n createOfflineTxEntry(\n pallet,\n name,\n metadataRaw,\n dynamicBuilder,\n signExtensionCreator,\n ),\n )\n\n return { constants, tx } as any\n}\n"],"names":["metadata","metadataCodec"],"mappings":"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"}
|
|
@@ -7,54 +7,64 @@ import { createProxyPath } from './utils/proxy-path.mjs';
|
|
|
7
7
|
import { constFromCtx } from './utils/const-from-ctx.mjs';
|
|
8
8
|
import { getCallData } from './utils/get-call-data.mjs';
|
|
9
9
|
import { stgGetKey } from './utils/stg-get-key.mjs';
|
|
10
|
+
import { createTxEntry } from './tx/tx.mjs';
|
|
10
11
|
import { withWeakCache } from './utils/with-weak-cache.mjs';
|
|
11
12
|
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
const createStaticApis = (chainHead, broadcast$, { getClientCompat, getSyncHelpers, getIsAsssetCompat }) => {
|
|
14
|
+
const txFromCallData = ({ dynamicBuilder, lookup }) => (callData) => {
|
|
15
|
+
try {
|
|
16
|
+
const {
|
|
17
|
+
type: pallet,
|
|
18
|
+
value: { type: name, value: args }
|
|
19
|
+
} = dynamicBuilder.buildDefinition(lookup.call).dec(callData);
|
|
20
|
+
return createTxEntry(
|
|
21
|
+
pallet,
|
|
22
|
+
name,
|
|
23
|
+
chainHead,
|
|
24
|
+
broadcast$,
|
|
25
|
+
getClientCompat("tx", pallet, name),
|
|
26
|
+
getIsAsssetCompat
|
|
27
|
+
)(args);
|
|
28
|
+
} catch {
|
|
29
|
+
throw new Error("Invalid call data");
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return ({ at, signal } = {}) => firstValueFromWithSignal(
|
|
33
|
+
chainHead.getRuntimeContext$(at ?? null).pipe(
|
|
34
|
+
mergeMap(
|
|
35
|
+
withWeakCache(async (ctx) => {
|
|
36
|
+
const compat = await getSyncHelpers(ctx);
|
|
37
|
+
return {
|
|
38
|
+
id: ctx.codeHash,
|
|
39
|
+
txFromCallData: txFromCallData(ctx),
|
|
40
|
+
constants: createProxyPath(
|
|
41
|
+
(pallet, name) => constFromCtx(ctx, pallet, name)
|
|
42
|
+
),
|
|
43
|
+
query: createProxyPath((pallet, name) => ({
|
|
44
|
+
getKey: stgGetKey(
|
|
45
|
+
ctx,
|
|
46
|
+
pallet,
|
|
47
|
+
name,
|
|
48
|
+
compat.query[pallet][name].args.isValueCompatible
|
|
49
|
+
)
|
|
50
|
+
})),
|
|
51
|
+
tx: createProxyPath((pallet, name) => ({
|
|
52
|
+
getEncodedData: (arg) => getCallData(
|
|
53
|
+
ctx.dynamicBuilder,
|
|
54
|
+
compat.tx[pallet][name].isValueCompatible,
|
|
55
|
+
pallet,
|
|
56
|
+
name,
|
|
57
|
+
arg
|
|
58
|
+
)
|
|
59
|
+
})),
|
|
60
|
+
compat
|
|
61
|
+
};
|
|
62
|
+
})
|
|
63
|
+
)
|
|
64
|
+
),
|
|
65
|
+
signal
|
|
66
|
+
);
|
|
22
67
|
};
|
|
23
|
-
const createStaticApis = (getRuntimeContext, getCompat) => ({ at, signal } = {}) => firstValueFromWithSignal(
|
|
24
|
-
getRuntimeContext(at ?? null).pipe(
|
|
25
|
-
mergeMap(
|
|
26
|
-
withWeakCache(async (ctx) => {
|
|
27
|
-
const compat = await getCompat(ctx);
|
|
28
|
-
return {
|
|
29
|
-
id: ctx.codeHash,
|
|
30
|
-
decodeCallData: decodeCallData(ctx),
|
|
31
|
-
constants: createProxyPath(
|
|
32
|
-
(pallet, name) => constFromCtx(ctx, pallet, name)
|
|
33
|
-
),
|
|
34
|
-
query: createProxyPath((pallet, name) => ({
|
|
35
|
-
getKey: stgGetKey(
|
|
36
|
-
ctx,
|
|
37
|
-
pallet,
|
|
38
|
-
name,
|
|
39
|
-
compat.query[pallet][name].args.isValueCompatible
|
|
40
|
-
)
|
|
41
|
-
})),
|
|
42
|
-
tx: createProxyPath((pallet, name) => ({
|
|
43
|
-
getCallData: (arg) => getCallData(
|
|
44
|
-
ctx.dynamicBuilder,
|
|
45
|
-
compat.tx[pallet][name].isValueCompatible,
|
|
46
|
-
pallet,
|
|
47
|
-
name,
|
|
48
|
-
arg
|
|
49
|
-
)
|
|
50
|
-
})),
|
|
51
|
-
compat
|
|
52
|
-
};
|
|
53
|
-
})
|
|
54
|
-
)
|
|
55
|
-
),
|
|
56
|
-
signal
|
|
57
|
-
);
|
|
58
68
|
|
|
59
69
|
export { createStaticApis };
|
|
60
70
|
//# sourceMappingURL=static-apis.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-apis.mjs","sources":["../../../src/static-apis.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"static-apis.mjs","sources":["../../../src/static-apis.ts"],"sourcesContent":["import { CompatHelpers } from \"@/compatibility\"\nimport { PullOptions } from \"@/types\"\nimport { createProxyPath, firstValueFromWithSignal } from \"@/utils\"\nimport { constFromCtx } from \"@/utils/const-from-ctx\"\nimport { getCallData } from \"@/utils/get-call-data\"\nimport { stgGetKey } from \"@/utils/stg-get-key\"\nimport { ChainHead$, RuntimeContext } from \"@polkadot-api/observable-client\"\nimport { mergeMap, Observable } from \"rxjs\"\nimport { createTxEntry, Transaction } from \"./tx\"\nimport { withWeakCache } from \"./utils/with-weak-cache\"\n\nexport const createStaticApis = (\n chainHead: ChainHead$,\n broadcast$: (tx: Uint8Array) => Observable<never>,\n { getClientCompat, getSyncHelpers, getIsAsssetCompat }: CompatHelpers,\n) => {\n const txFromCallData =\n ({ dynamicBuilder, lookup }: RuntimeContext) =>\n (callData: Uint8Array): Transaction => {\n try {\n const {\n type: pallet,\n value: { type: name, value: args },\n } = dynamicBuilder.buildDefinition(lookup.call!).dec(callData)\n\n return createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n )(args)\n } catch {\n throw new Error(\"Invalid call data\")\n }\n }\n\n return ({ at, signal }: PullOptions = {}) =>\n firstValueFromWithSignal(\n chainHead.getRuntimeContext$(at ?? null).pipe(\n mergeMap(\n withWeakCache(async (ctx) => {\n const compat = await getSyncHelpers(ctx)\n return {\n id: ctx.codeHash,\n txFromCallData: txFromCallData(ctx),\n constants: createProxyPath((pallet, name) =>\n constFromCtx(ctx, pallet, name),\n ),\n query: createProxyPath((pallet, name) => ({\n getKey: stgGetKey(\n ctx,\n pallet,\n name,\n compat.query[pallet][name].args.isValueCompatible,\n ),\n })),\n tx: createProxyPath((pallet, name) => ({\n getEncodedData: (arg: any) =>\n getCallData(\n ctx.dynamicBuilder,\n compat.tx[pallet][name].isValueCompatible,\n pallet,\n name,\n arg,\n ),\n })),\n compat,\n }\n }),\n ),\n ),\n signal,\n )\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAWO,MAAM,gBAAA,GAAmB,CAC9B,SAAA,EACA,UAAA,EACA,EAAE,eAAA,EAAiB,cAAA,EAAgB,mBAAkB,KAClD;AACH,EAAA,MAAM,iBACJ,CAAC,EAAE,gBAAgB,MAAA,EAAO,KAC1B,CAAC,QAAA,KAAsC;AACrC,IAAA,IAAI;AACF,MAAA,MAAM;AAAA,QACJ,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,EAAE,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA;AAAK,UAC/B,cAAA,CAAe,eAAA,CAAgB,OAAO,IAAK,CAAA,CAAE,IAAI,QAAQ,CAAA;AAE7D,MAAA,OAAO,aAAA;AAAA,QACL,MAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,eAAA,CAAgB,IAAA,EAAM,MAAA,EAAQ,IAAI,CAAA;AAAA,QAClC;AAAA,QACA,IAAI,CAAA;AAAA,IACR,CAAA,CAAA,MAAQ;AACN,MAAA,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAAA,IACrC;AAAA,EACF,CAAA;AAEF,EAAA,OAAO,CAAC,EAAE,EAAA,EAAI,MAAA,EAAO,GAAiB,EAAC,KACrC,wBAAA;AAAA,IACE,SAAA,CAAU,kBAAA,CAAmB,EAAA,IAAM,IAAI,CAAA,CAAE,IAAA;AAAA,MACvC,QAAA;AAAA,QACE,aAAA,CAAc,OAAO,GAAA,KAAQ;AAC3B,UAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,GAAG,CAAA;AACvC,UAAA,OAAO;AAAA,YACL,IAAI,GAAA,CAAI,QAAA;AAAA,YACR,cAAA,EAAgB,eAAe,GAAG,CAAA;AAAA,YAClC,SAAA,EAAW,eAAA;AAAA,cAAgB,CAAC,MAAA,EAAQ,IAAA,KAClC,YAAA,CAAa,GAAA,EAAK,QAAQ,IAAI;AAAA,aAChC;AAAA,YACA,KAAA,EAAO,eAAA,CAAgB,CAAC,MAAA,EAAQ,IAAA,MAAU;AAAA,cACxC,MAAA,EAAQ,SAAA;AAAA,gBACN,GAAA;AAAA,gBACA,MAAA;AAAA,gBACA,IAAA;AAAA,gBACA,OAAO,KAAA,CAAM,MAAM,CAAA,CAAE,IAAI,EAAE,IAAA,CAAK;AAAA;AAClC,aACF,CAAE,CAAA;AAAA,YACF,EAAA,EAAI,eAAA,CAAgB,CAAC,MAAA,EAAQ,IAAA,MAAU;AAAA,cACrC,cAAA,EAAgB,CAAC,GAAA,KACf,WAAA;AAAA,gBACE,GAAA,CAAI,cAAA;AAAA,gBACJ,MAAA,CAAO,EAAA,CAAG,MAAM,CAAA,CAAE,IAAI,CAAA,CAAE,iBAAA;AAAA,gBACxB,MAAA;AAAA,gBACA,IAAA;AAAA,gBACA;AAAA;AACF,aACJ,CAAE,CAAA;AAAA,YACF;AAAA,WACF;AAAA,QACF,CAAC;AAAA;AACH,KACF;AAAA,IACA;AAAA,GACF;AACJ;;;;"}
|
package/dist/esm/src/tx/tx.mjs
CHANGED
|
@@ -64,7 +64,7 @@ const createTxEntry = (pallet, name, chainHead, broadcast, compatibility, getIsA
|
|
|
64
64
|
return dynamicBuilder.buildDefinition(assetId).enc(asset);
|
|
65
65
|
})
|
|
66
66
|
);
|
|
67
|
-
return (
|
|
67
|
+
return (arg) => {
|
|
68
68
|
const sign$ = (from, { ..._options }, atBlock) => combineLatest([
|
|
69
69
|
getCallData$(arg, atBlock.hash),
|
|
70
70
|
getEncodedAsset$(_options.asset, atBlock.hash)
|
|
@@ -149,7 +149,7 @@ const createTxEntry = (pallet, name, chainHead, broadcast, compatibility, getIsA
|
|
|
149
149
|
signSubmitAndWatch,
|
|
150
150
|
signAndSubmit
|
|
151
151
|
};
|
|
152
|
-
}
|
|
152
|
+
};
|
|
153
153
|
};
|
|
154
154
|
|
|
155
155
|
export { createTxEntry, submit, submit$ };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.mjs","sources":["../../../../src/tx/tx.ts"],"sourcesContent":["import { ValueCompat } from \"@/compatibility\"\nimport { PlainDescriptor } from \"@/descriptors\"\nimport { getCallData } from \"@/utils/get-call-data\"\nimport type {\n BlockInfo,\n ChainHead$,\n RuntimeContext,\n} from \"@polkadot-api/observable-client\"\nimport { PolkadotSigner } from \"@polkadot-api/polkadot-signer\"\nimport { getPolkadotSigner } from \"@polkadot-api/signer\"\nimport {\n _void,\n AccountId,\n compact,\n compactBn,\n Decoder,\n Enum,\n HexString,\n Struct,\n u128,\n u32,\n Variant,\n} from \"@polkadot-api/substrate-bindings\"\nimport { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport {\n combineLatest,\n firstValueFrom,\n map,\n mergeMap,\n Observable,\n of,\n take,\n throwError,\n} from \"rxjs\"\nimport { createTx } from \"./create-tx\"\nimport { InvalidTxError, submit, submit$ } from \"./submit-fns\"\nimport {\n Extensions,\n PaymentInfo,\n Transaction,\n TxEntry,\n TxObservable,\n TxOptions,\n TxPromise,\n TxSignFn,\n} from \"./types\"\n\nexport { InvalidTxError, submit, submit$ }\n\nconst accountIdEnc = AccountId().enc\nconst fakeSignature = new Uint8Array(64)\nconst fakeSignatureEth = new Uint8Array(65)\nconst getFakeSignature = (isEth: boolean) => () =>\n isEth ? fakeSignatureEth : fakeSignature\n\nconst [, queryInfoDecFallback] = Struct({\n weight: Struct({\n ref_time: compactBn,\n proof_size: compactBn,\n }),\n class: Variant({\n Normal: _void,\n Operational: _void,\n Mandatory: _void,\n }),\n partial_fee: u128,\n})\n\nexport const createTxEntry = <\n Arg extends {} | undefined,\n Pallet extends string,\n Name extends string,\n Asset extends PlainDescriptor<any>,\n E,\n>(\n pallet: Pallet,\n name: Name,\n chainHead: ChainHead$,\n broadcast: (tx: Uint8Array) => Observable<never>,\n compatibility: ValueCompat,\n getIsAssetCompat: (ctx: RuntimeContext) => (asset: any) => Boolean,\n): TxEntry<Arg, Pallet, Name, E, Asset> => {\n type Ext = Extensions<E>\n\n const getCompatCtx$ = (at: HexString | null) =>\n combineLatest([chainHead.getRuntimeContext$(at), compatibility]).pipe(\n map(([ctx, getCompat]) => ({\n ctx,\n isAssetCompat: getIsAssetCompat(ctx),\n ...getCompat(ctx),\n })),\n )\n\n const getCallData$ = (arg: any, at: HexString | null) =>\n getCompatCtx$(at).pipe(\n map(\n ({\n ctx: { dynamicBuilder, extVersions },\n isValueCompatible: isCompat,\n }) => {\n const callData = getCallData(\n dynamicBuilder,\n isCompat,\n pallet,\n name,\n arg,\n )\n return {\n callData,\n bare: mergeUint8([\n compact.enc(callData.length + 1),\n new Uint8Array(extVersions.slice(-1)),\n callData,\n ]),\n }\n },\n ),\n )\n\n const getEncodedAsset$ = (\n asset: any,\n at: HexString | null,\n ): Observable<Uint8Array | undefined> =>\n asset === undefined\n ? of(undefined)\n : getCompatCtx$(at).pipe(\n map(({ ctx, isAssetCompat }) => {\n if (!isAssetCompat(asset))\n throw new Error(`Incompatible runtime asset`)\n\n const { dynamicBuilder, assetId } = ctx\n if (!assetId) return undefined\n return dynamicBuilder.buildDefinition(assetId).enc(asset)\n }),\n )\n\n return ((arg?: Arg): Transaction<Arg, Pallet, Name, Asset, Ext> => {\n const sign$ = (\n from: PolkadotSigner,\n { ..._options }: Omit<TxOptions<{}, Ext>, \"at\">,\n atBlock: BlockInfo,\n ) =>\n combineLatest([\n getCallData$(arg, atBlock.hash),\n getEncodedAsset$(_options.asset, atBlock.hash),\n ]).pipe(\n mergeMap(([callData, asset]) =>\n createTx(\n chainHead,\n from,\n callData.callData,\n atBlock,\n (_options.customSignedExtensions as any) || {},\n { ..._options, asset },\n ),\n ),\n )\n\n const _sign = (\n from: PolkadotSigner,\n { at, ..._options }: TxOptions<{}, Ext> = {},\n ) => {\n const atBlock = chainHead.pinnedBlocks$.state.blocks.get(at!)\n if (at && !atBlock)\n return throwError(() => new Error(`Uknown block ${at}`))\n\n return (atBlock ? of(atBlock) : chainHead.finalized$).pipe(\n take(1),\n mergeMap((block) =>\n sign$(from, _options, block).pipe(map((tx) => ({ tx, block }))),\n ),\n )\n }\n\n const sign: TxSignFn<Asset, Ext> = (from, options) =>\n firstValueFrom(_sign(from, options)).then((x) => x.tx)\n\n const signAndSubmit: TxPromise<Asset, Ext> = (from, _options) =>\n firstValueFrom(_sign(from, _options)).then(({ tx, block }) =>\n submit(chainHead, broadcast, tx, block.hash),\n )\n\n const signSubmitAndWatch: TxObservable<Asset, Ext> = (from, _options) =>\n _sign(from, _options).pipe(\n mergeMap(({ tx }) => submit$(chainHead, broadcast, tx, true)),\n )\n\n const getPaymentInfo = async (\n from: Uint8Array | string,\n _options?: any,\n ) => {\n if (typeof from === \"string\")\n from = from.startsWith(\"0x\") ? fromHex(from) : accountIdEnc(from)\n const isEth = from.length === 20\n const fakeSigner = getPolkadotSigner(\n from,\n isEth ? \"Ecdsa\" : \"Sr25519\",\n getFakeSignature(isEth),\n )\n const encoded = await sign(fakeSigner, _options)\n const args = toHex(mergeUint8([encoded, u32.enc(encoded.length)]))\n\n const decoder$: Observable<Decoder<PaymentInfo>> = chainHead\n .getRuntimeContext$(null)\n .pipe(\n map((ctx) => {\n try {\n return ctx.dynamicBuilder.buildRuntimeCall(\n \"TransactionPaymentApi\",\n \"query_info\",\n ).value[1]\n } catch {\n return queryInfoDecFallback\n }\n }),\n )\n\n const call$ = chainHead.call$(\n null,\n \"TransactionPaymentApi_query_info\",\n args,\n )\n\n return firstValueFrom(\n combineLatest([call$, decoder$]).pipe(\n map(([result, decoder]) => decoder(result)),\n ),\n )\n }\n\n const getEncodedData = () =>\n firstValueFrom(\n getCallData$(arg, null).pipe(map(({ callData }) => callData)),\n )\n\n const getEstimatedFees = async (\n from: Uint8Array | string,\n _options?: any,\n ) => (await getPaymentInfo(from, _options)).partial_fee\n\n return {\n getPaymentInfo,\n getEstimatedFees,\n decodedCall: {\n type: pallet,\n value: Enum(name, arg as any),\n },\n getEncodedData,\n getBareTx: () =>\n firstValueFrom(getCallData$(arg, null).pipe(map(({ bare }) => bare))),\n sign,\n signSubmitAndWatch,\n signAndSubmit,\n }\n }) as any\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tx.mjs","sources":["../../../../src/tx/tx.ts"],"sourcesContent":["import { ValueCompat } from \"@/compatibility\"\nimport { PlainDescriptor } from \"@/descriptors\"\nimport { getCallData } from \"@/utils/get-call-data\"\nimport type {\n BlockInfo,\n ChainHead$,\n RuntimeContext,\n} from \"@polkadot-api/observable-client\"\nimport { PolkadotSigner } from \"@polkadot-api/polkadot-signer\"\nimport { getPolkadotSigner } from \"@polkadot-api/signer\"\nimport {\n _void,\n AccountId,\n compact,\n compactBn,\n Decoder,\n Enum,\n HexString,\n Struct,\n u128,\n u32,\n Variant,\n} from \"@polkadot-api/substrate-bindings\"\nimport { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport {\n combineLatest,\n firstValueFrom,\n map,\n mergeMap,\n Observable,\n of,\n take,\n throwError,\n} from \"rxjs\"\nimport { createTx } from \"./create-tx\"\nimport { InvalidTxError, submit, submit$ } from \"./submit-fns\"\nimport {\n Extensions,\n PaymentInfo,\n Transaction,\n TxEntry,\n TxOptions,\n} from \"./types\"\n\nexport { InvalidTxError, submit, submit$ }\n\nconst accountIdEnc = AccountId().enc\nconst fakeSignature = new Uint8Array(64)\nconst fakeSignatureEth = new Uint8Array(65)\nconst getFakeSignature = (isEth: boolean) => () =>\n isEth ? fakeSignatureEth : fakeSignature\n\nconst [, queryInfoDecFallback] = Struct({\n weight: Struct({\n ref_time: compactBn,\n proof_size: compactBn,\n }),\n class: Variant({\n Normal: _void,\n Operational: _void,\n Mandatory: _void,\n }),\n partial_fee: u128,\n})\n\nexport const createTxEntry = <\n Arg extends {} | undefined,\n Asset extends PlainDescriptor<any>,\n E,\n>(\n pallet: string,\n name: string,\n chainHead: ChainHead$,\n broadcast: (tx: Uint8Array) => Observable<never>,\n compatibility: ValueCompat,\n getIsAssetCompat: (ctx: RuntimeContext) => (asset: any) => Boolean,\n): TxEntry<Arg, E, Asset> => {\n type Ext = Extensions<E>\n\n const getCompatCtx$ = (at: HexString | null) =>\n combineLatest([chainHead.getRuntimeContext$(at), compatibility]).pipe(\n map(([ctx, getCompat]) => ({\n ctx,\n isAssetCompat: getIsAssetCompat(ctx),\n ...getCompat(ctx),\n })),\n )\n\n const getCallData$ = (arg: any, at: HexString | null) =>\n getCompatCtx$(at).pipe(\n map(\n ({\n ctx: { dynamicBuilder, extVersions },\n isValueCompatible: isCompat,\n }) => {\n const callData = getCallData(\n dynamicBuilder,\n isCompat,\n pallet,\n name,\n arg,\n )\n return {\n callData,\n bare: mergeUint8([\n compact.enc(callData.length + 1),\n new Uint8Array(extVersions.slice(-1)),\n callData,\n ]),\n }\n },\n ),\n )\n\n const getEncodedAsset$ = (\n asset: any,\n at: HexString | null,\n ): Observable<Uint8Array | undefined> =>\n asset === undefined\n ? of(undefined)\n : getCompatCtx$(at).pipe(\n map(({ ctx, isAssetCompat }) => {\n if (!isAssetCompat(asset))\n throw new Error(`Incompatible runtime asset`)\n\n const { dynamicBuilder, assetId } = ctx\n if (!assetId) return undefined\n return dynamicBuilder.buildDefinition(assetId).enc(asset)\n }),\n )\n\n return (arg?: Arg): Transaction<Asset, Ext> => {\n const sign$ = (\n from: PolkadotSigner,\n { ..._options }: Omit<TxOptions<{}, Ext>, \"at\">,\n atBlock: BlockInfo,\n ) =>\n combineLatest([\n getCallData$(arg, atBlock.hash),\n getEncodedAsset$(_options.asset, atBlock.hash),\n ]).pipe(\n mergeMap(([callData, asset]) =>\n createTx(\n chainHead,\n from,\n callData.callData,\n atBlock,\n (_options.customSignedExtensions as any) || {},\n { ..._options, asset },\n ),\n ),\n )\n\n const _sign = (\n from: PolkadotSigner,\n { at, ..._options }: TxOptions<{}, Ext> = {},\n ) => {\n const atBlock = chainHead.pinnedBlocks$.state.blocks.get(at!)\n if (at && !atBlock)\n return throwError(() => new Error(`Uknown block ${at}`))\n\n return (atBlock ? of(atBlock) : chainHead.finalized$).pipe(\n take(1),\n mergeMap((block) =>\n sign$(from, _options, block).pipe(map((tx) => ({ tx, block }))),\n ),\n )\n }\n\n const sign: Transaction<Asset, Ext>[\"sign\"] = (from, options) =>\n firstValueFrom(_sign(from, options)).then((x) => x.tx)\n\n const signAndSubmit: Transaction<Asset, Ext>[\"signAndSubmit\"] = (\n from,\n _options,\n ) =>\n firstValueFrom(_sign(from, _options)).then(({ tx, block }) =>\n submit(chainHead, broadcast, tx, block.hash),\n )\n\n const signSubmitAndWatch: Transaction<Asset, Ext>[\"signSubmitAndWatch\"] = (\n from,\n _options,\n ) =>\n _sign(from, _options).pipe(\n mergeMap(({ tx }) => submit$(chainHead, broadcast, tx, true)),\n )\n\n const getPaymentInfo = async (\n from: Uint8Array | string,\n _options?: any,\n ) => {\n if (typeof from === \"string\")\n from = from.startsWith(\"0x\") ? fromHex(from) : accountIdEnc(from)\n const isEth = from.length === 20\n const fakeSigner = getPolkadotSigner(\n from,\n isEth ? \"Ecdsa\" : \"Sr25519\",\n getFakeSignature(isEth),\n )\n const encoded = await sign(fakeSigner, _options)\n const args = toHex(mergeUint8([encoded, u32.enc(encoded.length)]))\n\n const decoder$: Observable<Decoder<PaymentInfo>> = chainHead\n .getRuntimeContext$(null)\n .pipe(\n map((ctx) => {\n try {\n return ctx.dynamicBuilder.buildRuntimeCall(\n \"TransactionPaymentApi\",\n \"query_info\",\n ).value[1]\n } catch {\n return queryInfoDecFallback\n }\n }),\n )\n\n const call$ = chainHead.call$(\n null,\n \"TransactionPaymentApi_query_info\",\n args,\n )\n\n return firstValueFrom(\n combineLatest([call$, decoder$]).pipe(\n map(([result, decoder]) => decoder(result)),\n ),\n )\n }\n\n const getEncodedData = () =>\n firstValueFrom(\n getCallData$(arg, null).pipe(map(({ callData }) => callData)),\n )\n\n const getEstimatedFees = async (\n from: Uint8Array | string,\n _options?: any,\n ) => (await getPaymentInfo(from, _options)).partial_fee\n\n return {\n getPaymentInfo,\n getEstimatedFees,\n decodedCall: {\n type: pallet,\n value: Enum(name, arg),\n },\n getEncodedData,\n getBareTx: () =>\n firstValueFrom(getCallData$(arg, null).pipe(map(({ bare }) => bare))),\n sign,\n signSubmitAndWatch,\n signAndSubmit,\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/reexports/ws.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as PolkadotClient } from '../types-
|
|
1
|
+
import { P as PolkadotClient } from '../types-sRmpUhNh.js';
|
|
2
2
|
import * as _polkadot_api_ws_provider from '@polkadot-api/ws-provider';
|
|
3
3
|
import { StatusChange, WebSocketClass, SocketLoggerFn } from '@polkadot-api/ws-provider';
|
|
4
4
|
export { SocketEvents, SocketLoggerFn, StatusChange, WebSocketClass, WsClose, WsConnected, WsConnecting, WsError, WsEvent, WsJsonRpcProvider } from '@polkadot-api/ws-provider';
|
package/dist/src/client.js
CHANGED
|
@@ -22,11 +22,9 @@ var submitFns = require('./tx/submit-fns.js');
|
|
|
22
22
|
|
|
23
23
|
const HEX_REGEX = /^(?:0x)?((?:[0-9a-fA-F][0-9a-fA-F])+)$/;
|
|
24
24
|
const createApi = (chainHead, broadcast$, chainDefinition) => {
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
getSyncHelpers
|
|
29
|
-
);
|
|
25
|
+
const compatHelpers = compatibility.createCompatHelpers(chainDefinition);
|
|
26
|
+
const { getClientCompat, getIsAsssetCompat } = compatHelpers;
|
|
27
|
+
const getStaticApis = staticApis.createStaticApis(chainHead, broadcast$, compatHelpers);
|
|
30
28
|
const getWatchEntries = watchEntries.createWatchEntries(
|
|
31
29
|
chainHead.pinnedBlocks$,
|
|
32
30
|
chainHead.storage$,
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sources":["../../src/client.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport {\n BlockInfo,\n ChainHead$,\n getObservableClient,\n withArchive,\n} from \"@polkadot-api/observable-client\"\nimport { Binary, HexString } from \"@polkadot-api/substrate-bindings\"\nimport {\n SubstrateClient,\n UnsubscribeFn,\n createClient as createRawClient,\n} from \"@polkadot-api/substrate-client\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport {\n Observable,\n catchError,\n combineLatest,\n defer,\n firstValueFrom,\n from,\n map,\n shareReplay,\n} from \"rxjs\"\nimport { createCompatHelpers } from \"./compatibility\"\nimport { createConstantEntry } from \"./constants\"\nimport { ChainDefinition } from \"./descriptors\"\nimport { createEventEntry } from \"./event\"\nimport { createRuntimeCallEntry } from \"./runtime-call\"\nimport { createStaticApis } from \"./static-apis\"\nimport { createStorageEntry } from \"./storage\"\nimport { createTxEntry, submit, submit$ } from \"./tx\"\nimport type { PolkadotClient, TypedApi } from \"./types\"\nimport { createProxyPath, firstValueFromWithSignal } from \"./utils\"\nimport { createViewFnEntry } from \"./viewFns\"\nimport { createWatchEntries } from \"./watch-entries\"\n\nconst HEX_REGEX = /^(?:0x)?((?:[0-9a-fA-F][0-9a-fA-F])+)$/\n\nconst createApi = <D extends ChainDefinition>(\n chainHead: ChainHead$,\n broadcast$: (tx: Uint8Array) => Observable<never>,\n chainDefinition?: ChainDefinition,\n): TypedApi<D> => {\n const { getClientCompat, getIsAsssetCompat, getSyncHelpers } =\n createCompatHelpers(chainDefinition)\n\n const getStaticApis = createStaticApis(\n chainHead.getRuntimeContext$,\n getSyncHelpers,\n )\n\n const getWatchEntries = createWatchEntries(\n chainHead.pinnedBlocks$,\n chainHead.storage$,\n chainHead.withRuntime,\n )\n\n const query = createProxyPath((pallet, name) =>\n createStorageEntry(\n pallet,\n name,\n chainHead,\n getWatchEntries,\n getClientCompat(\"query\", pallet, name),\n ),\n )\n\n const tx = createProxyPath((pallet, name) =>\n createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n ),\n )\n\n const event = createProxyPath((pallet, name) =>\n createEventEntry(\n pallet,\n name,\n chainHead,\n getClientCompat(\"event\", pallet, name),\n ),\n )\n\n const constants = createProxyPath((pallet, name) =>\n createConstantEntry(\n pallet,\n name,\n chainHead,\n getClientCompat(\"constants\", pallet, name),\n ),\n )\n\n const apis = createProxyPath((api, method) =>\n createRuntimeCallEntry(\n api,\n method,\n chainHead,\n getClientCompat(\"apis\", api, method),\n ),\n )\n\n const view = createProxyPath((pallet, entry) =>\n createViewFnEntry(\n pallet,\n entry,\n chainHead,\n getClientCompat(\"view\", pallet, entry),\n ),\n )\n\n const txFromCallData = (\n callData: Uint8Array,\n { at, signal }: Partial<{ at: string; signal: AbortSignal }> = {},\n ) =>\n firstValueFromWithSignal(\n chainHead.getRuntimeContext$(at ?? null).pipe(\n map(({ dynamicBuilder, lookup }) => {\n try {\n const {\n type: pallet,\n value: { type: name, value: args },\n } = dynamicBuilder.buildDefinition(lookup.call!).dec(callData)\n\n return createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n )(args)\n } catch {\n throw new Error(\"createTx: invalid call data\")\n }\n }),\n ),\n signal,\n )\n\n return {\n tx,\n constants,\n apis,\n view,\n query,\n event,\n txFromCallData,\n getStaticApis,\n } as any\n}\n\nexport type CreateClientOptions = Partial<{\n getMetadata: (codeHash: HexString) => Promise<Uint8Array | null>\n setMetadata: (codeHash: HexString, metadata: Uint8Array) => void\n}>\n\n/**\n * This is the top-level export for `polkadot-api`.\n *\n * @param provider A `JsonRpcProvider` compliant with the [JSON-RPC\n * spec](https://paritytech.github.io/json-rpc-interface-spec/),\n * which must support the `chainHead`, `transaction` and\n * `chainSpec` groups.\n * @param options - *(Optional)* An object that allows customization of\n * metadata handling.\n * You can supply functions to retrieve and/or persist the\n * metadata associated with runtime `codeHash` values:\n *\n * - `getMetadata`: A function that, given a `codeHash` (the\n * `:code:` hash),\n * returns a `Promise` resolving to a `Uint8Array`\n * representing the metadata,\n * or `null` if unavailable.\n * - `setMetadata`: A function that accepts a `codeHash` and\n * its associated `Uint8Array` metadata,\n * allowing you to persist the metadata (e.g., in a cache or\n * local store).\n * @example\n *\n * import { getMetadata } from \"@polkadot-api/descriptors\"\n * import { createClient } from \"polkadot-api\"\n * import { getSmProvider } from \"polkadot-api/sm-provider\"\n * import { chainSpec } from \"polkadot-api/chains/polkadot\"\n * import { start } from \"polkadot-api/smoldot\"\n *\n * const smoldot = start()\n * const chain = await smoldot.addChain({ chainSpec })\n *\n * // Connect to the polkadot relay chain.\n * const client = createClient(getSmProvider(chain), { getMetadata })\n *\n */\nexport function createClient(\n provider: JsonRpcProvider,\n { getMetadata, setMetadata }: CreateClientOptions = {},\n): PolkadotClient {\n const rawClient: SubstrateClient = createRawClient(provider)\n const client = getObservableClient(rawClient, {\n getMetadata: getMetadata\n ? (codeHash: string) => from(getMetadata(codeHash))\n : undefined,\n setMetadata,\n })\n const { getChainSpecData } = rawClient\n\n const withArchiveBlock =\n <T extends any[], R>(\n fn: (blockHash: string, ...args: T) => Observable<R>,\n ) =>\n (\n blockHash: string,\n ...args: T\n ): Observable<{ value: R; block: BlockInfo }> =>\n combineLatest([\n fn(blockHash, ...args),\n archive.header$(blockHash).pipe(\n map(({ number, parentHash }) => ({\n hash: blockHash,\n number,\n parent: parentHash,\n // Not correct, but it would be overkill to fix. Only relevant on chainHead, not on archive.\n hasNewRuntime: false,\n })),\n ),\n ]).pipe(map(([value, block]) => ({ value, block })))\n\n const { genesis$, ..._chainHead } = client.chainHead$()\n const archive = client.archive(_chainHead.getRuntime$)\n const chainHead: ChainHead$ = {\n ..._chainHead,\n genesis$: defer(getChainSpecData).pipe(\n map(({ genesisHash }) => genesisHash),\n catchError(() => genesis$),\n shareReplay(1),\n ),\n storage$: withArchive(\n _chainHead.storage$,\n withArchiveBlock(archive.storage$),\n ),\n body$: withArchive(_chainHead.body$, archive.body$),\n call$: withArchive(_chainHead.call$, archive.call$),\n header$: withArchive(_chainHead.header$, archive.header$),\n eventsAt$: withArchive(_chainHead.eventsAt$, archive.eventsAt$),\n storageQueries$: withArchive(\n _chainHead.storageQueries$,\n archive.storageQueries$,\n ),\n getRuntimeContext$: withArchive(\n _chainHead.getRuntimeContext$,\n archive.getRuntimeContext$,\n ),\n }\n\n const _request: <Reply = any, Params extends Array<any> = any[]>(\n method: string,\n params: Params,\n ) => Promise<Reply> = rawClient.request\n\n const _subscribe: PolkadotClient[\"_subscribe\"] = (\n method,\n unsubscribeMethod,\n params,\n ) =>\n new Observable((obs) => {\n let unsubInner: UnsubscribeFn | null = null\n let subId: string | null = null\n\n const sendUnsubscribe = () => {\n // Fire-and-forget\n subId != null && rawClient.request(unsubscribeMethod, [subId])\n }\n\n rawClient._request(method, params, {\n onSuccess: (res: string, follow) => {\n subId = res\n if (obs.closed) {\n sendUnsubscribe()\n return\n }\n unsubInner = follow(subId, {\n next: (data: any) => obs.next(data),\n error: (e) => obs.error(e),\n })\n },\n onError(e) {\n obs.error(e)\n },\n })\n\n return () => {\n sendUnsubscribe()\n unsubInner?.()\n }\n })\n\n let unsafeApi: TypedApi<any, false>\n const typedApis = new WeakMap<ChainDefinition, TypedApi<any, true>>()\n\n const { broadcastTx$ } = client\n\n const getMetadata$ = (at: HexString) =>\n chainHead.getRuntimeContext$(at).pipe(map((ctx) => ctx.metadataRaw))\n\n const {\n holdBlock,\n finalized$,\n bestBlocks$,\n body$,\n header$,\n storage$,\n unfollow,\n } = chainHead\n\n const result: PolkadotClient = {\n getChainSpecData,\n\n getMetadata$,\n getMetadata: (atBlock: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(getMetadata$(atBlock), signal),\n\n blocks$: chainHead.newBlocks$,\n hodlBlock: (block: HexString) => holdBlock(block, true),\n\n finalizedBlock$: finalized$,\n getFinalizedBlock: () => firstValueFrom(finalized$),\n\n bestBlocks$: chainHead.bestBlocks$,\n getBestBlocks: () => firstValueFrom(bestBlocks$),\n\n getBlockBody$: body$,\n getBlockBody: (hash: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(body$(hash), signal),\n\n getBlockHeader$: header$,\n getBlockHeader: (hash: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(header$(hash), signal),\n\n submit: (...args) => submit(chainHead, broadcastTx$, ...args),\n submitAndWatch: (tx) => submit$(chainHead, broadcastTx$, tx),\n\n getTypedApi: <D extends ChainDefinition>(chainDefinition: D) => {\n if (typedApis.has(chainDefinition)) return typedApis.get(chainDefinition)!\n const api = createApi<D>(chainHead, broadcastTx$)\n\n typedApis.set(chainDefinition, api)\n return api\n },\n\n getUnsafeApi: <D extends ChainDefinition>() => {\n unsafeApi ??= createApi<D>(chainHead, broadcastTx$)\n return unsafeApi\n },\n\n rawQuery: (key, { at, signal } = {}) =>\n firstValueFromWithSignal(\n storage$(at ?? null, \"value\", () => {\n const hex = key.match(HEX_REGEX)?.[1]\n return hex ? `0x${hex}` : toHex(Binary.fromText(key))\n }).pipe(map((v) => v.value)),\n signal,\n ),\n\n destroy: () => {\n unfollow()\n client.destroy()\n },\n\n _request,\n _subscribe,\n }\n\n ;(result as any).___INTERNAL_DO_NOT_USE = chainHead\n\n return result\n}\n"],"names":["createCompatHelpers","createStaticApis","createWatchEntries","createProxyPath","createStorageEntry","tx","createTxEntry","event","createEventEntry","constants","createConstantEntry","createRuntimeCallEntry","createViewFnEntry","firstValueFromWithSignal","map","createRawClient","getObservableClient","from","combineLatest","defer","catchError","shareReplay","withArchive","Observable","firstValueFrom","submit","submit$","toHex","Binary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sources":["../../src/client.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport {\n BlockInfo,\n ChainHead$,\n getObservableClient,\n withArchive,\n} from \"@polkadot-api/observable-client\"\nimport { Binary, HexString } from \"@polkadot-api/substrate-bindings\"\nimport {\n SubstrateClient,\n UnsubscribeFn,\n createClient as createRawClient,\n} from \"@polkadot-api/substrate-client\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport {\n Observable,\n catchError,\n combineLatest,\n defer,\n firstValueFrom,\n from,\n map,\n shareReplay,\n} from \"rxjs\"\nimport { createCompatHelpers } from \"./compatibility\"\nimport { createConstantEntry } from \"./constants\"\nimport { ChainDefinition } from \"./descriptors\"\nimport { createEventEntry } from \"./event\"\nimport { createRuntimeCallEntry } from \"./runtime-call\"\nimport { createStaticApis } from \"./static-apis\"\nimport { createStorageEntry } from \"./storage\"\nimport { createTxEntry, submit, submit$ } from \"./tx\"\nimport type { PolkadotClient, TypedApi } from \"./types\"\nimport { createProxyPath, firstValueFromWithSignal } from \"./utils\"\nimport { createViewFnEntry } from \"./viewFns\"\nimport { createWatchEntries } from \"./watch-entries\"\n\nconst HEX_REGEX = /^(?:0x)?((?:[0-9a-fA-F][0-9a-fA-F])+)$/\n\nconst createApi = <D extends ChainDefinition>(\n chainHead: ChainHead$,\n broadcast$: (tx: Uint8Array) => Observable<never>,\n chainDefinition?: ChainDefinition,\n): TypedApi<D> => {\n const compatHelpers = createCompatHelpers(chainDefinition)\n const { getClientCompat, getIsAsssetCompat } = compatHelpers\n\n const getStaticApis = createStaticApis(chainHead, broadcast$, compatHelpers)\n\n const getWatchEntries = createWatchEntries(\n chainHead.pinnedBlocks$,\n chainHead.storage$,\n chainHead.withRuntime,\n )\n\n const query = createProxyPath((pallet, name) =>\n createStorageEntry(\n pallet,\n name,\n chainHead,\n getWatchEntries,\n getClientCompat(\"query\", pallet, name),\n ),\n )\n\n const tx = createProxyPath((pallet, name) =>\n createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n ),\n )\n\n const event = createProxyPath((pallet, name) =>\n createEventEntry(\n pallet,\n name,\n chainHead,\n getClientCompat(\"event\", pallet, name),\n ),\n )\n\n const constants = createProxyPath((pallet, name) =>\n createConstantEntry(\n pallet,\n name,\n chainHead,\n getClientCompat(\"constants\", pallet, name),\n ),\n )\n\n const apis = createProxyPath((api, method) =>\n createRuntimeCallEntry(\n api,\n method,\n chainHead,\n getClientCompat(\"apis\", api, method),\n ),\n )\n\n const view = createProxyPath((pallet, entry) =>\n createViewFnEntry(\n pallet,\n entry,\n chainHead,\n getClientCompat(\"view\", pallet, entry),\n ),\n )\n\n const txFromCallData = (\n callData: Uint8Array,\n { at, signal }: Partial<{ at: string; signal: AbortSignal }> = {},\n ) =>\n firstValueFromWithSignal(\n chainHead.getRuntimeContext$(at ?? null).pipe(\n map(({ dynamicBuilder, lookup }) => {\n try {\n const {\n type: pallet,\n value: { type: name, value: args },\n } = dynamicBuilder.buildDefinition(lookup.call!).dec(callData)\n\n return createTxEntry(\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\n getIsAsssetCompat,\n )(args)\n } catch {\n throw new Error(\"createTx: invalid call data\")\n }\n }),\n ),\n signal,\n )\n\n return {\n tx,\n constants,\n apis,\n view,\n query,\n event,\n txFromCallData,\n getStaticApis,\n } as any\n}\n\nexport type CreateClientOptions = Partial<{\n getMetadata: (codeHash: HexString) => Promise<Uint8Array | null>\n setMetadata: (codeHash: HexString, metadata: Uint8Array) => void\n}>\n\n/**\n * This is the top-level export for `polkadot-api`.\n *\n * @param provider A `JsonRpcProvider` compliant with the [JSON-RPC\n * spec](https://paritytech.github.io/json-rpc-interface-spec/),\n * which must support the `chainHead`, `transaction` and\n * `chainSpec` groups.\n * @param options - *(Optional)* An object that allows customization of\n * metadata handling.\n * You can supply functions to retrieve and/or persist the\n * metadata associated with runtime `codeHash` values:\n *\n * - `getMetadata`: A function that, given a `codeHash` (the\n * `:code:` hash),\n * returns a `Promise` resolving to a `Uint8Array`\n * representing the metadata,\n * or `null` if unavailable.\n * - `setMetadata`: A function that accepts a `codeHash` and\n * its associated `Uint8Array` metadata,\n * allowing you to persist the metadata (e.g., in a cache or\n * local store).\n * @example\n *\n * import { getMetadata } from \"@polkadot-api/descriptors\"\n * import { createClient } from \"polkadot-api\"\n * import { getSmProvider } from \"polkadot-api/sm-provider\"\n * import { chainSpec } from \"polkadot-api/chains/polkadot\"\n * import { start } from \"polkadot-api/smoldot\"\n *\n * const smoldot = start()\n * const chain = await smoldot.addChain({ chainSpec })\n *\n * // Connect to the polkadot relay chain.\n * const client = createClient(getSmProvider(chain), { getMetadata })\n *\n */\nexport function createClient(\n provider: JsonRpcProvider,\n { getMetadata, setMetadata }: CreateClientOptions = {},\n): PolkadotClient {\n const rawClient: SubstrateClient = createRawClient(provider)\n const client = getObservableClient(rawClient, {\n getMetadata: getMetadata\n ? (codeHash: string) => from(getMetadata(codeHash))\n : undefined,\n setMetadata,\n })\n const { getChainSpecData } = rawClient\n\n const withArchiveBlock =\n <T extends any[], R>(\n fn: (blockHash: string, ...args: T) => Observable<R>,\n ) =>\n (\n blockHash: string,\n ...args: T\n ): Observable<{ value: R; block: BlockInfo }> =>\n combineLatest([\n fn(blockHash, ...args),\n archive.header$(blockHash).pipe(\n map(({ number, parentHash }) => ({\n hash: blockHash,\n number,\n parent: parentHash,\n // Not correct, but it would be overkill to fix. Only relevant on chainHead, not on archive.\n hasNewRuntime: false,\n })),\n ),\n ]).pipe(map(([value, block]) => ({ value, block })))\n\n const { genesis$, ..._chainHead } = client.chainHead$()\n const archive = client.archive(_chainHead.getRuntime$)\n const chainHead: ChainHead$ = {\n ..._chainHead,\n genesis$: defer(getChainSpecData).pipe(\n map(({ genesisHash }) => genesisHash),\n catchError(() => genesis$),\n shareReplay(1),\n ),\n storage$: withArchive(\n _chainHead.storage$,\n withArchiveBlock(archive.storage$),\n ),\n body$: withArchive(_chainHead.body$, archive.body$),\n call$: withArchive(_chainHead.call$, archive.call$),\n header$: withArchive(_chainHead.header$, archive.header$),\n eventsAt$: withArchive(_chainHead.eventsAt$, archive.eventsAt$),\n storageQueries$: withArchive(\n _chainHead.storageQueries$,\n archive.storageQueries$,\n ),\n getRuntimeContext$: withArchive(\n _chainHead.getRuntimeContext$,\n archive.getRuntimeContext$,\n ),\n }\n\n const _request: <Reply = any, Params extends Array<any> = any[]>(\n method: string,\n params: Params,\n ) => Promise<Reply> = rawClient.request\n\n const _subscribe: PolkadotClient[\"_subscribe\"] = (\n method,\n unsubscribeMethod,\n params,\n ) =>\n new Observable((obs) => {\n let unsubInner: UnsubscribeFn | null = null\n let subId: string | null = null\n\n const sendUnsubscribe = () => {\n // Fire-and-forget\n subId != null && rawClient.request(unsubscribeMethod, [subId])\n }\n\n rawClient._request(method, params, {\n onSuccess: (res: string, follow) => {\n subId = res\n if (obs.closed) {\n sendUnsubscribe()\n return\n }\n unsubInner = follow(subId, {\n next: (data: any) => obs.next(data),\n error: (e) => obs.error(e),\n })\n },\n onError(e) {\n obs.error(e)\n },\n })\n\n return () => {\n sendUnsubscribe()\n unsubInner?.()\n }\n })\n\n let unsafeApi: TypedApi<any, false>\n const typedApis = new WeakMap<ChainDefinition, TypedApi<any, true>>()\n\n const { broadcastTx$ } = client\n\n const getMetadata$ = (at: HexString) =>\n chainHead.getRuntimeContext$(at).pipe(map((ctx) => ctx.metadataRaw))\n\n const {\n holdBlock,\n finalized$,\n bestBlocks$,\n body$,\n header$,\n storage$,\n unfollow,\n } = chainHead\n\n const result: PolkadotClient = {\n getChainSpecData,\n\n getMetadata$,\n getMetadata: (atBlock: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(getMetadata$(atBlock), signal),\n\n blocks$: chainHead.newBlocks$,\n hodlBlock: (block: HexString) => holdBlock(block, true),\n\n finalizedBlock$: finalized$,\n getFinalizedBlock: () => firstValueFrom(finalized$),\n\n bestBlocks$: chainHead.bestBlocks$,\n getBestBlocks: () => firstValueFrom(bestBlocks$),\n\n getBlockBody$: body$,\n getBlockBody: (hash: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(body$(hash), signal),\n\n getBlockHeader$: header$,\n getBlockHeader: (hash: HexString, signal?: AbortSignal) =>\n firstValueFromWithSignal(header$(hash), signal),\n\n submit: (...args) => submit(chainHead, broadcastTx$, ...args),\n submitAndWatch: (tx) => submit$(chainHead, broadcastTx$, tx),\n\n getTypedApi: <D extends ChainDefinition>(chainDefinition: D) => {\n if (typedApis.has(chainDefinition)) return typedApis.get(chainDefinition)!\n const api = createApi<D>(chainHead, broadcastTx$)\n\n typedApis.set(chainDefinition, api)\n return api\n },\n\n getUnsafeApi: <D extends ChainDefinition>() => {\n unsafeApi ??= createApi<D>(chainHead, broadcastTx$)\n return unsafeApi\n },\n\n rawQuery: (key, { at, signal } = {}) =>\n firstValueFromWithSignal(\n storage$(at ?? null, \"value\", () => {\n const hex = key.match(HEX_REGEX)?.[1]\n return hex ? `0x${hex}` : toHex(Binary.fromText(key))\n }).pipe(map((v) => v.value)),\n signal,\n ),\n\n destroy: () => {\n unfollow()\n client.destroy()\n },\n\n _request,\n _subscribe,\n }\n\n ;(result as any).___INTERNAL_DO_NOT_USE = chainHead\n\n return result\n}\n"],"names":["createCompatHelpers","createStaticApis","createWatchEntries","createProxyPath","createStorageEntry","tx","createTxEntry","event","createEventEntry","constants","createConstantEntry","createRuntimeCallEntry","createViewFnEntry","firstValueFromWithSignal","map","createRawClient","getObservableClient","from","combineLatest","defer","catchError","shareReplay","withArchive","Observable","firstValueFrom","submit","submit$","toHex","Binary"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.js","sources":["../../../src/compatibility/compatibility.ts"],"sourcesContent":["import { RuntimeContext } from \"@polkadot-api/observable-client\"\nimport {\n CompatibilityCache,\n CompatibilityLevel,\n EntryPoint,\n entryPointsAreCompatible,\n TypedefNode,\n valueIsCompatibleWithDest,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { ChainDefinition } from \"@/descriptors\"\nimport {\n CompatCtx,\n getDestCompatCtx,\n getEntryAndGetter,\n getUserCompatCtx,\n OpType,\n} from \"./compat-ctx\"\nimport { createProxyPath } from \"@/utils\"\nimport { withWeakCache } from \"@/utils/with-weak-cache\"\n\nexport type CompatApi<T> = Promise<(ctx: RuntimeContext) => T>\nexport type CompatHelper<T = any> = {\n level: CompatibilityLevel\n isCompatible: (from?: CompatibilityLevel) => boolean\n isValueCompatible: (dest: T) => boolean\n}\nexport type ArgsValueCompatHelper<Args = any, Value = any> = {\n args: CompatHelper<Args>\n value: CompatHelper<Value>\n isCompatible: (from?: CompatibilityLevel) => boolean\n}\nexport type ValueCompat = CompatApi<CompatHelper>\nexport type InOutCompat = CompatApi<ArgsValueCompatHelper>\nexport type ConstCompat = Promise<(dest: any) => boolean>\n\nconst incompatible: CompatHelper = {\n level: CompatibilityLevel.Incompatible,\n isCompatible: () => false,\n isValueCompatible: () => false,\n}\nconst inOutIncompat: ArgsValueCompatHelper = {\n args: incompatible,\n value: incompatible,\n isCompatible: () => false,\n}\n\nconst identical: CompatHelper = {\n level: CompatibilityLevel.Identical,\n isCompatible: () => true,\n isValueCompatible: () => true,\n}\n\nconst getIsApiCompatible =\n (currentLevel: CompatibilityLevel) =>\n (target = CompatibilityLevel.BackwardsCompatible) =>\n currentLevel >= target\n\nconst getCompatibilityHelper = <K extends OpType>(\n kind: OpType,\n cache: CompatibilityCache,\n user: {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n } | null,\n dest: {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n },\n): K extends OpType.Tx | OpType.Event | OpType.Const\n ? CompatHelper\n : ArgsValueCompatHelper => {\n let result: { args: CompatHelper; value: CompatHelper }\n\n if (!dest.entry) result = inOutIncompat\n else {\n const { args } = dest.entry\n\n const _isCompat = (value: any) =>\n valueIsCompatibleWithDest(args, dest.getter, value)\n const isValueCompatible =\n kind === OpType.Storage\n ? (value: any[]) => _isCompat(value.length === 1 ? value[0] : value)\n : _isCompat\n\n if (!user?.entry) {\n const level = CompatibilityLevel.Partial\n result = {\n args: {\n level,\n isValueCompatible,\n isCompatible: getIsApiCompatible(level),\n },\n value: user ? incompatible : identical,\n }\n } else {\n const { values: userValues } = user.entry\n\n const { args, values } = entryPointsAreCompatible(\n user.entry,\n user.getter,\n dest.entry,\n dest.getter,\n cache,\n )\n\n result = {\n args: {\n level: args.level,\n isValueCompatible,\n isCompatible: getIsApiCompatible(args.level),\n },\n value:\n values.level === CompatibilityLevel.Incompatible\n ? incompatible\n : {\n level: values.level,\n isValueCompatible:\n values.level > CompatibilityLevel.Partial\n ? () => true\n : (val) =>\n valueIsCompatibleWithDest(userValues, user.getter, val),\n isCompatible: getIsApiCompatible(values.level),\n },\n }\n }\n }\n\n if (kind === OpType.Storage || kind === OpType.Api || kind === OpType.ViewFns)\n return Object.assign(result, {\n isCompatible: getIsApiCompatible(\n Math.min(result.args.level, result.value.level),\n ),\n }) as any\n\n return (kind === OpType.Tx ? result.args : result.value) as any\n}\n\nexport const createCompatHelpers = withWeakCache(\n (descriptors?: ChainDefinition) => {\n let userCtx: CompatCtx | null = null\n const awaitedUserCtx: Promise<CompatCtx | null> = (\n descriptors ? getUserCompatCtx(descriptors) : Promise.resolve(null)\n ).then((x) => (userCtx = x))\n\n // before calling this function we must await on `awaitedUserCtx`\n const getHelpers = withWeakCache((runtimeCtx: RuntimeContext) => {\n const cache = new Map()\n const destCtx = getDestCompatCtx(runtimeCtx)\n const getCompat = <K extends OpType>(kind: K) =>\n createProxyPath(\n (\n group: string,\n name: string,\n ): K extends OpType.Tx | OpType.Event | OpType.Const\n ? CompatHelper\n : ArgsValueCompatHelper =>\n getCompatibilityHelper(\n kind,\n cache,\n getEntryAndGetter(userCtx, kind, group, name),\n getEntryAndGetter(destCtx, kind, group, name),\n ),\n )\n\n return {\n tx: getCompat(OpType.Tx),\n constants: getCompat(OpType.Const),\n apis: getCompat(OpType.Api),\n view: getCompat(OpType.ViewFns),\n query: getCompat(OpType.Storage),\n event: getCompat(OpType.Event),\n }\n })\n\n const getClientCompat = async <\n K extends \"tx\" | \"constants\" | \"apis\" | \"view\" | \"query\" | \"event\",\n >(\n kind: K,\n group: string,\n name: string,\n ): CompatApi<\n K extends \"tx\" | \"event\" | \"constants\"\n ? CompatHelper\n : ArgsValueCompatHelper\n > => {\n await awaitedUserCtx\n return (ctx: RuntimeContext) => getHelpers(ctx)[kind][group][name] as any\n }\n\n return {\n getSyncHelpers: async (ctx: RuntimeContext) => {\n await awaitedUserCtx\n return getHelpers(ctx)\n },\n getClientCompat,\n getIsAsssetCompat: (ctx: RuntimeContext) =>\n getDestCompatCtx(ctx).isAssetCompat,\n }\n },\n)\n\nexport type CompatSyncHelpers = ReturnType<\n typeof createCompatHelpers\n>[\"getSyncHelpers\"]\n"],"names":["CompatibilityLevel","valueIsCompatibleWithDest","OpType","args","entryPointsAreCompatible","withWeakCache","getUserCompatCtx","getDestCompatCtx","createProxyPath","getEntryAndGetter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compatibility.js","sources":["../../../src/compatibility/compatibility.ts"],"sourcesContent":["import { RuntimeContext } from \"@polkadot-api/observable-client\"\nimport {\n CompatibilityCache,\n CompatibilityLevel,\n EntryPoint,\n entryPointsAreCompatible,\n TypedefNode,\n valueIsCompatibleWithDest,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { ChainDefinition } from \"@/descriptors\"\nimport {\n CompatCtx,\n getDestCompatCtx,\n getEntryAndGetter,\n getUserCompatCtx,\n OpType,\n} from \"./compat-ctx\"\nimport { createProxyPath } from \"@/utils\"\nimport { withWeakCache } from \"@/utils/with-weak-cache\"\n\nexport type CompatApi<T> = Promise<(ctx: RuntimeContext) => T>\nexport type CompatHelper<T = any> = {\n level: CompatibilityLevel\n isCompatible: (from?: CompatibilityLevel) => boolean\n isValueCompatible: (dest: T) => boolean\n}\nexport type ArgsValueCompatHelper<Args = any, Value = any> = {\n args: CompatHelper<Args>\n value: CompatHelper<Value>\n isCompatible: (from?: CompatibilityLevel) => boolean\n}\nexport type ValueCompat = CompatApi<CompatHelper>\nexport type InOutCompat = CompatApi<ArgsValueCompatHelper>\nexport type ConstCompat = Promise<(dest: any) => boolean>\n\nconst incompatible: CompatHelper = {\n level: CompatibilityLevel.Incompatible,\n isCompatible: () => false,\n isValueCompatible: () => false,\n}\nconst inOutIncompat: ArgsValueCompatHelper = {\n args: incompatible,\n value: incompatible,\n isCompatible: () => false,\n}\n\nconst identical: CompatHelper = {\n level: CompatibilityLevel.Identical,\n isCompatible: () => true,\n isValueCompatible: () => true,\n}\n\nconst getIsApiCompatible =\n (currentLevel: CompatibilityLevel) =>\n (target = CompatibilityLevel.BackwardsCompatible) =>\n currentLevel >= target\n\nconst getCompatibilityHelper = <K extends OpType>(\n kind: OpType,\n cache: CompatibilityCache,\n user: {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n } | null,\n dest: {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n },\n): K extends OpType.Tx | OpType.Event | OpType.Const\n ? CompatHelper\n : ArgsValueCompatHelper => {\n let result: { args: CompatHelper; value: CompatHelper }\n\n if (!dest.entry) result = inOutIncompat\n else {\n const { args } = dest.entry\n\n const _isCompat = (value: any) =>\n valueIsCompatibleWithDest(args, dest.getter, value)\n const isValueCompatible =\n kind === OpType.Storage\n ? (value: any[]) => _isCompat(value.length === 1 ? value[0] : value)\n : _isCompat\n\n if (!user?.entry) {\n const level = CompatibilityLevel.Partial\n result = {\n args: {\n level,\n isValueCompatible,\n isCompatible: getIsApiCompatible(level),\n },\n value: user ? incompatible : identical,\n }\n } else {\n const { values: userValues } = user.entry\n\n const { args, values } = entryPointsAreCompatible(\n user.entry,\n user.getter,\n dest.entry,\n dest.getter,\n cache,\n )\n\n result = {\n args: {\n level: args.level,\n isValueCompatible,\n isCompatible: getIsApiCompatible(args.level),\n },\n value:\n values.level === CompatibilityLevel.Incompatible\n ? incompatible\n : {\n level: values.level,\n isValueCompatible:\n values.level > CompatibilityLevel.Partial\n ? () => true\n : (val) =>\n valueIsCompatibleWithDest(userValues, user.getter, val),\n isCompatible: getIsApiCompatible(values.level),\n },\n }\n }\n }\n\n if (kind === OpType.Storage || kind === OpType.Api || kind === OpType.ViewFns)\n return Object.assign(result, {\n isCompatible: getIsApiCompatible(\n Math.min(result.args.level, result.value.level),\n ),\n }) as any\n\n return (kind === OpType.Tx ? result.args : result.value) as any\n}\n\nexport const createCompatHelpers = withWeakCache(\n (descriptors?: ChainDefinition) => {\n let userCtx: CompatCtx | null = null\n const awaitedUserCtx: Promise<CompatCtx | null> = (\n descriptors ? getUserCompatCtx(descriptors) : Promise.resolve(null)\n ).then((x) => (userCtx = x))\n\n // before calling this function we must await on `awaitedUserCtx`\n const getHelpers = withWeakCache((runtimeCtx: RuntimeContext) => {\n const cache = new Map()\n const destCtx = getDestCompatCtx(runtimeCtx)\n const getCompat = <K extends OpType>(kind: K) =>\n createProxyPath(\n (\n group: string,\n name: string,\n ): K extends OpType.Tx | OpType.Event | OpType.Const\n ? CompatHelper\n : ArgsValueCompatHelper =>\n getCompatibilityHelper(\n kind,\n cache,\n getEntryAndGetter(userCtx, kind, group, name),\n getEntryAndGetter(destCtx, kind, group, name),\n ),\n )\n\n return {\n tx: getCompat(OpType.Tx),\n constants: getCompat(OpType.Const),\n apis: getCompat(OpType.Api),\n view: getCompat(OpType.ViewFns),\n query: getCompat(OpType.Storage),\n event: getCompat(OpType.Event),\n }\n })\n\n const getClientCompat = async <\n K extends \"tx\" | \"constants\" | \"apis\" | \"view\" | \"query\" | \"event\",\n >(\n kind: K,\n group: string,\n name: string,\n ): CompatApi<\n K extends \"tx\" | \"event\" | \"constants\"\n ? CompatHelper\n : ArgsValueCompatHelper\n > => {\n await awaitedUserCtx\n return (ctx: RuntimeContext) => getHelpers(ctx)[kind][group][name] as any\n }\n\n return {\n getSyncHelpers: async (ctx: RuntimeContext) => {\n await awaitedUserCtx\n return getHelpers(ctx)\n },\n getClientCompat,\n getIsAsssetCompat: (ctx: RuntimeContext) =>\n getDestCompatCtx(ctx).isAssetCompat,\n }\n },\n)\n\nexport type CompatHelpers = ReturnType<typeof createCompatHelpers>\n"],"names":["CompatibilityLevel","valueIsCompatibleWithDest","OpType","args","entryPointsAreCompatible","withWeakCache","getUserCompatCtx","getDestCompatCtx","createProxyPath","getEntryAndGetter"],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { JsonRpcProvider } from '@polkadot-api/json-rpc-provider';
|
|
|
2
2
|
export { JsonRpcProvider } from '@polkadot-api/json-rpc-provider';
|
|
3
3
|
import { HexString, Codec, ResultPayload } from '@polkadot-api/substrate-bindings';
|
|
4
4
|
export { AccountId, Binary, BlockHeader, Codec, Enum, EnumVariant, GetEnum, HexString, ResultPayload, SS58AddressInfo, SS58String, SizedHex, _Enum, getSs58AddressInfo } from '@polkadot-api/substrate-bindings';
|
|
5
|
-
import { P as PolkadotClient, C as ChainDefinition, O as OfflineApi, D as DescriptorEntry, S as StorageDescriptor, T as TxDescriptor, a as PlainDescriptor, R as RuntimeDescriptor } from '../types-
|
|
6
|
-
export { A as ApisFromDef, b as ApisTypedef, c as ConstFromPalletsDef, E as ErrorsFromPalletsDef, d as EventPhase, e as EventsFromPalletsDef, F as FixedSizeArray, f as PalletsTypedef, Q as QueryFromPalletsDef, g as Transaction, h as TransactionValidityError, i as TxBestBlocksState, j as TxBroadcastEvent, k as TxBroadcasted, l as
|
|
5
|
+
import { P as PolkadotClient, C as ChainDefinition, O as OfflineApi, D as DescriptorEntry, S as StorageDescriptor, T as TxDescriptor, a as PlainDescriptor, R as RuntimeDescriptor } from '../types-sRmpUhNh.js';
|
|
6
|
+
export { A as ApisFromDef, b as ApisTypedef, c as ConstFromPalletsDef, E as ErrorsFromPalletsDef, d as EventPhase, e as EventsFromPalletsDef, F as FixedSizeArray, f as PalletsTypedef, Q as QueryFromPalletsDef, g as Transaction, h as TransactionValidityError, i as TxBestBlocksState, j as TxBroadcastEvent, k as TxBroadcasted, l as TxCallData, m as TxEntry, n as TxEvent, o as TxEventsPayload, p as TxFinalized, q as TxFinalizedPayload, r as TxFromPalletsDef, s as TxInBestBlocksFound, t as TxInBestBlocksNotFound, u as TxOptions, v as TxSigned, w as TypedApi, V as ViewFnsFromPalletsDef } from '../types-sRmpUhNh.js';
|
|
7
7
|
export { CompatibilityLevel } from '@polkadot-api/metadata-compatibility';
|
|
8
8
|
export { BlockInfo, BlockNotPinnedError } from '@polkadot-api/observable-client';
|
|
9
9
|
export { PolkadotSigner } from '@polkadot-api/polkadot-signer';
|