@chainsafe/eth2.0-utils
Version:
Utilities required across multiple lodestar packages
61 lines (45 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fromYaml = fromYaml;
var _sszTypeSchema = require("@chainsafe/ssz-type-schema");
var _bitUtils = require("@chainsafe/bit-utils");
var _bn = _interopRequireDefault(require("bn.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable @typescript-eslint/no-explicit-any */
function fromYaml(type, value) {
return _expandYamlValue((0, _sszTypeSchema.parseType)(type), value);
}
function _expandYamlValue(type, value) {
switch (type.type) {
case _sszTypeSchema.Type.uint:
switch (type.use) {
case _sszTypeSchema.UintImpl.bn:
return new _bn.default(value);
case _sszTypeSchema.UintImpl.bigint:
return BigInt(value);
case _sszTypeSchema.UintImpl.number:
return Number.isSafeInteger(Number(value)) ? Number(value) : Infinity;
}
break;
case _sszTypeSchema.Type.bool:
return value;
case _sszTypeSchema.Type.bitList:
return _bitUtils.BitList.deserialize(Buffer.from(value.slice(2), "hex"));
case _sszTypeSchema.Type.bitVector:
return _bitUtils.BitVector.fromBitfield(Buffer.from(value.slice(2), "hex"), type.length);
case _sszTypeSchema.Type.byteList:
case _sszTypeSchema.Type.byteVector:
return Buffer.from(value.slice(2), "hex");
case _sszTypeSchema.Type.list:
case _sszTypeSchema.Type.vector:
return value.map(element => _expandYamlValue(type.elementType, element));
case _sszTypeSchema.Type.container:
type.fields.forEach(([fieldName, fieldType]) => {
value[fieldName] = _expandYamlValue(fieldType, value[fieldName]);
});
return value;
}
}
//# sourceMappingURL=yaml.js.map