UNPKG

@cosmology/ast

Version:
145 lines (144 loc) 5.61 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TypeLong = void 0; const t = __importStar(require("@babel/types")); exports.TypeLong = { propTypes: { bigint: "bigint", long: "Long", }, propIdentifiers: { bigint: t.identifier("bigint"), long: t.identifier("Long"), }, types: { bigint: "BigInt", long: "Long", }, identifiers: { bigint: t.identifier("BigInt"), long: t.identifier("Long"), }, fromStringArray: { bigint: t.callExpression(t.identifier("BigInt"), [t.identifier("e")]), long: t.callExpression(t.memberExpression(t.identifier("Long"), t.identifier("fromString")), [t.identifier("e")]), }, toStringArray: { bigint: t.callExpression(t.memberExpression(t.identifier("e"), t.identifier("toString")), []), long: t.identifier("e"), }, uzeroExpressions: { bigint: t.callExpression(t.identifier("BigInt"), [t.numericLiteral(0)]), long: t.memberExpression(t.identifier("Long"), t.identifier("UZERO")), }, zeroExpressions: { bigint: t.callExpression(t.identifier("BigInt"), [t.numericLiteral(0)]), long: t.memberExpression(t.identifier("Long"), t.identifier("ZERO")), }, fromValueExpressions: { bigint: t.identifier("BigInt"), long: t.memberExpression(t.identifier("Long"), t.identifier("fromValue")), }, fromNumberExpressions: { bigint: t.identifier("BigInt"), long: t.memberExpression(t.identifier("Long"), t.identifier("fromNumber")), }, fromStringExpressions: { bigint: t.identifier("BigInt"), long: t.memberExpression(t.identifier("Long"), t.identifier("fromString")), }, addUtil: (ctx) => { if (!ctx) { return; } const longLib = ctx.pluginValue("prototypes.typingsFormat.num64"); switch (longLib) { case "long": ctx.addUtil("Long"); break; } }, getPropType: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.propTypes); }, getType: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.types); }, getFromStringArray: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.fromStringArray); }, getToStringArray: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.toStringArray); }, getPropIdentifier: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.propIdentifiers); }, getIdentifier: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.identifiers); }, getUZero: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.uzeroExpressions); }, getZero: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.zeroExpressions); }, getFromValue: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.fromValueExpressions); }, getFromValueWithArgs: (ctx, arg) => { const longLib = ctx.pluginValue("prototypes.typingsFormat.num64"); const args = []; switch (longLib) { case "bigint": args.push(t.callExpression(t.memberExpression(arg, t.identifier("toString")), [])); break; case "long": args.push(arg); default: } return t.callExpression(exports.TypeLong.getFromValue(ctx), args); }, getFromNumber: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.fromNumberExpressions); }, getFromString: (ctx) => { return exports.TypeLong.getNode(ctx, exports.TypeLong.fromStringExpressions); }, getNode: (ctx, mappings) => { const longLib = ctx.pluginValue("prototypes.typingsFormat.num64"); return mappings[longLib] ?? mappings["long"]; }, getLongNotZero: (prop, ctx) => { const longLib = ctx.pluginValue("prototypes.typingsFormat.num64"); switch (longLib) { case "bigint": return t.binaryExpression("!==", t.memberExpression(t.identifier("message"), t.identifier(prop)), t.callExpression(t.identifier("BigInt"), [t.numericLiteral(0)])); case "long": default: return t.unaryExpression("!", t.callExpression(t.memberExpression(t.memberExpression(t.identifier("message"), t.identifier(prop)), t.identifier("isZero")), [])); } }, };