UNPKG

@hyperlane-xyz/cli

Version:

A command-line utility for common Hyperlane operations

223 lines (202 loc) 8.17 kB
export const id = 795; export const ids = [795]; export const modules = { /***/ 92795: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { // EXPORTS __webpack_require__.d(__webpack_exports__, { offchainLookup: () => (/* binding */ offchainLookup), offchainLookupSignature: () => (/* binding */ offchainLookupSignature) }); // UNUSED EXPORTS: ccipRequest, offchainLookupAbiItem // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/actions/public/call.js + 1 modules var call = __webpack_require__(56689); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/utils/stringify.js var stringify = __webpack_require__(21979); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/errors/base.js + 1 modules var base = __webpack_require__(28902); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/errors/utils.js var utils = __webpack_require__(64815); ;// CONCATENATED MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/errors/ccip.js class OffchainLookupError extends base/* BaseError */.C { constructor({ callbackSelector, cause, data, extraData, sender, urls, }) { super(cause.shortMessage || 'An error occurred while fetching for an offchain result.', { cause, metaMessages: [ ...(cause.metaMessages || []), cause.metaMessages?.length ? '' : [], 'Offchain Gateway Call:', urls && [ ' Gateway URL(s):', ...urls.map((url) => ` ${(0,utils/* getUrl */.I)(url)}`), ], ` Sender: ${sender}`, ` Data: ${data}`, ` Callback selector: ${callbackSelector}`, ` Extra data: ${extraData}`, ].flat(), name: 'OffchainLookupError', }); } } class OffchainLookupResponseMalformedError extends base/* BaseError */.C { constructor({ result, url }) { super('Offchain gateway response is malformed. Response data must be a hex value.', { metaMessages: [ `Gateway URL: ${(0,utils/* getUrl */.I)(url)}`, `Response: ${(0,stringify/* stringify */.A)(result)}`, ], name: 'OffchainLookupResponseMalformedError', }); } } class OffchainLookupSenderMismatchError extends base/* BaseError */.C { constructor({ sender, to }) { super('Reverted sender address does not match target contract address (`to`).', { metaMessages: [ `Contract address: ${to}`, `OffchainLookup sender address: ${sender}`, ], name: 'OffchainLookupSenderMismatchError', }); } } //# sourceMappingURL=ccip.js.map // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/errors/request.js var request = __webpack_require__(2575); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/utils/abi/decodeErrorResult.js var decodeErrorResult = __webpack_require__(44594); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/utils/abi/encodeAbiParameters.js var encodeAbiParameters = __webpack_require__(9023); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/utils/address/isAddressEqual.js var isAddressEqual = __webpack_require__(92081); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/utils/data/concat.js var concat = __webpack_require__(41703); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/utils/data/isHex.js var isHex = __webpack_require__(51486); // EXTERNAL MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/utils/ens/localBatchGatewayRequest.js + 3 modules var localBatchGatewayRequest = __webpack_require__(99480); ;// CONCATENATED MODULE: ../../node_modules/@safe-global/protocol-kit/node_modules/viem/_esm/utils/ccip.js const offchainLookupSignature = '0x556f1830'; const offchainLookupAbiItem = { name: 'OffchainLookup', type: 'error', inputs: [ { name: 'sender', type: 'address', }, { name: 'urls', type: 'string[]', }, { name: 'callData', type: 'bytes', }, { name: 'callbackFunction', type: 'bytes4', }, { name: 'extraData', type: 'bytes', }, ], }; async function offchainLookup(client, { blockNumber, blockTag, data, to, }) { const { args } = (0,decodeErrorResult/* decodeErrorResult */.W)({ data, abi: [offchainLookupAbiItem], }); const [sender, urls, callData, callbackSelector, extraData] = args; const { ccipRead } = client; const ccipRequest_ = ccipRead && typeof ccipRead?.request === 'function' ? ccipRead.request : ccipRequest; try { if (!(0,isAddressEqual/* isAddressEqual */.h)(to, sender)) throw new OffchainLookupSenderMismatchError({ sender, to }); const result = urls.includes(localBatchGatewayRequest/* localBatchGatewayUrl */.J) ? await (0,localBatchGatewayRequest/* localBatchGatewayRequest */.X)({ data: callData, ccipRequest: ccipRequest_, }) : await ccipRequest_({ data: callData, sender, urls }); const { data: data_ } = await (0,call/* call */.T)(client, { blockNumber, blockTag, data: (0,concat/* concat */.xW)([ callbackSelector, (0,encodeAbiParameters/* encodeAbiParameters */.h)([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]), ]), to, }); return data_; } catch (err) { throw new OffchainLookupError({ callbackSelector, cause: err, data, extraData, sender, urls, }); } } async function ccipRequest({ data, sender, urls, }) { let error = new Error('An unknown error occurred.'); for (let i = 0; i < urls.length; i++) { const url = urls[i]; const method = url.includes('{data}') ? 'GET' : 'POST'; const body = method === 'POST' ? { data, sender } : undefined; const headers = method === 'POST' ? { 'Content-Type': 'application/json' } : {}; try { const response = await fetch(url.replace('{sender}', sender.toLowerCase()).replace('{data}', data), { body: JSON.stringify(body), headers, method, }); let result; if (response.headers.get('Content-Type')?.startsWith('application/json')) { result = (await response.json()).data; } else { result = (await response.text()); } if (!response.ok) { error = new request/* HttpRequestError */.Ci({ body, details: result?.error ? (0,stringify/* stringify */.A)(result.error) : response.statusText, headers: response.headers, status: response.status, url, }); continue; } if (!(0,isHex/* isHex */.q)(result)) { error = new OffchainLookupResponseMalformedError({ result, url, }); continue; } return result; } catch (err) { error = new request/* HttpRequestError */.Ci({ body, details: err.message, url, }); } } throw error; } //# sourceMappingURL=ccip.js.map /***/ }) };