Spaces:
Runtime error
Runtime error
| ; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.getStaticJSONValue = exports.isUndefinedIdentifier = exports.isNumberIdentifier = exports.isExpression = void 0; | |
| function isExpression(node) { | |
| if (node.type === "JSONIdentifier" || node.type === "JSONLiteral") { | |
| const parent = node.parent; | |
| if (parent.type === "JSONProperty" && parent.key === node) { | |
| return false; | |
| } | |
| return true; | |
| } | |
| if (node.type === "JSONObjectExpression" || | |
| node.type === "JSONArrayExpression" || | |
| node.type === "JSONUnaryExpression" || | |
| node.type === "JSONTemplateLiteral") { | |
| return true; | |
| } | |
| return false; | |
| } | |
| exports.isExpression = isExpression; | |
| function isNumberIdentifier(node) { | |
| return (isExpression(node) && (node.name === "Infinity" || node.name === "NaN")); | |
| } | |
| exports.isNumberIdentifier = isNumberIdentifier; | |
| function isUndefinedIdentifier(node) { | |
| return isExpression(node) && node.name === "undefined"; | |
| } | |
| exports.isUndefinedIdentifier = isUndefinedIdentifier; | |
| const resolver = { | |
| Program(node) { | |
| if (node.body.length !== 1 || | |
| node.body[0].type !== "JSONExpressionStatement") { | |
| throw new Error("Illegal argument"); | |
| } | |
| return getStaticJSONValue(node.body[0]); | |
| }, | |
| JSONExpressionStatement(node) { | |
| return getStaticJSONValue(node.expression); | |
| }, | |
| JSONObjectExpression(node) { | |
| const object = {}; | |
| for (const prop of node.properties) { | |
| Object.assign(object, getStaticJSONValue(prop)); | |
| } | |
| return object; | |
| }, | |
| JSONProperty(node) { | |
| const keyName = node.key.type === "JSONLiteral" | |
| ? `${node.key.value}` | |
| : node.key.name; | |
| return { | |
| [keyName]: getStaticJSONValue(node.value), | |
| }; | |
| }, | |
| JSONArrayExpression(node) { | |
| const array = []; | |
| for (let index = 0; index < node.elements.length; index++) { | |
| const element = node.elements[index]; | |
| if (element) { | |
| array[index] = getStaticJSONValue(element); | |
| } | |
| } | |
| return array; | |
| }, | |
| JSONLiteral(node) { | |
| if (node.regex) { | |
| try { | |
| return new RegExp(node.regex.pattern, node.regex.flags); | |
| } | |
| catch (_a) { | |
| return `/${node.regex.pattern}/${node.regex.flags}`; | |
| } | |
| } | |
| if (node.bigint != null) { | |
| try { | |
| return BigInt(node.bigint); | |
| } | |
| catch (_b) { | |
| return `${node.bigint}`; | |
| } | |
| } | |
| return node.value; | |
| }, | |
| JSONUnaryExpression(node) { | |
| const value = getStaticJSONValue(node.argument); | |
| return node.operator === "-" ? -value : value; | |
| }, | |
| JSONIdentifier(node) { | |
| if (node.name === "Infinity") { | |
| return Infinity; | |
| } | |
| if (node.name === "NaN") { | |
| return NaN; | |
| } | |
| if (node.name === "undefined") { | |
| return undefined; | |
| } | |
| throw new Error("Illegal argument"); | |
| }, | |
| JSONTemplateLiteral(node) { | |
| return getStaticJSONValue(node.quasis[0]); | |
| }, | |
| JSONTemplateElement(node) { | |
| return node.value.cooked; | |
| }, | |
| }; | |
| function getStaticJSONValue(node) { | |
| return resolver[node.type](node); | |
| } | |
| exports.getStaticJSONValue = getStaticJSONValue; | |