@stellar/stellar-sdk 16.0.0-rc.2 → 16.0.0
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/dist/stellar-sdk-axios.js +25 -27
- package/dist/stellar-sdk-axios.js.map +1 -1
- package/dist/stellar-sdk-axios.min.js +1 -1
- package/dist/stellar-sdk-axios.min.js.map +1 -1
- package/dist/stellar-sdk.js +26 -28
- package/dist/stellar-sdk.js.map +1 -1
- package/dist/stellar-sdk.min.js +2 -2
- package/dist/stellar-sdk.min.js.map +1 -1
- package/lib/axios/cjs/base/transaction_builder.js +13 -1
- package/lib/axios/cjs/base/transaction_builder.js.map +1 -1
- package/lib/axios/cjs/bindings/config.js +1 -1
- package/lib/axios/cjs/bindings/config.js.map +1 -1
- package/lib/axios/cjs/bindings/wasm_fetcher.js +1 -1
- package/lib/axios/cjs/bindings/wasm_fetcher.js.map +1 -1
- package/lib/axios/cjs/contract/assembled_transaction.js +1 -6
- package/lib/axios/cjs/contract/assembled_transaction.js.map +1 -1
- package/lib/axios/cjs/contract/client.js.map +1 -1
- package/lib/axios/cjs/contract/spec.js.map +1 -1
- package/lib/axios/cjs/contract/types.js.map +1 -1
- package/lib/axios/cjs/contract/utils.js.map +1 -1
- package/lib/axios/cjs/contract/wasm_spec_parser.js +1 -1
- package/lib/axios/cjs/contract/wasm_spec_parser.js.map +1 -1
- package/lib/axios/cjs/horizon/call_builder.js.map +1 -1
- package/lib/axios/cjs/horizon/horizon_api.js.map +1 -1
- package/lib/axios/cjs/horizon/horizon_axios_client.js +1 -1
- package/lib/axios/cjs/horizon/horizon_axios_client.js.map +1 -1
- package/lib/axios/cjs/http-client/fetch-client.js +1 -1
- package/lib/axios/cjs/http-client/fetch-client.js.map +1 -1
- package/lib/axios/cjs/http-client/types.js.map +1 -1
- package/lib/axios/cjs/rpc/axios.js +1 -1
- package/lib/axios/cjs/rpc/axios.js.map +1 -1
- package/lib/axios/cjs/rpc/jsonrpc.js.map +1 -1
- package/lib/axios/cjs/rpc/server.js +6 -15
- package/lib/axios/cjs/rpc/server.js.map +1 -1
- package/lib/axios/cjs/webauth/challenge_transaction.js.map +1 -1
- package/lib/axios/esm/base/transaction_builder.js +13 -1
- package/lib/axios/esm/base/transaction_builder.js.map +1 -1
- package/lib/axios/esm/bindings/config.js +1 -1
- package/lib/axios/esm/bindings/config.js.map +1 -1
- package/lib/axios/esm/bindings/wasm_fetcher.js +1 -1
- package/lib/axios/esm/bindings/wasm_fetcher.js.map +1 -1
- package/lib/axios/esm/contract/assembled_transaction.js +1 -6
- package/lib/axios/esm/contract/assembled_transaction.js.map +1 -1
- package/lib/axios/esm/contract/client.js.map +1 -1
- package/lib/axios/esm/contract/spec.js.map +1 -1
- package/lib/axios/esm/contract/types.d.ts +0 -9
- package/lib/axios/esm/contract/types.js.map +1 -1
- package/lib/axios/esm/contract/utils.js.map +1 -1
- package/lib/axios/esm/contract/wasm_spec_parser.js +1 -1
- package/lib/axios/esm/contract/wasm_spec_parser.js.map +1 -1
- package/lib/axios/esm/horizon/call_builder.js.map +1 -1
- package/lib/axios/esm/horizon/horizon_api.js.map +1 -1
- package/lib/axios/esm/horizon/horizon_axios_client.js +1 -1
- package/lib/axios/esm/horizon/horizon_axios_client.js.map +1 -1
- package/lib/axios/esm/http-client/fetch-client.js +1 -1
- package/lib/axios/esm/http-client/fetch-client.js.map +1 -1
- package/lib/axios/esm/http-client/types.js.map +1 -1
- package/lib/axios/esm/rpc/axios.js +1 -1
- package/lib/axios/esm/rpc/axios.js.map +1 -1
- package/lib/axios/esm/rpc/jsonrpc.js.map +1 -1
- package/lib/axios/esm/rpc/server.d.ts +2 -7
- package/lib/axios/esm/rpc/server.js +6 -15
- package/lib/axios/esm/rpc/server.js.map +1 -1
- package/lib/axios/esm/webauth/challenge_transaction.js.map +1 -1
- package/lib/cjs/base/transaction_builder.js +13 -1
- package/lib/cjs/base/transaction_builder.js.map +1 -1
- package/lib/cjs/bindings/config.js +1 -1
- package/lib/cjs/bindings/config.js.map +1 -1
- package/lib/cjs/bindings/wasm_fetcher.js +1 -1
- package/lib/cjs/bindings/wasm_fetcher.js.map +1 -1
- package/lib/cjs/contract/assembled_transaction.js +1 -6
- package/lib/cjs/contract/assembled_transaction.js.map +1 -1
- package/lib/cjs/contract/client.js.map +1 -1
- package/lib/cjs/contract/spec.js.map +1 -1
- package/lib/cjs/contract/types.js.map +1 -1
- package/lib/cjs/contract/utils.js.map +1 -1
- package/lib/cjs/contract/wasm_spec_parser.js +1 -1
- package/lib/cjs/contract/wasm_spec_parser.js.map +1 -1
- package/lib/cjs/horizon/call_builder.js.map +1 -1
- package/lib/cjs/horizon/horizon_api.js.map +1 -1
- package/lib/cjs/horizon/horizon_axios_client.js +1 -1
- package/lib/cjs/horizon/horizon_axios_client.js.map +1 -1
- package/lib/cjs/http-client/fetch-client.js +1 -1
- package/lib/cjs/http-client/fetch-client.js.map +1 -1
- package/lib/cjs/http-client/types.js.map +1 -1
- package/lib/cjs/rpc/axios.js +1 -1
- package/lib/cjs/rpc/axios.js.map +1 -1
- package/lib/cjs/rpc/jsonrpc.js.map +1 -1
- package/lib/cjs/rpc/server.js +6 -15
- package/lib/cjs/rpc/server.js.map +1 -1
- package/lib/cjs/webauth/challenge_transaction.js.map +1 -1
- package/lib/esm/base/transaction_builder.js +13 -1
- package/lib/esm/base/transaction_builder.js.map +1 -1
- package/lib/esm/bindings/config.js +1 -1
- package/lib/esm/bindings/config.js.map +1 -1
- package/lib/esm/bindings/wasm_fetcher.js +1 -1
- package/lib/esm/bindings/wasm_fetcher.js.map +1 -1
- package/lib/esm/contract/assembled_transaction.js +1 -6
- package/lib/esm/contract/assembled_transaction.js.map +1 -1
- package/lib/esm/contract/client.js.map +1 -1
- package/lib/esm/contract/spec.js.map +1 -1
- package/lib/esm/contract/types.d.ts +0 -9
- package/lib/esm/contract/types.js.map +1 -1
- package/lib/esm/contract/utils.js.map +1 -1
- package/lib/esm/contract/wasm_spec_parser.js +1 -1
- package/lib/esm/contract/wasm_spec_parser.js.map +1 -1
- package/lib/esm/horizon/call_builder.js.map +1 -1
- package/lib/esm/horizon/horizon_api.js.map +1 -1
- package/lib/esm/horizon/horizon_axios_client.js +1 -1
- package/lib/esm/horizon/horizon_axios_client.js.map +1 -1
- package/lib/esm/http-client/fetch-client.js +1 -1
- package/lib/esm/http-client/fetch-client.js.map +1 -1
- package/lib/esm/http-client/types.js.map +1 -1
- package/lib/esm/rpc/axios.js +1 -1
- package/lib/esm/rpc/axios.js.map +1 -1
- package/lib/esm/rpc/jsonrpc.js.map +1 -1
- package/lib/esm/rpc/server.d.ts +2 -7
- package/lib/esm/rpc/server.js +6 -15
- package/lib/esm/rpc/server.js.map +1 -1
- package/lib/esm/webauth/challenge_transaction.js.map +1 -1
- package/package.json +2 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call_builder.js","sources":["../../../src/horizon/call_builder.ts"],"sourcesContent":["import { EventSource } from \"eventsource\";\n\nimport {\n BadRequestError,\n NetworkError,\n NotFoundError,\n} from \"../errors/index.js\";\nimport { HorizonApi } from \"./horizon_api.js\";\nimport { version } from \"./horizon_axios_client.js\";\nimport type { HttpClient } from \"../http-client/index.js\";\nimport { ServerApi } from \"./server_api.js\";\nimport type { Server } from \"../federation/index.js\";\nimport { expandUriTemplate } from \"../utils/url.js\";\n\n// Resources which can be included in the Horizon response via the `join`\n// query-param.\nconst JOINABLE = [\"transaction\"];\n\nexport interface EventSourceOptions<T> {\n onmessage?: (\n value: T extends ServerApi.CollectionPage<infer U> ? U : T,\n ) => void;\n onerror?: (event: MessageEvent) => void;\n reconnectTimeout?: number;\n}\n\n/**\n * Creates a new {@link CallBuilder} pointed to server defined by serverUrl.\n *\n * This is an **abstract** class. Do not create this object directly, use {@link Server} class.\n * @param serverUrl - URL of Horizon server\n */\nexport class CallBuilder<\n T extends\n | HorizonApi.FeeStatsResponse\n | HorizonApi.BaseResponse\n | HorizonApi.RootResponse\n | ServerApi.CollectionPage<HorizonApi.BaseResponse>,\n> {\n protected url: URL;\n\n public filter: string[][];\n\n protected originalSegments: string[];\n\n protected neighborRoot: string;\n\n protected httpClient: HttpClient;\n\n constructor(\n serverUrl: URL,\n httpClient: HttpClient,\n neighborRoot: string = \"\",\n ) {\n this.url = new URL(serverUrl);\n this.filter = [];\n\n this.originalSegments = this.url.pathname\n .split(\"/\")\n .filter((s) => s.length > 0);\n this.neighborRoot = neighborRoot;\n this.httpClient = httpClient;\n }\n\n protected setPath(...segments: string[]): void {\n const endpointSegments = segments.flatMap((segment) =>\n segment.split(\"/\").filter((s) => s.length > 0),\n );\n this.url.pathname = this.originalSegments\n .concat(endpointSegments)\n .join(\"/\");\n }\n\n /**\n * Triggers a HTTP request using this builder's current configuration.\n * @returns a Promise that resolves to the server's response.\n */\n public call(): Promise<T> {\n this.checkFilter();\n return this._sendNormalRequest(this.url).then((r) =>\n this._parseResponse(r),\n );\n }\n //// TODO: Migrate to async, BUT that's a change in behavior and tests \"rejects two filters\" will fail.\n //// It's because async will check within promise, which makes more sense when using awaits instead of Promises.\n // public async call(): Promise<T> {\n // this.checkFilter();\n // const r = await this._sendNormalRequest(this.url);\n // return this._parseResponse(r);\n // }\n //// /* actually equals */\n //// public call(): Promise<T> {\n //// return Promise.resolve().then(() => {\n //// this.checkFilter();\n //// return this._sendNormalRequest(this.url)\n //// }).then((r) => {\n //// this._parseResponse(r)\n //// });\n //// }\n\n /**\n * Creates an EventSource that listens for incoming messages from the server. To stop listening for new\n * events call the function returned by this method.\n * @see [Horizon Response Format](https://developers.stellar.org/api/introduction/response-format/)\n * @see [MDN EventSource](https://developer.mozilla.org/en-US/docs/Web/API/EventSource)\n * @param options - (optional) EventSource options.\n * - `onmessage` (optional): Callback function to handle incoming messages.\n * - `onerror` (optional): Callback function to handle errors.\n * - `reconnectTimeout` (optional): Custom stream connection timeout in ms, default is 15 seconds.\n * @returns Close function. Run to close the connection and stop listening for new events.\n */\n public stream(\n options: EventSourceOptions<\n T extends ServerApi.CollectionPage<infer U> ? U : T\n > = {},\n ): () => void {\n this.checkFilter();\n\n const streamUrl = new URL(this.url);\n streamUrl.searchParams.set(\"X-Client-Name\", \"js-stellar-sdk\");\n streamUrl.searchParams.set(\"X-Client-Version\", version);\n\n // Extract custom app headers from httpClient defaults and add as query params\n // (EventSource doesn't support custom headers, so we use query params)\n const { headers } = this.httpClient.defaults;\n if (headers) {\n const headerNames = [\"X-App-Name\", \"X-App-Version\"];\n headerNames.forEach((name) => {\n let value: string | undefined;\n if (headers instanceof Headers) {\n value = headers.get(name) ?? undefined;\n } else if (Array.isArray(headers)) {\n const entry = headers.find(([key]) => key === name);\n value = entry?.[1];\n } else {\n value = headers[name];\n }\n if (value) {\n streamUrl.searchParams.set(name, value);\n }\n });\n }\n\n // EventSource object\n let es: EventSource;\n // timeout is the id of the timeout to be triggered if there were no new messages\n // in the last 15 seconds. The timeout is reset when a new message arrive.\n // It prevents closing EventSource object in case of 504 errors as `readyState`\n // property is not reliable.\n let timeout: ReturnType<typeof setTimeout>;\n\n const createTimeout = () => {\n timeout = setTimeout(\n () => {\n es?.close();\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n es = createEventSource();\n },\n options.reconnectTimeout || 15 * 1000,\n );\n };\n\n const createEventSource = (): EventSource => {\n try {\n es = new EventSource(streamUrl.toString());\n } catch (err) {\n if (options.onerror) {\n options.onerror(err as MessageEvent);\n }\n }\n\n createTimeout();\n if (!es) {\n return es;\n }\n\n // when receiving the close message from Horizon we should close the\n // connection and recreate the event source (basically retrying forever)\n let closed = false;\n const onClose = () => {\n if (closed) {\n return;\n }\n\n clearTimeout(timeout);\n\n es.close();\n createEventSource();\n closed = true;\n };\n\n const onMessage = (message: any) => {\n if (message.type === \"close\") {\n onClose();\n return;\n }\n\n const result = message.data\n ? this._parseRecord(JSON.parse(message.data))\n : message;\n if (result.paging_token) {\n streamUrl.searchParams.set(\"cursor\", result.paging_token);\n }\n clearTimeout(timeout);\n createTimeout();\n if (typeof options.onmessage !== \"undefined\") {\n options.onmessage(result);\n }\n };\n\n const onError = (error: any) => {\n if (options.onerror) {\n options.onerror(error as MessageEvent);\n }\n };\n\n if (es.addEventListener) {\n es.addEventListener(\"message\", onMessage.bind(this));\n es.addEventListener(\"error\", onError.bind(this));\n es.addEventListener(\"close\", onClose.bind(this));\n } else {\n es.onmessage = onMessage.bind(this);\n es.onerror = onError.bind(this);\n }\n\n return es;\n };\n\n createEventSource();\n return () => {\n clearTimeout(timeout);\n es?.close();\n };\n }\n\n /**\n * Sets `cursor` parameter for the current call. Returns the CallBuilder object on which this method has been called.\n * @see [Paging](https://developers.stellar.org/api/introduction/pagination/)\n * @param cursor - A cursor is a value that points to a specific location in a collection of resources.\n * @returns current CallBuilder instance\n */\n public cursor(cursor: string): this {\n this.url.searchParams.set(\"cursor\", cursor);\n return this;\n }\n\n /**\n * Sets `limit` parameter for the current call. Returns the CallBuilder object on which this method has been called.\n * @see [Paging](https://developers.stellar.org/api/introduction/pagination/)\n * @param recordsNumber - Number of records the server should return.\n * @returns current CallBuilder instance\n */\n public limit(recordsNumber: number): this {\n this.url.searchParams.set(\"limit\", recordsNumber.toString());\n return this;\n }\n\n /**\n * Sets `order` parameter for the current call. Returns the CallBuilder object on which this method has been called.\n * @param direction - Sort direction\n * @returns current CallBuilder instance\n */\n public order(direction: \"asc\" | \"desc\"): this {\n this.url.searchParams.set(\"order\", direction);\n return this;\n }\n\n /**\n * Sets `join` parameter for the current call. The `join` parameter\n * includes the requested resource in the response. Currently, the\n * only valid value for the parameter is `transactions` and is only\n * supported on the operations and payments endpoints. The response\n * will include a `transaction` field for each operation in the\n * response.\n *\n * @param include - join Records to be included in the response.\n * @returns current CallBuilder instance.\n */\n public join(include: \"transactions\"): this {\n this.url.searchParams.set(\"join\", include);\n return this;\n }\n\n /**\n * A helper method to craft queries to \"neighbor\" endpoints.\n *\n * For example, we have an `/effects` suffix endpoint on many different\n * \"root\" endpoints, such as `/transactions/:id` and `/accounts/:id`. So,\n * it's helpful to be able to conveniently create queries to the\n * `/accounts/:id/effects` endpoint:\n *\n * `this.forEndpoint(\"accounts\", accountId)`.\n *\n * @param endpoint - neighbor endpoint in question, like /operations\n * @param param - filter parameter, like an operation ID\n *\n * @returns this CallBuilder instance\n */\n protected forEndpoint(endpoint: string, param: string): this {\n if (this.neighborRoot === \"\") {\n throw new Error(\"Invalid usage: neighborRoot not set in constructor\");\n }\n this.filter.push([endpoint, param, this.neighborRoot]);\n return this;\n }\n\n /**\n * @hidden\n * @returns */\n private checkFilter(): void {\n if (this.filter.length >= 2) {\n throw new BadRequestError(\"Too many filters specified\", this.filter);\n }\n\n if (this.filter.length === 1) {\n // append filters to original segments\n const newSegment = this.originalSegments.concat(this.filter[0]);\n this.url.pathname = newSegment.join(\"/\");\n }\n }\n\n /**\n * Convert a link object to a function that fetches that link.\n * @hidden\n * @param link - A link object\n * - `href`: the URI of the link\n * - `templated` (optional): Whether the link is templated\n * @returns A function that requests the link\n */\n private _requestFnForLink(\n link: HorizonApi.ResponseLink,\n ): (opts?: any) => any {\n return async (opts: any = {}) => {\n let uri;\n\n if (link.templated) {\n uri = new URL(expandUriTemplate(link.href, opts), this.url);\n } else {\n uri = new URL(link.href, this.url);\n }\n\n const r = await this._sendNormalRequest(uri);\n return this._parseResponse(r);\n };\n }\n\n /**\n * Given the json response, find and convert each link into a function that\n * calls that link.\n * @hidden\n * @param json - JSON response\n * @returns JSON response with string links replaced with functions\n */\n private _parseRecord(json: any): any {\n if (!json._links) {\n return json;\n }\n Object.keys(json._links).forEach((key) => {\n const n = json._links[key];\n let included = false;\n // If the key with the link name already exists, create a copy\n if (typeof json[key] !== \"undefined\") {\n json[`${key}_attr`] = json[key];\n included = true;\n }\n\n /*\n If the resource can be side-loaded using `join` query-param then don't\n try to load from the server. We need to whitelist the keys which are\n joinable, since there are other keys like `ledger` which is included in\n some payloads, but doesn't represent the ledger resource, in that\n scenario we want to make the call to the server using the URL from links.\n */\n if (included && JOINABLE.indexOf(key) >= 0) {\n const record = this._parseRecord(json[key]);\n // Maintain a promise based API so the behavior is the same whether you\n // are loading from the server or in-memory (via join).\n // eslint-disable-next-line @typescript-eslint/require-await\n json[key] = async () => record;\n } else {\n json[key] = this._requestFnForLink(n as HorizonApi.ResponseLink);\n }\n });\n return json;\n }\n\n private async _sendNormalRequest(initialUrl: URL) {\n const url = new URL(initialUrl);\n\n // Always use the configured server's authority and protocol.\n // Horizon returns absolute URLs in _links that would bypass reverse proxies.\n url.protocol = this.url.protocol;\n url.host = this.url.host;\n\n return this.httpClient\n .get(url.toString())\n .then((response) => response.data)\n .catch(this._handleNetworkError);\n }\n\n /**\n * @hidden\n * @param json - Response object\n * @returns Extended response\n */\n private _parseResponse(json: any) {\n if (json._embedded && json._embedded.records) {\n return this._toCollectionPage(json);\n }\n return this._parseRecord(json);\n }\n\n /**\n * @hidden\n * @param json - Response object\n * @returns Extended response object\n */\n private _toCollectionPage(json: any): any {\n for (let i = 0; i < json._embedded.records.length; i += 1) {\n json._embedded.records[i] = this._parseRecord(json._embedded.records[i]);\n }\n return {\n records: json._embedded.records,\n next: async () => {\n const r = await this._sendNormalRequest(\n new URL(json._links.next.href, this.url),\n );\n return this._toCollectionPage(r);\n },\n prev: async () => {\n const r = await this._sendNormalRequest(\n new URL(json._links.prev.href, this.url),\n );\n return this._toCollectionPage(r);\n },\n };\n }\n\n /**\n * @hidden\n * @param error - Network error object\n * @returns Promise that rejects with a human-readable error\n */\n private async _handleNetworkError(error: NetworkError): Promise<void> {\n if (error.response && error.response.status) {\n switch (error.response.status) {\n case 404:\n return Promise.reject(\n new NotFoundError(\n error.response.statusText ?? \"Not Found\",\n error.response.data,\n ),\n );\n default:\n return Promise.reject(\n new NetworkError(\n error.response.statusText ?? \"Unknown\",\n error.response.data,\n ),\n );\n }\n } else {\n return Promise.reject(new Error(error.message));\n }\n }\n}\n"],"names":["version","EventSource","BadRequestError","expandUriTemplate","NotFoundError","NetworkError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"call_builder.js","sources":["../../../src/horizon/call_builder.ts"],"sourcesContent":["import { EventSource } from \"eventsource\";\n\nimport {\n BadRequestError,\n NetworkError,\n NotFoundError,\n} from \"../errors/index.js\";\nimport { HorizonApi } from \"./horizon_api.js\";\nimport { version } from \"./horizon_axios_client.js\";\nimport type { HttpClient } from \"../http-client/index.js\";\nimport { ServerApi } from \"./server_api.js\";\nimport type { Server } from \"../federation/index.js\";\nimport { expandUriTemplate } from \"../utils/url.js\";\n\n// Resources which can be included in the Horizon response via the `join`\n// query-param.\nconst JOINABLE = [\"transaction\"];\n\nexport interface EventSourceOptions<T> {\n onmessage?: (\n value: T extends ServerApi.CollectionPage<infer U> ? U : T,\n ) => void;\n onerror?: (event: MessageEvent) => void;\n reconnectTimeout?: number;\n}\n\n/**\n * Creates a new {@link CallBuilder} pointed to server defined by serverUrl.\n *\n * This is an **abstract** class. Do not create this object directly, use {@link Server} class.\n * @param serverUrl - URL of Horizon server\n */\nexport class CallBuilder<\n T extends\n | HorizonApi.FeeStatsResponse\n | HorizonApi.BaseResponse\n | HorizonApi.RootResponse\n | ServerApi.CollectionPage<HorizonApi.BaseResponse>,\n> {\n protected url: URL;\n\n public filter: string[][];\n\n protected originalSegments: string[];\n\n protected neighborRoot: string;\n\n protected httpClient: HttpClient;\n\n constructor(\n serverUrl: URL,\n httpClient: HttpClient,\n neighborRoot: string = \"\",\n ) {\n this.url = new URL(serverUrl);\n this.filter = [];\n\n this.originalSegments = this.url.pathname\n .split(\"/\")\n .filter((s) => s.length > 0);\n this.neighborRoot = neighborRoot;\n this.httpClient = httpClient;\n }\n\n protected setPath(...segments: string[]): void {\n const endpointSegments = segments.flatMap((segment) =>\n segment.split(\"/\").filter((s) => s.length > 0),\n );\n this.url.pathname = this.originalSegments\n .concat(endpointSegments)\n .join(\"/\");\n }\n\n /**\n * Triggers a HTTP request using this builder's current configuration.\n * @returns a Promise that resolves to the server's response.\n */\n public call(): Promise<T> {\n this.checkFilter();\n return this._sendNormalRequest(this.url).then((r) =>\n this._parseResponse(r),\n );\n }\n //// TODO: Migrate to async, BUT that's a change in behavior and tests \"rejects two filters\" will fail.\n //// It's because async will check within promise, which makes more sense when using awaits instead of Promises.\n // public async call(): Promise<T> {\n // this.checkFilter();\n // const r = await this._sendNormalRequest(this.url);\n // return this._parseResponse(r);\n // }\n //// /* actually equals */\n //// public call(): Promise<T> {\n //// return Promise.resolve().then(() => {\n //// this.checkFilter();\n //// return this._sendNormalRequest(this.url)\n //// }).then((r) => {\n //// this._parseResponse(r)\n //// });\n //// }\n\n /**\n * Creates an EventSource that listens for incoming messages from the server. To stop listening for new\n * events call the function returned by this method.\n * @see [Horizon Response Format](https://developers.stellar.org/api/introduction/response-format/)\n * @see [MDN EventSource](https://developer.mozilla.org/en-US/docs/Web/API/EventSource)\n * @param options - (optional) EventSource options.\n * - `onmessage` (optional): Callback function to handle incoming messages.\n * - `onerror` (optional): Callback function to handle errors.\n * - `reconnectTimeout` (optional): Custom stream connection timeout in ms, default is 15 seconds.\n * @returns Close function. Run to close the connection and stop listening for new events.\n */\n public stream(\n options: EventSourceOptions<\n T extends ServerApi.CollectionPage<infer U> ? U : T\n > = {},\n ): () => void {\n this.checkFilter();\n\n const streamUrl = new URL(this.url);\n streamUrl.searchParams.set(\"X-Client-Name\", \"js-stellar-sdk\");\n streamUrl.searchParams.set(\"X-Client-Version\", version);\n\n // Extract custom app headers from httpClient defaults and add as query params\n // (EventSource doesn't support custom headers, so we use query params)\n const { headers } = this.httpClient.defaults;\n if (headers) {\n const headerNames = [\"X-App-Name\", \"X-App-Version\"];\n headerNames.forEach((name) => {\n let value: string | undefined;\n if (headers instanceof Headers) {\n value = headers.get(name) ?? undefined;\n } else if (Array.isArray(headers)) {\n const entry = headers.find(([key]) => key === name);\n value = entry?.[1];\n } else {\n value = headers[name];\n }\n if (value) {\n streamUrl.searchParams.set(name, value);\n }\n });\n }\n\n // EventSource object\n let es: EventSource;\n // timeout is the id of the timeout to be triggered if there were no new messages\n // in the last 15 seconds. The timeout is reset when a new message arrive.\n // It prevents closing EventSource object in case of 504 errors as `readyState`\n // property is not reliable.\n let timeout: ReturnType<typeof setTimeout>;\n\n const createTimeout = () => {\n timeout = setTimeout(\n () => {\n es?.close();\n\n es = createEventSource();\n },\n options.reconnectTimeout || 15 * 1000,\n );\n };\n\n const createEventSource = (): EventSource => {\n try {\n es = new EventSource(streamUrl.toString());\n } catch (err) {\n if (options.onerror) {\n options.onerror(err as MessageEvent);\n }\n }\n\n createTimeout();\n if (!es) {\n return es;\n }\n\n // when receiving the close message from Horizon we should close the\n // connection and recreate the event source (basically retrying forever)\n let closed = false;\n const onClose = () => {\n if (closed) {\n return;\n }\n\n clearTimeout(timeout);\n\n es.close();\n createEventSource();\n closed = true;\n };\n\n const onMessage = (message: any) => {\n if (message.type === \"close\") {\n onClose();\n return;\n }\n\n const result = message.data\n ? this._parseRecord(JSON.parse(message.data))\n : message;\n if (result.paging_token) {\n streamUrl.searchParams.set(\"cursor\", result.paging_token);\n }\n clearTimeout(timeout);\n createTimeout();\n if (typeof options.onmessage !== \"undefined\") {\n options.onmessage(result);\n }\n };\n\n const onError = (error: any) => {\n if (options.onerror) {\n options.onerror(error as MessageEvent);\n }\n };\n\n if (es.addEventListener) {\n es.addEventListener(\"message\", onMessage.bind(this));\n es.addEventListener(\"error\", onError.bind(this));\n es.addEventListener(\"close\", onClose.bind(this));\n } else {\n es.onmessage = onMessage.bind(this);\n es.onerror = onError.bind(this);\n }\n\n return es;\n };\n\n createEventSource();\n return () => {\n clearTimeout(timeout);\n es?.close();\n };\n }\n\n /**\n * Sets `cursor` parameter for the current call. Returns the CallBuilder object on which this method has been called.\n * @see [Paging](https://developers.stellar.org/api/introduction/pagination/)\n * @param cursor - A cursor is a value that points to a specific location in a collection of resources.\n * @returns current CallBuilder instance\n */\n public cursor(cursor: string): this {\n this.url.searchParams.set(\"cursor\", cursor);\n return this;\n }\n\n /**\n * Sets `limit` parameter for the current call. Returns the CallBuilder object on which this method has been called.\n * @see [Paging](https://developers.stellar.org/api/introduction/pagination/)\n * @param recordsNumber - Number of records the server should return.\n * @returns current CallBuilder instance\n */\n public limit(recordsNumber: number): this {\n this.url.searchParams.set(\"limit\", recordsNumber.toString());\n return this;\n }\n\n /**\n * Sets `order` parameter for the current call. Returns the CallBuilder object on which this method has been called.\n * @param direction - Sort direction\n * @returns current CallBuilder instance\n */\n public order(direction: \"asc\" | \"desc\"): this {\n this.url.searchParams.set(\"order\", direction);\n return this;\n }\n\n /**\n * Sets `join` parameter for the current call. The `join` parameter\n * includes the requested resource in the response. Currently, the\n * only valid value for the parameter is `transactions` and is only\n * supported on the operations and payments endpoints. The response\n * will include a `transaction` field for each operation in the\n * response.\n *\n * @param include - join Records to be included in the response.\n * @returns current CallBuilder instance.\n */\n public join(include: \"transactions\"): this {\n this.url.searchParams.set(\"join\", include);\n return this;\n }\n\n /**\n * A helper method to craft queries to \"neighbor\" endpoints.\n *\n * For example, we have an `/effects` suffix endpoint on many different\n * \"root\" endpoints, such as `/transactions/:id` and `/accounts/:id`. So,\n * it's helpful to be able to conveniently create queries to the\n * `/accounts/:id/effects` endpoint:\n *\n * `this.forEndpoint(\"accounts\", accountId)`.\n *\n * @param endpoint - neighbor endpoint in question, like /operations\n * @param param - filter parameter, like an operation ID\n *\n * @returns this CallBuilder instance\n */\n protected forEndpoint(endpoint: string, param: string): this {\n if (this.neighborRoot === \"\") {\n throw new Error(\"Invalid usage: neighborRoot not set in constructor\");\n }\n this.filter.push([endpoint, param, this.neighborRoot]);\n return this;\n }\n\n /**\n * @hidden\n * @returns */\n private checkFilter(): void {\n if (this.filter.length >= 2) {\n throw new BadRequestError(\"Too many filters specified\", this.filter);\n }\n\n if (this.filter.length === 1) {\n // append filters to original segments\n const newSegment = this.originalSegments.concat(this.filter[0]);\n this.url.pathname = newSegment.join(\"/\");\n }\n }\n\n /**\n * Convert a link object to a function that fetches that link.\n * @hidden\n * @param link - A link object\n * - `href`: the URI of the link\n * - `templated` (optional): Whether the link is templated\n * @returns A function that requests the link\n */\n private _requestFnForLink(\n link: HorizonApi.ResponseLink,\n ): (opts?: any) => any {\n return async (opts: any = {}) => {\n let uri;\n\n if (link.templated) {\n uri = new URL(expandUriTemplate(link.href, opts), this.url);\n } else {\n uri = new URL(link.href, this.url);\n }\n\n const r = await this._sendNormalRequest(uri);\n return this._parseResponse(r);\n };\n }\n\n /**\n * Given the json response, find and convert each link into a function that\n * calls that link.\n * @hidden\n * @param json - JSON response\n * @returns JSON response with string links replaced with functions\n */\n private _parseRecord(json: any): any {\n if (!json._links) {\n return json;\n }\n Object.keys(json._links).forEach((key) => {\n const n = json._links[key];\n let included = false;\n // If the key with the link name already exists, create a copy\n if (typeof json[key] !== \"undefined\") {\n json[`${key}_attr`] = json[key];\n included = true;\n }\n\n /*\n If the resource can be side-loaded using `join` query-param then don't\n try to load from the server. We need to whitelist the keys which are\n joinable, since there are other keys like `ledger` which is included in\n some payloads, but doesn't represent the ledger resource, in that\n scenario we want to make the call to the server using the URL from links.\n */\n if (included && JOINABLE.indexOf(key) >= 0) {\n const record = this._parseRecord(json[key]);\n // Maintain a promise based API so the behavior is the same whether you\n // are loading from the server or in-memory (via join).\n // eslint-disable-next-line @typescript-eslint/require-await\n json[key] = async () => record;\n } else {\n json[key] = this._requestFnForLink(n as HorizonApi.ResponseLink);\n }\n });\n return json;\n }\n\n private async _sendNormalRequest(initialUrl: URL) {\n const url = new URL(initialUrl);\n\n // Always use the configured server's authority and protocol.\n // Horizon returns absolute URLs in _links that would bypass reverse proxies.\n url.protocol = this.url.protocol;\n url.host = this.url.host;\n\n return this.httpClient\n .get(url.toString())\n .then((response) => response.data)\n .catch(this._handleNetworkError);\n }\n\n /**\n * @hidden\n * @param json - Response object\n * @returns Extended response\n */\n private _parseResponse(json: any) {\n if (json._embedded && json._embedded.records) {\n return this._toCollectionPage(json);\n }\n return this._parseRecord(json);\n }\n\n /**\n * @hidden\n * @param json - Response object\n * @returns Extended response object\n */\n private _toCollectionPage(json: any): any {\n for (let i = 0; i < json._embedded.records.length; i += 1) {\n json._embedded.records[i] = this._parseRecord(json._embedded.records[i]);\n }\n return {\n records: json._embedded.records,\n next: async () => {\n const r = await this._sendNormalRequest(\n new URL(json._links.next.href, this.url),\n );\n return this._toCollectionPage(r);\n },\n prev: async () => {\n const r = await this._sendNormalRequest(\n new URL(json._links.prev.href, this.url),\n );\n return this._toCollectionPage(r);\n },\n };\n }\n\n /**\n * @hidden\n * @param error - Network error object\n * @returns Promise that rejects with a human-readable error\n */\n private async _handleNetworkError(error: NetworkError): Promise<void> {\n if (error.response && error.response.status) {\n switch (error.response.status) {\n case 404:\n return Promise.reject(\n new NotFoundError(\n error.response.statusText ?? \"Not Found\",\n error.response.data,\n ),\n );\n default:\n return Promise.reject(\n new NetworkError(\n error.response.statusText ?? \"Unknown\",\n error.response.data,\n ),\n );\n }\n } else {\n return Promise.reject(new Error(error.message));\n }\n }\n}\n"],"names":["version","EventSource","BadRequestError","expandUriTemplate","NotFoundError","NetworkError"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"horizon_api.js","sources":["../../../src/horizon/horizon_api.ts"],"sourcesContent":["import type { AssetType, MemoType } from \"../base/index.js\";\n\n/* tslint:disable-next-line:no-namespace */\nexport namespace HorizonApi {\n export interface ResponseLink {\n href: string;\n templated?: boolean;\n }\n export interface BaseResponse<T extends string = never> {\n _links: { [key in T | \"self\"]: ResponseLink };\n }\n\n export interface SubmitTransactionResponse {\n hash: string;\n ledger: number;\n successful: boolean;\n envelope_xdr: string;\n result_xdr: string;\n result_meta_xdr: string;\n paging_token: string;\n }\n\n export interface SubmitAsyncTransactionResponse {\n hash: string;\n tx_status: string;\n error_result_xdr: string;\n }\n\n export interface FeeBumpTransactionResponse {\n hash: string;\n signatures: string[];\n }\n\n export interface InnerTransactionResponse {\n hash: string;\n signatures: string[];\n max_fee: string;\n }\n\n export interface TransactionPreconditions {\n timebounds?: {\n min_time: string;\n max_time: string;\n };\n ledgerbounds?: {\n min_ledger: number;\n max_ledger: number;\n };\n min_account_sequence?: string;\n min_account_sequence_age?: string;\n min_account_sequence_ledger_gap?: number;\n extra_signers?: string[];\n }\n\n export interface TransactionResponse\n extends\n SubmitTransactionResponse,\n BaseResponse<\n | \"account\"\n | \"ledger\"\n | \"operations\"\n | \"effects\"\n | \"succeeds\"\n | \"precedes\"\n > {\n created_at: string;\n fee_meta_xdr: string;\n fee_charged: number | string;\n max_fee: number | string;\n id: string;\n memo_type: MemoType;\n memo?: string;\n memo_bytes?: string;\n operation_count: number;\n paging_token: string;\n signatures: string[];\n source_account: string;\n source_account_sequence: string;\n fee_account: string;\n inner_transaction?: InnerTransactionResponse;\n fee_bump_transaction?: FeeBumpTransactionResponse;\n preconditions?: TransactionPreconditions;\n }\n\n export interface BalanceLineNative {\n balance: string;\n asset_type: AssetType.native;\n buying_liabilities: string;\n selling_liabilities: string;\n }\n export interface BalanceLineLiquidityPool {\n liquidity_pool_id: string;\n asset_type: AssetType.liquidityPoolShares;\n balance: string;\n limit: string;\n last_modified_ledger: number;\n is_authorized: boolean;\n is_authorized_to_maintain_liabilities: boolean;\n is_clawback_enabled: boolean;\n sponsor?: string;\n }\n export interface BalanceLineAsset<\n T extends AssetType.credit4 | AssetType.credit12 =\n | AssetType.credit4\n | AssetType.credit12,\n > {\n balance: string;\n limit: string;\n asset_type: T;\n asset_code: string;\n asset_issuer: string;\n buying_liabilities: string;\n selling_liabilities: string;\n last_modified_ledger: number;\n is_authorized: boolean;\n is_authorized_to_maintain_liabilities: boolean;\n is_clawback_enabled: boolean;\n sponsor?: string;\n }\n export type BalanceLine<T extends AssetType = AssetType> =\n T extends AssetType.native\n ? BalanceLineNative\n : T extends AssetType.credit4 | AssetType.credit12\n ? BalanceLineAsset<T>\n : T extends AssetType.liquidityPoolShares\n ? BalanceLineLiquidityPool\n : BalanceLineNative | BalanceLineAsset | BalanceLineLiquidityPool;\n\n export interface AssetAccounts {\n authorized: number;\n authorized_to_maintain_liabilities: number;\n unauthorized: number;\n }\n export interface AssetBalances {\n authorized: string;\n authorized_to_maintain_liabilities: string;\n unauthorized: string;\n }\n\n export interface PriceR {\n numerator: number;\n denominator: number;\n }\n\n export interface PriceRShorthand {\n n: number;\n d: number;\n }\n\n export interface AccountThresholds {\n low_threshold: number;\n med_threshold: number;\n high_threshold: number;\n }\n export interface Flags {\n auth_immutable: boolean;\n auth_required: boolean;\n auth_revocable: boolean;\n auth_clawback_enabled: boolean;\n }\n export interface AccountSigner {\n key: string;\n weight: number;\n type: string;\n sponsor?: string;\n }\n export interface AccountResponse extends BaseResponse<\n | \"transactions\"\n | \"operations\"\n | \"payments\"\n | \"effects\"\n | \"offers\"\n | \"trades\"\n | \"data\"\n > {\n id: string;\n paging_token: string;\n account_id: string;\n sequence: string;\n sequence_ledger?: number;\n sequence_time?: string;\n subentry_count: number;\n thresholds: AccountThresholds;\n last_modified_ledger: number;\n last_modified_time: string;\n flags: Flags;\n balances: BalanceLine[];\n signers: AccountSigner[];\n data: {\n [key: string]: string;\n };\n sponsor?: string;\n num_sponsoring: number;\n num_sponsored: number;\n }\n\n export enum LiquidityPoolType {\n constantProduct = \"constant_product\",\n }\n\n export enum OperationResponseType {\n createAccount = \"create_account\",\n payment = \"payment\",\n pathPayment = \"path_payment_strict_receive\",\n createPassiveOffer = \"create_passive_sell_offer\",\n manageOffer = \"manage_sell_offer\",\n setOptions = \"set_options\",\n changeTrust = \"change_trust\",\n allowTrust = \"allow_trust\",\n accountMerge = \"account_merge\",\n inflation = \"inflation\",\n manageData = \"manage_data\",\n bumpSequence = \"bump_sequence\",\n manageBuyOffer = \"manage_buy_offer\",\n pathPaymentStrictSend = \"path_payment_strict_send\",\n createClaimableBalance = \"create_claimable_balance\",\n claimClaimableBalance = \"claim_claimable_balance\",\n beginSponsoringFutureReserves = \"begin_sponsoring_future_reserves\",\n endSponsoringFutureReserves = \"end_sponsoring_future_reserves\",\n revokeSponsorship = \"revoke_sponsorship\",\n clawback = \"clawback\",\n clawbackClaimableBalance = \"clawback_claimable_balance\",\n setTrustLineFlags = \"set_trust_line_flags\",\n liquidityPoolDeposit = \"liquidity_pool_deposit\",\n liquidityPoolWithdraw = \"liquidity_pool_withdraw\",\n invokeHostFunction = \"invoke_host_function\",\n bumpFootprintExpiration = \"bump_footprint_expiration\",\n restoreFootprint = \"restore_footprint\",\n }\n export enum OperationResponseTypeI {\n createAccount = 0,\n payment = 1,\n pathPayment = 2,\n createPassiveOffer = 3,\n manageOffer = 4,\n setOptions = 5,\n changeTrust = 6,\n allowTrust = 7,\n accountMerge = 8,\n inflation = 9,\n manageData = 10,\n bumpSequence = 11,\n manageBuyOffer = 12,\n pathPaymentStrictSend = 13,\n createClaimableBalance = 14,\n claimClaimableBalance = 15,\n beginSponsoringFutureReserves = 16,\n endSponsoringFutureReserves = 17,\n revokeSponsorship = 18,\n clawback = 19,\n clawbackClaimableBalance = 20,\n setTrustLineFlags = 21,\n liquidityPoolDeposit = 22,\n liquidityPoolWithdraw = 23,\n invokeHostFunction = 24,\n bumpFootprintExpiration = 25,\n restoreFootprint = 26,\n }\n export interface BaseOperationResponse<\n T extends OperationResponseType = OperationResponseType,\n TI extends OperationResponseTypeI = OperationResponseTypeI,\n > extends BaseResponse<\"succeeds\" | \"precedes\" | \"effects\" | \"transaction\"> {\n id: string;\n paging_token: string;\n source_account: string;\n type: T;\n type_i: TI;\n created_at: string;\n transaction_hash: string;\n transaction_successful: boolean;\n }\n export interface CreateAccountOperationResponse extends BaseOperationResponse<\n OperationResponseType.createAccount,\n OperationResponseTypeI.createAccount\n > {\n account: string;\n funder: string;\n starting_balance: string;\n }\n export interface PaymentOperationResponse extends BaseOperationResponse<\n OperationResponseType.payment,\n OperationResponseTypeI.payment\n > {\n from: string;\n to: string;\n asset_type: AssetType;\n asset_code?: string;\n asset_issuer?: string;\n amount: string;\n to_muxed?: string;\n to_muxed_id?: string;\n }\n export interface PathPaymentOperationResponse extends BaseOperationResponse<\n OperationResponseType.pathPayment,\n OperationResponseTypeI.pathPayment\n > {\n amount: string;\n asset_code?: string;\n asset_issuer?: string;\n asset_type: AssetType;\n from: string;\n path: Array<{\n asset_code: string;\n asset_issuer: string;\n asset_type: AssetType;\n }>;\n source_amount: string;\n source_asset_code?: string;\n source_asset_issuer?: string;\n source_asset_type: AssetType;\n source_max: string;\n to: string;\n }\n export interface PathPaymentStrictSendOperationResponse extends BaseOperationResponse<\n OperationResponseType.pathPaymentStrictSend,\n OperationResponseTypeI.pathPaymentStrictSend\n > {\n amount: string;\n asset_code?: string;\n asset_issuer?: string;\n asset_type: AssetType;\n destination_min: string;\n from: string;\n path: Array<{\n asset_code: string;\n asset_issuer: string;\n asset_type: AssetType;\n }>;\n source_amount: string;\n source_asset_code?: string;\n source_asset_issuer?: string;\n source_asset_type: AssetType;\n to: string;\n }\n export interface ManageOfferOperationResponse extends BaseOperationResponse<\n OperationResponseType.manageOffer,\n OperationResponseTypeI.manageOffer\n > {\n offer_id: number | string;\n amount: string;\n buying_asset_type: AssetType;\n buying_asset_code?: string;\n buying_asset_issuer?: string;\n price: string;\n price_r: PriceR;\n selling_asset_type: AssetType;\n selling_asset_code?: string;\n selling_asset_issuer?: string;\n }\n export interface PassiveOfferOperationResponse extends BaseOperationResponse<\n OperationResponseType.createPassiveOffer,\n OperationResponseTypeI.createPassiveOffer\n > {\n offer_id: number | string;\n amount: string;\n buying_asset_type: AssetType;\n buying_asset_code?: string;\n buying_asset_issuer?: string;\n price: string;\n price_r: PriceR;\n selling_asset_type: AssetType;\n selling_asset_code?: string;\n selling_asset_issuer?: string;\n }\n export interface SetOptionsOperationResponse extends BaseOperationResponse<\n OperationResponseType.setOptions,\n OperationResponseTypeI.setOptions\n > {\n signer_key?: string;\n signer_weight?: number;\n master_key_weight?: number;\n low_threshold?: number;\n med_threshold?: number;\n high_threshold?: number;\n home_domain?: string;\n set_flags: Array<1 | 2 | 4>;\n set_flags_s: Array<\n | \"auth_required_flag\"\n | \"auth_revocable_flag\"\n | \"auth_clawback_enabled_flag\"\n >;\n clear_flags: Array<1 | 2 | 4>;\n clear_flags_s: Array<\n | \"auth_required_flag\"\n | \"auth_revocable_flag\"\n | \"auth_clawback_enabled_flag\"\n >;\n }\n export interface ChangeTrustOperationResponse extends BaseOperationResponse<\n OperationResponseType.changeTrust,\n OperationResponseTypeI.changeTrust\n > {\n asset_type:\n | AssetType.credit4\n | AssetType.credit12\n | AssetType.liquidityPoolShares;\n asset_code?: string;\n asset_issuer?: string;\n liquidity_pool_id?: string;\n trustee?: string;\n trustor: string;\n limit: string;\n }\n export interface AllowTrustOperationResponse extends BaseOperationResponse<\n OperationResponseType.allowTrust,\n OperationResponseTypeI.allowTrust\n > {\n asset_type: AssetType;\n asset_code: string;\n asset_issuer: string;\n authorize: boolean;\n authorize_to_maintain_liabilities: boolean;\n trustee: string;\n trustor: string;\n }\n export interface AccountMergeOperationResponse extends BaseOperationResponse<\n OperationResponseType.accountMerge,\n OperationResponseTypeI.accountMerge\n > {\n into: string;\n }\n export interface InflationOperationResponse extends BaseOperationResponse<\n OperationResponseType.inflation,\n OperationResponseTypeI.inflation\n > {}\n export interface ManageDataOperationResponse extends BaseOperationResponse<\n OperationResponseType.manageData,\n OperationResponseTypeI.manageData\n > {\n name: string;\n value: Buffer;\n }\n export interface BumpSequenceOperationResponse extends BaseOperationResponse<\n OperationResponseType.bumpSequence,\n OperationResponseTypeI.bumpSequence\n > {\n bump_to: string;\n }\n export interface Predicate {\n and?: Predicate[];\n or?: Predicate[];\n not?: Predicate;\n abs_before?: string;\n rel_before?: string;\n }\n\n export interface Claimant {\n destination: string;\n predicate: Predicate;\n }\n\n export interface CreateClaimableBalanceOperationResponse extends BaseOperationResponse<\n OperationResponseType.createClaimableBalance,\n OperationResponseTypeI.createClaimableBalance\n > {\n asset: string;\n amount: string;\n sponsor: string;\n claimants: Claimant[];\n }\n\n export interface ClaimClaimableBalanceOperationResponse extends BaseOperationResponse<\n OperationResponseType.claimClaimableBalance,\n OperationResponseTypeI.claimClaimableBalance\n > {\n balance_id: string;\n claimant: string;\n }\n\n export interface BeginSponsoringFutureReservesOperationResponse extends BaseOperationResponse<\n OperationResponseType.beginSponsoringFutureReserves,\n OperationResponseTypeI.beginSponsoringFutureReserves\n > {\n sponsored_id: string;\n }\n\n export interface EndSponsoringFutureReservesOperationResponse extends BaseOperationResponse<\n OperationResponseType.endSponsoringFutureReserves,\n OperationResponseTypeI.endSponsoringFutureReserves\n > {\n begin_sponsor: string;\n }\n\n export interface RevokeSponsorshipOperationResponse extends BaseOperationResponse<\n OperationResponseType.revokeSponsorship,\n OperationResponseTypeI.revokeSponsorship\n > {\n account_id?: string;\n claimable_balance_id?: string;\n data_account_id?: string;\n data_name?: string;\n offer_id?: string;\n trustline_account_id?: string;\n trustline_asset?: string;\n trustline_liquidity_pool_id?: string;\n signer_account_id?: string;\n signer_key?: string;\n }\n\n export interface ClawbackOperationResponse extends BaseOperationResponse<\n OperationResponseType.clawback,\n OperationResponseTypeI.clawback\n > {\n asset_type: AssetType;\n asset_code: string;\n asset_issuer: string;\n from: string;\n amount: string;\n }\n\n export interface ClawbackClaimableBalanceOperationResponse extends BaseOperationResponse<\n OperationResponseType.clawbackClaimableBalance,\n OperationResponseTypeI.clawbackClaimableBalance\n > {\n balance_id: string;\n }\n\n export interface SetTrustLineFlagsOperationResponse extends BaseOperationResponse<\n OperationResponseType.setTrustLineFlags,\n OperationResponseTypeI.setTrustLineFlags\n > {\n asset_type: AssetType;\n asset_code: string;\n asset_issuer: string;\n trustor: string;\n set_flags: Array<1 | 2 | 4>;\n clear_flags: Array<1 | 2 | 4>;\n }\n export interface Reserve {\n asset: string;\n amount: string;\n }\n export interface DepositLiquidityOperationResponse extends BaseOperationResponse<\n OperationResponseType.liquidityPoolDeposit,\n OperationResponseTypeI.liquidityPoolDeposit\n > {\n liquidity_pool_id: string;\n reserves_max: Reserve[];\n min_price: string;\n min_price_r: PriceRShorthand;\n max_price: string;\n max_price_r: PriceRShorthand;\n reserves_deposited: Reserve[];\n shares_received: string;\n }\n export interface WithdrawLiquidityOperationResponse extends BaseOperationResponse<\n OperationResponseType.liquidityPoolWithdraw,\n OperationResponseTypeI.liquidityPoolWithdraw\n > {\n liquidity_pool_id: string;\n reserves_min: Reserve[];\n shares: string;\n reserves_received: Reserve[];\n }\n\n export interface BalanceChange {\n asset_type: string;\n asset_code?: string;\n asset_issuer?: string;\n\n type: string;\n from: string;\n to: string;\n amount: string;\n destination_muxed_id?: string;\n }\n\n export interface InvokeHostFunctionOperationResponse extends BaseOperationResponse<\n OperationResponseType.invokeHostFunction,\n OperationResponseTypeI.invokeHostFunction\n > {\n function: string;\n parameters: {\n value: string;\n type: string;\n }[];\n address: string;\n salt: string;\n asset_balance_changes: BalanceChange[];\n }\n\n export interface BumpFootprintExpirationOperationResponse extends BaseOperationResponse<\n OperationResponseType.bumpFootprintExpiration,\n OperationResponseTypeI.bumpFootprintExpiration\n > {\n ledgers_to_expire: number;\n }\n\n export interface RestoreFootprintOperationResponse extends BaseOperationResponse<\n OperationResponseType.restoreFootprint,\n OperationResponseTypeI.restoreFootprint\n > {}\n\n export interface ResponseCollection<T extends BaseResponse = BaseResponse> {\n _links: {\n self: ResponseLink;\n next: ResponseLink;\n prev: ResponseLink;\n };\n _embedded: {\n records: T[];\n };\n }\n export interface TransactionResponseCollection extends ResponseCollection<TransactionResponse> {}\n\n export interface FeeDistribution {\n max: string;\n min: string;\n mode: string;\n p10: string;\n p20: string;\n p30: string;\n p40: string;\n p50: string;\n p60: string;\n p70: string;\n p80: string;\n p90: string;\n p95: string;\n p99: string;\n }\n export interface FeeStatsResponse {\n last_ledger: string;\n last_ledger_base_fee: string;\n ledger_capacity_usage: string;\n fee_charged: FeeDistribution;\n max_fee: FeeDistribution;\n }\n\n export type ErrorResponseData =\n | ErrorResponseData.RateLimitExceeded\n | ErrorResponseData.InternalServerError\n | ErrorResponseData.TransactionFailed;\n\n export namespace ErrorResponseData {\n export interface Base {\n status: number;\n title: string;\n type: string; // TODO\n details: string; // TODO\n instance: string; // TODO\n }\n\n export interface RateLimitExceeded extends Base {\n status: 429;\n title: \"Rate Limit Exceeded\";\n }\n export interface InternalServerError extends Base {\n status: 500;\n title: \"Internal Server Error\";\n }\n export interface TransactionFailed extends Base {\n status: 400;\n title: \"Transaction Failed\";\n extras: TransactionFailedExtras;\n }\n }\n\n export enum TransactionFailedResultCodes {\n TX_FAILED = \"tx_failed\",\n TX_BAD_SEQ = \"tx_bad_seq\",\n TX_BAD_AUTH = \"tx_bad_auth\",\n TX_BAD_AUTH_EXTRA = \"tx_bad_auth_extra\",\n TX_FEE_BUMP_INNER_SUCCESS = \"tx_fee_bump_inner_success\",\n TX_FEE_BUMP_INNER_FAILED = \"tx_fee_bump_inner_failed\",\n TX_NOT_SUPPORTED = \"tx_not_supported\",\n TX_SUCCESS = \"tx_success\",\n TX_TOO_EARLY = \"tx_too_early\",\n TX_TOO_LATE = \"tx_too_late\",\n TX_MISSING_OPERATION = \"tx_missing_operation\",\n TX_INSUFFICIENT_BALANCE = \"tx_insufficient_balance\",\n TX_NO_SOURCE_ACCOUNT = \"tx_no_source_account\",\n TX_INSUFFICIENT_FEE = \"tx_insufficient_fee\",\n TX_INTERNAL_ERROR = \"tx_internal_error\",\n }\n\n export interface TransactionFailedExtras {\n envelope_xdr: string; // base64\n result_codes: {\n transaction: TransactionFailedResultCodes;\n operations: string[];\n };\n result_xdr: string;\n }\n\n export interface RootResponse {\n horizon_version: string;\n core_version: string;\n ingest_latest_ledger: number;\n history_latest_ledger: number;\n history_latest_ledger_closed_at: string;\n history_elder_ledger: number;\n core_latest_ledger: number;\n network_passphrase: string;\n current_protocol_version: number;\n supported_protocol_version: number;\n core_supported_protocol_version: number;\n }\n}\n"],"names":["HorizonApi","LiquidityPoolType","OperationResponseType","OperationResponseTypeI","TransactionFailedResultCodes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"horizon_api.js","sources":["../../../src/horizon/horizon_api.ts"],"sourcesContent":["import type { AssetType, MemoType } from \"../base/index.js\";\n\n/* tslint:disable-next-line:no-namespace */\nexport namespace HorizonApi {\n export interface ResponseLink {\n href: string;\n templated?: boolean;\n }\n export interface BaseResponse<T extends string = never> {\n _links: { [key in T | \"self\"]: ResponseLink };\n }\n\n export interface SubmitTransactionResponse {\n hash: string;\n ledger: number;\n successful: boolean;\n envelope_xdr: string;\n result_xdr: string;\n result_meta_xdr: string;\n paging_token: string;\n }\n\n export interface SubmitAsyncTransactionResponse {\n hash: string;\n tx_status: string;\n error_result_xdr: string;\n }\n\n export interface FeeBumpTransactionResponse {\n hash: string;\n signatures: string[];\n }\n\n export interface InnerTransactionResponse {\n hash: string;\n signatures: string[];\n max_fee: string;\n }\n\n export interface TransactionPreconditions {\n timebounds?: {\n min_time: string;\n max_time: string;\n };\n ledgerbounds?: {\n min_ledger: number;\n max_ledger: number;\n };\n min_account_sequence?: string;\n min_account_sequence_age?: string;\n min_account_sequence_ledger_gap?: number;\n extra_signers?: string[];\n }\n\n export interface TransactionResponse\n extends\n SubmitTransactionResponse,\n BaseResponse<\n | \"account\"\n | \"ledger\"\n | \"operations\"\n | \"effects\"\n | \"succeeds\"\n | \"precedes\"\n > {\n created_at: string;\n fee_meta_xdr: string;\n fee_charged: number | string;\n max_fee: number | string;\n id: string;\n memo_type: MemoType;\n memo?: string;\n memo_bytes?: string;\n operation_count: number;\n paging_token: string;\n signatures: string[];\n source_account: string;\n source_account_sequence: string;\n fee_account: string;\n inner_transaction?: InnerTransactionResponse;\n fee_bump_transaction?: FeeBumpTransactionResponse;\n preconditions?: TransactionPreconditions;\n }\n\n export interface BalanceLineNative {\n balance: string;\n asset_type: AssetType.native;\n buying_liabilities: string;\n selling_liabilities: string;\n }\n export interface BalanceLineLiquidityPool {\n liquidity_pool_id: string;\n asset_type: AssetType.liquidityPoolShares;\n balance: string;\n limit: string;\n last_modified_ledger: number;\n is_authorized: boolean;\n is_authorized_to_maintain_liabilities: boolean;\n is_clawback_enabled: boolean;\n sponsor?: string;\n }\n export interface BalanceLineAsset<\n T extends AssetType.credit4 | AssetType.credit12 =\n | AssetType.credit4\n | AssetType.credit12,\n > {\n balance: string;\n limit: string;\n asset_type: T;\n asset_code: string;\n asset_issuer: string;\n buying_liabilities: string;\n selling_liabilities: string;\n last_modified_ledger: number;\n is_authorized: boolean;\n is_authorized_to_maintain_liabilities: boolean;\n is_clawback_enabled: boolean;\n sponsor?: string;\n }\n export type BalanceLine<T extends AssetType = AssetType> =\n T extends AssetType.native\n ? BalanceLineNative\n : T extends AssetType.credit4 | AssetType.credit12\n ? BalanceLineAsset<T>\n : T extends AssetType.liquidityPoolShares\n ? BalanceLineLiquidityPool\n : BalanceLineNative | BalanceLineAsset | BalanceLineLiquidityPool;\n\n export interface AssetAccounts {\n authorized: number;\n authorized_to_maintain_liabilities: number;\n unauthorized: number;\n }\n export interface AssetBalances {\n authorized: string;\n authorized_to_maintain_liabilities: string;\n unauthorized: string;\n }\n\n export interface PriceR {\n numerator: number;\n denominator: number;\n }\n\n export interface PriceRShorthand {\n n: number;\n d: number;\n }\n\n export interface AccountThresholds {\n low_threshold: number;\n med_threshold: number;\n high_threshold: number;\n }\n export interface Flags {\n auth_immutable: boolean;\n auth_required: boolean;\n auth_revocable: boolean;\n auth_clawback_enabled: boolean;\n }\n export interface AccountSigner {\n key: string;\n weight: number;\n type: string;\n sponsor?: string;\n }\n export interface AccountResponse extends BaseResponse<\n | \"transactions\"\n | \"operations\"\n | \"payments\"\n | \"effects\"\n | \"offers\"\n | \"trades\"\n | \"data\"\n > {\n id: string;\n paging_token: string;\n account_id: string;\n sequence: string;\n sequence_ledger?: number;\n sequence_time?: string;\n subentry_count: number;\n thresholds: AccountThresholds;\n last_modified_ledger: number;\n last_modified_time: string;\n flags: Flags;\n balances: BalanceLine[];\n signers: AccountSigner[];\n data: {\n [key: string]: string;\n };\n sponsor?: string;\n num_sponsoring: number;\n num_sponsored: number;\n }\n\n export enum LiquidityPoolType {\n constantProduct = \"constant_product\",\n }\n\n export enum OperationResponseType {\n createAccount = \"create_account\",\n payment = \"payment\",\n pathPayment = \"path_payment_strict_receive\",\n createPassiveOffer = \"create_passive_sell_offer\",\n manageOffer = \"manage_sell_offer\",\n setOptions = \"set_options\",\n changeTrust = \"change_trust\",\n allowTrust = \"allow_trust\",\n accountMerge = \"account_merge\",\n inflation = \"inflation\",\n manageData = \"manage_data\",\n bumpSequence = \"bump_sequence\",\n manageBuyOffer = \"manage_buy_offer\",\n pathPaymentStrictSend = \"path_payment_strict_send\",\n createClaimableBalance = \"create_claimable_balance\",\n claimClaimableBalance = \"claim_claimable_balance\",\n beginSponsoringFutureReserves = \"begin_sponsoring_future_reserves\",\n endSponsoringFutureReserves = \"end_sponsoring_future_reserves\",\n revokeSponsorship = \"revoke_sponsorship\",\n clawback = \"clawback\",\n clawbackClaimableBalance = \"clawback_claimable_balance\",\n setTrustLineFlags = \"set_trust_line_flags\",\n liquidityPoolDeposit = \"liquidity_pool_deposit\",\n liquidityPoolWithdraw = \"liquidity_pool_withdraw\",\n invokeHostFunction = \"invoke_host_function\",\n bumpFootprintExpiration = \"bump_footprint_expiration\",\n restoreFootprint = \"restore_footprint\",\n }\n export enum OperationResponseTypeI {\n createAccount = 0,\n payment = 1,\n pathPayment = 2,\n createPassiveOffer = 3,\n manageOffer = 4,\n setOptions = 5,\n changeTrust = 6,\n allowTrust = 7,\n accountMerge = 8,\n inflation = 9,\n manageData = 10,\n bumpSequence = 11,\n manageBuyOffer = 12,\n pathPaymentStrictSend = 13,\n createClaimableBalance = 14,\n claimClaimableBalance = 15,\n beginSponsoringFutureReserves = 16,\n endSponsoringFutureReserves = 17,\n revokeSponsorship = 18,\n clawback = 19,\n clawbackClaimableBalance = 20,\n setTrustLineFlags = 21,\n liquidityPoolDeposit = 22,\n liquidityPoolWithdraw = 23,\n invokeHostFunction = 24,\n bumpFootprintExpiration = 25,\n restoreFootprint = 26,\n }\n export interface BaseOperationResponse<\n T extends OperationResponseType = OperationResponseType,\n TI extends OperationResponseTypeI = OperationResponseTypeI,\n > extends BaseResponse<\"succeeds\" | \"precedes\" | \"effects\" | \"transaction\"> {\n id: string;\n paging_token: string;\n source_account: string;\n type: T;\n type_i: TI;\n created_at: string;\n transaction_hash: string;\n transaction_successful: boolean;\n }\n export interface CreateAccountOperationResponse extends BaseOperationResponse<\n OperationResponseType.createAccount,\n OperationResponseTypeI.createAccount\n > {\n account: string;\n funder: string;\n starting_balance: string;\n }\n export interface PaymentOperationResponse extends BaseOperationResponse<\n OperationResponseType.payment,\n OperationResponseTypeI.payment\n > {\n from: string;\n to: string;\n asset_type: AssetType;\n asset_code?: string;\n asset_issuer?: string;\n amount: string;\n to_muxed?: string;\n to_muxed_id?: string;\n }\n export interface PathPaymentOperationResponse extends BaseOperationResponse<\n OperationResponseType.pathPayment,\n OperationResponseTypeI.pathPayment\n > {\n amount: string;\n asset_code?: string;\n asset_issuer?: string;\n asset_type: AssetType;\n from: string;\n path: Array<{\n asset_code: string;\n asset_issuer: string;\n asset_type: AssetType;\n }>;\n source_amount: string;\n source_asset_code?: string;\n source_asset_issuer?: string;\n source_asset_type: AssetType;\n source_max: string;\n to: string;\n }\n export interface PathPaymentStrictSendOperationResponse extends BaseOperationResponse<\n OperationResponseType.pathPaymentStrictSend,\n OperationResponseTypeI.pathPaymentStrictSend\n > {\n amount: string;\n asset_code?: string;\n asset_issuer?: string;\n asset_type: AssetType;\n destination_min: string;\n from: string;\n path: Array<{\n asset_code: string;\n asset_issuer: string;\n asset_type: AssetType;\n }>;\n source_amount: string;\n source_asset_code?: string;\n source_asset_issuer?: string;\n source_asset_type: AssetType;\n to: string;\n }\n export interface ManageOfferOperationResponse extends BaseOperationResponse<\n OperationResponseType.manageOffer,\n OperationResponseTypeI.manageOffer\n > {\n offer_id: number | string;\n amount: string;\n buying_asset_type: AssetType;\n buying_asset_code?: string;\n buying_asset_issuer?: string;\n price: string;\n price_r: PriceR;\n selling_asset_type: AssetType;\n selling_asset_code?: string;\n selling_asset_issuer?: string;\n }\n export interface PassiveOfferOperationResponse extends BaseOperationResponse<\n OperationResponseType.createPassiveOffer,\n OperationResponseTypeI.createPassiveOffer\n > {\n offer_id: number | string;\n amount: string;\n buying_asset_type: AssetType;\n buying_asset_code?: string;\n buying_asset_issuer?: string;\n price: string;\n price_r: PriceR;\n selling_asset_type: AssetType;\n selling_asset_code?: string;\n selling_asset_issuer?: string;\n }\n export interface SetOptionsOperationResponse extends BaseOperationResponse<\n OperationResponseType.setOptions,\n OperationResponseTypeI.setOptions\n > {\n signer_key?: string;\n signer_weight?: number;\n master_key_weight?: number;\n low_threshold?: number;\n med_threshold?: number;\n high_threshold?: number;\n home_domain?: string;\n set_flags: Array<1 | 2 | 4>;\n set_flags_s: Array<\n | \"auth_required_flag\"\n | \"auth_revocable_flag\"\n | \"auth_clawback_enabled_flag\"\n >;\n clear_flags: Array<1 | 2 | 4>;\n clear_flags_s: Array<\n | \"auth_required_flag\"\n | \"auth_revocable_flag\"\n | \"auth_clawback_enabled_flag\"\n >;\n }\n export interface ChangeTrustOperationResponse extends BaseOperationResponse<\n OperationResponseType.changeTrust,\n OperationResponseTypeI.changeTrust\n > {\n asset_type:\n | AssetType.credit4\n | AssetType.credit12\n | AssetType.liquidityPoolShares;\n asset_code?: string;\n asset_issuer?: string;\n liquidity_pool_id?: string;\n trustee?: string;\n trustor: string;\n limit: string;\n }\n export interface AllowTrustOperationResponse extends BaseOperationResponse<\n OperationResponseType.allowTrust,\n OperationResponseTypeI.allowTrust\n > {\n asset_type: AssetType;\n asset_code: string;\n asset_issuer: string;\n authorize: boolean;\n authorize_to_maintain_liabilities: boolean;\n trustee: string;\n trustor: string;\n }\n export interface AccountMergeOperationResponse extends BaseOperationResponse<\n OperationResponseType.accountMerge,\n OperationResponseTypeI.accountMerge\n > {\n into: string;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- empty interface names a public API response type\n export interface InflationOperationResponse extends BaseOperationResponse<\n OperationResponseType.inflation,\n OperationResponseTypeI.inflation\n > {}\n export interface ManageDataOperationResponse extends BaseOperationResponse<\n OperationResponseType.manageData,\n OperationResponseTypeI.manageData\n > {\n name: string;\n value: Buffer;\n }\n export interface BumpSequenceOperationResponse extends BaseOperationResponse<\n OperationResponseType.bumpSequence,\n OperationResponseTypeI.bumpSequence\n > {\n bump_to: string;\n }\n export interface Predicate {\n and?: Predicate[];\n or?: Predicate[];\n not?: Predicate;\n abs_before?: string;\n rel_before?: string;\n }\n\n export interface Claimant {\n destination: string;\n predicate: Predicate;\n }\n\n export interface CreateClaimableBalanceOperationResponse extends BaseOperationResponse<\n OperationResponseType.createClaimableBalance,\n OperationResponseTypeI.createClaimableBalance\n > {\n asset: string;\n amount: string;\n sponsor: string;\n claimants: Claimant[];\n }\n\n export interface ClaimClaimableBalanceOperationResponse extends BaseOperationResponse<\n OperationResponseType.claimClaimableBalance,\n OperationResponseTypeI.claimClaimableBalance\n > {\n balance_id: string;\n claimant: string;\n }\n\n export interface BeginSponsoringFutureReservesOperationResponse extends BaseOperationResponse<\n OperationResponseType.beginSponsoringFutureReserves,\n OperationResponseTypeI.beginSponsoringFutureReserves\n > {\n sponsored_id: string;\n }\n\n export interface EndSponsoringFutureReservesOperationResponse extends BaseOperationResponse<\n OperationResponseType.endSponsoringFutureReserves,\n OperationResponseTypeI.endSponsoringFutureReserves\n > {\n begin_sponsor: string;\n }\n\n export interface RevokeSponsorshipOperationResponse extends BaseOperationResponse<\n OperationResponseType.revokeSponsorship,\n OperationResponseTypeI.revokeSponsorship\n > {\n account_id?: string;\n claimable_balance_id?: string;\n data_account_id?: string;\n data_name?: string;\n offer_id?: string;\n trustline_account_id?: string;\n trustline_asset?: string;\n trustline_liquidity_pool_id?: string;\n signer_account_id?: string;\n signer_key?: string;\n }\n\n export interface ClawbackOperationResponse extends BaseOperationResponse<\n OperationResponseType.clawback,\n OperationResponseTypeI.clawback\n > {\n asset_type: AssetType;\n asset_code: string;\n asset_issuer: string;\n from: string;\n amount: string;\n }\n\n export interface ClawbackClaimableBalanceOperationResponse extends BaseOperationResponse<\n OperationResponseType.clawbackClaimableBalance,\n OperationResponseTypeI.clawbackClaimableBalance\n > {\n balance_id: string;\n }\n\n export interface SetTrustLineFlagsOperationResponse extends BaseOperationResponse<\n OperationResponseType.setTrustLineFlags,\n OperationResponseTypeI.setTrustLineFlags\n > {\n asset_type: AssetType;\n asset_code: string;\n asset_issuer: string;\n trustor: string;\n set_flags: Array<1 | 2 | 4>;\n clear_flags: Array<1 | 2 | 4>;\n }\n export interface Reserve {\n asset: string;\n amount: string;\n }\n export interface DepositLiquidityOperationResponse extends BaseOperationResponse<\n OperationResponseType.liquidityPoolDeposit,\n OperationResponseTypeI.liquidityPoolDeposit\n > {\n liquidity_pool_id: string;\n reserves_max: Reserve[];\n min_price: string;\n min_price_r: PriceRShorthand;\n max_price: string;\n max_price_r: PriceRShorthand;\n reserves_deposited: Reserve[];\n shares_received: string;\n }\n export interface WithdrawLiquidityOperationResponse extends BaseOperationResponse<\n OperationResponseType.liquidityPoolWithdraw,\n OperationResponseTypeI.liquidityPoolWithdraw\n > {\n liquidity_pool_id: string;\n reserves_min: Reserve[];\n shares: string;\n reserves_received: Reserve[];\n }\n\n export interface BalanceChange {\n asset_type: string;\n asset_code?: string;\n asset_issuer?: string;\n\n type: string;\n from: string;\n to: string;\n amount: string;\n destination_muxed_id?: string;\n }\n\n export interface InvokeHostFunctionOperationResponse extends BaseOperationResponse<\n OperationResponseType.invokeHostFunction,\n OperationResponseTypeI.invokeHostFunction\n > {\n function: string;\n parameters: {\n value: string;\n type: string;\n }[];\n address: string;\n salt: string;\n asset_balance_changes: BalanceChange[];\n }\n\n export interface BumpFootprintExpirationOperationResponse extends BaseOperationResponse<\n OperationResponseType.bumpFootprintExpiration,\n OperationResponseTypeI.bumpFootprintExpiration\n > {\n ledgers_to_expire: number;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- empty interface names a public API response type\n export interface RestoreFootprintOperationResponse extends BaseOperationResponse<\n OperationResponseType.restoreFootprint,\n OperationResponseTypeI.restoreFootprint\n > {}\n\n export interface ResponseCollection<T extends BaseResponse = BaseResponse> {\n _links: {\n self: ResponseLink;\n next: ResponseLink;\n prev: ResponseLink;\n };\n _embedded: {\n records: T[];\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- empty interface names a public API response type\n export interface TransactionResponseCollection extends ResponseCollection<TransactionResponse> {}\n\n export interface FeeDistribution {\n max: string;\n min: string;\n mode: string;\n p10: string;\n p20: string;\n p30: string;\n p40: string;\n p50: string;\n p60: string;\n p70: string;\n p80: string;\n p90: string;\n p95: string;\n p99: string;\n }\n export interface FeeStatsResponse {\n last_ledger: string;\n last_ledger_base_fee: string;\n ledger_capacity_usage: string;\n fee_charged: FeeDistribution;\n max_fee: FeeDistribution;\n }\n\n export type ErrorResponseData =\n | ErrorResponseData.RateLimitExceeded\n | ErrorResponseData.InternalServerError\n | ErrorResponseData.TransactionFailed;\n\n export namespace ErrorResponseData {\n export interface Base {\n status: number;\n title: string;\n type: string; // TODO\n details: string; // TODO\n instance: string; // TODO\n }\n\n export interface RateLimitExceeded extends Base {\n status: 429;\n title: \"Rate Limit Exceeded\";\n }\n export interface InternalServerError extends Base {\n status: 500;\n title: \"Internal Server Error\";\n }\n export interface TransactionFailed extends Base {\n status: 400;\n title: \"Transaction Failed\";\n extras: TransactionFailedExtras;\n }\n }\n\n export enum TransactionFailedResultCodes {\n TX_FAILED = \"tx_failed\",\n TX_BAD_SEQ = \"tx_bad_seq\",\n TX_BAD_AUTH = \"tx_bad_auth\",\n TX_BAD_AUTH_EXTRA = \"tx_bad_auth_extra\",\n TX_FEE_BUMP_INNER_SUCCESS = \"tx_fee_bump_inner_success\",\n TX_FEE_BUMP_INNER_FAILED = \"tx_fee_bump_inner_failed\",\n TX_NOT_SUPPORTED = \"tx_not_supported\",\n TX_SUCCESS = \"tx_success\",\n TX_TOO_EARLY = \"tx_too_early\",\n TX_TOO_LATE = \"tx_too_late\",\n TX_MISSING_OPERATION = \"tx_missing_operation\",\n TX_INSUFFICIENT_BALANCE = \"tx_insufficient_balance\",\n TX_NO_SOURCE_ACCOUNT = \"tx_no_source_account\",\n TX_INSUFFICIENT_FEE = \"tx_insufficient_fee\",\n TX_INTERNAL_ERROR = \"tx_internal_error\",\n }\n\n export interface TransactionFailedExtras {\n envelope_xdr: string; // base64\n result_codes: {\n transaction: TransactionFailedResultCodes;\n operations: string[];\n };\n result_xdr: string;\n }\n\n export interface RootResponse {\n horizon_version: string;\n core_version: string;\n ingest_latest_ledger: number;\n history_latest_ledger: number;\n history_latest_ledger_closed_at: string;\n history_elder_ledger: number;\n core_latest_ledger: number;\n network_passphrase: string;\n current_protocol_version: number;\n supported_protocol_version: number;\n core_supported_protocol_version: number;\n }\n}\n"],"names":["HorizonApi","LiquidityPoolType","OperationResponseType","OperationResponseTypeI","TransactionFailedResultCodes"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"horizon_axios_client.js","sources":["../../../src/horizon/horizon_axios_client.ts"],"sourcesContent":["import {\n create,\n type HttpClient,\n type HttpResponseHeaders,\n} from \"../http-client/index.js\";\n\
|
|
1
|
+
{"version":3,"file":"horizon_axios_client.js","sources":["../../../src/horizon/horizon_axios_client.ts"],"sourcesContent":["import {\n create,\n type HttpClient,\n type HttpResponseHeaders,\n} from \"../http-client/index.js\";\n\ndeclare const __PACKAGE_VERSION__: string;\nexport const version = __PACKAGE_VERSION__;\n\nexport interface ServerTime {\n serverTime: number;\n localTimeRecorded: number;\n}\n\n/**\n * keep a local map of server times\n * (export this purely for testing purposes)\n *\n * each entry will map the server domain to the last-known time and the local\n * time it was recorded, ex:\n *\n * @example\n * ```ts\n * \"horizon-testnet.stellar.org\": {\n * serverTime: 1552513039,\n * localTimeRecorded: 1552513052\n * }\n * ```\n *\n * @defaultValue `{}`\n */\nexport const SERVER_TIME_MAP: Record<string, ServerTime> = {};\n\nfunction toSeconds(ms: number): number {\n return Math.floor(ms / 1000);\n}\n\nexport function createHttpClient(headers?: Record<string, string>): HttpClient {\n const httpClient = create({\n headers: {\n ...headers,\n \"X-Client-Name\": \"js-stellar-sdk\",\n \"X-Client-Version\": version,\n },\n });\n\n httpClient.interceptors.response.use((response) => {\n const responeUrl = response.config.url;\n if (!responeUrl) {\n return response;\n }\n\n const url = new URL(responeUrl);\n const port = url.port;\n const hostname = port ? `${url.hostname}:${port}` : url.hostname;\n let serverTime = 0;\n if (response.headers instanceof Headers) {\n const dateHeader = response.headers.get(\"date\");\n if (dateHeader) {\n serverTime = toSeconds(Date.parse(dateHeader));\n }\n } else if (\n typeof response.headers === \"object\" &&\n \"date\" in response.headers\n ) {\n const responseHeader = response.headers as HttpResponseHeaders; // Cast response.headers to the correct type\n if (typeof responseHeader.date === \"string\") {\n serverTime = toSeconds(Date.parse(responseHeader.date));\n }\n }\n const localTimeRecorded = toSeconds(new Date().getTime());\n\n if (!Number.isNaN(serverTime)) {\n SERVER_TIME_MAP[hostname] = {\n serverTime,\n localTimeRecorded,\n };\n }\n return response;\n });\n\n return httpClient;\n}\n\n/**\n * Given a hostname, get the current time of that server (i.e., use the last-\n * recorded server time and offset it by the time since then.) If there IS no\n * recorded server time, or it's been 5 minutes since the last, return null.\n *\n * @param hostname - Hostname of a Horizon server.\n * @returns The UNIX timestamp (in seconds, not milliseconds)\n * representing the current time on that server, or `null` if we don't have\n * a record of that time.\n */\nexport function getCurrentServerTime(hostname: string): number | null {\n const entry = SERVER_TIME_MAP[hostname];\n\n if (!entry || !entry.localTimeRecorded || !entry.serverTime) {\n return null;\n }\n\n const { serverTime, localTimeRecorded } = entry;\n const currentTime = toSeconds(new Date().getTime());\n\n // if it's been more than 5 minutes from the last time, then null it out\n if (currentTime - localTimeRecorded > 60 * 5) {\n return null;\n }\n\n return currentTime - localTimeRecorded + serverTime;\n}\n"],"names":["create"],"mappings":";;;;AAOO,MAAM,OAAA,GAAU;AAwBhB,MAAM,kBAA8C;AAE3D,SAAS,UAAU,EAAA,EAAoB;AACrC,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,GAAI,CAAA;AAC7B;AAEO,SAAS,iBAAiB,OAAA,EAA8C;AAC7E,EAAA,MAAM,aAAaA,kBAAA,CAAO;AAAA,IACxB,OAAA,EAAS;AAAA,MACP,GAAG,OAAA;AAAA,MACH,eAAA,EAAiB,gBAAA;AAAA,MACjB,kBAAA,EAAoB;AAAA;AACtB,GACD,CAAA;AAED,EAAA,UAAA,CAAW,YAAA,CAAa,QAAA,CAAS,GAAA,CAAI,CAAC,QAAA,KAAa;AACjD,IAAA,MAAM,UAAA,GAAa,SAAS,MAAA,CAAO,GAAA;AACnC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,UAAU,CAAA;AAC9B,IAAA,MAAM,OAAO,GAAA,CAAI,IAAA;AACjB,IAAA,MAAM,QAAA,GAAW,OAAO,CAAA,EAAG,GAAA,CAAI,QAAQ,CAAA,CAAA,EAAI,IAAI,KAAK,GAAA,CAAI,QAAA;AACxD,IAAA,IAAI,UAAA,GAAa,CAAA;AACjB,IAAA,IAAI,QAAA,CAAS,mBAAmB,OAAA,EAAS;AACvC,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA;AAC9C,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,UAAA,GAAa,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,MAC/C;AAAA,IACF,WACE,OAAO,QAAA,CAAS,YAAY,QAAA,IAC5B,MAAA,IAAU,SAAS,OAAA,EACnB;AACA,MAAA,MAAM,iBAAiB,QAAA,CAAS,OAAA;AAChC,MAAA,IAAI,OAAO,cAAA,CAAe,IAAA,KAAS,QAAA,EAAU;AAC3C,QAAA,UAAA,GAAa,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,MACxD;AAAA,IACF;AACA,IAAA,MAAM,oBAAoB,SAAA,CAAA,iBAAU,IAAI,IAAA,EAAK,EAAE,SAAS,CAAA;AAExD,IAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,UAAU,CAAA,EAAG;AAC7B,MAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI;AAAA,QAC1B,UAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO,QAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,OAAO,UAAA;AACT;AAYO,SAAS,qBAAqB,QAAA,EAAiC;AACpE,EAAA,MAAM,KAAA,GAAQ,gBAAgB,QAAQ,CAAA;AAEtC,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,MAAM,iBAAA,IAAqB,CAAC,MAAM,UAAA,EAAY;AAC3D,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,EAAE,UAAA,EAAY,iBAAA,EAAkB,GAAI,KAAA;AAC1C,EAAA,MAAM,cAAc,SAAA,CAAA,iBAAU,IAAI,IAAA,EAAK,EAAE,SAAS,CAAA;AAGlD,EAAA,IAAI,WAAA,GAAc,iBAAA,GAAoB,EAAA,GAAK,CAAA,EAAG;AAC5C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,cAAc,iBAAA,GAAoB,UAAA;AAC3C;;;;;;;"}
|
|
@@ -360,7 +360,7 @@ function createFetchClient(fetchConfig = {}) {
|
|
|
360
360
|
reject(makeCanceledError(cancelToken.reason));
|
|
361
361
|
});
|
|
362
362
|
}
|
|
363
|
-
|
|
363
|
+
const modifiedConfig = config;
|
|
364
364
|
if (requestInterceptors.handlers.length > 0) {
|
|
365
365
|
const chain = requestInterceptors.handlers.filter(
|
|
366
366
|
(interceptor) => interceptor !== null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-client.js","sources":["../../../src/http-client/fetch-client.ts"],"sourcesContent":["import type {\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n AxiosStatic,\n CreateAxiosDefaults,\n} from \"feaxios\";\nimport axios from \"feaxios\";\nimport {\n CancelToken,\n type HttpClient,\n type HttpClientRequestConfig,\n type HttpClientResponse,\n type Interceptor,\n} from \"./types.js\";\n\nexport interface HttpResponse<T = any> extends AxiosResponse<T> {\n // You can add any additional properties here if needed\n}\n\nexport interface FetchClientConfig<T = any> extends AxiosRequestConfig {\n adapter?: (config: HttpClientRequestConfig) => Promise<HttpClientResponse<T>>;\n // You can add any additional configuration options here\n cancelToken?: CancelToken;\n}\n\ntype InterceptorFulfilled<V> = (value: V) => V | Promise<V>;\ntype InterceptorRejected = (error: any) => any;\n\n// Marker used so `isCancel` can identify cancellations by tag rather than\n// message text. Without this, a caller that passed a custom reason via\n// `cancel(\"timeout of 1000ms exceeded\")` would see `isCancel(err) === false`.\nconst CANCELED_MARKER = Symbol.for(\"@stellar/stellar-sdk.canceled\");\n\nfunction makeCanceledError(reason?: string): Error {\n const err = new Error(reason || \"Request canceled\") as Error & {\n [CANCELED_MARKER]?: true;\n };\n err[CANCELED_MARKER] = true;\n return err;\n}\n\nclass InterceptorManager<V> {\n handlers: Array<Interceptor<V> | null> = [];\n\n use(\n fulfilled: InterceptorFulfilled<V>,\n rejected?: InterceptorRejected,\n ): number {\n this.handlers.push({\n fulfilled,\n rejected,\n });\n return this.handlers.length - 1;\n }\n\n eject(id: number): void {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n forEach(fn: (interceptor: Interceptor<V>) => void): void {\n this.handlers.forEach((h) => {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\nfunction getFormConfig(\n config?: HttpClientRequestConfig,\n): HttpClientRequestConfig {\n const formConfig = config || {};\n formConfig.headers = new Headers(formConfig.headers || {});\n formConfig.headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\");\n return formConfig;\n}\n\n// Deep-merges instance defaults with a per-call config so defaults.headers\n// and defaults.params aren't wiped out when the caller supplies their own.\n// The feaxios path merges internally, but the bounded adapter uses the\n// config directly — without this, `create({headers: X}).get(url, {headers: Y})`\n// sent only Y whenever the call also set maxContentLength/maxRedirects.\nfunction mergeWithDefaults(\n defaults: any,\n config?: HttpClientRequestConfig,\n): HttpClientRequestConfig {\n if (!config) return { ...defaults };\n const merged: any = { ...defaults, ...config };\n if (defaults?.headers !== undefined || config.headers !== undefined) {\n const headers = new Headers((defaults?.headers as any) || {});\n new Headers((config.headers as any) || {}).forEach((v, k) => {\n headers.set(k, v);\n });\n merged.headers = headers;\n }\n if (defaults?.params !== undefined || config.params !== undefined) {\n merged.params = { ...(defaults?.params || {}), ...(config.params || {}) };\n }\n return merged;\n}\n\nfunction buildBoundedUrl(config: HttpClientRequestConfig): string {\n let url = config.url || \"\";\n if (config.baseURL && url && !/^https?:\\/\\//i.test(url)) {\n url = url.replace(/^\\/?/, `${config.baseURL.replace(/\\/$/, \"\")}/`);\n }\n if (config.params && Object.keys(config.params).length > 0) {\n const qs = new URLSearchParams(\n config.params as Record<string, string>,\n ).toString();\n url += (url.includes(\"?\") ? \"&\" : \"?\") + qs;\n }\n return url;\n}\n\n// Mirrors feaxios's defaultTransformer: serialize request bodies based on\n// their JS type and set an appropriate Content-Type when one isn't already\n// present. Without this, a caller using the bounded adapter on POST/PUT with\n// an object body would send [object Object] instead of JSON.\nfunction encodeRequestBody(data: any, headers: Headers): BodyInit | undefined {\n if (data === undefined || data === null) return undefined;\n if (typeof data === \"string\") return data;\n if (data instanceof URLSearchParams) {\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/x-www-form-urlencoded\");\n }\n return data;\n }\n if (\n data instanceof Blob ||\n data instanceof ArrayBuffer ||\n ArrayBuffer.isView(data)\n ) {\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/octet-stream\");\n }\n return data as BodyInit;\n }\n if (typeof FormData !== \"undefined\" && data instanceof FormData) {\n // Let fetch set the multipart boundary.\n return data;\n }\n // Default: JSON-encode plain objects.\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n return JSON.stringify(data);\n}\n\nasync function readBodyBounded(\n response: Response,\n maxContentLength?: number,\n): Promise<Uint8Array> {\n if (maxContentLength !== undefined) {\n const headerLen = response.headers.get(\"content-length\");\n if (headerLen && Number(headerLen) > maxContentLength) {\n throw new Error(`maxContentLength size of ${maxContentLength} exceeded`);\n }\n }\n\n if (!response.body) return new Uint8Array(0);\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let total = 0;\n // Streamed enforcement: abort as soon as running total exceeds the cap,\n // before the full body reaches memory.\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) {\n total += value.byteLength;\n if (maxContentLength !== undefined && total > maxContentLength) {\n await reader.cancel();\n throw new Error(\n `maxContentLength size of ${maxContentLength} exceeded`,\n );\n }\n chunks.push(value);\n }\n }\n\n const out = new Uint8Array(total);\n let offset = 0;\n for (const c of chunks) {\n out.set(c, offset);\n offset += c.byteLength;\n }\n return out;\n}\n// AbortSignal.timeout and AbortSignal.any are relatively recent (Safari 17.4,\n// Firefox 124, Chrome 116; Node 20.3). Feature-detect and fall back to\n// AbortController + setTimeout so the no-axios browser bundle works on older\n// runtimes.\nfunction createTimeoutSignal(ms: number): AbortSignal {\n if (\n typeof AbortSignal !== \"undefined\" &&\n typeof AbortSignal.timeout === \"function\"\n ) {\n return AbortSignal.timeout(ms);\n }\n const controller = new AbortController();\n setTimeout(() => {\n // Must set .name = \"TimeoutError\" (not .message), because the bounded\n // adapter's catch rewrites to the axios-shaped message based on the\n // error's name. An Error whose message happens to be \"TimeoutError\"\n // but whose name is \"Error\" silently falls through to the generic\n // rethrow branch.\n const err = new Error(\"Timeout\") as Error;\n err.name = \"TimeoutError\";\n controller.abort(err);\n }, ms);\n return controller.signal;\n}\n\nfunction composeSignals(signals: AbortSignal[]): AbortSignal | undefined {\n if (signals.length === 0) return undefined;\n if (signals.length === 1) return signals[0];\n if (\n typeof AbortSignal !== \"undefined\" &&\n typeof AbortSignal.any === \"function\"\n ) {\n return AbortSignal.any(signals);\n }\n const controller = new AbortController();\n for (const s of signals) {\n if (s.aborted) {\n controller.abort(s.reason);\n break;\n }\n s.addEventListener(\"abort\", () => controller.abort(s.reason), {\n once: true,\n });\n }\n return controller.signal;\n}\n\n// Node is the only environment where `redirect: \"manual\"` reliably exposes\n// status and Location. In browsers a cross-origin manual redirect yields an\n// opaqueredirect response (status 0, no Location), so hop-by-hop enforcement\n// can't work. There we use `redirect: \"error\"` for strict zero-redirect and\n// fall back to normal following otherwise — matching axios/XHR browser behavior.\nfunction canInspectManualRedirects(): boolean {\n return (\n typeof process !== \"undefined\" &&\n !!process.versions &&\n !!process.versions.node\n );\n}\n\n// Per fetch spec, 301/302/303 redirects MUST switch the method to GET and\n// drop the body; 307/308 preserve both. Applying the same method/body across\n// every hop is a common footgun that silently POSTs to redirect targets.\nfunction applyRedirectSemantics(\n init: RequestInit,\n status: number,\n): RequestInit {\n if (status === 307 || status === 308) return init;\n const next: RequestInit = { ...init, method: \"GET\", body: undefined };\n // Drop body-related headers when switching to GET.\n const headers = new Headers(init.headers || {});\n headers.delete(\"content-type\");\n headers.delete(\"content-length\");\n headers.delete(\"transfer-encoding\");\n next.headers = headers;\n return next;\n}\n\n// Axios's Node adapter strips credential-bearing headers on cross-origin\n// redirects so a malicious/compromised hop can't harvest bearer tokens\n// intended for the original host. Without this the bounded adapter would\n// happily hand \"Authorization: Bearer …\" to whatever URL Location points\nfunction stripCrossOriginAuth(\n init: RequestInit,\n fromUrl: string,\n toUrl: string,\n): RequestInit {\n let sameOrigin: boolean;\n try {\n sameOrigin = new URL(fromUrl).origin === new URL(toUrl).origin;\n } catch {\n // Malformed URL: treat as cross-origin (the safer default).\n sameOrigin = false;\n }\n if (sameOrigin) return init;\n const headers = new Headers(init.headers || {});\n headers.delete(\"authorization\");\n headers.delete(\"proxy-authorization\");\n headers.delete(\"cookie\");\n return { ...init, headers };\n}\n\nfunction buildHttpError(\n response: Response,\n config: HttpClientRequestConfig,\n data?: any,\n): Error {\n const err = new Error(\n `Request failed with status code ${response.status}`,\n ) as Error & {\n response: {\n status: number;\n statusText: string;\n headers: Headers;\n data: any;\n config: HttpClientRequestConfig;\n };\n };\n err.response = {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n data,\n config,\n };\n return err;\n}\n\n// feaxios ignores maxRedirects and maxContentLength. When either is set,\n// perform the request via native fetch with explicit enforcement — otherwise\n// the \"security\" config is silently a no-op, allowing redirect-based SSRF and\n// unbounded-response DoS. Keep the error message prefix \"maxContentLength size\"\n// identical to axios's Node adapter — callers (stellartoml, federation) match\n// on it in their catch blocks.\nasync function boundedFetchAdapter<T>(\n config: HttpClientRequestConfig,\n): Promise<HttpClientResponse<T>> {\n const { maxRedirects, maxContentLength, timeout } = config;\n const signals: AbortSignal[] = [];\n\n if (timeout && timeout > 0) {\n signals.push(createTimeoutSignal(timeout));\n }\n const signal = composeSignals(signals);\n\n // Redirect policy:\n // undefined → let fetch follow freely (caller doesn't care)\n // 0 in Node → \"manual\": read the 3xx, reject before the next hop\n // 0 in brwsr → \"error\": fetch throws on the first 3xx (manual would\n // yield an opaqueredirect with no status/Location,\n // which we can't interpret)\n // N>0 in Node → manually chain up to N hops, then refuse\n // N>0 in brwsr → \"follow\": we can't count hops cross-origin, so match\n // axios/XHR browser behavior (follow to 20)\n const managedRedirects = maxRedirects !== undefined;\n const canManage = canInspectManualRedirects();\n let redirect: RequestInit[\"redirect\"];\n if (!managedRedirects) {\n redirect = \"follow\";\n } else if (canManage) {\n redirect = \"manual\";\n } else if (maxRedirects === 0) {\n redirect = \"error\";\n } else {\n redirect = \"follow\";\n }\n\n const headers = new Headers(config.headers || {});\n const body = encodeRequestBody(config.data, headers);\n\n // IMPORTANT: spread fetchOptions FIRST, then overlay the enforced fields.\n // If fetchOptions came last, a caller could set `fetchOptions.redirect:\n // \"follow\"` and silently bypass maxRedirects — the adapter exists to make\n // these controls non-optional.\n let currentInit: RequestInit = {\n ...config.fetchOptions,\n method: (config.method || \"get\").toUpperCase(),\n headers,\n body,\n redirect,\n ...(signal ? { signal } : {}),\n };\n\n let currentUrl = buildBoundedUrl(config);\n let redirectsRemaining = maxRedirects ?? 0;\n let response: Response;\n\n while (true) {\n try {\n response = await fetch(currentUrl, currentInit);\n } catch (err: any) {\n if (err?.name === \"TimeoutError\") {\n throw new Error(`timeout of ${config.timeout}ms exceeded`);\n }\n throw err;\n }\n\n // Only Node's `redirect: \"manual\"` exposes 3xx status; browsers either\n // already followed (redirect: \"follow\") or threw (redirect: \"error\").\n const isManualRedirectResponse =\n redirect === \"manual\" && response.status >= 300 && response.status < 400;\n if (!isManualRedirectResponse) break;\n\n if (redirectsRemaining <= 0) {\n // maxRedirects === 0: \"Request failed with status code 30x\" (matches\n // axios's message on a refused-first-hop rejection, which stellartoml\n // tests already assert against).\n // maxRedirects > 0 exhausted: \"Maximum number of redirects exceeded\"\n // (matches axios's native message for the same condition).\n if (maxRedirects === 0) throw buildHttpError(response, config);\n throw new Error(\"Maximum number of redirects exceeded\");\n }\n const location = response.headers.get(\"location\");\n if (!location) break;\n const nextUrl = new URL(location, currentUrl).toString();\n currentInit = applyRedirectSemantics(currentInit, response.status);\n currentInit = stripCrossOriginAuth(currentInit, currentUrl, nextUrl);\n currentUrl = nextUrl;\n redirectsRemaining -= 1;\n }\n\n if (!response.ok) {\n // Read the (bounded) body so the thrown error carries the server's\n // payload. Axios/feaxios attach `.response.data` on non-2xx errors; we\n // preserve that contract — notably federation's caller can still inspect\n // status/body when a 4xx/5xx comes back, matching the axios-build shape.\n let errBody: any;\n // eslint-disable-next-line no-useless-catch\n try {\n const errBytes = await readBodyBounded(response, maxContentLength);\n const errText = new TextDecoder().decode(errBytes);\n try {\n errBody = JSON.parse(errText);\n } catch {\n errBody = errText;\n }\n } catch (readErr) {\n // If body reading itself violated the cap, surface that error first.\n throw readErr;\n }\n throw buildHttpError(response, config, errBody);\n }\n\n const bytes = await readBodyBounded(response, maxContentLength);\n const text = new TextDecoder().decode(bytes);\n let data: any = text;\n try {\n data = JSON.parse(text);\n } catch {\n // leave as string (e.g. TOML)\n }\n\n return {\n data,\n headers: response.headers as any,\n config,\n status: response.status,\n statusText: response.statusText,\n };\n}\n\nfunction createFetchClient(\n fetchConfig: HttpClientRequestConfig = {},\n): HttpClient {\n const defaults: CreateAxiosDefaults = {\n ...fetchConfig,\n headers: fetchConfig.headers || {},\n };\n // feaxios doesn't declare \"type\":\"module\" or ship .d.mts, so TypeScript under\n // nodenext models it as CJS — `import axios from \"feaxios\"` types as the\n // module namespace with a `.default` hop. At ESM runtime, Node resolves the\n // same import to `AxiosStatic` directly (no hop), and under CJS, Babel's\n // __importDefault wrapper adds its own hop, so `.default.create` doubles up.\n // Normalize both shapes here; remove once feaxios is dropped (see #1388).\n\n const axiosStatic: AxiosStatic = (axios as any).default ?? axios;\n const instance: AxiosInstance = axiosStatic.create(defaults);\n const requestInterceptors = new InterceptorManager<HttpClientRequestConfig>();\n const responseInterceptors = new InterceptorManager<HttpClientResponse>();\n\n const httpClient: HttpClient = {\n interceptors: {\n request: requestInterceptors,\n response: responseInterceptors,\n },\n\n defaults: {\n ...defaults,\n adapter: (config: HttpClientRequestConfig) => {\n if (\n config.maxRedirects !== undefined ||\n config.maxContentLength !== undefined\n ) {\n return boundedFetchAdapter(config);\n }\n return instance.request(config);\n },\n },\n\n create(config?: HttpClientRequestConfig): HttpClient {\n return createFetchClient({ ...this.defaults, ...config });\n },\n\n makeRequest<T>(config: FetchClientConfig): Promise<HttpClientResponse<T>> {\n return new Promise((resolve, reject) => {\n // Extracted into a helper so it can be called from two sites:\n // 1. After the async request-interceptor chain resolves.\n // 2. Directly when there are no request interceptors (fast path).\n function processRequest(\n this: HttpClient,\n finalConfig: HttpClientRequestConfig,\n res: (value: HttpClientResponse<T>) => void,\n rej: (reason?: any) => void,\n ) {\n const adapter = finalConfig.adapter || this.defaults.adapter;\n if (!adapter) {\n throw new Error(\"No adapter available\");\n }\n let responsePromise = adapter(finalConfig).then((axiosResponse) => {\n const httpClientResponse: HttpClientResponse<T> = {\n data: axiosResponse.data,\n headers: axiosResponse.headers as any,\n config: axiosResponse.config,\n status: axiosResponse.status,\n statusText: axiosResponse.statusText,\n };\n return httpClientResponse;\n });\n\n // Apply response interceptors\n if (responseInterceptors.handlers.length > 0) {\n const chain = responseInterceptors.handlers\n .filter(\n (interceptor): interceptor is NonNullable<typeof interceptor> =>\n interceptor !== null,\n )\n .flatMap((interceptor) => [\n interceptor.fulfilled,\n interceptor.rejected,\n ]);\n\n for (let i = 0, len = chain.length; i < len; i += 2) {\n responsePromise = responsePromise\n .then(\n (response) => {\n const fulfilledInterceptor = chain[i];\n if (typeof fulfilledInterceptor === \"function\") {\n return fulfilledInterceptor(response);\n }\n return response;\n },\n (error) => {\n const rejectedInterceptor = chain[i + 1];\n if (typeof rejectedInterceptor === \"function\") {\n return rejectedInterceptor(error);\n }\n throw error;\n },\n )\n .then((interceptedResponse) => interceptedResponse);\n }\n }\n\n // Resolve or reject the final promise\n responsePromise.then(res).catch(rej);\n }\n\n const abortController = new AbortController();\n config.signal = abortController.signal;\n\n if (config.cancelToken) {\n const { cancelToken } = config;\n cancelToken.promise.then(() => {\n abortController.abort();\n // Propagate the cancel reason so callers that pass a reason via\n // `cancel(reason)` — e.g. stellartoml's timeout wrapper — see\n // their original message rather than a generic \"Request canceled\".\n reject(makeCanceledError(cancelToken.reason));\n });\n }\n\n // Apply request interceptors using a promise chain so that async\n // interceptors (returning Promise<HttpClientRequestConfig>) are\n // properly awaited before the config is passed downstream. A previous\n // implementation used a synchronous try/catch loop which silently\n // passed unresolved promise objects as the config when an interceptor\n // was async.\n //\n // The chain is built as [fulfilled, rejected, fulfilled, rejected, ...]\n // and wired via .then(onFulfilled, onRejected) so each pair can\n // recover from an upstream error (matching Axios interceptor semantics).\n let modifiedConfig = config;\n if (requestInterceptors.handlers.length > 0) {\n const chain = requestInterceptors.handlers\n .filter(\n (interceptor): interceptor is NonNullable<typeof interceptor> =>\n interceptor !== null,\n )\n .flatMap((interceptor) => [\n interceptor.fulfilled,\n interceptor.rejected,\n ]);\n let configPromise = Promise.resolve(modifiedConfig);\n for (let i = 0, len = chain.length; i < len; i += 2) {\n configPromise = configPromise.then(\n chain[i] as\n | ((\n val: HttpClientRequestConfig,\n ) =>\n | HttpClientRequestConfig\n | Promise<HttpClientRequestConfig>)\n | undefined,\n chain[i + 1] as InterceptorRejected | undefined,\n );\n }\n\n configPromise\n .then((resolvedConfig) => {\n processRequest.call(this, resolvedConfig, resolve, reject);\n })\n .catch(reject);\n return;\n }\n\n // No request interceptors — skip the chain and process immediately.\n processRequest.call(this, modifiedConfig, resolve, reject);\n });\n },\n\n get<T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"get\",\n });\n },\n\n delete<T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"delete\",\n });\n },\n\n head<T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"head\",\n });\n },\n\n options<T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"options\",\n });\n },\n\n post<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"post\",\n data,\n });\n },\n\n put<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"put\",\n data,\n });\n },\n\n patch<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"patch\",\n data,\n });\n },\n\n postForm<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n const formConfig = getFormConfig(config);\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, formConfig),\n url,\n method: \"post\",\n data,\n });\n },\n\n putForm<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n const formConfig = getFormConfig(config);\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, formConfig),\n url,\n method: \"put\",\n data,\n });\n },\n\n patchForm<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n const formConfig = getFormConfig(config);\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, formConfig),\n url,\n method: \"patch\",\n data,\n });\n },\n\n CancelToken,\n isCancel: (value: any): boolean =>\n value instanceof Error &&\n (value as { [CANCELED_MARKER]?: true })[CANCELED_MARKER] === true,\n };\n\n return httpClient;\n}\n\nexport const fetchClient = createFetchClient();\n\nexport { createFetchClient as create };\n"],"names":["axios","CancelToken"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetch-client.js","sources":["../../../src/http-client/fetch-client.ts"],"sourcesContent":["import type {\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n AxiosStatic,\n CreateAxiosDefaults,\n} from \"feaxios\";\nimport axios from \"feaxios\";\nimport {\n CancelToken,\n type HttpClient,\n type HttpClientRequestConfig,\n type HttpClientResponse,\n type Interceptor,\n} from \"./types.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- named extension point for additional response properties\nexport interface HttpResponse<T = any> extends AxiosResponse<T> {\n // You can add any additional properties here if needed\n}\n\nexport interface FetchClientConfig<T = any> extends AxiosRequestConfig {\n adapter?: (config: HttpClientRequestConfig) => Promise<HttpClientResponse<T>>;\n // You can add any additional configuration options here\n cancelToken?: CancelToken;\n}\n\ntype InterceptorFulfilled<V> = (value: V) => V | Promise<V>;\ntype InterceptorRejected = (error: any) => any;\n\n// Marker used so `isCancel` can identify cancellations by tag rather than\n// message text. Without this, a caller that passed a custom reason via\n// `cancel(\"timeout of 1000ms exceeded\")` would see `isCancel(err) === false`.\nconst CANCELED_MARKER = Symbol.for(\"@stellar/stellar-sdk.canceled\");\n\nfunction makeCanceledError(reason?: string): Error {\n const err = new Error(reason || \"Request canceled\") as Error & {\n [CANCELED_MARKER]?: true;\n };\n err[CANCELED_MARKER] = true;\n return err;\n}\n\nclass InterceptorManager<V> {\n handlers: Array<Interceptor<V> | null> = [];\n\n use(\n fulfilled: InterceptorFulfilled<V>,\n rejected?: InterceptorRejected,\n ): number {\n this.handlers.push({\n fulfilled,\n rejected,\n });\n return this.handlers.length - 1;\n }\n\n eject(id: number): void {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n forEach(fn: (interceptor: Interceptor<V>) => void): void {\n this.handlers.forEach((h) => {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\nfunction getFormConfig(\n config?: HttpClientRequestConfig,\n): HttpClientRequestConfig {\n const formConfig = config || {};\n formConfig.headers = new Headers(formConfig.headers || {});\n formConfig.headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\");\n return formConfig;\n}\n\n// Deep-merges instance defaults with a per-call config so defaults.headers\n// and defaults.params aren't wiped out when the caller supplies their own.\n// The feaxios path merges internally, but the bounded adapter uses the\n// config directly — without this, `create({headers: X}).get(url, {headers: Y})`\n// sent only Y whenever the call also set maxContentLength/maxRedirects.\nfunction mergeWithDefaults(\n defaults: any,\n config?: HttpClientRequestConfig,\n): HttpClientRequestConfig {\n if (!config) return { ...defaults };\n const merged: any = { ...defaults, ...config };\n if (defaults?.headers !== undefined || config.headers !== undefined) {\n const headers = new Headers((defaults?.headers as any) || {});\n new Headers((config.headers as any) || {}).forEach((v, k) => {\n headers.set(k, v);\n });\n merged.headers = headers;\n }\n if (defaults?.params !== undefined || config.params !== undefined) {\n merged.params = { ...(defaults?.params || {}), ...(config.params || {}) };\n }\n return merged;\n}\n\nfunction buildBoundedUrl(config: HttpClientRequestConfig): string {\n let url = config.url || \"\";\n if (config.baseURL && url && !/^https?:\\/\\//i.test(url)) {\n url = url.replace(/^\\/?/, `${config.baseURL.replace(/\\/$/, \"\")}/`);\n }\n if (config.params && Object.keys(config.params).length > 0) {\n const qs = new URLSearchParams(\n config.params as Record<string, string>,\n ).toString();\n url += (url.includes(\"?\") ? \"&\" : \"?\") + qs;\n }\n return url;\n}\n\n// Mirrors feaxios's defaultTransformer: serialize request bodies based on\n// their JS type and set an appropriate Content-Type when one isn't already\n// present. Without this, a caller using the bounded adapter on POST/PUT with\n// an object body would send [object Object] instead of JSON.\nfunction encodeRequestBody(data: any, headers: Headers): BodyInit | undefined {\n if (data === undefined || data === null) return undefined;\n if (typeof data === \"string\") return data;\n if (data instanceof URLSearchParams) {\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/x-www-form-urlencoded\");\n }\n return data;\n }\n if (\n data instanceof Blob ||\n data instanceof ArrayBuffer ||\n ArrayBuffer.isView(data)\n ) {\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/octet-stream\");\n }\n return data as BodyInit;\n }\n if (typeof FormData !== \"undefined\" && data instanceof FormData) {\n // Let fetch set the multipart boundary.\n return data;\n }\n // Default: JSON-encode plain objects.\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n return JSON.stringify(data);\n}\n\nasync function readBodyBounded(\n response: Response,\n maxContentLength?: number,\n): Promise<Uint8Array> {\n if (maxContentLength !== undefined) {\n const headerLen = response.headers.get(\"content-length\");\n if (headerLen && Number(headerLen) > maxContentLength) {\n throw new Error(`maxContentLength size of ${maxContentLength} exceeded`);\n }\n }\n\n if (!response.body) return new Uint8Array(0);\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let total = 0;\n // Streamed enforcement: abort as soon as running total exceeds the cap,\n // before the full body reaches memory.\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) {\n total += value.byteLength;\n if (maxContentLength !== undefined && total > maxContentLength) {\n await reader.cancel();\n throw new Error(\n `maxContentLength size of ${maxContentLength} exceeded`,\n );\n }\n chunks.push(value);\n }\n }\n\n const out = new Uint8Array(total);\n let offset = 0;\n for (const c of chunks) {\n out.set(c, offset);\n offset += c.byteLength;\n }\n return out;\n}\n// AbortSignal.timeout and AbortSignal.any are relatively recent (Safari 17.4,\n// Firefox 124, Chrome 116; Node 20.3). Feature-detect and fall back to\n// AbortController + setTimeout so the no-axios browser bundle works on older\n// runtimes.\nfunction createTimeoutSignal(ms: number): AbortSignal {\n if (\n typeof AbortSignal !== \"undefined\" &&\n typeof AbortSignal.timeout === \"function\"\n ) {\n return AbortSignal.timeout(ms);\n }\n const controller = new AbortController();\n setTimeout(() => {\n // Must set .name = \"TimeoutError\" (not .message), because the bounded\n // adapter's catch rewrites to the axios-shaped message based on the\n // error's name. An Error whose message happens to be \"TimeoutError\"\n // but whose name is \"Error\" silently falls through to the generic\n // rethrow branch.\n const err = new Error(\"Timeout\") as Error;\n err.name = \"TimeoutError\";\n controller.abort(err);\n }, ms);\n return controller.signal;\n}\n\nfunction composeSignals(signals: AbortSignal[]): AbortSignal | undefined {\n if (signals.length === 0) return undefined;\n if (signals.length === 1) return signals[0];\n if (\n typeof AbortSignal !== \"undefined\" &&\n typeof AbortSignal.any === \"function\"\n ) {\n return AbortSignal.any(signals);\n }\n const controller = new AbortController();\n for (const s of signals) {\n if (s.aborted) {\n controller.abort(s.reason);\n break;\n }\n s.addEventListener(\"abort\", () => controller.abort(s.reason), {\n once: true,\n });\n }\n return controller.signal;\n}\n\n// Node is the only environment where `redirect: \"manual\"` reliably exposes\n// status and Location. In browsers a cross-origin manual redirect yields an\n// opaqueredirect response (status 0, no Location), so hop-by-hop enforcement\n// can't work. There we use `redirect: \"error\"` for strict zero-redirect and\n// fall back to normal following otherwise — matching axios/XHR browser behavior.\nfunction canInspectManualRedirects(): boolean {\n return (\n typeof process !== \"undefined\" &&\n !!process.versions &&\n !!process.versions.node\n );\n}\n\n// Per fetch spec, 301/302/303 redirects MUST switch the method to GET and\n// drop the body; 307/308 preserve both. Applying the same method/body across\n// every hop is a common footgun that silently POSTs to redirect targets.\nfunction applyRedirectSemantics(\n init: RequestInit,\n status: number,\n): RequestInit {\n if (status === 307 || status === 308) return init;\n const next: RequestInit = { ...init, method: \"GET\", body: undefined };\n // Drop body-related headers when switching to GET.\n const headers = new Headers(init.headers || {});\n headers.delete(\"content-type\");\n headers.delete(\"content-length\");\n headers.delete(\"transfer-encoding\");\n next.headers = headers;\n return next;\n}\n\n// Axios's Node adapter strips credential-bearing headers on cross-origin\n// redirects so a malicious/compromised hop can't harvest bearer tokens\n// intended for the original host. Without this the bounded adapter would\n// happily hand \"Authorization: Bearer …\" to whatever URL Location points\nfunction stripCrossOriginAuth(\n init: RequestInit,\n fromUrl: string,\n toUrl: string,\n): RequestInit {\n let sameOrigin: boolean;\n try {\n sameOrigin = new URL(fromUrl).origin === new URL(toUrl).origin;\n } catch {\n // Malformed URL: treat as cross-origin (the safer default).\n sameOrigin = false;\n }\n if (sameOrigin) return init;\n const headers = new Headers(init.headers || {});\n headers.delete(\"authorization\");\n headers.delete(\"proxy-authorization\");\n headers.delete(\"cookie\");\n return { ...init, headers };\n}\n\nfunction buildHttpError(\n response: Response,\n config: HttpClientRequestConfig,\n data?: any,\n): Error {\n const err = new Error(\n `Request failed with status code ${response.status}`,\n ) as Error & {\n response: {\n status: number;\n statusText: string;\n headers: Headers;\n data: any;\n config: HttpClientRequestConfig;\n };\n };\n err.response = {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n data,\n config,\n };\n return err;\n}\n\n// feaxios ignores maxRedirects and maxContentLength. When either is set,\n// perform the request via native fetch with explicit enforcement — otherwise\n// the \"security\" config is silently a no-op, allowing redirect-based SSRF and\n// unbounded-response DoS. Keep the error message prefix \"maxContentLength size\"\n// identical to axios's Node adapter — callers (stellartoml, federation) match\n// on it in their catch blocks.\nasync function boundedFetchAdapter<T>(\n config: HttpClientRequestConfig,\n): Promise<HttpClientResponse<T>> {\n const { maxRedirects, maxContentLength, timeout } = config;\n const signals: AbortSignal[] = [];\n\n if (timeout && timeout > 0) {\n signals.push(createTimeoutSignal(timeout));\n }\n const signal = composeSignals(signals);\n\n // Redirect policy:\n // undefined → let fetch follow freely (caller doesn't care)\n // 0 in Node → \"manual\": read the 3xx, reject before the next hop\n // 0 in brwsr → \"error\": fetch throws on the first 3xx (manual would\n // yield an opaqueredirect with no status/Location,\n // which we can't interpret)\n // N>0 in Node → manually chain up to N hops, then refuse\n // N>0 in brwsr → \"follow\": we can't count hops cross-origin, so match\n // axios/XHR browser behavior (follow to 20)\n const managedRedirects = maxRedirects !== undefined;\n const canManage = canInspectManualRedirects();\n let redirect: RequestInit[\"redirect\"];\n if (!managedRedirects) {\n redirect = \"follow\";\n } else if (canManage) {\n redirect = \"manual\";\n } else if (maxRedirects === 0) {\n redirect = \"error\";\n } else {\n redirect = \"follow\";\n }\n\n const headers = new Headers(config.headers || {});\n const body = encodeRequestBody(config.data, headers);\n\n // IMPORTANT: spread fetchOptions FIRST, then overlay the enforced fields.\n // If fetchOptions came last, a caller could set `fetchOptions.redirect:\n // \"follow\"` and silently bypass maxRedirects — the adapter exists to make\n // these controls non-optional.\n let currentInit: RequestInit = {\n ...config.fetchOptions,\n method: (config.method || \"get\").toUpperCase(),\n headers,\n body,\n redirect,\n ...(signal ? { signal } : {}),\n };\n\n let currentUrl = buildBoundedUrl(config);\n let redirectsRemaining = maxRedirects ?? 0;\n let response: Response;\n\n while (true) {\n try {\n response = await fetch(currentUrl, currentInit);\n } catch (err: any) {\n if (err?.name === \"TimeoutError\") {\n throw new Error(`timeout of ${config.timeout}ms exceeded`);\n }\n throw err;\n }\n\n // Only Node's `redirect: \"manual\"` exposes 3xx status; browsers either\n // already followed (redirect: \"follow\") or threw (redirect: \"error\").\n const isManualRedirectResponse =\n redirect === \"manual\" && response.status >= 300 && response.status < 400;\n if (!isManualRedirectResponse) break;\n\n if (redirectsRemaining <= 0) {\n // maxRedirects === 0: \"Request failed with status code 30x\" (matches\n // axios's message on a refused-first-hop rejection, which stellartoml\n // tests already assert against).\n // maxRedirects > 0 exhausted: \"Maximum number of redirects exceeded\"\n // (matches axios's native message for the same condition).\n if (maxRedirects === 0) throw buildHttpError(response, config);\n throw new Error(\"Maximum number of redirects exceeded\");\n }\n const location = response.headers.get(\"location\");\n if (!location) break;\n const nextUrl = new URL(location, currentUrl).toString();\n currentInit = applyRedirectSemantics(currentInit, response.status);\n currentInit = stripCrossOriginAuth(currentInit, currentUrl, nextUrl);\n currentUrl = nextUrl;\n redirectsRemaining -= 1;\n }\n\n if (!response.ok) {\n // Read the (bounded) body so the thrown error carries the server's\n // payload. Axios/feaxios attach `.response.data` on non-2xx errors; we\n // preserve that contract — notably federation's caller can still inspect\n // status/body when a 4xx/5xx comes back, matching the axios-build shape.\n let errBody: any;\n // eslint-disable-next-line no-useless-catch\n try {\n const errBytes = await readBodyBounded(response, maxContentLength);\n const errText = new TextDecoder().decode(errBytes);\n try {\n errBody = JSON.parse(errText);\n } catch {\n errBody = errText;\n }\n } catch (readErr) {\n // If body reading itself violated the cap, surface that error first.\n throw readErr;\n }\n throw buildHttpError(response, config, errBody);\n }\n\n const bytes = await readBodyBounded(response, maxContentLength);\n const text = new TextDecoder().decode(bytes);\n let data: any = text;\n try {\n data = JSON.parse(text);\n } catch {\n // leave as string (e.g. TOML)\n }\n\n return {\n data,\n headers: response.headers as any,\n config,\n status: response.status,\n statusText: response.statusText,\n };\n}\n\nfunction createFetchClient(\n fetchConfig: HttpClientRequestConfig = {},\n): HttpClient {\n const defaults: CreateAxiosDefaults = {\n ...fetchConfig,\n headers: fetchConfig.headers || {},\n };\n // feaxios doesn't declare \"type\":\"module\" or ship .d.mts, so TypeScript under\n // nodenext models it as CJS — `import axios from \"feaxios\"` types as the\n // module namespace with a `.default` hop. At ESM runtime, Node resolves the\n // same import to `AxiosStatic` directly (no hop), and under CJS, Babel's\n // __importDefault wrapper adds its own hop, so `.default.create` doubles up.\n // Normalize both shapes here; remove once feaxios is dropped (see #1388).\n\n const axiosStatic: AxiosStatic = (axios as any).default ?? axios;\n const instance: AxiosInstance = axiosStatic.create(defaults);\n const requestInterceptors = new InterceptorManager<HttpClientRequestConfig>();\n const responseInterceptors = new InterceptorManager<HttpClientResponse>();\n\n const httpClient: HttpClient = {\n interceptors: {\n request: requestInterceptors,\n response: responseInterceptors,\n },\n\n defaults: {\n ...defaults,\n adapter: (config: HttpClientRequestConfig) => {\n if (\n config.maxRedirects !== undefined ||\n config.maxContentLength !== undefined\n ) {\n return boundedFetchAdapter(config);\n }\n return instance.request(config);\n },\n },\n\n create(config?: HttpClientRequestConfig): HttpClient {\n return createFetchClient({ ...this.defaults, ...config });\n },\n\n makeRequest<T>(config: FetchClientConfig): Promise<HttpClientResponse<T>> {\n return new Promise((resolve, reject) => {\n // Extracted into a helper so it can be called from two sites:\n // 1. After the async request-interceptor chain resolves.\n // 2. Directly when there are no request interceptors (fast path).\n function processRequest(\n this: HttpClient,\n finalConfig: HttpClientRequestConfig,\n res: (value: HttpClientResponse<T>) => void,\n rej: (reason?: any) => void,\n ) {\n const adapter = finalConfig.adapter || this.defaults.adapter;\n if (!adapter) {\n throw new Error(\"No adapter available\");\n }\n let responsePromise = adapter(finalConfig).then((axiosResponse) => {\n const httpClientResponse: HttpClientResponse<T> = {\n data: axiosResponse.data,\n headers: axiosResponse.headers as any,\n config: axiosResponse.config,\n status: axiosResponse.status,\n statusText: axiosResponse.statusText,\n };\n return httpClientResponse;\n });\n\n // Apply response interceptors\n if (responseInterceptors.handlers.length > 0) {\n const chain = responseInterceptors.handlers\n .filter(\n (interceptor): interceptor is NonNullable<typeof interceptor> =>\n interceptor !== null,\n )\n .flatMap((interceptor) => [\n interceptor.fulfilled,\n interceptor.rejected,\n ]);\n\n for (let i = 0, len = chain.length; i < len; i += 2) {\n responsePromise = responsePromise\n .then(\n (response) => {\n const fulfilledInterceptor = chain[i];\n if (typeof fulfilledInterceptor === \"function\") {\n return fulfilledInterceptor(response);\n }\n return response;\n },\n (error) => {\n const rejectedInterceptor = chain[i + 1];\n if (typeof rejectedInterceptor === \"function\") {\n return rejectedInterceptor(error);\n }\n throw error;\n },\n )\n .then((interceptedResponse) => interceptedResponse);\n }\n }\n\n // Resolve or reject the final promise\n responsePromise.then(res).catch(rej);\n }\n\n const abortController = new AbortController();\n config.signal = abortController.signal;\n\n if (config.cancelToken) {\n const { cancelToken } = config;\n cancelToken.promise.then(() => {\n abortController.abort();\n // Propagate the cancel reason so callers that pass a reason via\n // `cancel(reason)` — e.g. stellartoml's timeout wrapper — see\n // their original message rather than a generic \"Request canceled\".\n reject(makeCanceledError(cancelToken.reason));\n });\n }\n\n // Apply request interceptors using a promise chain so that async\n // interceptors (returning Promise<HttpClientRequestConfig>) are\n // properly awaited before the config is passed downstream. A previous\n // implementation used a synchronous try/catch loop which silently\n // passed unresolved promise objects as the config when an interceptor\n // was async.\n //\n // The chain is built as [fulfilled, rejected, fulfilled, rejected, ...]\n // and wired via .then(onFulfilled, onRejected) so each pair can\n // recover from an upstream error (matching Axios interceptor semantics).\n const modifiedConfig = config;\n if (requestInterceptors.handlers.length > 0) {\n const chain = requestInterceptors.handlers\n .filter(\n (interceptor): interceptor is NonNullable<typeof interceptor> =>\n interceptor !== null,\n )\n .flatMap((interceptor) => [\n interceptor.fulfilled,\n interceptor.rejected,\n ]);\n let configPromise = Promise.resolve(modifiedConfig);\n for (let i = 0, len = chain.length; i < len; i += 2) {\n configPromise = configPromise.then(\n chain[i] as\n | ((\n val: HttpClientRequestConfig,\n ) =>\n | HttpClientRequestConfig\n | Promise<HttpClientRequestConfig>)\n | undefined,\n chain[i + 1] as InterceptorRejected | undefined,\n );\n }\n\n configPromise\n .then((resolvedConfig) => {\n processRequest.call(this, resolvedConfig, resolve, reject);\n })\n .catch(reject);\n return;\n }\n\n // No request interceptors — skip the chain and process immediately.\n processRequest.call(this, modifiedConfig, resolve, reject);\n });\n },\n\n get<T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"get\",\n });\n },\n\n delete<T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"delete\",\n });\n },\n\n head<T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"head\",\n });\n },\n\n options<T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"options\",\n });\n },\n\n post<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"post\",\n data,\n });\n },\n\n put<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"put\",\n data,\n });\n },\n\n patch<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, config),\n url,\n method: \"patch\",\n data,\n });\n },\n\n postForm<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n const formConfig = getFormConfig(config);\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, formConfig),\n url,\n method: \"post\",\n data,\n });\n },\n\n putForm<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n const formConfig = getFormConfig(config);\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, formConfig),\n url,\n method: \"put\",\n data,\n });\n },\n\n patchForm<T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ): Promise<HttpClientResponse<T>> {\n const formConfig = getFormConfig(config);\n return this.makeRequest({\n ...mergeWithDefaults(this.defaults, formConfig),\n url,\n method: \"patch\",\n data,\n });\n },\n\n CancelToken,\n isCancel: (value: any): boolean =>\n value instanceof Error &&\n (value as { [CANCELED_MARKER]?: true })[CANCELED_MARKER] === true,\n };\n\n return httpClient;\n}\n\nexport const fetchClient = createFetchClient();\n\nexport { createFetchClient as create };\n"],"names":["axios","CancelToken"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../src/http-client/types.ts"],"sourcesContent":["export type HttpResponseHeaders = Record<\n string,\n string | boolean | undefined\n> & {\n \"set-cookie\"?: string[];\n};\n\nexport interface HttpClientDefaults extends Omit<\n HttpClientRequestConfig,\n \"headers\"\n> {\n headers?: [string, string][] | Record<string, string> | Headers | undefined;\n}\n\nexport interface HttpClientResponse<T = any> {\n data: T;\n headers: HttpResponseHeaders;\n config: any;\n status: number;\n statusText: string;\n}\n\nexport interface CancelToken {\n promise: Promise<void>;\n throwIfRequested(): void;\n reason?: string;\n}\n\ntype HeadersInit = [string, string][] | Record<string, string> | Headers;\n\nexport interface HttpClientRequestConfig<D = any> {\n url?: string;\n method?: string;\n baseURL?: string;\n data?: D;\n timeout?: number;\n fetchOptions?: Record<string, any>;\n headers?: HeadersInit;\n params?: Record<string, any>;\n maxContentLength?: number;\n maxRedirects?: number;\n cancelToken?: CancelToken;\n adapter?: (config: HttpClientRequestConfig) => Promise<HttpClientResponse>;\n}\n\nexport interface HttpClient {\n get: <T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n delete: <T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n head: <T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n options: <T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n post: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n put: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n patch: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n postForm: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n putForm: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n patchForm: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n interceptors: {\n request: InterceptorManager<HttpClientRequestConfig>;\n response: InterceptorManager<HttpClientResponse>;\n };\n defaults: HttpClientDefaults;\n CancelToken: typeof CancelToken;\n isCancel: (value: any) => boolean;\n makeRequest: <T = any>(\n config: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n create: (config?: HttpClientRequestConfig) => HttpClient;\n}\n\nexport interface Interceptor<V> {\n fulfilled: (value: V) => V | Promise<V>;\n rejected?: (error: any) => any;\n}\n\nexport interface InterceptorManager<V> {\n use(\n fulfilled: (value: V) => V | Promise<V>,\n rejected?: (error: any) => any,\n ): number;\n eject(id: number): void;\n forEach(fn: (interceptor: Interceptor<V>) => void): void;\n handlers: Array<Interceptor<V> | null>;\n}\n\nexport class CancelToken {\n promise: Promise<void>;\n reason?: string;\n throwIfRequested(): void {\n if (this.reason) {\n throw new Error(this.reason);\n }\n }\n constructor(executor: (cancel: (reason?: string) => void) => void) {\n let resolvePromise: (value?: any) => void;\n this.promise = new Promise<void>((resolve) => {\n resolvePromise = resolve;\n });\n executor((reason?: string) => {\n this.reason = reason;\n resolvePromise();\n });\n }\n}\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../src/http-client/types.ts"],"sourcesContent":["export type HttpResponseHeaders = Record<\n string,\n string | boolean | undefined\n> & {\n \"set-cookie\"?: string[];\n};\n\nexport interface HttpClientDefaults extends Omit<\n HttpClientRequestConfig,\n \"headers\"\n> {\n headers?: [string, string][] | Record<string, string> | Headers | undefined;\n}\n\nexport interface HttpClientResponse<T = any> {\n data: T;\n headers: HttpResponseHeaders;\n config: any;\n status: number;\n statusText: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging -- intentionally merged with the CancelToken class below to declare its members\nexport interface CancelToken {\n promise: Promise<void>;\n throwIfRequested(): void;\n reason?: string;\n}\n\ntype HeadersInit = [string, string][] | Record<string, string> | Headers;\n\nexport interface HttpClientRequestConfig<D = any> {\n url?: string;\n method?: string;\n baseURL?: string;\n data?: D;\n timeout?: number;\n fetchOptions?: Record<string, any>;\n headers?: HeadersInit;\n params?: Record<string, any>;\n maxContentLength?: number;\n maxRedirects?: number;\n cancelToken?: CancelToken;\n adapter?: (config: HttpClientRequestConfig) => Promise<HttpClientResponse>;\n}\n\nexport interface HttpClient {\n get: <T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n delete: <T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n head: <T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n options: <T = any>(\n url: string,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n post: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n put: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n patch: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n postForm: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n putForm: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n patchForm: <T = any>(\n url: string,\n data?: any,\n config?: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n interceptors: {\n request: InterceptorManager<HttpClientRequestConfig>;\n response: InterceptorManager<HttpClientResponse>;\n };\n defaults: HttpClientDefaults;\n CancelToken: typeof CancelToken;\n isCancel: (value: any) => boolean;\n makeRequest: <T = any>(\n config: HttpClientRequestConfig,\n ) => Promise<HttpClientResponse<T>>;\n create: (config?: HttpClientRequestConfig) => HttpClient;\n}\n\nexport interface Interceptor<V> {\n fulfilled: (value: V) => V | Promise<V>;\n rejected?: (error: any) => any;\n}\n\nexport interface InterceptorManager<V> {\n use(\n fulfilled: (value: V) => V | Promise<V>,\n rejected?: (error: any) => any,\n ): number;\n eject(id: number): void;\n forEach(fn: (interceptor: Interceptor<V>) => void): void;\n handlers: Array<Interceptor<V> | null>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging -- intentionally merged with the CancelToken interface above\nexport class CancelToken {\n promise: Promise<void>;\n reason?: string;\n throwIfRequested(): void {\n if (this.reason) {\n throw new Error(this.reason);\n }\n }\n constructor(executor: (cancel: (reason?: string) => void) => void) {\n let resolvePromise: (value?: any) => void;\n this.promise = new Promise<void>((resolve) => {\n resolvePromise = resolve;\n });\n executor((reason?: string) => {\n this.reason = reason;\n resolvePromise();\n });\n }\n}\n"],"names":[],"mappings":";;AA0HO,MAAM,WAAA,CAAY;AAAA,EACvB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA,GAAyB;AACvB,IAAA,IAAI,KAAK,MAAA,EAAQ;AACf,MAAA,MAAM,IAAI,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,YAAY,QAAA,EAAuD;AACjE,IAAA,IAAI,cAAA;AACJ,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,OAAA,CAAc,CAAC,OAAA,KAAY;AAC5C,MAAA,cAAA,GAAiB,OAAA;AAAA,IACnB,CAAC,CAAA;AACD,IAAA,QAAA,CAAS,CAAC,MAAA,KAAoB;AAC5B,MAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,MAAA,cAAA,EAAe;AAAA,IACjB,CAAC,CAAA;AAAA,EACH;AACF;;;;"}
|
package/lib/cjs/rpc/axios.js
CHANGED
package/lib/cjs/rpc/axios.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios.js","sources":["../../../src/rpc/axios.ts"],"sourcesContent":["import { create, type HttpClient } from \"../http-client/index.js\";\n\
|
|
1
|
+
{"version":3,"file":"axios.js","sources":["../../../src/rpc/axios.ts"],"sourcesContent":["import { create, type HttpClient } from \"../http-client/index.js\";\n\ndeclare const __PACKAGE_VERSION__: string;\nexport const version = __PACKAGE_VERSION__;\n\nexport function createHttpClient(headers?: Record<string, string>): HttpClient {\n return create({\n headers: {\n ...headers,\n \"X-Client-Name\": \"js-stellar-sdk\",\n \"X-Client-Version\": version,\n },\n });\n}\n"],"names":["create"],"mappings":";;;;AAGO,MAAM,OAAA,GAAU;AAEhB,SAAS,iBAAiB,OAAA,EAA8C;AAC7E,EAAA,OAAOA,kBAAA,CAAO;AAAA,IACZ,OAAA,EAAS;AAAA,MACP,GAAG,OAAA;AAAA,MACH,eAAA,EAAiB,gBAAA;AAAA,MACjB,kBAAA,EAAoB;AAAA;AACtB,GACD,CAAA;AACH;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonrpc.js","sources":["../../../src/rpc/jsonrpc.ts"],"sourcesContent":["import type { HttpClient } from \"../http-client/index.js\";\n\nexport type Id = string | number;\n\nexport interface Request<T> {\n jsonrpc: \"2.0\";\n id: Id;\n method: string;\n params: T;\n}\n\nexport interface Notification<T> {\n jsonrpc: \"2.0\";\n method: string;\n params?: T;\n}\n\nexport type Response<T, E = any> = {\n jsonrpc: \"2.0\";\n id: Id;\n} & ({ error: Error<E> } | { result: T });\n\nexport interface Error<E = any> {\n code: number;\n message?: string;\n data?: E;\n}\n\n// Check if the given object X has a field Y, and make that available to\n// typescript typing.\nfunction hasOwnProperty<X extends {}, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Sends the jsonrpc 'params' as a single 'param' object (no array support).\n *\n * @param client - HttpClient instance to use for the request\n * @param url - URL to the RPC instance\n * @param method - RPC method name that should be called\n * @param param - (optional) params that should be supplied to the method\n * @returns Promise that resolves to the result of type T\n * @hidden\n */\nexport async function postObject<T>(\n client: HttpClient,\n url: string,\n method: string,\n param: any = null,\n): Promise<T> {\n const response = await client.post<Response<T>>(url, {\n jsonrpc: \"2.0\",\n // TODO: Generate a unique request id\n id: 1,\n method,\n params: param,\n });\n if (hasOwnProperty(response.data, \"error\")) {\n throw response.data.error;\n } else {\n return response.data?.result;\n }\n}\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"jsonrpc.js","sources":["../../../src/rpc/jsonrpc.ts"],"sourcesContent":["import type { HttpClient } from \"../http-client/index.js\";\n\nexport type Id = string | number;\n\nexport interface Request<T> {\n jsonrpc: \"2.0\";\n id: Id;\n method: string;\n params: T;\n}\n\nexport interface Notification<T> {\n jsonrpc: \"2.0\";\n method: string;\n params?: T;\n}\n\nexport type Response<T, E = any> = {\n jsonrpc: \"2.0\";\n id: Id;\n} & ({ error: Error<E> } | { result: T });\n\nexport interface Error<E = any> {\n code: number;\n message?: string;\n data?: E;\n}\n\n// Check if the given object X has a field Y, and make that available to\n// typescript typing.\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- `{}` is the intended constraint (any non-nullish value with own properties)\nfunction hasOwnProperty<X extends {}, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Sends the jsonrpc 'params' as a single 'param' object (no array support).\n *\n * @param client - HttpClient instance to use for the request\n * @param url - URL to the RPC instance\n * @param method - RPC method name that should be called\n * @param param - (optional) params that should be supplied to the method\n * @returns Promise that resolves to the result of type T\n * @hidden\n */\nexport async function postObject<T>(\n client: HttpClient,\n url: string,\n method: string,\n param: any = null,\n): Promise<T> {\n const response = await client.post<Response<T>>(url, {\n jsonrpc: \"2.0\",\n // TODO: Generate a unique request id\n id: 1,\n method,\n params: param,\n });\n if (hasOwnProperty(response.data, \"error\")) {\n throw response.data.error;\n } else {\n return response.data?.result;\n }\n}\n"],"names":[],"mappings":";;AA+BA,SAAS,cAAA,CACP,KACA,IAAA,EAC+B;AAC/B,EAAA,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,KAAK,IAAI,CAAA;AACvD;AAYA,eAAsB,UAAA,CACpB,MAAA,EACA,GAAA,EACA,MAAA,EACA,QAAa,IAAA,EACD;AACZ,EAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAkB,GAAA,EAAK;AAAA,IACnD,OAAA,EAAS,KAAA;AAAA;AAAA,IAET,EAAA,EAAI,CAAA;AAAA,IACJ,MAAA;AAAA,IACA,MAAA,EAAQ;AAAA,GACT,CAAA;AACD,EAAA,IAAI,cAAA,CAAe,QAAA,CAAS,IAAA,EAAM,OAAO,CAAA,EAAG;AAC1C,IAAA,MAAM,SAAS,IAAA,CAAK,KAAA;AAAA,EACtB,CAAA,MAAO;AACL,IAAA,OAAO,SAAS,IAAA,EAAM,MAAA;AAAA,EACxB;AACF;;;;"}
|