@tezwell/michelson-sdk
Version:
Michelson SDK is a framework for generating Michelson values and types from Javascript.
116 lines (113 loc) • 3.57 kB
JavaScript
// src/misc/guards.ts
var isPrim = (michelson) => "prim" in michelson;
var isInt = (michelson) => "int" in michelson;
var isString = (michelson) => "string" in michelson;
var isBytes = (michelson) => "bytes" in michelson;
var Guards = {
isPrim,
isInt,
isString,
isBytes
};
var guards_default = Guards;
// src/converter/json.ts
var toMichelineType = (michelson) => {
var _a;
const args = ((_a = michelson.args) == null ? void 0 : _a.map((m) => toMicheline(m, ""))) || [];
const annot = michelson.annots || [];
if (args.length || annot.length) {
return `(${[michelson.prim, ...annot, ...args].join(" ")})`;
}
return michelson.prim;
};
var toMichelineSeq = (michelson, identation) => {
const innerIdentation = identation + " ".repeat(2);
return `${identation ? `
${identation}` : identation}{
${michelson.map((m) => toMicheline(m, innerIdentation)).join(`
`)}
${identation}}`;
};
var toMicheline = (michelson, padding = "") => {
var _a;
if (Array.isArray(michelson)) {
return toMichelineSeq(michelson, padding);
}
if (guards_default.isInt(michelson)) {
return michelson.int;
}
if (guards_default.isString(michelson)) {
return `"${michelson.string}"`;
}
if (guards_default.isBytes(michelson)) {
return michelson.bytes;
}
const prim = michelson.prim;
const args = michelson.args || [];
switch (michelson.prim) {
case "storage" /* storage */:
case "parameter" /* parameter */:
return `${padding}${prim} ${args.map(toMichelineType).join("")};`;
case "code" /* code */:
return `${padding}${prim} ${toMicheline(((_a = michelson.args) == null ? void 0 : _a[0]) || [], padding).trim()};`;
case "unit" /* unit */:
case "nat" /* nat */:
case "int" /* int */:
case "mutez" /* mutez */:
case "timestamp" /* timestamp */:
case "string" /* string */:
case "address" /* address */:
case "bytes" /* bytes */:
case "chain_id" /* chain_id */:
case "bool" /* bool */:
case "bls12_381_fr" /* bls12_381_fr */:
case "bls12_381_g1" /* bls12_381_g1 */:
case "bls12_381_g2" /* bls12_381_g2 */:
case "key" /* key */:
case "key_hash" /* key_hash */:
case "signature" /* signature */:
case "operation" /* operation */:
case "never" /* never */:
case "list" /* list */:
case "set" /* set */:
case "option" /* option */:
case "pair" /* pair */:
case "or" /* or */:
case "map" /* map */:
case "big_map" /* big_map */:
case "lambda" /* lambda */:
case "ticket" /* ticket */:
case "contract" /* contract */:
case "sapling_state" /* sapling_state */:
case "sapling_transaction" /* sapling_transaction */:
return toMichelineType(michelson);
case "None" /* None */:
case "True" /* True */:
case "False" /* False */:
case "Unit" /* Unit */:
return prim;
case "Some" /* Some */:
case "Pair" /* Pair */:
case "Left" /* Left */:
case "Right" /* Right */:
return `(${[prim, ...(args == null ? void 0 : args.map((m) => toMicheline(m, padding))) || []].join(" ")})`;
default:
return `${padding}${[prim, ...(args == null ? void 0 : args.map((m) => toMicheline(m, padding))) || []].join(" ")};`;
}
};
var Michelson_JSON = {
toMichelineType,
toMichelineSeq,
toMicheline
};
var json_default = Michelson_JSON;
// src/converter/index.ts
var michelineOfJSON = (json) => json_default.toMicheline(json, "");
var Converter = {
michelineOfJSON
};
var converter_default = Converter;
export {
converter_default as default,
michelineOfJSON
};