piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
1,131 lines (1,126 loc) • 2.67 MB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all3) => {
for (var name2 in all3)
__defProp(target, name2, { get: all3[name2], enumerable: true });
};
var __copyProps = (to, from2, except, desc) => {
if (from2 && typeof from2 === "object" || typeof from2 === "function") {
for (let key of __getOwnPropNames(from2))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// ../../../node_modules/jju/lib/unicode.js
var require_unicode = __commonJS({
"../../../node_modules/jju/lib/unicode.js"(exports2, module2) {
var Uni = module2.exports;
module2.exports.isWhiteSpace = function isWhiteSpace(x) {
return x === " " || x === "\xA0" || x === "\uFEFF" || x >= " " && x <= "\r" || x === "\u1680" || x >= "\u2000" && x <= "\u200A" || x === "\u2028" || x === "\u2029" || x === "\u202F" || x === "\u205F" || x === "\u3000";
};
module2.exports.isWhiteSpaceJSON = function isWhiteSpaceJSON(x) {
return x === " " || x === " " || x === "\n" || x === "\r";
};
module2.exports.isLineTerminator = function isLineTerminator(x) {
return x === "\n" || x === "\r" || x === "\u2028" || x === "\u2029";
};
module2.exports.isLineTerminatorJSON = function isLineTerminatorJSON(x) {
return x === "\n" || x === "\r";
};
module2.exports.isIdentifierStart = function isIdentifierStart(x) {
return x === "$" || x === "_" || x >= "A" && x <= "Z" || x >= "a" && x <= "z" || x >= "\x80" && Uni.NonAsciiIdentifierStart.test(x);
};
module2.exports.isIdentifierPart = function isIdentifierPart(x) {
return x === "$" || x === "_" || x >= "A" && x <= "Z" || x >= "a" && x <= "z" || x >= "0" && x <= "9" || x >= "\x80" && Uni.NonAsciiIdentifierPart.test(x);
};
module2.exports.NonAsciiIdentifierStart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/;
module2.exports.NonAsciiIdentifierPart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/;
}
});
// ../../../node_modules/jju/lib/parse.js
var require_parse = __commonJS({
"../../../node_modules/jju/lib/parse.js"(exports2, module2) {
var Uni = require_unicode();
function isHexDigit(x) {
return x >= "0" && x <= "9" || x >= "A" && x <= "F" || x >= "a" && x <= "f";
}
function isOctDigit(x) {
return x >= "0" && x <= "7";
}
function isDecDigit(x) {
return x >= "0" && x <= "9";
}
var unescapeMap = {
"'": "'",
'"': '"',
"\\": "\\",
"b": "\b",
"f": "\f",
"n": "\n",
"r": "\r",
"t": " ",
"v": "\v",
"/": "/"
};
function formatError(input, msg, position, lineno, column, json5) {
var result = msg + " at " + (lineno + 1) + ":" + (column + 1), tmppos = position - column - 1, srcline = "", underline = "";
var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON;
if (tmppos < position - 70) {
tmppos = position - 70;
}
while (1) {
var chr = input[++tmppos];
if (isLineTerminator(chr) || tmppos === input.length) {
if (position >= tmppos) {
underline += "^";
}
break;
}
srcline += chr;
if (position === tmppos) {
underline += "^";
} else if (position > tmppos) {
underline += input[tmppos] === " " ? " " : " ";
}
if (srcline.length > 78) break;
}
return result + "\n" + srcline + "\n" + underline;
}
function parse10(input, options) {
var json5 = false;
var cjson = false;
if (options.legacy || options.mode === "json") {
} else if (options.mode === "cjson") {
cjson = true;
} else if (options.mode === "json5") {
json5 = true;
} else {
json5 = true;
}
var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON;
var isWhiteSpace = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON;
var length = input.length, lineno = 0, linestart = 0, position = 0, stack = [];
var tokenStart = function() {
};
var tokenEnd = function(v) {
return v;
};
if (options._tokenize) {
;
(function() {
var start = null;
tokenStart = function() {
if (start !== null) throw Error("internal error, token overlap");
start = position;
};
tokenEnd = function(v, type) {
if (start != position) {
var hash = {
raw: input.substr(start, position - start),
type,
stack: stack.slice(0)
};
if (v !== void 0) hash.value = v;
options._tokenize.call(null, hash);
}
start = null;
return v;
};
})();
}
function fail(msg) {
var column = position - linestart;
if (!msg) {
if (position < length) {
var token = "'" + JSON.stringify(input[position]).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'";
if (!msg) msg = "Unexpected token " + token;
} else {
if (!msg) msg = "Unexpected end of input";
}
}
var error = SyntaxError(formatError(input, msg, position, lineno, column, json5));
error.row = lineno + 1;
error.column = column + 1;
throw error;
}
function newline(chr) {
if (chr === "\r" && input[position] === "\n") position++;
linestart = position;
lineno++;
}
function parseGeneric() {
var result;
while (position < length) {
tokenStart();
var chr = input[position++];
if (chr === '"' || chr === "'" && json5) {
return tokenEnd(parseString(chr), "literal");
} else if (chr === "{") {
tokenEnd(void 0, "separator");
return parseObject();
} else if (chr === "[") {
tokenEnd(void 0, "separator");
return parseArray();
} else if (chr === "-" || chr === "." || isDecDigit(chr) || json5 && (chr === "+" || chr === "I" || chr === "N")) {
return tokenEnd(parseNumber(), "literal");
} else if (chr === "n") {
parseKeyword("null");
return tokenEnd(null, "literal");
} else if (chr === "t") {
parseKeyword("true");
return tokenEnd(true, "literal");
} else if (chr === "f") {
parseKeyword("false");
return tokenEnd(false, "literal");
} else {
position--;
return tokenEnd(void 0);
}
}
}
function parseKey() {
var result;
while (position < length) {
tokenStart();
var chr = input[position++];
if (chr === '"' || chr === "'" && json5) {
return tokenEnd(parseString(chr), "key");
} else if (chr === "{") {
tokenEnd(void 0, "separator");
return parseObject();
} else if (chr === "[") {
tokenEnd(void 0, "separator");
return parseArray();
} else if (chr === "." || isDecDigit(chr)) {
return tokenEnd(parseNumber(true), "key");
} else if (json5 && Uni.isIdentifierStart(chr) || chr === "\\" && input[position] === "u") {
var rollback = position - 1;
var result = parseIdentifier();
if (result === void 0) {
position = rollback;
return tokenEnd(void 0);
} else {
return tokenEnd(result, "key");
}
} else {
position--;
return tokenEnd(void 0);
}
}
}
function skipWhiteSpace() {
tokenStart();
while (position < length) {
var chr = input[position++];
if (isLineTerminator(chr)) {
position--;
tokenEnd(void 0, "whitespace");
tokenStart();
position++;
newline(chr);
tokenEnd(void 0, "newline");
tokenStart();
} else if (isWhiteSpace(chr)) {
} else if (chr === "/" && (json5 || cjson) && (input[position] === "/" || input[position] === "*")) {
position--;
tokenEnd(void 0, "whitespace");
tokenStart();
position++;
skipComment(input[position++] === "*");
tokenEnd(void 0, "comment");
tokenStart();
} else {
position--;
break;
}
}
return tokenEnd(void 0, "whitespace");
}
function skipComment(multi) {
while (position < length) {
var chr = input[position++];
if (isLineTerminator(chr)) {
if (!multi) {
position--;
return;
}
newline(chr);
} else if (chr === "*" && multi) {
if (input[position] === "/") {
position++;
return;
}
} else {
}
}
if (multi) {
fail("Unclosed multiline comment");
}
}
function parseKeyword(keyword) {
var _pos2 = position;
var len = keyword.length;
for (var i = 1; i < len; i++) {
if (position >= length || keyword[i] != input[position]) {
position = _pos2 - 1;
fail();
}
position++;
}
}
function parseObject() {
var result = options.null_prototype ? /* @__PURE__ */ Object.create(null) : {}, empty_object = {}, is_non_empty = false;
while (position < length) {
skipWhiteSpace();
var item1 = parseKey();
skipWhiteSpace();
tokenStart();
var chr = input[position++];
tokenEnd(void 0, "separator");
if (chr === "}" && item1 === void 0) {
if (!json5 && is_non_empty) {
position--;
fail("Trailing comma in object");
}
return result;
} else if (chr === ":" && item1 !== void 0) {
skipWhiteSpace();
stack.push(item1);
var item2 = parseGeneric();
stack.pop();
if (item2 === void 0) fail("No value found for key " + item1);
if (typeof item1 !== "string") {
if (!json5 || typeof item1 !== "number") {
fail("Wrong key type: " + item1);
}
}
if ((item1 in empty_object || empty_object[item1] != null) && options.reserved_keys !== "replace") {
if (options.reserved_keys === "throw") {
fail("Reserved key: " + item1);
} else {
}
} else {
if (typeof options.reviver === "function") {
item2 = options.reviver.call(null, item1, item2);
}
if (item2 !== void 0) {
is_non_empty = true;
Object.defineProperty(result, item1, {
value: item2,
enumerable: true,
configurable: true,
writable: true
});
}
}
skipWhiteSpace();
tokenStart();
var chr = input[position++];
tokenEnd(void 0, "separator");
if (chr === ",") {
continue;
} else if (chr === "}") {
return result;
} else {
fail();
}
} else {
position--;
fail();
}
}
fail();
}
function parseArray() {
var result = [];
while (position < length) {
skipWhiteSpace();
stack.push(result.length);
var item = parseGeneric();
stack.pop();
skipWhiteSpace();
tokenStart();
var chr = input[position++];
tokenEnd(void 0, "separator");
if (item !== void 0) {
if (typeof options.reviver === "function") {
item = options.reviver.call(null, String(result.length), item);
}
if (item === void 0) {
result.length++;
item = true;
} else {
result.push(item);
}
}
if (chr === ",") {
if (item === void 0) {
fail("Elisions are not supported");
}
} else if (chr === "]") {
if (!json5 && item === void 0 && result.length) {
position--;
fail("Trailing comma in array");
}
return result;
} else {
position--;
fail();
}
}
}
function parseNumber() {
position--;
var start = position, chr = input[position++], t;
var to_num = function(is_octal2) {
var str = input.substr(start, position - start);
if (is_octal2) {
var result = parseInt(str.replace(/^0o?/, ""), 8);
} else {
var result = Number(str);
}
if (Number.isNaN(result)) {
position--;
fail('Bad numeric literal - "' + input.substr(start, position - start + 1) + '"');
} else if (!json5 && !str.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) {
position--;
fail('Non-json numeric literal - "' + input.substr(start, position - start + 1) + '"');
} else {
return result;
}
};
if (chr === "-" || chr === "+" && json5) chr = input[position++];
if (chr === "N" && json5) {
parseKeyword("NaN");
return NaN;
}
if (chr === "I" && json5) {
parseKeyword("Infinity");
return to_num();
}
if (chr >= "1" && chr <= "9") {
while (position < length && isDecDigit(input[position])) position++;
chr = input[position++];
}
if (chr === "0") {
chr = input[position++];
var is_octal = chr === "o" || chr === "O" || isOctDigit(chr);
var is_hex = chr === "x" || chr === "X";
if (json5 && (is_octal || is_hex)) {
while (position < length && (is_hex ? isHexDigit : isOctDigit)(input[position])) position++;
var sign = 1;
if (input[start] === "-") {
sign = -1;
start++;
} else if (input[start] === "+") {
start++;
}
return sign * to_num(is_octal);
}
}
if (chr === ".") {
while (position < length && isDecDigit(input[position])) position++;
chr = input[position++];
}
if (chr === "e" || chr === "E") {
chr = input[position++];
if (chr === "-" || chr === "+") position++;
while (position < length && isDecDigit(input[position])) position++;
chr = input[position++];
}
position--;
return to_num();
}
function parseIdentifier() {
position--;
var result = "";
while (position < length) {
var chr = input[position++];
if (chr === "\\" && input[position] === "u" && isHexDigit(input[position + 1]) && isHexDigit(input[position + 2]) && isHexDigit(input[position + 3]) && isHexDigit(input[position + 4])) {
chr = String.fromCharCode(parseInt(input.substr(position + 1, 4), 16));
position += 5;
}
if (result.length) {
if (Uni.isIdentifierPart(chr)) {
result += chr;
} else {
position--;
return result;
}
} else {
if (Uni.isIdentifierStart(chr)) {
result += chr;
} else {
return void 0;
}
}
}
fail();
}
function parseString(endChar) {
var result = "";
while (position < length) {
var chr = input[position++];
if (chr === endChar) {
return result;
} else if (chr === "\\") {
if (position >= length) fail();
chr = input[position++];
if (unescapeMap[chr] && (json5 || chr != "v" && chr != "'")) {
result += unescapeMap[chr];
} else if (json5 && isLineTerminator(chr)) {
newline(chr);
} else if (chr === "u" || chr === "x" && json5) {
var off = chr === "u" ? 4 : 2;
for (var i = 0; i < off; i++) {
if (position >= length) fail();
if (!isHexDigit(input[position])) fail("Bad escape sequence");
position++;
}
result += String.fromCharCode(parseInt(input.substr(position - off, off), 16));
} else if (json5 && isOctDigit(chr)) {
if (chr < "4" && isOctDigit(input[position]) && isOctDigit(input[position + 1])) {
var digits = 3;
} else if (isOctDigit(input[position])) {
var digits = 2;
} else {
var digits = 1;
}
position += digits - 1;
result += String.fromCharCode(parseInt(input.substr(position - digits, digits), 8));
} else if (json5) {
result += chr;
} else {
position--;
fail();
}
} else if (isLineTerminator(chr)) {
fail();
} else {
if (!json5 && chr.charCodeAt(0) < 32) {
position--;
fail("Unexpected control character");
}
result += chr;
}
}
fail();
}
skipWhiteSpace();
var return_value = parseGeneric();
if (return_value !== void 0 || position < length) {
skipWhiteSpace();
if (position >= length) {
if (typeof options.reviver === "function") {
return_value = options.reviver.call(null, "", return_value);
}
return return_value;
} else {
fail();
}
} else {
if (position) {
fail("No data, only a whitespace");
} else {
fail("No data, empty input");
}
}
}
module2.exports.parse = function parseJSON(input, options) {
if (typeof options === "function") {
options = {
reviver: options
};
}
if (input === void 0) {
return void 0;
}
if (typeof input !== "string") input = String(input);
if (options == null) options = {};
if (options.reserved_keys == null) options.reserved_keys = "ignore";
if (options.reserved_keys === "throw" || options.reserved_keys === "ignore") {
if (options.null_prototype == null) {
options.null_prototype = true;
}
}
try {
return parse10(input, options);
} catch (err) {
if (err instanceof SyntaxError && err.row != null && err.column != null) {
var old_err = err;
err = SyntaxError(old_err.message);
err.column = old_err.column;
err.row = old_err.row;
}
throw err;
}
};
module2.exports.tokenize = function tokenizeJSON(input, options) {
if (options == null) options = {};
options._tokenize = function(smth) {
if (options._addstack) smth.stack.unshift.apply(smth.stack, options._addstack);
tokens.push(smth);
};
var tokens = [];
tokens.data = module2.exports.parse(input, options);
return tokens;
};
}
});
// ../../../node_modules/jju/lib/stringify.js
var require_stringify = __commonJS({
"../../../node_modules/jju/lib/stringify.js"(exports2, module2) {
var Uni = require_unicode();
if (!function f() {
}.name) {
Object.defineProperty(function() {
}.constructor.prototype, "name", {
get: function() {
var name2 = this.toString().match(/^\s*function\s*(\S*)\s*\(/)[1];
Object.defineProperty(this, "name", { value: name2 });
return name2;
}
});
}
var special_chars = {
0: "\\0",
// this is not an octal literal
8: "\\b",
9: "\\t",
10: "\\n",
11: "\\v",
12: "\\f",
13: "\\r",
92: "\\\\"
};
var hasOwnProperty3 = Object.prototype.hasOwnProperty;
var escapable = /[\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
function _stringify(object, options, recursiveLvl, currentKey) {
var json5 = options.mode === "json5" || !options.mode;
function indent(str2, add) {
var prefix = options._prefix ? options._prefix : "";
if (!options.indent) return prefix + str2;
var result = "";
var count = recursiveLvl + (add || 0);
for (var i = 0; i < count; i++) result += options.indent;
return prefix + result + str2 + (add ? "\n" : "");
}
function _stringify_key(key) {
if (options.quote_keys) return _stringify_str(key);
if (String(Number(key)) == key && key[0] != "-") return key;
if (key == "") return _stringify_str(key);
var result = "";
for (var i = 0; i < key.length; i++) {
if (i > 0) {
if (!Uni.isIdentifierPart(key[i]))
return _stringify_str(key);
} else {
if (!Uni.isIdentifierStart(key[i]))
return _stringify_str(key);
}
var chr = key.charCodeAt(i);
if (options.ascii) {
if (chr < 128) {
result += key[i];
} else {
result += "\\u" + ("0000" + chr.toString(16)).slice(-4);
}
} else {
if (escapable.exec(key[i])) {
result += "\\u" + ("0000" + chr.toString(16)).slice(-4);
} else {
result += key[i];
}
}
}
return result;
}
function _stringify_str(key) {
var quote = options.quote;
var quoteChr = quote.charCodeAt(0);
var result = "";
for (var i = 0; i < key.length; i++) {
var chr = key.charCodeAt(i);
if (chr < 16) {
if (chr === 0 && json5) {
result += "\\0";
} else if (chr >= 8 && chr <= 13 && (json5 || chr !== 11)) {
result += special_chars[chr];
} else if (json5) {
result += "\\x0" + chr.toString(16);
} else {
result += "\\u000" + chr.toString(16);
}
} else if (chr < 32) {
if (json5) {
result += "\\x" + chr.toString(16);
} else {
result += "\\u00" + chr.toString(16);
}
} else if (chr >= 32 && chr < 128) {
if (chr === 47 && i && key[i - 1] === "<") {
result += "\\" + key[i];
} else if (chr === 92) {
result += "\\\\";
} else if (chr === quoteChr) {
result += "\\" + quote;
} else {
result += key[i];
}
} else if (options.ascii || Uni.isLineTerminator(key[i]) || escapable.exec(key[i])) {
if (chr < 256) {
if (json5) {
result += "\\x" + chr.toString(16);
} else {
result += "\\u00" + chr.toString(16);
}
} else if (chr < 4096) {
result += "\\u0" + chr.toString(16);
} else if (chr < 65536) {
result += "\\u" + chr.toString(16);
} else {
throw Error("weird codepoint");
}
} else {
result += key[i];
}
}
return quote + result + quote;
}
function _stringify_object() {
if (object === null) return "null";
var result = [], len = 0, braces;
if (Array.isArray(object)) {
braces = "[]";
for (var i = 0; i < object.length; i++) {
var s = _stringify(object[i], options, recursiveLvl + 1, String(i));
if (s === void 0) s = "null";
len += s.length + 2;
result.push(s + ",");
}
} else {
braces = "{}";
var fn = function(key) {
var t = _stringify(object[key], options, recursiveLvl + 1, key);
if (t !== void 0) {
t = _stringify_key(key) + ":" + (options.indent ? " " : "") + t + ",";
len += t.length + 1;
result.push(t);
}
};
if (Array.isArray(options.replacer)) {
for (var i = 0; i < options.replacer.length; i++)
if (hasOwnProperty3.call(object, options.replacer[i]))
fn(options.replacer[i]);
} else {
var keys = Object.keys(object);
if (options.sort_keys)
keys = keys.sort(typeof options.sort_keys === "function" ? options.sort_keys : void 0);
keys.forEach(fn);
}
}
len -= 2;
if (options.indent && (len > options._splitMax - recursiveLvl * options.indent.length || len > options._splitMin)) {
if (options.no_trailing_comma && result.length) {
result[result.length - 1] = result[result.length - 1].substring(0, result[result.length - 1].length - 1);
}
var innerStuff = result.map(function(x) {
return indent(x, 1);
}).join("");
return braces[0] + (options.indent ? "\n" : "") + innerStuff + indent(braces[1]);
} else {
if (result.length) {
result[result.length - 1] = result[result.length - 1].substring(0, result[result.length - 1].length - 1);
}
var innerStuff = result.join(options.indent ? " " : "");
return braces[0] + innerStuff + braces[1];
}
}
function _stringify_nonobject(object2) {
if (typeof options.replacer === "function") {
object2 = options.replacer.call(null, currentKey, object2);
}
switch (typeof object2) {
case "string":
return _stringify_str(object2);
case "number":
if (object2 === 0 && 1 / object2 < 0) {
return "-0";
}
if (!json5 && !Number.isFinite(object2)) {
return "null";
}
return object2.toString();
case "boolean":
return object2.toString();
case "undefined":
return void 0;
case "function":
// return custom_type()
default:
return JSON.stringify(object2);
}
}
if (options._stringify_key) {
return _stringify_key(object);
}
if (typeof object === "object") {
if (object === null) return "null";
var str;
if (typeof (str = object.toJSON5) === "function" && options.mode !== "json") {
object = str.call(object, currentKey);
} else if (typeof (str = object.toJSON) === "function") {
object = str.call(object, currentKey);
}
if (object === null) return "null";
if (typeof object !== "object") return _stringify_nonobject(object);
if (object.constructor === Number || object.constructor === Boolean || object.constructor === String) {
object = object.valueOf();
return _stringify_nonobject(object);
} else if (object.constructor === Date) {
return _stringify_nonobject(object.toISOString());
} else {
if (typeof options.replacer === "function") {
object = options.replacer.call(null, currentKey, object);
if (typeof object !== "object") return _stringify_nonobject(object);
}
return _stringify_object(object);
}
} else {
return _stringify_nonobject(object);
}
}
module2.exports.stringify = function stringifyJSON(object, options, _space) {
if (typeof options === "function" || Array.isArray(options)) {
options = {
replacer: options
};
} else if (typeof options === "object" && options !== null) {
} else {
options = {};
}
if (_space != null) options.indent = _space;
if (options.indent == null) options.indent = " ";
if (options.quote == null) options.quote = "'";
if (options.ascii == null) options.ascii = false;
if (options.mode == null) options.mode = "json5";
if (options.mode === "json" || options.mode === "cjson") {
options.quote = '"';
options.no_trailing_comma = true;
options.quote_keys = true;
}
if (typeof options.indent === "object") {
if (options.indent.constructor === Number || options.indent.constructor === Boolean || options.indent.constructor === String)
options.indent = options.indent.valueOf();
}
if (typeof options.indent === "number") {
if (options.indent >= 0) {
options.indent = Array(Math.min(~~options.indent, 10) + 1).join(" ");
} else {
options.indent = false;
}
} else if (typeof options.indent === "string") {
options.indent = options.indent.substr(0, 10);
}
if (options._splitMin == null) options._splitMin = 50;
if (options._splitMax == null) options._splitMax = 70;
return _stringify(object, options, 0, "");
};
}
});
// ../../../node_modules/jju/lib/analyze.js
var require_analyze = __commonJS({
"../../../node_modules/jju/lib/analyze.js"(exports2, module2) {
var tokenize = require_parse().tokenize;
module2.exports.analyze = function analyzeJSON(input, options) {
if (options == null) options = {};
if (!Array.isArray(input)) {
input = tokenize(input, options);
}
var result = {
has_whitespace: false,
has_comments: false,
has_newlines: false,
has_trailing_comma: false,
indent: "",
newline: "\n",
quote: '"',
quote_keys: true
};
var stats = {
indent: {},
newline: {},
quote: {}
};
for (var i = 0; i < input.length; i++) {
if (input[i].type === "newline") {
if (input[i + 1] && input[i + 1].type === "whitespace") {
if (input[i + 1].raw[0] === " ") {
stats.indent[" "] = (stats.indent[" "] || 0) + 1;
}
if (input[i + 1].raw.match(/^\x20+$/)) {
var ws_len = input[i + 1].raw.length;
var indent_len = input[i + 1].stack.length + 1;
if (ws_len % indent_len === 0) {
var t = Array(ws_len / indent_len + 1).join(" ");
stats.indent[t] = (stats.indent[t] || 0) + 1;
}
}
}
stats.newline[input[i].raw] = (stats.newline[input[i].raw] || 0) + 1;
}
if (input[i].type === "newline") {
result.has_newlines = true;
}
if (input[i].type === "whitespace") {
result.has_whitespace = true;
}
if (input[i].type === "comment") {
result.has_comments = true;
}
if (input[i].type === "key") {
if (input[i].raw[0] !== '"' && input[i].raw[0] !== "'") result.quote_keys = false;
}
if (input[i].type === "key" || input[i].type === "literal") {
if (input[i].raw[0] === '"' || input[i].raw[0] === "'") {
stats.quote[input[i].raw[0]] = (stats.quote[input[i].raw[0]] || 0) + 1;
}
}
if (input[i].type === "separator" && input[i].raw === ",") {
for (var j = i + 1; j < input.length; j++) {
if (input[j].type === "literal" || input[j].type === "key") break;
if (input[j].type === "separator") result.has_trailing_comma = true;
}
}
}
for (var k in stats) {
if (Object.keys(stats[k]).length) {
result[k] = Object.keys(stats[k]).reduce(function(a, b) {
return stats[k][a] > stats[k][b] ? a : b;
});
}
}
return result;
};
}
});
// ../../../node_modules/jju/lib/document.js
var require_document = __commonJS({
"../../../node_modules/jju/lib/document.js"(exports2, module2) {
var assert3 = require("assert");
var tokenize = require_parse().tokenize;
var stringify = require_stringify().stringify;
var analyze = require_analyze().analyze;
function isObject2(x) {
return typeof x === "object" && x !== null;
}
function value_to_tokenlist(value, stack, options, is_key, indent) {
options = Object.create(options);
options._stringify_key = !!is_key;
if (indent) {
options._prefix = indent.prefix.map(function(x) {
return x.raw;
}).join("");
}
if (options._splitMin == null) options._splitMin = 0;
if (options._splitMax == null) options._splitMax = 0;
var stringified = stringify(value, options);
if (is_key) {
return [{ raw: stringified, type: "key", stack, value }];
}
options._addstack = stack;
var result = tokenize(stringified, {
_addstack: stack
});
result.data = null;
return result;
}
function arg_to_path(path9) {
if (typeof path9 === "number") path9 = String(path9);
if (path9 === "") path9 = [];
if (typeof path9 === "string") path9 = path9.split(".");
if (!Array.isArray(path9)) throw Error("Invalid path type, string or array expected");
return path9;
}
function find_element_in_tokenlist(element, lvl, tokens, begin, end) {
while (tokens[begin].stack[lvl] != element) {
if (begin++ >= end) return false;
}
while (tokens[end].stack[lvl] != element) {
if (end-- < begin) return false;
}
return [begin, end];
}
function is_whitespace(token_type) {
return token_type === "whitespace" || token_type === "newline" || token_type === "comment";
}
function find_first_non_ws_token(tokens, begin, end) {
while (is_whitespace(tokens[begin].type)) {
if (begin++ >= end) return false;
}
return begin;
}
function find_last_non_ws_token(tokens, begin, end) {
while (is_whitespace(tokens[end].type)) {
if (end-- < begin) return false;
}
return end;
}
function detect_indent_style(tokens, is_array, begin, end, level) {
var result = {
sep1: [],
sep2: [],
suffix: [],
prefix: [],
newline: []
};
if (tokens[end].type === "separator" && tokens[end].stack.length !== level + 1 && tokens[end].raw !== ",") {
return result;
}
if (tokens[end].type === "separator")
end = find_last_non_ws_token(tokens, begin, end - 1);
if (end === false) return result;
while (tokens[end].stack.length > level) end--;
if (!is_array) {
while (is_whitespace(tokens[end].type)) {
if (end < begin) return result;
if (tokens[end].type === "whitespace") {
result.sep2.unshift(tokens[end]);
} else {
return result;
}
end--;
}
assert3.equal(tokens[end].type, "separator");
assert3.equal(tokens[end].raw, ":");
while (is_whitespace(tokens[--end].type)) {
if (end < begin) return result;
if (tokens[end].type === "whitespace") {
result.sep1.unshift(tokens[end]);
} else {
return result;
}
}
assert3.equal(tokens[end].type, "key");
end--;
}
while (is_whitespace(tokens[end].type)) {
if (end < begin) return result;
if (tokens[end].type === "whitespace") {
result.prefix.unshift(tokens[end]);
} else if (tokens[end].type === "newline") {
result.newline.unshift(tokens[end]);
return result;
} else {
return result;
}
end--;
}
return result;
}
function Document(text, options) {
var self2 = Object.create(Document.prototype);
if (options == null) options = {};
var tokens = self2._tokens = tokenize(text, options);
self2._data = tokens.data;
tokens.data = null;
self2._options = options;
var stats = analyze(text, options);
if (options.indent == null) {
options.indent = stats.indent;
}
if (options.quote == null) {
options.quote = stats.quote;
}
if (options.quote_keys == null) {
options.quote_keys = stats.quote_keys;
}
if (options.no_trailing_comma == null) {
options.no_trailing_comma = !stats.has_trailing_comma;
}
return self2;
}
function check_if_can_be_placed(key, object, is_unset) {
function error(add) {
return Error("You can't " + (is_unset ? "unset" : "set") + " key '" + key + "'" + add);
}
if (!isObject2(object)) {
throw error(" of an non-object");
}
if (Array.isArray(object)) {
if (String(key).match(/^\d+$/)) {
key = Number(String(key));
if (object.length < key || is_unset && object.length === key) {
throw error(", out of bounds");
} else if (is_unset && object.length !== key + 1) {
throw error(" in the middle of an array");
} else {
return true;
}
} else {
throw error(" of an array");
}
} else {
return true;
}
}
Document.prototype.set = function(path9, value) {
path9 = arg_to_path(path9);
if (path9.length === 0) {
if (value === void 0) throw Error("can't remove root document");
this._data = value;
var new_key = false;
} else {
var data = this._data;
for (var i = 0; i < path9.length - 1; i++) {
check_if_can_be_placed(path9[i], data, false);
data = data[path9[i]];
}
if (i === path9.length - 1) {
check_if_can_be_placed(path9[i], data, value === void 0);
}
var new_key = !(path9[i] in data);
if (value === void 0) {
if (Array.isArray(data)) {
data.pop();
} else {
delete data[path9[i]];
}
} else {
data[path9[i]] = value;
}
}
if (!this._tokens.length)
this._tokens = [{ raw: "", type: "literal", stack: [], value: void 0 }];
var position = [
find_first_non_ws_token(this._tokens, 0, this._tokens.length - 1),
find_last_non_ws_token(this._tokens, 0, this._tokens.length - 1)
];
for (var i = 0; i < path9.length - 1; i++) {
position = find_element_in_tokenlist(path9[i], i, this._tokens, position[0], position[1]);
if (position == false) throw Error("internal error, please report this");
}
if (path9.length === 0) {
var newtokens = value_to_tokenlist(value, path9, this._options);
} else if (!new_key) {
var pos_old = position;
position = find_element_in_tokenlist(path9[i], i, this._tokens, position[0], position[1]);
if (value === void 0 && position !== false) {
var newtok