polkadot-api 2.1.6 → 2.1.7-canary.78aac72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/reexports/ws.d.ts +1 -1
  2. package/dist/src/client.js +79 -7
  3. package/dist/src/client.js.map +1 -1
  4. package/dist/src/compatibility/compat-ctx.js +3 -8
  5. package/dist/src/compatibility/compat-ctx.js.map +1 -1
  6. package/dist/src/compatibility/compatibility.js +1 -2
  7. package/dist/src/compatibility/compatibility.js.map +1 -1
  8. package/dist/src/index.d.ts +5 -4
  9. package/dist/src/offline.js +71 -22
  10. package/dist/src/offline.js.map +1 -1
  11. package/dist/src/static-apis.js +3 -3
  12. package/dist/src/static-apis.js.map +1 -1
  13. package/dist/src/storage.js.map +1 -1
  14. package/dist/src/tx/tx.js +50 -66
  15. package/dist/src/tx/tx.js.map +1 -1
  16. package/dist/{types-BJAMtGIT.d.ts → types-CoK0ySKE.d.ts} +72 -204
  17. package/dist/umd/index.min.js +2 -2
  18. package/dist/umd/ink.min.js +1 -1
  19. package/dist/umd/pjs-signer.min.js +3 -1
  20. package/dist/umd/signer.min.js +3 -1
  21. package/dist/umd/ws.min.js +3 -3
  22. package/package.json +21 -20
  23. package/dist/src/tx/create-tx.js +0 -125
  24. package/dist/src/tx/create-tx.js.map +0 -1
  25. package/dist/src/tx/signed-extensions/charge-asset-tx-enc.js +0 -9
  26. package/dist/src/tx/signed-extensions/charge-asset-tx-enc.js.map +0 -1
  27. package/dist/src/tx/signed-extensions/mortal-enc.js +0 -25
  28. package/dist/src/tx/signed-extensions/mortal-enc.js.map +0 -1
  29. package/dist/src/tx/signed-extensions/sign-extensions.js +0 -107
  30. package/dist/src/tx/signed-extensions/sign-extensions.js.map +0 -1
  31. package/dist/src/tx/signed-extensions/system-version.js +0 -10
  32. package/dist/src/tx/signed-extensions/system-version.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { P as PolkadotClient } from '../types-BJAMtGIT.js';
1
+ import { P as PolkadotClient } from '../types-CoK0ySKE.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';
@@ -2,7 +2,7 @@ import { getObservableClient, withArchive } from '@polkadot-api/observable-clien
2
2
  import { Binary } from '@polkadot-api/substrate-bindings';
3
3
  import { createClient as createClient$1 } from '@polkadot-api/substrate-client';
4
4
  import { toHex } from '@polkadot-api/utils';
5
- import { from, defer, map, catchError, shareReplay, Observable, combineLatest, firstValueFrom } from 'rxjs';
5
+ import { from, defer, map, catchError, shareReplay, Observable, combineLatest, firstValueFrom, scan, mergeAll, distinctUntilChanged } from 'rxjs';
6
6
  import { createCompatHelpers } from './compatibility/compatibility.js';
7
7
  import { createConstantEntry } from './constants.js';
8
8
  import { createEventEntry } from './event.js';
@@ -20,9 +20,81 @@ import { submit$, submit } from './tx/submit-fns.js';
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 txCreatorBindings = {
24
+ hasher: (payload) => chainHead.hasher$.pipe(map((h) => h(payload))),
25
+ blocks: chainHead.pinnedBlocks$.pipe(
26
+ scan((acc, { finalized, blocks }) => {
27
+ let prev = acc.at(-1);
28
+ if (!prev) {
29
+ const blockAndChildren = (hash) => {
30
+ const block = blocks.get(hash);
31
+ return block ? [block, ...Array.from(block.children).flatMap(blockAndChildren)] : [];
32
+ };
33
+ const allBlocks = blockAndChildren(finalized);
34
+ const tipEmissions = allBlocks.reduce((emissions2, next) => {
35
+ const emission = emissions2.at(-1);
36
+ emissions2.push({
37
+ type: "newTip",
38
+ finalized: emission?.finalized ?? next,
39
+ tips: [
40
+ ...emission?.tips.filter(({ hash }) => hash !== next.parent) ?? [],
41
+ next
42
+ ],
43
+ newTip: next
44
+ });
45
+ return emissions2;
46
+ }, []);
47
+ const last = tipEmissions.at(-1);
48
+ return [
49
+ ...tipEmissions,
50
+ {
51
+ type: "finalized",
52
+ finalized: last.finalized,
53
+ tips: last.tips
54
+ }
55
+ ];
56
+ }
57
+ const emissions = [];
58
+ if (prev.finalized.hash !== finalized) {
59
+ const tipsWithoutPruned = prev.tips.filter(({ hash }) => {
60
+ const block = blocks.get(hash);
61
+ return block && !block.pruned;
62
+ });
63
+ const next = {
64
+ type: "finalized",
65
+ finalized: blocks.get(finalized),
66
+ tips: tipsWithoutPruned.length === prev.tips.length ? prev.tips : tipsWithoutPruned
67
+ };
68
+ emissions.push(next);
69
+ prev = next;
70
+ }
71
+ Array.from(blocks.values()).filter(
72
+ (b) => b.children.size === 0 && !b.pruned && prev.tips.every(({ hash }) => hash !== b.hash)
73
+ ).forEach((b) => {
74
+ const next = {
75
+ type: "newTip",
76
+ finalized: prev.finalized,
77
+ tips: [...prev.tips.filter(({ hash }) => hash !== b.parent), b],
78
+ newTip: b
79
+ };
80
+ prev = next;
81
+ emissions.push(next);
82
+ });
83
+ return emissions.length === 0 ? [prev] : emissions;
84
+ }, []),
85
+ mergeAll(),
86
+ distinctUntilChanged()
87
+ ),
88
+ call: (call, args, at) => chainHead.call$(at, call, toHex(args))
89
+ };
23
90
  const compatHelpers = createCompatHelpers(chainDefinition);
