imba
Version:
1,529 lines • 1.26 MB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var stdin_exports = {};
__export(stdin_exports, {
aliases: () => aliases,
compile: () => export_compile,
deserialize: () => export_deserialize,
fonts: () => fonts,
helpers: () => export_helpers,
modifiers: () => modifiers,
parse: () => export_parse,
parseAsset: () => parseAsset,
parser: () => export_parser,
program: () => program,
resolve: () => export_resolve,
resolveConfig: () => export_resolveConfig,
rewrite: () => export_rewrite,
selparser: () => selparser,
tokenize: () => export_tokenize,
variants: () => variants
});
module.exports = __toCommonJS(stdin_exports);
var __create = Object.create;
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
}) : x)(function(x) {
if (typeof require !== "undefined")
return require.apply(this, arguments);
throw new Error('Dynamic require of "' + x + '" is not supported');
});
var __esm = (fn, res) => function __init() {
return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res;
};
var __commonJS = (cb, mod) => function __require2() {
return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export2 = (target, all) => {
for (var name in all)
__defProp2(target, name, { get: all[name], enumerable: true });
};
var __copyProps2 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames2(from))
if (!__hasOwnProp2.call(to, key) && key !== except)
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps2(
isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
var require_token = __commonJS({
"src/compiler/token.imba1"(exports) {
var self = {};
var TOK = exports.TOK = {};
var TTERMINATOR = TOK.TERMINATOR = 1;
var TIDENTIFIER = TOK.IDENTIFIER = TOK.IVAR = 2;
var CONST = TOK.CONST = 3;
var VAR = TOK.VAR = 4;
var IF = TOK.IF = 5;
var ELSE = TOK.ELSE = 6;
var DEF = TOK.DEF = 7;
function Token2(type, value, loc, len) {
this._type = type;
this._value = value;
this._loc = loc != null ? loc : -1;
this._len = len != null ? len : this._value.length;
this._meta = null;
this.generated = false;
this.newLine = false;
this.spaced = false;
this.call = false;
return this;
}
exports.Token = Token2;
Token2.prototype.type = function() {
return this._type;
};
Token2.prototype.value = function() {
return this._value;
};
Token2.prototype.traverse = function() {
return;
};
Token2.prototype.match = function(regex) {
return this._value.match(regex);
};
Token2.prototype.c = function() {
return "" + this._value;
};
Token2.prototype.prepend = function(str) {
this._value = str + this._value;
return this;
};
Token2.prototype.toString = function() {
return this._value;
};
Token2.prototype.charAt = function(i) {
return this._value.charAt(i);
};
Token2.prototype.slice = function(i) {
return this._value.slice(i);
};
Token2.prototype.cloneSlice = function(i, type) {
return new Token2(type || this._type, this.slice(i), this._loc + i, this._len - i);
};
Token2.prototype.region = function() {
return [this._loc, this._loc + this._len];
};
Token2.prototype.startLoc = function() {
return this._loc;
};
Token2.prototype.endLoc = function() {
return this._loc + this._len;
};
Token2.prototype.loc = function() {
return [this._loc, this.endLoc()];
};
exports.lex = self.lex = function() {
var token = this.tokens[this.pos++];
var ttag;
if (token) {
ttag = token._type;
this.yytext = token;
} else {
ttag = "";
}
;
return ttag;
};
exports.token = self.token = function(typ, val) {
return new Token2(typ, val, -1, 0);
};
exports.typ = self.typ = function(tok) {
return tok._type;
};
exports.val = self.val = function(tok) {
return tok._value;
};
exports.line = self.line = function(tok) {
return tok._line;
};
exports.loc = self.loc = function(tok) {
return tok._loc;
};
exports.setTyp = self.setTyp = function(tok, v) {
return tok._type = v;
};
exports.setVal = self.setVal = function(tok, v) {
return tok._value = v;
};
exports.setLine = self.setLine = function(tok, v) {
return tok._line = v;
};
exports.setLoc = self.setLoc = function(tok, v) {
return tok._loc = v;
};
var LBRACKET = exports.LBRACKET = new Token2("{", "{", 0, 0, 0);
var RBRACKET = exports.RBRACKET = new Token2("}", "}", 0, 0, 0);
var LPAREN = exports.LPAREN = new Token2("(", "(", 0, 0, 0);
var RPAREN = exports.RPAREN = new Token2(")", ")", 0, 0, 0);
LBRACKET.generated = true;
RBRACKET.generated = true;
LPAREN.generated = true;
RPAREN.generated = true;
var INDENT = exports.INDENT = new Token2("INDENT", "2", 0, 0, 0);
var OUTDENT = exports.OUTDENT = new Token2("OUTDENT", "2", 0, 0, 0);
}
});
var fnv1a_exports = {};
__export2(fnv1a_exports, {
fnv1a: () => fnv1a
});
function fnv1a(string2, { size = 32 } = {}) {
if (!FNV_PRIMES[size]) {
throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");
}
let hash = FNV_OFFSETS[size];
const fnvPrime = FNV_PRIMES[size];
let isUnicoded = false;
for (let index = 0; index < string2.length; index++) {
let characterCode = string2.charCodeAt(index);
if (characterCode > 127 && !isUnicoded) {
string2 = unescape(encodeURIComponent(string2));
characterCode = string2.charCodeAt(index);
isUnicoded = true;
}
hash ^= BigInt(characterCode);
hash = BigInt.asUintN(size, hash * fnvPrime);
}
return hash;
}
var FNV_PRIMES, FNV_OFFSETS;
var init_fnv1a = __esm({
"vendor/fnv1a.js"() {
FNV_PRIMES = {
32: 16777619n,
64: 1099511628211n,
128: 309485009821345068724781371n,
256: 374144419156711147060143317175368453031918731002211n,
512: 35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,
1024: 5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n
};
FNV_OFFSETS = {
32: 2166136261n,
64: 14695981039346656037n,
128: 144066263297769815596495629667062367629n,
256: 100029257958052580907070968620625704837092796014241193945225284501741471925557n,
512: 9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,
1024: 14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n
};
}
});
var identifiers_exports = {};
__export2(identifiers_exports, {
InternalPrefixes: () => InternalPrefixes,
ReservedIdentifierRegex: () => ReservedIdentifierRegex,
ReservedPrefixes: () => ReservedPrefixes,
ToImbaMap: () => ToImbaMap,
ToJSMap: () => ToJSMap,
toCustomTagIdentifier: () => toCustomTagIdentifier,
toImbaIdentifier: () => toImbaIdentifier,
toJSIdentifier: () => toJSIdentifier
});
function toJSIdentifier(raw) {
return raw.replace(toJSregex, toJSreplacer);
}
function toImbaIdentifier(raw) {
return raw.replace(toImbaRegex, toImbaReplacer);
}
function toCustomTagIdentifier(str) {
return "\u0393" + toJSIdentifier(str);
}
var InternalPrefixes, ReservedPrefixes, ReservedIdentifierRegex, ToJSMap, toJSregex, toJSreplacer, ToImbaMap, toImbaRegex, toImbaReplacer;
var init_identifiers = __esm({
"src/utils/identifiers.imba"() {
InternalPrefixes = {
TAG: "\u03C4",
FLIP: "\u03C9",
VALUE: "\u03C5",
CACHE: "\u03F2",
KEY: "\u03BA",
ANY: "\u03C6",
SYM: "\u03B5",
SEP: "\u03B9",
PRIVATE: "\u03A8",
B: "\u03B9",
T: "\u03C4",
C: "\u03C1",
V: "\u03C5",
K: "\u03BA",
D: "\u0394",
H: "\u03B8",
EXTEND: "\u03A9"
};
ReservedPrefixes = new Set(Object.values(InternalPrefixes));
ReservedIdentifierRegex = new RegExp("^[" + Array.from(ReservedPrefixes).join("") + "]", "u");
ToJSMap = {
"-": "\u039E",
"?": "\u03A6",
"#": "\u03A8",
"@": "\u03B1"
};
toJSregex = new RegExp("[-?#@]", "gu");
toJSreplacer = function(m) {
return ToJSMap[m];
};
ToImbaMap = {
"\u039E": "-",
"\u03A6": "?",
"\u03A8": "#",
"\u03B1": "@"
};
toImbaRegex = new RegExp("[\u039E\u03A6\u03A8\u03B1]", "gu");
toImbaReplacer = function(m) {
return ToImbaMap[m];
};
}
});
var require_helpers = __commonJS({
"src/compiler/helpers.imba1"(exports) {
function iter$(a) {
return a ? a.toArray ? a.toArray() : a : [];
}
var self = {};
var fnv1a2 = (init_fnv1a(), __toCommonJS2(fnv1a_exports)).fnv1a;
var ansiMap = {
reset: [0, 0],
bold: [1, 22],
dim: [2, 22],
italic: [3, 23],
underline: [4, 24],
inverse: [7, 27],
hidden: [8, 28],
strikethrough: [9, 29],
black: [30, 39],
red: [31, 39],
green: [32, 39],
yellow: [33, 39],
blue: [34, 39],
magenta: [35, 39],
cyan: [36, 39],
white: [37, 39],
gray: [90, 39],
redBright: [91, 39],
greenBright: [92, 39],
yellowBright: [93, 39],
blueBright: [94, 39],
magentaBright: [95, 39],
cyanBright: [96, 39],
whiteBright: [97, 39]
};
var ansi = exports.ansi = {
bold: function(text) {
return "\x1B[1m" + text + "\x1B[22m";
},
red: function(text) {
return "\x1B[31m" + text + "\x1B[39m";
},
green: function(text) {
return "\x1B[32m" + text + "\x1B[39m";
},
yellow: function(text) {
return "\x1B[33m" + text + "\x1B[39m";
},
blue: function(text) {
return "\x1B[94m" + text + "\x1B[39m";
},
gray: function(text) {
return "\x1B[90m" + text + "\x1B[39m";
},
white: function(text) {
return "\x1B[37m" + text + "\x1B[39m";
},
f: function(name, text) {
let pair = ansiMap[name];
return "\x1B[" + pair[0] + "m" + text + "\x1B[" + pair[1] + "m";
}
};
ansi.warn = ansi.yellow;
ansi.error = ansi.red;
var imba$ = (init_identifiers(), __toCommonJS2(identifiers_exports));
var toImbaIdentifier2 = imba$.toImbaIdentifier;
var toJSIdentifier2 = imba$.toJSIdentifier;
var GreekLetters = "\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9";
exports.brace = self.brace = function(str) {
var lines = str.match(/\n/);
if (lines) {
return "{" + str + "\n}";
} else {
return "{\n" + str + "\n}";
}
;
};
exports.normalizeIndentation = self.normalizeIndentation = function(str) {
var m;
var reg = /\n+([^\n\S]*)/g;
var ind = null;
var length_;
while (m = reg.exec(str)) {
var attempt = m[1];
if (ind === null || 0 < (length_ = attempt.length) && length_ < ind.length) {
ind = attempt;
}
;
}
;
if (ind) {
str = str.replace(RegExp("\\n" + ind, "g"), "\n");
}
;
return str;
};
exports.flatten = self.flatten = function(arr) {
var out = [];
arr.forEach(function(v) {
return v instanceof Array ? out.push.apply(out, self.flatten(v)) : out.push(v);
});
return out;
};
exports.clearLocationMarkers = self.clearLocationMarkers = function(str) {
return str.replace(/\/\*\%([\w\|]*)\$\*\//g, "");
};
exports.pascalCase = self.pascalCase = function(str) {
return str.replace(/(^|[\-\_\s])(\w)/g, function(m, v, l) {
return l.toUpperCase();
});
};
exports.camelCase = self.camelCase = function(str) {
str = String(str);
return str.replace(/([\-\_\s])(\w)/g, function(m, v, l) {
return l.toUpperCase();
});
};
exports.dashToCamelCase = self.dashToCamelCase = function(str) {
str = String(str);
if (str.indexOf("-") >= 0) {
str = str.replace(/([\-\s])(\w)/g, function(m, v, l) {
return l.toUpperCase();
});
}
;
return str;
};
exports.snakeCase = self.snakeCase = function(str) {
var str = str.replace(/([\-\s])(\w)/g, "_");
return str.replace(/()([A-Z])/g, "_$1", function(m, v, l) {
return l.toUpperCase();
});
};
exports.dasherize = self.dasherize = function(str) {
return str.replace(/([a-z\d])([A-Z])/g, "$1-$2").toLowerCase();
};
exports.setterSym = self.setterSym = function(sym) {
return self.dashToCamelCase("set-" + sym);
};
exports.quote = self.quote = function(str) {
return '"' + str + '"';
};
exports.singlequote = self.singlequote = function(str) {
return "'" + str + "'";
};
exports.isValidIdentifier = self.isValidIdentifier = function(str) {
return !/[?-\s]/.test(str) && str[0] != "#";
};
exports.toValidIdentifier = self.toValidIdentifier = function(str) {
return toJSIdentifier2(str);
return str.replace(/[-\?]/g, "$");
};
exports.fromValidIdentifier = self.fromValidIdentifier = function(str) {
return toImbaIdentifier2(str);
return str[0] + str.slice(1).replace(/\$$/, "?").replace(/\$/g, "-");
};
exports.isSystemIdentifier = self.isSystemIdentifier = function(str) {
return GreekLetters.indexOf(str[0]) >= 0;
};
exports.symbolize = self.symbolize = function(str, stack) {
str = String(str);
return self.toValidIdentifier(str);
if (stack && stack.tsc() || true) {
return str;
}
;
var end = str.charAt(str.length - 1);
if (end == "?") {
str = "is" + str[0].toUpperCase() + str.slice(1, -1);
}
;
if (str.indexOf("-") >= 0) {
str = str.replace(/([\-\s])(\w)/g, function(m, v, l) {
return l.toUpperCase();
});
}
;
return str;
};
exports.indent = self.indent = function(str) {
return String(str).replace(/^/g, " ").replace(/\n/g, "\n ").replace(/\n\t$/g, "\n");
};
exports.bracketize = self.bracketize = function(str, ind) {
if (ind === void 0)
ind = true;
if (ind) {
str = "\n" + self.indent(str) + "\n";
}
;
return "{" + str + "}";
};
exports.parenthesize = self.parenthesize = function(str) {
return "(" + String(str) + ")";
};
exports.unionOfLocations = self.unionOfLocations = function() {
var $0 = arguments, i = $0.length;
var locs = new Array(i > 0 ? i : 0);
while (i > 0)
locs[i - 1] = $0[--i];
var a = Infinity;
var b = -Infinity;
for (let i2 = 0, items = iter$(locs), len = items.length, loc; i2 < len; i2++) {
loc = items[i2];
if (loc && loc._loc != void 0) {
loc = loc._loc;
}
;
if (loc && loc.loc instanceof Function) {
loc = loc.loc();
}
;
if (loc instanceof Array) {
if (a > loc[0]) {
a = loc[0];
}
;
if (b < loc[0]) {
b = loc[1];
}
;
} else if (typeof loc == "number" || loc instanceof Number) {
if (a > loc) {
a = loc;
}
;
if (b < loc) {
b = loc;
}
;
}
;
}
;
return [a, b];
};
exports.locationToLineColMap = self.locationToLineColMap = function(code) {
var lines = code.split(/\n/g);
var map = [];
var chr;
var loc = 0;
var col = 0;
var line = 0;
while (chr = code[loc]) {
map[loc] = [line, col];
if (chr == "\n") {
line++;
col = 0;
} else {
col++;
}
;
loc++;
}
;
map[loc] = [line, col];
map[loc + 1] = [line, col];
return map;
};
exports.markLineColForTokens = self.markLineColForTokens = function(tokens, code) {
return self;
};
exports.parseArgs = self.parseArgs = function(argv, o) {
var env_;
if (o === void 0)
o = {};
var aliases2 = o.alias || (o.alias = {});
var groups = o.group || (o.group = []);
var schema = o.schema || {};
schema.main = {};
var options = {};
var explicit = {};
argv = argv || process.argv.slice(2);
var curr = null;
var i = 0;
var m;
while (i < argv.length) {
var arg = argv[i];
i++;
if (m = arg.match(/^\-([a-zA-Z]+)(\=\S+)?$/)) {
curr = null;
let chars = m[1].split("");
for (let i2 = 0, items = iter$(chars), len = items.length, item; i2 < len; i2++) {
item = items[i2];
var key = aliases2[item] || item;
chars[i2] = key;
options[key] = true;
}
;
if (chars.length == 1) {
curr = chars;
}
;
continue;
} else if (m = arg.match(/^\-\-([a-z0-9\-\_A-Z]+)(\=\S+)?$/)) {
var val = true;
key = m[1];
if (key.indexOf("no-") == 0) {
key = key.substr(3);
val = false;
}
;
key = self.dashToCamelCase(key);
if (m[2]) {
val = m[2].slice(1);
}
;
options[key] = val;
curr = key;
continue;
} else {
var desc = schema[curr];
if (!(curr && schema[curr])) {
curr = "main";
}
;
if (arg.match(/^\d+$/)) {
arg = parseInt(arg);
}
;
val = options[curr];
if (val == true || val == false) {
options[curr] = arg;
} else if (typeof val == "string" || val instanceof String || (typeof val == "number" || val instanceof Number)) {
options[curr] = [val].concat(arg);
} else if (val instanceof Array) {
val.push(arg);
} else {
options[curr] = arg;
}
;
if (!(desc && desc.multi)) {
curr = "main";
}
;
}
;
}
;
for (let j = 0, items = iter$(groups), len = items.length; j < len; j++) {
let name = self.dashToCamelCase(items[j]);
for (let v, i_ = 0, keys = Object.keys(options), l = keys.length, k; i_ < l; i_++) {
k = keys[i_];
v = options[k];
if (k.indexOf(name) == 0) {
let key2 = k.substr(name.length).replace(/^\w/, function(m2) {
return m2.toLowerCase();
});
if (key2) {
options[name] || (options[name] = {});
options[name][key2] = v;
} else {
options[name] || (options[name] = {});
}
;
}
;
}
;
}
;
if (typeof (env_ = options.env) == "string" || env_ instanceof String) {
options["ENV_" + options.env] = true;
}
;
return options;
};
exports.printExcerpt = self.printExcerpt = function(code, loc, pars) {
if (!pars || pars.constructor !== Object)
pars = {};
var hl = pars.hl !== void 0 ? pars.hl : false;
var gutter = pars.gutter !== void 0 ? pars.gutter : true;
var type = pars.type !== void 0 ? pars.type : "warn";
var pad = pars.pad !== void 0 ? pars.pad : 2;
var lines = code.split(/\n/g);
var locmap = self.locationToLineColMap(code);
var lc = locmap[loc[0]] || [0, 0];
var ln = lc[0];
var col = lc[1];
var line = lines[ln];
var ln0 = Math.max(0, ln - pad);
var ln1 = Math.min(ln0 + pad + 1 + pad, lines.length);
let lni = ln - ln0;
var l = ln0;
var res1 = [];
while (l < ln1) {
res1.push(lines[l++]);
}
;
var out = res1;
if (gutter) {
out = out.map(function(line2, i) {
let prefix = "" + (ln0 + i + 1);
let str;
while (prefix.length < String(ln1).length) {
prefix = " " + prefix;
}
;
if (i == lni) {
str = " -> " + prefix + " | " + line2;
if (hl) {
str = ansi.f(hl, str);
}
;
} else {
str = " " + prefix + " | " + line2;
if (hl) {
str = ansi.f("gray", str);
}
;
}
;
return str;
});
}
;
let res = out.join("\n");
return res;
};
exports.printWarning = self.printWarning = function(code, warn) {
let msg = warn.message;
let excerpt = self.printExcerpt(code, warn.loc, { hl: "whiteBright", type: "warn", pad: 1 });
return msg + "\n" + excerpt;
};
exports.identifierForPath = self.identifierForPath = function(str) {
let hash = fnv1a2(str).toString(36);
if (hash[0].match(/\d/)) {
hash = "z" + hash;
}
;
return hash;
};
exports.isPlainObject = self.isPlainObject = function(val) {
return typeof val == "object" && Object.getPrototypeOf(val) == Object.prototype;
};
exports.deepAssign = self.deepAssign = function(base, assignment) {
for (let v, i = 0, keys = Object.keys(assignment), l = keys.length, k; i < l; i++) {
k = keys[i];
v = assignment[k];
let orig = base[k];
if (self.isPlainObject(orig) && self.isPlainObject(v)) {
self.deepAssign(orig, v);
} else {
base[k] = v;
}
;
}
;
return base;
};
}
});
var require_constants = __commonJS({
"src/compiler/constants.imba1"(exports) {
function iter$(a) {
return a ? a.toArray ? a.toArray() : a : [];
}
var BALANCED_PAIRS = exports.BALANCED_PAIRS = [
["(", ")"],
["[", "]"],
["{", "}"],
["{{", "}}"],
["INDENT", "OUTDENT"],
["CALL_START", "CALL_END"],
["PARAM_START", "PARAM_END"],
["INDEX_START", "INDEX_END"],
["TAG_START", "TAG_END"],
["STYLE_START", "STYLE_END"],
["BLOCK_PARAM_START", "BLOCK_PARAM_END"]
];
var BITWISE_OPERATORS = exports.BITWISE_OPERATORS = {
"|": true,
"&": true,
"!&": true,
"~": true,
"|=": true,
"&=": true,
"~=": true,
"^=": true,
"^": true,
"<<": true,
"<<=": true,
">>": true,
">>=": true
};
var ASSIGNMENT_OPERATORS = exports.ASSIGNMENT_OPERATORS = {
"=": true,
"=?": true,
"??=": true,
"||=": true,
"&&=": true,
"|=": true,
"|=?": true,
"&=": true,
"&=?": true,
"^=": true,
"^=?": true,
"~=": true,
"~=?": true
};
var INVERSES = exports.INVERSES = {};
for (let i = 0, len = BALANCED_PAIRS.length, pair; i < len; i++) {
pair = BALANCED_PAIRS[i];
left = pair[0];
rite = pair[1];
INVERSES[rite] = left;
INVERSES[left] = rite;
BALANCED_PAIRS[left] = rite;
}
var left;
var rite;
var ALL_KEYWORDS = exports.ALL_KEYWORDS = [
"true",
"false",
"null",
"this",
"delete",
"typeof",
"in",
"instanceof",
"throw",
"break",
"continue",
"debugger",
"if",
"else",
"switch",
"for",
"while",
"do",
"try",
"catch",
"finally",
"class",
"extends",
"super",
"return",
"undefined",
"then",
"unless",
"until",
"loop",
"of",
"by",
"when",
"def",
"tag",
"do",
"elif",
"begin",
"var",
"let",
"self",
"await",
"import",
"and",
"or",
"is",
"isnt",
"not",
"yes",
"no",
"isa",
"case",
"nil",
"require"
];
var TOK = exports.TOK = {
TERMINATOR: "TERMINATOR",
INDENT: "INDENT",
OUTDENT: "OUTDENT",
DEF_BODY: "DEF_BODY",
THEN: "THEN",
CATCH: "CATCH"
};
var OPERATOR_ALIASES = exports.OPERATOR_ALIASES = {
and: "&&",
or: "||",
is: "==",
isnt: "!=",
isa: "instanceof"
};
var HEREGEX_OMIT = exports.HEREGEX_OMIT = /\s+(?:#.*)?/g;
var HEREGEX = exports.HEREGEX = /^\/{3}([\s\S]+?)\/{3}([a-z]{0,8})(?!\w)/;
var TAG_GLOBAL_ATTRIBUTES = exports.TAG_GLOBAL_ATTRIBUTES = {
itemid: 1,
itemprop: 1,
itemref: 1,
itemscope: 1,
itemtype: 1,
enterkeyhint: 1,
autofocus: 1,
autocapitalize: 1,
autocomplete: 1,
accesskey: 1,
inputmode: 1,
spellcheck: 1,
translate: 1,
is: 1
};
var SYSVAR_PREFIX = exports.SYSVAR_PREFIX = {
TAG: "\u03C4",
FLIP: "\u03C9",
VALUE: "\u03C5",
CACHE: "\u03C1",
KEY: "\u03BA",
ANY: "\u03C6",
B: "\u0398",
T: "\u03C4",
C: "\u03C1",
V: "\u03C5",
K: "\u03BA",
D: "\u0394"
};
var TAG_TYPES = exports.TAG_TYPES = {
"": [-1, { id: 1, className: "class", slot: 1, part: 1, elementTiming: "elementtiming" }],
HTML: [-1, { title: 1, lang: 1, translate: 1, dir: 1, accessKey: "accesskey", draggable: 1, spellcheck: 1, autocapitalize: 1, inputMode: "inputmode", style: 1, tabIndex: "tabindex", enterKeyHint: "enterkeyhint" }],
HTMLAnchor: [1, { target: 1, download: 1, ping: 1, rel: 1, relList: "rel", hreflang: 1, type: 1, referrerPolicy: "referrerpolicy", coords: 1, charset: 1, name: 1, rev: 1, shape: 1, href: 1 }],
HTMLArea: [1, { alt: 1, coords: 1, download: 1, shape: 1, target: 1, ping: 1, rel: 1, relList: "rel", referrerPolicy: "referrerpolicy", href: 1 }],
HTMLMedia: [1, { src: 1, crossOrigin: "crossorigin", preload: 1, controlsList: "controlslist" }],
HTMLAudio: [4, {}],
HTMLBase: [1, { href: 1, target: 1 }],
HTMLQuote: [1, { cite: 1 }],
HTMLBody: [1, { text: 1, link: 1, vLink: "vlink", aLink: "alink", bgColor: "bgcolor", background: 1 }],
HTMLBR: [1, { clear: 1 }],
HTMLButton: [1, { formAction: "formaction", formEnctype: "formenctype", formMethod: "formmethod", formTarget: "formtarget", name: 1, type: 1, value: 1 }],
HTMLCanvas: [1, { width: 1, height: 1 }],
HTMLTableCaption: [1, { align: 1 }],
HTMLTableCol: [1, { span: 1, align: 1, ch: "char", chOff: "charoff", vAlign: "valign", width: 1 }],
HTMLData: [1, { value: 1 }],
HTMLDataList: [1, {}],
HTMLMod: [1, { cite: 1, dateTime: "datetime" }],
HTMLDetails: [1, {}],
HTMLDialog: [1, {}],
HTMLDiv: [1, { align: 1 }],
HTMLDList: [1, {}],
HTMLEmbed: [1, { src: 1, type: 1, width: 1, height: 1, align: 1, name: 1 }],
HTMLFieldSet: [1, { name: 1 }],
HTMLForm: [1, { acceptCharset: "accept-charset", action: 1, autocomplete: 1, enctype: 1, encoding: "enctype", method: 1, name: 1, target: 1 }],
HTMLHeading: [1, { align: 1 }],
HTMLHead: [1, {}],
HTMLHR: [1, { align: 1, color: 1, size: 1, width: 1 }],
HTMLHtml: [1, { version: 1 }],
HTMLIFrame: [1, { src: 1, srcdoc: 1, name: 1, sandbox: 1, width: 1, height: 1, referrerPolicy: "referrerpolicy", csp: 1, allow: 1, align: 1, scrolling: 1, frameBorder: "frameborder", longDesc: "longdesc", marginHeight: "marginheight", marginWidth: "marginwidth", loading: 1 }],
HTMLImage: [1, { alt: 1, src: 1, srcset: 1, sizes: 1, crossOrigin: "crossorigin", useMap: "usemap", width: 1, height: 1, referrerPolicy: "referrerpolicy", decoding: 1, name: 1, lowsrc: 1, align: 1, hspace: 1, vspace: 1, longDesc: "longdesc", border: 1, loading: 1 }],
HTMLInput: [1, { accept: 1, alt: 1, autocomplete: 1, dirName: "dirname", formAction: "formaction", formEnctype: "formenctype", formMethod: "formmethod", formTarget: "formtarget", height: 1, max: 1, maxLength: "maxlength", min: 1, minLength: "minlength", name: 1, pattern: 1, placeholder: 1, src: 1, step: 1, type: 1, defaultValue: "value", width: 1, align: 1, useMap: "usemap" }],
HTMLLabel: [1, { htmlFor: "for" }],
HTMLLegend: [1, { align: 1 }],
HTMLLI: [1, { value: 1, type: 1 }],
HTMLLink: [1, { href: 1, crossOrigin: "crossorigin", rel: 1, relList: "rel", media: 1, hreflang: 1, type: 1, as: 1, referrerPolicy: "referrerpolicy", sizes: 1, imageSrcset: "imagesrcset", imageSizes: "imagesizes", charset: 1, rev: 1, target: 1, integrity: 1 }],
HTMLMap: [1, { name: 1 }],
HTMLMenu: [1, {}],
HTMLMeta: [1, { name: 1, httpEquiv: "http-equiv", content: 1, scheme: 1 }],
HTMLMeter: [1, { value: 1, min: 1, max: 1, low: 1, high: 1, optimum: 1 }],
HTMLObject: [1, { data: 1, type: 1, name: 1, useMap: "usemap", width: 1, height: 1, align: 1, archive: 1, code: 1, hspace: 1, standby: 1, vspace: 1, codeBase: "codebase", codeType: "codetype", border: 1 }],
HTMLOList: [1, { start: 1, type: 1 }],
HTMLOptGroup: [1, { label: 1 }],
HTMLOption: [1, { label: 1, value: 1 }],
HTMLOutput: [1, { htmlFor: "for", name: 1 }],
HTMLParagraph: [1, { align: 1 }],
HTMLParam: [1, { name: 1, value: 1, type: 1, valueType: "valuetype" }],
HTMLPicture: [1, {}],
HTMLPre: [1, { width: 1 }],
HTMLProgress: [1, { value: 1, max: 1 }],
HTMLScript: [1, { src: 1, type: 1, charset: 1, crossOrigin: "crossorigin", referrerPolicy: "referrerpolicy", event: 1, htmlFor: "for", integrity: 1 }],
HTMLSelect: [1, { autocomplete: 1, name: 1, size: 1 }],
HTMLSlot: [1, { name: 1 }],
HTMLSource: [1, { src: 1, type: 1, srcset: 1, sizes: 1, media: 1 }],
HTMLSpan: [1, {}],
HTMLStyle: [1, { media: 1, type: 1 }],
HTMLTable: [1, { align: 1, border: 1, frame: 1, rules: 1, summary: 1, width: 1, bgColor: "bgcolor", cellPadding: "cellpadding", cellSpacing: "cellspacing" }],
HTMLTableSection: [1, { align: 1, ch: "char", chOff: "charoff", vAlign: "valign" }],
HTMLTableCell: [1, { colSpan: "colspan", rowSpan: "rowspan", headers: 1, align: 1, axis: 1, height: 1, width: 1, ch: "char", chOff: "charoff", vAlign: "valign", bgColor: "bgcolor", abbr: 1, scope: 1 }],
HTMLTemplate: [1, {}],
HTMLTextArea: [1, { autocomplete: 1, cols: 1, dirName: "dirname", maxLength: "maxlength", minLength: "minlength", name: 1, placeholder: 1, rows: 1, wrap: 1 }],
HTMLTime: [1, { dateTime: "datetime" }],
HTMLTitle: [1, {}],
HTMLTableRow: [1, { align: 1, ch: "char", chOff: "charoff", vAlign: "valign", bgColor: "bgcolor" }],
HTMLTrack: [1, { kind: 1, src: 1, srclang: 1, label: 1 }],
HTMLUList: [1, { type: 1 }],
HTMLVideo: [4, { width: 1, height: 1, poster: 1 }],
SVG: [-1, {}],
SVGGraphics: [66, { transform: 1 }],
SVGA: [67, {}],
SVGAnimation: [66, {}],
SVGAnimate: [69, {}],
SVGAnimateMotion: [69, {}],
SVGAnimateTransform: [69, {}],
SVGGeometry: [67, {}],
SVGCircle: [73, { cx: 1, cy: 1, r: 1 }],
SVGClipPath: [67, { clipPathUnits: 1 }],
SVGDefs: [67, {}],
SVGDesc: [66, {}],
SVGDiscard: [66, {}],
SVGEllipse: [73, { cx: 1, cy: 1, rx: 1, ry: 1 }],
SVGFEBlend: [66, { mode: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEColorMatrix: [66, { type: 1, values: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEComponentTransfer: [66, { x: 1, y: 1, width: 1, height: 1 }],
SVGFEComposite: [66, { operator: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEConvolveMatrix: [66, { orderX: 1, orderY: 1, kernelMatrix: 1, divisor: 1, edgeMode: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEDiffuseLighting: [66, { surfaceScale: 1, diffuseConstant: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEDisplacementMap: [66, { xChannelSelector: 1, yChannelSelector: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEDistantLight: [66, {}],
SVGFEDropShadow: [66, { dx: 1, dy: 1, stdDeviationX: 1, stdDeviationY: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEFlood: [66, { x: 1, y: 1, width: 1, height: 1 }],
SVGComponentTransferFunction: [66, { type: 1, tableValues: 1, slope: 1, amplitude: 1, exponent: 1 }],
SVGFEFuncA: [90, {}],
SVGFEFuncB: [90, {}],
SVGFEFuncG: [90, {}],
SVGFEFuncR: [90, {}],
SVGFEGaussianBlur: [66, { x: 1, y: 1, width: 1, height: 1 }],
SVGFEImage: [66, { preserveAspectRatio: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEMerge: [66, { x: 1, y: 1, width: 1, height: 1 }],
SVGFEMergeNode: [66, {}],
SVGFEMorphology: [66, { operator: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFEOffset: [66, { x: 1, y: 1, width: 1, height: 1 }],
SVGFEPointLight: [66, {}],
SVGFESpecularLighting: [66, { surfaceScale: 1, specularConstant: 1, specularExponent: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFESpotLight: [66, { specularExponent: 1 }],
SVGFETile: [66, { x: 1, y: 1, width: 1, height: 1 }],
SVGFETurbulence: [66, { numOctaves: 1, stitchTiles: 1, type: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGFilter: [66, { filterUnits: 1, primitiveUnits: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGForeignObject: [67, { x: 1, y: 1, width: 1, height: 1 }],
SVGG: [67, {}],
SVGImage: [67, { x: 1, y: 1, width: 1, height: 1, preserveAspectRatio: 1 }],
SVGLine: [73, { x1: 1, y1: 1, x2: 1, y2: 1 }],
SVGGradient: [66, { gradientUnits: 1, gradientTransform: 1, spreadMethod: 1 }],
SVGLinearGradient: [111, { x1: 1, y1: 1, x2: 1, y2: 1 }],
SVGMarker: [66, { refX: 1, refY: 1, markerUnits: 1, markerWidth: 1, markerHeight: 1, orientType: 1, orientAngle: 1, viewBox: 1, preserveAspectRatio: 1 }],
SVGMask: [66, { maskUnits: 1, maskContentUnits: 1, x: 1, y: 1, width: 1, height: 1 }],
SVGMetadata: [66, {}],
SVGMPath: [66, {}],
SVGPath: [73, {}],
SVGPattern: [66, { patternUnits: 1, patternContentUnits: 1, patternTransform: 1, x: 1, y: 1, width: 1, height: 1, viewBox: 1, preserveAspectRatio: 1 }],
SVGPolygon: [73, {}],
SVGPolyline: [73, {}],
SVGRadialGradient: [111, { cx: 1, cy: 1, r: 1, fx: 1, fy: 1, fr: 1 }],
SVGRect: [73, { x: 1, y: 1, width: 1, height: 1, rx: 1, ry: 1 }],
SVGScript: [66, {}],
SVGSet: [69, {}],
SVGStop: [66, {}],
SVGStyle: [66, {}],
SVGSVG: [67, { x: 1, y: 1, width: 1, height: 1, viewBox: 1, preserveAspectRatio: 1 }],
SVGSwitch: [67, {}],
SVGSymbol: [66, { viewBox: 1, preserveAspectRatio: 1 }],
SVGTextContent: [67, { textLength: 1, lengthAdjust: 1 }],
SVGTextPositioning: [130, { x: 1, y: 1, dx: 1, dy: 1, rotate: 1 }],
SVGText: [131, {}],
SVGTextPath: [130, { startOffset: 1, method: 1, spacing: 1 }],
SVGTitle: [66, {}],
SVGTSpan: [131, {}],
SVGUse: [67, { x: 1, y: 1, width: 1, height: 1 }],
SVGView: [66, { viewBox: 1, preserveAspectRatio: 1 }]
};
var TAG_NAMES2 = exports.TAG_NAMES = {
a: 2,
abbr: 1,
address: 1,
area: 3,
article: 1,
aside: 1,
audio: 5,
b: 1,
base: 6,
bdi: 1,
bdo: 1,
blockquote: 7,
body: 8,
br: 9,
button: 10,
canvas: 11,
caption: 12,
cite: 1,
code: 1,
col: 13,
colgroup: 13,
data: 14,
datalist: 15,
dd: 1,
del: 16,
details: 17,
dfn: 1,
dialog: 18,
div: 19,
dl: 20,
dt: 1,
em: 1,
embed: 21,
fieldset: 22,
figcaption: 1,
figure: 1,
footer: 1,
form: 23,
h1: 24,
h2: 24,
h3: 24,
h4: 24,
h5: 24,
h6: 24,
head: 25,
header: 1,
hgroup: 1,
hr: 26,
html: 27,
i: 1,
iframe: 28,
img: 29,
input: 30,
ins: 16,
kbd: 1,
label: 31,
legend: 32,
li: 33,
link: 34,
main: 1,
map: 35,
mark: 1,
menu: 36,
meta: 37,
meter: 38,
nav: 1,
noscript: 1,
object: 39,
ol: 40,
optgroup: 41,
option: 42,
output: 43,
p: 44,
param: 45,
picture: 46,
pre: 47,
progress: 48,
q: 7,
rp: 1,
rt: 1,
ruby: 1,
s: 1,
samp: 1,
script: 49,
section: 1,
select: 50,
slot: 51,
small: 1,
source: 52,
span: 53,
strike: 1,
strong: 1,
style: 54,
sub: 1,
summary: 1,
sup: 1,
table: 55,
tbody: 56,
td: 57,
template: 58,
textarea: 59,
tfoot: 56,
th: 57,
thead: 56,
time: 60,
title: 61,
tr: 62,
track: 63,
u: 1,
ul: 64,
"var": 1,
video: 65,
wbr: 1,
svg_a: 68,
svg_animate: 70,
svg_animateMotion: 71,
svg_animateTransform: 72,
svg_audio: 66,
svg_canvas: 66,
svg_circle: 74,
svg_clipPath: 75,
svg_defs: 76,
svg_desc: 77,
svg_discard: 78,
svg_ellipse: 79,
svg_feBlend: 80,
svg_feColorMatrix: 81,
svg_feComponentTransfer: 82,
svg_feComposite: 83,
svg_feConvolveMatrix: 84,
svg_feDiffuseLighting: 85,
svg_feDisplacementMap: 86,
svg_feDistantLight: 87,
svg_feDropShadow: 88,
svg_feFlood: 89,
svg_feFuncA: 91,
svg_feFuncB: 92,
svg_feFuncG: 93,
svg_feFuncR: 94,
svg_feGaussianBlur: 95,
svg_feImage: 96,
svg_feMerge: 97,
svg_feMergeNode: 98,
svg_feMorphology: 99,
svg_feOffset: 100,
svg_fePointLight: 101,
svg_feSpecularLighting: 102,
svg_feSpotLight: 103,
svg_feTile: 104,
svg_feTurbulence: 105,
svg_filter: 106,
svg_foreignObject: 107,
svg_g: 108,
svg_iframe: 66,
svg_image: 109,
svg_line: 110,
svg_linearGradient: 112,
svg_marker: 113,
svg_mask: 114,
svg_metadata: 115,
svg_mpath: 116,
svg_path: 117,
svg_pattern: 118,
svg_polygon: 119,
svg_polyline: 120,
svg_radialGradient: 121,
svg_rect: 122,
svg_script: 123,
svg_set: 124,
svg_stop: 125,
svg_style: 126,
svg_svg: 127,
svg_switch: 128,
svg_symbol: 129,
svg_text: 132,
svg_textPath: 133,
svg_title: 134,
svg_tspan: 135,
svg_unknown: 66,
svg_use: 136,
svg_video: 66,
svg_view: 137
};
var keys = Object.keys(TAG_TYPES);
for (let i = 0, items = iter$(keys), len = items.length, typ; i < len; i++) {
typ = items[i];
let item = TAG_TYPES[typ];
item.up = TAG_TYPES[keys[item[0]]];
item.name = typ + "Element";
}
for (let ref, i = 0, keys1 = Object.keys(TAG_NAMES2), l = keys1.length, name; i < l; i++) {
name = keys1[i];
ref = TAG_NAMES2[name];
TAG_NAMES2[name] = TAG_TYPES[keys[ref]];
}
}
});
var runtime_exports = {};
__export2(runtime_exports, {
ClassFlags: () => ClassFlags,
HAS: () => HAS,
__has__$: () => __has__$,
__hooks__$: () => __hooks__$,
__imba__$: () => __imba__$,
__init__$: () => __init__$,
__inited__$: () => __inited__$,
__initor__$: () => __initor__$,
__meta__$: () => __meta__$,
__mixin__$: () => __mixin__$,
__patch__$: () => __patch__$,
augment$: () => augment$,
decorate$: () => decorate$,
extend$: () => extend$,
has$: () => has$,
idx$: () => idx$,
inited$: () => inited$,
is$: () => is$,
isa$: () => isa$,
iterable$: () => iterable$,
matcher: () => matcher,
mixes: () => mixes,
multi$: () => multi$,
register$: () => register$,
statics$: () => statics$,
sup$: () => sup$
});
function is$(a, b) {
var _a;
return a === b || ((_a = b == null ? void 0 : b[matcher]) == null ? void 0 : _a.call(b, a));
}
function isa$(a, b) {
var _a;
return typeof b === "string" ? typeof a === b : (_a = b == null ? void 0 : b[Symbol.hasInstance]) == null ? void 0 : _a.call(b, a);
}
function has$(a, b) {
var _a, _b, _c, _d, _e, _f;
return (_f = (_e = (_c = (_a = b == null ? void 0 : b[__has__$]) == null ? void 0 : _a.call(b, a)) != null ? _c : (_b = b == null ? void 0 : b.includes) == null ? void 0 : _b.call(b, a)) != null ? _e : (_d = b == null ? void 0 : b.has) == null ? void 0 : _d.call(b, a)) != null ? _f : false;
}
function idx$(a, b) {
return (b == null ? void 0 : b.indexOf) ? b.indexOf(a) : Array.prototype.indexOf.call(a, b);
}
function statics$(scope) {
return statics.get(scope) || statics.set(scope, {}).get(scope);
}
function iterable$(a) {
var _a;
return ((_a = a == null ? void 0 : a.toIterable) == null ? void 0 : _a.call(a)) || a;
}
function decorate$(decorators, target, key, desc) {
let c = arguments.length;
let r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
let d;
let i = decorators.length;
while (i > 0) {
if (d = decorators[--i]) {
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
}
;
}
;
c > 3 && r && Object.defineProperty(target, key, r);
return r;
}
function isSameDesc(a, b) {
if (!a || !b)
return false;
if (a.get)
return b.get === a.get;
if (a.set)
return b.set === a.set;
if (a.value)
return a.value === b.value;
}
function extend$(target, ext, descs) {
const klass = target.constructor;
descs != null ? descs : descs = Object.getOwnPropertyDescriptors(ext);
const originals = Object.getOwnPropertyDescriptors(target);
delete descs.constructor;
if (descs[__init__$]) {
delete descs[__init__$];
}
;
Object.defineProperties(target, descs);
let meta = klass[__meta__$];
if (meta && meta.augments) {
for (let target2 of meta.augments) {
let current = Object.getOwnPropertyDescriptors(target2.prototype);
let defines = {};
for (let key of Object.keys(descs)) {
let prop = descs[key];
if (current[key] && !isSameDesc(originals[key], current[key]))
console.warn("wont extend", key);
else
defines[key] = prop;
}
if (Object.keys(defines).length)
extend$(target2.prototype, null, defines);
}
}
return target;
}
function augment$(klass, mixin, meta) {
meta || (meta = klass[__meta__$]);
let mix = mixin[__meta__$];
meta.uses || (meta.uses = []);
meta.inits || (meta.inits = []);
if (mix.parent) {
if (!(klass.prototype instanceof mix.parent)) {
throw new Error(`Mixin ${mix.name} has superclass not present in target class`);
}
}
if (!mix.augments) {
mix.augments = /* @__PURE__ */ new Set();
let ref = mix.ref = /* @__PURE__ */ Symbol();
mixin.prototype[ref] = true;
Object.defineProperty(mixin, Symbol.hasInstance, {
value: function(rel) {
return rel && !!rel[ref];
}
});
}
if (klass.prototype[mix.ref]) {
return klass;
}
for (let v of mix.uses || []) {
augment$(klass, v, meta);
}
mix.augments.add(klass);
meta.uses.push(mixin);
let descs = Object.getOwnPropertyDescriptors(mixin.prototype);
delete descs.constructor;
delete descs.name;
if (descs[__init__$]) {
meta.inits.push(mixin.prototype[__init__$]);
delete descs[__init__$];
}
Object.defineProperties(klass.prototype, descs);
meta.top.version++;
return klass;
}
function multi$(symbol, sup2, ...mixins) {
let Mixins = sup2 ? class extends sup2 {
} : class {
};
let meta = Mixins[__meta__$] = meta$(sup2, symbol);
meta.parent = sup2 || false;
for (let mixin of mixins) {
augment$(Mixins, mixin, meta);
}
Mixins.prototype[symbol] = function(o, deep, fields) {
if (meta.inits)
for (let init of meta.inits) {
init.call(this, o, false, fields);
}
return;
};
return Mixins;
}
function meta$(up, symbol) {
let mup = up && up[__meta__$] || null;
if ((mup == null ? void 0 : mup.symbol) == symbol)
return mup;
let meta = Object.create(mup);
meta.top || (meta.top = { version: 0 });
meta.parent = null;
meta.own = {};
meta.up = mup;
meta.symbol = symbol;
meta.augments = null;
meta.inits = null;
meta.uses = null;
meta.top[symbol] = meta;
return meta;
}
function sup$(self, symbol) {
sup.self = self;
sup.target = sup.cache[symbol];
return sup.proxy;
}
function register$(klass, symbol, name, flags, into = null) {
var _a, _b;
if (into) {
let target = flags & ClassFlags.IsObjectExtension ? into : into.prototype;
if (flags & ClassFlags.HasSuperCalls) {
sup.cache[symbol] = Object.create(
Object.getPrototypeOf(target),
Object.getOwnPropertyDescriptors(target)
);
}
extend$(target, klass.prototype);
return into;
}
let supr = (_a = Object.getPrototypeOf(klass.prototype)) == null ? void 0 : _a.constructor;
let meta = klass[__meta__$] = meta$(supr, symbol);
if (meta.parent)
supr = meta.parent;
if (klass.name !== name && name) {
Object.defineProperty(klass, "name", { value: name, configurable: true });
}
meta.id = state.counter++;
meta.parent = supr;
meta.flags = flags;
meta.name = klass.name;
meta.symbol = symbol;
let own = meta[symbol] || (meta[symbol] = {});
(_b = own.parent) != null ? _b : own.parent = supr;
meta.top.version++;
if (flags & ClassFlags.HasConstructor)
klass.prototype[__initor__$] = symbol;
if ((supr == null ? void 0 : supr.inherited) instanceof Function)
supr.inherited(klass);
return klass;
}
function inited$(obj, symbol) {
var _a;
if (obj[__initor__$] === symbol) {
(_a = obj[__inited__$]) == null ? void 0 : _a.call(obj);
obj[__hooks__$] && obj[__hooks__$].inited(obj);
}
}
var __init__$, __initor__$, __inited__$, __hooks__$, __patch__$, __has__$, __meta__$, __imba__$, __mixin__$, matcher, HAS, ClassFlags, state, statics, mixes, sup;
var init_runtime = __esm({
"src/imba/runtime.mjs"() {
__init__$ = /* @__PURE__ */ Symbol.for("#__init__");
__initor__$ = /* @__PURE__ */ Symbol.for("#__initor__");
__inited__$ = /* @__PURE__ */ Symbol.for("#__inited__");
__hooks__$ = /* @__PURE__ */ Symbol.for("#__hooks__");
__patch__$ = /* @__PURE__ */ Symbol.for("#__patch__");
__has__$ = /* @__PURE__ */ Symbol.for("#has");
__meta__$ = /* @__PURE__ */ Symbol.for("#meta");
__imba__$ = /* @__PURE__ */ Symbol.for("imba");
__mixin__$ = /* @__PURE__ */ Symbol.for("#__mixin__");
matcher = /* @__PURE__ */ Symbol.for("#matcher");
HAS = {
SUPERCALLS: 1 << 3,
CONSTRUCTOR: 1 << 4
};
ClassFlags = {
IsExtension: 1 << 0,
IsTag: 1 << 1,
HasDescriptors: 1 << 2,
HasSuperCalls: 1 << 3,
HasConstructor: 1 << 4,
HasFields: 1 << 5,
HasMixins: 1 << 6,
HasInitor: 1 << 7,
HasDecorators: 1 << 8,
IsObjectExtension: 1 << 9
};
state = globalThis[__imba__$] || (globalThis[__imba__$] = {
counter: 0,
classes: {}
});
statics = /* @__PURE__ */ new WeakMap();
mixes = multi$;
sup = {
cache: {},
self: null,
target: null,
proxy: new Proxy({}, {
apply: (_, key, ...params) => {
return sup.target[key].apply(sup.self, params);
},
get: (_, key) => {
return Reflect.get(sup.target, key, sup.self);
},
set: (_, key, value, receiver) => {
return Reflect.set(sup.target, key, value, sup.self);
}
})
};
}
});
var $source$, $lineText$, $version$, DOCMAP, c$0, _Position, Position, c$1, _Range, Range, DiagnosticSeverity, c$2, _Diagnostic, Diagnostic;
var init_structures = __esm({
"src/program/structur