{"version":3,"file":"object-loader.mjs","names":["#dynamicFieldCache"],"sources":["../../src/utils/object-loader.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { BcsType } from '@mysten/bcs';\nimport { pureBcsSchemaFromTypeName } from '@mysten/sui/bcs';\nimport type { PureTypeName, ShapeFromPureTypeName } from '@mysten/sui/bcs';\nimport type { BaseClient, SuiClientTypes } from '@mysten/sui/client';\nimport { deriveDynamicFieldID } from '@mysten/sui/utils';\nimport DataLoader from 'dataloader';\nimport { Field } from './bcs.js';\n\nexport class SuiObjectDataLoader extends DataLoader<\n\tstring,\n\tSuiClientTypes.Object<{ content: true }>\n> {\n\t#dynamicFieldCache = new Map<string, Map<string, SuiClientTypes.Object<{ content: true }>>>();\n\tconstructor(suiClient: BaseClient) {\n\t\tsuper(async (ids: readonly string[]) => {\n\t\t\tconst { objects } = await suiClient.core.getObjects({\n\t\t\t\tobjectIds: ids as string[],\n\t\t\t\tinclude: { content: true },\n\t\t\t});\n\n\t\t\treturn objects;\n\t\t});\n\t}\n\n\toverride async load<T = SuiClientTypes.Object<{ content: true }>>(\n\t\tid: string,\n\t\tschema?: BcsType<T, any>,\n\t): Promise<T> {\n\t\tconst data = await super.load(id);\n\n\t\tif (schema) {\n\t\t\treturn schema.parse(data.content);\n\t\t}\n\n\t\treturn data as T;\n\t}\n\n\toverride async loadMany<T = SuiClientTypes.Object<{ content: true }>>(\n\t\tids: string[],\n\t\tschema?: BcsType<T, any>,\n\t): Promise<(T | Error)[]> {\n\t\tconst data = await super.loadMany(ids);\n\n\t\tif (!schema) {\n\t\t\treturn data as (T | Error)[];\n\t\t}\n\n\t\treturn data.map((d) => {\n\t\t\tif (d instanceof Error) {\n\t\t\t\treturn d;\n\t\t\t}\n\n\t\t\treturn schema.parse(d.content);\n\t\t});\n\t}\n\n\tasync loadManyOrThrow<T>(ids: string[], schema: BcsType<T, any>): Promise<T[]> {\n\t\tconst data = await this.loadMany(ids, schema);\n\n\t\tfor (const d of data) {\n\t\t\tif (d instanceof Error) {\n\t\t\t\tthrow d;\n\t\t\t}\n\t\t}\n\n\t\treturn data as T[];\n\t}\n\n\toverride clearAll() {\n\t\tthis.#dynamicFieldCache.clear();\n\t\treturn super.clearAll();\n\t}\n\n\toverride clear(key: string) {\n\t\tthis.#dynamicFieldCache.delete(key);\n\t\treturn super.clear(key);\n\t}\n\n\tasync loadFieldObject<K extends PureTypeName, T>(\n\t\tparent: string,\n\t\tname: {\n\t\t\ttype: K;\n\t\t\tvalue: ShapeFromPureTypeName<K>;\n\t\t},\n\t\ttype: BcsType<T, any>,\n\t): Promise<T> {\n\t\tconst schema = pureBcsSchemaFromTypeName<K>(name.type as never);\n\t\tconst id = deriveDynamicFieldID(parent, 'u64', schema.serialize(name.value).toBytes());\n\n\t\treturn (await this.load(id, Field(schema, type))).value;\n\t}\n}\n"],"mappings":";;;;;;AAWA,IAAa,sBAAb,cAAyC,WAGvC;CACD,qCAAqB,IAAI,KAAoE;CAC7F,YAAY,WAAuB;AAClC,QAAM,OAAO,QAA2B;GACvC,MAAM,EAAE,YAAY,MAAM,UAAU,KAAK,WAAW;IACnD,WAAW;IACX,SAAS,EAAE,SAAS,MAAM;IAC1B,CAAC;AAEF,UAAO;IACN;;CAGH,MAAe,KACd,IACA,QACa;EACb,MAAM,OAAO,MAAM,MAAM,KAAK,GAAG;AAEjC,MAAI,OACH,QAAO,OAAO,MAAM,KAAK,QAAQ;AAGlC,SAAO;;CAGR,MAAe,SACd,KACA,QACyB;EACzB,MAAM,OAAO,MAAM,MAAM,SAAS,IAAI;AAEtC,MAAI,CAAC,OACJ,QAAO;AAGR,SAAO,KAAK,KAAK,MAAM;AACtB,OAAI,aAAa,MAChB,QAAO;AAGR,UAAO,OAAO,MAAM,EAAE,QAAQ;IAC7B;;CAGH,MAAM,gBAAmB,KAAe,QAAuC;EAC9E,MAAM,OAAO,MAAM,KAAK,SAAS,KAAK,OAAO;AAE7C,OAAK,MAAM,KAAK,KACf,KAAI,aAAa,MAChB,OAAM;AAIR,SAAO;;CAGR,AAAS,WAAW;AACnB,QAAKA,kBAAmB,OAAO;AAC/B,SAAO,MAAM,UAAU;;CAGxB,AAAS,MAAM,KAAa;AAC3B,QAAKA,kBAAmB,OAAO,IAAI;AACnC,SAAO,MAAM,MAAM,IAAI;;CAGxB,MAAM,gBACL,QACA,MAIA,MACa;EACb,MAAM,SAAS,0BAA6B,KAAK,KAAc;EAC/D,MAAM,KAAK,qBAAqB,QAAQ,OAAO,OAAO,UAAU,KAAK,MAAM,CAAC,SAAS,CAAC;AAEtF,UAAQ,MAAM,KAAK,KAAK,IAAI,MAAM,QAAQ,KAAK,CAAC,EAAE"}