@sentio/sdk 2.57.11 → 2.57.12-rc.aaa
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/lib/aptos/ext/token.d.ts.map +1 -1
- package/lib/aptos/ext/token.js +4 -6
- package/lib/aptos/ext/token.js.map +1 -1
- package/lib/chunk-24EEMT46.js +3 -0
- package/lib/chunk-24EEMT46.js.map +1 -0
- package/lib/chunk-2R7O6UGY.js +3 -0
- package/lib/chunk-2R7O6UGY.js.map +1 -0
- package/lib/chunk-4JXRK4YH.js +29 -0
- package/lib/chunk-4JXRK4YH.js.map +1 -0
- package/lib/chunk-7QZC3R57.js +3 -0
- package/lib/chunk-7QZC3R57.js.map +1 -0
- package/lib/chunk-AK5E6DKD.js +6 -0
- package/lib/chunk-AK5E6DKD.js.map +1 -0
- package/lib/chunk-ATZBHPQN.js +3 -0
- package/lib/chunk-ATZBHPQN.js.map +1 -0
- package/lib/chunk-B6U7F4GY.js +29 -0
- package/lib/chunk-B6U7F4GY.js.map +1 -0
- package/lib/chunk-DGKULIPW.js +3 -0
- package/lib/chunk-DGKULIPW.js.map +1 -0
- package/lib/chunk-DS2LOABN.js +3 -0
- package/lib/chunk-DS2LOABN.js.map +1 -0
- package/lib/chunk-FMBGZMT4.js +6 -0
- package/lib/chunk-FMBGZMT4.js.map +1 -0
- package/lib/chunk-FMZDKD72.js +8 -0
- package/lib/chunk-FMZDKD72.js.map +1 -0
- package/lib/chunk-G5BIPHMS.js +3 -0
- package/lib/chunk-G5BIPHMS.js.map +1 -0
- package/lib/chunk-G6XPDWDE.js +3 -0
- package/lib/chunk-G6XPDWDE.js.map +1 -0
- package/lib/chunk-GJX3DL4J.js +499 -0
- package/lib/chunk-GJX3DL4J.js.map +1 -0
- package/lib/chunk-GTITFWMU.js +259 -0
- package/lib/chunk-GTITFWMU.js.map +1 -0
- package/lib/chunk-J7Z2TKQE.js +33 -0
- package/lib/chunk-J7Z2TKQE.js.map +1 -0
- package/lib/chunk-JQ4LTUIX.js +995 -0
- package/lib/chunk-JQ4LTUIX.js.map +1 -0
- package/lib/chunk-LG2TF5WR.js +8 -0
- package/lib/chunk-LG2TF5WR.js.map +1 -0
- package/lib/chunk-LVWOFGF2.js +3 -0
- package/lib/chunk-LVWOFGF2.js.map +1 -0
- package/lib/chunk-O564J2U6.js +11 -0
- package/lib/chunk-O564J2U6.js.map +1 -0
- package/lib/chunk-QGIFUSFI.js +84 -0
- package/lib/chunk-QGIFUSFI.js.map +1 -0
- package/lib/chunk-QGPJOTWP.js +3 -0
- package/lib/chunk-QGPJOTWP.js.map +1 -0
- package/lib/chunk-RA75ESSD.js +3 -0
- package/lib/chunk-RA75ESSD.js.map +1 -0
- package/lib/chunk-RVAYZJ7X.js +5 -0
- package/lib/chunk-RVAYZJ7X.js.map +1 -0
- package/lib/chunk-SPY3PKUB.js +3 -0
- package/lib/chunk-SPY3PKUB.js.map +1 -0
- package/lib/chunk-SUCYR7EB.js +3 -0
- package/lib/chunk-SUCYR7EB.js.map +1 -0
- package/lib/chunk-TGIXVAHB.js +7 -0
- package/lib/chunk-TGIXVAHB.js.map +1 -0
- package/lib/chunk-TSEQGMTN.js +5 -0
- package/lib/chunk-TSEQGMTN.js.map +1 -0
- package/lib/chunk-ZHI6ULD5.js +3 -0
- package/lib/chunk-ZHI6ULD5.js.map +1 -0
- package/lib/multipart-parser-J6QPYJHT.js +4 -0
- package/lib/multipart-parser-J6QPYJHT.js.map +1 -0
- package/package.json +4 -4
- package/src/aptos/builtin/0x1.d.ts +6451 -0
- package/src/aptos/builtin/0x1.d.ts.map +1 -0
- package/src/aptos/builtin/0x1.js +7138 -0
- package/src/aptos/builtin/0x1.js.map +1 -0
- package/src/aptos/builtin/0x3.d.ts +1122 -0
- package/src/aptos/builtin/0x3.d.ts.map +1 -0
- package/src/aptos/builtin/0x3.js +937 -0
- package/src/aptos/builtin/0x3.js.map +1 -0
- package/src/aptos/builtin/0x4.d.ts +551 -0
- package/src/aptos/builtin/0x4.d.ts.map +1 -0
- package/src/aptos/builtin/0x4.js +529 -0
- package/src/aptos/builtin/0x4.js.map +1 -0
- package/src/aptos/builtin/index.d.ts +4 -0
- package/src/aptos/builtin/index.d.ts.map +1 -0
- package/src/aptos/builtin/index.js +7 -0
- package/src/aptos/builtin/index.js.map +1 -0
- package/src/aptos/ext/token.ts +4 -6
- package/src/eth/builtin/eacaggregatorproxy.d.ts +5 -0
- package/src/eth/builtin/eacaggregatorproxy.d.ts.map +1 -0
- package/src/eth/builtin/eacaggregatorproxy.js +8 -0
- package/src/eth/builtin/eacaggregatorproxy.js.map +1 -0
- package/src/eth/builtin/erc1155.d.ts +5 -0
- package/src/eth/builtin/erc1155.d.ts.map +1 -0
- package/src/eth/builtin/erc1155.js +8 -0
- package/src/eth/builtin/erc1155.js.map +1 -0
- package/src/eth/builtin/erc20.d.ts +5 -0
- package/src/eth/builtin/erc20.d.ts.map +1 -0
- package/src/eth/builtin/erc20.js +8 -0
- package/src/eth/builtin/erc20.js.map +1 -0
- package/src/eth/builtin/erc20bytes.d.ts +5 -0
- package/src/eth/builtin/erc20bytes.d.ts.map +1 -0
- package/src/eth/builtin/erc20bytes.js +8 -0
- package/src/eth/builtin/erc20bytes.js.map +1 -0
- package/src/eth/builtin/erc721.d.ts +5 -0
- package/src/eth/builtin/erc721.d.ts.map +1 -0
- package/src/eth/builtin/erc721.js +8 -0
- package/src/eth/builtin/erc721.js.map +1 -0
- package/src/eth/builtin/index.d.ts +13 -0
- package/src/eth/builtin/index.d.ts.map +1 -0
- package/src/eth/builtin/index.js +16 -0
- package/src/eth/builtin/index.js.map +1 -0
- package/src/eth/builtin/internal/EACAggregatorProxy.d.ts +50 -0
- package/src/eth/builtin/internal/EACAggregatorProxy.d.ts.map +1 -0
- package/src/eth/builtin/internal/EACAggregatorProxy.js +2 -0
- package/src/eth/builtin/internal/EACAggregatorProxy.js.map +1 -0
- package/src/eth/builtin/internal/ERC1155.d.ts +57 -0
- package/src/eth/builtin/internal/ERC1155.d.ts.map +1 -0
- package/src/eth/builtin/internal/ERC1155.js +2 -0
- package/src/eth/builtin/internal/ERC1155.js.map +1 -0
- package/src/eth/builtin/internal/ERC20.d.ts +41 -0
- package/src/eth/builtin/internal/ERC20.d.ts.map +1 -0
- package/src/eth/builtin/internal/ERC20.js +2 -0
- package/src/eth/builtin/internal/ERC20.js.map +1 -0
- package/src/eth/builtin/internal/ERC20Bytes.d.ts +32 -0
- package/src/eth/builtin/internal/ERC20Bytes.d.ts.map +1 -0
- package/src/eth/builtin/internal/ERC20Bytes.js +2 -0
- package/src/eth/builtin/internal/ERC20Bytes.js.map +1 -0
- package/src/eth/builtin/internal/ERC721.d.ts +43 -0
- package/src/eth/builtin/internal/ERC721.d.ts.map +1 -0
- package/src/eth/builtin/internal/ERC721.js +2 -0
- package/src/eth/builtin/internal/ERC721.js.map +1 -0
- package/src/eth/builtin/internal/WETH9.d.ts +47 -0
- package/src/eth/builtin/internal/WETH9.d.ts.map +1 -0
- package/src/eth/builtin/internal/WETH9.js +2 -0
- package/src/eth/builtin/internal/WETH9.js.map +1 -0
- package/src/eth/builtin/internal/common.d.ts +3 -0
- package/src/eth/builtin/internal/common.d.ts.map +1 -0
- package/src/eth/builtin/internal/common.js +8 -0
- package/src/eth/builtin/internal/common.js.map +1 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +373 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.js +1355 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.d.ts +7 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.js +55 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/erc1155-processor.d.ts +173 -0
- package/src/eth/builtin/internal/erc1155-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc1155-processor.js +596 -0
- package/src/eth/builtin/internal/erc1155-processor.js.map +1 -0
- package/src/eth/builtin/internal/erc1155-test-utils.d.ts +7 -0
- package/src/eth/builtin/internal/erc1155-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc1155-test-utils.js +55 -0
- package/src/eth/builtin/internal/erc1155-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/erc20-processor.d.ts +244 -0
- package/src/eth/builtin/internal/erc20-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc20-processor.js +1109 -0
- package/src/eth/builtin/internal/erc20-processor.js.map +1 -0
- package/src/eth/builtin/internal/erc20-test-utils.d.ts +6 -0
- package/src/eth/builtin/internal/erc20-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc20-test-utils.js +44 -0
- package/src/eth/builtin/internal/erc20-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/erc20bytes-processor.d.ts +144 -0
- package/src/eth/builtin/internal/erc20bytes-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc20bytes-processor.js +594 -0
- package/src/eth/builtin/internal/erc20bytes-processor.js.map +1 -0
- package/src/eth/builtin/internal/erc20bytes-test-utils.d.ts +5 -0
- package/src/eth/builtin/internal/erc20bytes-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc20bytes-test-utils.js +33 -0
- package/src/eth/builtin/internal/erc20bytes-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/erc721-processor.d.ts +215 -0
- package/src/eth/builtin/internal/erc721-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc721-processor.js +895 -0
- package/src/eth/builtin/internal/erc721-processor.js.map +1 -0
- package/src/eth/builtin/internal/erc721-test-utils.d.ts +6 -0
- package/src/eth/builtin/internal/erc721-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/erc721-test-utils.js +44 -0
- package/src/eth/builtin/internal/erc721-test-utils.js.map +1 -0
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +400 -0
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.js +524 -0
- package/src/eth/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/ERC1155__factory.d.ts +251 -0
- package/src/eth/builtin/internal/factories/ERC1155__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/ERC1155__factory.js +329 -0
- package/src/eth/builtin/internal/factories/ERC1155__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.d.ts +185 -0
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.js +251 -0
- package/src/eth/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/ERC20__factory.d.ts +303 -0
- package/src/eth/builtin/internal/factories/ERC20__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/ERC20__factory.js +401 -0
- package/src/eth/builtin/internal/factories/ERC20__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/ERC721__factory.d.ts +273 -0
- package/src/eth/builtin/internal/factories/ERC721__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/ERC721__factory.js +361 -0
- package/src/eth/builtin/internal/factories/ERC721__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/WETH9__factory.d.ts +220 -0
- package/src/eth/builtin/internal/factories/WETH9__factory.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/WETH9__factory.js +294 -0
- package/src/eth/builtin/internal/factories/WETH9__factory.js.map +1 -0
- package/src/eth/builtin/internal/factories/index.d.ts +7 -0
- package/src/eth/builtin/internal/factories/index.d.ts.map +1 -0
- package/src/eth/builtin/internal/factories/index.js +10 -0
- package/src/eth/builtin/internal/factories/index.js.map +1 -0
- package/src/eth/builtin/internal/index.d.ts +14 -0
- package/src/eth/builtin/internal/index.d.ts.map +1 -0
- package/src/eth/builtin/internal/index.js +8 -0
- package/src/eth/builtin/internal/index.js.map +1 -0
- package/src/eth/builtin/internal/weth9-processor.d.ts +172 -0
- package/src/eth/builtin/internal/weth9-processor.d.ts.map +1 -0
- package/src/eth/builtin/internal/weth9-processor.js +729 -0
- package/src/eth/builtin/internal/weth9-processor.js.map +1 -0
- package/src/eth/builtin/internal/weth9-test-utils.d.ts +7 -0
- package/src/eth/builtin/internal/weth9-test-utils.d.ts.map +1 -0
- package/src/eth/builtin/internal/weth9-test-utils.js +55 -0
- package/src/eth/builtin/internal/weth9-test-utils.js.map +1 -0
- package/src/eth/builtin/weth9.d.ts +5 -0
- package/src/eth/builtin/weth9.d.ts.map +1 -0
- package/src/eth/builtin/weth9.js +8 -0
- package/src/eth/builtin/weth9.js.map +1 -0
- package/src/solana/builtin/index.d.ts +2 -0
- package/src/solana/builtin/index.d.ts.map +1 -0
- package/src/solana/builtin/index.js +2 -0
- package/src/solana/builtin/index.js.map +1 -0
- package/src/solana/builtin/spl-token-processor.d.ts +40 -0
- package/src/solana/builtin/spl-token-processor.d.ts.map +1 -0
- package/src/solana/builtin/spl-token-processor.js +254 -0
- package/src/solana/builtin/spl-token-processor.js.map +1 -0
- package/src/solana/builtin/types.d.ts +428 -0
- package/src/solana/builtin/types.d.ts.map +1 -0
- package/src/solana/builtin/types.js +201 -0
- package/src/solana/builtin/types.js.map +1 -0
- package/src/sui/builtin/0x1.d.ts +114 -0
- package/src/sui/builtin/0x1.d.ts.map +1 -0
- package/src/sui/builtin/0x1.js +159 -0
- package/src/sui/builtin/0x1.js.map +1 -0
- package/src/sui/builtin/0x2.d.ts +1250 -0
- package/src/sui/builtin/0x2.d.ts.map +1 -0
- package/src/sui/builtin/0x2.js +1511 -0
- package/src/sui/builtin/0x2.js.map +1 -0
- package/src/sui/builtin/0x3.d.ts +774 -0
- package/src/sui/builtin/0x3.d.ts.map +1 -0
- package/src/sui/builtin/0x3.js +720 -0
- package/src/sui/builtin/0x3.js.map +1 -0
- package/src/sui/builtin/index.d.ts +4 -0
- package/src/sui/builtin/index.d.ts.map +1 -0
- package/src/sui/builtin/index.js +7 -0
- package/src/sui/builtin/index.js.map +1 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/sui/sui-processor.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/models.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/transaction.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/to-internal.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/sui-chain-adapter.ts","../../../node_modules/.pnpm/@typemove+sui@1.9.0_typescript@5.5.2/node_modules/@typemove/sui/src/move-coder.ts","../src/sui/move-coder.ts","../src/sui/context.ts","../src/sui/utils.ts","../src/sui/sui-object-processor.ts","../src/sui/sui-object-processor-template.ts","../src/sui/models.ts","../src/sui/sui-plugin.ts","../src/sui/index.ts"],"sourcesContent":["import { Data_SuiCall, Data_SuiEvent, Data_SuiObjectChange, MoveFetchConfig } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiNetwork } from './network.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { SuiContext, SuiObjectChangeContext } from './context.js'\nimport { MoveCallSuiTransaction, SuiEvent, SuiTransactionBlockResponse, SuiObjectChange } from '@mysten/sui/client'\nimport {\n accountAddressString,\n CallHandler,\n EventFilter,\n EventHandler,\n FunctionNameAndCallFilter,\n ObjectChangeHandler,\n SPLITTER,\n TransactionFilter\n} from '../move/index.js'\nimport { getMoveCalls } from './utils.js'\nimport { defaultMoveCoder, MoveCoder } from './index.js'\nimport { ALL_ADDRESS, Labels, PromiseOrVoid } from '../core/index.js'\nimport { Required } from 'utility-types'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport const DEFAULT_FETCH_CONFIG: MoveFetchConfig = {\n resourceChanges: false,\n allEvents: true,\n inputs: true\n}\n\nexport type IndexConfigure = Required<SuiBindOptions, 'startCheckpoint' | 'network'>\n\nexport function configure(options: SuiBindOptions): IndexConfigure {\n return {\n startCheckpoint: options.startCheckpoint || 0n,\n address: options.address === ALL_ADDRESS ? ALL_ADDRESS : accountAddressString(options.address),\n network: options.network || SuiNetwork.MAIN_NET,\n baseLabels: options.baseLabels\n }\n}\n\nexport interface SuiBindOptions {\n address: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: Labels\n}\n\nexport class SuiProcessorState extends ListStateStorage<SuiBaseProcessor> {\n static INSTANCE = new SuiProcessorState()\n}\n\nexport class SuiBaseProcessor {\n readonly moduleName: string\n config: IndexConfigure\n\n eventHandlers: EventHandler<Data_SuiEvent>[] = []\n callHandlers: CallHandler<Data_SuiCall>[] = []\n objectChangeHandlers: ObjectChangeHandler<Data_SuiObjectChange>[] = []\n\n coder: MoveCoder\n\n constructor(name: string, options: SuiBindOptions) {\n this.moduleName = name\n this.config = configure(options)\n SuiProcessorState.INSTANCE.addValue(this)\n this.coder = defaultMoveCoder(this.config.network)\n\n return proxyProcessor(this)\n }\n\n getChainId(): string {\n return this.config.network\n }\n\n protected onMoveEvent(\n handler: (event: SuiEvent, ctx: SuiContext) => PromiseOrVoid,\n filter: EventFilter | EventFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: EventFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // const address = this.config.address\n // const moduleName = this.moduleName\n\n const processor = this\n\n this.eventHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'event is null')\n }\n const txn = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n if (txn.events == null) {\n txn.events = []\n }\n\n const evt = JSON.parse(data.rawEvent) as SuiEvent\n const idx = Number(evt.id.eventSeq) || 0\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n txn,\n idx,\n processor.config.baseLabels\n )\n\n const decoded = await processor.coder.decodeEvent<any>(evt)\n await handler(decoded || evt, ctx)\n\n return ctx.stopAndGetResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n protected onEntryFunctionCall(\n handler: (call: MoveCallSuiTransaction, ctx: SuiContext) => PromiseOrVoid,\n filter: FunctionNameAndCallFilter | FunctionNameAndCallFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: FunctionNameAndCallFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n const processor = this\n const allFunctionType = new Set(_filters.map((f) => f.function))\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'call is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n const calls: MoveCallSuiTransaction[] = getMoveCalls(tx)\n const txKind = tx.transaction?.data?.transaction\n if (!txKind) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected getTransactionKind get empty')\n }\n\n // getProgrammableTransaction(txKind)\n const programmableTx = txKind.kind === 'ProgrammableTransaction' ? txKind : undefined\n\n // TODO potential pass index\n for (const call of calls) {\n const functionType = [call.module, call.function].join(SPLITTER)\n if (!allFunctionType.has(functionType)) {\n continue\n }\n\n // TODO maybe do in parallel\n const decoded = await processor.coder.decodeFunctionPayload(call, programmableTx?.inputs || [])\n await handler(decoded, ctx)\n }\n }\n return ctx.stopAndGetResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n onEvent(handler: (event: SuiEvent, ctx: SuiContext) => void, fetchConfig?: Partial<MoveFetchConfig>): this {\n this.onMoveEvent(handler, { type: '' }, fetchConfig)\n return this\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => PromiseOrVoid,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n const processor = this\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n await handler(tx, ctx)\n }\n return ctx.stopAndGetResult()\n },\n filters: [{ ...filter, function: '' }],\n fetchConfig: _fetchConfig\n })\n return this\n }\n\n protected onObjectChange(\n handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => PromiseOrVoid,\n type: string\n ): this {\n if (this.config.network === SuiNetwork.TEST_NET) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'object change not supported in testnet')\n }\n const processor = this\n this.objectChangeHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data: Data_SuiObjectChange) {\n const ctx = new SuiObjectChangeContext(\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n data.txDigest,\n processor.config.baseLabels\n )\n await handler(data.rawChanges.map((r) => JSON.parse(r)) as SuiObjectChange[], ctx)\n return ctx.stopAndGetResult()\n },\n type\n })\n\n return this\n }\n}\n\nexport class SuiModulesProcessor extends SuiBaseProcessor {\n static bind(options: SuiBindOptions): SuiModulesProcessor {\n return new SuiModulesProcessor(ALL_ADDRESS, options)\n }\n}\n\nexport class SuiGlobalProcessor extends SuiBaseProcessor {\n static bind(options: Omit<SuiBindOptions, 'address'>): SuiGlobalProcessor {\n return new SuiGlobalProcessor(ALL_ADDRESS, { ...options, address: ALL_ADDRESS })\n }\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void,\n filter: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n // TODO enable more strict check\n // if (!filter.publicKeyPrefix || filter.publicKeyPrefix.length < 2) {\n // throw new ServerError(Status.INVALID_ARGUMENT, 'restriction too low for global processor')\n // }\n return super.onTransactionBlock(handler, filter, fetchConfig)\n }\n\n // deprecated,, use object type processor\n public onObjectChange(\n handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => void,\n type: string\n ): this {\n return super.onObjectChange(handler, type)\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import type { SuiEvent, MoveCallSuiTransaction, SuiMoveObject, DevInspectResults } from '@mysten/sui/client'\nimport { DecodedStruct } from '@typemove/move'\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000000'\n\nexport type TypedEventInstance<T> = DecodedStruct<SuiEvent, T>\nexport type TypedSuiMoveObject<T> = DecodedStruct<SuiMoveObject, T>\n\nexport type TypedFunctionPayload<T extends Array<any>> = MoveCallSuiTransaction & {\n /**\n * decoded argument data using ABI, undefined if there is decoding error, usually because the ABI/data mismatch\n */\n arguments_decoded: T\n}\n\nexport type TypedDevInspectResults<T extends Array<any>> = DevInspectResults & {\n /**\n * Decoded return values using ABI, undefined if there is decoding error, usually because the ABI/data mismatch\n */\n results_decoded?: T\n}\n","import { Transaction, TransactionArgument, TransactionObjectInput } from '@mysten/sui/transactions'\n\nexport function isTransactionArgument(value: any): boolean {\n if (typeof value !== 'object') return false\n if (value === null || value === undefined) return false\n\n return (\n value.$kind === 'GasCoin' || value.$kind === 'Result' || value.$kind === 'NestedResult' || value.$kind === 'Input'\n )\n}\n\nexport function transactionArgumentOrObject(\n value: TransactionArgument | TransactionObjectInput,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.object(value)\n}\n\nexport function transactionArgumentOrPure(value: any, transactionBlock: Transaction): any {\n if (isTransactionArgument(value)) {\n return value\n }\n return typeof value == 'string' ? transactionBlock.pure.string(value) : transactionBlock.pure.u64(value)\n}\n\nexport function transactionArgumentOrPureString(\n value: TransactionArgument | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.string(value as string)\n}\n\nexport function transactionArgumentOrPureAddress(\n value: TransactionArgument | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.address(value as string)\n}\n\nexport function transactionArgumentOrPureU8(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u8(value as number)\n}\n\nexport function transactionArgumentOrPureU16(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u16(value as number)\n}\n\nexport function transactionArgumentOrPureU32(\n value: TransactionArgument | number,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u32(value as number)\n}\n\nexport function transactionArgumentOrPureU64(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u64(value as number)\n}\n\nexport function transactionArgumentOrPureU128(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u128(value as number)\n}\n\nexport function transactionArgumentOrPureU256(\n value: TransactionArgument | bigint | number | string,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.u256(value as number)\n}\n\nexport function transactionArgumentOrPureBool(\n value: TransactionArgument | boolean,\n transactionBlock: Transaction\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value as TransactionArgument\n }\n return transactionBlock.pure.bool(value as boolean)\n}\n\n// TODO vector might be nested\nexport function transactionArgumentOrVec(value: any, transactionBlock: Transaction): any {\n if (isTransactionArgument(value)) {\n return value\n }\n return transactionBlock.makeMoveVec({\n elements: value.map((a: any) => transactionBlock.object(a))\n })\n}\n","import type {\n SuiMoveNormalizedEnum,\n SuiMoveNormalizedField,\n SuiMoveNormalizedFunction,\n SuiMoveNormalizedModule,\n SuiMoveNormalizedStruct,\n SuiMoveNormalizedType\n} from '@mysten/sui/client'\nimport {\n InternalMoveEnum,\n InternalMoveFunction,\n InternalMoveFunctionVisibility,\n InternalMoveModule,\n InternalMoveStruct,\n InternalMoveStructField,\n SPLITTER,\n TypeDescriptor\n} from '@typemove/move'\n\nexport function toInternalModule(module: SuiMoveNormalizedModule): InternalMoveModule {\n return {\n address: module.address,\n exposedFunctions: Object.entries(module.exposedFunctions).map(([n, f]) => toInternalFunction(n, f)),\n name: module.name,\n structs: Object.entries(module.structs).map(([n, s]) => toInternalStruct(n, s)),\n enums: Object.entries(module.enums || {}).map(([n, e]) => toInternalEnum(n, e))\n }\n}\n\nfunction toInternalFunction(name: string, func: SuiMoveNormalizedFunction): InternalMoveFunction {\n let visibility\n switch (func.visibility) {\n case 'Private':\n visibility = InternalMoveFunctionVisibility.PRIVATE\n break\n case 'Public':\n visibility = InternalMoveFunctionVisibility.PUBLIC\n break\n case 'Friend':\n visibility = InternalMoveFunctionVisibility.FRIEND\n break\n default:\n throw Error('No visibility for function' + name)\n }\n return {\n typeParams: func.typeParameters.map((p: any) => {\n return { constraints: p.abilities }\n }),\n isEntry: func.isEntry,\n name: name,\n params: func.parameters.map(toTypeDescriptor),\n return: func.return.map(toTypeDescriptor),\n visibility: visibility\n }\n}\n\nfunction toInternalStruct(name: string, struct: SuiMoveNormalizedStruct): InternalMoveStruct {\n return {\n abilities: struct.abilities.abilities,\n fields: struct.fields.map(toInternalField),\n typeParams: struct.typeParameters.map((p: any) => {\n return { constraints: p.constraints.abilities }\n }),\n isNative: false,\n isEvent: false,\n name: name\n }\n}\n\nfunction toInternalEnum(name: string, enumType: SuiMoveNormalizedEnum): InternalMoveEnum {\n return {\n name: name,\n abilities: enumType.abilities.abilities,\n typeParams: enumType.typeParameters.map((p: any) => {\n return { constraints: p.constraints.abilities }\n }),\n variants: Object.entries(enumType.variants).reduce((acc: { [key: string]: InternalMoveStructField[] }, [k, v]) => {\n acc[k] = v.map(toInternalField)\n return acc\n }, {})\n }\n}\n\nfunction toInternalField(module: SuiMoveNormalizedField): InternalMoveStructField {\n return {\n name: module.name,\n type: toTypeDescriptor(module.type)\n }\n}\n\nfunction toTypeDescriptor(normalizedType: SuiMoveNormalizedType): TypeDescriptor {\n if (typeof normalizedType === 'string') {\n return new TypeDescriptor(normalizedType)\n }\n\n if ('Struct' in normalizedType) {\n const qname = [normalizedType.Struct.address, normalizedType.Struct.module, normalizedType.Struct.name].join(\n SPLITTER\n )\n\n const args = normalizedType.Struct.typeArguments.map(toTypeDescriptor)\n\n return new TypeDescriptor(qname, args)\n }\n\n if ('Vector' in normalizedType) {\n return new TypeDescriptor('Vector', [toTypeDescriptor(normalizedType.Vector)])\n }\n if ('TypeParameter' in normalizedType) {\n return new TypeDescriptor('T' + normalizedType.TypeParameter)\n }\n\n if ('Reference' in normalizedType) {\n const res = toTypeDescriptor(normalizedType.Reference)\n res.reference = true\n return res\n }\n\n if ('MutableReference' in normalizedType) {\n const res = toTypeDescriptor(normalizedType.MutableReference)\n res.reference = true\n res.mutable = true\n return res\n }\n\n throw new Error('Unexpected sui type')\n}\n","import { toInternalModule } from './to-internal.js'\nimport {\n InternalMoveModule,\n InternalMoveStruct,\n ChainAdapter,\n moduleQname,\n SPLITTER,\n TypeDescriptor\n} from '@typemove/move'\n\nimport { SuiMoveNormalizedModule, SuiEvent, SuiMoveObject, SuiClient } from '@mysten/sui/client'\n\nexport class SuiChainAdapter extends ChainAdapter<\n // SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n async getChainId() {\n return this.client.getChainIdentifier()\n }\n // static INSTANCE = new SuiChainAdapter()\n\n client: SuiClient\n constructor(client: SuiClient) {\n super()\n this.client = client\n }\n\n async fetchModule(\n account: string,\n module: string\n // network: SuiNetwork\n ): Promise<SuiMoveNormalizedModule> {\n return await this.client.getNormalizedMoveModule({ package: account, module })\n }\n\n async fetchModules(\n account: string\n // network: SuiNetwork\n ): Promise<SuiMoveNormalizedModule[]> {\n const modules = await this.client.getNormalizedMoveModulesByPackage({\n package: account\n })\n return Object.values(modules)\n }\n\n getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {\n return params\n // if (params.length === 0) {\n // return params\n // }\n // return params.slice(0, params.length - 1)\n }\n\n toInternalModules(modules: SuiMoveNormalizedModule[]): InternalMoveModule[] {\n return Object.values(modules).map(toInternalModule)\n }\n\n getAllEventStructs(modules: InternalMoveModule[]): Map<string, InternalMoveStruct> {\n const eventMap = new Map<string, InternalMoveStruct>()\n\n for (const module of modules) {\n const qname = moduleQname(module)\n\n for (const struct of module.structs) {\n const abilities = new Set(struct.abilities)\n if (abilities.has('Drop') && abilities.has('Copy')) {\n eventMap.set(qname + SPLITTER + struct.name, struct)\n }\n }\n }\n return eventMap\n }\n\n getType(base: SuiEvent | SuiMoveObject): string {\n return base.type\n }\n\n getData(val: SuiEvent | SuiMoveObject) {\n // if (val.parsedJson) {\n // return val.parsedJson as any\n // }\n if (val === undefined) {\n throw Error('val is undefined')\n }\n if ('parsedJson' in val) {\n return val.parsedJson as any\n }\n // if (SuiParsedData.is(val)) {\n // return val.fields as any\n // }\n if (val.dataType === 'moveObject') {\n return val.fields as any\n }\n // if (SuiMoveObject.is(val)) {\n // return val.fields as any\n // }\n // This may not be perfect, just think everything has\n if ('fields' in val) {\n if ('type' in val && Object.keys(val).length === 2) {\n return val.fields as any\n }\n }\n return val as any\n }\n // validateAndNormalizeAddress(address: string) {\n // return validateAndNormalizeAddress(address)\n // }\n}\n\n// function getRpcEndpoint(network: SuiNetwork): string {\n// switch (network) {\n// case SuiNetwork.TEST_NET:\n// return 'https://fullnode.testnet.sui.io/'\n// }\n// return 'https://fullnode.mainnet.sui.io/'\n// }\n\nfunction getRpcClient(endpoint: string): SuiClient {\n return new SuiClient({ url: endpoint })\n}\n","import { TypedDevInspectResults, TypedEventInstance, TypedFunctionPayload } from './models.js'\nimport {\n AbstractMoveCoder,\n ANY_TYPE,\n DecodedStruct,\n parseMoveType,\n SPLITTER,\n TypeDescriptor,\n InternalMoveModule\n} from '@typemove/move'\nimport {\n MoveCallSuiTransaction,\n SuiCallArg,\n SuiEvent,\n SuiMoveNormalizedModule,\n SuiMoveObject,\n DevInspectResults,\n SuiClient\n} from '@mysten/sui/client'\nimport { toInternalModule } from './to-internal.js'\nimport { SuiChainAdapter } from './sui-chain-adapter.js'\nimport { dynamic_field } from './builtin/0x2.js'\nimport { BcsType, bcs } from '@mysten/sui/bcs'\n\n// import { Encoding } from '@mysten/bcs/types', this doesn't get exported correctly\nexport type Encoding = 'base58' | 'base64' | 'hex'\n\nimport { normalizeSuiObjectId, normalizeSuiAddress } from '@mysten/sui/utils'\n\nexport class MoveCoder extends AbstractMoveCoder<\n // SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n constructor(client: SuiClient) {\n super(new SuiChainAdapter(client))\n }\n\n load(module: SuiMoveNormalizedModule, address: string): InternalMoveModule {\n let m = this.moduleMapping.get(module.address + '::' + module.name)\n const mDeclared = this.moduleMapping.get(address + '::' + module.name)\n if (m && mDeclared) {\n return m\n }\n this.accounts.add(module.address)\n m = toInternalModule(module)\n this.loadInternal(m, address)\n return m\n }\n\n protected async decode(data: any, type: TypeDescriptor): Promise<any> {\n switch (type.qname) {\n case '0x1::ascii::Char':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n const byte = (await super.decode(data, type)).byte as number\n return String.fromCharCode(byte)\n }\n case '0x1::ascii::String':\n if (data !== undefined && typeof data !== 'string') {\n // bcs verified\n const bytes = (await super.decode(data, type)).bytes as number[]\n return new TextDecoder().decode(new Uint8Array(bytes))\n }\n case '0x2::object::ID':\n if (data !== undefined && typeof data !== 'string') {\n // bcs verified\n const bytes = (await super.decode(data, type)).bytes as string\n return normalizeSuiObjectId(bytes)\n }\n case '0x2::url::Url':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n return (await super.decode(data, type)).url\n }\n case '0x2::coin::Coin':\n if (data !== undefined && typeof data !== 'string') {\n // bcs\n const bytes = (await super.decode(data, type)).id.id.bytes as number[]\n return new TextDecoder().decode(new Uint8Array(bytes))\n }\n return data\n case '0x2::balance::Balance':\n if (data.value) {\n // bcs verfied\n const balance = await super.decode(data, type)\n return balance.value\n }\n return BigInt(data)\n case '0x1::option::Option':\n if (data === null) {\n return data\n }\n if (data.vec) {\n // bcs verifed\n let vec = await super.decode(data, type)\n vec = vec.vec\n if (vec.length === 0) {\n return null\n }\n return vec[0]\n }\n return this.decode(data, type.typeArgs[0])\n case 'Address':\n const str = data as string\n return normalizeSuiAddress(str)\n case '0x1::string::String':\n if (typeof data !== 'string') {\n // bcs\n return new TextDecoder().decode(new Uint8Array(data.bytes))\n }\n default:\n return super.decode(data, type)\n }\n }\n\n decodeEvent<T>(event: SuiEvent): Promise<TypedEventInstance<T> | undefined> {\n return this.decodedStruct(event)\n }\n filterAndDecodeEvents<T>(type: TypeDescriptor<T> | string, resources: SuiEvent[]): Promise<TypedEventInstance<T>[]> {\n if (typeof type === 'string') {\n type = parseMoveType(type)\n }\n return this.filterAndDecodeStruct(type, resources)\n }\n\n async getDynamicFields<T1, T2>(\n objects: SuiMoveObject[],\n keyType: TypeDescriptor<T1> = ANY_TYPE,\n valueType: TypeDescriptor<T2> = ANY_TYPE\n ): Promise<dynamic_field.Field<T1, T2>[]> {\n // const type = dynamic_field.Field.TYPE\n // Not using the code above to avoid cycle initialize failed\n const type = new TypeDescriptor<dynamic_field.Field<T1, T2>>('0x2::dynamic_field::Field')\n type.typeArgs = [keyType, valueType]\n const res = await this.filterAndDecodeObjects(type, objects)\n return res.map((o) => o.data_decoded)\n }\n\n filterAndDecodeObjects<T>(\n type: TypeDescriptor<T>,\n objects: SuiMoveObject[]\n ): Promise<DecodedStruct<SuiMoveObject, T>[]> {\n return this.filterAndDecodeStruct(type, objects)\n }\n\n async decodeFunctionPayload(payload: MoveCallSuiTransaction, inputs: SuiCallArg[]): Promise<MoveCallSuiTransaction> {\n const functionType = [payload.package, payload.module, payload.function].join(SPLITTER)\n const func = await this.getMoveFunction(functionType)\n const params = this.adapter.getMeaningfulFunctionParams(func.params)\n const args = []\n for (const value of payload.arguments || []) {\n const argValue = value as any\n if ('Input' in (argValue as any)) {\n const idx = argValue.Input\n const arg = inputs[idx]\n if (arg.type === 'pure') {\n args.push(arg.value)\n } else if (arg.type === 'object') {\n // object is not there\n args.push(undefined)\n } else {\n console.error('unexpected function arg value')\n args.push(undefined)\n }\n // args.push(arg) // TODO check why ts not work using arg.push(arg)\n } else {\n args.push(undefined)\n }\n }\n\n const argumentsTyped = await this.decodeArray(args, params, false)\n return {\n ...payload,\n arguments_decoded: argumentsTyped\n } as TypedFunctionPayload<any>\n }\n\n private bcsRegistered = new Set<string>()\n private bcsRegistry = new Map<string, BcsType<any>>()\n\n private async getBCSTypeWithArgs(type: TypeDescriptor, args: BcsType<any>[] = []): Promise<BcsType<any>> {\n const qname = type.qname\n const sig = type.getNormalizedSignature()\n const cached = this.bcsRegistry.get(sig)\n if (cached) {\n return cached\n }\n const lowerQname = qname.toLowerCase()\n switch (lowerQname) {\n case 'u8':\n case 'u16':\n case 'u32':\n case 'u64':\n case 'u128':\n case 'u256':\n case 'bool':\n return bcs[lowerQname]()\n case 'address':\n return bcs.Address\n case 'vector':\n return bcs.vector(args[0])\n default:\n if (!qname.includes('::')) {\n throw `Unimplemented builtin type ${qname}`\n }\n }\n let moveStruct\n try {\n moveStruct = await this.getMoveStruct(qname)\n } catch (e) {\n console.error('Invalid move address', qname)\n throw e\n }\n const structDef: Record<string, any> = {}\n for (const field of moveStruct.fields) {\n if (field.type.qname.startsWith('T') && args.length) {\n const index = +field.type.qname.slice(1)\n structDef[field.name] = args[index]\n } else if (field.type.typeArgs.length && args.length) {\n structDef[field.name] = await this.getBCSTypeWithArgs(field.type, args)\n } else {\n structDef[field.name] = await this.getBCSType(field.type)\n }\n }\n return bcs.struct(qname, structDef)\n }\n\n async getBCSType(type: TypeDescriptor): Promise<BcsType<any>> {\n const args = await Promise.all(type.typeArgs.map((x) => this.getBCSType(x)))\n const bcsType = await this.getBCSTypeWithArgs(type, args)\n this.bcsRegistry.set(type.getNormalizedSignature(), bcsType)\n return bcsType\n }\n\n async registerBCSTypes(type: TypeDescriptor): Promise<void> {\n const sig = type.getNormalizedSignature()\n if (this.bcsRegistered.has(sig)) {\n return\n }\n this.bcsRegistered.add(sig)\n\n const bcsType = await this.getBCSType(type)\n this.bcsRegistry.set(type.getNormalizedSignature(), bcsType)\n }\n\n async decodeBCS(type: TypeDescriptor, data: Uint8Array | string, encoding?: Encoding): Promise<any> {\n await this.registerBCSTypes(type)\n if (typeof data == 'string') {\n const buf = Buffer.from(data, encoding as any)\n data = new Uint8Array(buf, buf.byteOffset, buf.byteLength)\n }\n const bcsType = this.bcsRegistry.get(type.getNormalizedSignature())\n return bcsType?.parse(data)\n }\n\n async decodeDevInspectResult<T extends any[]>(inspectRes: DevInspectResults): Promise<TypedDevInspectResults<T>> {\n const returnValues = []\n if (inspectRes.results != null) {\n for (const r of inspectRes.results) {\n if (r.returnValues) {\n for (const returnValue of r.returnValues) {\n const type = parseMoveType(returnValue[1])\n const bcsDecoded = await this.decodeBCS(type, new Uint8Array(returnValue[0]))\n const decoded = await this.decodeType(bcsDecoded, type)\n returnValues.push(decoded)\n }\n } else {\n returnValues.push(null)\n }\n }\n }\n return { ...inspectRes, results_decoded: returnValues as any }\n }\n}\n\nconst DEFAULT_ENDPOINT = 'https://fullnode.mainnet.sui.io/'\nconst CODER_MAP = new Map<string, MoveCoder>()\nconst CHAIN_ID_CODER_MAP = new Map<string, MoveCoder>()\n\nexport function defaultMoveCoder(endpoint: string = DEFAULT_ENDPOINT): MoveCoder {\n let coder = CODER_MAP.get(endpoint)\n if (!coder) {\n coder = new MoveCoder(new SuiClient({ url: endpoint }))\n CODER_MAP.set(endpoint, coder)\n }\n return coder\n}\n\nconst PROVIDER_CODER_MAP = new Map<SuiClient, MoveCoder>()\n\nlet DEFAULT_CHAIN_ID: string | undefined\n\nexport async function getMoveCoder(client: SuiClient): Promise<MoveCoder> {\n let coder = PROVIDER_CODER_MAP.get(client)\n if (!coder) {\n coder = new MoveCoder(client)\n // TODO how to dedup\n const id = await client.getChainIdentifier()\n const defaultCoder = defaultMoveCoder()\n if (!DEFAULT_CHAIN_ID) {\n DEFAULT_CHAIN_ID = await defaultCoder.adapter.getChainId()\n }\n if (id === DEFAULT_CHAIN_ID) {\n coder = defaultCoder\n }\n\n PROVIDER_CODER_MAP.set(client, coder)\n }\n return coder\n}\n","import { MoveCoder } from '@typemove/sui'\n\nimport { getClient, SuiNetwork } from './network.js'\n\nconst CODERS = new Map<SuiNetwork, MoveCoder>()\n\nexport function defaultMoveCoder(network: SuiNetwork = SuiNetwork.MAIN_NET): MoveCoder {\n let coder = CODERS.get(network)\n if (!coder) {\n coder = new MoveCoder(getClient(network))\n CODERS.set(network, coder)\n }\n\n return coder\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, normalizeLabels } from '../index.js'\nimport { getClient, SuiNetwork } from './network.js'\nimport {\n SuiTransactionBlockResponse,\n SuiEvent,\n SuiMoveNormalizedModule,\n SuiMoveObject,\n SuiClient\n} from '@mysten/sui/client'\nimport { MoveCoder } from './index.js'\nimport { defaultMoveCoder } from './move-coder.js'\nimport { MoveAccountContext, MoveContext } from '../move/index.js'\n\nexport class SuiContext extends MoveContext<SuiNetwork, SuiMoveNormalizedModule, SuiEvent | SuiMoveObject> {\n moduleName: string\n timestamp: Date\n checkpoint: bigint\n transaction: SuiTransactionBlockResponse\n eventIndex: number\n coder: MoveCoder\n\n constructor(\n moduleName: string,\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n checkpoint: bigint,\n transaction: SuiTransactionBlockResponse,\n eventIndex: number,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address.toLowerCase()\n this.network = network\n this.moduleName = moduleName\n this.timestamp = timestamp\n this.checkpoint = checkpoint\n this.eventIndex = eventIndex\n this.coder = defaultMoveCoder(network)\n if (transaction) {\n this.transaction = transaction\n }\n }\n\n getChainId() {\n return this.network\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.checkpoint,\n transactionIndex: 0,\n transactionHash: this.transaction?.digest || '', // TODO\n logIndex: this.eventIndex,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n}\n\nexport class SuiObjectChangeContext extends MoveContext<SuiNetwork, SuiMoveNormalizedModule, SuiEvent | SuiMoveObject> {\n timestamp: Date\n checkpoint: bigint\n coder: MoveCoder\n txDigest: string\n\n constructor(\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n checkpoint: bigint,\n txDigest: string,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address\n this.network = network\n this.timestamp = timestamp\n this.checkpoint = checkpoint\n this.txDigest = txDigest\n this.coder = defaultMoveCoder(network)\n }\n\n getChainId() {\n return this.network\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: '*',\n blockNumber: this.checkpoint,\n transactionIndex: -1,\n transactionHash: this.txDigest,\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n}\n\n// TODO address handler should use this context\nexport class SuiAddressContext extends MoveAccountContext<\n SuiNetwork,\n SuiMoveNormalizedModule,\n SuiEvent | SuiMoveObject\n> {\n address: string\n network: SuiNetwork\n checkpoint: bigint\n timestamp: Date\n coder: MoveCoder\n\n protected contractName = 'address'\n\n constructor(\n network: SuiNetwork,\n address: string,\n checkpoint: bigint,\n timestamp: Date,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address\n this.network = network\n this.checkpoint = checkpoint\n this.timestamp = timestamp\n this.coder = defaultMoveCoder(network)\n }\n\n getChainId() {\n return this.network\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.contractName,\n blockNumber: this.checkpoint,\n transactionIndex: 0,\n transactionHash: '',\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels)\n }\n }\n\n get client(): SuiClient {\n return getClient(this.network)\n }\n\n getTimestamp(): number {\n return this.timestamp.getDate()\n }\n}\n\nexport class SuiObjectContext extends SuiAddressContext {\n contractName = 'object'\n objectId: string\n objectVersion: bigint\n\n constructor(\n network: SuiNetwork,\n objectId: string,\n objectVersion: bigint,\n checkpoint: bigint,\n timestamp: Date,\n baseLabels: Labels | undefined\n ) {\n super(network, objectId, checkpoint, timestamp, baseLabels)\n this.objectId = objectId\n this.objectVersion = objectVersion\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n SuiTransactionBlockResponse,\n MoveCallSuiTransaction,\n ProgrammableTransaction,\n SuiTransaction\n} from '@mysten/sui/client'\nimport { accountTypeString } from '@typemove/move'\n\nexport function getMoveCalls(txBlock: SuiTransactionBlockResponse) {\n const txKind = txBlock.transaction?.data.transaction\n if (!txKind) {\n return []\n }\n const programmableTx: ProgrammableTransaction | undefined =\n txKind.kind === 'ProgrammableTransaction' ? txKind : undefined\n if (!programmableTx) {\n return []\n }\n\n return programmableTx.transactions.flatMap((tx: SuiTransaction) => {\n if ('MoveCall' in tx) {\n const call = tx.MoveCall as MoveCallSuiTransaction\n call.package = accountTypeString(call.package)\n\n return [call]\n }\n return []\n })\n}\n\n// function isHex(value: string): boolean {\n// return /^(0x|0X)?[a-fA-F0-9]+$/.test(value)\n// }\n//\n// function getHexByteLength(value: string): number {\n// return /^(0x|0X)/.test(value) ? (value.length - 2) / 2 : value.length / 2\n// }\n//\n// export function isValidSuiAddress(value: string): value is SuiAddress {\n// return isHex(value) && getHexByteLength(value) <= SUI_ADDRESS_LENGTH\n// }\n\n// export function validateAndNormalizeAddress(address: string): string {\n// // if (isFrameworkAccount(address)) {\n// // const n = parseInt(address, 16)\n// // return `0x${n.toString(16)}`\n// // }\n// if (!isValidSuiAddress(address)) {\n// throw Error('Not valid Address')\n// }\n// return normalizeSuiAddress(address)\n// }\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import {\n Data_SuiCall,\n Data_SuiObject,\n Data_SuiObjectChange,\n HandleInterval,\n MoveAccountFetchConfig,\n MoveFetchConfig,\n MoveOwnerType,\n ProcessResult\n} from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiNetwork } from './network.js'\nimport { SuiAddressContext, SuiContext, SuiObjectChangeContext, SuiObjectContext } from './context.js'\nimport { SuiMoveObject, SuiObjectChange, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { ALL_ADDRESS, PromiseOrVoid } from '../core/index.js'\nimport { configure, DEFAULT_FETCH_CONFIG, IndexConfigure, SuiBindOptions } from './sui-processor.js'\nimport { CallHandler, TransactionFilter, accountTypeString, ObjectChangeHandler } from '../move/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { TypeDescriptor } from '@typemove/move'\nimport { TypedSuiMoveObject } from './models.js'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nexport interface SuiObjectBindOptions {\n objectId: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: { [key: string]: string }\n}\n\nexport interface SuiObjectTypeBindOptions<T> {\n objectType: TypeDescriptor<T>\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: { [key: string]: string }\n}\n\ninterface ObjectHandler {\n type?: string\n checkPointInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n fetchConfig: MoveAccountFetchConfig\n handler: (resource: Data_SuiObject) => Promise<ProcessResult>\n handlerName: string\n}\n\nexport const DEFAULT_ACCOUNT_FETCH_CONFIG: MoveAccountFetchConfig = {\n owned: false\n}\n\nexport class SuiAccountProcessorState extends ListStateStorage<SuiBaseObjectOrAddressProcessor<any>> {\n static INSTANCE = new SuiAccountProcessorState()\n}\n\nexport interface SuiInternalObjectsBindOptions extends SuiBindOptions {\n ownerType: MoveOwnerType\n}\n\nexport abstract class SuiBaseObjectOrAddressProcessor<HandlerType> {\n config: IndexConfigure\n ownerType: MoveOwnerType\n templateId: number | undefined\n\n objectHandlers: ObjectHandler[] = []\n objectChangeHandlers: ObjectChangeHandler<Data_SuiObjectChange>[] = []\n\n // static bind(options: SuiObjectsBindOptions): SuiBaseObjectsProcessor<any> {\n // return new SuiBaseObjectsProcessor(options)\n // }\n\n protected constructor(options: SuiInternalObjectsBindOptions) {\n if (options.ownerType === MoveOwnerType.TYPE) {\n this.config = {\n startCheckpoint: options.startCheckpoint || 0n,\n address: options.address === '*' ? '*' : accountTypeString(options.address),\n network: options.network || SuiNetwork.MAIN_NET,\n baseLabels: options.baseLabels\n }\n } else {\n this.config = configure(options)\n }\n this.ownerType = options.ownerType\n SuiAccountProcessorState.INSTANCE.addValue(this)\n\n return proxyProcessor(this)\n }\n\n getChainId(): string {\n return this.config.network\n }\n\n // protected abstract transformObjects(objects: SuiMoveObject[]): SuiMoveObject[]\n\n protected abstract doHandle(handler: HandlerType, data: Data_SuiObject, ctx: SuiObjectContext): Promise<any>\n\n public onInterval(\n handler: HandlerType, //(resources: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n checkpointInterval: HandleInterval | undefined,\n type: string | undefined,\n fetchConfig: Partial<MoveAccountFetchConfig> | undefined,\n handlerName = getHandlerName()\n ): this {\n const processor = this\n this.objectHandlers.push({\n handlerName,\n handler: async function (data) {\n const ctx = new SuiObjectContext(\n processor.config.network,\n data.objectId,\n data.objectVersion,\n data.slot,\n data.timestamp || new Date(0),\n processor.config.baseLabels\n )\n await processor.doHandle(handler, data, ctx)\n return ctx.stopAndGetResult()\n },\n timeIntervalInMinutes: timeInterval,\n checkPointInterval: checkpointInterval,\n type,\n fetchConfig: { ...DEFAULT_ACCOUNT_FETCH_CONFIG, ...fetchConfig }\n })\n return this\n }\n}\n\nabstract class SuiBaseObjectOrAddressProcessorInternal<\n HandlerType\n> extends SuiBaseObjectOrAddressProcessor<HandlerType> {\n public onTimeInterval(\n handler: HandlerType,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n type,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: HandlerType,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n type,\n fetchConfig\n )\n }\n}\n\nexport class SuiAddressProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (objects: SuiMoveObject[], ctx: SuiAddressContext) => PromiseOrVoid\n> {\n callHandlers: CallHandler<Data_SuiCall>[] = []\n\n static bind(options: SuiBindOptions): SuiAddressProcessor {\n return new SuiAddressProcessor({ ...options, ownerType: MoveOwnerType.ADDRESS })\n }\n\n protected async doHandle(\n handler: (objects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n return handler(data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => PromiseOrVoid,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ) {\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n const _filter: TransactionFilter = {\n fromAndToAddress: {\n from: '',\n to: this.config.address\n },\n ...filter\n }\n\n const processor = this\n\n this.callHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data) {\n if (!data.rawTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is null')\n }\n const tx = JSON.parse(data.rawTransaction) as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n 'object',\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n await handler(tx, ctx)\n }\n return ctx.stopAndGetResult()\n },\n filters: [{ ..._filter, function: '' }],\n fetchConfig: _fetchConfig\n })\n return this\n }\n}\n\nexport class SuiObjectProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n static bind(options: SuiObjectBindOptions): SuiObjectProcessor {\n return new SuiObjectProcessor({\n address: options.objectId,\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.OBJECT,\n baseLabels: options.baseLabels\n })\n }\n\n protected async doHandle(\n handler: (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n if (!data.rawSelf) {\n console.log(`Sui object not existed in ${ctx.checkpoint}, please specific a start time`)\n return\n }\n return handler(\n JSON.parse(data.rawSelf) as SuiMoveObject,\n data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[],\n ctx\n )\n }\n}\n\nexport class SuiObjectTypeProcessor<T> extends SuiBaseObjectOrAddressProcessor<\n (self: TypedSuiMoveObject<T>, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n objectType: TypeDescriptor<T>\n\n static bind<T>(options: SuiObjectTypeBindOptions<T>): SuiObjectTypeProcessor<T> {\n const processor = new SuiObjectTypeProcessor<T>({\n address: ALL_ADDRESS, // current only support on all address\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.TYPE,\n baseLabels: options.baseLabels\n })\n processor.objectType = options.objectType\n return processor\n }\n\n protected async doHandle(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n if (!data.rawSelf) {\n console.log(`Sui object not existed in ${ctx.checkpoint}, please specific a start time`)\n return\n }\n const object = await ctx.coder.filterAndDecodeObjects(this.objectType, [JSON.parse(data.rawSelf) as SuiMoveObject])\n return handler(object[0], data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n\n public onObjectChange(handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => PromiseOrVoid): this {\n if (this.config.network === SuiNetwork.TEST_NET) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'object change not supported in testnet')\n }\n const processor = this\n this.objectChangeHandlers.push({\n handlerName: getHandlerName(),\n handler: async function (data: Data_SuiObjectChange) {\n const ctx = new SuiObjectChangeContext(\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n data.txDigest,\n processor.config.baseLabels\n )\n await handler(data.rawChanges.map((r) => JSON.parse(r)) as SuiObjectChange[], ctx)\n return ctx.stopAndGetResult()\n },\n type: this.objectType.qname\n })\n\n return this\n }\n\n public onTimeInterval(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n this.objectType.qname,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: (\n self: TypedSuiMoveObject<T>,\n dynamicFieldObjects: SuiMoveObject[],\n ctx: SuiObjectContext\n ) => PromiseOrVoid,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n this.objectType.qname,\n fetchConfig\n )\n }\n}\n\nexport class SuiWrappedObjectProcessor extends SuiBaseObjectOrAddressProcessorInternal<\n (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid\n> {\n static bind(options: SuiObjectBindOptions): SuiWrappedObjectProcessor {\n return new SuiWrappedObjectProcessor({\n address: options.objectId,\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOwnerType.WRAPPED_OBJECT,\n baseLabels: options.baseLabels\n })\n }\n\n protected async doHandle(\n handler: (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectContext\n ) {\n return handler(data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObject[], ctx)\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { HandleInterval, MoveAccountFetchConfig, MoveFetchConfig } from '@sentio/protos'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { SuiAddressContext, SuiContext, SuiObjectContext } from './context.js'\nimport { SuiMoveObject, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { PromiseOrVoid } from '../core/index.js'\nimport {\n DEFAULT_ACCOUNT_FETCH_CONFIG,\n SuiAccountProcessorState,\n SuiAddressProcessor,\n SuiBaseObjectOrAddressProcessor,\n SuiObjectBindOptions,\n SuiObjectProcessor,\n SuiWrappedObjectProcessor\n} from './sui-object-processor.js'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { SuiBindOptions } from './sui-processor.js'\nimport { TransactionFilter, accountAddressString } from '../move/index.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { getHandlerName, proxyProcessor } from '../utils/metrics.js'\n\nclass ObjectHandler<HandlerType> {\n type?: string\n checkpointInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handlerName: string\n handler: HandlerType\n fetchConfig: MoveAccountFetchConfig\n}\n\nexport class SuiAccountProcessorTemplateState extends ListStateStorage<\n SuiObjectOrAddressProcessorTemplate<any, any, any>\n> {\n static INSTANCE = new SuiAccountProcessorTemplateState()\n}\n\nexport abstract class SuiObjectOrAddressProcessorTemplate<\n HandlerType,\n OptionType extends SuiObjectBindOptions | SuiBindOptions,\n ProcessorType extends SuiBaseObjectOrAddressProcessor<HandlerType>\n> {\n id: number\n objectHandlers: ObjectHandler<HandlerType>[] = []\n binds = new Set<string>()\n\n constructor() {\n this.id = SuiAccountProcessorTemplateState.INSTANCE.getValues().length\n SuiAccountProcessorTemplateState.INSTANCE.addValue(this)\n return proxyProcessor(this)\n }\n\n protected abstract createProcessor(options: SuiObjectBindOptions | SuiBindOptions): ProcessorType\n\n bind(options: OptionType, ctx: SuiContext): void {\n options.network = options.network || ctx.network\n options.startCheckpoint = options.startCheckpoint || ctx.checkpoint\n let id = (options as SuiObjectBindOptions).objectId || (options as SuiBindOptions).address\n\n if (id === '*') {\n throw new ServerError(Status.INVALID_ARGUMENT, \"can't bind template instance with *\")\n }\n id = accountAddressString(id)\n\n const sig = [options.network, id].join('_')\n if (this.binds.has(sig)) {\n console.log(`Same object id can be bind to one template only once, ignore duplicate bind: ${sig}`)\n return\n }\n this.binds.add(sig)\n\n const processor = this.createProcessor(options)\n for (const h of this.objectHandlers) {\n processor.onInterval(\n h.handler,\n h.timeIntervalInMinutes,\n h.checkpointInterval,\n h.type,\n h.fetchConfig,\n h.handlerName\n )\n }\n const config = processor.config\n\n ctx.update({\n states: {\n configUpdated: true\n }\n })\n TemplateInstanceState.INSTANCE.addValue({\n templateId: this.id,\n contract: {\n name: '',\n chainId: config.network,\n address: config.address,\n abi: ''\n },\n startBlock: config.startCheckpoint,\n endBlock: 0n,\n baseLabels: config.baseLabels\n })\n console.log(`successfully bind template ${sig}`)\n }\n\n unbind(options: OptionType, ctx: SuiContext): void {\n options.network = options.network || ctx.network\n options.startCheckpoint = options.startCheckpoint || ctx.checkpoint\n let id = (options as SuiObjectBindOptions).objectId || (options as SuiBindOptions).address\n\n if (id === '*') {\n throw new ServerError(Status.INVALID_ARGUMENT, \"can't delete template instance bind with *\")\n }\n id = accountAddressString(id)\n\n const sig = [options.network, id].join('_')\n if (!this.binds.has(sig)) {\n console.log(`the template instance ${sig} not existed or already unbind`)\n return\n }\n this.binds.delete(sig)\n\n let deleted = 0\n const oldTemplateInstances = TemplateInstanceState.INSTANCE.unregister()\n for (const templateInstance of oldTemplateInstances) {\n if (templateInstance.contract?.chainId === options.network && templateInstance.contract.address == id) {\n deleted++\n continue\n }\n TemplateInstanceState.INSTANCE.addValue(templateInstance)\n }\n\n if (deleted !== 1) {\n throw new ServerError(\n Status.INVALID_ARGUMENT,\n `Failed to delete template instance ${sig}, deleted ${deleted} times`\n )\n }\n\n const oldProcessors = SuiAccountProcessorState.INSTANCE.unregister()\n deleted = 0\n for (const processor of oldProcessors) {\n if (processor.templateId === this.id) {\n if (processor.config.network == options.network && processor.config.address === id) {\n deleted++\n continue\n }\n }\n SuiAccountProcessorState.INSTANCE.addValue(processor)\n }\n\n if (deleted !== 1) {\n throw new ServerError(\n Status.INVALID_ARGUMENT,\n `Failed to delete processor for template ${this.id}, ${sig}. deleted ${deleted} times`\n )\n }\n\n console.log(`successfully unbind template ${sig}`)\n\n ctx.update({\n states: {\n configUpdated: true\n }\n })\n }\n\n protected onInterval(\n handler: HandlerType,\n timeInterval: HandleInterval | undefined,\n checkpointInterval: HandleInterval | undefined,\n type: string | undefined,\n fetchConfig: Partial<MoveAccountFetchConfig> | undefined\n ): this {\n this.objectHandlers.push({\n handlerName: getHandlerName(),\n handler: handler,\n timeIntervalInMinutes: timeInterval,\n checkpointInterval: checkpointInterval,\n type,\n fetchConfig: { ...DEFAULT_ACCOUNT_FETCH_CONFIG, ...fetchConfig }\n })\n return this\n }\n\n public onTimeInterval(\n handler: HandlerType,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes\n },\n undefined,\n type,\n fetchConfig\n )\n }\n\n public onCheckpointInterval(\n handler: HandlerType,\n checkpointInterval = 100000,\n backfillCheckpointInterval = 400000,\n type?: string,\n fetchConfig?: Partial<MoveAccountFetchConfig>\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },\n type,\n fetchConfig\n )\n }\n}\n\nclass AddressTransactionHandler {\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void\n filter?: TransactionFilter\n fetchConfig?: Partial<MoveFetchConfig>\n}\n\nexport class SuiAddressProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (objects: SuiMoveObject[], ctx: SuiAddressContext) => PromiseOrVoid,\n SuiBindOptions,\n SuiAddressProcessor\n> {\n private handlers: AddressTransactionHandler[] = []\n\n createProcessor(options: SuiBindOptions): SuiAddressProcessor {\n const p = SuiAddressProcessor.bind(options)\n for (const handler of this.handlers) {\n p.onTransactionBlock(handler.handler, handler.filter, handler.fetchConfig)\n }\n p.templateId = this.id\n return p\n }\n\n onTransactionBlock(\n handler: (transaction: SuiTransactionBlockResponse, ctx: SuiContext) => void,\n filter?: TransactionFilter,\n fetchConfig?: Partial<MoveFetchConfig>\n ): this {\n this.handlers.push({\n handler,\n filter,\n fetchConfig\n })\n return this\n }\n}\n\nexport class SuiObjectProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n SuiObjectBindOptions,\n SuiObjectProcessor\n> {\n createProcessor(options: SuiObjectBindOptions): SuiObjectProcessor {\n const p = SuiObjectProcessor.bind(options)\n p.templateId = this.id\n return p\n }\n}\n\nexport class SuiWrappedObjectProcessorTemplate extends SuiObjectOrAddressProcessorTemplate<\n (dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectContext) => PromiseOrVoid,\n SuiObjectBindOptions,\n SuiWrappedObjectProcessor\n> {\n createProcessor(options: SuiObjectBindOptions): SuiWrappedObjectProcessor {\n const p = SuiWrappedObjectProcessor.bind(options)\n p.templateId = this.id\n return p\n }\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import type { SuiEvent, MoveCallSuiTransaction, SuiMoveObject } from '@mysten/sui/client'\nimport { DecodedStruct } from '@typemove/move'\n\nexport type TypedEventInstance<T> = DecodedStruct<SuiEvent, T>\nexport type TypedSuiMoveObject<T> = DecodedStruct<SuiMoveObject, T>\n\nexport type TypedFunctionPayload<T extends Array<any>> = MoveCallSuiTransaction & {\n /**\n * decoded argument data using ABI, undefined if there is decoding error, usually because the ABI/data mismatch\n */\n arguments_decoded: T\n}\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n AccountConfig,\n ContractConfig,\n Data_SuiCall,\n Data_SuiEvent,\n Data_SuiObject,\n Data_SuiObjectChange,\n DataBinding,\n HandlerType,\n MoveCallHandlerConfig,\n MoveEventHandlerConfig,\n MoveResourceChangeConfig,\n ProcessConfigResponse,\n ProcessResult,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { SuiProcessorState } from './sui-processor.js'\nimport { SuiAccountProcessorState, SuiAddressProcessor } from './sui-object-processor.js'\nimport { initCoinList } from './ext/coin.js'\nimport { SuiChainId } from '@sentio/chain'\nimport {\n SuiAccountProcessorTemplateState,\n SuiObjectOrAddressProcessorTemplate\n} from './sui-object-processor-template.js'\nimport { SuiNetwork } from './network.js'\nimport { SuiContext } from './context.js'\n\ninterface Handlers {\n suiEventHandlers: ((event: Data_SuiEvent) => Promise<ProcessResult>)[]\n suiCallHandlers: ((func: Data_SuiCall) => Promise<ProcessResult>)[]\n suiObjectHandlers: ((object: Data_SuiObject) => Promise<ProcessResult>)[]\n suiObjectChangeHandlers: ((object: Data_SuiObjectChange) => Promise<ProcessResult>)[]\n}\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n suiObjectChangeHandlers: []\n }\n async start(request: StartRequest): Promise<void> {\n await initCoinList()\n\n console.log('total instances:', request.templateInstances.length)\n const allowedChainIds = new Set<string>(Object.values(SuiChainId))\n for (const instance of request.templateInstances) {\n if (!allowedChainIds.has(instance.contract?.chainId || '')) {\n continue\n }\n\n console.log('start template instance', instance.templateId)\n const template: SuiObjectOrAddressProcessorTemplate<any, any, any> =\n SuiAccountProcessorTemplateState.INSTANCE.getValues()[instance.templateId]\n\n template.bind(\n {\n address: instance.contract?.address || '',\n objectId: instance.contract?.address || '',\n network: <SuiNetwork>instance.contract?.chainId || SuiNetwork.MAIN_NET,\n startCheckpoint: instance.startBlock || 0n,\n baseLabels: instance.baseLabels\n },\n NoopContext\n )\n }\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n suiObjectChangeHandlers: []\n }\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig = ContractConfig.fromPartial({\n transactionConfig: [],\n processorType: USER_PROCESSOR,\n contract: {\n name: suiProcessor.moduleName,\n chainId: suiProcessor.config.network,\n address: suiProcessor.config.address,\n abi: ''\n },\n startBlock: suiProcessor.config.startCheckpoint\n })\n for (const handler of suiProcessor.eventHandlers) {\n const handlerId = handlers.suiEventHandlers.push(handler.handler) - 1\n const eventHandlerConfig: MoveEventHandlerConfig = {\n filters: handler.filters.map((f) => {\n return {\n type: f.type,\n account: f.account || '',\n eventAccount: f.eventAccount || ''\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveEventConfigs.push(eventHandlerConfig)\n }\n for (const handler of suiProcessor.callHandlers) {\n const handlerId = handlers.suiCallHandlers.push(handler.handler) - 1\n const functionHandlerConfig: MoveCallHandlerConfig = {\n filters: handler.filters.map((filter) => {\n return {\n function: filter.function,\n typeArguments: filter.typeArguments || [],\n withTypeArguments: !!filter.typeArguments,\n includeFailed: filter.includeFailed || false,\n publicKeyPrefix: filter.publicKeyPrefix || '',\n fromAndToAddress: filter.fromAndToAddress\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n // deprecated, use objectType processor instead\n for (const handler of suiProcessor.objectChangeHandlers) {\n const handlerId = handlers.suiObjectChangeHandlers.push(handler.handler) - 1\n const objectChangeHandler: MoveResourceChangeConfig = {\n type: handler.type,\n handlerId,\n handlerName: handler.handlerName\n }\n contractConfig.moveResourceChangeConfigs.push(objectChangeHandler)\n }\n config.contractConfigs.push(contractConfig)\n }\n\n for (const processor of SuiAccountProcessorState.INSTANCE.getValues()) {\n const accountConfig = AccountConfig.fromPartial({\n address: processor.config.address,\n chainId: processor.getChainId(),\n startBlock: processor.config.startCheckpoint // TODO maybe use another field\n })\n\n for (const handler of processor.objectChangeHandlers) {\n const handlerId = handlers.suiObjectChangeHandlers.push(handler.handler) - 1\n const objectChangeHandler: MoveResourceChangeConfig = {\n type: handler.type,\n handlerId,\n handlerName: handler.handlerName\n }\n accountConfig.moveResourceChangeConfigs.push(objectChangeHandler)\n }\n\n for (const handler of processor.objectHandlers) {\n const handlerId = handlers.suiObjectHandlers.push(handler.handler) - 1\n\n accountConfig.moveIntervalConfigs.push({\n intervalConfig: {\n handlerId: handlerId,\n handlerName: handler.handlerName,\n minutes: 0,\n minutesInterval: handler.timeIntervalInMinutes,\n slot: 0,\n slotInterval: handler.checkPointInterval,\n fetchConfig: undefined\n },\n type: handler.type || '',\n ownerType: processor.ownerType,\n resourceFetchConfig: handler.fetchConfig,\n fetchConfig: undefined\n })\n }\n\n if (processor instanceof SuiAddressProcessor) {\n for (const handler of processor.callHandlers) {\n const handlerId = handlers.suiCallHandlers.push(handler.handler) - 1\n const functionHandlerConfig: MoveCallHandlerConfig = {\n filters: handler.filters.map((filter) => {\n return {\n function: filter.function,\n typeArguments: filter.typeArguments || [],\n withTypeArguments: !!filter.typeArguments,\n includeFailed: filter.includeFailed || false,\n publicKeyPrefix: filter.publicKeyPrefix || '',\n fromAndToAddress: filter.fromAndToAddress\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n handlerName: handler.handlerName\n }\n accountConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n }\n\n config.accountConfigs.push(accountConfig)\n }\n this.handlers = handlers\n }\n\n async processSuiEvent(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiEvent) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Event can't be empty\")\n }\n const promises: Promise<ProcessResult>[] = []\n const event = binding.data.suiEvent\n\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiEventHandlers[handlerId](event).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing event: ' + JSON.stringify(event) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiFunctionCall(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiCall) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Call can't be empty\")\n }\n const call = binding.data.suiCall\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.suiCallHandlers[handlerId](call).catch((e) => {\n throw new ServerError(Status.INTERNAL, 'error processing call: ' + JSON.stringify(call) + '\\n' + errorString(e))\n })\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiObject(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiObject) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Object can't be empty\")\n }\n const object = binding.data.suiObject\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiObjectHandlers[handlerId](object).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing object: ' + JSON.stringify(object) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiObjectChange(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiObjectChange) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Object change can't be empty\")\n }\n const objectChange = binding.data.suiObjectChange\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiObjectChangeHandlers[handlerId](objectChange).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing object change: ' + JSON.stringify(objectChange) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n supportedHandlers = [\n HandlerType.SUI_EVENT,\n HandlerType.SUI_CALL,\n HandlerType.SUI_OBJECT,\n HandlerType.SUI_OBJECT_CHANGE\n ]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_EVENT:\n return this.processSuiEvent(request)\n case HandlerType.SUI_CALL:\n return this.processSuiFunctionCall(request)\n case HandlerType.SUI_OBJECT:\n return this.processSuiObject(request)\n case HandlerType.SUI_OBJECT_CHANGE:\n return this.processSuiObjectChange(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n\nconst NoopContext = new SuiContext('', SuiChainId.SUI_MAINNET, '', new Date(), 0n, {} as any, 0, {})\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));","export { SuiBaseProcessor, SuiGlobalProcessor, SuiModulesProcessor, type SuiBindOptions } from './sui-processor.js'\nexport {\n SuiAddressProcessor,\n SuiObjectProcessor,\n SuiObjectTypeProcessor,\n SuiWrappedObjectProcessor,\n type SuiObjectBindOptions,\n type SuiObjectTypeBindOptions\n} from './sui-object-processor.js'\n\nexport {\n SuiAddressProcessorTemplate,\n SuiObjectProcessorTemplate,\n SuiWrappedObjectProcessorTemplate\n} from './sui-object-processor-template.js'\n\nexport * from './network.js'\nexport * from './context.js'\nexport * from './models.js'\n\nexport * from './move-coder.js'\n\nexport { SuiPlugin } from './sui-plugin.js'\n\nexport { BUILTIN_TYPES } from '@typemove/move'\n\nexport { MoveCoder } from '@typemove/sui'\n\n// export { validateAndNormalizeAddress, isValidSuiAddress } from './utils.js'\n;import(\"node:process\").then((p) => p.stdout.write(\"\"));"],"mappings":"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","names":["ListStateStorage","import_nice_grpc","ZERO_ADDRESS","isTransactionArgument","value","__name","transactionArgumentOrObject","transactionBlock","transactionArgumentOrPure","transactionArgumentOrPureAddress","value","transactionBlock","isTransactionArgument","__name","transactionArgumentOrPureU8","transactionArgumentOrPureU16","transactionArgumentOrPureU32","transactionArgumentOrPureU64","transactionArgumentOrPureU128","transactionArgumentOrPureU256","transactionArgumentOrPureBool","transactionArgumentOrVec","a","toInternalModule","module","n","f","toInternalFunction","s","toInternalStruct","e","toInternalEnum","__name","name","func","visibility","InternalMoveFunctionVisibility","p","toTypeDescriptor","struct","toInternalField","enumType","acc","k","v","normalizedType","TypeDescriptor","qname","SPLITTER","args","res","SuiChainAdapter","ChainAdapter","__name","client","account","module","modules","params","toInternalModule","eventMap","qname","moduleQname","struct","abilities","SPLITTER","base","val","MoveCoder","AbstractMoveCoder","__name","client","SuiChainAdapter","module","address","m","mDeclared","toInternalModule","data","type","byte","bytes","normalizeSuiObjectId","vec","normalizeSuiAddress","event","resources","parseMoveType","objects","keyType","ANY_TYPE","valueType","TypeDescriptor","o","payload","inputs","functionType","SPLITTER","func","params","args","value","argValue","idx","arg","argumentsTyped","qname","sig","cached","lowerQname","suiBcs","moveStruct","e","structDef","field","index","x","bcsType","encoding","buf","inspectRes","returnValues","returnValue","bcsDecoded","decoded","DEFAULT_ENDPOINT","CODER_MAP","defaultMoveCoder","endpoint","DEFAULT_ENDPOINT","coder","CODER_MAP","MoveCoder","SuiClient","__name","PROVIDER_CODER_MAP","DEFAULT_CHAIN_ID","getMoveCoder","client","id","defaultCoder","CODERS","defaultMoveCoder","network","SuiNetwork","coder","MoveCoder","getClient","__name","p","SuiContext","MoveContext","__name","moduleName","network","address","timestamp","checkpoint","transaction","eventIndex","baseLabels","defaultMoveCoder","name","labels","normalizeLabels","getClient","SuiObjectChangeContext","txDigest","SuiAddressContext","MoveAccountContext","SuiObjectContext","objectId","objectVersion","p","getMoveCalls","txBlock","txKind","programmableTx","tx","call","accountTypeString","__name","p","DEFAULT_FETCH_CONFIG","configure","options","ALL_ADDRESS","accountAddressString","SuiNetwork","__name","SuiProcessorState","_SuiProcessorState","ListStateStorage","SuiBaseProcessor","name","defaultMoveCoder","proxyProcessor","handler","filter","fetchConfig","_filters","_fetchConfig","MoveFetchConfig","processor","getHandlerName","data","txn","evt","idx","ctx","SuiContext","decoded","allFunctionType","f","tx","calls","getMoveCalls","txKind","programmableTx","call","functionType","SPLITTER","type","SuiObjectChangeContext","r","SuiModulesProcessor","_SuiModulesProcessor","SuiGlobalProcessor","_SuiGlobalProcessor","p","ListStateStorage","import_nice_grpc","DEFAULT_ACCOUNT_FETCH_CONFIG","SuiAccountProcessorState","_SuiAccountProcessorState","ListStateStorage","__name","SuiBaseObjectOrAddressProcessor","options","MoveOwnerType","accountTypeString","SuiNetwork","configure","proxyProcessor","handler","timeInterval","checkpointInterval","type","fetchConfig","handlerName","getHandlerName","processor","data","ctx","SuiObjectContext","SuiBaseObjectOrAddressProcessorInternal","timeIntervalInMinutes","backfillTimeIntervalInMinutes","backfillCheckpointInterval","SuiAddressProcessor","_SuiAddressProcessor","o","filter","_fetchConfig","MoveFetchConfig","DEFAULT_FETCH_CONFIG","_filter","tx","SuiContext","SuiObjectProcessor","_SuiObjectProcessor","SuiObjectTypeProcessor","_SuiObjectTypeProcessor","ALL_ADDRESS","object","SuiObjectChangeContext","r","SuiWrappedObjectProcessor","_SuiWrappedObjectProcessor","p","ListStateStorage","import_nice_grpc","SuiAccountProcessorTemplateState","_SuiAccountProcessorTemplateState","ListStateStorage","__name","SuiObjectOrAddressProcessorTemplate","proxyProcessor","options","ctx","id","accountAddressString","sig","processor","h","config","TemplateInstanceState","deleted","oldTemplateInstances","templateInstance","oldProcessors","SuiAccountProcessorState","handler","timeInterval","checkpointInterval","type","fetchConfig","getHandlerName","DEFAULT_ACCOUNT_FETCH_CONFIG","timeIntervalInMinutes","backfillTimeIntervalInMinutes","backfillCheckpointInterval","SuiAddressProcessorTemplate","SuiObjectOrAddressProcessorTemplate","__name","options","p","SuiAddressProcessor","handler","filter","fetchConfig","SuiObjectProcessorTemplate","SuiObjectProcessor","SuiWrappedObjectProcessorTemplate","SuiWrappedObjectProcessor","p","errorString","mergeProcessResults","Plugin","PluginManager","USER_PROCESSOR","import_nice_grpc","SuiChainId","SuiPlugin","Plugin","__name","request","initCoinList","allowedChainIds","SuiChainId","instance","SuiAccountProcessorTemplateState","SuiNetwork","NoopContext","config","handlers","suiProcessor","SuiProcessorState","contractConfig","ContractConfig","USER_PROCESSOR","handler","handlerId","eventHandlerConfig","f","functionHandlerConfig","filter","objectChangeHandler","processor","SuiAccountProcessorState","accountConfig","AccountConfig","SuiAddressProcessor","binding","promises","event","e","errorString","mergeProcessResults","call","promise","object","objectChange","HandlerType","PluginManager","SuiContext","p","p"]}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
|
2
|
+
import{a as _,c as I,d as ee}from"./chunk-J7Z2TKQE.js";import{a as i}from"./chunk-G5BIPHMS.js";import ke from"node:http";import Oe from"node:https";import O from"node:zlib";import be,{PassThrough as Se,pipeline as H}from"node:stream";import{Buffer as J}from"node:buffer";function Ee(r){if(!/^data:/i.test(r))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');r=r.replace(/\r?\n/g,"");let e=r.indexOf(",");if(e===-1||e<=4)throw new TypeError("malformed data: URI");let t=r.substring(5,e).split(";"),n="",o=!1,s=t[0]||"text/plain",a=s;for(let R=1;R<t.length;R++)t[R]==="base64"?o=!0:t[R]&&(a+=`;${t[R]}`,t[R].indexOf("charset=")===0&&(n=t[R].substring(8)));!t[0]&&!n.length&&(a+=";charset=US-ASCII",n="US-ASCII");let l=o?"base64":"ascii",u=unescape(r.substring(e+1)),f=Buffer.from(u,l);return f.type=s,f.typeFull=a,f.charset=n,f}i(Ee,"dataUriToBuffer");var re=Ee;import v,{PassThrough as se}from"node:stream";import{types as ie,deprecate as X,promisify as Pe}from"node:util";import{Buffer as b}from"node:buffer";var U=class extends Error{static{i(this,"FetchBaseError")}constructor(e,t){super(e),Error.captureStackTrace(this,this.constructor),this.type=t}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}};var m=class extends U{static{i(this,"FetchError")}constructor(e,t,n){super(e,t),n&&(this.code=this.errno=n.code,this.erroredSysCall=n.syscall)}};var M=Symbol.toStringTag,Z=i(r=>typeof r=="object"&&typeof r.append=="function"&&typeof r.delete=="function"&&typeof r.get=="function"&&typeof r.getAll=="function"&&typeof r.has=="function"&&typeof r.set=="function"&&typeof r.sort=="function"&&r[M]==="URLSearchParams","isURLSearchParameters"),z=i(r=>r&&typeof r=="object"&&typeof r.arrayBuffer=="function"&&typeof r.type=="string"&&typeof r.stream=="function"&&typeof r.constructor=="function"&&/^(Blob|File)$/.test(r[M]),"isBlob"),te=i(r=>typeof r=="object"&&(r[M]==="AbortSignal"||r[M]==="EventTarget"),"isAbortSignal"),oe=i((r,e)=>{let t=new URL(e).hostname,n=new URL(r).hostname;return t===n||t.endsWith(`.${n}`)},"isDomainOrSubdomain"),ne=i((r,e)=>{let t=new URL(e).protocol,n=new URL(r).protocol;return t===n},"isSameProtocol");var Le=Pe(v.pipeline),y=Symbol("Body internals"),E=class{static{i(this,"Body")}constructor(e,{size:t=0}={}){let n=null;e===null?e=null:Z(e)?e=b.from(e.toString()):z(e)||b.isBuffer(e)||(ie.isAnyArrayBuffer(e)?e=b.from(e):ArrayBuffer.isView(e)?e=b.from(e.buffer,e.byteOffset,e.byteLength):e instanceof v||(e instanceof I?(e=ee(e),n=e.type.split("=")[1]):e=b.from(String(e))));let o=e;b.isBuffer(e)?o=v.Readable.from(e):z(e)&&(o=v.Readable.from(e.stream())),this[y]={body:e,stream:o,boundary:n,disturbed:!1,error:null},this.size=t,e instanceof v&&e.on("error",s=>{let a=s instanceof U?s:new m(`Invalid response body while trying to fetch ${this.url}: ${s.message}`,"system",s);this[y].error=a})}get body(){return this[y].stream}get bodyUsed(){return this[y].disturbed}async arrayBuffer(){let{buffer:e,byteOffset:t,byteLength:n}=await Q(this);return e.slice(t,t+n)}async formData(){let e=this.headers.get("content-type");if(e.startsWith("application/x-www-form-urlencoded")){let n=new I,o=new URLSearchParams(await this.text());for(let[s,a]of o)n.append(s,a);return n}let{toFormData:t}=await import("./multipart-parser-J6QPYJHT.js");return t(this.body,e)}async blob(){let e=this.headers&&this.headers.get("content-type")||this[y].body&&this[y].body.type||"",t=await this.arrayBuffer();return new _([t],{type:e})}async json(){let e=await this.text();return JSON.parse(e)}async text(){let e=await Q(this);return new TextDecoder().decode(e)}buffer(){return Q(this)}};E.prototype.buffer=X(E.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(E.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:X(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function Q(r){if(r[y].disturbed)throw new TypeError(`body used already for: ${r.url}`);if(r[y].disturbed=!0,r[y].error)throw r[y].error;let{body:e}=r;if(e===null)return b.alloc(0);if(!(e instanceof v))return b.alloc(0);let t=[],n=0;try{for await(let o of e){if(r.size>0&&n+o.length>r.size){let s=new m(`content size at ${r.url} over limit: ${r.size}`,"max-size");throw e.destroy(s),s}n+=o.length,t.push(o)}}catch(o){throw o instanceof U?o:new m(`Invalid response body while trying to fetch ${r.url}: ${o.message}`,"system",o)}if(e.readableEnded===!0||e._readableState.ended===!0)try{return t.every(o=>typeof o=="string")?b.from(t.join("")):b.concat(t,n)}catch(o){throw new m(`Could not create Buffer from response body for ${r.url}: ${o.message}`,"system",o)}else throw new m(`Premature close of server response while trying to fetch ${r.url}`)}i(Q,"consumeBody");var F=i((r,e)=>{let t,n,{body:o}=r[y];if(r.bodyUsed)throw new Error("cannot clone body after it is used");return o instanceof v&&typeof o.getBoundary!="function"&&(t=new se({highWaterMark:e}),n=new se({highWaterMark:e}),o.pipe(t),o.pipe(n),r[y].stream=t,o=n),o},"clone"),Ue=X(r=>r.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),W=i((r,e)=>r===null?null:typeof r=="string"?"text/plain;charset=UTF-8":Z(r)?"application/x-www-form-urlencoded;charset=UTF-8":z(r)?r.type||null:b.isBuffer(r)||ie.isAnyArrayBuffer(r)||ArrayBuffer.isView(r)?null:r instanceof I?`multipart/form-data; boundary=${e[y].boundary}`:r&&typeof r.getBoundary=="function"?`multipart/form-data;boundary=${Ue(r)}`:r instanceof v?null:"text/plain;charset=UTF-8","extractContentType"),ae=i(r=>{let{body:e}=r[y];return e===null?0:z(e)?e.size:b.isBuffer(e)?e.length:e&&typeof e.getLengthSync=="function"&&e.hasKnownLength&&e.hasKnownLength()?e.getLengthSync():null},"getTotalBytes"),fe=i(async(r,{body:e})=>{e===null?r.end():await Le(e,r)},"writeToStream");import{types as ce}from"node:util";import G from"node:http";var V=typeof G.validateHeaderName=="function"?G.validateHeaderName:r=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(r)){let e=new TypeError(`Header name must be a valid HTTP token [${r}]`);throw Object.defineProperty(e,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),e}},j=typeof G.validateHeaderValue=="function"?G.validateHeaderValue:(r,e)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(e)){let t=new TypeError(`Invalid character in header content ["${r}"]`);throw Object.defineProperty(t,"code",{value:"ERR_INVALID_CHAR"}),t}},g=class r extends URLSearchParams{static{i(this,"Headers")}constructor(e){let t=[];if(e instanceof r){let n=e.raw();for(let[o,s]of Object.entries(n))t.push(...s.map(a=>[o,a]))}else if(e!=null)if(typeof e=="object"&&!ce.isBoxedPrimitive(e)){let n=e[Symbol.iterator];if(n==null)t.push(...Object.entries(e));else{if(typeof n!="function")throw new TypeError("Header pairs must be iterable");t=[...e].map(o=>{if(typeof o!="object"||ce.isBoxedPrimitive(o))throw new TypeError("Each header pair must be an iterable object");return[...o]}).map(o=>{if(o.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...o]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return t=t.length>0?t.map(([n,o])=>(V(n),j(n,String(o)),[String(n).toLowerCase(),String(o)])):void 0,super(t),new Proxy(this,{get(n,o,s){switch(o){case"append":case"set":return(a,l)=>(V(a),j(a,String(l)),URLSearchParams.prototype[o].call(n,String(a).toLowerCase(),String(l)));case"delete":case"has":case"getAll":return a=>(V(a),URLSearchParams.prototype[o].call(n,String(a).toLowerCase()));case"keys":return()=>(n.sort(),new Set(URLSearchParams.prototype.keys.call(n)).keys());default:return Reflect.get(n,o,s)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(e){let t=this.getAll(e);if(t.length===0)return null;let n=t.join(", ");return/^content-encoding$/i.test(e)&&(n=n.toLowerCase()),n}forEach(e,t=void 0){for(let n of this.keys())Reflect.apply(e,t,[this.get(n),n,this])}*values(){for(let e of this.keys())yield this.get(e)}*entries(){for(let e of this.keys())yield[e,this.get(e)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((e,t)=>(e[t]=this.getAll(t),e),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((e,t)=>{let n=this.getAll(t);return t==="host"?e[t]=n[0]:e[t]=n.length>1?n:n[0],e},{})}};Object.defineProperties(g.prototype,["get","entries","forEach","values"].reduce((r,e)=>(r[e]={enumerable:!0},r),{}));function le(r=[]){return new g(r.reduce((e,t,n,o)=>(n%2===0&&e.push(o.slice(n,n+2)),e),[]).filter(([e,t])=>{try{return V(e),j(e,String(t)),!0}catch{return!1}}))}i(le,"fromRawHeaders");var ve=new Set([301,302,303,307,308]),K=i(r=>ve.has(r),"isRedirect");var T=Symbol("Response internals"),S=class r extends E{static{i(this,"Response")}constructor(e=null,t={}){super(e,t);let n=t.status!=null?t.status:200,o=new g(t.headers);if(e!==null&&!o.has("Content-Type")){let s=W(e,this);s&&o.append("Content-Type",s)}this[T]={type:"default",url:t.url,status:n,statusText:t.statusText||"",headers:o,counter:t.counter,highWaterMark:t.highWaterMark}}get type(){return this[T].type}get url(){return this[T].url||""}get status(){return this[T].status}get ok(){return this[T].status>=200&&this[T].status<300}get redirected(){return this[T].counter>0}get statusText(){return this[T].statusText}get headers(){return this[T].headers}get highWaterMark(){return this[T].highWaterMark}clone(){return new r(F(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(e,t=302){if(!K(t))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new r(null,{headers:{location:new URL(e).toString()},status:t})}static error(){let e=new r(null,{status:0,statusText:""});return e[T].type="error",e}static json(e=void 0,t={}){let n=JSON.stringify(e);if(n===void 0)throw new TypeError("data is not JSON serializable");let o=new g(t&&t.headers);return o.has("content-type")||o.set("content-type","application/json"),new r(n,{...t,headers:o})}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(S.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});import{format as Ce}from"node:url";import{deprecate as $e}from"node:util";var ue=i(r=>{if(r.search)return r.search;let e=r.href.length-1,t=r.hash||(r.href[e]==="#"?"#":"");return r.href[e-t.length]==="?"?"?":""},"getSearch");import{isIP as Be}from"node:net";function he(r,e=!1){return r==null||(r=new URL(r),/^(about|blob|data):$/.test(r.protocol))?"no-referrer":(r.username="",r.password="",r.hash="",e&&(r.pathname="",r.search=""),r)}i(he,"stripURLForUseAsAReferrer");var de=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),pe="strict-origin-when-cross-origin";function me(r){if(!de.has(r))throw new TypeError(`Invalid referrerPolicy: ${r}`);return r}i(me,"validateReferrerPolicy");function Ae(r){if(/^(http|ws)s:$/.test(r.protocol))return!0;let e=r.host.replace(/(^\[)|(]$)/g,""),t=Be(e);return t===4&&/^127\./.test(e)||t===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(e)?!0:r.host==="localhost"||r.host.endsWith(".localhost")?!1:r.protocol==="file:"}i(Ae,"isOriginPotentiallyTrustworthy");function k(r){return/^about:(blank|srcdoc)$/.test(r)||r.protocol==="data:"||/^(blob|filesystem):$/.test(r.protocol)?!0:Ae(r)}i(k,"isUrlPotentiallyTrustworthy");function ye(r,{referrerURLCallback:e,referrerOriginCallback:t}={}){if(r.referrer==="no-referrer"||r.referrerPolicy==="")return null;let n=r.referrerPolicy;if(r.referrer==="about:client")return"no-referrer";let o=r.referrer,s=he(o),a=he(o,!0);s.toString().length>4096&&(s=a),e&&(s=e(s)),t&&(a=t(a));let l=new URL(r.url);switch(n){case"no-referrer":return"no-referrer";case"origin":return a;case"unsafe-url":return s;case"strict-origin":return k(s)&&!k(l)?"no-referrer":a.toString();case"strict-origin-when-cross-origin":return s.origin===l.origin?s:k(s)&&!k(l)?"no-referrer":a;case"same-origin":return s.origin===l.origin?s:"no-referrer";case"origin-when-cross-origin":return s.origin===l.origin?s:a;case"no-referrer-when-downgrade":return k(s)&&!k(l)?"no-referrer":s;default:throw new TypeError(`Invalid referrerPolicy: ${n}`)}}i(ye,"determineRequestsReferrer");function ge(r){let e=(r.get("referrer-policy")||"").split(/[,\s]+/),t="";for(let n of e)n&&de.has(n)&&(t=n);return t}i(ge,"parseReferrerPolicyFromHeader");var h=Symbol("Request internals"),N=i(r=>typeof r=="object"&&typeof r[h]=="object","isRequest"),Fe=$e(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),C=class r extends E{static{i(this,"Request")}constructor(e,t={}){let n;if(N(e)?n=new URL(e.url):(n=new URL(e),e={}),n.username!==""||n.password!=="")throw new TypeError(`${n} is an url with embedded credentials.`);let o=t.method||e.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(o)&&(o=o.toUpperCase()),!N(t)&&"data"in t&&Fe(),(t.body!=null||N(e)&&e.body!==null)&&(o==="GET"||o==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let s=t.body?t.body:N(e)&&e.body!==null?F(e):null;super(s,{size:t.size||e.size||0});let a=new g(t.headers||e.headers||{});if(s!==null&&!a.has("Content-Type")){let f=W(s,this);f&&a.set("Content-Type",f)}let l=N(e)?e.signal:null;if("signal"in t&&(l=t.signal),l!=null&&!te(l))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let u=t.referrer==null?e.referrer:t.referrer;if(u==="")u="no-referrer";else if(u){let f=new URL(u);u=/^about:(\/\/)?client$/.test(f)?"client":f}else u=void 0;this[h]={method:o,redirect:t.redirect||e.redirect||"follow",headers:a,parsedURL:n,signal:l,referrer:u},this.follow=t.follow===void 0?e.follow===void 0?20:e.follow:t.follow,this.compress=t.compress===void 0?e.compress===void 0?!0:e.compress:t.compress,this.counter=t.counter||e.counter||0,this.agent=t.agent||e.agent,this.highWaterMark=t.highWaterMark||e.highWaterMark||16384,this.insecureHTTPParser=t.insecureHTTPParser||e.insecureHTTPParser||!1,this.referrerPolicy=t.referrerPolicy||e.referrerPolicy||""}get method(){return this[h].method}get url(){return Ce(this[h].parsedURL)}get headers(){return this[h].headers}get redirect(){return this[h].redirect}get signal(){return this[h].signal}get referrer(){if(this[h].referrer==="no-referrer")return"";if(this[h].referrer==="client")return"about:client";if(this[h].referrer)return this[h].referrer.toString()}get referrerPolicy(){return this[h].referrerPolicy}set referrerPolicy(e){this[h].referrerPolicy=me(e)}clone(){return new r(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(C.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});var we=i(r=>{let{parsedURL:e}=r[h],t=new g(r[h].headers);t.has("Accept")||t.set("Accept","*/*");let n=null;if(r.body===null&&/^(post|put)$/i.test(r.method)&&(n="0"),r.body!==null){let l=ae(r);typeof l=="number"&&!Number.isNaN(l)&&(n=String(l))}n&&t.set("Content-Length",n),r.referrerPolicy===""&&(r.referrerPolicy=pe),r.referrer&&r.referrer!=="no-referrer"?r[h].referrer=ye(r):r[h].referrer="no-referrer",r[h].referrer instanceof URL&&t.set("Referer",r.referrer),t.has("User-Agent")||t.set("User-Agent","node-fetch"),r.compress&&!t.has("Accept-Encoding")&&t.set("Accept-Encoding","gzip, deflate, br");let{agent:o}=r;typeof o=="function"&&(o=o(e));let s=ue(e),a={path:e.pathname+s,method:r.method,headers:t[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:r.insecureHTTPParser,agent:o};return{parsedURL:e,options:a}},"getNodeRequestOptions");var Y=class extends U{static{i(this,"AbortError")}constructor(e,t="aborted"){super(e,t)}};var He=new Set(["data:","http:","https:"]);async function Te(r,e){return new Promise((t,n)=>{let o=new C(r,e),{parsedURL:s,options:a}=we(o);if(!He.has(s.protocol))throw new TypeError(`node-fetch cannot load ${r}. URL scheme "${s.protocol.replace(/:$/,"")}" is not supported.`);if(s.protocol==="data:"){let c=re(o.url),P=new S(c,{headers:{"Content-Type":c.typeFull}});t(P);return}let l=(s.protocol==="https:"?Oe:ke).request,{signal:u}=o,f=null,R=i(()=>{let c=new Y("The operation was aborted.");n(c),o.body&&o.body instanceof be.Readable&&o.body.destroy(c),!(!f||!f.body)&&f.body.emit("error",c)},"abort");if(u&&u.aborted){R();return}let D=i(()=>{R(),A()},"abortAndFinalize"),B=l(s.toString(),a);u&&u.addEventListener("abort",D);let A=i(()=>{B.abort(),u&&u.removeEventListener("abort",D)},"finalize");B.on("error",c=>{n(new m(`request to ${o.url} failed, reason: ${c.message}`,"system",c)),A()}),Ie(B,c=>{f&&f.body&&f.body.destroy(c)}),process.version<"v14"&&B.on("socket",c=>{let P;c.prependListener("end",()=>{P=c._eventsCount}),c.prependListener("close",d=>{if(f&&P<c._eventsCount&&!d){let L=new Error("Premature close");L.code="ERR_STREAM_PREMATURE_CLOSE",f.body.emit("error",L)}})}),B.on("response",c=>{B.setTimeout(0);let P=le(c.rawHeaders);if(K(c.statusCode)){let p=P.get("Location"),x=null;try{x=p===null?null:new URL(p,o.url)}catch{if(o.redirect!=="manual"){n(new m(`uri requested responds with an invalid redirect URL: ${p}`,"invalid-redirect")),A();return}}switch(o.redirect){case"error":n(new m(`uri requested responds with a redirect, redirect mode is set to error: ${o.url}`,"no-redirect")),A();return;case"manual":break;case"follow":{if(x===null)break;if(o.counter>=o.follow){n(new m(`maximum redirect reached at: ${o.url}`,"max-redirect")),A();return}let w={headers:new g(o.headers),follow:o.follow,counter:o.counter+1,agent:o.agent,compress:o.compress,method:o.method,body:F(o),signal:o.signal,size:o.size,referrer:o.referrer,referrerPolicy:o.referrerPolicy};if(!oe(o.url,x)||!ne(o.url,x))for(let xe of["authorization","www-authenticate","cookie","cookie2"])w.headers.delete(xe);if(c.statusCode!==303&&o.body&&e.body instanceof be.Readable){n(new m("Cannot follow redirect with body being a readable stream","unsupported-redirect")),A();return}(c.statusCode===303||(c.statusCode===301||c.statusCode===302)&&o.method==="POST")&&(w.method="GET",w.body=void 0,w.headers.delete("content-length"));let q=ge(P);q&&(w.referrerPolicy=q),t(Te(new C(x,w))),A();return}default:return n(new TypeError(`Redirect option '${o.redirect}' is not a valid value of RequestRedirect`))}}u&&c.once("end",()=>{u.removeEventListener("abort",D)});let d=H(c,new Se,p=>{p&&n(p)});process.version<"v12.10"&&c.on("aborted",D);let L={url:o.url,status:c.statusCode,statusText:c.statusMessage,headers:P,size:o.size,counter:o.counter,highWaterMark:o.highWaterMark},$=P.get("Content-Encoding");if(!o.compress||o.method==="HEAD"||$===null||c.statusCode===204||c.statusCode===304){f=new S(d,L),t(f);return}let Re={flush:O.Z_SYNC_FLUSH,finishFlush:O.Z_SYNC_FLUSH};if($==="gzip"||$==="x-gzip"){d=H(d,O.createGunzip(Re),p=>{p&&n(p)}),f=new S(d,L),t(f);return}if($==="deflate"||$==="x-deflate"){let p=H(c,new Se,x=>{x&&n(x)});p.once("data",x=>{(x[0]&15)===8?d=H(d,O.createInflate(),w=>{w&&n(w)}):d=H(d,O.createInflateRaw(),w=>{w&&n(w)}),f=new S(d,L),t(f)}),p.once("end",()=>{f||(f=new S(d,L),t(f))});return}if($==="br"){d=H(d,O.createBrotliDecompress(),p=>{p&&n(p)}),f=new S(d,L),t(f);return}f=new S(d,L),t(f)}),fe(B,o).catch(n)})}i(Te,"fetch");function Ie(r,e){let t=J.from(`0\r
|
3
|
+
\r
|
4
|
+
`),n=!1,o=!1,s;r.on("response",a=>{let{headers:l}=a;n=l["transfer-encoding"]==="chunked"&&!l["content-length"]}),r.on("socket",a=>{let l=i(()=>{if(n&&!o){let f=new Error("Premature close");f.code="ERR_STREAM_PREMATURE_CLOSE",e(f)}},"onSocketClose"),u=i(f=>{o=J.compare(f.slice(-5),t)===0,!o&&s&&(o=J.compare(s.slice(-3),t.slice(0,3))===0&&J.compare(f.slice(-2),t.slice(3))===0),s=f},"onData");a.prependListener("close",l),a.on("data",u),r.on("close",()=>{a.removeListener("close",l),a.removeListener("data",u)})})}i(Ie,"fixResponseChunkedTransferBadEnding");export{Te as a};
|
5
|
+
//# sourceMappingURL=chunk-TSEQGMTN.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/index.js","../../../node_modules/.pnpm/data-uri-to-buffer@4.0.1/node_modules/data-uri-to-buffer/src/index.ts","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/body.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/base.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/fetch-error.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/is.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/headers.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/is-redirect.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/response.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/request.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/get-search.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/referrer.js","../../../node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/abort-error.js"],"sourcesContent":["/**\n * Index.js\n *\n * a request API compatible with window.fetch\n *\n * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.\n */\n\nimport http from 'node:http';\nimport https from 'node:https';\nimport zlib from 'node:zlib';\nimport Stream, {PassThrough, pipeline as pump} from 'node:stream';\nimport {Buffer} from 'node:buffer';\n\nimport dataUriToBuffer from 'data-uri-to-buffer';\n\nimport {writeToStream, clone} from './body.js';\nimport Response from './response.js';\nimport Headers, {fromRawHeaders} from './headers.js';\nimport Request, {getNodeRequestOptions} from './request.js';\nimport {FetchError} from './errors/fetch-error.js';\nimport {AbortError} from './errors/abort-error.js';\nimport {isRedirect} from './utils/is-redirect.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\nimport {isDomainOrSubdomain, isSameProtocol} from './utils/is.js';\nimport {parseReferrerPolicyFromHeader} from './utils/referrer.js';\nimport {\n\tBlob,\n\tFile,\n\tfileFromSync,\n\tfileFrom,\n\tblobFromSync,\n\tblobFrom\n} from 'fetch-blob/from.js';\n\nexport {FormData, Headers, Request, Response, FetchError, AbortError, isRedirect};\nexport {Blob, File, fileFromSync, fileFrom, blobFromSync, blobFrom};\n\nconst supportedSchemas = new Set(['data:', 'http:', 'https:']);\n\n/**\n * Fetch function\n *\n * @param {string | URL | import('./request').default} url - Absolute url or Request instance\n * @param {*} [options_] - Fetch options\n * @return {Promise<import('./response').default>}\n */\nexport default async function fetch(url, options_) {\n\treturn new Promise((resolve, reject) => {\n\t\t// Build request object\n\t\tconst request = new Request(url, options_);\n\t\tconst {parsedURL, options} = getNodeRequestOptions(request);\n\t\tif (!supportedSchemas.has(parsedURL.protocol)) {\n\t\t\tthrow new TypeError(`node-fetch cannot load ${url}. URL scheme \"${parsedURL.protocol.replace(/:$/, '')}\" is not supported.`);\n\t\t}\n\n\t\tif (parsedURL.protocol === 'data:') {\n\t\t\tconst data = dataUriToBuffer(request.url);\n\t\t\tconst response = new Response(data, {headers: {'Content-Type': data.typeFull}});\n\t\t\tresolve(response);\n\t\t\treturn;\n\t\t}\n\n\t\t// Wrap http.request into fetch\n\t\tconst send = (parsedURL.protocol === 'https:' ? https : http).request;\n\t\tconst {signal} = request;\n\t\tlet response = null;\n\n\t\tconst abort = () => {\n\t\t\tconst error = new AbortError('The operation was aborted.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\n\t\t\tif (!response || !response.body) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = () => {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// Send request\n\t\tconst request_ = send(parsedURL.toString(), options);\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tconst finalize = () => {\n\t\t\trequest_.abort();\n\t\t\tif (signal) {\n\t\t\t\tsignal.removeEventListener('abort', abortAndFinalize);\n\t\t\t}\n\t\t};\n\n\t\trequest_.on('error', error => {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`, 'system', error));\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(request_, error => {\n\t\t\tif (response && response.body) {\n\t\t\t\tresponse.body.destroy(error);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (process.version < 'v14') {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\trequest_.on('socket', s => {\n\t\t\t\tlet endedWithEventsCount;\n\t\t\t\ts.prependListener('end', () => {\n\t\t\t\t\tendedWithEventsCount = s._eventsCount;\n\t\t\t\t});\n\t\t\t\ts.prependListener('close', hadError => {\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && endedWithEventsCount < s._eventsCount && !hadError) {\n\t\t\t\t\t\tconst error = new Error('Premature close');\n\t\t\t\t\t\terror.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\trequest_.on('response', response_ => {\n\t\t\trequest_.setTimeout(0);\n\t\t\tconst headers = fromRawHeaders(response_.rawHeaders);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (isRedirect(response_.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL(location, request.url);\n\t\t\t\t} catch {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// Nothing to do\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow': {\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOptions = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: clone(request),\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\tsize: request.size,\n\t\t\t\t\t\t\treferrer: request.referrer,\n\t\t\t\t\t\t\treferrerPolicy: request.referrerPolicy\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// when forwarding sensitive headers like \"Authorization\",\n\t\t\t\t\t\t// \"WWW-Authenticate\", and \"Cookie\" to untrusted targets,\n\t\t\t\t\t\t// headers will be ignored when following a redirect to a domain\n\t\t\t\t\t\t// that is not a subdomain match or exact match of the initial domain.\n\t\t\t\t\t\t// For example, a redirect from \"foo.com\" to either \"foo.com\" or \"sub.foo.com\"\n\t\t\t\t\t\t// will forward the sensitive headers, but a redirect to \"bar.com\" will not.\n\t\t\t\t\t\t// headers will also be ignored when following a redirect to a domain using\n\t\t\t\t\t\t// a different protocol. For example, a redirect from \"https://foo.com\" to \"http://foo.com\"\n\t\t\t\t\t\t// will not forward the sensitive headers\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOptions.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (response_.statusCode !== 303 && request.body && options_.body instanceof Stream.Readable) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (response_.statusCode === 303 || ((response_.statusCode === 301 || response_.statusCode === 302) && request.method === 'POST')) {\n\t\t\t\t\t\t\trequestOptions.method = 'GET';\n\t\t\t\t\t\t\trequestOptions.body = undefined;\n\t\t\t\t\t\t\trequestOptions.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 14\n\t\t\t\t\t\tconst responseReferrerPolicy = parseReferrerPolicyFromHeader(headers);\n\t\t\t\t\t\tif (responseReferrerPolicy) {\n\t\t\t\t\t\t\trequestOptions.referrerPolicy = responseReferrerPolicy;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOptions)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Prepare response\n\t\t\tif (signal) {\n\t\t\t\tresponse_.once('end', () => {\n\t\t\t\t\tsignal.removeEventListener('abort', abortAndFinalize);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet body = pump(response_, new PassThrough(), error => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// see https://github.com/nodejs/node/pull/29376\n\t\t\t/* c8 ignore next 3 */\n\t\t\tif (process.version < 'v12.10') {\n\t\t\t\tresponse_.on('aborted', abortAndFinalize);\n\t\t\t}\n\n\t\t\tconst responseOptions = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: response_.statusCode,\n\t\t\t\tstatusText: response_.statusMessage,\n\t\t\t\theaders,\n\t\t\t\tsize: request.size,\n\t\t\t\tcounter: request.counter,\n\t\t\t\thighWaterMark: request.highWaterMark\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || response_.statusCode === 204 || response_.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// For gzip\n\t\t\tif (codings === 'gzip' || codings === 'x-gzip') {\n\t\t\t\tbody = pump(body, zlib.createGunzip(zlibOptions), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For deflate\n\t\t\tif (codings === 'deflate' || codings === 'x-deflate') {\n\t\t\t\t// Handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = pump(response_, new PassThrough(), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\traw.once('data', chunk => {\n\t\t\t\t\t// See http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = pump(body, zlib.createInflate(), error => {\n\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = pump(body, zlib.createInflateRaw(), error => {\n\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.once('end', () => {\n\t\t\t\t\t// Some old IIS servers return zero-length OK deflate responses, so\n\t\t\t\t\t// 'data' is never emitted. See https://github.com/node-fetch/node-fetch/pull/903\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For br\n\t\t\tif (codings === 'br') {\n\t\t\t\tbody = pump(body, zlib.createBrotliDecompress(), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise, use response as-is\n\t\t\tresponse = new Response(body, responseOptions);\n\t\t\tresolve(response);\n\t\t});\n\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\twriteToStream(request_, request).catch(reject);\n\t});\n}\n\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tconst LAST_CHUNK = Buffer.from('0\\r\\n\\r\\n');\n\n\tlet isChunkedTransfer = false;\n\tlet properLastChunkReceived = false;\n\tlet previousChunk;\n\n\trequest.on('response', response => {\n\t\tconst {headers} = response;\n\t\tisChunkedTransfer = headers['transfer-encoding'] === 'chunked' && !headers['content-length'];\n\t});\n\n\trequest.on('socket', socket => {\n\t\tconst onSocketClose = () => {\n\t\t\tif (isChunkedTransfer && !properLastChunkReceived) {\n\t\t\t\tconst error = new Error('Premature close');\n\t\t\t\terror.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\terrorCallback(error);\n\t\t\t}\n\t\t};\n\n\t\tconst onData = buf => {\n\t\t\tproperLastChunkReceived = Buffer.compare(buf.slice(-5), LAST_CHUNK) === 0;\n\n\t\t\t// Sometimes final 0-length chunk and end of message code are in separate packets\n\t\t\tif (!properLastChunkReceived && previousChunk) {\n\t\t\t\tproperLastChunkReceived = (\n\t\t\t\t\tBuffer.compare(previousChunk.slice(-3), LAST_CHUNK.slice(0, 3)) === 0 &&\n\t\t\t\t\tBuffer.compare(buf.slice(-2), LAST_CHUNK.slice(3)) === 0\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tpreviousChunk = buf;\n\t\t};\n\n\t\tsocket.prependListener('close', onSocketClose);\n\t\tsocket.on('data', onData);\n\n\t\trequest.on('close', () => {\n\t\t\tsocket.removeListener('close', onSocketClose);\n\t\t\tsocket.removeListener('data', onData);\n\t\t});\n\t});\n}\n","export interface MimeBuffer extends Buffer {\n\ttype: string;\n\ttypeFull: string;\n\tcharset: string;\n}\n\n/**\n * Returns a `Buffer` instance from the given data URI `uri`.\n *\n * @param {String} uri Data URI to turn into a Buffer instance\n * @returns {Buffer} Buffer instance from Data URI\n * @api public\n */\nexport function dataUriToBuffer(uri: string): MimeBuffer {\n\tif (!/^data:/i.test(uri)) {\n\t\tthrow new TypeError(\n\t\t\t'`uri` does not appear to be a Data URI (must begin with \"data:\")'\n\t\t);\n\t}\n\n\t// strip newlines\n\turi = uri.replace(/\\r?\\n/g, '');\n\n\t// split the URI up into the \"metadata\" and the \"data\" portions\n\tconst firstComma = uri.indexOf(',');\n\tif (firstComma === -1 || firstComma <= 4) {\n\t\tthrow new TypeError('malformed data: URI');\n\t}\n\n\t// remove the \"data:\" scheme and parse the metadata\n\tconst meta = uri.substring(5, firstComma).split(';');\n\n\tlet charset = '';\n\tlet base64 = false;\n\tconst type = meta[0] || 'text/plain';\n\tlet typeFull = type;\n\tfor (let i = 1; i < meta.length; i++) {\n\t\tif (meta[i] === 'base64') {\n\t\t\tbase64 = true;\n\t\t} else if(meta[i]) {\n\t\t\ttypeFull += `;${ meta[i]}`;\n\t\t\tif (meta[i].indexOf('charset=') === 0) {\n\t\t\t\tcharset = meta[i].substring(8);\n\t\t\t}\n\t\t}\n\t}\n\t// defaults to US-ASCII only if type is not provided\n\tif (!meta[0] && !charset.length) {\n\t\ttypeFull += ';charset=US-ASCII';\n\t\tcharset = 'US-ASCII';\n\t}\n\n\t// get the encoded data portion and decode URI-encoded chars\n\tconst encoding = base64 ? 'base64' : 'ascii';\n\tconst data = unescape(uri.substring(firstComma + 1));\n\tconst buffer = Buffer.from(data, encoding) as MimeBuffer;\n\n\t// set `.type` and `.typeFull` properties to MIME type\n\tbuffer.type = type;\n\tbuffer.typeFull = typeFull;\n\n\t// set the `.charset` property\n\tbuffer.charset = charset;\n\n\treturn buffer;\n}\n\nexport default dataUriToBuffer;\n","\n/**\n * Body.js\n *\n * Body interface provides common methods for Request and Response\n */\n\nimport Stream, {PassThrough} from 'node:stream';\nimport {types, deprecate, promisify} from 'node:util';\nimport {Buffer} from 'node:buffer';\n\nimport Blob from 'fetch-blob';\nimport {FormData, formDataToBlob} from 'formdata-polyfill/esm.min.js';\n\nimport {FetchError} from './errors/fetch-error.js';\nimport {FetchBaseError} from './errors/base.js';\nimport {isBlob, isURLSearchParameters} from './utils/is.js';\n\nconst pipeline = promisify(Stream.pipeline);\nconst INTERNALS = Symbol('Body internals');\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nexport default class Body {\n\tconstructor(body, {\n\t\tsize = 0\n\t} = {}) {\n\t\tlet boundary = null;\n\n\t\tif (body === null) {\n\t\t\t// Body is undefined or null\n\t\t\tbody = null;\n\t\t} else if (isURLSearchParameters(body)) {\n\t\t\t// Body is a URLSearchParams\n\t\t\tbody = Buffer.from(body.toString());\n\t\t} else if (isBlob(body)) {\n\t\t\t// Body is blob\n\t\t} else if (Buffer.isBuffer(body)) {\n\t\t\t// Body is Buffer\n\t\t} else if (types.isAnyArrayBuffer(body)) {\n\t\t\t// Body is ArrayBuffer\n\t\t\tbody = Buffer.from(body);\n\t\t} else if (ArrayBuffer.isView(body)) {\n\t\t\t// Body is ArrayBufferView\n\t\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t\t} else if (body instanceof Stream) {\n\t\t\t// Body is stream\n\t\t} else if (body instanceof FormData) {\n\t\t\t// Body is FormData\n\t\t\tbody = formDataToBlob(body);\n\t\t\tboundary = body.type.split('=')[1];\n\t\t} else {\n\t\t\t// None of the above\n\t\t\t// coerce to string then buffer\n\t\t\tbody = Buffer.from(String(body));\n\t\t}\n\n\t\tlet stream = body;\n\n\t\tif (Buffer.isBuffer(body)) {\n\t\t\tstream = Stream.Readable.from(body);\n\t\t} else if (isBlob(body)) {\n\t\t\tstream = Stream.Readable.from(body.stream());\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\tbody,\n\t\t\tstream,\n\t\t\tboundary,\n\t\t\tdisturbed: false,\n\t\t\terror: null\n\t\t};\n\t\tthis.size = size;\n\n\t\tif (body instanceof Stream) {\n\t\t\tbody.on('error', error_ => {\n\t\t\t\tconst error = error_ instanceof FetchBaseError ?\n\t\t\t\t\terror_ :\n\t\t\t\t\tnew FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`, 'system', error_);\n\t\t\t\tthis[INTERNALS].error = error;\n\t\t\t});\n\t\t}\n\t}\n\n\tget body() {\n\t\treturn this[INTERNALS].stream;\n\t}\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t}\n\n\t/**\n\t * Decode response as ArrayBuffer\n\t *\n\t * @return Promise\n\t */\n\tasync arrayBuffer() {\n\t\tconst {buffer, byteOffset, byteLength} = await consumeBody(this);\n\t\treturn buffer.slice(byteOffset, byteOffset + byteLength);\n\t}\n\n\tasync formData() {\n\t\tconst ct = this.headers.get('content-type');\n\n\t\tif (ct.startsWith('application/x-www-form-urlencoded')) {\n\t\t\tconst formData = new FormData();\n\t\t\tconst parameters = new URLSearchParams(await this.text());\n\n\t\t\tfor (const [name, value] of parameters) {\n\t\t\t\tformData.append(name, value);\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\tconst {toFormData} = await import('./utils/multipart-parser.js');\n\t\treturn toFormData(this.body, ct);\n\t}\n\n\t/**\n\t * Return raw response as Blob\n\t *\n\t * @return Promise\n\t */\n\tasync blob() {\n\t\tconst ct = (this.headers && this.headers.get('content-type')) || (this[INTERNALS].body && this[INTERNALS].body.type) || '';\n\t\tconst buf = await this.arrayBuffer();\n\n\t\treturn new Blob([buf], {\n\t\t\ttype: ct\n\t\t});\n\t}\n\n\t/**\n\t * Decode response as json\n\t *\n\t * @return Promise\n\t */\n\tasync json() {\n\t\tconst text = await this.text();\n\t\treturn JSON.parse(text);\n\t}\n\n\t/**\n\t * Decode response as text\n\t *\n\t * @return Promise\n\t */\n\tasync text() {\n\t\tconst buffer = await consumeBody(this);\n\t\treturn new TextDecoder().decode(buffer);\n\t}\n\n\t/**\n\t * Decode response as buffer (non-spec api)\n\t *\n\t * @return Promise\n\t */\n\tbuffer() {\n\t\treturn consumeBody(this);\n\t}\n}\n\nBody.prototype.buffer = deprecate(Body.prototype.buffer, 'Please use \\'response.arrayBuffer()\\' instead of \\'response.buffer()\\'', 'node-fetch#buffer');\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: {enumerable: true},\n\tbodyUsed: {enumerable: true},\n\tarrayBuffer: {enumerable: true},\n\tblob: {enumerable: true},\n\tjson: {enumerable: true},\n\ttext: {enumerable: true},\n\tdata: {get: deprecate(() => {},\n\t\t'data doesn\\'t exist, use json(), text(), arrayBuffer(), or body instead',\n\t\t'https://github.com/node-fetch/node-fetch/issues/1000 (response)')}\n});\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nasync function consumeBody(data) {\n\tif (data[INTERNALS].disturbed) {\n\t\tthrow new TypeError(`body used already for: ${data.url}`);\n\t}\n\n\tdata[INTERNALS].disturbed = true;\n\n\tif (data[INTERNALS].error) {\n\t\tthrow data[INTERNALS].error;\n\t}\n\n\tconst {body} = data;\n\n\t// Body is null\n\tif (body === null) {\n\t\treturn Buffer.alloc(0);\n\t}\n\n\t/* c8 ignore next 3 */\n\tif (!(body instanceof Stream)) {\n\t\treturn Buffer.alloc(0);\n\t}\n\n\t// Body is stream\n\t// get ready to actually consume the body\n\tconst accum = [];\n\tlet accumBytes = 0;\n\n\ttry {\n\t\tfor await (const chunk of body) {\n\t\t\tif (data.size > 0 && accumBytes + chunk.length > data.size) {\n\t\t\t\tconst error = new FetchError(`content size at ${data.url} over limit: ${data.size}`, 'max-size');\n\t\t\t\tbody.destroy(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t}\n\t} catch (error) {\n\t\tconst error_ = error instanceof FetchBaseError ? error : new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`, 'system', error);\n\t\tthrow error_;\n\t}\n\n\tif (body.readableEnded === true || body._readableState.ended === true) {\n\t\ttry {\n\t\t\tif (accum.every(c => typeof c === 'string')) {\n\t\t\t\treturn Buffer.from(accum.join(''));\n\t\t\t}\n\n\t\t\treturn Buffer.concat(accum, accumBytes);\n\t\t} catch (error) {\n\t\t\tthrow new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`, 'system', error);\n\t\t}\n\t} else {\n\t\tthrow new FetchError(`Premature close of server response while trying to fetch ${data.url}`);\n\t}\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @param String highWaterMark highWaterMark for both PassThrough body streams\n * @return Mixed\n */\nexport const clone = (instance, highWaterMark) => {\n\tlet p1;\n\tlet p2;\n\tlet {body} = instance[INTERNALS];\n\n\t// Don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// Check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif ((body instanceof Stream) && (typeof body.getBoundary !== 'function')) {\n\t\t// Tee instance body\n\t\tp1 = new PassThrough({highWaterMark});\n\t\tp2 = new PassThrough({highWaterMark});\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// Set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].stream = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n};\n\nconst getNonSpecFormDataBoundary = deprecate(\n\tbody => body.getBoundary(),\n\t'form-data doesn\\'t follow the spec and requires special treatment. Use alternative package',\n\t'https://github.com/node-fetch/node-fetch/issues/1167'\n);\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param {any} body Any options.body input\n * @returns {string | null}\n */\nexport const extractContentType = (body, request) => {\n\t// Body is null or undefined\n\tif (body === null) {\n\t\treturn null;\n\t}\n\n\t// Body is string\n\tif (typeof body === 'string') {\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n\n\t// Body is a URLSearchParams\n\tif (isURLSearchParameters(body)) {\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t}\n\n\t// Body is blob\n\tif (isBlob(body)) {\n\t\treturn body.type || null;\n\t}\n\n\t// Body is a Buffer (Buffer, ArrayBuffer or ArrayBufferView)\n\tif (Buffer.isBuffer(body) || types.isAnyArrayBuffer(body) || ArrayBuffer.isView(body)) {\n\t\treturn null;\n\t}\n\n\tif (body instanceof FormData) {\n\t\treturn `multipart/form-data; boundary=${request[INTERNALS].boundary}`;\n\t}\n\n\t// Detect form data input from form-data module\n\tif (body && typeof body.getBoundary === 'function') {\n\t\treturn `multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`;\n\t}\n\n\t// Body is stream - can't really do much about this\n\tif (body instanceof Stream) {\n\t\treturn null;\n\t}\n\n\t// Body constructor defaults other things to string\n\treturn 'text/plain;charset=UTF-8';\n};\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param {any} obj.body Body object from the Body instance.\n * @returns {number | null}\n */\nexport const getTotalBytes = request => {\n\tconst {body} = request[INTERNALS];\n\n\t// Body is null or undefined\n\tif (body === null) {\n\t\treturn 0;\n\t}\n\n\t// Body is Blob\n\tif (isBlob(body)) {\n\t\treturn body.size;\n\t}\n\n\t// Body is Buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn body.length;\n\t}\n\n\t// Detect form data input from form-data module\n\tif (body && typeof body.getLengthSync === 'function') {\n\t\treturn body.hasKnownLength && body.hasKnownLength() ? body.getLengthSync() : null;\n\t}\n\n\t// Body is stream\n\treturn null;\n};\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param {Stream.Writable} dest The stream to write to.\n * @param obj.body Body object from the Body instance.\n * @returns {Promise<void>}\n */\nexport const writeToStream = async (dest, {body}) => {\n\tif (body === null) {\n\t\t// Body is null\n\t\tdest.end();\n\t} else {\n\t\t// Body is stream\n\t\tawait pipeline(body, dest);\n\t}\n};\n","export class FetchBaseError extends Error {\n\tconstructor(message, type) {\n\t\tsuper(message);\n\t\t// Hide custom error implementation details from end-users\n\t\tError.captureStackTrace(this, this.constructor);\n\n\t\tthis.type = type;\n\t}\n\n\tget name() {\n\t\treturn this.constructor.name;\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.name;\n\t}\n}\n","\nimport {FetchBaseError} from './base.js';\n\n/**\n * @typedef {{ address?: string, code: string, dest?: string, errno: number, info?: object, message: string, path?: string, port?: number, syscall: string}} SystemError\n*/\n\n/**\n * FetchError interface for operational errors\n */\nexport class FetchError extends FetchBaseError {\n\t/**\n\t * @param {string} message - Error message for human\n\t * @param {string} [type] - Error type for machine\n\t * @param {SystemError} [systemError] - For Node.js system error\n\t */\n\tconstructor(message, type, systemError) {\n\t\tsuper(message, type);\n\t\t// When err.type is `system`, err.erroredSysCall contains system error and err.code contains system error code\n\t\tif (systemError) {\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\tthis.code = this.errno = systemError.code;\n\t\t\tthis.erroredSysCall = systemError.syscall;\n\t\t}\n\t}\n}\n","/**\n * Is.js\n *\n * Object type checks.\n */\n\nconst NAME = Symbol.toStringTag;\n\n/**\n * Check if `obj` is a URLSearchParams object\n * ref: https://github.com/node-fetch/node-fetch/issues/296#issuecomment-307598143\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isURLSearchParameters = object => {\n\treturn (\n\t\ttypeof object === 'object' &&\n\t\ttypeof object.append === 'function' &&\n\t\ttypeof object.delete === 'function' &&\n\t\ttypeof object.get === 'function' &&\n\t\ttypeof object.getAll === 'function' &&\n\t\ttypeof object.has === 'function' &&\n\t\ttypeof object.set === 'function' &&\n\t\ttypeof object.sort === 'function' &&\n\t\tobject[NAME] === 'URLSearchParams'\n\t);\n};\n\n/**\n * Check if `object` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isBlob = object => {\n\treturn (\n\t\tobject &&\n\t\ttypeof object === 'object' &&\n\t\ttypeof object.arrayBuffer === 'function' &&\n\t\ttypeof object.type === 'string' &&\n\t\ttypeof object.stream === 'function' &&\n\t\ttypeof object.constructor === 'function' &&\n\t\t/^(Blob|File)$/.test(object[NAME])\n\t);\n};\n\n/**\n * Check if `obj` is an instance of AbortSignal.\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isAbortSignal = object => {\n\treturn (\n\t\ttypeof object === 'object' && (\n\t\t\tobject[NAME] === 'AbortSignal' ||\n\t\t\tobject[NAME] === 'EventTarget'\n\t\t)\n\t);\n};\n\n/**\n * isDomainOrSubdomain reports whether sub is a subdomain (or exact match) of\n * the parent domain.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nexport const isDomainOrSubdomain = (destination, original) => {\n\tconst orig = new URL(original).hostname;\n\tconst dest = new URL(destination).hostname;\n\n\treturn orig === dest || orig.endsWith(`.${dest}`);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nexport const isSameProtocol = (destination, original) => {\n\tconst orig = new URL(original).protocol;\n\tconst dest = new URL(destination).protocol;\n\n\treturn orig === dest;\n};\n","/**\n * Headers.js\n *\n * Headers class offers convenient helpers\n */\n\nimport {types} from 'node:util';\nimport http from 'node:http';\n\n/* c8 ignore next 9 */\nconst validateHeaderName = typeof http.validateHeaderName === 'function' ?\n\thttp.validateHeaderName :\n\tname => {\n\t\tif (!/^[\\^`\\-\\w!#$%&'*+.|~]+$/.test(name)) {\n\t\t\tconst error = new TypeError(`Header name must be a valid HTTP token [${name}]`);\n\t\t\tObject.defineProperty(error, 'code', {value: 'ERR_INVALID_HTTP_TOKEN'});\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/* c8 ignore next 9 */\nconst validateHeaderValue = typeof http.validateHeaderValue === 'function' ?\n\thttp.validateHeaderValue :\n\t(name, value) => {\n\t\tif (/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/.test(value)) {\n\t\t\tconst error = new TypeError(`Invalid character in header content [\"${name}\"]`);\n\t\t\tObject.defineProperty(error, 'code', {value: 'ERR_INVALID_CHAR'});\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/**\n * @typedef {Headers | Record<string, string> | Iterable<readonly [string, string]> | Iterable<Iterable<string>>} HeadersInit\n */\n\n/**\n * This Fetch API interface allows you to perform various actions on HTTP request and response headers.\n * These actions include retrieving, setting, adding to, and removing.\n * A Headers object has an associated header list, which is initially empty and consists of zero or more name and value pairs.\n * You can add to this using methods like append() (see Examples.)\n * In all methods of this interface, header names are matched by case-insensitive byte sequence.\n *\n */\nexport default class Headers extends URLSearchParams {\n\t/**\n\t * Headers class\n\t *\n\t * @constructor\n\t * @param {HeadersInit} [init] - Response headers\n\t */\n\tconstructor(init) {\n\t\t// Validate and normalize init object in [name, value(s)][]\n\t\t/** @type {string[][]} */\n\t\tlet result = [];\n\t\tif (init instanceof Headers) {\n\t\t\tconst raw = init.raw();\n\t\t\tfor (const [name, values] of Object.entries(raw)) {\n\t\t\t\tresult.push(...values.map(value => [name, value]));\n\t\t\t}\n\t\t} else if (init == null) { // eslint-disable-line no-eq-null, eqeqeq\n\t\t\t// No op\n\t\t} else if (typeof init === 'object' && !types.isBoxedPrimitive(init)) {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\t\tif (method == null) {\n\t\t\t\t// Record<ByteString, ByteString>\n\t\t\t\tresult.push(...Object.entries(init));\n\t\t\t} else {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// Sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tresult = [...init]\n\t\t\t\t\t.map(pair => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof pair !== 'object' || types.isBoxedPrimitive(pair)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthrow new TypeError('Each header pair must be an iterable object');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn [...pair];\n\t\t\t\t\t}).map(pair => {\n\t\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn [...pair];\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Failed to construct \\'Headers\\': The provided value is not of type \\'(sequence<sequence<ByteString>> or record<ByteString, ByteString>)');\n\t\t}\n\n\t\t// Validate and lowercase\n\t\tresult =\n\t\t\tresult.length > 0 ?\n\t\t\t\tresult.map(([name, value]) => {\n\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\treturn [String(name).toLowerCase(), String(value)];\n\t\t\t\t}) :\n\t\t\t\tundefined;\n\n\t\tsuper(result);\n\n\t\t// Returning a Proxy that will lowercase key names, validate parameters and sort keys\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn new Proxy(this, {\n\t\t\tget(target, p, receiver) {\n\t\t\t\tswitch (p) {\n\t\t\t\t\tcase 'append':\n\t\t\t\t\tcase 'set':\n\t\t\t\t\t\treturn (name, value) => {\n\t\t\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\t\t\treturn URLSearchParams.prototype[p].call(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tString(name).toLowerCase(),\n\t\t\t\t\t\t\t\tString(value)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\tcase 'has':\n\t\t\t\t\tcase 'getAll':\n\t\t\t\t\t\treturn name => {\n\t\t\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\t\t\treturn URLSearchParams.prototype[p].call(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tString(name).toLowerCase()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase 'keys':\n\t\t\t\t\t\treturn () => {\n\t\t\t\t\t\t\ttarget.sort();\n\t\t\t\t\t\t\treturn new Set(URLSearchParams.prototype.keys.call(target)).keys();\n\t\t\t\t\t\t};\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn Reflect.get(target, p, receiver);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t/* c8 ignore next */\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.name;\n\t}\n\n\ttoString() {\n\t\treturn Object.prototype.toString.call(this);\n\t}\n\n\tget(name) {\n\t\tconst values = this.getAll(name);\n\t\tif (values.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet value = values.join(', ');\n\t\tif (/^content-encoding$/i.test(name)) {\n\t\t\tvalue = value.toLowerCase();\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tforEach(callback, thisArg = undefined) {\n\t\tfor (const name of this.keys()) {\n\t\t\tReflect.apply(callback, thisArg, [this.get(name), name, this]);\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const name of this.keys()) {\n\t\t\tyield this.get(name);\n\t\t}\n\t}\n\n\t/**\n\t * @type {() => IterableIterator<[string, string]>}\n\t */\n\t* entries() {\n\t\tfor (const name of this.keys()) {\n\t\t\tyield [name, this.get(name)];\n\t\t}\n\t}\n\n\t[Symbol.iterator]() {\n\t\treturn this.entries();\n\t}\n\n\t/**\n\t * Node-fetch non-spec method\n\t * returning all headers and their values as array\n\t * @returns {Record<string, string[]>}\n\t */\n\traw() {\n\t\treturn [...this.keys()].reduce((result, key) => {\n\t\t\tresult[key] = this.getAll(key);\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\t/**\n\t * For better console.log(headers) and also to convert Headers into Node.js Request compatible format\n\t */\n\t[Symbol.for('nodejs.util.inspect.custom')]() {\n\t\treturn [...this.keys()].reduce((result, key) => {\n\t\t\tconst values = this.getAll(key);\n\t\t\t// Http.request() only supports string as Host header.\n\t\t\t// This hack makes specifying custom Host header possible.\n\t\t\tif (key === 'host') {\n\t\t\t\tresult[key] = values[0];\n\t\t\t} else {\n\t\t\t\tresult[key] = values.length > 1 ? values : values[0];\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}, {});\n\t}\n}\n\n/**\n * Re-shaping object for Web IDL tests\n * Only need to do it for overridden methods\n */\nObject.defineProperties(\n\tHeaders.prototype,\n\t['get', 'entries', 'forEach', 'values'].reduce((result, property) => {\n\t\tresult[property] = {enumerable: true};\n\t\treturn result;\n\t}, {})\n);\n\n/**\n * Create a Headers object from an http.IncomingMessage.rawHeaders, ignoring those that do\n * not conform to HTTP grammar productions.\n * @param {import('http').IncomingMessage['rawHeaders']} headers\n */\nexport function fromRawHeaders(headers = []) {\n\treturn new Headers(\n\t\theaders\n\t\t\t// Split into pairs\n\t\t\t.reduce((result, value, index, array) => {\n\t\t\t\tif (index % 2 === 0) {\n\t\t\t\t\tresult.push(array.slice(index, index + 2));\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t\t.filter(([name, value]) => {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\treturn true;\n\t\t\t\t} catch {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t})\n\n\t);\n}\n","const redirectStatus = new Set([301, 302, 303, 307, 308]);\n\n/**\n * Redirect code matching\n *\n * @param {number} code - Status code\n * @return {boolean}\n */\nexport const isRedirect = code => {\n\treturn redirectStatus.has(code);\n};\n","/**\n * Response.js\n *\n * Response class provides content decoding\n */\n\nimport Headers from './headers.js';\nimport Body, {clone, extractContentType} from './body.js';\nimport {isRedirect} from './utils/is-redirect.js';\n\nconst INTERNALS = Symbol('Response internals');\n\n/**\n * Response class\n *\n * Ref: https://fetch.spec.whatwg.org/#response-class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nexport default class Response extends Body {\n\tconstructor(body = null, options = {}) {\n\t\tsuper(body, options);\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq, no-negated-condition\n\t\tconst status = options.status != null ? options.status : 200;\n\n\t\tconst headers = new Headers(options.headers);\n\n\t\tif (body !== null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body, this);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\ttype: 'default',\n\t\t\turl: options.url,\n\t\t\tstatus,\n\t\t\tstatusText: options.statusText || '',\n\t\t\theaders,\n\t\t\tcounter: options.counter,\n\t\t\thighWaterMark: options.highWaterMark\n\t\t};\n\t}\n\n\tget type() {\n\t\treturn this[INTERNALS].type;\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS].status;\n\t}\n\n\t/**\n\t * Convenience property representing if the request ended normally\n\t */\n\tget ok() {\n\t\treturn this[INTERNALS].status >= 200 && this[INTERNALS].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS].headers;\n\t}\n\n\tget highWaterMark() {\n\t\treturn this[INTERNALS].highWaterMark;\n\t}\n\n\t/**\n\t * Clone this response\n\t *\n\t * @return Response\n\t */\n\tclone() {\n\t\treturn new Response(clone(this, this.highWaterMark), {\n\t\t\ttype: this.type,\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected,\n\t\t\tsize: this.size,\n\t\t\thighWaterMark: this.highWaterMark\n\t\t});\n\t}\n\n\t/**\n\t * @param {string} url The URL that the new response is to originate from.\n\t * @param {number} status An optional status code for the response (e.g., 302.)\n\t * @returns {Response} A Response object.\n\t */\n\tstatic redirect(url, status = 302) {\n\t\tif (!isRedirect(status)) {\n\t\t\tthrow new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n\t\t}\n\n\t\treturn new Response(null, {\n\t\t\theaders: {\n\t\t\t\tlocation: new URL(url).toString()\n\t\t\t},\n\t\t\tstatus\n\t\t});\n\t}\n\n\tstatic error() {\n\t\tconst response = new Response(null, {status: 0, statusText: ''});\n\t\tresponse[INTERNALS].type = 'error';\n\t\treturn response;\n\t}\n\n\tstatic json(data = undefined, init = {}) {\n\t\tconst body = JSON.stringify(data);\n\n\t\tif (body === undefined) {\n\t\t\tthrow new TypeError('data is not JSON serializable');\n\t\t}\n\n\t\tconst headers = new Headers(init && init.headers);\n\n\t\tif (!headers.has('content-type')) {\n\t\t\theaders.set('content-type', 'application/json');\n\t\t}\n\n\t\treturn new Response(body, {\n\t\t\t...init,\n\t\t\theaders\n\t\t});\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'Response';\n\t}\n}\n\nObject.defineProperties(Response.prototype, {\n\ttype: {enumerable: true},\n\turl: {enumerable: true},\n\tstatus: {enumerable: true},\n\tok: {enumerable: true},\n\tredirected: {enumerable: true},\n\tstatusText: {enumerable: true},\n\theaders: {enumerable: true},\n\tclone: {enumerable: true}\n});\n","/**\n * Request.js\n *\n * Request class contains server only options\n *\n * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.\n */\n\nimport {format as formatUrl} from 'node:url';\nimport {deprecate} from 'node:util';\nimport Headers from './headers.js';\nimport Body, {clone, extractContentType, getTotalBytes} from './body.js';\nimport {isAbortSignal} from './utils/is.js';\nimport {getSearch} from './utils/get-search.js';\nimport {\n\tvalidateReferrerPolicy, determineRequestsReferrer, DEFAULT_REFERRER_POLICY\n} from './utils/referrer.js';\n\nconst INTERNALS = Symbol('Request internals');\n\n/**\n * Check if `obj` is an instance of Request.\n *\n * @param {*} object\n * @return {boolean}\n */\nconst isRequest = object => {\n\treturn (\n\t\ttypeof object === 'object' &&\n\t\ttypeof object[INTERNALS] === 'object'\n\t);\n};\n\nconst doBadDataWarn = deprecate(() => {},\n\t'.data is not a valid RequestInit property, use .body instead',\n\t'https://github.com/node-fetch/node-fetch/issues/1000 (request)');\n\n/**\n * Request class\n *\n * Ref: https://fetch.spec.whatwg.org/#request-class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nexport default class Request extends Body {\n\tconstructor(input, init = {}) {\n\t\tlet parsedURL;\n\n\t\t// Normalize input and force URL to be encoded as UTF-8 (https://github.com/node-fetch/node-fetch/issues/245)\n\t\tif (isRequest(input)) {\n\t\t\tparsedURL = new URL(input.url);\n\t\t} else {\n\t\t\tparsedURL = new URL(input);\n\t\t\tinput = {};\n\t\t}\n\n\t\tif (parsedURL.username !== '' || parsedURL.password !== '') {\n\t\t\tthrow new TypeError(`${parsedURL} is an url with embedded credentials.`);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tif (/^(delete|get|head|options|post|put)$/i.test(method)) {\n\t\t\tmethod = method.toUpperCase();\n\t\t}\n\n\t\tif (!isRequest(init) && 'data' in init) {\n\t\t\tdoBadDataWarn();\n\t\t}\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tif ((init.body != null || (isRequest(input) && input.body !== null)) &&\n\t\t\t(method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tconst inputBody = init.body ?\n\t\t\tinit.body :\n\t\t\t(isRequest(input) && input.body !== null ?\n\t\t\t\tclone(input) :\n\t\t\t\tnull);\n\n\t\tsuper(inputBody, {\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody !== null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody, this);\n\t\t\tif (contentType) {\n\t\t\t\theaders.set('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ?\n\t\t\tinput.signal :\n\t\t\tnull;\n\t\tif ('signal' in init) {\n\t\t\tsignal = init.signal;\n\t\t}\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal or EventTarget');\n\t\t}\n\n\t\t// §5.4, Request constructor steps, step 15.1\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tlet referrer = init.referrer == null ? input.referrer : init.referrer;\n\t\tif (referrer === '') {\n\t\t\t// §5.4, Request constructor steps, step 15.2\n\t\t\treferrer = 'no-referrer';\n\t\t} else if (referrer) {\n\t\t\t// §5.4, Request constructor steps, step 15.3.1, 15.3.2\n\t\t\tconst parsedReferrer = new URL(referrer);\n\t\t\t// §5.4, Request constructor steps, step 15.3.3, 15.3.4\n\t\t\treferrer = /^about:(\\/\\/)?client$/.test(parsedReferrer) ? 'client' : parsedReferrer;\n\t\t} else {\n\t\t\treferrer = undefined;\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal,\n\t\t\treferrer\n\t\t};\n\n\t\t// Node-fetch-only options\n\t\tthis.follow = init.follow === undefined ? (input.follow === undefined ? 20 : input.follow) : init.follow;\n\t\tthis.compress = init.compress === undefined ? (input.compress === undefined ? true : input.compress) : init.compress;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t\tthis.highWaterMark = init.highWaterMark || input.highWaterMark || 16384;\n\t\tthis.insecureHTTPParser = init.insecureHTTPParser || input.insecureHTTPParser || false;\n\n\t\t// §5.4, Request constructor steps, step 16.\n\t\t// Default is empty string per https://fetch.spec.whatwg.org/#concept-request-referrer-policy\n\t\tthis.referrerPolicy = init.referrerPolicy || input.referrerPolicy || '';\n\t}\n\n\t/** @returns {string} */\n\tget method() {\n\t\treturn this[INTERNALS].method;\n\t}\n\n\t/** @returns {string} */\n\tget url() {\n\t\treturn formatUrl(this[INTERNALS].parsedURL);\n\t}\n\n\t/** @returns {Headers} */\n\tget headers() {\n\t\treturn this[INTERNALS].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS].redirect;\n\t}\n\n\t/** @returns {AbortSignal} */\n\tget signal() {\n\t\treturn this[INTERNALS].signal;\n\t}\n\n\t// https://fetch.spec.whatwg.org/#dom-request-referrer\n\tget referrer() {\n\t\tif (this[INTERNALS].referrer === 'no-referrer') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (this[INTERNALS].referrer === 'client') {\n\t\t\treturn 'about:client';\n\t\t}\n\n\t\tif (this[INTERNALS].referrer) {\n\t\t\treturn this[INTERNALS].referrer.toString();\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tget referrerPolicy() {\n\t\treturn this[INTERNALS].referrerPolicy;\n\t}\n\n\tset referrerPolicy(referrerPolicy) {\n\t\tthis[INTERNALS].referrerPolicy = validateReferrerPolicy(referrerPolicy);\n\t}\n\n\t/**\n\t * Clone this request\n\t *\n\t * @return Request\n\t */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'Request';\n\t}\n}\n\nObject.defineProperties(Request.prototype, {\n\tmethod: {enumerable: true},\n\turl: {enumerable: true},\n\theaders: {enumerable: true},\n\tredirect: {enumerable: true},\n\tclone: {enumerable: true},\n\tsignal: {enumerable: true},\n\treferrer: {enumerable: true},\n\treferrerPolicy: {enumerable: true}\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param {Request} request - A Request instance\n * @return The options object to be passed to http.request\n */\nexport const getNodeRequestOptions = request => {\n\tconst {parsedURL} = request[INTERNALS];\n\tconst headers = new Headers(request[INTERNALS].headers);\n\n\t// Fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body === null && /^(post|put)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\n\tif (request.body !== null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\t// Set Content-Length if totalBytes is a number (that is not NaN)\n\t\tif (typeof totalBytes === 'number' && !Number.isNaN(totalBytes)) {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// 4.1. Main fetch, step 2.6\n\t// > If request's referrer policy is the empty string, then set request's referrer policy to the\n\t// > default referrer policy.\n\tif (request.referrerPolicy === '') {\n\t\trequest.referrerPolicy = DEFAULT_REFERRER_POLICY;\n\t}\n\n\t// 4.1. Main fetch, step 2.7\n\t// > If request's referrer is not \"no-referrer\", set request's referrer to the result of invoking\n\t// > determine request's referrer.\n\tif (request.referrer && request.referrer !== 'no-referrer') {\n\t\trequest[INTERNALS].referrer = determineRequestsReferrer(request);\n\t} else {\n\t\trequest[INTERNALS].referrer = 'no-referrer';\n\t}\n\n\t// 4.5. HTTP-network-or-cache fetch, step 6.9\n\t// > If httpRequest's referrer is a URL, then append `Referer`/httpRequest's referrer, serialized\n\t// > and isomorphic encoded, to httpRequest's header list.\n\tif (request[INTERNALS].referrer instanceof URL) {\n\t\theaders.set('Referer', request.referrer);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip, deflate, br');\n\t}\n\n\tlet {agent} = request;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\tconst search = getSearch(parsedURL);\n\n\t// Pass the full URL directly to request(), but overwrite the following\n\t// options:\n\tconst options = {\n\t\t// Overwrite search to retain trailing ? (issue #776)\n\t\tpath: parsedURL.pathname + search,\n\t\t// The following options are not expressed in the URL\n\t\tmethod: request.method,\n\t\theaders: headers[Symbol.for('nodejs.util.inspect.custom')](),\n\t\tinsecureHTTPParser: request.insecureHTTPParser,\n\t\tagent\n\t};\n\n\treturn {\n\t\t/** @type {URL} */\n\t\tparsedURL,\n\t\toptions\n\t};\n};\n","export const getSearch = parsedURL => {\n\tif (parsedURL.search) {\n\t\treturn parsedURL.search;\n\t}\n\n\tconst lastOffset = parsedURL.href.length - 1;\n\tconst hash = parsedURL.hash || (parsedURL.href[lastOffset] === '#' ? '#' : '');\n\treturn parsedURL.href[lastOffset - hash.length] === '?' ? '?' : '';\n};\n","import {isIP} from 'node:net';\n\n/**\n * @external URL\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/URL|URL}\n */\n\n/**\n * @module utils/referrer\n * @private\n */\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#strip-url|Referrer Policy §8.4. Strip url for use as a referrer}\n * @param {string} URL\n * @param {boolean} [originOnly=false]\n */\nexport function stripURLForUseAsAReferrer(url, originOnly = false) {\n\t// 1. If url is null, return no referrer.\n\tif (url == null) { // eslint-disable-line no-eq-null, eqeqeq\n\t\treturn 'no-referrer';\n\t}\n\n\turl = new URL(url);\n\n\t// 2. If url's scheme is a local scheme, then return no referrer.\n\tif (/^(about|blob|data):$/.test(url.protocol)) {\n\t\treturn 'no-referrer';\n\t}\n\n\t// 3. Set url's username to the empty string.\n\turl.username = '';\n\n\t// 4. Set url's password to null.\n\t// Note: `null` appears to be a mistake as this actually results in the password being `\"null\"`.\n\turl.password = '';\n\n\t// 5. Set url's fragment to null.\n\t// Note: `null` appears to be a mistake as this actually results in the fragment being `\"#null\"`.\n\turl.hash = '';\n\n\t// 6. If the origin-only flag is true, then:\n\tif (originOnly) {\n\t\t// 6.1. Set url's path to null.\n\t\t// Note: `null` appears to be a mistake as this actually results in the path being `\"/null\"`.\n\t\turl.pathname = '';\n\n\t\t// 6.2. Set url's query to null.\n\t\t// Note: `null` appears to be a mistake as this actually results in the query being `\"?null\"`.\n\t\turl.search = '';\n\t}\n\n\t// 7. Return url.\n\treturn url;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#enumdef-referrerpolicy|enum ReferrerPolicy}\n */\nexport const ReferrerPolicy = new Set([\n\t'',\n\t'no-referrer',\n\t'no-referrer-when-downgrade',\n\t'same-origin',\n\t'origin',\n\t'strict-origin',\n\t'origin-when-cross-origin',\n\t'strict-origin-when-cross-origin',\n\t'unsafe-url'\n]);\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#default-referrer-policy|default referrer policy}\n */\nexport const DEFAULT_REFERRER_POLICY = 'strict-origin-when-cross-origin';\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#referrer-policies|Referrer Policy §3. Referrer Policies}\n * @param {string} referrerPolicy\n * @returns {string} referrerPolicy\n */\nexport function validateReferrerPolicy(referrerPolicy) {\n\tif (!ReferrerPolicy.has(referrerPolicy)) {\n\t\tthrow new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);\n\t}\n\n\treturn referrerPolicy;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy|Referrer Policy §3.2. Is origin potentially trustworthy?}\n * @param {external:URL} url\n * @returns `true`: \"Potentially Trustworthy\", `false`: \"Not Trustworthy\"\n */\nexport function isOriginPotentiallyTrustworthy(url) {\n\t// 1. If origin is an opaque origin, return \"Not Trustworthy\".\n\t// Not applicable\n\n\t// 2. Assert: origin is a tuple origin.\n\t// Not for implementations\n\n\t// 3. If origin's scheme is either \"https\" or \"wss\", return \"Potentially Trustworthy\".\n\tif (/^(http|ws)s:$/.test(url.protocol)) {\n\t\treturn true;\n\t}\n\n\t// 4. If origin's host component matches one of the CIDR notations 127.0.0.0/8 or ::1/128 [RFC4632], return \"Potentially Trustworthy\".\n\tconst hostIp = url.host.replace(/(^\\[)|(]$)/g, '');\n\tconst hostIPVersion = isIP(hostIp);\n\n\tif (hostIPVersion === 4 && /^127\\./.test(hostIp)) {\n\t\treturn true;\n\t}\n\n\tif (hostIPVersion === 6 && /^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)) {\n\t\treturn true;\n\t}\n\n\t// 5. If origin's host component is \"localhost\" or falls within \".localhost\", and the user agent conforms to the name resolution rules in [let-localhost-be-localhost], return \"Potentially Trustworthy\".\n\t// We are returning FALSE here because we cannot ensure conformance to\n\t// let-localhost-be-loalhost (https://tools.ietf.org/html/draft-west-let-localhost-be-localhost)\n\tif (url.host === 'localhost' || url.host.endsWith('.localhost')) {\n\t\treturn false;\n\t}\n\n\t// 6. If origin's scheme component is file, return \"Potentially Trustworthy\".\n\tif (url.protocol === 'file:') {\n\t\treturn true;\n\t}\n\n\t// 7. If origin's scheme component is one which the user agent considers to be authenticated, return \"Potentially Trustworthy\".\n\t// Not supported\n\n\t// 8. If origin has been configured as a trustworthy origin, return \"Potentially Trustworthy\".\n\t// Not supported\n\n\t// 9. Return \"Not Trustworthy\".\n\treturn false;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-url-trustworthy|Referrer Policy §3.3. Is url potentially trustworthy?}\n * @param {external:URL} url\n * @returns `true`: \"Potentially Trustworthy\", `false`: \"Not Trustworthy\"\n */\nexport function isUrlPotentiallyTrustworthy(url) {\n\t// 1. If url is \"about:blank\" or \"about:srcdoc\", return \"Potentially Trustworthy\".\n\tif (/^about:(blank|srcdoc)$/.test(url)) {\n\t\treturn true;\n\t}\n\n\t// 2. If url's scheme is \"data\", return \"Potentially Trustworthy\".\n\tif (url.protocol === 'data:') {\n\t\treturn true;\n\t}\n\n\t// Note: The origin of blob: and filesystem: URLs is the origin of the context in which they were\n\t// created. Therefore, blobs created in a trustworthy origin will themselves be potentially\n\t// trustworthy.\n\tif (/^(blob|filesystem):$/.test(url.protocol)) {\n\t\treturn true;\n\t}\n\n\t// 3. Return the result of executing §3.2 Is origin potentially trustworthy? on url's origin.\n\treturn isOriginPotentiallyTrustworthy(url);\n}\n\n/**\n * Modifies the referrerURL to enforce any extra security policy considerations.\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7\n * @callback module:utils/referrer~referrerURLCallback\n * @param {external:URL} referrerURL\n * @returns {external:URL} modified referrerURL\n */\n\n/**\n * Modifies the referrerOrigin to enforce any extra security policy considerations.\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7\n * @callback module:utils/referrer~referrerOriginCallback\n * @param {external:URL} referrerOrigin\n * @returns {external:URL} modified referrerOrigin\n */\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}\n * @param {Request} request\n * @param {object} o\n * @param {module:utils/referrer~referrerURLCallback} o.referrerURLCallback\n * @param {module:utils/referrer~referrerOriginCallback} o.referrerOriginCallback\n * @returns {external:URL} Request's referrer\n */\nexport function determineRequestsReferrer(request, {referrerURLCallback, referrerOriginCallback} = {}) {\n\t// There are 2 notes in the specification about invalid pre-conditions. We return null, here, for\n\t// these cases:\n\t// > Note: If request's referrer is \"no-referrer\", Fetch will not call into this algorithm.\n\t// > Note: If request's referrer policy is the empty string, Fetch will not call into this\n\t// > algorithm.\n\tif (request.referrer === 'no-referrer' || request.referrerPolicy === '') {\n\t\treturn null;\n\t}\n\n\t// 1. Let policy be request's associated referrer policy.\n\tconst policy = request.referrerPolicy;\n\n\t// 2. Let environment be request's client.\n\t// not applicable to node.js\n\n\t// 3. Switch on request's referrer:\n\tif (request.referrer === 'about:client') {\n\t\treturn 'no-referrer';\n\t}\n\n\t// \"a URL\": Let referrerSource be request's referrer.\n\tconst referrerSource = request.referrer;\n\n\t// 4. Let request's referrerURL be the result of stripping referrerSource for use as a referrer.\n\tlet referrerURL = stripURLForUseAsAReferrer(referrerSource);\n\n\t// 5. Let referrerOrigin be the result of stripping referrerSource for use as a referrer, with the\n\t// origin-only flag set to true.\n\tlet referrerOrigin = stripURLForUseAsAReferrer(referrerSource, true);\n\n\t// 6. If the result of serializing referrerURL is a string whose length is greater than 4096, set\n\t// referrerURL to referrerOrigin.\n\tif (referrerURL.toString().length > 4096) {\n\t\treferrerURL = referrerOrigin;\n\t}\n\n\t// 7. The user agent MAY alter referrerURL or referrerOrigin at this point to enforce arbitrary\n\t// policy considerations in the interests of minimizing data leakage. For example, the user\n\t// agent could strip the URL down to an origin, modify its host, replace it with an empty\n\t// string, etc.\n\tif (referrerURLCallback) {\n\t\treferrerURL = referrerURLCallback(referrerURL);\n\t}\n\n\tif (referrerOriginCallback) {\n\t\treferrerOrigin = referrerOriginCallback(referrerOrigin);\n\t}\n\n\t// 8.Execute the statements corresponding to the value of policy:\n\tconst currentURL = new URL(request.url);\n\n\tswitch (policy) {\n\t\tcase 'no-referrer':\n\t\t\treturn 'no-referrer';\n\n\t\tcase 'origin':\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'unsafe-url':\n\t\t\treturn referrerURL;\n\n\t\tcase 'strict-origin':\n\t\t\t// 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 2. Return referrerOrigin.\n\t\t\treturn referrerOrigin.toString();\n\n\t\tcase 'strict-origin-when-cross-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// 2. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 3. Return referrerOrigin.\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'same-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// 2. Return no referrer.\n\t\t\treturn 'no-referrer';\n\n\t\tcase 'origin-when-cross-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// Return referrerOrigin.\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'no-referrer-when-downgrade':\n\t\t\t// 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 2. Return referrerURL.\n\t\t\treturn referrerURL;\n\n\t\tdefault:\n\t\t\tthrow new TypeError(`Invalid referrerPolicy: ${policy}`);\n\t}\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#parse-referrer-policy-from-header|Referrer Policy §8.1. Parse a referrer policy from a Referrer-Policy header}\n * @param {Headers} headers Response headers\n * @returns {string} policy\n */\nexport function parseReferrerPolicyFromHeader(headers) {\n\t// 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy`\n\t// and response’s header list.\n\tconst policyTokens = (headers.get('referrer-policy') || '').split(/[,\\s]+/);\n\n\t// 2. Let policy be the empty string.\n\tlet policy = '';\n\n\t// 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty\n\t// string, then set policy to token.\n\t// Note: This algorithm loops over multiple policy values to allow deployment of new policy\n\t// values with fallbacks for older user agents, as described in § 11.1 Unknown Policy Values.\n\tfor (const token of policyTokens) {\n\t\tif (token && ReferrerPolicy.has(token)) {\n\t\t\tpolicy = token;\n\t\t}\n\t}\n\n\t// 4. Return policy.\n\treturn policy;\n}\n","import {FetchBaseError} from './base.js';\n\n/**\n * AbortError interface for cancelled requests\n */\nexport class AbortError extends FetchBaseError {\n\tconstructor(message, type = 'aborted') {\n\t\tsuper(message, type);\n\t}\n}\n"],"mappings":"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","names":["http","https","zlib","Stream","PassThrough","pump","Buffer","dataUriToBuffer","uri","firstComma","meta","charset","base64","type","typeFull","i","encoding","data","buffer","__name","dist_default","Stream","PassThrough","types","deprecate","promisify","Buffer","FetchBaseError","__name","message","type","FetchError","FetchBaseError","__name","message","type","systemError","NAME","isURLSearchParameters","__name","object","isBlob","isAbortSignal","isDomainOrSubdomain","destination","original","orig","dest","isSameProtocol","pipeline","promisify","Stream","INTERNALS","Body","__name","body","size","boundary","isURLSearchParameters","Buffer","isBlob","types","FormData","formDataToBlob","stream","error_","error","FetchBaseError","FetchError","buffer","byteOffset","byteLength","consumeBody","ct","formData","parameters","name","value","toFormData","buf","fetch_blob_default","text","deprecate","data","accum","accumBytes","chunk","c","clone","instance","highWaterMark","p1","p2","PassThrough","getNonSpecFormDataBoundary","extractContentType","request","getTotalBytes","writeToStream","dest","types","http","validateHeaderName","http","name","error","validateHeaderValue","value","Headers","_Headers","__name","init","result","raw","values","types","method","pair","target","p","receiver","callback","thisArg","key","property","fromRawHeaders","headers","index","array","redirectStatus","isRedirect","__name","code","INTERNALS","Response","_Response","Body","__name","body","options","status","headers","Headers","contentType","extractContentType","clone","url","isRedirect","response","data","init","formatUrl","deprecate","getSearch","__name","parsedURL","lastOffset","hash","isIP","stripURLForUseAsAReferrer","url","originOnly","__name","ReferrerPolicy","DEFAULT_REFERRER_POLICY","validateReferrerPolicy","referrerPolicy","isOriginPotentiallyTrustworthy","hostIp","hostIPVersion","isIP","isUrlPotentiallyTrustworthy","determineRequestsReferrer","request","referrerURLCallback","referrerOriginCallback","policy","referrerSource","referrerURL","referrerOrigin","currentURL","parseReferrerPolicyFromHeader","headers","policyTokens","token","INTERNALS","isRequest","__name","object","doBadDataWarn","deprecate","Request","_Request","Body","input","init","parsedURL","method","inputBody","clone","headers","Headers","contentType","extractContentType","signal","isAbortSignal","referrer","parsedReferrer","formatUrl","referrerPolicy","validateReferrerPolicy","getNodeRequestOptions","request","contentLengthValue","totalBytes","getTotalBytes","DEFAULT_REFERRER_POLICY","determineRequestsReferrer","agent","search","getSearch","options","AbortError","FetchBaseError","__name","message","type","supportedSchemas","fetch","url","options_","resolve","reject","request","Request","parsedURL","options","getNodeRequestOptions","data","dist_default","response","Response","send","https","http","signal","abort","__name","error","AbortError","Stream","abortAndFinalize","finalize","request_","FetchError","fixResponseChunkedTransferBadEnding","s","endedWithEventsCount","hadError","response_","headers","fromRawHeaders","isRedirect","location","locationURL","requestOptions","Headers","clone","isDomainOrSubdomain","isSameProtocol","name","responseReferrerPolicy","parseReferrerPolicyFromHeader","body","pump","PassThrough","responseOptions","codings","zlibOptions","zlib","raw","chunk","writeToStream","errorCallback","LAST_CHUNK","Buffer","isChunkedTransfer","properLastChunkReceived","previousChunk","socket","onSocketClose","onData","buf"]}
|