PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-sui/dist/src/lib/mystenlab/builder

Просмотр файла: serializer.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isTxContext = isTxContext;
exports.getPureSerializationType = getPureSerializationType;
const types_1 = require("../types");
const STD_ASCII_MODULE_NAME = 'ascii';
const STD_ASCII_STRUCT_NAME = 'String';
const STD_UTF8_MODULE_NAME = 'string';
const STD_UTF8_STRUCT_NAME = 'String';
const STD_OPTION_MODULE_NAME = 'option';
const STD_OPTION_STRUCT_NAME = 'Option';
const RESOLVED_SUI_ID = {
    address: types_1.SUI_FRAMEWORK_ADDRESS,
    module: types_1.OBJECT_MODULE_NAME,
    name: types_1.ID_STRUCT_NAME,
};
const RESOLVED_ASCII_STR = {
    address: types_1.MOVE_STDLIB_ADDRESS,
    module: STD_ASCII_MODULE_NAME,
    name: STD_ASCII_STRUCT_NAME,
};
const RESOLVED_UTF8_STR = {
    address: types_1.MOVE_STDLIB_ADDRESS,
    module: STD_UTF8_MODULE_NAME,
    name: STD_UTF8_STRUCT_NAME,
};
const RESOLVED_STD_OPTION = {
    address: types_1.MOVE_STDLIB_ADDRESS,
    module: STD_OPTION_MODULE_NAME,
    name: STD_OPTION_STRUCT_NAME,
};
const isSameStruct = (a, b) => a.address === b.address && a.module === b.module && a.name === b.name;
function isTxContext(param) {
    const struct = (0, types_1.extractStructTag)(param)?.Struct;
    return struct?.address === '0x2' && struct?.module === 'tx_context' && struct?.name === 'TxContext';
}
function expectType(typeName, argVal) {
    if (typeof argVal === 'undefined') {
        return;
    }
    if (typeof argVal !== typeName) {
        throw new Error(`Expect ${argVal} to be ${typeName}, received ${typeof argVal}`);
    }
}
const allowedTypes = ['Address', 'Bool', 'U8', 'U16', 'U32', 'U64', 'U128', 'U256'];
function getPureSerializationType(normalizedType, argVal) {
    if (typeof normalizedType === 'string' && allowedTypes.includes(normalizedType)) {
        if (normalizedType in ['U8', 'U16', 'U32', 'U64', 'U128', 'U256']) {
            expectType('number', argVal);
        }
        else if (normalizedType === 'Bool') {
            expectType('boolean', argVal);
        }
        else if (normalizedType === 'Address') {
            expectType('string', argVal);
            if (argVal && !(0, types_1.isValidSuiAddress)(argVal)) {
                throw new Error('Invalid Sui Address');
            }
        }
        return normalizedType.toLowerCase();
    }
    else if (typeof normalizedType === 'string') {
        throw new Error(`Unknown pure normalized type ${JSON.stringify(normalizedType, null, 2)}`);
    }
    if ('Vector' in normalizedType) {
        if ((argVal === undefined || typeof argVal === 'string') && normalizedType.Vector === 'U8') {
            return 'string';
        }
        if (argVal !== undefined && !Array.isArray(argVal)) {
            throw new Error(`Expect ${argVal} to be a array, received ${typeof argVal}`);
        }
        const innerType = getPureSerializationType(normalizedType.Vector, 
        // undefined when argVal is empty
        argVal ? argVal[0] : undefined);
        if (innerType === undefined) {
            return;
        }
        return `vector<${innerType}>`;
    }
    if ('Struct' in normalizedType) {
        if (isSameStruct(normalizedType.Struct, RESOLVED_ASCII_STR)) {
            return 'string';
        }
        else if (isSameStruct(normalizedType.Struct, RESOLVED_UTF8_STR)) {
            return 'utf8string';
        }
        else if (isSameStruct(normalizedType.Struct, RESOLVED_SUI_ID)) {
            return 'address';
        }
        else if (isSameStruct(normalizedType.Struct, RESOLVED_STD_OPTION)) {
            const optionToVec = {
                Vector: normalizedType.Struct.typeArguments[0],
            };
            return getPureSerializationType(optionToVec, argVal);
        }
    }
    return undefined;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbXlzdGVubGFiL2J1aWxkZXIvc2VyaWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRDQSxrQ0FHQztBQWFELDREQTBEQztBQXRIRCxvQ0FTa0I7QUFFbEIsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUM7QUFDdEMsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUM7QUFFdkMsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUM7QUFDdEMsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUM7QUFFdEMsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLENBQUM7QUFDeEMsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLENBQUM7QUFFeEMsTUFBTSxlQUFlLEdBQUc7SUFDdEIsT0FBTyxFQUFFLDZCQUFxQjtJQUM5QixNQUFNLEVBQUUsMEJBQWtCO0lBQzFCLElBQUksRUFBRSxzQkFBYztDQUNyQixDQUFDO0FBQ0YsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixPQUFPLEVBQUUsMkJBQW1CO0lBQzVCLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsSUFBSSxFQUFFLHFCQUFxQjtDQUM1QixDQUFDO0FBQ0YsTUFBTSxpQkFBaUIsR0FBRztJQUN4QixPQUFPLEVBQUUsMkJBQW1CO0lBQzVCLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsSUFBSSxFQUFFLG9CQUFvQjtDQUMzQixDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixPQUFPLEVBQUUsMkJBQW1CO0lBQzVCLE1BQU0sRUFBRSxzQkFBc0I7SUFDOUIsSUFBSSxFQUFFLHNCQUFzQjtDQUM3QixDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FB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QUFDLENBQUMsU0FBUyxDQUMvQixDQUFDO1FBRUYsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLFVBQVUsU0FBUyxHQUFHLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksUUFBUSxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQy9CLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQzVELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7YUFBTSxJQUFJLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUNsRSxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO2FBQU0sSUFBSSxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7YUFBTSxJQUFJLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUNwRSxNQUFNLFdBQVcsR0FBMEI7Z0JBQ3pDLE1BQU0sRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDL0MsQ0FBQztZQUNGLE9BQU8sd0JBQXdCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGV4dHJhY3RTdHJ1Y3RUYWcsXG4gIElEX1NUUlVDVF9OQU1FLFxuICBpc1ZhbGlkU3VpQWRkcmVzcyxcbiAgTU9WRV9TVERMSUJfQUREUkVTUyxcbiAgT0JKRUNUX01PRFVMRV9OQU1FLFxuICBTdWlKc29uVmFsdWUsXG4gIFN1aU1vdmVOb3JtYWxpemVkVHlwZSxcbiAgU1VJX0ZSQU1FV09SS19BRERSRVNTLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IFNURF9BU0NJSV9NT0RVTEVfTkFNRSA9ICdhc2NpaSc7XG5jb25zdCBTVERfQVNDSUlfU1RSVUNUX05BTUUgPSAnU3RyaW5nJztcblxuY29uc3QgU1REX1VURjhfTU9EVUxFX05BTUUgPSAnc3RyaW5nJztcbmNvbnN0IFNURF9VVEY4X1NUUlVDVF9OQU1FID0gJ1N0cmluZyc7XG5cbmNvbnN0IFNURF9PUFRJT05fTU9EVUxFX05BTUUgPSAnb3B0aW9uJztcbmNvbnN0IFNURF9PUFRJT05fU1RSVUNUX05BTUUgPSAnT3B0aW9uJztcblxuY29uc3QgUkVTT0xWRURfU1VJX0lEID0ge1xuICBhZGRyZXNzOiBTVUlfRlJBTUVXT1JLX0FERFJFU1MsXG4gIG1vZHVsZTogT0JKRUNUX01PRFVMRV9OQU1FLFxuICBuYW1lOiBJRF9TVFJVQ1RfTkFNRSxcbn07XG5jb25zdCBSRVNPTFZFRF9BU0NJSV9TVFIgPSB7XG4gIGFkZHJlc3M6IE1PVkVfU1RETElCX0FERFJFU1MsXG4gIG1vZHVsZTogU1REX0FTQ0lJX01PRFVMRV9OQU1FLFxuICBuYW1lOiBTVERfQVNDSUlfU1RSVUNUX05BTUUsXG59O1xuY29uc3QgUkVTT0xWRURfVVRGOF9TVFIgPSB7XG4gIGFkZHJlc3M6IE1PVkVfU1RETElCX0FERFJFU1MsXG4gIG1vZHVsZTogU1REX1VURjhfTU9EVUxFX05BTUUsXG4gIG5hbWU6IFNURF9VVEY4X1NUUlVDVF9OQU1FLFxufTtcblxuY29uc3QgUkVTT0xWRURfU1REX09QVElPTiA9IHtcbiAgYWRkcmVzczogTU9WRV9TVERMSUJfQUREUkVTUyxcbiAgbW9kdWxlOiBTVERfT1BUSU9OX01PRFVMRV9OQU1FLFxuICBuYW1lOiBTVERfT1BUSU9OX1NUUlVDVF9OQU1FLFxufTtcblxuY29uc3QgaXNTYW1lU3RydWN0ID0gKGE6IGFueSwgYjogYW55KSA9PiBhLmFkZHJlc3MgPT09IGIuYWRkcmVzcyAmJiBhLm1vZHVsZSA9PT0gYi5tb2R1bGUgJiYgYS5uYW1lID09PSBiLm5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R4Q29udGV4dChwYXJhbTogU3VpTW92ZU5vcm1hbGl6ZWRUeXBlKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cnVjdCA9IGV4dHJhY3RTdHJ1Y3RUYWcocGFyYW0pPy5TdHJ1Y3Q7XG4gIHJldHVybiBzdHJ1Y3Q/LmFkZHJlc3MgPT09ICcweDInICYmIHN0cnVjdD8ubW9kdWxlID09PSAndHhfY29udGV4dCcgJiYgc3RydWN0Py5uYW1lID09PSAnVHhDb250ZXh0Jztcbn1cblxuZnVuY3Rpb24gZXhwZWN0VHlwZSh0eXBlTmFtZTogc3RyaW5nLCBhcmdWYWw/OiBTdWlKc29uVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBhcmdWYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0eXBlb2YgYXJnVmFsICE9PSB0eXBlTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ICR7YXJnVmFsfSB0byBiZSAke3R5cGVOYW1lfSwgcmVjZWl2ZWQgJHt0eXBlb2YgYXJnVmFsfWApO1xuICB9XG59XG5cbmNvbnN0IGFsbG93ZWRUeXBlcyA9IFsnQWRkcmVzcycsICdCb29sJywgJ1U4JywgJ1UxNicsICdVMzInLCAnVTY0JywgJ1UxMjgnLCAnVTI1NiddO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVyZVNlcmlhbGl6YXRpb25UeXBlKFxuICBub3JtYWxpemVkVHlwZTogU3VpTW92ZU5vcm1hbGl6ZWRUeXBlLFxuICBhcmdWYWw6IFN1aUpzb25WYWx1ZSB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBub3JtYWxpemVkVHlwZSA9PT0gJ3N0cmluZycgJiYgYWxsb3dlZFR5cGVzLmluY2x1ZGVzKG5vcm1hbGl6ZWRUeXBlKSkge1xuICAgIGlmIChub3JtYWxpemVkVHlwZSBpbiBbJ1U4JywgJ1UxNicsICdVMzInLCAnVTY0JywgJ1UxMjgnLCAnVTI1NiddKSB7XG4gICAgICBleHBlY3RUeXBlKCdudW1iZXInLCBhcmdWYWwpO1xuICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZFR5cGUgPT09ICdCb29sJykge1xuICAgICAgZXhwZWN0VHlwZSgnYm9vbGVhbicsIGFyZ1ZhbCk7XG4gICAgfSBlbHNlIGlmIChub3JtYWxpemVkVHlwZSA9PT0gJ0FkZHJlc3MnKSB7XG4gICAgICBleHBlY3RUeXBlKCdzdHJpbmcnLCBhcmdWYWwpO1xuICAgICAgaWYgKGFyZ1ZhbCAmJiAhaXNWYWxpZFN1aUFkZHJlc3MoYXJnVmFsIGFzIHN0cmluZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFN1aSBBZGRyZXNzJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub3JtYWxpemVkVHlwZS50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBub3JtYWxpemVkVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHVyZSBub3JtYWxpemVkIHR5cGUgJHtKU09OLnN0cmluZ2lmeShub3JtYWxpemVkVHlwZSwgbnVsbCwgMil9YCk7XG4gIH1cblxuICBpZiAoJ1ZlY3RvcicgaW4gbm9ybWFsaXplZFR5cGUpIHtcbiAgICBpZiAoKGFyZ1ZhbCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBhcmdWYWwgPT09ICdzdHJpbmcnKSAmJiBub3JtYWxpemVkVHlwZS5WZWN0b3IgPT09ICdVOCcpIHtcbiAgICAgIHJldHVybiAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBpZiAoYXJnVmFsICE9PSB1bmRlZmluZWQgJiYgIUFycmF5LmlzQXJyYXkoYXJnVmFsKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3QgJHthcmdWYWx9IHRvIGJlIGEgYXJyYXksIHJlY2VpdmVkICR7dHlwZW9mIGFyZ1ZhbH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbm5lclR5cGUgPSBnZXRQdXJlU2VyaWFsaXphdGlvblR5cGUoXG4gICAgICBub3JtYWxpemVkVHlwZS5WZWN0b3IsXG4gICAgICAvLyB1bmRlZmluZWQgd2hlbiBhcmdWYWwgaXMgZW1wdHlcbiAgICAgIGFyZ1ZhbCA/IGFyZ1ZhbFswXSA6IHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICBpZiAoaW5uZXJUeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gYHZlY3Rvcjwke2lubmVyVHlwZX0+YDtcbiAgfVxuXG4gIGlmICgnU3RydWN0JyBpbiBub3JtYWxpemVkVHlwZSkge1xuICAgIGlmIChpc1NhbWVTdHJ1Y3Qobm9ybWFsaXplZFR5cGUuU3RydWN0LCBSRVNPTFZFRF9BU0NJSV9TVFIpKSB7XG4gICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgfSBlbHNlIGlmIChpc1NhbWVTdHJ1Y3Qobm9ybWFsaXplZFR5cGUuU3RydWN0LCBSRVNPTFZFRF9VVEY4X1NUUikpIHtcbiAgICAgIHJldHVybiAndXRmOHN0cmluZyc7XG4gICAgfSBlbHNlIGlmIChpc1NhbWVTdHJ1Y3Qobm9ybWFsaXplZFR5cGUuU3RydWN0LCBSRVNPTFZFRF9TVUlfSUQpKSB7XG4gICAgICByZXR1cm4gJ2FkZHJlc3MnO1xuICAgIH0gZWxzZSBpZiAoaXNTYW1lU3RydWN0KG5vcm1hbGl6ZWRUeXBlLlN0cnVjdCwgUkVTT0xWRURfU1REX09QVElPTikpIHtcbiAgICAgIGNvbnN0IG9wdGlvblRvVmVjOiBTdWlNb3ZlTm9ybWFsaXplZFR5cGUgPSB7XG4gICAgICAgIFZlY3Rvcjogbm9ybWFsaXplZFR5cGUuU3RydWN0LnR5cGVBcmd1bWVudHNbMF0sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGdldFB1cmVTZXJpYWxpemF0aW9uVHlwZShvcHRpb25Ub1ZlYywgYXJnVmFsKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19

Выполнить команду


Для локальной разработки. Не используйте в интернете!