24
- const { getClientCompat, getIsAsssetCompat } = compatHelpers;
25
- const getStaticApis = createStaticApis(chainHead, broadcast$, compatHelpers);
91
+ const { getClientCompat } = compatHelpers;
92
+ const getStaticApis = createStaticApis(
93
+ txCreatorBindings,
94
+ chainHead,
95
+ broadcast$,
96
+ compatHelpers
97
+ );
26
98
  const getWatchEntries = createWatchEntries(
27
99
  chainHead.pinnedBlocks$,
28
100
  chainHead.storage$,
@@ -39,12 +111,12 @@ const createApi = (chainHead, broadcast$, chainDefinition) => {
39
111
  );
40
112
  const tx = createProxyPath(
41
113
  (pallet, name) => createTxEntry(
114
+ txCreatorBindings,
42
115
  pallet,
43
116
  name,
44
117
  chainHead,
45
118
  broadcast$,
46
- getClientCompat("tx", pallet, name),
47
- getIsAsssetCompat
119
+ getClientCompat("tx", pallet, name)
48
120
  )
49
121
  );
50
122
  const event = createProxyPath(
@@ -88,12 +160,12 @@ const createApi = (chainHead, broadcast$, chainDefinition) => {
88
160
  value: { type: name, value: args }
89
161
  } = dynamicBuilder.buildDefinition(lookup.call).dec(callData);
90
162
  return createTxEntry(
163
+ txCreatorBindings,
91
164
  pallet,
92
165
  name,
93
166
  chainHead,
94
167
  broadcast$,
95
- getClientCompat("tx", pallet, name),
96
- getIsAsssetCompat
168
+ getClientCompat("tx", pallet, name)
97
169
  )(args);
98
170
  } catch {
99
171
  throw new Error("createTx: invalid call data");
@@ -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 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$, chainDefinition)\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.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 { TxCreatorBindings } from \"@polkadot-api/polkadot-signer\"\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 ObservedValueOf,\n catchError,\n combineLatest,\n defer,\n distinctUntilChanged,\n firstValueFrom,\n from,\n map,\n mergeAll,\n scan,\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\ntype Blocks = ObservedValueOf<TxCreatorBindings[\"blocks\"]>\nconst createApi = <D extends ChainDefinition>(\n chainHead: ChainHead$,\n broadcast$: (tx: Uint8Array) => Observable<never>,\n chainDefinition?: ChainDefinition,\n): TypedApi<D> => {\n const txCreatorBindings: TxCreatorBindings = {\n hasher: (payload) => chainHead.hasher$.pipe(map((h) => h(payload))),\n blocks: chainHead.pinnedBlocks$.pipe(\n scan((acc, { finalized, blocks }) => {\n let prev = acc.at(-1)!\n // means it will be the first emission, we emit all tree as tips\n if (!prev) {\n const blockAndChildren = (hash: string): BlockInfo[] => {\n const block = blocks.get(hash)\n return block\n ? [block, ...Array.from(block.children).flatMap(blockAndChildren)]\n : []\n }\n const allBlocks = blockAndChildren(finalized)\n const tipEmissions = allBlocks.reduce<Blocks[]>((emissions, next) => {\n const emission = emissions.at(-1)\n emissions.push({\n type: \"newTip\",\n finalized: emission?.finalized ?? next,\n tips: [\n ...(emission?.tips.filter(({ hash }) => hash !== next.parent) ??\n []),\n next,\n ],\n newTip: next,\n })\n return emissions\n }, [])\n const last = tipEmissions.at(-1)! // at least one finalized block\n return [\n ...tipEmissions,\n {\n type: \"finalized\" as const,\n finalized: last.finalized,\n tips: last.tips,\n },\n ]\n }\n const emissions: Blocks[] = []\n // clear change in finalized case\n if (prev.finalized.hash !== finalized) {\n const tipsWithoutPruned = prev.tips.filter(({ hash }) => {\n const block = blocks.get(hash)\n return block && !block.pruned\n })\n const next: Blocks = {\n type: \"finalized\",\n finalized: blocks.get(finalized)!,\n tips:\n tipsWithoutPruned.length === prev.tips.length\n ? prev.tips\n : tipsWithoutPruned,\n }\n emissions.push(next)\n prev = next\n }\n\n Array.from(blocks.values())\n .filter(\n (b) =>\n b.children.size === 0 &&\n !b.pruned &&\n prev.tips.every(({ hash }) => hash !== b.hash),\n )\n .forEach((b) => {\n const next: Blocks = {\n type: \"newTip\",\n finalized: prev.finalized,\n tips: [...prev.tips.filter(({ hash }) => hash !== b.parent), b],\n newTip: b,\n }\n prev = next\n emissions.push(next)\n })\n return emissions.length === 0 ? [prev] : emissions\n }, [] as Blocks[]),\n mergeAll(),\n distinctUntilChanged(),\n ),\n call: (call, args, at) => chainHead.call$(at, call, toHex(args)),\n }\n const compatHelpers = createCompatHelpers(chainDefinition)\n const { getClientCompat } = compatHelpers\n\n const getStaticApis = createStaticApis(\n txCreatorBindings,\n chainHead,\n broadcast$,\n compatHelpers,\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 txCreatorBindings,\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\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 txCreatorBindings,\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\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$, chainDefinition)\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":["emissions","createRawClient"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { EntryPointCodec, TypedefCodec, isCompatible, singleValueEntryPoint, runtimeCallEntryPoint, storageEntryPoint, mapLookupToTypedef, enumValueEntryPointNode, voidEntryPointNode } from '@polkadot-api/metadata-compatibility';
1
+ import { EntryPointCodec, TypedefCodec, singleValueEntryPoint, runtimeCallEntryPoint, storageEntryPoint, mapLookupToTypedef, enumValueEntryPointNode, voidEntryPointNode } from '@polkadot-api/metadata-compatibility';
2
2
  import { Vector, Tuple } from '@polkadot-api/substrate-bindings';
3
3
  import { withWeakCache } from '../utils/with-weak-cache.js';
4
4
 
@@ -36,11 +36,7 @@ const getEnumEntry = (entry, side) => {
36
36
  return { args, values };
37
37
  };
38
38
  const getDestCompatCtx = withWeakCache(
39
- ({
40
- lookup,
41
- assetId,
42
- mappedMeta: { pallets, api }
43
- }) => {
39
+ ({ lookup, mappedMeta: { pallets, api } }) => {
44
40
  const typeNodesCache = /* @__PURE__ */ new Map();
45
41
  const getTypeDefNode = (id) => {
46
42
  let result = typeNodesCache.get(id);
@@ -77,8 +73,7 @@ const getDestCompatCtx = withWeakCache(
77
73
  return entry && singleValueEntryPoint(entry.type);
78
74
  }
79
75
  }
80
- },
81
- isAssetCompat: (asset) => assetId == null || isCompatible(asset, getTypeDefNode(assetId), getTypeDefNode)
76
+ }
82
77
  };
83
78
  }
84
79
  );
