UNPKG

@mann-conomy/vdf-utils

Version:

A Node.js utility library for parsing and converting objects in Valve's Data File (VDF) format.

55 lines 2.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const builder_1 = __importDefault(require("./builder")); const stack_1 = require("./stack"); const enums_1 = require("../resources/enums"); const utils_1 = require("../lib/utils"); class VDF { static parse(file) { const stack = new stack_1.PopulatedStack(); const result = stack.peek(); for (const line of (0, utils_1.getFileLines)(file)) { switch (line) { case enums_1.ObjectNotation.OpeningBrace: { const current = stack.peek(); const last = (0, utils_1.getLastKey)(current); const next = stack.new(); stack.update(last, next); stack.push(next); break; } case enums_1.ObjectNotation.ClosingBrace: stack.pop(); break; default: { const { key, value } = (0, utils_1.getObject)(line); stack.update(key, value); break; } } } if ((0, utils_1.isObjectEmpty)(result, enums_1.ObjectNotation.EmptyObject)) { throw new RangeError("The parsed VDF object is empty or invalid"); } return result; } static stringify(object, indentation = 0) { const builder = new builder_1.default(indentation); for (const [key, value] of Object.entries(object)) { if (Object.prototype.hasOwnProperty.call(object, key)) { if ((0, utils_1.isObject)(value)) { builder.newline(key, this.stringify(value, indentation + 1), true); } else { builder.newline(key, String(value), false); } } } return builder.toVdf(); } } exports.default = VDF; //# sourceMappingURL=vdf.js.map