@mysten/sui
Version:
Sui TypeScript API(Work in Progress)
101 lines (100 loc) • 3.56 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var core_exports = {};
__export(core_exports, {
Experimental_CoreClient: () => Experimental_CoreClient
});
module.exports = __toCommonJS(core_exports);
var import_type_tag_serializer = require("../bcs/type-tag-serializer.js");
var import_dynamic_fields = require("../utils/dynamic-fields.js");
var import_sui_types = require("../utils/sui-types.js");
var import_client = require("./client.js");
class Experimental_CoreClient extends import_client.Experimental_BaseClient {
constructor() {
super(...arguments);
this.core = this;
}
async getObject(options) {
const { objectId } = options;
const {
objects: [result]
} = await this.getObjects({ objectIds: [objectId], signal: options.signal });
if (result instanceof Error) {
throw result;
}
return { object: result };
}
async getDynamicField(options) {
const fieldId = (0, import_dynamic_fields.deriveDynamicFieldID)(
options.parentId,
import_type_tag_serializer.TypeTagSerializer.parseFromStr(options.name.type),
options.name.bcs
);
const {
objects: [fieldObject]
} = await this.getObjects({
objectIds: [fieldId],
signal: options.signal
});
if (fieldObject instanceof Error) {
throw fieldObject;
}
const fieldType = (0, import_sui_types.parseStructTag)(fieldObject.type);
return {
dynamicField: {
id: fieldObject.id,
digest: fieldObject.digest,
version: fieldObject.version,
type: fieldObject.type,
name: {
type: typeof fieldType.typeParams[0] === "string" ? fieldType.typeParams[0] : (0, import_sui_types.normalizeStructTag)(fieldType.typeParams[0]),
bcs: options.name.bcs
},
value: {
type: typeof fieldType.typeParams[1] === "string" ? fieldType.typeParams[1] : (0, import_sui_types.normalizeStructTag)(fieldType.typeParams[1]),
bcs: fieldObject.content.slice(import_sui_types.SUI_ADDRESS_LENGTH + options.name.bcs.length)
}
}
};
}
async waitForTransaction({
signal,
timeout = 60 * 1e3,
...input
}) {
const abortSignal = signal ? AbortSignal.any([AbortSignal.timeout(timeout), signal]) : AbortSignal.timeout(timeout);
const abortPromise = new Promise((_, reject) => {
abortSignal.addEventListener("abort", () => reject(abortSignal.reason));
});
abortPromise.catch(() => {
});
while (true) {
abortSignal.throwIfAborted();
try {
return await this.getTransaction({
...input,
signal: abortSignal
});
} catch (e) {
await Promise.race([new Promise((resolve) => setTimeout(resolve, 2e3)), abortPromise]);
}
}
}
}
//# sourceMappingURL=core.js.map
;