@@ -1 +1 @@
1
- {"version":3,"file":"compat-ctx.js","sources":["../../../src/compatibility/compat-ctx.ts"],"sourcesContent":["import { ChainDefinition } from \"@/descriptors\"\nimport {\n EntryPoint,\n EntryPointCodec,\n enumValueEntryPointNode,\n isCompatible,\n mapLookupToTypedef,\n runtimeCallEntryPoint,\n singleValueEntryPoint,\n storageEntryPoint,\n TypedefCodec,\n TypedefNode,\n voidEntryPointNode,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { Tuple, Vector } from \"@polkadot-api/substrate-bindings\"\nimport { RuntimeContext, type EnumEntry } from \"@polkadot-api/observable-client\"\nimport { withWeakCache } from \"@/utils/with-weak-cache\"\n\nconst EntryPointsCodec = Vector(EntryPointCodec)\nconst TypedefsCodec = Vector(TypedefCodec)\nconst [, typesDec] = Tuple(EntryPointsCodec, TypedefsCodec)\n\nexport const enum OpType {\n Storage = \"storage\",\n Tx = \"tx\",\n Event = \"events\",\n Const = \"constants\",\n ViewFns = \"viewFns\",\n Api = \"apis\",\n}\n\nexport interface CompatCtx {\n getTypeDefNode: (id: number) => TypedefNode\n getEntryPointNode: (\n type: OpType,\n group: string,\n name: string,\n ) => EntryPoint | undefined\n}\n\nexport const getUserCompatCtx = async ({\n metadataTypes,\n descriptors: awaitedDescriptors,\n}: ChainDefinition): Promise<CompatCtx> => {\n const [[entryPoints, typeDefNodes], descriptors] = await Promise.all([\n metadataTypes.then(typesDec),\n awaitedDescriptors,\n ])\n\n return {\n getTypeDefNode: (id) => typeDefNodes[id],\n getEntryPointNode: (type, group, name) => {\n const idx = descriptors[type]?.[group]?.[name]\n return idx == null ? idx : entryPoints[idx]\n },\n }\n}\n\nconst getEnumEntry = (entry: EnumEntry, side: \"args\" | \"values\") => {\n const node = enumValueEntryPointNode(entry)\n const [args, values] =\n side === \"args\" ? [node, voidEntryPointNode] : [voidEntryPointNode, node]\n return { args, values }\n}\n\nexport const getDestCompatCtx = withWeakCache(\n ({\n lookup,\n assetId,\n mappedMeta: { pallets, api },\n }: RuntimeContext): CompatCtx & {\n isAssetCompat: (asset: any) => boolean\n } => {\n const typeNodesCache = new Map<number, TypedefNode>()\n const getTypeDefNode = (id: number) => {\n let result = typeNodesCache.get(id)\n if (result) return result\n typeNodesCache.set(id, (result = mapLookupToTypedef(lookup(id))))\n return result\n }\n\n return {\n getTypeDefNode,\n getEntryPointNode: (type, group, name) => {\n switch (type) {\n case OpType.Storage: {\n const entry = pallets[group]?.storage.get(name)\n return entry && storageEntryPoint(entry)\n }\n case OpType.Tx: {\n const entry = pallets[group]?.call.get(name)\n return entry && getEnumEntry(entry, \"args\")\n }\n case OpType.Event: {\n const entry = pallets[group]?.event.get(name)\n return entry && getEnumEntry(entry, \"values\")\n }\n case OpType.ViewFns: {\n const entry = pallets[group]?.view.get(name)\n return entry && runtimeCallEntryPoint(entry)\n }\n case OpType.Api: {\n const entry = api[group]?.get(name)\n return entry && runtimeCallEntryPoint(entry)\n }\n case OpType.Const: {\n const entry = pallets[group]?.const.get(name)\n return entry && singleValueEntryPoint(entry.type)\n }\n }\n },\n isAssetCompat: (asset) =>\n assetId == null ||\n isCompatible(asset, getTypeDefNode(assetId), getTypeDefNode),\n }\n },\n)\n\nexport const getEntryAndGetter = <T extends CompatCtx | null>(\n compatCtx: T,\n type: OpType,\n group: string,\n name: string,\n): null extends T\n ? null\n : {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n } => {\n if (!compatCtx) return null as any\n const { getEntryPointNode, getTypeDefNode: getter } = compatCtx\n return {\n entry: getEntryPointNode(type, group, name),\n getter,\n } as any\n}\n"],"names":["OpType"],"mappings":"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"}
1
+ {"version":3,"file":"compat-ctx.js","sources":["../../../src/compatibility/compat-ctx.ts"],"sourcesContent":["import { ChainDefinition } from \"@/descriptors\"\nimport {\n EntryPoint,\n EntryPointCodec,\n enumValueEntryPointNode,\n mapLookupToTypedef,\n runtimeCallEntryPoint,\n singleValueEntryPoint,\n storageEntryPoint,\n TypedefCodec,\n TypedefNode,\n voidEntryPointNode,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { Tuple, Vector } from \"@polkadot-api/substrate-bindings\"\nimport { RuntimeContext, type EnumEntry } from \"@polkadot-api/observable-client\"\nimport { withWeakCache } from \"@/utils/with-weak-cache\"\n\nconst EntryPointsCodec = Vector(EntryPointCodec)\nconst TypedefsCodec = Vector(TypedefCodec)\nconst [, typesDec] = Tuple(EntryPointsCodec, TypedefsCodec)\n\nexport const enum OpType {\n Storage = \"storage\",\n Tx = \"tx\",\n Event = \"events\",\n Const = \"constants\",\n ViewFns = \"viewFns\",\n Api = \"apis\",\n}\n\nexport interface CompatCtx {\n getTypeDefNode: (id: number) => TypedefNode\n getEntryPointNode: (\n type: OpType,\n group: string,\n name: string,\n ) => EntryPoint | undefined\n}\n\nexport const getUserCompatCtx = async ({\n metadataTypes,\n descriptors: awaitedDescriptors,\n}: ChainDefinition): Promise<CompatCtx> => {\n const [[entryPoints, typeDefNodes], descriptors] = await Promise.all([\n metadataTypes.then(typesDec),\n awaitedDescriptors,\n ])\n\n return {\n getTypeDefNode: (id) => typeDefNodes[id],\n getEntryPointNode: (type, group, name) => {\n const idx = descriptors[type]?.[group]?.[name]\n return idx == null ? idx : entryPoints[idx]\n },\n }\n}\n\nconst getEnumEntry = (entry: EnumEntry, side: \"args\" | \"values\") => {\n const node = enumValueEntryPointNode(entry)\n const [args, values] =\n side === \"args\" ? [node, voidEntryPointNode] : [voidEntryPointNode, node]\n return { args, values }\n}\n\nexport const getDestCompatCtx = withWeakCache(\n ({ lookup, mappedMeta: { pallets, api } }: RuntimeContext): CompatCtx => {\n const typeNodesCache = new Map<number, TypedefNode>()\n const getTypeDefNode = (id: number) => {\n let result = typeNodesCache.get(id)\n if (result) return result\n typeNodesCache.set(id, (result = mapLookupToTypedef(lookup(id))))\n return result\n }\n\n return {\n getTypeDefNode,\n getEntryPointNode: (type, group, name) => {\n switch (type) {\n case OpType.Storage: {\n const entry = pallets[group]?.storage.get(name)\n return entry && storageEntryPoint(entry)\n }\n case OpType.Tx: {\n const entry = pallets[group]?.call.get(name)\n return entry && getEnumEntry(entry, \"args\")\n }\n case OpType.Event: {\n const entry = pallets[group]?.event.get(name)\n return entry && getEnumEntry(entry, \"values\")\n }\n case OpType.ViewFns: {\n const entry = pallets[group]?.view.get(name)\n return entry && runtimeCallEntryPoint(entry)\n }\n case OpType.Api: {\n const entry = api[group]?.get(name)\n return entry && runtimeCallEntryPoint(entry)\n }\n case OpType.Const: {\n const entry = pallets[group]?.const.get(name)\n return entry && singleValueEntryPoint(entry.type)\n }\n }\n },\n }\n },\n)\n\nexport const getEntryAndGetter = <T extends CompatCtx | null>(\n compatCtx: T,\n type: OpType,\n group: string,\n name: string,\n): null extends T\n ? null\n : {\n entry?: EntryPoint\n getter: (id: number) => TypedefNode\n } => {\n if (!compatCtx) return null as any\n const { getEntryPointNode, getTypeDefNode: getter } = compatCtx\n return {\n entry: getEntryPointNode(type, group, name),\n getter,\n } as any\n}\n"],"names":["OpType"],"mappings":"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"}
@@ -105,8 +105,7 @@ const createCompatHelpers = withWeakCache(
105
105
  await awaitedUserCtx;
106
106
  return getHelpers(ctx);
107
107
  },
