polkadot-api 2.1.3-canary.fb86767 → 2.1.3
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.js
CHANGED
package/dist/src/client.js
CHANGED
|
@@ -217,7 +217,7 @@ function createClient(provider, { getMetadata, setMetadata } = {}) {
|
|
|
217
217
|
submitAndWatch: (tx) => submit$(chainHead, broadcastTx$, tx),
|
|
218
218
|
getTypedApi: (chainDefinition) => {
|
|
219
219
|
if (typedApis.has(chainDefinition)) return typedApis.get(chainDefinition);
|
|
220
|
-
const api = createApi(chainHead, broadcastTx
|
|
220
|
+
const api = createApi(chainHead, broadcastTx$, chainDefinition);
|
|
221
221
|
typedApis.set(chainDefinition, api);
|
|
222
222
|
return api;
|
|
223
223
|
},
|
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 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
|
+
{"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,6 +1,10 @@
|
|
|
1
|
-
const isOptionalArg = (lastArg) =>
|
|
2
|
-
|
|
3
|
-
);
|
|
1
|
+
const isOptionalArg = (lastArg) => {
|
|
2
|
+
if (typeof lastArg !== "object" || lastArg === null) return false;
|
|
3
|
+
if (Object.getPrototypeOf(lastArg) !== Object.prototype) return false;
|
|
4
|
+
return Object.entries(lastArg).every(
|
|
5
|
+
([k, v]) => k === "at" && (v === void 0 || typeof v === "string") || k === "signal" && (v === void 0 || v instanceof AbortSignal)
|
|
6
|
+
);
|
|
7
|
+
};
|
|
4
8
|
|
|
5
9
|
export { isOptionalArg };
|
|
6
10
|
//# sourceMappingURL=optional-arg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optional-arg.js","sources":["../../../src/utils/optional-arg.ts"],"sourcesContent":["export const isOptionalArg = (lastArg: unknown)
|
|
1
|
+
{"version":3,"file":"optional-arg.js","sources":["../../../src/utils/optional-arg.ts"],"sourcesContent":["export const isOptionalArg = (lastArg: unknown) => {\n if (typeof lastArg !== \"object\" || lastArg === null) return false\n // Reject anything that isn't a plain object (`{...}` literal). Checking\n // only `typeof` isn't enough because it's problematic with parameters\n // like `Uint8Array`/`Buffer`/typed arrays.\n if (Object.getPrototypeOf(lastArg) !== Object.prototype) return false\n return Object.entries(lastArg).every(\n ([k, v]) =>\n (k === \"at\" && (v === undefined || typeof v === \"string\")) ||\n (k === \"signal\" && (v === undefined || v instanceof AbortSignal)),\n )\n}\n"],"names":[],"mappings":"AAAO,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAqB;AACjD,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,OAAA,KAAY,MAAM,OAAO,KAAA;AAI5D,EAAA,IAAI,OAAO,cAAA,CAAe,OAAO,CAAA,KAAM,MAAA,CAAO,WAAW,OAAO,KAAA;AAChE,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CAAE,KAAA;AAAA,IAC7B,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KACH,MAAM,IAAA,KAAS,CAAA,KAAM,MAAA,IAAa,OAAO,MAAM,QAAA,CAAA,IAC/C,CAAA,KAAM,QAAA,KAAa,CAAA,KAAM,UAAa,CAAA,YAAa,WAAA;AAAA,GACxD;AACF;;;;"}
|