{"version":3,"file":"client-utils.mjs","names":[],"sources":["../../src/query/client-utils.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClientTypes } from '@mysten/sui/client';\nimport { isSuiGraphQLClient } from '@mysten/sui/graphql';\n\nimport type { ObjectWithDisplay } from '../types/kiosk.js';\nimport type { KioskCompatibleClient } from '../types/index.js';\n\nconst DEFAULT_QUERY_LIMIT = 50;\nconst MAX_EVENT_QUERY_PAGES = 10;\n\nexport async function getAllObjects(\n\tclient: KioskCompatibleClient,\n\tids: string[],\n): Promise<ObjectWithDisplay[]> {\n\tif (ids.length === 0) return [];\n\n\tconst { objects } = await client.core.getObjects({\n\t\tobjectIds: ids,\n\t\tinclude: {\n\t\t\tcontent: true,\n\t\t\tpreviousTransaction: true,\n\t\t\tdisplay: true,\n\t\t},\n\t});\n\n\treturn objects\n\t\t.filter(\n\t\t\t(\n\t\t\t\tobject,\n\t\t\t): object is SuiClientTypes.Object<{\n\t\t\t\tcontent: true;\n\t\t\t\tpreviousTransaction: true;\n\t\t\t\tdisplay: true;\n\t\t\t}> => !(object instanceof Error),\n\t\t)\n\t\t.map((object) => ({\n\t\t\t...object,\n\t\t\tpreviousTransaction: object.previousTransaction ?? null,\n\t\t\tdisplay: object.display\n\t\t\t\t? {\n\t\t\t\t\t\tdata: object.display.output,\n\t\t\t\t\t\terror: object.display.errors ? JSON.stringify(object.display.errors) : null,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t}));\n}\n\nexport async function queryEvents(\n\tclient: KioskCompatibleClient,\n\teventType: string,\n): Promise<{ json: unknown }[]> {\n\t// Preserve the windows returned by the previously transport-specific implementations.\n\tconst order = isSuiGraphQLClient(client) ? 'ascending' : 'descending';\n\tconst events: SuiClientTypes.EventEntry[] = [];\n\tlet cursor: string | null = null;\n\n\t// gRPC can return empty scan-limited pages. Continue through a bounded number of those pages\n\t// while preserving the 50-event window returned by the previous transport-specific queries.\n\tfor (let pageCount = 0; pageCount < MAX_EVENT_QUERY_PAGES; pageCount++) {\n\t\tconst remaining = DEFAULT_QUERY_LIMIT - events.length;\n\t\tconst page = await client.core.listEvents({\n\t\t\tfilter: { eventType },\n\t\t\tlimit: remaining,\n\t\t\torder,\n\t\t\t...(cursor ? (order === 'descending' ? { before: cursor } : { after: cursor }) : {}),\n\t\t});\n\n\t\tevents.push(...page.events.slice(0, remaining));\n\t\tif (!page.hasNextPage || events.length === DEFAULT_QUERY_LIMIT) break;\n\n\t\tif (!page.endCursor || page.endCursor === cursor) {\n\t\t\tthrow new Error('Event query did not return a cursor for the next page');\n\t\t}\n\t\tcursor = page.endCursor;\n\t}\n\n\treturn events.map((event) => ({ json: event.json }));\n}\n"],"mappings":";;;AASA,MAAM,sBAAsB;AAC5B,MAAM,wBAAwB;AAE9B,eAAsB,cACrB,QACA,KAC+B;AAC/B,KAAI,IAAI,WAAW,EAAG,QAAO,EAAE;CAE/B,MAAM,EAAE,YAAY,MAAM,OAAO,KAAK,WAAW;EAChD,WAAW;EACX,SAAS;GACR,SAAS;GACT,qBAAqB;GACrB,SAAS;GACT;EACD,CAAC;AAEF,QAAO,QACL,QAEC,WAKK,EAAE,kBAAkB,OAC1B,CACA,KAAK,YAAY;EACjB,GAAG;EACH,qBAAqB,OAAO,uBAAuB;EACnD,SAAS,OAAO,UACb;GACA,MAAM,OAAO,QAAQ;GACrB,OAAO,OAAO,QAAQ,SAAS,KAAK,UAAU,OAAO,QAAQ,OAAO,GAAG;GACvE,GACA;EACH,EAAE;;AAGL,eAAsB,YACrB,QACA,WAC+B;CAE/B,MAAM,QAAQ,mBAAmB,OAAO,GAAG,cAAc;CACzD,MAAM,SAAsC,EAAE;CAC9C,IAAI,SAAwB;AAI5B,MAAK,IAAI,YAAY,GAAG,YAAY,uBAAuB,aAAa;EACvE,MAAM,YAAY,sBAAsB,OAAO;EAC/C,MAAM,OAAO,MAAM,OAAO,KAAK,WAAW;GACzC,QAAQ,EAAE,WAAW;GACrB,OAAO;GACP;GACA,GAAI,SAAU,UAAU,eAAe,EAAE,QAAQ,QAAQ,GAAG,EAAE,OAAO,QAAQ,GAAI,EAAE;GACnF,CAAC;AAEF,SAAO,KAAK,GAAG,KAAK,OAAO,MAAM,GAAG,UAAU,CAAC;AAC/C,MAAI,CAAC,KAAK,eAAe,OAAO,WAAW,oBAAqB;AAEhE,MAAI,CAAC,KAAK,aAAa,KAAK,cAAc,OACzC,OAAM,IAAI,MAAM,wDAAwD;AAEzE,WAAS,KAAK;;AAGf,QAAO,OAAO,KAAK,WAAW,EAAE,MAAM,MAAM,MAAM,EAAE"}