108
- getClientCompat,
109
- getIsAsssetCompat: (ctx) => getDestCompatCtx(ctx).isAssetCompat
108
+ getClientCompat
110
109
  };
111
110
  }
112
111
  );
@@ -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 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
+ {"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>\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 }\n },\n)\n\nexport type CompatHelpers = ReturnType<typeof createCompatHelpers>\n"],"names":["args"],"mappings":"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"}
@@ -2,14 +2,14 @@ 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-BJAMtGIT.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-BJAMtGIT.js';
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-CoK0ySKE.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 TxSigned, v as TypedApi, V as ViewFnsFromPalletsDef } from '../types-CoK0ySKE.js';
7
7
  export { CompatibilityLevel } from '@polkadot-api/metadata-compatibility';
8
8
  export { BlockInfo, BlockNotPinnedError } from '@polkadot-api/observable-client';
9
- export { PolkadotSigner } from '@polkadot-api/polkadot-signer';
10
9
  export { DescriptorValues } from '@polkadot-api/codegen';
11
10
  import '@polkadot-api/substrate-client';
12
11
  import 'rxjs';
12
+ import '@polkadot-api/polkadot-signer';
13
13
 
14
14
  declare class InvalidTxError extends Error {
15
15
  error: any;
@@ -64,8 +64,9 @@ declare function createClient(provider: JsonRpcProvider, { getMetadata, setMetad
64
64
  *
65
65
  * @param chainDefinition Pass descriptors from `@polkadot-api/descriptors`
66
66
  * generated by `papi` CLI.
67
+ * @param hasher Blockchain's hasher. Defaults to `Blake2256`
67
68
  */
68
- declare const getOfflineApi: <D extends ChainDefinition>(chainDefinition: D) => Promise<OfflineApi<D>>;
69
+ declare const getOfflineApi: <D extends ChainDefinition>(chainDefinition: D, hasher?: (payload: Uint8Array) => Uint8Array) => Promise<OfflineApi<D>>;
69
70
 
70
71
  type Tuple<T> = [T, ...T[]];
71
72
  type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
@@ -1,9 +1,21 @@
1
1
  import { getLookupFn, getDynamicBuilder } from '@polkadot-api/metadata-builders';
2
- import { unifyMetadata, metadata, Enum } from '@polkadot-api/substrate-bindings';
3
- import { fromHex, mergeUint8 } from '@polkadot-api/utils';
4
- import { getSignExtensionsCreator } from './tx/signed-extensions/sign-extensions.js';
2
+ import { Blake2256, unifyMetadata, decAnyMetadata, Enum } from '@polkadot-api/substrate-bindings';
3
+ import { mergeUint8, fromHex, toHex } from '@polkadot-api/utils';
4
+ import { concat, of, NEVER } from 'rxjs';
5
5
 
6
- const createOfflineTxEntry = (pallet, name, metadataRaw, dynamicBuilder, signExtensionCreator) => {
6
+ const getOfflineExtensions = (genesis, lookupFn, builder, { nonce, mortality }) => {
7
+ const nonceType = lookupFn.metadata.extrinsic.extensions["CheckNonce"]?.type;
8
+ const nonceExt = nonceType != null ? [
9
+ {
10
+ id: "CheckNonce",
11
+ extra: toHex(builder.buildDefinition(nonceType).enc(nonce)),
12
+ additionalSigned: "0x"
13
+ }
14
+ ] : [];
15
+ const mortalityExt = mortality == null && lookupFn.metadata.extrinsic.extensions["CheckMortality"] ? [{ id: "CheckMortality", extra: "0x00", additionalSigned: genesis }] : [];
16
+ return [...mortalityExt, ...nonceExt];
17
+ };
18
+ const createOfflineTxEntry = (bindings, pallet, name, genesisHex, metadataRaw, lookupFn, dynamicBuilder) => {
7
19
  let codecs;
8
20
  try {
9
21
  codecs = dynamicBuilder.buildCall(pallet, name);
@@ -17,28 +29,44 @@ const createOfflineTxEntry = (pallet, name, metadataRaw, dynamicBuilder, signExt
17
29
  return {
18
30
  encodedData,
19
31
  decodedCall: Enum(pallet, Enum(name, arg)),
20
- sign: async (from, extensions) => await from.signTx(
21
- encodedData,
22
- signExtensionCreator(extensions),
23
- metadataRaw,
24
- extensions.mortality.mortal ? extensions.mortality.startAtBlock.height : 0
25
- )
32
+ create: async (creator, txOptions) => {
33
+ return fromHex(
34
+ await creator(
35
+ {
36
+ callData: toHex(encodedData),
37
+ context: {
38
+ metadata: toHex(metadataRaw),
39
+ bestBlockHash: genesisHex,
40
+ bestBlockHeight: 0,
41
+ genesisHash: genesisHex,
42
+ token: null
43
+ },
44
+ extensions: getOfflineExtensions(
45
+ genesisHex,
46
+ lookupFn,
47
+ dynamicBuilder,
48
+ txOptions
49
+ ),
50
+ signer: null,
51
+ txExtVersion: null,
52
+ version: 1
53
+ },
54
+ txOptions,
55
+ bindings,
56
+ false
57
+ )
58
+ );
59
+ }
26
60
  };
27
61
  };
28
62
  };
29
- const getOfflineApi = async ({ genesis: genesisHex, getMetadata }) => {
63
+ const getOfflineApi = async ({ genesis: genesisHex, getMetadata }, hasher = Blake2256) => {
30
64
  if (!genesisHex) throw new Error("Missing genesis hash");
31
- const genesis = fromHex(genesisHex);
32
65
  const metadataRaw = await getMetadata();
33
- const metadata$1 = unifyMetadata(metadata.dec(metadataRaw));
34
- const lookupFn = getLookupFn(metadata$1);
66
+ const metadata = unifyMetadata(decAnyMetadata(metadataRaw));
67
+ const lookupFn = getLookupFn(metadata);
35
68
  const dynamicBuilder = getDynamicBuilder(lookupFn);
36
- const signExtensionCreator = getSignExtensionsCreator(
37
- genesis,
38
- lookupFn,
39
- dynamicBuilder
40
- );
41
- const getPallet = (name) => metadata$1.pallets.find((p) => p.name === name);
69
+ const getPallet = (name) => metadata.pallets.find((p) => p.name === name);
42
70
  const target = {};
43
71
  const createProxy = (propCall) => new Proxy(target, {
44
72
  get(_, prop) {
@@ -61,13 +89,34 @@ const getOfflineApi = async ({ genesis: genesisHex, getMetadata }) => {
61
89
  throw new Error(`Runtime entry Constant(${pallet}.${name}) not found`);
62
90
  return dynamicBuilder.buildConstant(pallet, name).dec(constant.value);
63
91
  });
92
+ const finalized = {
93
+ hash: genesisHex,
94
+ parent: "0x" + "0".repeat(64),
95
+ number: 0
96
+ };
97
+ const tips = [finalized];
98
+ const txCreatorBindings = {
99
+ hasher: (payload) => of(hasher(payload)),
100
+ blocks: concat(
101
+ of(
102
+ { type: "newTip", finalized, tips, newTip: finalized },
103
+ { type: "finalized", finalized, tips }
104
+ ),
105
+ NEVER
106
+ ),
107
+ call: () => {
108
+ throw new Error("OfflineApi cannot perform runtime calls");
109
+ }
110
+ };
64
111
  const tx = createProxyPath(
65
112
  (pallet, name) => createOfflineTxEntry(
113
+ txCreatorBindings,
66
114
  pallet,
67
115
  name,
116
+ genesisHex,
68
117
  metadataRaw,
69
- dynamicBuilder,
70
- signExtensionCreator
118
+ lookupFn,
119
+ dynamicBuilder
71
120
  )
72
121
  );
73
122
  return { constants, tx };
@@ -1 +1 @@
1
- {"version":3,"file":"offline.js","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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"}
1
+ {"version":3,"file":"offline.js","sources":["../../src/offline.ts"],"sourcesContent":["import {\n getDynamicBuilder,\n getLookupFn,\n MetadataLookup,\n} from \"@polkadot-api/metadata-builders\"\nimport { TxCreatorBindings, TxPayloadV1 } from \"@polkadot-api/polkadot-signer\"\nimport {\n Blake2256,\n decAnyMetadata,\n Enum,\n unifyMetadata,\n} from \"@polkadot-api/substrate-bindings\"\nimport { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport { concat, NEVER, of } from \"rxjs\"\nimport type { ChainDefinition } from \"./descriptors\"\nimport type { ExtensionConstraints, OfflineTxEntry } from \"./tx\"\nimport type { OfflineApi } from \"./types\"\n\nconst getOfflineExtensions = (\n genesis: string,\n lookupFn: MetadataLookup,\n builder: ReturnType<typeof getDynamicBuilder>,\n { nonce, mortality }: { nonce: number; mortality?: any },\n): TxPayloadV1[\"extensions\"] => {\n const nonceType = lookupFn.metadata.extrinsic.extensions[\"CheckNonce\"]?.type\n const nonceExt =\n nonceType != null\n ? [\n {\n id: \"CheckNonce\",\n extra: toHex(builder.buildDefinition(nonceType).enc(nonce)),\n additionalSigned: \"0x\",\n },\n ]\n : []\n // only set mortality if not set by the user\n const mortalityExt =\n mortality == null &&\n lookupFn.metadata.extrinsic.extensions[\"CheckMortality\"]\n ? [{ id: \"CheckMortality\", extra: \"0x00\", additionalSigned: genesis }]\n : []\n return [...mortalityExt, ...nonceExt]\n}\n\nconst createOfflineTxEntry = <\n Arg extends {} | undefined,\n EC extends ExtensionConstraints,\n>(\n bindings: TxCreatorBindings,\n pallet: string,\n name: string,\n genesisHex: string,\n metadataRaw: Uint8Array,\n lookupFn: MetadataLookup,\n dynamicBuilder: ReturnType<typeof getDynamicBuilder>,\n): OfflineTxEntry<Arg, EC> => {\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 create: async (creator, txOptions) => {\n return fromHex(\n await creator(\n {\n callData: toHex(encodedData),\n context: {\n metadata: toHex(metadataRaw),\n bestBlockHash: genesisHex,\n bestBlockHeight: 0,\n genesisHash: genesisHex,\n token: null,\n },\n extensions: getOfflineExtensions(\n genesisHex,\n lookupFn,\n dynamicBuilder,\n txOptions,\n ),\n signer: null,\n txExtVersion: null,\n version: 1,\n },\n txOptions,\n bindings,\n false,\n ),\n )\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 * @param hasher Blockchain's hasher. Defaults to `Blake2256`\n */\nexport const getOfflineApi: <D extends ChainDefinition>(\n chainDefinition: D,\n hasher?: (payload: Uint8Array) => Uint8Array,\n) => Promise<OfflineApi<D>> = async (\n { genesis: genesisHex, getMetadata },\n hasher = Blake2256,\n) => {\n if (!genesisHex) throw new Error(\"Missing genesis hash\")\n const metadataRaw = await getMetadata()\n const metadata = unifyMetadata(decAnyMetadata(metadataRaw))\n const lookupFn = getLookupFn(metadata)\n const dynamicBuilder = getDynamicBuilder(lookupFn)\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 finalized = {\n hash: genesisHex,\n parent: \"0x\" + \"0\".repeat(64),\n number: 0,\n }\n const tips = [finalized]\n const txCreatorBindings: TxCreatorBindings = {\n hasher: (payload) => of(hasher(payload)),\n blocks: concat(\n of(\n { type: \"newTip\" as const, finalized, tips, newTip: finalized },\n { type: \"finalized\" as const, finalized, tips },\n ),\n NEVER,\n ),\n call: () => {\n throw new Error(\"OfflineApi cannot perform runtime calls\")\n },\n }\n\n const tx = createProxyPath((pallet, name) =>\n createOfflineTxEntry(\n txCreatorBindings,\n pallet,\n name,\n genesisHex,\n metadataRaw,\n lookupFn,\n dynamicBuilder,\n ),\n )\n\n return { constants, tx } as any\n}\n"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { stgGetKey } from './utils/stg-get-key.js';
10
10
  import { createTxEntry } from './tx/tx.js';
11
11
  import { withWeakCache } from './utils/with-weak-cache.js';
12
12
 
13
- const createStaticApis = (chainHead, broadcast$, { getClientCompat, getSyncHelpers, getIsAsssetCompat }) => {
13
+ const createStaticApis = (bindings, chainHead, broadcast$, { getClientCompat, getSyncHelpers }) => {
14
14
  const txFromCallData = ({ dynamicBuilder, lookup }) => (callData) => {
15
15
  try {
16
16
  const {
@@ -18,12 +18,12 @@ const createStaticApis = (chainHead, broadcast$, { getClientCompat, getSyncHelpe
18
18
  value: { type: name, value: args }
19
19
  } = dynamicBuilder.buildDefinition(lookup.call).dec(callData);
20
20
  return createTxEntry(
21
+ bindings,
21
22
  pallet,
22
23
  name,
23
24
  chainHead,
24
25
  broadcast$,
25
- getClientCompat("tx", pallet, name),
26
- getIsAsssetCompat
26
+ getClientCompat("tx", pallet, name)
27
27
  )(args);
28
28
  } catch {
29
29
  throw new Error("Invalid call data");
@@ -1 +1 @@
1
- {"version":3,"file":"static-apis.js","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;;;;"}
1
+ {"version":3,"file":"static-apis.js","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 { TxCreatorBindings } from \"@polkadot-api/polkadot-signer\"\nimport { mergeMap, Observable } from \"rxjs\"\nimport { createTxEntry, ExtensionConstraints, Transaction } from \"./tx\"\nimport { withWeakCache } from \"./utils/with-weak-cache\"\n\nexport const createStaticApis = <EC extends ExtensionConstraints>(\n bindings: TxCreatorBindings,\n chainHead: ChainHead$,\n broadcast$: (tx: Uint8Array) => Observable<never>,\n { getClientCompat, getSyncHelpers }: CompatHelpers,\n) => {\n const txFromCallData =\n ({ dynamicBuilder, lookup }: RuntimeContext) =>\n (callData: Uint8Array): Transaction<EC> => {\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 bindings,\n pallet,\n name,\n chainHead,\n broadcast$,\n getClientCompat(\"tx\", pallet, name),\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":";;;;;;;;;;;;AAYO,MAAM,gBAAA,GAAmB,CAC9B,QAAA,EACA,SAAA,EACA,YACA,EAAE,eAAA,EAAiB,gBAAe,KAC/B;AACH,EAAA,MAAM,iBACJ,CAAC,EAAE,gBAAgB,MAAA,EAAO,KAC1B,CAAC,QAAA,KAA0C;AACzC,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,QAAA;AAAA,QACA,MAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,eAAA,CAAgB,IAAA,EAAM,MAAA,EAAQ,IAAI;AAAA,QAClC,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;;;;"}