Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@tko/utils.parser

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tko/utils.parser - npm Package Compare versions

Comparing version
4.0.0-beta1.6
to
4.0.0
+3
-3
dist/Arguments.js

@@ -0,3 +1,3 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import Node from "./Node";

@@ -10,4 +10,4 @@ export default class Arguments {

get_value(parent, context, globals, node) {
var deReffedArgs = [];
for (var i = 0, j = this.args.length; i < j; ++i) {
const deReffedArgs = new Array();
for (let i = 0, j = this.args.length; i < j; ++i) {
deReffedArgs.push(Node.value_of(this.args[i], context, globals, node));

@@ -14,0 +14,0 @@ }

{
"version": 3,
"sources": ["../src/Arguments.ts"],
"sourcesContent": ["\nimport Node from './Node'\n\nexport default class Arguments {\n constructor (parser, args) {\n this.parser = parser\n this.args = args\n }\n\n get_value (parent, context, globals, node) {\n var deReffedArgs = []\n for (var i = 0, j = this.args.length; i < j; ++i) {\n deReffedArgs.push(Node.value_of(this.args[i], context, globals, node))\n }\n return deReffedArgs\n };\n\n get [Node.isExpressionOrIdentifierSymbol] () { return true }\n}\n"],
"mappings": ";;AACA,OAAO,UAAU;AAEjB,qBAAqB,UAAU;AAAA,EAC7B,YAAa,QAAQ,MAAM;AACzB,SAAK,SAAS;AACd,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,UAAW,QAAQ,SAAS,SAAS,MAAM;AACzC,QAAI,eAAe,CAAC;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAChD,mBAAa,KAAK,KAAK,SAAS,KAAK,KAAK,IAAI,SAAS,SAAS,IAAI,CAAC;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,KAAK,kCAAmC;AAAE,WAAO;AAAA,EAAK;AAC7D;",
"sourcesContent": ["import Node from './Node'\n\nexport default class Arguments {\n private parser: any\n private args: any\n\n constructor(parser, args) {\n this.parser = parser\n this.args = args\n }\n\n get_value(parent, context, globals, node) {\n const deReffedArgs = new Array()\n for (let i = 0, j = this.args.length; i < j; ++i) {\n deReffedArgs.push(Node.value_of(this.args[i], context, globals, node))\n }\n return deReffedArgs\n }\n\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true\n }\n}\n"],
"mappings": ";;AAAA,OAAO,UAAU;AAEjB,qBAAqB,UAAU;AAAA,EAI7B,YAAY,QAAQ,MAAM;AACxB,SAAK,SAAS;AACd,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,UAAU,QAAQ,SAAS,SAAS,MAAM;AACxC,UAAM,eAAe,IAAI,MAAM;AAC/B,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAChD,mBAAa,KAAK,KAAK,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,SAAS,IAAI,CAAC;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,KAAK,8BAA8B,IAAI;AAC1C,WAAO;AAAA,EACT;AACF;",
"names": []
}

@@ -0,3 +1,3 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import Node from "./Node";

@@ -9,2 +9,5 @@ export default class Expression {

}
/**
* Return the value of `this` Expression instance.
*/
get_value(parent, context, globals, node) {

@@ -11,0 +14,0 @@ if (!this.root) {

{
"version": 3,
"sources": ["../src/Expression.ts"],
"sourcesContent": ["\nimport Node from './Node'\n\nexport default class Expression {\n constructor (nodes) {\n this.nodes = nodes\n this.root = Node.create_root(nodes)\n }\n\n /**\n * Return the value of `this` Expression instance.\n */\n get_value (parent, context, globals, node) {\n if (!this.root) {\n this.root = Node.create_root(this.nodes)\n }\n return this.root.get_value(parent, context, globals, node)\n }\n}\n\nExpression.prototype[Node.isExpressionOrIdentifierSymbol] = true\n"],
"mappings": ";;AACA,OAAO,UAAU;AAEjB,qBAAqB,WAAW;AAAA,EAC9B,YAAa,OAAO;AAClB,SAAK,QAAQ;AACb,SAAK,OAAO,KAAK,YAAY,KAAK;AAAA,EACpC;AAAA,EAKA,UAAW,QAAQ,SAAS,SAAS,MAAM;AACzC,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,OAAO,KAAK,YAAY,KAAK,KAAK;AAAA,IACzC;AACA,WAAO,KAAK,KAAK,UAAU,QAAQ,SAAS,SAAS,IAAI;AAAA,EAC3D;AACF;AAEA,WAAW,UAAU,KAAK,kCAAkC;",
"sourcesContent": ["import Node from './Node'\n\nexport default class Expression {\n private nodes: any\n root: any\n\n constructor(nodes) {\n this.nodes = nodes\n this.root = Node.create_root(nodes)\n }\n\n /**\n * Return the value of `this` Expression instance.\n */\n get_value(parent, context, globals, node) {\n if (!this.root) {\n this.root = Node.create_root(this.nodes)\n }\n return this.root.get_value(parent, context, globals, node)\n }\n}\n\nExpression.prototype[Node.isExpressionOrIdentifierSymbol] = true\n"],
"mappings": ";;AAAA,OAAO,UAAU;AAEjB,qBAAqB,WAAW;AAAA,EAI9B,YAAY,OAAO;AACjB,SAAK,QAAQ;AACb,SAAK,OAAO,KAAK,YAAY,KAAK;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,QAAQ,SAAS,SAAS,MAAM;AACxC,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,OAAO,KAAK,YAAY,KAAK,KAAK;AAAA,IACzC;AACA,WAAO,KAAK,KAAK,UAAU,QAAQ,SAAS,SAAS,IAAI;AAAA,EAC3D;AACF;AAEA,WAAW,UAAU,KAAK,8BAA8B,IAAI;",
"names": []
}

@@ -0,14 +1,8 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import Node from "./Node";
import Arguments from "./Arguments";
import { hasOwnProperty, isObjectLike } from "@tko/utils";
import {
isWriteableObservable,
isObservable
} from "@tko/observable";
import {
IDStart,
IDContinue
} from "./identifierExpressions";
import { isWriteableObservable, isObservable } from "@tko/observable";
import { IDStart, IDContinue } from "./identifierExpressions";
export default class Identifier {

@@ -20,5 +14,26 @@ constructor(parser, token, dereferences) {

}
/**
* Apply all () and [] functions on the identifier to the lhs value e.g.
* a()[3] has deref functions that are essentially this:
* [_deref_call, _deref_this where this=3]
*
* @param {mixed} value Should be an object.
* @return {mixed} The dereferenced value.
*
* [1] We want to bind any function that is a method of an object, but not
* corrupt any values (e.g. computed()s). e.g. Running x.bind(obj) where
* we're given `data-bind='binding: obj.x'` and x is a computed will
* break the computed's `this` and it will stop working as expected.
*
* The test `!last_value.hasOwnProperty(member)`
* distinguishes between functions on the prototype chain (prototypal
* members) and value-members added directly to the object. This may
* not be the canonical test for this relationship, but it succeeds
* in the known test cases.
*
* See: `this` tests of our dereference function.
*/
dereference(value, $context, globals, node) {
let member;
let refs = this.dereferences || [];
const refs = this.dereferences || [];
const $data = $context.$data || {};

@@ -44,2 +59,12 @@ let lastValue;

}
/**
* Return the value as one would get it from the top-level i.e.
* $data.token/$context.token/globals.token; this does not return intermediate
* values on a chain of members i.e. $data.hello.there -- requesting the
* Identifier('there').value will return $data/$context/globals.there.
*
* This will dereference using () or [arg] member.
* @param {object | Identifier | Expression} parent
* @return {mixed} Return the primitive or an accessor.
*/
get_value(parent, context, globals, node) {

@@ -56,2 +81,7 @@ const intermediate = parent && !(parent instanceof Identifier) ? Node.value_of(parent, context, globals, node)[this.token] : context.lookup(this.token, globals, node);

}
/**
* Set the value of the Identifier.
*
* @param {Mixed} new_value The value that Identifier is to be set to.
*/
set_value(new_value, $context, globals) {

@@ -69,3 +99,5 @@ const $data = $context.$data || {};

} else {
throw new Error("Identifier::set_value -- The property '" + leaf + "' does not exist on the $data, $context, or globals.");
throw new Error(
"Identifier::set_value -- The property '" + leaf + "' does not exist on the $data, $context, or globals."
);
}

@@ -93,2 +125,17 @@ n = refs.length;

}
/**
* Determine if a character is a valid item in an identifier.
* Note that we do not check whether the first item is a number, nor do we
* support unicode identifiers here.
*
* From: http://stackoverflow.com/a/9337047
* @param {String} ch The character
* @return {Boolean} True if this is a valid identifier
*/
// function is_identifier_char(ch) {
// return (ch >= 'A' && ch <= 'Z') ||
// (ch >= 'a' && ch <= 'z') ||
// (ch >= '0' && ch <= 9) ||
// ch === '_' || ch === '$';
// }
static is_valid_start_char(ch) {

@@ -95,0 +142,0 @@ return IDStart.test(ch);

{
"version": 3,
"sources": ["../src/Identifier.ts"],
"sourcesContent": ["\nimport Node from './Node'\nimport Arguments from './Arguments'\n\nimport { hasOwnProperty, isObjectLike } from '@tko/utils'\n\nimport {\n isWriteableObservable, isObservable\n} from '@tko/observable'\n\nimport {\n IDStart, IDContinue\n} from './identifierExpressions'\n\nexport default class Identifier {\n constructor (parser, token, dereferences) {\n this.token = token\n this.dereferences = dereferences\n this.parser = parser\n }\n\n /**\n * Apply all () and [] functions on the identifier to the lhs value e.g.\n * a()[3] has deref functions that are essentially this:\n * [_deref_call, _deref_this where this=3]\n *\n * @param {mixed} value Should be an object.\n * @return {mixed} The dereferenced value.\n *\n * [1] We want to bind any function that is a method of an object, but not\n * corrupt any values (e.g. computed()s). e.g. Running x.bind(obj) where\n * we're given `data-bind='binding: obj.x'` and x is a computed will\n * break the computed's `this` and it will stop working as expected.\n *\n * The test `!last_value.hasOwnProperty(member)`\n * distinguishes between functions on the prototype chain (prototypal\n * members) and value-members added directly to the object. This may\n * not be the canonical test for this relationship, but it succeeds\n * in the known test cases.\n *\n * See: `this` tests of our dereference function.\n */\n dereference (value, $context, globals, node) {\n let member\n let refs = this.dereferences || []\n const $data = $context.$data || {}\n let lastValue // becomes `this` in function calls to object properties.\n let i, n\n\n for (i = 0, n = refs.length; i < n; ++i) {\n member = Node.value_of(refs[i], $context, globals, node)\n\n if (typeof value === 'function' && refs[i] instanceof Arguments) {\n // fn(args)\n value = value.apply(lastValue || $data, member)\n lastValue = value\n } else if (value === null || value === undefined) {\n // This acts like optional chaining ?.\n return value\n } else {\n // obj[x] or obj.x dereference. Note that obj may be a function.\n lastValue = value\n value = Node.value_of(value[member], $context, globals, node)\n }\n }\n\n // [1] See note above.\n if (typeof value === 'function' && n > 0 && lastValue !== value &&\n !hasOwnProperty(lastValue, member)) {\n return value.bind(lastValue)\n }\n\n return value\n };\n\n /**\n * Return the value as one would get it from the top-level i.e.\n * $data.token/$context.token/globals.token; this does not return intermediate\n * values on a chain of members i.e. $data.hello.there -- requesting the\n * Identifier('there').value will return $data/$context/globals.there.\n *\n * This will dereference using () or [arg] member.\n * @param {object | Identifier | Expression} parent\n * @return {mixed} Return the primitive or an accessor.\n */\n get_value (parent, context, globals, node) {\n const intermediate = parent && !(parent instanceof Identifier)\n ? Node.value_of(parent, context, globals, node)[this.token]\n : context.lookup(this.token, globals, node)\n return this.dereference(intermediate, context, globals, node)\n }\n\n assign (object, property, value) {\n if (isWriteableObservable(object[property])) {\n object[property](value)\n } else if (!isObservable(object[property])) {\n object[property] = value\n }\n };\n\n /**\n * Set the value of the Identifier.\n *\n * @param {Mixed} new_value The value that Identifier is to be set to.\n */\n set_value (new_value, $context, globals) {\n const $data = $context.$data || {}\n const refs = this.dereferences || []\n let leaf = this.token\n let i, n, root\n\n if (isObjectLike($data) && leaf in $data) {\n root = $data\n } else if (leaf in $context) {\n root = $context\n } else if (leaf in globals) {\n root = globals\n } else {\n throw new Error('Identifier::set_value -- ' +\n \"The property '\" + leaf + \"' does not exist \" +\n 'on the $data, $context, or globals.')\n }\n\n // Degenerate case. {$data|$context|global}[leaf] = something;\n n = refs.length\n if (n === 0) {\n this.assign(root, leaf, new_value)\n return\n }\n\n // First dereference is {$data|$context|global}[token].\n root = root[leaf]\n\n // We cannot use this.dereference because that gives the leaf; to evoke\n // the ES5 setter we have to call `obj[leaf] = new_value`\n for (i = 0; i < n - 1; ++i) {\n leaf = refs[i]\n if (leaf instanceof Arguments) {\n root = root()\n } else {\n root = root[Node.value_of(leaf)]\n }\n }\n\n // We indicate that a dereference is a function when it is `true`.\n if (refs[i] === true) {\n throw new Error('Cannot assign a value to a function.')\n }\n\n // Call the setter for the leaf.\n if (refs[i]) {\n this.assign(root, Node.value_of(refs[i]), new_value)\n }\n };\n\n /**\n * Determine if a character is a valid item in an identifier.\n * Note that we do not check whether the first item is a number, nor do we\n * support unicode identifiers here.\n *\n * From: http://stackoverflow.com/a/9337047\n * @param {String} ch The character\n * @return {Boolean} True if this is a valid identifier\n */\n // function is_identifier_char(ch) {\n // return (ch >= 'A' && ch <= 'Z') ||\n // (ch >= 'a' && ch <= 'z') ||\n // (ch >= '0' && ch <= 9) ||\n // ch === '_' || ch === '$';\n // }\n static is_valid_start_char (ch) {\n return IDStart.test(ch)\n }\n\n static is_valid_continue_char (ch) {\n return IDContinue.test(ch)\n }\n\n get [Node.isExpressionOrIdentifierSymbol] () { return true }\n}\n"],
"mappings": "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",
"sourcesContent": ["import Node from './Node'\nimport Arguments from './Arguments'\nimport Parser from './Parser'\nimport { hasOwnProperty, isObjectLike } from '@tko/utils'\n\nimport { isWriteableObservable, isObservable } from '@tko/observable'\n\nimport { IDStart, IDContinue } from './identifierExpressions'\n\nexport default class Identifier {\n token: string\n dereferences: any\n parser: Parser\n\n constructor(parser: Parser, token: string, dereferences: any[]) {\n this.token = token\n this.dereferences = dereferences\n this.parser = parser\n }\n\n /**\n * Apply all () and [] functions on the identifier to the lhs value e.g.\n * a()[3] has deref functions that are essentially this:\n * [_deref_call, _deref_this where this=3]\n *\n * @param {mixed} value Should be an object.\n * @return {mixed} The dereferenced value.\n *\n * [1] We want to bind any function that is a method of an object, but not\n * corrupt any values (e.g. computed()s). e.g. Running x.bind(obj) where\n * we're given `data-bind='binding: obj.x'` and x is a computed will\n * break the computed's `this` and it will stop working as expected.\n *\n * The test `!last_value.hasOwnProperty(member)`\n * distinguishes between functions on the prototype chain (prototypal\n * members) and value-members added directly to the object. This may\n * not be the canonical test for this relationship, but it succeeds\n * in the known test cases.\n *\n * See: `this` tests of our dereference function.\n */\n dereference(value, $context, globals, node) {\n let member\n const refs = this.dereferences || []\n const $data = $context.$data || {}\n let lastValue // becomes `this` in function calls to object properties.\n let i, n\n\n for (i = 0, n = refs.length; i < n; ++i) {\n member = Node.value_of(refs[i], $context, globals, node)\n\n if (typeof value === 'function' && refs[i] instanceof Arguments) {\n // fn(args)\n value = value.apply(lastValue || $data, member)\n lastValue = value\n } else if (value === null || value === undefined) {\n // This acts like optional chaining ?.\n return value\n } else {\n // obj[x] or obj.x dereference. Note that obj may be a function.\n lastValue = value\n value = Node.value_of(value[member], $context, globals, node)\n }\n }\n\n // [1] See note above.\n if (typeof value === 'function' && n > 0 && lastValue !== value && !hasOwnProperty(lastValue, member)) {\n return value.bind(lastValue)\n }\n\n return value\n }\n\n /**\n * Return the value as one would get it from the top-level i.e.\n * $data.token/$context.token/globals.token; this does not return intermediate\n * values on a chain of members i.e. $data.hello.there -- requesting the\n * Identifier('there').value will return $data/$context/globals.there.\n *\n * This will dereference using () or [arg] member.\n * @param {object | Identifier | Expression} parent\n * @return {mixed} Return the primitive or an accessor.\n */\n get_value(parent, context, globals, node) {\n const intermediate =\n parent && !(parent instanceof Identifier)\n ? Node.value_of(parent, context, globals, node)[this.token]\n : context.lookup(this.token, globals, node)\n return this.dereference(intermediate, context, globals, node)\n }\n\n assign(object, property, value) {\n if (isWriteableObservable(object[property])) {\n object[property](value)\n } else if (!isObservable(object[property])) {\n object[property] = value\n }\n }\n\n /**\n * Set the value of the Identifier.\n *\n * @param {Mixed} new_value The value that Identifier is to be set to.\n */\n set_value(new_value, $context, globals) {\n const $data = $context.$data || {}\n const refs = this.dereferences || []\n let leaf: any = this.token\n let i, n, root\n\n if (isObjectLike($data) && leaf in $data) {\n root = $data\n } else if (leaf in $context) {\n root = $context\n } else if (leaf in globals) {\n root = globals\n } else {\n throw new Error(\n 'Identifier::set_value -- '\n + \"The property '\"\n + leaf\n + \"' does not exist \"\n + 'on the $data, $context, or globals.'\n )\n }\n\n // Degenerate case. {$data|$context|global}[leaf] = something;\n n = refs.length\n if (n === 0) {\n this.assign(root, leaf, new_value)\n return\n }\n\n // First dereference is {$data|$context|global}[token].\n root = root[leaf]\n\n // We cannot use this.dereference because that gives the leaf; to evoke\n // the ES5 setter we have to call `obj[leaf] = new_value`\n for (i = 0; i < n - 1; ++i) {\n leaf = refs[i]\n if (leaf instanceof Arguments) {\n root = root()\n } else {\n root = root[Node.value_of(leaf)]\n }\n }\n\n // We indicate that a dereference is a function when it is `true`.\n if (refs[i] === true) {\n throw new Error('Cannot assign a value to a function.')\n }\n\n // Call the setter for the leaf.\n if (refs[i]) {\n this.assign(root, Node.value_of(refs[i]), new_value)\n }\n }\n\n /**\n * Determine if a character is a valid item in an identifier.\n * Note that we do not check whether the first item is a number, nor do we\n * support unicode identifiers here.\n *\n * From: http://stackoverflow.com/a/9337047\n * @param {String} ch The character\n * @return {Boolean} True if this is a valid identifier\n */\n // function is_identifier_char(ch) {\n // return (ch >= 'A' && ch <= 'Z') ||\n // (ch >= 'a' && ch <= 'z') ||\n // (ch >= '0' && ch <= 9) ||\n // ch === '_' || ch === '$';\n // }\n static is_valid_start_char(ch) {\n return IDStart.test(ch)\n }\n\n static is_valid_continue_char(ch) {\n return IDContinue.test(ch)\n }\n\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true\n }\n}\n"],
"mappings": "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",
"names": []
}

@@ -0,4 +1,4 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
export var IDStart = /[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\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-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\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\u0AF9\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-\u0C39\u0C3D\u0C58-\u0C5A\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\u0D5F-\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-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\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-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\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]/;
export var IDContinue = /[\$0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\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-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\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\u0AF9\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\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\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\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\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-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\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-\u191E\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\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\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-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\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-\uFE2F\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]/;
export const IDStart = /[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\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-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\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\u0AF9\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-\u0C39\u0C3D\u0C58-\u0C5A\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\u0D5F-\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-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\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-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\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]/;
export const IDContinue = /[\$0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\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-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\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\u0AF9\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\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\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\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\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-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\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-\u191E\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\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\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-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\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-\uFE2F\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]/;
{
"version": 3,
"sources": ["../src/identifierExpressions.ts"],
"sourcesContent": ["/**\n * The following regular expressions were generated by\n * https://mathiasbynens.be/demo/javascript-identifier-regex\n */\nexport var IDStart = /[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\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-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\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\\u0AF9\\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-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\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\\u0D5F-\\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-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\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-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\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]/\n\nexport var IDContinue = /[\\$0-9A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\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-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\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\\u0AF9\\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\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\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\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\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-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\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-\\u191E\\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\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\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-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\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-\\uFE2F\\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]/\n"],
"mappings": ";;AAIO,WAAI,UAAU;AAEd,WAAI,aAAa;",
"sourcesContent": ["/**\n * The following regular expressions were generated by\n * https://mathiasbynens.be/demo/javascript-identifier-regex\n */\nexport const IDStart =\n /[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\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-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\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\\u0AF9\\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-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\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\\u0D5F-\\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-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\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-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\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]/\n\nexport const IDContinue =\n /[\\$0-9A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\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-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\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\\u0AF9\\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\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\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\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\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-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\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-\\u191E\\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\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\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-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\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-\\uFE2F\\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]/\n"],
"mappings": ";;AAIO,aAAM,UACX;AAEK,aAAM,aACX;",
"names": []
}

@@ -0,3 +1,3 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import operators from "./operators";

@@ -4,0 +4,0 @@ export { default as Parser } from "./Parser";

{
"version": 3,
"sources": ["../src/index.ts"],
"sourcesContent": ["import operators from './operators'\n\nexport {default as Parser} from './Parser'\nexport {default as Identifier} from './Identifier'\nexport {default as Arguments} from './Arguments'\nexport {default as Ternary} from './Ternary'\nexport {default as Node} from './Node'\n\nexport {default as parseObjectLiteral} from './preparse'\n\n\nexport function overloadOperator (op: string, fn: (a, b) => any, precedence?: number) {\n operators[op] = fn\n if (Number.isInteger(precedence)) {\n operators[op].precedence = precedence\n }\n}\n"],
"mappings": ";;AAAA,OAAO,eAAe;AAEtB,kCAAgC;AAChC,sCAAoC;AACpC,qCAAmC;AACnC,mCAAiC;AACjC,gCAA8B;AAE9B,8CAA4C;AAGrC,gBAAS,iBAAkB,IAAY,IAAmB,YAAqB;AACpF,YAAU,MAAM;AAChB,MAAI,OAAO,UAAU,UAAU,GAAG;AAChC,cAAU,IAAI,aAAa;AAAA,EAC7B;AACF;",
"sourcesContent": ["import operators from './operators'\n\nexport { default as Parser } from './Parser'\nexport { default as Identifier } from './Identifier'\nexport { default as Arguments } from './Arguments'\nexport { default as Ternary } from './Ternary'\nexport { default as Node } from './Node'\n\nexport { default as parseObjectLiteral } from './preparse'\n\nexport function overloadOperator(op: string, fn: (a, b) => any, precedence?: number) {\n operators[op] = fn\n if (Number.isInteger(precedence)) {\n operators[op].precedence = precedence\n }\n}\n"],
"mappings": ";;AAAA,OAAO,eAAe;AAEtB,SAAS,WAAW,cAAc;AAClC,SAAS,WAAW,kBAAkB;AACtC,SAAS,WAAW,iBAAiB;AACrC,SAAS,WAAW,eAAe;AACnC,SAAS,WAAW,YAAY;AAEhC,SAAS,WAAW,0BAA0B;AAEvC,gBAAS,iBAAiB,IAAY,IAAmB,YAAqB;AACnF,YAAU,EAAE,IAAI;AAChB,MAAI,OAAO,UAAU,UAAU,GAAG;AAChC,cAAU,EAAE,EAAE,aAAa;AAAA,EAC7B;AACF;",
"names": []
}

@@ -0,3 +1,3 @@

// @tko/utils.parser 🥊 4.0.0 MJS
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 MJS
import operators from "./operators";

@@ -4,0 +4,0 @@ export { default as Parser } from "./Parser";

{
"version": 3,
"sources": ["../src/index.ts"],
"sourcesContent": ["import operators from './operators'\n\nexport {default as Parser} from './Parser'\nexport {default as Identifier} from './Identifier'\nexport {default as Arguments} from './Arguments'\nexport {default as Ternary} from './Ternary'\nexport {default as Node} from './Node'\n\nexport {default as parseObjectLiteral} from './preparse'\n\n\nexport function overloadOperator (op: string, fn: (a, b) => any, precedence?: number) {\n operators[op] = fn\n if (Number.isInteger(precedence)) {\n operators[op].precedence = precedence\n }\n}\n"],
"mappings": ";;AAAA,OAAO,eAAe;AAEtB,kCAAgC;AAChC,sCAAoC;AACpC,qCAAmC;AACnC,mCAAiC;AACjC,gCAA8B;AAE9B,8CAA4C;AAGrC,gBAAS,iBAAkB,IAAY,IAAmB,YAAqB;AACpF,YAAU,MAAM;AAChB,MAAI,OAAO,UAAU,UAAU,GAAG;AAChC,cAAU,IAAI,aAAa;AAAA,EAC7B;AACF;",
"sourcesContent": ["import operators from './operators'\n\nexport { default as Parser } from './Parser'\nexport { default as Identifier } from './Identifier'\nexport { default as Arguments } from './Arguments'\nexport { default as Ternary } from './Ternary'\nexport { default as Node } from './Node'\n\nexport { default as parseObjectLiteral } from './preparse'\n\nexport function overloadOperator(op: string, fn: (a, b) => any, precedence?: number) {\n operators[op] = fn\n if (Number.isInteger(precedence)) {\n operators[op].precedence = precedence\n }\n}\n"],
"mappings": ";;AAAA,OAAO,eAAe;AAEtB,SAAS,WAAW,cAAc;AAClC,SAAS,WAAW,kBAAkB;AACtC,SAAS,WAAW,iBAAiB;AACrC,SAAS,WAAW,eAAe;AACnC,SAAS,WAAW,YAAY;AAEhC,SAAS,WAAW,0BAA0B;AAEvC,gBAAS,iBAAiB,IAAY,IAAmB,YAAqB;AACnF,YAAU,EAAE,IAAI;AAChB,MAAI,OAAO,UAAU,UAAU,GAAG;AAChC,cAAU,EAAE,EAAE,aAAa;AAAA,EAC7B;AACF;",
"names": []
}

@@ -0,11 +1,6 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import {
unwrap
} from "@tko/observable";
import {
default as operators,
LAMBDA
} from "./operators";
const IS_EXPR_OR_IDENT = Symbol("Node - Is Expression Or Identifier");
import { unwrap } from "@tko/observable";
import { default as operators, LAMBDA } from "./operators";
const IS_EXPR_OR_IDENT = /* @__PURE__ */ Symbol("Node - Is Expression Or Identifier");
export default class Node {

@@ -32,2 +27,11 @@ constructor(lhs, op, rhs) {

}
/**
* Return a function that calculates and returns an expression's value
* when called.
* @param {array} ops The operations to perform
* @return {function} The function that calculates the expression.
*
* Note that for a lambda, we do not evaluate the RHS expression until
* the lambda is called.
*/
get_value(notused, context, globals, node) {

@@ -52,2 +56,5 @@ var node = this;

}
//
// Class variables.
//
static get isExpressionOrIdentifierSymbol() {

@@ -65,9 +72,15 @@ return IS_EXPR_OR_IDENT;

}
/**
* Convert an array of nodes to an executable tree.
* @return {object} An object with a `lhs`, `rhs` and `op` key, corresponding
* to the left hand side, right hand side, and
* operation function.
*/
static create_root(nodes, debug = false) {
const out = [];
const ops = [];
const out = new Array();
const ops = new Array();
for (let i = 0; i < nodes.length; i += 2) {
out.push(nodes[i]);
const op = nodes[i + 1];
const prec = (op == null ? void 0 : op.precedence) || 0;
const prec = op?.precedence || 0;
while (ops.length && prec <= ops[ops.length - 1].precedence) {

@@ -74,0 +87,0 @@ const rhs = out.pop();

{
"version": 3,
"sources": ["../src/Node.ts"],
"sourcesContent": ["\nimport {\n unwrap\n} from '@tko/observable'\n\nimport {\n default as operators,\n LAMBDA\n} from './operators'\n\nconst IS_EXPR_OR_IDENT = Symbol('Node - Is Expression Or Identifier')\n\nexport default class Node {\n constructor (lhs, op, rhs) {\n this.lhs = lhs\n this.op = op\n this.rhs = rhs\n }\n\n static get operators () { return operators }\n\n get_leaf_value (leaf, context, globals, node) {\n if (typeof leaf === 'function') {\n // Expressions on observables are nonsensical, so we unwrap any\n // function values (e.g. identifiers).\n return unwrap(leaf())\n }\n\n // primitives\n if (typeof leaf !== 'object' || leaf === null) { return leaf }\n\n // Identifiers and Expressions\n if (leaf[Node.isExpressionOrIdentifierSymbol]) {\n // lhs is passed in as the parent of the leaf. It will be defined in\n // cases like a.b.c as 'a' for 'b' then as 'b' for 'c'.\n return unwrap(leaf.get_value(undefined, context, globals, node))\n }\n\n // Plain object/class.\n return leaf\n }\n\n /**\n * Return a function that calculates and returns an expression's value\n * when called.\n * @param {array} ops The operations to perform\n * @return {function} The function that calculates the expression.\n *\n * Note that for a lambda, we do not evaluate the RHS expression until\n * the lambda is called.\n */\n get_value (notused, context, globals, node) {\n var node = this\n\n if (node.op === LAMBDA) {\n return (...args) => {\n let lambdaContext = context\n if (node.lhs) {\n lambdaContext = node.lhs.extendContext(context, args)\n }\n return node.get_leaf_value(node.rhs, lambdaContext, globals, node)\n }\n }\n\n const lhv = node.get_leaf_value(node.lhs, context, globals, node)\n const earlyOut = node.op.earlyOut\n\n if (earlyOut && earlyOut(lhv)) { return lhv }\n const rhv = node.get_leaf_value(node.rhs, context, globals, node)\n\n return node.op(lhv, rhv, context, globals)\n }\n\n //\n // Class variables.\n //\n static get isExpressionOrIdentifierSymbol () { return IS_EXPR_OR_IDENT }\n get [IS_EXPR_OR_IDENT] () { return true }\n\n static value_of (item, context, globals, node) {\n if (item && item[Node.isExpressionOrIdentifierSymbol]) {\n return item.get_value(item, context, globals, node)\n }\n return item\n }\n\n /**\n * Convert an array of nodes to an executable tree.\n * @return {object} An object with a `lhs`, `rhs` and `op` key, corresponding\n * to the left hand side, right hand side, and\n * operation function.\n */\n static create_root (nodes, debug=false) {\n // shunting yard algorithm with output to an abstact syntax tree of Nodes\n const out = []\n const ops = []\n for (let i = 0; i < nodes.length; i += 2) {\n out.push(nodes[i]) // next value\n const op = nodes[i+1]\n\n // only left-associative operators are currently defined and handled here\n const prec = op?.precedence || 0 // no op for last value\n while (ops.length && prec <= ops[ops.length-1].precedence) {\n const rhs = out.pop()\n const lhs = out.pop()\n out.push(new Node(lhs, ops.pop(), rhs))\n }\n ops.push(op)\n }\n if (out.length !== 1) {\n throw new Error(`unexpected nodes remain in shunting yard output stack: ${out}`)\n }\n return out[0]\n }\n}\n\n/**\n * Because of cyclical dependencies on operators <-> Node <-> value_of,\n * we need to patch this in here.\n */\noperators['?'] = function ternary (a, b, context, globals, node) {\n return Node.value_of(a ? b.yes : b.no, context, globals, node)\n}\noperators['?'].precedence = 4\n"],
"mappings": ";;AACA;AAAA,EACE;AAAA,OACK;AAEP;AAAA,EACE,WAAW;AAAA,EACX;AAAA,OACK;AAEP,MAAM,mBAAmB,OAAO,oCAAoC;AAEpE,qBAAqB,KAAK;AAAA,EACxB,YAAa,KAAK,IAAI,KAAK;AACzB,SAAK,MAAM;AACX,SAAK,KAAK;AACV,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,WAAW,YAAa;AAAE,WAAO;AAAA,EAAU;AAAA,EAE3C,eAAgB,MAAM,SAAS,SAAS,MAAM;AAC5C,QAAI,OAAO,SAAS,YAAY;AAG9B,aAAO,OAAO,KAAK,CAAC;AAAA,IACtB;AAGA,QAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAE,aAAO;AAAA,IAAK;AAG7D,QAAI,KAAK,KAAK,iCAAiC;AAG7C,aAAO,OAAO,KAAK,UAAU,QAAW,SAAS,SAAS,IAAI,CAAC;AAAA,IACjE;AAGA,WAAO;AAAA,EACT;AAAA,EAWA,UAAW,SAAS,SAAS,SAAS,MAAM;AAC1C,QAAI,OAAO;AAEX,QAAI,KAAK,OAAO,QAAQ;AACtB,aAAO,IAAI,SAAS;AAClB,YAAI,gBAAgB;AACpB,YAAI,KAAK,KAAK;AACZ,0BAAgB,KAAK,IAAI,cAAc,SAAS,IAAI;AAAA,QACtD;AACA,eAAO,KAAK,eAAe,KAAK,KAAK,eAAe,SAAS,IAAI;AAAA,MACnE;AAAA,IACF;AAEA,UAAM,MAAM,KAAK,eAAe,KAAK,KAAK,SAAS,SAAS,IAAI;AAChE,UAAM,WAAW,KAAK,GAAG;AAEzB,QAAI,YAAY,SAAS,GAAG,GAAG;AAAE,aAAO;AAAA,IAAI;AAC5C,UAAM,MAAM,KAAK,eAAe,KAAK,KAAK,SAAS,SAAS,IAAI;AAEhE,WAAO,KAAK,GAAG,KAAK,KAAK,SAAS,OAAO;AAAA,EAC3C;AAAA,EAKA,WAAW,iCAAkC;AAAE,WAAO;AAAA,EAAiB;AAAA,EACvE,KAAK,oBAAqB;AAAE,WAAO;AAAA,EAAK;AAAA,EAExC,OAAO,SAAU,MAAM,SAAS,SAAS,MAAM;AAC7C,QAAI,QAAQ,KAAK,KAAK,iCAAiC;AACrD,aAAO,KAAK,UAAU,MAAM,SAAS,SAAS,IAAI;AAAA,IACpD;AACA,WAAO;AAAA,EACT;AAAA,EAQA,OAAO,YAAa,OAAO,QAAM,OAAO;AAEtC,UAAM,MAAM,CAAC;AACb,UAAM,MAAM,CAAC;AACb,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACxC,UAAI,KAAK,MAAM,EAAE;AACjB,YAAM,KAAK,MAAM,IAAE;AAGnB,YAAM,QAAO,yBAAI,eAAc;AAC/B,aAAO,IAAI,UAAU,QAAQ,IAAI,IAAI,SAAO,GAAG,YAAY;AACzD,cAAM,MAAM,IAAI,IAAI;AACpB,cAAM,MAAM,IAAI,IAAI;AACpB,YAAI,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,MACxC;AACA,UAAI,KAAK,EAAE;AAAA,IACb;AACA,QAAI,IAAI,WAAW,GAAG;AACpB,YAAM,IAAI,MAAM,0DAA0D,KAAK;AAAA,IACjF;AACA,WAAO,IAAI;AAAA,EACb;AACF;AAMA,UAAU,OAAO,SAAS,QAAS,GAAG,GAAG,SAAS,SAAS,MAAM;AAC/D,SAAO,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,SAAS,SAAS,IAAI;AAC/D;AACA,UAAU,KAAK,aAAa;",
"sourcesContent": ["import { unwrap } from '@tko/observable'\n\nimport { default as operators, LAMBDA } from './operators'\n\nconst IS_EXPR_OR_IDENT = Symbol('Node - Is Expression Or Identifier')\n\nexport default class Node {\n lhs: any\n op: any\n rhs: any\n\n constructor(lhs, op, rhs) {\n this.lhs = lhs\n this.op = op\n this.rhs = rhs\n }\n\n static get operators() {\n return operators\n }\n\n get_leaf_value(leaf, context, globals, node) {\n if (typeof leaf === 'function') {\n // Expressions on observables are nonsensical, so we unwrap any\n // function values (e.g. identifiers).\n return unwrap(leaf())\n }\n\n // primitives\n if (typeof leaf !== 'object' || leaf === null) {\n return leaf\n }\n\n // Identifiers and Expressions\n if (leaf[Node.isExpressionOrIdentifierSymbol]) {\n // lhs is passed in as the parent of the leaf. It will be defined in\n // cases like a.b.c as 'a' for 'b' then as 'b' for 'c'.\n return unwrap(leaf.get_value(undefined, context, globals, node))\n }\n\n // Plain object/class.\n return leaf\n }\n\n /**\n * Return a function that calculates and returns an expression's value\n * when called.\n * @param {array} ops The operations to perform\n * @return {function} The function that calculates the expression.\n *\n * Note that for a lambda, we do not evaluate the RHS expression until\n * the lambda is called.\n */\n get_value(notused, context, globals, node: Node) {\n var node: Node = this //eslint-disable-line no-var\n\n if (node.op === LAMBDA) {\n return (...args) => {\n let lambdaContext = context\n if (node.lhs) {\n lambdaContext = node.lhs.extendContext(context, args)\n }\n return node.get_leaf_value(node.rhs, lambdaContext, globals, node)\n }\n }\n\n const lhv = node.get_leaf_value(node.lhs, context, globals, node)\n const earlyOut = node.op.earlyOut\n\n if (earlyOut && earlyOut(lhv)) {\n return lhv\n }\n const rhv = node.get_leaf_value(node.rhs, context, globals, node)\n\n return node.op(lhv, rhv, context, globals)\n }\n\n //\n // Class variables.\n //\n static get isExpressionOrIdentifierSymbol() {\n return IS_EXPR_OR_IDENT\n }\n get [IS_EXPR_OR_IDENT]() {\n return true\n }\n\n static value_of(item, context?, globals?, node?: Node) {\n if (item && item[Node.isExpressionOrIdentifierSymbol]) {\n return item.get_value(item, context, globals, node)\n }\n return item\n }\n\n /**\n * Convert an array of nodes to an executable tree.\n * @return {object} An object with a `lhs`, `rhs` and `op` key, corresponding\n * to the left hand side, right hand side, and\n * operation function.\n */\n static create_root(nodes, debug = false) {\n // shunting yard algorithm with output to an abstact syntax tree of Nodes\n const out = new Array()\n const ops = new Array()\n for (let i = 0; i < nodes.length; i += 2) {\n out.push(nodes[i]) // next value\n const op = nodes[i + 1]\n\n // only left-associative operators are currently defined and handled here\n const prec = op?.precedence || 0 // no op for last value\n while (ops.length && prec <= ops[ops.length - 1].precedence) {\n const rhs = out.pop()\n const lhs = out.pop()\n out.push(new Node(lhs, ops.pop(), rhs))\n }\n ops.push(op)\n }\n if (out.length !== 1) {\n throw new Error(`unexpected nodes remain in shunting yard output stack: ${out}`)\n }\n return out[0]\n }\n}\n\n/**\n * Because of cyclical dependencies on operators <-> Node <-> value_of,\n * we need to patch this in here.\n */\noperators['?'] = function ternary(a, b, context, globals, node) {\n return Node.value_of(a ? b.yes : b.no, context, globals, node)\n}\noperators['?'].precedence = 4\n"],
"mappings": ";;AAAA,SAAS,cAAc;AAEvB,SAAS,WAAW,WAAW,cAAc;AAE7C,MAAM,mBAAmB,uBAAO,oCAAoC;AAEpE,qBAAqB,KAAK;AAAA,EAKxB,YAAY,KAAK,IAAI,KAAK;AACxB,SAAK,MAAM;AACX,SAAK,KAAK;AACV,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,WAAW,YAAY;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,MAAM,SAAS,SAAS,MAAM;AAC3C,QAAI,OAAO,SAAS,YAAY;AAG9B,aAAO,OAAO,KAAK,CAAC;AAAA,IACtB;AAGA,QAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,aAAO;AAAA,IACT;AAGA,QAAI,KAAK,KAAK,8BAA8B,GAAG;AAG7C,aAAO,OAAO,KAAK,UAAU,QAAW,SAAS,SAAS,IAAI,CAAC;AAAA,IACjE;AAGA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,UAAU,SAAS,SAAS,SAAS,MAAY;AAC/C,QAAI,OAAa;AAEjB,QAAI,KAAK,OAAO,QAAQ;AACtB,aAAO,IAAI,SAAS;AAClB,YAAI,gBAAgB;AACpB,YAAI,KAAK,KAAK;AACZ,0BAAgB,KAAK,IAAI,cAAc,SAAS,IAAI;AAAA,QACtD;AACA,eAAO,KAAK,eAAe,KAAK,KAAK,eAAe,SAAS,IAAI;AAAA,MACnE;AAAA,IACF;AAEA,UAAM,MAAM,KAAK,eAAe,KAAK,KAAK,SAAS,SAAS,IAAI;AAChE,UAAM,WAAW,KAAK,GAAG;AAEzB,QAAI,YAAY,SAAS,GAAG,GAAG;AAC7B,aAAO;AAAA,IACT;AACA,UAAM,MAAM,KAAK,eAAe,KAAK,KAAK,SAAS,SAAS,IAAI;AAEhE,WAAO,KAAK,GAAG,KAAK,KAAK,SAAS,OAAO;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,iCAAiC;AAC1C,WAAO;AAAA,EACT;AAAA,EACA,KAAK,gBAAgB,IAAI;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,SAAS,MAAM,SAAU,SAAU,MAAa;AACrD,QAAI,QAAQ,KAAK,KAAK,8BAA8B,GAAG;AACrD,aAAO,KAAK,UAAU,MAAM,SAAS,SAAS,IAAI;AAAA,IACpD;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,YAAY,OAAO,QAAQ,OAAO;AAEvC,UAAM,MAAM,IAAI,MAAM;AACtB,UAAM,MAAM,IAAI,MAAM;AACtB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACxC,UAAI,KAAK,MAAM,CAAC,CAAC;AACjB,YAAM,KAAK,MAAM,IAAI,CAAC;AAGtB,YAAM,OAAO,IAAI,cAAc;AAC/B,aAAO,IAAI,UAAU,QAAQ,IAAI,IAAI,SAAS,CAAC,EAAE,YAAY;AAC3D,cAAM,MAAM,IAAI,IAAI;AACpB,cAAM,MAAM,IAAI,IAAI;AACpB,YAAI,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,MACxC;AACA,UAAI,KAAK,EAAE;AAAA,IACb;AACA,QAAI,IAAI,WAAW,GAAG;AACpB,YAAM,IAAI,MAAM,0DAA0D,GAAG,EAAE;AAAA,IACjF;AACA,WAAO,IAAI,CAAC;AAAA,EACd;AACF;AAMA,UAAU,GAAG,IAAI,SAAS,QAAQ,GAAG,GAAG,SAAS,SAAS,MAAM;AAC9D,SAAO,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,SAAS,SAAS,IAAI;AAC/D;AACA,UAAU,GAAG,EAAE,aAAa;",
"names": []
}

@@ -0,7 +1,4 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
var __pow = Math.pow;
import {
unwrap
} from "@tko/observable";
import { unwrap } from "@tko/observable";
export function LAMBDA() {

@@ -16,4 +13,6 @@ }

const operators = {
// unary
"@": unwrapOrCall,
"#": (a, b) => () => unwrap(b),
// Convert to read-only.
"=>": LAMBDA,

@@ -32,5 +31,7 @@ "!": function not(a, b) {

},
// exponent
"**": function exp(a, b) {
return __pow(a, b);
return a ** b;
},
// mul/div
"*": function mul(a, b) {

@@ -45,2 +46,3 @@ return a * b;

},
// sub/add
"+": function add(a, b) {

@@ -55,2 +57,4 @@ return a + b;

},
// unary -
// relational
"<": function lt(a, b) {

@@ -68,2 +72,6 @@ return a < b;

},
// TODO: 'in': function (a, b) { return a in b; },
// TODO: 'instanceof': function (a, b) { return a instanceof b; },
// TODO: 'typeof': function (a, b) { return typeof b; },
// equality
"==": function equal(a, b) {

@@ -81,2 +89,3 @@ return a == b;

},
// bitwise
"&": function bitAnd(a, b) {

@@ -91,2 +100,3 @@ return a & b;

},
// logic
"&&": function logicAnd(a, b) {

@@ -99,12 +109,13 @@ return a && b;

"??": function nullishCoalesce(a, b) {
return a != null ? a : b;
return a ?? b;
},
// Access
".": function member(a, b) {
return a == null ? void 0 : a[b];
return a?.[b];
},
"?.": function omember(a, b) {
return a == null ? void 0 : a[b];
return a?.[b];
},
"[": function bmember(a, b) {
return a == null ? void 0 : a[b];
return a?.[b];
},

@@ -114,3 +125,6 @@ ",": function comma(a, b) {

},
"call": function callOp(a, b) {
// conditional/ternary
// '?': ternary See Node.js
// Function-Call
call: function callOp(a, b) {
return a.apply(null, b);

@@ -129,3 +143,3 @@ }

operators["&-"].precedence = 16;
operators["**"].precedent = 15;
operators["**"].precedence = 15;
operators["%"].precedence = 14;

@@ -132,0 +146,0 @@ operators["*"].precedence = 14;

{
"version": 3,
"sources": ["../src/operators.ts"],
"sourcesContent": ["import {\n unwrap\n} from '@tko/observable'\n\nexport function LAMBDA () {}\n\n/**\n * @ operator - recursively call the identifier if it's a function\n * @param {operand} a ignored\n * @param {operand} b The variable to be called (if a function) and unwrapped\n * @return {value} The result.\n */\nfunction unwrapOrCall (a, b) {\n while (typeof b === 'function') { b = b() }\n return b\n}\n\nconst operators = {\n // unary\n '@': unwrapOrCall,\n '#': (a, b) => () => unwrap(b), // Convert to read-only.\n '=>': LAMBDA,\n '!': function not (a, b) { return !b },\n '!!': function notnot (a, b) { return !!b },\n '++': function preinc (a, b) { return ++b },\n '--': function preinc (a, b) { return --b },\n // exponent\n '**': function exp (a, b) { return a ** b },\n // mul/div\n '*': function mul (a, b) { return a * b },\n '/': function div (a, b) { return a / b },\n '%': function mod (a, b) { return a % b },\n // sub/add\n '+': function add (a, b) { return a + b },\n '-': function sub (a, b) { return (a || 0) - (b || 0) },\n '&-': function neg (a, b) { return -1 * b }, // unary -\n // relational\n '<': function lt (a, b) { return a < b },\n '<=': function le (a, b) { return a <= b },\n '>': function gt (a, b) { return a > b },\n '>=': function ge (a, b) { return a >= b },\n // TODO: 'in': function (a, b) { return a in b; },\n // TODO: 'instanceof': function (a, b) { return a instanceof b; },\n // equality\n '==': function equal (a, b) { return a == b },\n '!=': function ne (a, b) { return a != b },\n '===': function sequal (a, b) { return a === b },\n '!==': function sne (a, b) { return a !== b },\n // bitwise\n '&': function bitAnd (a, b) { return a & b },\n '^': function xor (a, b) { return a ^ b },\n '|': function bitOr (a, b) { return a | b },\n // logic\n '&&': function logicAnd (a, b) { return a && b },\n '||': function logicOr (a, b) { return a || b },\n '??': function nullishCoalesce (a, b) { return a ?? b },\n // Access\n '.': function member (a, b) { return a?.[b] },\n '?.': function omember (a, b) { return a?.[b] },\n '[': function bmember (a, b) { return a?.[b] },\n ',': function comma (a, b) { return b },\n // conditional/ternary\n // '?': ternary See Node.js\n // Function-Call\n 'call': function callOp (a, b) { return a.apply(null, b) }\n}\n\n/* Order of precedence from:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table\n*/\n\n // Our operator - unwrap/call\noperators['@'].precedence = 21\noperators['#'].precedence = 21\n\n // Member\noperators['.'].precedence = 19\noperators['['].precedence = 19\noperators['?.'].precedence = 19\n\n // Logical not\noperators['!'].precedence = 16\noperators['!!'].precedence = 16 // explicit double-negative\n\n // Prefix inc/dec\noperators['++'].precedence = 16\noperators['--'].precedence = 16\noperators['&-'].precedence = 16\n\n // exponent\noperators['**'].precedent = 15\n\n // mul/div/remainder\noperators['%'].precedence = 14\noperators['*'].precedence = 14\noperators['/'].precedence = 14\n\n // add/sub\noperators['+'].precedence = 13\noperators['-'].precedence = 13\n\n // bitwise\noperators['|'].precedence = 12\noperators['^'].precedence = 11\noperators['&'].precedence = 10\n\n // comparison\noperators['<'].precedence = 11\noperators['<='].precedence = 11\noperators['>'].precedence = 11\noperators['>='].precedence = 11\n\n // operators['in'].precedence = 8;\n // operators['instanceof'].precedence = 8;\n // equality\noperators['=='].precedence = 10\noperators['!='].precedence = 10\noperators['==='].precedence = 10\noperators['!=='].precedence = 10\n\n // logic\noperators['&&'].precedence = 6\noperators['||'].precedence = 5\noperators['??'].precedence = 5\n\noperators['&&'].earlyOut = (a) => !a\noperators['||'].earlyOut = (a) => a\noperators['??'].earlyOut = (a) => a\n\n // multiple values\noperators[','].precedence = 2\n\n // Call a function\noperators['call'].precedence = 1\n\n // lambda\noperators['=>'].precedence = 1\n\nexport { operators as default }\n"],
"mappings": ";;;AAAA;AAAA,EACE;AAAA,OACK;AAEA,gBAAS,SAAU;AAAC;AAQ3B,SAAS,aAAc,GAAG,GAAG;AAC3B,SAAO,OAAO,MAAM,YAAY;AAAE,QAAI,EAAE;AAAA,EAAE;AAC1C,SAAO;AACT;AAEA,MAAM,YAAY;AAAA,EAEhB,KAAK;AAAA,EACL,KAAK,CAAC,GAAG,MAAM,MAAM,OAAO,CAAC;AAAA,EAC7B,MAAM;AAAA,EACN,KAAK,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,CAAC;AAAA,EAAE;AAAA,EACrC,MAAM,SAAS,OAAQ,GAAG,GAAG;AAAE,WAAO,CAAC,CAAC;AAAA,EAAE;AAAA,EAC1C,MAAM,SAAS,OAAQ,GAAG,GAAG;AAAE,WAAO,EAAE;AAAA,EAAE;AAAA,EAC1C,MAAM,SAASA,QAAQ,GAAG,GAAG;AAAE,WAAO,EAAE;AAAA,EAAE;AAAA,EAE1C,MAAM,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,SAAK;AAAA,EAAE;AAAA,EAE1C,KAAK,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EACxC,KAAK,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EACxC,KAAK,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EAExC,KAAK,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EACxC,KAAK,SAAS,IAAK,GAAG,GAAG;AAAE,YAAQ,KAAK,MAAM,KAAK;AAAA,EAAG;AAAA,EACtD,MAAM,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,KAAK;AAAA,EAAE;AAAA,EAE1C,KAAK,SAAS,GAAI,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EACvC,MAAM,SAAS,GAAI,GAAG,GAAG;AAAE,WAAO,KAAK;AAAA,EAAE;AAAA,EACzC,KAAK,SAAS,GAAI,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EACvC,MAAM,SAAS,GAAI,GAAG,GAAG;AAAE,WAAO,KAAK;AAAA,EAAE;AAAA,EAIzC,MAAM,SAAS,MAAO,GAAG,GAAG;AAAE,WAAO,KAAK;AAAA,EAAE;AAAA,EAC5C,MAAM,SAAS,GAAI,GAAG,GAAG;AAAE,WAAO,KAAK;AAAA,EAAE;AAAA,EACzC,OAAO,SAAS,OAAQ,GAAG,GAAG;AAAE,WAAO,MAAM;AAAA,EAAE;AAAA,EAC/C,OAAO,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,MAAM;AAAA,EAAE;AAAA,EAE5C,KAAK,SAAS,OAAQ,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EAC3C,KAAK,SAAS,IAAK,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EACxC,KAAK,SAAS,MAAO,GAAG,GAAG;AAAE,WAAO,IAAI;AAAA,EAAE;AAAA,EAE1C,MAAM,SAAS,SAAU,GAAG,GAAG;AAAE,WAAO,KAAK;AAAA,EAAE;AAAA,EAC/C,MAAM,SAAS,QAAS,GAAG,GAAG;AAAE,WAAO,KAAK;AAAA,EAAE;AAAA,EAC9C,MAAM,SAAS,gBAAiB,GAAG,GAAG;AAAE,WAAO,gBAAK;AAAA,EAAE;AAAA,EAEtD,KAAK,SAAS,OAAQ,GAAG,GAAG;AAAE,WAAO,uBAAI;AAAA,EAAG;AAAA,EAC5C,MAAM,SAAS,QAAS,GAAG,GAAG;AAAE,WAAO,uBAAI;AAAA,EAAG;AAAA,EAC9C,KAAK,SAAS,QAAS,GAAG,GAAG;AAAE,WAAO,uBAAI;AAAA,EAAG;AAAA,EAC7C,KAAK,SAAS,MAAO,GAAG,GAAG;AAAE,WAAO;AAAA,EAAE;AAAA,EAItC,QAAQ,SAAS,OAAQ,GAAG,GAAG;AAAE,WAAO,EAAE,MAAM,MAAM,CAAC;AAAA,EAAE;AAC3D;AAOA,UAAU,KAAK,aAAa;AAC5B,UAAU,KAAK,aAAa;AAG5B,UAAU,KAAK,aAAa;AAC5B,UAAU,KAAK,aAAa;AAC5B,UAAU,MAAM,aAAa;AAG7B,UAAU,KAAK,aAAa;AAC5B,UAAU,MAAM,aAAa;AAG7B,UAAU,MAAM,aAAa;AAC7B,UAAU,MAAM,aAAa;AAC7B,UAAU,MAAM,aAAa;AAG7B,UAAU,MAAM,YAAY;AAG5B,UAAU,KAAK,aAAa;AAC5B,UAAU,KAAK,aAAa;AAC5B,UAAU,KAAK,aAAa;AAG5B,UAAU,KAAK,aAAa;AAC5B,UAAU,KAAK,aAAa;AAG5B,UAAU,KAAK,aAAa;AAC5B,UAAU,KAAK,aAAa;AAC5B,UAAU,KAAK,aAAa;AAG5B,UAAU,KAAK,aAAa;AAC5B,UAAU,MAAM,aAAa;AAC7B,UAAU,KAAK,aAAa;AAC5B,UAAU,MAAM,aAAa;AAK7B,UAAU,MAAM,aAAa;AAC7B,UAAU,MAAM,aAAa;AAC7B,UAAU,OAAO,aAAa;AAC9B,UAAU,OAAO,aAAa;AAG9B,UAAU,MAAM,aAAa;AAC7B,UAAU,MAAM,aAAa;AAC7B,UAAU,MAAM,aAAa;AAE7B,UAAU,MAAM,WAAW,CAAC,MAAM,CAAC;AACnC,UAAU,MAAM,WAAW,CAAC,MAAM;AAClC,UAAU,MAAM,WAAW,CAAC,MAAM;AAGlC,UAAU,KAAK,aAAa;AAG5B,UAAU,QAAQ,aAAa;AAG/B,UAAU,MAAM,aAAa;AAE7B,SAAS,aAAa;",
"sourcesContent": ["import { unwrap } from '@tko/observable'\n\nexport function LAMBDA() {}\n\n/**\n * @ operator - recursively call the identifier if it's a function\n * @param {operand} a ignored\n * @param {operand} b The variable to be called (if a function) and unwrapped\n * @return {value} The result.\n */\nfunction unwrapOrCall(a, b) {\n while (typeof b === 'function') {\n b = b()\n }\n return b\n}\n\nexport type OperatorFunction = (a: any, b: any, ...args: any[]) => any\n\nexport interface OperatorWithProperties extends OperatorFunction {\n earlyOut?: (a: any) => any\n precedence?: number\n}\n\nexport interface Operators {\n [key: string]: OperatorWithProperties\n}\nconst operators: Operators = {\n // unary\n '@': unwrapOrCall,\n '#': (a, b) => () => unwrap(b), // Convert to read-only.\n '=>': LAMBDA,\n '!': function not(a, b) {\n return !b\n },\n '!!': function notnot(a, b) {\n return !!b\n },\n '++': function preinc(a, b) {\n return ++b\n },\n '--': function preinc(a, b) {\n return --b\n },\n // exponent\n '**': function exp(a, b) {\n return a ** b\n },\n // mul/div\n '*': function mul(a, b) {\n return a * b\n },\n '/': function div(a, b) {\n return a / b\n },\n '%': function mod(a, b) {\n return a % b\n },\n // sub/add\n '+': function add(a, b) {\n return a + b\n },\n '-': function sub(a, b) {\n return (a || 0) - (b || 0)\n },\n '&-': function neg(a, b) {\n return -1 * b\n }, // unary -\n // relational\n '<': function lt(a, b) {\n return a < b\n },\n '<=': function le(a, b) {\n return a <= b\n },\n '>': function gt(a, b) {\n return a > b\n },\n '>=': function ge(a, b) {\n return a >= b\n },\n // TODO: 'in': function (a, b) { return a in b; },\n // TODO: 'instanceof': function (a, b) { return a instanceof b; },\n // TODO: 'typeof': function (a, b) { return typeof b; },\n // equality\n '==': function equal(a, b) {\n return a == b\n },\n '!=': function ne(a, b) {\n return a != b\n },\n '===': function sequal(a, b) {\n return a === b\n },\n '!==': function sne(a, b) {\n return a !== b\n },\n // bitwise\n '&': function bitAnd(a, b) {\n return a & b\n },\n '^': function xor(a, b) {\n return a ^ b\n },\n '|': function bitOr(a, b) {\n return a | b\n },\n // logic\n '&&': function logicAnd(a, b) {\n return a && b\n },\n '||': function logicOr(a, b) {\n return a || b\n },\n '??': function nullishCoalesce(a, b) {\n return a ?? b\n },\n // Access\n '.': function member(a, b) {\n return a?.[b]\n },\n '?.': function omember(a, b) {\n return a?.[b]\n },\n '[': function bmember(a, b) {\n return a?.[b]\n },\n ',': function comma(a, b) {\n return b\n },\n // conditional/ternary\n // '?': ternary See Node.js\n // Function-Call\n call: function callOp(a, b) {\n return a.apply(null, b)\n }\n}\n\n/* Order of precedence from:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table\n*/\n\n// Our operator - unwrap/call\noperators['@'].precedence = 21\noperators['#'].precedence = 21\n\n// Member\noperators['.'].precedence = 19\noperators['['].precedence = 19\noperators['?.'].precedence = 19\n\n// Logical not\noperators['!'].precedence = 16\noperators['!!'].precedence = 16 // explicit double-negative\n\n// Prefix inc/dec\noperators['++'].precedence = 16\noperators['--'].precedence = 16\noperators['&-'].precedence = 16\n\n// exponent\noperators['**'].precedence = 15\n\n// mul/div/remainder\noperators['%'].precedence = 14\noperators['*'].precedence = 14\noperators['/'].precedence = 14\n\n// add/sub\noperators['+'].precedence = 13\noperators['-'].precedence = 13\n\n// bitwise\noperators['|'].precedence = 12\noperators['^'].precedence = 11\noperators['&'].precedence = 10\n\n// comparison\noperators['<'].precedence = 11\noperators['<='].precedence = 11\noperators['>'].precedence = 11\noperators['>='].precedence = 11\n\n// operators['in'].precedence = 8;\n// operators['instanceof'].precedence = 8;\n// equality\noperators['=='].precedence = 10\noperators['!='].precedence = 10\noperators['==='].precedence = 10\noperators['!=='].precedence = 10\n\n// logic\noperators['&&'].precedence = 6\noperators['||'].precedence = 5\noperators['??'].precedence = 5\n\noperators['&&'].earlyOut = a => !a\noperators['||'].earlyOut = a => a\noperators['??'].earlyOut = a => a\n\n// multiple values\noperators[','].precedence = 2\n\n// Call a function\noperators['call'].precedence = 1\n\n// lambda\noperators['=>'].precedence = 1\n\nexport { operators as default }\n"],
"mappings": "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",
"names": ["preinc"]
}

@@ -0,3 +1,3 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import operators from "./operators";

@@ -8,2 +8,3 @@ import Node from "./Node";

export default class Parameters {
#names;
constructor(parser, node) {

@@ -14,3 +15,3 @@ if (node instanceof Expression) {

try {
this.names = Parameters.nodeTreeToNames(node);
this.#names = Parameters.nodeTreeToNames(node);
} catch (e) {

@@ -21,7 +22,7 @@ parser.error(e);

extendContext(context, args) {
if (!this.names) {
if (!this.#names) {
return context;
} else {
const newValues = {};
this.names.forEach((name, index) => {
this.#names.forEach((name, index) => {
newValues[name] = args[index];

@@ -36,3 +37,3 @@ });

static nodeTreeToNames(node) {
const names = [];
const names = new Array();
while (node) {

@@ -46,3 +47,5 @@ if (node instanceof Identifier) {

} else {
throw new Error(`only simple identifiers allowed in lambda parameter list but found ${JSON.stringify(node, null, 2)}`);
throw new Error(
`only simple identifiers allowed in lambda parameter list but found ${JSON.stringify(node, null, 2)}`
);
}

@@ -49,0 +52,0 @@ }

{
"version": 3,
"sources": ["../src/Parameters.ts"],
"sourcesContent": ["import operators from './operators'\nimport Node from './Node'\nimport Expression from './Expression'\nimport Identifier from './Identifier'\n\nexport default class Parameters {\n constructor (parser, node) {\n // convert a node of comma-separated Identifiers to Parameters\n if (node instanceof Expression) {\n node = node.root\n }\n try {\n this.names = Parameters.nodeTreeToNames(node)\n } catch (e) {\n parser.error(e)\n }\n }\n\n extendContext (context, args) {\n if (!this.names) {\n return context\n } else {\n const newValues = {}\n this.names.forEach((name, index) => {\n newValues[name] = args[index]\n })\n return context.extend(newValues)\n }\n }\n\n get [Node.isExpressionOrIdentifierSymbol] () { return true }\n\n static nodeTreeToNames (node) {\n // left-associative series of commas produces a tree with children only on the lhs, so we can extract the leaves with a simplified depth-first traversal\n const names = []\n while (node) {\n if (node instanceof Identifier) {\n names.push(node.token)\n node = null\n } else if (this.isCommaNode(node)) {\n names.push(node.rhs.token)\n node = node.lhs\n } else {\n throw new Error(`only simple identifiers allowed in lambda parameter list but found ${JSON.stringify(node, null, 2)}`)\n }\n }\n names.reverse()\n return names\n }\n\n static isCommaNode (node) {\n return (\n (node instanceof Node) &&\n node.op === operators[','] &&\n (node.rhs instanceof Identifier)\n )\n }\n}\n"],
"mappings": ";;AAAA,OAAO,eAAe;AACtB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AAEvB,qBAAqB,WAAW;AAAA,EAC9B,YAAa,QAAQ,MAAM;AAEzB,QAAI,gBAAgB,YAAY;AAC9B,aAAO,KAAK;AAAA,IACd;AACA,QAAI;AACF,WAAK,QAAQ,WAAW,gBAAgB,IAAI;AAAA,IAC9C,SAAS,GAAP;AACA,aAAO,MAAM,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,cAAe,SAAS,MAAM;AAC5B,QAAI,CAAC,KAAK,OAAO;AACf,aAAO;AAAA,IACT,OAAO;AACL,YAAM,YAAY,CAAC;AACnB,WAAK,MAAM,QAAQ,CAAC,MAAM,UAAU;AAClC,kBAAU,QAAQ,KAAK;AAAA,MACzB,CAAC;AACD,aAAO,QAAQ,OAAO,SAAS;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,KAAK,KAAK,kCAAmC;AAAE,WAAO;AAAA,EAAK;AAAA,EAE3D,OAAO,gBAAiB,MAAM;AAE5B,UAAM,QAAQ,CAAC;AACf,WAAO,MAAM;AACX,UAAI,gBAAgB,YAAY;AAC9B,cAAM,KAAK,KAAK,KAAK;AACrB,eAAO;AAAA,MACT,WAAW,KAAK,YAAY,IAAI,GAAG;AACjC,cAAM,KAAK,KAAK,IAAI,KAAK;AACzB,eAAO,KAAK;AAAA,MACd,OAAO;AACL,cAAM,IAAI,MAAM,sEAAsE,KAAK,UAAU,MAAM,MAAM,CAAC,GAAG;AAAA,MACvH;AAAA,IACF;AACA,UAAM,QAAQ;AACd,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,YAAa,MAAM;AACxB,WACG,gBAAgB,QACjB,KAAK,OAAO,UAAU,QACrB,KAAK,eAAe;AAAA,EAEzB;AACF;",
"sourcesContent": ["import operators from './operators'\nimport Node from './Node'\nimport Expression from './Expression'\nimport Identifier from './Identifier'\n\nexport default class Parameters {\n #names: any[]\n\n constructor(parser, node) {\n // convert a node of comma-separated Identifiers to Parameters\n if (node instanceof Expression) {\n node = node.root\n }\n try {\n this.#names = Parameters.nodeTreeToNames(node)\n } catch (e) {\n parser.error(e)\n }\n }\n\n extendContext(context, args) {\n if (!this.#names) {\n return context\n } else {\n const newValues = {}\n this.#names.forEach((name, index) => {\n newValues[name] = args[index]\n })\n return context.extend(newValues)\n }\n }\n\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true\n }\n\n static nodeTreeToNames(node) {\n // left-associative series of commas produces a tree with children only on the lhs, so we can extract the leaves with a simplified depth-first traversal\n const names = new Array()\n while (node) {\n if (node instanceof Identifier) {\n names.push(node.token)\n node = null\n } else if (this.isCommaNode(node)) {\n names.push(node.rhs.token)\n node = node.lhs\n } else {\n throw new Error(\n `only simple identifiers allowed in lambda parameter list but found ${JSON.stringify(node, null, 2)}`\n )\n }\n }\n names.reverse()\n return names\n }\n\n static isCommaNode(node) {\n return node instanceof Node && node.op === operators[','] && node.rhs instanceof Identifier\n }\n}\n"],
"mappings": ";;AAAA,OAAO,eAAe;AACtB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AAEvB,qBAAqB,WAAW;AAAA,EAC9B;AAAA,EAEA,YAAY,QAAQ,MAAM;AAExB,QAAI,gBAAgB,YAAY;AAC9B,aAAO,KAAK;AAAA,IACd;AACA,QAAI;AACF,WAAK,SAAS,WAAW,gBAAgB,IAAI;AAAA,IAC/C,SAAS,GAAG;AACV,aAAO,MAAM,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,cAAc,SAAS,MAAM;AAC3B,QAAI,CAAC,KAAK,QAAQ;AAChB,aAAO;AAAA,IACT,OAAO;AACL,YAAM,YAAY,CAAC;AACnB,WAAK,OAAO,QAAQ,CAAC,MAAM,UAAU;AACnC,kBAAU,IAAI,IAAI,KAAK,KAAK;AAAA,MAC9B,CAAC;AACD,aAAO,QAAQ,OAAO,SAAS;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,KAAK,KAAK,8BAA8B,IAAI;AAC1C,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,gBAAgB,MAAM;AAE3B,UAAM,QAAQ,IAAI,MAAM;AACxB,WAAO,MAAM;AACX,UAAI,gBAAgB,YAAY;AAC9B,cAAM,KAAK,KAAK,KAAK;AACrB,eAAO;AAAA,MACT,WAAW,KAAK,YAAY,IAAI,GAAG;AACjC,cAAM,KAAK,KAAK,IAAI,KAAK;AACzB,eAAO,KAAK;AAAA,MACd,OAAO;AACL,cAAM,IAAI;AAAA,UACR,sEAAsE,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AAAA,QACrG;AAAA,MACF;AAAA,IACF;AACA,UAAM,QAAQ;AACd,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,YAAY,MAAM;AACvB,WAAO,gBAAgB,QAAQ,KAAK,OAAO,UAAU,GAAG,KAAK,KAAK,eAAe;AAAA,EACnF;AACF;",
"names": []
}

@@ -0,10 +1,4 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import {
options,
objectForEach,
clonePlainObjectDeep,
extend,
hasOwnProperty
} from "@tko/utils";
import { options, objectForEach, clonePlainObjectDeep, extend, hasOwnProperty } from "@tko/utils";
import { default as Expression } from "./Expression";

@@ -23,3 +17,3 @@ import { default as Identifier } from "./Identifier";

"/": "/",
"$": "$",
$: "$",
b: "\b",

@@ -33,3 +27,3 @@ f: "\f",

white() {
var ch = this.ch;
let ch = this.ch;
while (ch && ch <= " ") {

@@ -40,2 +34,5 @@ ch = this.next();

}
/**
* Slurp any C or C++ style comments
*/
comment(ch) {

@@ -45,4 +42,4 @@ if (ch !== "/") {

}
var p = this.at;
var second = this.lookahead();
const p = this.at;
const second = this.lookahead();
if (second === "/") {

@@ -87,14 +84,16 @@ while (ch) {

}
let [name, msg] = m.name ? [m.name, m.message] : [m, ""];
throw this.createError(m);
}
createError(m) {
const [name, msg] = m.name ? [m.name, m.message] : [m, ""];
const message = `
${name} ${msg} of
${this.text}
${name} ${msg} of ${this.text}
` + Array(this.at).join(" ") + "_/ \u{1F525} \\_\n";
throw new Error(message);
return new Error(message);
}
name() {
var name = "";
var enclosedBy;
let name = "";
let enclosedBy;
this.white();
var ch = this.ch;
let ch = this.ch;
if (ch === "'" || ch === '"') {

@@ -109,5 +108,3 @@ enclosedBy = ch;

if (ch !== ":" && ch !== ",") {
this.error(
"Object name: " + name + " missing closing " + enclosedBy
);
this.error("Object name: " + name + " missing closing " + enclosedBy);
}

@@ -162,2 +159,9 @@ return name;

}
/**
* Add a property to 'object' that equals the given value.
* @param {Object} object The object to add the value to.
* @param {String} key object[key] is set to the given value.
* @param {mixed} value The value, may be a primitive or a function. If a
* function it is unwrapped as a property.
*/
objectAddValue(object, key, value) {

@@ -180,3 +184,3 @@ if (value && value[Node.isExpressionOrIdentifierSymbol]) {

let key;
let object = {};
const object = {};
let ch = this.ch;

@@ -219,12 +223,17 @@ if (ch === "{") {

}
this.error("Bad object");
throw this.createError("Bad object");
}
/**
* Read up to delim and return the string
* @param {string} delim The delimiter, either ' or "
* @return {string} The string read.
*/
readString(delim) {
let string = "";
let nodes = [""];
let plusOp = operators["+"];
const nodes = [""];
const plusOp = operators["+"];
let hex;
let i;
let uffff;
let interpolate = delim === "`";
const interpolate = delim === "`";
let ch = this.next();

@@ -274,10 +283,10 @@ while (ch) {

}
this.error("Bad string");
throw this.createError("Bad string");
}
string() {
var ch = this.ch;
const ch = this.ch;
if (ch === '"') {
return this.readString('"').join("");
return this.readString('"')?.join("");
} else if (ch === "'") {
return this.readString("'").join("");
return this.readString("'")?.join("");
} else if (ch === "`") {

@@ -289,3 +298,3 @@ return Node.create_root(this.readString("`"));

array() {
let array = [];
const array = new Array();
let ch = this.ch;

@@ -310,7 +319,7 @@ if (ch === "[") {

}
this.error("Bad array");
throw this.createError("Bad array");
}
value() {
this.white();
let ch = this.ch;
const ch = this.ch;
switch (ch) {

@@ -331,2 +340,8 @@ case "{":

}
/**
* Get the function for the given operator.
* A `.precedence` value is added to the function, with increasing
* precedence having a higher number.
* @return {function} The function that performs the infix operation
*/
operator(opts) {

@@ -362,11 +377,17 @@ let op = "";

}
/**
* Filters
* Returns what the Node interprets as an "operator".
* e.g.
* <span data-bind="text: name | fit:20 | uppercase"></span>
*/
filter() {
let ch = this.next();
let args = [];
const args = new Array();
let nextFilter = function(v) {
return v;
};
let name = this.name();
const name = this.name();
if (!options.filters[name]) {
options.onError("Cannot find filter by the name of: " + name);
options.onError(new Error("Cannot find filter by the name of: " + name));
}

@@ -389,4 +410,4 @@ ch = this.white();

function filter(value, ignored, context, globals, node) {
var argValues = [value];
for (var i = 0, j = args.length; i < j; ++i) {
const argValues = [value];
for (let i = 0, j = args.length; i < j; ++i) {
argValues.push(Node.value_of(args[i], context, globals, node));

@@ -399,5 +420,21 @@ }

}
/**
* Parse an expression – builds an operator tree, in something like
* Shunting-Yard.
* See: http://en.wikipedia.org/wiki/Shunting-yard_algorithm
*
* @param filterable - Whether the expression can include jinga-style filters.
* An argument of '|' is used only by the filter() method to parse subsequent
* filters.
* @param allowMultipleValues - Whether multiple values separated by commas are
* allowed in this expression. When true (default), this method consumes
* subsequent comma-separated values.
* @see {@link Parser.singleValueExpression}
*
* @returns a function that computes the value of the expression
* when called or a primitive.
*/
expression(filterable = false, allowMultipleValues = true) {
let op;
let nodes = [];
const nodes = new Array();
let ch = this.white();

@@ -454,8 +491,8 @@ while (ch) {

}
var dereferences = this.dereferences();
const dereferences = this.dereferences();
if (nodes.length === 1 && !dereferences.length) {
return nodes[0];
}
for (var i = 0, j = dereferences.length; i < j; ++i) {
var deref = dereferences[i];
for (let i = 0, j = dereferences.length; i < j; ++i) {
const deref = dereferences[i];
if (deref.constructor === Arguments) {

@@ -470,7 +507,14 @@ nodes.push(operators.call);

}
singleValueExpression(filterable) {
/**
* Use this method to parse expressions that can be followed by additional markup
* seperated by a comma, such as in bindings strings.
*
* @returns an expression that cannot contain multiple values separated by commas.
* @see {@link Parser.expression}
*/
singleValueExpression(filterable = false) {
return this.expression(filterable, false);
}
ternary(nodes) {
var ternary = new Ternary();
const ternary = new Ternary();
ternary.yes = this.singleValueExpression();

@@ -482,4 +526,8 @@ this.next(":");

}
/**
* Parse the arguments to a function, returning an Array.
*
*/
funcArguments() {
let args = [];
const args = new Array();
let ch = this.next("(");

@@ -499,4 +547,7 @@ while (ch) {

}
this.error("Bad arguments to function");
throw this.createError("Bad arguments to function");
}
/**
* The literal string reference `abc` in an `x.abc` expression.
*/
member() {

@@ -516,5 +567,11 @@ let member = "";

}
/**
* A dereference applies to an identifer, being either a function
* call "()" or a membership lookup with square brackets "[member]".
* @return {fn or undefined} Dereference function to be applied to the
* Identifier
*/
dereference() {
let member;
let ch = this.white();
const ch = this.white();
while (ch) {

@@ -538,4 +595,4 @@ if (ch === "(") {

dereferences() {
let ch = this.white();
let dereferences = [];
const ch = this.white();
const dereferences = new Array();
let deref;

@@ -580,3 +637,3 @@ while (ch) {

let key;
let bindings = {};
const bindings = {};
let sep;

@@ -600,5 +657,5 @@ let expr;

if (key.length !== 2) {
options.onError("Binding " + key + " should have two parts (a.b).");
options.onError(new Error("Binding " + key + " should have two parts (a.b)."));
} else if (bindings[key[0]].constructor !== Object) {
options.onError("Binding " + key[0] + "." + key[1] + " paired with a non-object.");
options.onError(new Error("Binding " + key[0] + "." + key[1] + " paired with a non-object."));
}

@@ -612,3 +669,3 @@ ch = this.next(":");

if (typeof expr !== "object" || expr.constructor !== Object) {
options.onError("Expected plain object for " + key + " value.");
options.onError(new Error("Expected plain object for " + key + " value."));
} else {

@@ -649,2 +706,10 @@ extend(bindings[key], expr);

}
/**
* Convert result[name] from a value to a function (i.e. `valueAccessor()`)
* @param {object} result [Map of top-level names to values]
* @return {object} [Map of top-level names to functions]
*
* Accessors may be one of (below) constAccessor, identifierAccessor,
* expressionAccessor, or nodeAccessor.
*/
convertToAccessors(result, context, globals, node) {

@@ -681,3 +746,3 @@ objectForEach(result, (name, value) => {

try {
var result = fn();
const result = fn();
this.white();

@@ -692,2 +757,7 @@ if (this.ch) {

}
/**
* Get the bindings as name: accessor()
* @param {string} source The binding string to parse.
* @return {object} Map of name to accessor function.
*/
parse(source, context = {}, globals = {}, node) {

@@ -702,2 +772,5 @@ if (!source) {

}
/**
* Return a function that evaluates and returns the result of the expression.
*/
parseExpression(source, context = {}, globals = {}, node) {

@@ -704,0 +777,0 @@ if (!source) {

{
"version": 3,
"sources": ["../src/Parser.ts"],
"sourcesContent": ["/**\n * Originally based on (public domain):\n * https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n */\n\nimport {\n options, objectForEach, clonePlainObjectDeep, extend, hasOwnProperty\n} from '@tko/utils'\n\nimport {default as Expression} from './Expression'\nimport {default as Identifier} from './Identifier'\nimport {default as Arguments} from './Arguments'\nimport {default as Parameters} from './Parameters'\nimport {default as Ternary} from './Ternary'\nimport {default as Node} from './Node'\nimport {default as operators} from './operators'\n\nconst escapee = {\n \"'\": \"'\",\n '\"': '\"',\n '`': '`',\n '\\\\': '\\\\',\n '/': '/',\n '$': '$',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n}\n\n/**\n * Construct a new Parser instance with new Parser(node, context)\n * @param {Node} node The DOM element from which we parsed the\n * content.\n * @param {object} context The Knockout context.\n * @param {object} globals An object containing any desired globals.\n */\nexport default class Parser {\n white () {\n var ch = this.ch\n while (ch && ch <= ' ') {\n ch = this.next()\n }\n return this.comment(ch)\n }\n\n/**\n * Slurp any C or C++ style comments\n */\n comment (ch) {\n if (ch !== '/') { return ch }\n var p = this.at\n var second = this.lookahead()\n if (second === '/') {\n while (ch) {\n ch = this.next()\n if (ch === '\\n' || ch === '\\r') { break }\n }\n ch = this.next()\n } else if (second === '*') {\n while (ch) {\n ch = this.next()\n if (ch === '*' && this.lookahead() === '/') {\n this.next()\n break\n }\n }\n if (!ch) {\n this.error('Unclosed comment, starting at character ' + p)\n }\n this.next()\n return this.white()\n }\n return ch\n };\n\n next (c) {\n if (c && c !== this.ch) {\n this.error(\"Expected '\" + c + \"' but got '\" + this.ch + \"'\")\n }\n this.ch = this.text.charAt(this.at)\n this.at += 1\n return this.ch\n }\n\n lookahead () {\n return this.text[this.at]\n }\n\n error (m) {\n if (m instanceof Error) { throw m }\n let [name, msg] = m.name ? [m.name, m.message] : [m, '']\n const message = `\\n${name} ${msg} of\n ${this.text}\\n` + Array(this.at).join(' ') + '_/ \uD83D\uDD25 \\\\_\\n'\n throw new Error(message)\n }\n\n name () {\n // A name of a binding\n var name = ''\n var enclosedBy\n this.white()\n\n var ch = this.ch\n\n if (ch === \"'\" || ch === '\"') {\n enclosedBy = ch\n ch = this.next()\n }\n\n while (ch) {\n if (enclosedBy && ch === enclosedBy) {\n this.white()\n ch = this.next()\n if (ch !== ':' && ch !== ',') {\n this.error(\n 'Object name: ' + name + ' missing closing ' + enclosedBy\n )\n }\n return name\n } else if (ch === ':' || ch <= ' ' || ch === ',' || ch === '|') {\n return name\n }\n name += ch\n ch = this.next()\n }\n\n return name\n }\n\n number () {\n let number\n let string = ''\n let ch = this.ch\n\n if (ch === '-') {\n string = '-'\n ch = this.next('-')\n }\n while (ch >= '0' && ch <= '9') {\n string += ch\n ch = this.next()\n }\n if (ch === '.') {\n string += '.'\n ch = this.next()\n while (ch && ch >= '0' && ch <= '9') {\n string += ch\n ch = this.next()\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch\n ch = this.next()\n if (ch === '-' || ch === '+') {\n string += ch\n ch = this.next()\n }\n while (ch >= '0' && ch <= '9') {\n string += ch\n ch = this.next()\n }\n }\n number = +string\n if (!isFinite(number)) {\n options.onError(new Error('Bad number: ' + number + ' in ' + string))\n } else {\n return number\n }\n }\n\n/**\n * Add a property to 'object' that equals the given value.\n * @param {Object} object The object to add the value to.\n * @param {String} key object[key] is set to the given value.\n * @param {mixed} value The value, may be a primitive or a function. If a\n * function it is unwrapped as a property.\n */\n objectAddValue (object, key, value) {\n if (value && value[Node.isExpressionOrIdentifierSymbol]) {\n Object.defineProperty(object, key, {\n get: () => Node.value_of(value, ...this.currentContextGlobals),\n enumerable: true\n })\n } else if (Array.isArray(value)) {\n Object.defineProperty(object, key, {\n get: () => value.map(v => Node.value_of(v, ...this.currentContextGlobals)),\n enumerable: true\n })\n } else {\n // primitives\n object[key] = value\n }\n }\n\n object () {\n let key\n let object = {}\n let ch = this.ch\n\n if (ch === '{') {\n this.next('{')\n ch = this.white()\n if (ch === '}') {\n ch = this.next('}')\n return object\n }\n while (ch) {\n if (ch === '\"' || ch === \"'\" || ch === '`') {\n key = this.string()\n } else {\n key = this.name()\n }\n if (hasOwnProperty(object, key)) {\n this.error('Duplicate key \"' + key + '\"')\n }\n if (this.white() === ':') {\n ch = this.next(':')\n this.objectAddValue(object, key, this.singleValueExpression())\n } else {\n const objectKeyIsValue = new Identifier(this, key, [])\n this.objectAddValue(object, key, objectKeyIsValue)\n }\n\n ch = this.white()\n if (ch === '}') {\n ch = this.next('}')\n return object\n }\n\n this.next(',')\n ch = this.white()\n if (ch === '}') {\n ch = this.next('}')\n return object\n }\n }\n }\n this.error('Bad object')\n }\n\n/**\n * Read up to delim and return the string\n * @param {string} delim The delimiter, either ' or \"\n * @return {string} The string read.\n */\n readString (delim) {\n let string = ''\n let nodes = ['']\n let plusOp = operators['+']\n let hex\n let i\n let uffff\n let interpolate = delim === '`'\n let ch = this.next()\n\n while (ch) {\n if (ch === delim) {\n ch = this.next()\n if (interpolate) { nodes.push(plusOp) }\n nodes.push(string)\n return nodes\n }\n if (ch === '\\\\') {\n ch = this.next()\n if (ch === 'u') {\n uffff = 0\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(ch = this.next(), 16)\n if (!isFinite(hex)) {\n break\n }\n uffff = uffff * 16 + hex\n }\n string += String.fromCharCode(uffff)\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch]\n } else {\n break\n }\n } else if (interpolate && ch === '$') {\n ch = this.next()\n if (ch === '{') {\n this.next('{')\n nodes.push(plusOp)\n nodes.push(string)\n nodes.push(plusOp)\n nodes.push(this.expression())\n string = ''\n // this.next('}');\n } else {\n string += '$' + ch\n }\n } else {\n string += ch\n }\n ch = this.next()\n }\n\n this.error('Bad string')\n }\n\n string () {\n var ch = this.ch\n if (ch === '\"') {\n return this.readString('\"').join('')\n } else if (ch === \"'\") {\n return this.readString(\"'\").join('')\n } else if (ch === '`') {\n return Node.create_root(this.readString('`'))\n }\n\n this.error('Bad string')\n }\n\n array () {\n let array = []\n let ch = this.ch\n\n if (ch === '[') {\n ch = this.next('[')\n this.white()\n if (ch === ']') {\n ch = this.next(']')\n return array\n }\n while (ch) {\n array.push(this.singleValueExpression())\n ch = this.white()\n if (ch === ']') {\n ch = this.next(']')\n return array\n }\n this.next(',')\n ch = this.white()\n }\n }\n this.error('Bad array')\n }\n\n value () {\n this.white()\n let ch = this.ch\n switch (ch) {\n case '{': return this.object()\n case '[': return this.array()\n case '\"': case \"'\": case '`': return this.string()\n case '-': return this.number()\n default:\n return ch >= '0' && ch <= '9' ? this.number() : this.identifier()\n }\n }\n\n/**\n * Get the function for the given operator.\n * A `.precedence` value is added to the function, with increasing\n * precedence having a higher number.\n * @return {function} The function that performs the infix operation\n */\n operator (opts) {\n let op = ''\n let opFn\n let ch = this.white()\n let isIdentifierChar = Identifier.is_valid_start_char\n\n while (ch) {\n if (isIdentifierChar(ch) || ch <= ' ' || ch === '' ||\n ch === '\"' || ch === \"'\" || ch === '{' || ch === '(' ||\n ch === '`' || ch === ')' || (ch <= '9' && ch >= '0')) {\n break\n }\n\n if (!opts.not_an_array && ch === '[') {\n break\n }\n\n op += ch\n ch = this.next()\n\n // An infix followed by the prefix e.g. a + @b\n // TODO: other prefix unary operators\n if (ch === '@') {\n break\n }\n\n isIdentifierChar = Identifier.is_valid_continue_char\n }\n\n if (op !== '') {\n if (opts.prefix && op === '-') { op = '&-' }\n opFn = operators[op]\n\n if (!opFn) {\n this.error(\"Bad operator: '\" + op + \"'.\")\n }\n }\n\n return opFn\n }\n\n/**\n * Filters\n * Returns what the Node interprets as an \"operator\".\n * e.g.\n * <span data-bind=\"text: name | fit:20 | uppercase\"></span>\n */\n filter () {\n let ch = this.next()\n let args = []\n let nextFilter = function (v) { return v }\n let name = this.name()\n\n if (!options.filters[name]) {\n options.onError('Cannot find filter by the name of: ' + name)\n }\n\n ch = this.white()\n\n while (ch) {\n if (ch === ':') {\n ch = this.next()\n args.push(this.singleValueExpression('|'))\n }\n\n if (ch === '|') {\n nextFilter = this.filter()\n break\n }\n\n if (ch === ',') { break }\n\n ch = this.white()\n }\n\n function filter (value, ignored, context, globals, node) {\n var argValues = [value]\n\n for (var i = 0, j = args.length; i < j; ++i) {\n argValues.push(Node.value_of(args[i], context, globals, node))\n }\n\n return nextFilter(options.filters[name].apply(context, argValues), ignored, context, globals, node)\n }\n\n // Lowest precedence.\n filter.precedence = 1\n return filter\n }\n\n/**\n * Parse an expression \u2013 builds an operator tree, in something like\n * Shunting-Yard.\n * See: http://en.wikipedia.org/wiki/Shunting-yard_algorithm\n *\n * @param filterable - Whether the expression can include jinga-style filters.\n * An argument of '|' is used only by the filter() method to parse subsequent\n * filters.\n * @param allowMultipleValues - Whether multiple values separated by commas are\n * allowed in this expression. When true (default), this method consumes\n * subsequent comma-separated values.\n * @see {@link Parser.singleValueExpression}\n *\n * @returns a function that computes the value of the expression\n * when called or a primitive.\n */\n expression (filterable: string | bool = false, allowMultipleValues: bool = true) {\n let op\n let nodes = []\n let ch = this.white()\n\n while (ch) {\n // unary prefix operators\n op = this.operator({ prefix: true })\n if (op) {\n nodes.push(undefined) // LHS Tree node.\n nodes.push(op)\n ch = this.white()\n }\n\n if (ch === '(') {\n this.next()\n nodes.push(this.expression())\n this.next(')')\n } else {\n nodes.push(this.value())\n }\n ch = this.white()\n\n if (ch === ':' || ch === '}' || ch === ']' ||\n ch === ')' || ch === '' || ch === '`' ||\n (ch === '|' && filterable === '|') ||\n (ch === ',' && !allowMultipleValues)) {\n break\n }\n\n // filters\n if (ch === '|' && this.lookahead() !== '|' && filterable) {\n nodes.push(this.filter())\n nodes.push(undefined)\n break\n }\n\n // infix or postfix operators\n op = this.operator({ not_an_array: true })\n\n if (op === operators['?']) {\n this.ternary(nodes)\n break\n } else if (op === operators['.'] || op === operators['?.']) {\n nodes.push(op)\n nodes.push(this.member())\n op = null\n } else if (op === operators['[']) {\n nodes.push(op)\n nodes.push(this.expression())\n ch = this.next(']')\n op = null\n } else if (op === operators['=>']) {\n // convert the last node to Parameters\n nodes[nodes.length-1] = new Parameters(this, nodes[nodes.length-1])\n nodes.push(op)\n } else if (op) {\n nodes.push(op)\n }\n\n ch = this.white()\n\n if (ch === ']' || (!op && ch === '(')) { break }\n }\n\n if (nodes.length === 0) {\n return undefined\n }\n\n var dereferences = this.dereferences()\n\n if (nodes.length === 1 && !dereferences.length) {\n return nodes[0]\n }\n\n for (var i = 0, j = dereferences.length; i < j; ++i) {\n var deref = dereferences[i]\n if (deref.constructor === Arguments) {\n nodes.push(operators.call)\n } else {\n nodes.push(operators['.'])\n }\n nodes.push(deref)\n }\n\n return new Expression(nodes)\n }\n\n/**\n * Use this method to parse expressions that can be followed by additional markup\n * seperated by a comma, such as in bindings strings.\n *\n * @returns an expression that cannot contain multiple values separated by commas.\n * @see {@link Parser.expression}\n */\n singleValueExpression (filterable: bool | string) {\n return this.expression(filterable, false)\n }\n\n ternary (nodes) {\n var ternary = new Ternary()\n ternary.yes = this.singleValueExpression()\n this.next(':')\n ternary.no = this.singleValueExpression()\n nodes.push(operators['?'])\n nodes.push(ternary)\n }\n\n/**\n * Parse the arguments to a function, returning an Array.\n *\n */\n funcArguments () {\n let args = []\n let ch = this.next('(')\n\n while (ch) {\n ch = this.white()\n if (ch === ')') {\n this.next(')')\n return new Arguments(this, args)\n } else {\n args.push(this.singleValueExpression())\n ch = this.white()\n }\n if (ch !== ')') { this.next(',') }\n }\n\n this.error('Bad arguments to function')\n }\n\n/**\n * The literal string reference `abc` in an `x.abc` expression.\n */\n member () {\n let member = ''\n let ch = this.white()\n let isIdentifierChar = Identifier.is_valid_start_char\n\n while (ch) {\n if (!isIdentifierChar(ch)) {\n break\n }\n member += ch\n ch = this.next()\n isIdentifierChar = Identifier.is_valid_continue_char\n }\n return member\n }\n\n/**\n * A dereference applies to an identifer, being either a function\n * call \"()\" or a membership lookup with square brackets \"[member]\".\n * @return {fn or undefined} Dereference function to be applied to the\n * Identifier\n */\n dereference () {\n let member\n let ch = this.white()\n\n while (ch) {\n if (ch === '(') {\n // a(...) function call\n return this.funcArguments()\n } else if (ch === '[') {\n // a[x] membership\n this.next('[')\n member = this.expression()\n this.white()\n this.next(']')\n\n return member\n } else if (ch === '.') {\n // a.x membership\n this.next('.')\n return this.member()\n } else {\n break\n }\n }\n }\n\n dereferences () {\n let ch = this.white()\n let dereferences = []\n let deref\n\n while (ch) {\n deref = this.dereference()\n if (deref !== undefined) {\n dereferences.push(deref)\n } else {\n break\n }\n }\n return dereferences\n }\n\n identifier () {\n let token = ''\n let isIdentifierChar = Identifier.is_valid_start_char\n let ch = this.white()\n\n while (ch) {\n if (!isIdentifierChar(ch)) {\n break\n }\n token += ch\n ch = this.next()\n isIdentifierChar = Identifier.is_valid_continue_char\n }\n switch (token) {\n case 'true': return true\n case 'false': return false\n case 'null': return null\n case 'undefined': return void 0\n case 'function':\n throw new Error('Knockout: Anonymous functions are no longer supported, but `=>` lambdas are. In: ' + this.text)\n // return this.anonymous_fn();\n }\n return new Identifier(this, token, this.dereferences())\n }\n\n readBindings () {\n let key\n let bindings = {}\n let sep\n let expr\n let ch = this.ch\n\n while (ch) {\n key = this.name()\n sep = this.white()\n\n if (!sep || sep === ',') {\n if (sep) {\n ch = this.next(',')\n } else {\n ch = ''\n }\n // A \"bare\" binding e.g. \"text\"; substitute value of 'null'\n // so it becomes \"text: null\".\n bindings[key] = null\n } else {\n if (key.indexOf('.') !== -1) {\n // Namespaced \u2013 i.e.\n // `attr.css: x` becomes `attr: { css: x }`\n // ^^^ - key\n key = key.split('.')\n bindings[key[0]] = bindings[key[0]] || {}\n\n if (key.length !== 2) {\n options.onError('Binding ' + key + ' should have two parts (a.b).')\n } else if (bindings[key[0]].constructor !== Object) {\n options.onError('Binding ' + key[0] + '.' + key[1] + ' paired with a non-object.')\n }\n\n ch = this.next(':')\n this.objectAddValue(bindings[key[0]], key[1], this.singleValueExpression(true))\n } else {\n ch = this.next(':')\n if (bindings[key] && typeof bindings[key] === 'object' && bindings[key].constructor === Object) {\n // Extend a namespaced bindings e.g. we've previously seen\n // on.x, now we're seeing on: { 'abc' }.\n expr = this.singleValueExpression(true)\n if (typeof expr !== 'object' || expr.constructor !== Object) {\n options.onError('Expected plain object for ' + key + ' value.')\n } else {\n extend(bindings[key], expr)\n }\n } else {\n bindings[key] = this.singleValueExpression(true)\n }\n }\n\n this.white()\n if (this.ch) {\n ch = this.next(',')\n } else {\n ch = ''\n }\n }\n }\n return bindings\n }\n\n valueAsAccessor (value, context, globals, node) {\n if (!value) { return () => value }\n if (typeof value === 'function') { return value }\n\n if (value[Node.isExpressionOrIdentifierSymbol]) {\n return () => Node.value_of(value, context, globals, node)\n }\n\n if (Array.isArray(value)) {\n return () => value.map(v => Node.value_of(v, context, globals, node))\n }\n\n if (typeof (value) !== 'function') {\n return () => clonePlainObjectDeep(value)\n }\n\n throw new Error('Value has cannot be converted to accessor: ' + value)\n }\n\n /**\n * Convert result[name] from a value to a function (i.e. `valueAccessor()`)\n * @param {object} result [Map of top-level names to values]\n * @return {object} [Map of top-level names to functions]\n *\n * Accessors may be one of (below) constAccessor, identifierAccessor,\n * expressionAccessor, or nodeAccessor.\n */\n convertToAccessors (result, context, globals, node) {\n objectForEach(result, (name, value) => {\n if (value instanceof Identifier) {\n // Return a function that, with no arguments returns\n // the value of the identifier, otherwise sets the\n // value of the identifier to the first given argument.\n Object.defineProperty(result, name, {\n value: function (optionalValue, options) {\n const currentValue = value.get_value(undefined, context, globals, node)\n if (arguments.length === 0) { return currentValue }\n const unchanged = optionalValue === currentValue\n if (options && options.onlyIfChanged && unchanged) { return }\n return value.set_value(optionalValue, context, globals)\n }\n })\n } else {\n result[name] = this.valueAsAccessor(value, context, globals, node)\n }\n })\n return result\n }\n\n preparse (source = '') {\n const preparsers = options.bindingStringPreparsers || []\n return preparsers.reduce((acc, fn) => fn(acc), source.trim())\n }\n\n runParse (source, fn) {\n this.text = this.preparse(source)\n this.at = 0\n this.ch = ' '\n\n try {\n var result = fn()\n this.white()\n if (this.ch) {\n this.error('Syntax Error')\n }\n return result\n } catch (e) {\n options.onError(e)\n }\n }\n\n /**\n * Get the bindings as name: accessor()\n * @param {string} source The binding string to parse.\n * @return {object} Map of name to accessor function.\n */\n parse (source, context = {}, globals = {}, node) {\n if (!source) { return () => null }\n this.currentContextGlobals = [context, globals, node]\n const parseFn = () => this.readBindings()\n const bindingAccessors = this.runParse(source, parseFn)\n return this.convertToAccessors(bindingAccessors, context, globals, node)\n }\n\n /**\n * Return a function that evaluates and returns the result of the expression.\n */\n parseExpression (source, context = {}, globals = {}, node) {\n if (!source) { return () => '' }\n this.currentContextGlobals = [context, globals, node]\n const parseFn = () => this.singleValueExpression(true)\n const bindingAccessors = this.runParse(source, parseFn)\n return this.valueAsAccessor(bindingAccessors, context, globals, node)\n }\n}\n"],
"mappings": "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",
"sourcesContent": ["/**\n * Originally based on (public domain):\n * https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n */\n\nimport { options, objectForEach, clonePlainObjectDeep, extend, hasOwnProperty } from '@tko/utils'\n\nimport { default as Expression } from './Expression'\nimport { default as Identifier } from './Identifier'\nimport { default as Arguments } from './Arguments'\nimport { default as Parameters } from './Parameters'\nimport { default as Ternary } from './Ternary'\nimport { default as Node } from './Node'\nimport { default as operators } from './operators'\n\nconst escapee = {\n \"'\": \"'\",\n '\"': '\"',\n '`': '`',\n '\\\\': '\\\\',\n '/': '/',\n $: '$',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n}\n\ntype InnerFilterType = (value: any, ignored: any, context: any, globals: any, node: any) => any\n\ntype FilterType = InnerFilterType & { precedence: number }\n\n/**\n * Construct a new Parser instance with new Parser(node, context)\n * @param {Node} node The DOM element from which we parsed the\n * content.\n * @param {object} context The Knockout context.\n * @param {object} globals An object containing any desired globals.\n */\nexport default class Parser {\n ch: any\n at: any\n text: any\n currentContextGlobals: [context: object, globals: object, node: any]\n\n white() {\n let ch = this.ch\n while (ch && ch <= ' ') {\n ch = this.next()\n }\n return this.comment(ch)\n }\n\n /**\n * Slurp any C or C++ style comments\n */\n comment(ch) {\n if (ch !== '/') {\n return ch\n }\n const p = this.at\n const second = this.lookahead()\n if (second === '/') {\n while (ch) {\n ch = this.next()\n if (ch === '\\n' || ch === '\\r') {\n break\n }\n }\n ch = this.next()\n } else if (second === '*') {\n while (ch) {\n ch = this.next()\n if (ch === '*' && this.lookahead() === '/') {\n this.next()\n break\n }\n }\n if (!ch) {\n this.error('Unclosed comment, starting at character ' + p)\n }\n this.next()\n return this.white()\n }\n return ch\n }\n\n next(c?: string) {\n if (c && c !== this.ch) {\n this.error(\"Expected '\" + c + \"' but got '\" + this.ch + \"'\")\n }\n this.ch = this.text.charAt(this.at)\n this.at += 1\n return this.ch\n }\n\n lookahead() {\n return this.text[this.at]\n }\n\n error(m) {\n if (m instanceof Error) {\n throw m\n }\n throw this.createError(m)\n }\n\n createError(m) {\n const [name, msg] = m.name ? [m.name, m.message] : [m, '']\n const message = `\\n${name} ${msg} of ${this.text}\\n` + Array(this.at).join(' ') + '_/ \uD83D\uDD25 \\\\_\\n'\n return new Error(message)\n }\n\n name() {\n // A name of a binding\n let name = ''\n let enclosedBy\n this.white()\n\n let ch = this.ch\n\n if (ch === \"'\" || ch === '\"') {\n enclosedBy = ch\n ch = this.next()\n }\n\n while (ch) {\n if (enclosedBy && ch === enclosedBy) {\n this.white()\n ch = this.next()\n if (ch !== ':' && ch !== ',') {\n this.error('Object name: ' + name + ' missing closing ' + enclosedBy)\n }\n return name\n } else if (ch === ':' || ch <= ' ' || ch === ',' || ch === '|') {\n return name\n }\n name += ch\n ch = this.next()\n }\n\n return name\n }\n\n number() {\n let number\n let string = ''\n let ch = this.ch\n\n if (ch === '-') {\n string = '-'\n ch = this.next('-')\n }\n while (ch >= '0' && ch <= '9') {\n string += ch\n ch = this.next()\n }\n if (ch === '.') {\n string += '.'\n ch = this.next()\n while (ch && ch >= '0' && ch <= '9') {\n string += ch\n ch = this.next()\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch\n ch = this.next()\n if (ch === '-' || ch === '+') {\n string += ch\n ch = this.next()\n }\n while (ch >= '0' && ch <= '9') {\n string += ch\n ch = this.next()\n }\n }\n number = +string\n if (!isFinite(number)) {\n options.onError(new Error('Bad number: ' + number + ' in ' + string))\n } else {\n return number\n }\n }\n\n /**\n * Add a property to 'object' that equals the given value.\n * @param {Object} object The object to add the value to.\n * @param {String} key object[key] is set to the given value.\n * @param {mixed} value The value, may be a primitive or a function. If a\n * function it is unwrapped as a property.\n */\n objectAddValue(object, key, value) {\n if (value && value[Node.isExpressionOrIdentifierSymbol]) {\n Object.defineProperty(object, key, {\n get: () => Node.value_of(value, ...this.currentContextGlobals),\n enumerable: true\n })\n } else if (Array.isArray(value)) {\n Object.defineProperty(object, key, {\n get: () => value.map(v => Node.value_of(v, ...this.currentContextGlobals)),\n enumerable: true\n })\n } else {\n // primitives\n object[key] = value\n }\n }\n\n object() {\n let key: string\n const object = {}\n let ch = this.ch\n\n if (ch === '{') {\n this.next('{')\n ch = this.white()\n if (ch === '}') {\n ch = this.next('}')\n return object\n }\n while (ch) {\n if (ch === '\"' || ch === \"'\" || ch === '`') {\n key = this.string()\n } else {\n key = this.name()\n }\n if (hasOwnProperty(object, key)) {\n this.error('Duplicate key \"' + key + '\"')\n }\n if (this.white() === ':') {\n ch = this.next(':')\n this.objectAddValue(object, key, this.singleValueExpression())\n } else {\n const objectKeyIsValue = new Identifier(this, key, [])\n this.objectAddValue(object, key, objectKeyIsValue)\n }\n\n ch = this.white()\n if (ch === '}') {\n ch = this.next('}')\n return object\n }\n\n this.next(',')\n ch = this.white()\n if (ch === '}') {\n ch = this.next('}')\n return object\n }\n }\n }\n throw this.createError('Bad object')\n }\n\n /**\n * Read up to delim and return the string\n * @param {string} delim The delimiter, either ' or \"\n * @return {string} The string read.\n */\n readString(delim) {\n let string = ''\n const nodes = ['']\n const plusOp: any = operators['+']\n let hex\n let i\n let uffff\n const interpolate = delim === '`'\n let ch = this.next()\n\n while (ch) {\n if (ch === delim) {\n ch = this.next()\n if (interpolate) {\n nodes.push(plusOp)\n }\n nodes.push(string)\n return nodes\n }\n if (ch === '\\\\') {\n ch = this.next()\n if (ch === 'u') {\n uffff = 0\n for (i = 0; i < 4; i += 1) {\n hex = parseInt((ch = this.next()), 16)\n if (!isFinite(hex)) {\n break\n }\n uffff = uffff * 16 + hex\n }\n string += String.fromCharCode(uffff)\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch]\n } else {\n break\n }\n } else if (interpolate && ch === '$') {\n ch = this.next()\n if (ch === '{') {\n this.next('{')\n nodes.push(plusOp)\n nodes.push(string)\n nodes.push(plusOp)\n nodes.push(this.expression())\n string = ''\n // this.next('}');\n } else {\n string += '$' + ch\n }\n } else {\n string += ch\n }\n ch = this.next()\n }\n\n throw this.createError('Bad string')\n }\n\n string() {\n const ch = this.ch\n if (ch === '\"') {\n return this.readString('\"')?.join('')\n } else if (ch === \"'\") {\n return this.readString(\"'\")?.join('')\n } else if (ch === '`') {\n return Node.create_root(this.readString('`'))\n }\n\n this.error('Bad string')\n }\n\n array() {\n const array = new Array()\n let ch = this.ch\n\n if (ch === '[') {\n ch = this.next('[')\n this.white()\n if (ch === ']') {\n ch = this.next(']')\n return array\n }\n while (ch) {\n array.push(this.singleValueExpression())\n ch = this.white()\n if (ch === ']') {\n ch = this.next(']')\n return array\n }\n this.next(',')\n ch = this.white()\n }\n }\n throw this.createError('Bad array')\n }\n\n value() {\n this.white()\n const ch = this.ch\n switch (ch) {\n case '{':\n return this.object()\n case '[':\n return this.array()\n case '\"':\n case \"'\":\n case '`':\n return this.string()\n case '-':\n return this.number()\n default:\n return ch >= '0' && ch <= '9' ? this.number() : this.identifier()\n }\n }\n\n /**\n * Get the function for the given operator.\n * A `.precedence` value is added to the function, with increasing\n * precedence having a higher number.\n * @return {function} The function that performs the infix operation\n */\n operator(opts) {\n let op = ''\n let opFn\n let ch = this.white()\n let isIdentifierChar = Identifier.is_valid_start_char\n\n while (ch) {\n if (\n isIdentifierChar(ch)\n || ch <= ' '\n || ch === ''\n || ch === '\"'\n || ch === \"'\"\n || ch === '{'\n || ch === '('\n || ch === '`'\n || ch === ')'\n || (ch <= '9' && ch >= '0')\n ) {\n break\n }\n\n if (!opts.not_an_array && ch === '[') {\n break\n }\n\n op += ch\n ch = this.next()\n\n // An infix followed by the prefix e.g. a + @b\n // TODO: other prefix unary operators\n if (ch === '@') {\n break\n }\n\n isIdentifierChar = Identifier.is_valid_continue_char\n }\n\n if (op !== '') {\n if (opts.prefix && op === '-') {\n op = '&-'\n }\n opFn = operators[op]\n\n if (!opFn) {\n this.error(\"Bad operator: '\" + op + \"'.\")\n }\n }\n\n return opFn\n }\n\n /**\n * Filters\n * Returns what the Node interprets as an \"operator\".\n * e.g.\n * <span data-bind=\"text: name | fit:20 | uppercase\"></span>\n */\n filter(): FilterType {\n let ch = this.next()\n const args = new Array()\n\n let nextFilter: ((any) => any) | InnerFilterType = function (v) {\n return v\n }\n const name = this.name()\n\n if (!options.filters[name]) {\n options.onError(new Error('Cannot find filter by the name of: ' + name))\n }\n\n ch = this.white()\n\n while (ch) {\n if (ch === ':') {\n ch = this.next()\n args.push(this.singleValueExpression('|'))\n }\n\n if (ch === '|') {\n nextFilter = this.filter()\n break\n }\n\n if (ch === ',') {\n break\n }\n\n ch = this.white()\n }\n\n function filter(value, ignored, context, globals, node) {\n const argValues = [value]\n\n for (let i = 0, j = args.length; i < j; ++i) {\n argValues.push(Node.value_of(args[i], context, globals, node))\n }\n\n return nextFilter(options.filters[name].apply(context, argValues), ignored, context, globals, node)\n }\n\n // Lowest precedence.\n filter.precedence = 1\n return filter\n }\n\n /**\n * Parse an expression \u2013 builds an operator tree, in something like\n * Shunting-Yard.\n * See: http://en.wikipedia.org/wiki/Shunting-yard_algorithm\n *\n * @param filterable - Whether the expression can include jinga-style filters.\n * An argument of '|' is used only by the filter() method to parse subsequent\n * filters.\n * @param allowMultipleValues - Whether multiple values separated by commas are\n * allowed in this expression. When true (default), this method consumes\n * subsequent comma-separated values.\n * @see {@link Parser.singleValueExpression}\n *\n * @returns a function that computes the value of the expression\n * when called or a primitive.\n */\n expression(filterable: string | boolean = false, allowMultipleValues: boolean = true) {\n let op\n const nodes = new Array()\n let ch = this.white()\n\n while (ch) {\n // unary prefix operators\n op = this.operator({ prefix: true })\n if (op) {\n nodes.push(undefined) // LHS Tree node.\n nodes.push(op)\n ch = this.white()\n }\n\n if (ch === '(') {\n this.next()\n nodes.push(this.expression())\n this.next(')')\n } else {\n nodes.push(this.value())\n }\n ch = this.white()\n\n if (\n ch === ':'\n || ch === '}'\n || ch === ']'\n || ch === ')'\n || ch === ''\n || ch === '`'\n || (ch === '|' && filterable === '|')\n || (ch === ',' && !allowMultipleValues)\n ) {\n break\n }\n\n // filters\n if (ch === '|' && this.lookahead() !== '|' && filterable) {\n nodes.push(this.filter())\n nodes.push(undefined)\n break\n }\n\n // infix or postfix operators\n op = this.operator({ not_an_array: true })\n\n if (op === operators['?']) {\n this.ternary(nodes)\n break\n } else if (op === operators['.'] || op === operators['?.']) {\n nodes.push(op)\n nodes.push(this.member())\n op = null\n } else if (op === operators['[']) {\n nodes.push(op)\n nodes.push(this.expression())\n ch = this.next(']')\n op = null\n } else if (op === operators['=>']) {\n // convert the last node to Parameters\n nodes[nodes.length - 1] = new Parameters(this, nodes[nodes.length - 1])\n nodes.push(op)\n } else if (op) {\n nodes.push(op)\n }\n\n ch = this.white()\n\n if (ch === ']' || (!op && ch === '(')) {\n break\n }\n }\n\n if (nodes.length === 0) {\n return undefined\n }\n\n const dereferences = this.dereferences()\n\n if (nodes.length === 1 && !dereferences.length) {\n return nodes[0]\n }\n\n for (let i = 0, j = dereferences.length; i < j; ++i) {\n const deref = dereferences[i]\n if (deref.constructor === Arguments) {\n nodes.push(operators.call)\n } else {\n nodes.push(operators['.'])\n }\n nodes.push(deref)\n }\n\n return new Expression(nodes)\n }\n\n /**\n * Use this method to parse expressions that can be followed by additional markup\n * seperated by a comma, such as in bindings strings.\n *\n * @returns an expression that cannot contain multiple values separated by commas.\n * @see {@link Parser.expression}\n */\n singleValueExpression(filterable: boolean | string = false) {\n return this.expression(filterable, false)\n }\n\n ternary(nodes) {\n const ternary = new Ternary()\n ternary.yes = this.singleValueExpression()\n this.next(':')\n ternary.no = this.singleValueExpression()\n nodes.push(operators['?'])\n nodes.push(ternary)\n }\n\n /**\n * Parse the arguments to a function, returning an Array.\n *\n */\n funcArguments() {\n const args = new Array()\n let ch = this.next('(')\n\n while (ch) {\n ch = this.white()\n if (ch === ')') {\n this.next(')')\n return new Arguments(this, args)\n } else {\n args.push(this.singleValueExpression())\n ch = this.white()\n }\n if (ch !== ')') {\n this.next(',')\n }\n }\n\n throw this.createError('Bad arguments to function')\n }\n\n /**\n * The literal string reference `abc` in an `x.abc` expression.\n */\n member() {\n let member = ''\n let ch = this.white()\n let isIdentifierChar = Identifier.is_valid_start_char\n\n while (ch) {\n if (!isIdentifierChar(ch)) {\n break\n }\n member += ch\n ch = this.next()\n isIdentifierChar = Identifier.is_valid_continue_char\n }\n return member\n }\n\n /**\n * A dereference applies to an identifer, being either a function\n * call \"()\" or a membership lookup with square brackets \"[member]\".\n * @return {fn or undefined} Dereference function to be applied to the\n * Identifier\n */\n dereference() {\n let member\n const ch = this.white()\n\n while (ch) {\n if (ch === '(') {\n // a(...) function call\n return this.funcArguments()\n } else if (ch === '[') {\n // a[x] membership\n this.next('[')\n member = this.expression()\n this.white()\n this.next(']')\n\n return member\n } else if (ch === '.') {\n // a.x membership\n this.next('.')\n return this.member()\n } else {\n break\n }\n }\n }\n\n dereferences() {\n const ch = this.white()\n const dereferences = new Array()\n let deref\n\n while (ch) {\n deref = this.dereference()\n if (deref !== undefined) {\n dereferences.push(deref)\n } else {\n break\n }\n }\n return dereferences\n }\n\n identifier() {\n let token = ''\n let isIdentifierChar = Identifier.is_valid_start_char\n let ch = this.white()\n\n while (ch) {\n if (!isIdentifierChar(ch)) {\n break\n }\n token += ch\n ch = this.next()\n isIdentifierChar = Identifier.is_valid_continue_char\n }\n switch (token) {\n case 'true':\n return true\n case 'false':\n return false\n case 'null':\n return null\n case 'undefined':\n return void 0\n case 'function':\n throw new Error('Knockout: Anonymous functions are no longer supported, but `=>` lambdas are. In: ' + this.text)\n // return this.anonymous_fn();\n }\n return new Identifier(this, token, this.dereferences())\n }\n\n readBindings() {\n let key\n const bindings = {}\n let sep\n let expr\n let ch = this.ch\n\n while (ch) {\n key = this.name()\n sep = this.white()\n\n if (!sep || sep === ',') {\n if (sep) {\n ch = this.next(',')\n } else {\n ch = ''\n }\n // A \"bare\" binding e.g. \"text\"; substitute value of 'null'\n // so it becomes \"text: null\".\n bindings[key] = null\n } else {\n if (key.indexOf('.') !== -1) {\n // Namespaced \u2013 i.e.\n // `attr.css: x` becomes `attr: { css: x }`\n // ^^^ - key\n key = key.split('.')\n bindings[key[0]] = bindings[key[0]] || {}\n\n if (key.length !== 2) {\n options.onError(new Error('Binding ' + key + ' should have two parts (a.b).'))\n } else if (bindings[key[0]].constructor !== Object) {\n options.onError(new Error('Binding ' + key[0] + '.' + key[1] + ' paired with a non-object.'))\n }\n\n ch = this.next(':')\n this.objectAddValue(bindings[key[0]], key[1], this.singleValueExpression(true))\n } else {\n ch = this.next(':')\n if (bindings[key] && typeof bindings[key] === 'object' && bindings[key].constructor === Object) {\n // Extend a namespaced bindings e.g. we've previously seen\n // on.x, now we're seeing on: { 'abc' }.\n expr = this.singleValueExpression(true)\n if (typeof expr !== 'object' || expr.constructor !== Object) {\n options.onError(new Error('Expected plain object for ' + key + ' value.'))\n } else {\n extend(bindings[key], expr)\n }\n } else {\n bindings[key] = this.singleValueExpression(true)\n }\n }\n\n this.white()\n if (this.ch) {\n ch = this.next(',')\n } else {\n ch = ''\n }\n }\n }\n return bindings\n }\n\n valueAsAccessor(value, context, globals, node) {\n if (!value) {\n return () => value\n }\n if (typeof value === 'function') {\n return value\n }\n\n if (value[Node.isExpressionOrIdentifierSymbol]) {\n return () => Node.value_of(value, context, globals, node)\n }\n\n if (Array.isArray(value)) {\n return () => value.map(v => Node.value_of(v, context, globals, node))\n }\n\n if (typeof value !== 'function') {\n return () => clonePlainObjectDeep(value)\n }\n\n throw new Error('Value has cannot be converted to accessor: ' + value)\n }\n\n /**\n * Convert result[name] from a value to a function (i.e. `valueAccessor()`)\n * @param {object} result [Map of top-level names to values]\n * @return {object} [Map of top-level names to functions]\n *\n * Accessors may be one of (below) constAccessor, identifierAccessor,\n * expressionAccessor, or nodeAccessor.\n */\n convertToAccessors(result, context, globals, node) {\n objectForEach(result, (name, value) => {\n if (value instanceof Identifier) {\n // Return a function that, with no arguments returns\n // the value of the identifier, otherwise sets the\n // value of the identifier to the first given argument.\n Object.defineProperty(result, name, {\n value: function (optionalValue, options) {\n const currentValue = value.get_value(undefined, context, globals, node)\n if (arguments.length === 0) {\n return currentValue\n }\n const unchanged = optionalValue === currentValue\n if (options && options.onlyIfChanged && unchanged) {\n return\n }\n return value.set_value(optionalValue, context, globals)\n }\n })\n } else {\n result[name] = this.valueAsAccessor(value, context, globals, node)\n }\n })\n return result\n }\n\n preparse(source = '') {\n const preparsers = options.bindingStringPreparsers || []\n return preparsers.reduce((acc, fn) => fn(acc), source.trim())\n }\n\n runParse(source, fn) {\n this.text = this.preparse(source)\n this.at = 0\n this.ch = ' '\n\n try {\n const result = fn()\n this.white()\n if (this.ch) {\n this.error('Syntax Error')\n }\n return result\n } catch (e) {\n options.onError(e)\n }\n }\n\n /**\n * Get the bindings as name: accessor()\n * @param {string} source The binding string to parse.\n * @return {object} Map of name to accessor function.\n */\n parse(source, context = {}, globals = {}, node) {\n if (!source) {\n return () => null\n }\n this.currentContextGlobals = [context, globals, node]\n const parseFn = () => this.readBindings()\n const bindingAccessors = this.runParse(source, parseFn)\n return this.convertToAccessors(bindingAccessors, context, globals, node)\n }\n\n /**\n * Return a function that evaluates and returns the result of the expression.\n */\n parseExpression(source, context = {}, globals = {}, node) {\n if (!source) {\n return () => ''\n }\n this.currentContextGlobals = [context, globals, node]\n const parseFn = () => this.singleValueExpression(true)\n const bindingAccessors = this.runParse(source, parseFn)\n return this.valueAsAccessor(bindingAccessors, context, globals, node)\n }\n}\n"],
"mappings": "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",
"names": ["options"]
}

@@ -0,44 +1,50 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import {
stringTrim
} from "@tko/utils";
import { stringTrim } from "@tko/utils";
const specials = ",\"'`{}()/:[\\]";
const bindingToken = RegExp([
'"(?:\\\\.|[^"])*"',
"'(?:\\\\.|[^'])*'",
"`(?:\\\\.|[^`])*`",
"/\\*(?:[^*]|\\*+[^*/])*\\*+/",
"//.*\n",
"/(?:\\\\.|[^/])+/\\w*",
"[^\\s:,/][^" + specials + "]*[^\\s" + specials + "]",
"[^\\s]"
].join("|"), "g");
const bindingToken = RegExp(
[
// These match strings, either with double quotes, single quotes, or backticks
'"(?:\\\\.|[^"])*"',
"'(?:\\\\.|[^'])*'",
"`(?:\\\\.|[^`])*`",
// Match C style comments
"/\\*(?:[^*]|\\*+[^*/])*\\*+/",
// Match C++ style comments
"//.*\n",
// Match a regular expression (text enclosed by slashes), but will also match sets of divisions
// as a regular expression (this is handled by the parsing loop below).
"/(?:\\\\.|[^/])+/\\w*",
// Match text (at least two characters) that does not contain any of the above special characters,
// although some of the special characters are allowed to start it (all but the colon and comma).
// The text can contain spaces, but leading or trailing spaces are skipped.
"[^\\s:,/][^" + specials + "]*[^\\s" + specials + "]",
// Match any non-space character not matched already. This will match colons and commas, since they're
// not matched by "everyThingElse", but will also match any other single character that wasn't already
// matched (for example: in "a: 1, b: 2", each of the non-space characters will be matched by oneNotSpace).
"[^\\s]"
].join("|"),
"g"
);
const divisionLookBehind = /[\])"'A-Za-z0-9_$]+$/;
const keywordRegexLookBehind = { "in": 1, "return": 1, "typeof": 1 };
const keywordRegexLookBehind = { in: 1, return: 1, typeof: 1 };
export default function parseObjectLiteral(objectLiteralString) {
var str = stringTrim(objectLiteralString);
if (str.charCodeAt(0) === 123)
str = str.slice(1, -1);
let str = stringTrim(objectLiteralString);
if (str.charCodeAt(0) === 123) str = str.slice(1, -1);
str += "\n,";
var result = [];
var toks = str.match(bindingToken);
var key;
var values = [];
var depth = 0;
const result = new Array();
let toks = str.match(bindingToken);
let key;
let values = new Array();
let depth = 0;
if (toks.length <= 1) {
return [];
}
for (var i = 0, tok; tok = toks[i]; ++i) {
var c = tok.charCodeAt(0);
for (let i = 0, tok; tok = toks[i]; ++i) {
const c = tok.charCodeAt(0);
if (c === 44) {
if (depth <= 0) {
result.push(key && values.length ? {
key,
value: values.join("")
} : {
"unknown": key || values.join("")
});
result.push(key && values.length ? { key, value: values.join("") } : { unknown: key || values.join("") });
key = depth = 0;
values = [];
values = new Array();
continue;

@@ -54,3 +60,3 @@ }

} else if (c === 47 && i && tok.length > 1) {
var match = toks[i - 1].match(divisionLookBehind);
const match = toks[i - 1].match(divisionLookBehind);
if (match && !keywordRegexLookBehind[match[0]]) {

@@ -57,0 +63,0 @@ str = str.substr(str.indexOf(tok) + 1);

{
"version": 3,
"sources": ["../src/preparse.ts"],
"sourcesContent": ["import {\n stringTrim\n} from '@tko/utils'\n\n/* eslint no-cond-assign: 0 */\n\n// The following regular expressions will be used to split an object-literal string into tokens\n\n// These characters have special meaning to the parser and must not appear in the middle of a\n// token, except as part of a string.\nconst specials = ',\"\\'`{}()/:[\\\\]'\nconst bindingToken = RegExp([\n // These match strings, either with double quotes, single quotes, or backticks\n '\"(?:\\\\\\\\.|[^\"])*\"',\n \"'(?:\\\\\\\\.|[^'])*'\",\n '`(?:\\\\\\\\.|[^`])*`',\n // Match C style comments\n '/\\\\*(?:[^*]|\\\\*+[^*/])*\\\\*+/',\n // Match C++ style comments\n '//.*\\n',\n // Match a regular expression (text enclosed by slashes), but will also match sets of divisions\n // as a regular expression (this is handled by the parsing loop below).\n '/(?:\\\\\\\\.|[^/])+/\\\\w*',\n // Match text (at least two characters) that does not contain any of the above special characters,\n // although some of the special characters are allowed to start it (all but the colon and comma).\n // The text can contain spaces, but leading or trailing spaces are skipped.\n '[^\\\\s:,/][^' + specials + ']*[^\\\\s' + specials + ']',\n // Match any non-space character not matched already. This will match colons and commas, since they're\n // not matched by \"everyThingElse\", but will also match any other single character that wasn't already\n // matched (for example: in \"a: 1, b: 2\", each of the non-space characters will be matched by oneNotSpace).\n '[^\\\\s]'\n].join('|'), 'g')\n\n // Match end of previous token to determine whether a slash is a division or regex.\nconst divisionLookBehind = /[\\])\"'A-Za-z0-9_$]+$/\nconst keywordRegexLookBehind = { 'in': 1, 'return': 1, 'typeof': 1 }\n\n/**\n * Break a binding string (data-bind='x: val, y: ..') into a stable array\n * of {key: value}.\n */\nexport default function parseObjectLiteral (objectLiteralString) {\n // Trim leading and trailing spaces from the string\n var str = stringTrim(objectLiteralString)\n\n // Trim braces '{' surrounding the whole object literal\n if (str.charCodeAt(0) === 123) str = str.slice(1, -1)\n\n // Add a newline to correctly match a C++ style comment at the end of the string and\n // add a comma so that we don't need a separate code block to deal with the last item\n str += '\\n,'\n\n // Split into tokens\n var result = []\n var toks = str.match(bindingToken)\n var key\n var values = []\n var depth = 0\n\n if (toks.length <= 1) { return [] }\n\n for (var i = 0, tok; tok = toks[i]; ++i) {\n var c = tok.charCodeAt(0)\n // A comma signals the end of a key/value pair if depth is zero\n if (c === 44) { // \",\"\n if (depth <= 0) {\n result.push((key && values.length) ? {\n key: key,\n value: values.join('')\n } : {\n 'unknown': key || values.join('')\n })\n key = depth = 0\n values = []\n continue\n }\n // Simply skip the colon that separates the name and value\n } else if (c === 58) { // \":\"\n if (!depth && !key && values.length === 1) {\n key = values.pop()\n continue\n }\n // A set of slashes is initially matched as a regular expression, but could be division\n } else if (c === 47 && tok.length > 1 && (tok.charCodeAt(1) === 47 || tok.charCodeAt(1) === 42)) { // \"//\" or \"/*\"\n // skip comments\n continue\n } else if (c === 47 && i && tok.length > 1) { // \"/\"\n // Look at the end of the previous token to determine if the slash is actually division\n var match = toks[i - 1].match(divisionLookBehind)\n if (match && !keywordRegexLookBehind[match[0]]) {\n // The slash is actually a division punctuator; re-parse the remainder of the string (not including the slash)\n str = str.substr(str.indexOf(tok) + 1)\n toks = str.match(bindingToken)\n i = -1\n // Continue with just the slash\n tok = '/'\n }\n // Increment depth for parentheses, braces, and brackets so that interior commas are ignored\n } else if (c === 40 || c === 123 || c === 91) { // '(', '{', '['\n ++depth\n } else if (c === 41 || c === 125 || c === 93) { // ')', '}', ']'\n --depth\n // The key will be the first token; if it's a string, trim the quotes\n } else if (!key && !values.length && (c === 34 || c === 39)) { // '\"', \"'\"\n tok = tok.slice(1, -1)\n }\n values.push(tok)\n }\n\n return result\n}\n"],
"mappings": ";;AAAA;AAAA,EACE;AAAA,OACK;AAQP,MAAM,WAAW;AACjB,MAAM,eAAe,OAAO;AAAA,EAE1B;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAEA;AAAA,EAGA;AAAA,EAIA,gBAAgB,WAAW,YAAY,WAAW;AAAA,EAIlD;AACF,EAAE,KAAK,GAAG,GAAG,GAAG;AAGhB,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,EAAE;AAMnE,wBAAwB,mBAAoB,qBAAqB;AAE/D,MAAI,MAAM,WAAW,mBAAmB;AAGxC,MAAI,IAAI,WAAW,CAAC,MAAM;AAAK,UAAM,IAAI,MAAM,GAAG,EAAE;AAIpD,SAAO;AAGP,MAAI,SAAS,CAAC;AACd,MAAI,OAAO,IAAI,MAAM,YAAY;AACjC,MAAI;AACJ,MAAI,SAAS,CAAC;AACd,MAAI,QAAQ;AAEZ,MAAI,KAAK,UAAU,GAAG;AAAE,WAAO,CAAC;AAAA,EAAE;AAElC,WAAS,IAAI,GAAG,KAAK,MAAM,KAAK,IAAI,EAAE,GAAG;AACvC,QAAI,IAAI,IAAI,WAAW,CAAC;AAExB,QAAI,MAAM,IAAI;AACZ,UAAI,SAAS,GAAG;AACd,eAAO,KAAM,OAAO,OAAO,SAAU;AAAA,UACnC;AAAA,UACA,OAAO,OAAO,KAAK,EAAE;AAAA,QACvB,IAAI;AAAA,UACF,WAAW,OAAO,OAAO,KAAK,EAAE;AAAA,QAClC,CAAC;AACD,cAAM,QAAQ;AACd,iBAAS,CAAC;AACV;AAAA,MACF;AAAA,IAEF,WAAW,MAAM,IAAI;AACnB,UAAI,CAAC,SAAS,CAAC,OAAO,OAAO,WAAW,GAAG;AACzC,cAAM,OAAO,IAAI;AACjB;AAAA,MACF;AAAA,IAEF,WAAW,MAAM,MAAM,IAAI,SAAS,MAAM,IAAI,WAAW,CAAC,MAAM,MAAM,IAAI,WAAW,CAAC,MAAM,KAAK;AAE/F;AAAA,IACF,WAAW,MAAM,MAAM,KAAK,IAAI,SAAS,GAAG;AAE1C,UAAI,QAAQ,KAAK,IAAI,GAAG,MAAM,kBAAkB;AAChD,UAAI,SAAS,CAAC,uBAAuB,MAAM,KAAK;AAE9C,cAAM,IAAI,OAAO,IAAI,QAAQ,GAAG,IAAI,CAAC;AACrC,eAAO,IAAI,MAAM,YAAY;AAC7B,YAAI;AAEJ,cAAM;AAAA,MACR;AAAA,IAEF,WAAW,MAAM,MAAM,MAAM,OAAO,MAAM,IAAI;AAC5C,QAAE;AAAA,IACJ,WAAW,MAAM,MAAM,MAAM,OAAO,MAAM,IAAI;AAC5C,QAAE;AAAA,IAEJ,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,MAAM,MAAM,MAAM,KAAK;AAC3D,YAAM,IAAI,MAAM,GAAG,EAAE;AAAA,IACvB;AACA,WAAO,KAAK,GAAG;AAAA,EACjB;AAEA,SAAO;AACT;",
"sourcesContent": ["import { stringTrim } from '@tko/utils'\n\n/* eslint no-cond-assign: 0 */\n\n// The following regular expressions will be used to split an object-literal string into tokens\n\n// These characters have special meaning to the parser and must not appear in the middle of a\n// token, except as part of a string.\nconst specials = ',\"\\'`{}()/:[\\\\]'\nconst bindingToken = RegExp(\n [\n // These match strings, either with double quotes, single quotes, or backticks\n '\"(?:\\\\\\\\.|[^\"])*\"',\n \"'(?:\\\\\\\\.|[^'])*'\",\n '`(?:\\\\\\\\.|[^`])*`',\n // Match C style comments\n '/\\\\*(?:[^*]|\\\\*+[^*/])*\\\\*+/',\n // Match C++ style comments\n '//.*\\n',\n // Match a regular expression (text enclosed by slashes), but will also match sets of divisions\n // as a regular expression (this is handled by the parsing loop below).\n '/(?:\\\\\\\\.|[^/])+/\\\\w*',\n // Match text (at least two characters) that does not contain any of the above special characters,\n // although some of the special characters are allowed to start it (all but the colon and comma).\n // The text can contain spaces, but leading or trailing spaces are skipped.\n '[^\\\\s:,/][^' + specials + ']*[^\\\\s' + specials + ']',\n // Match any non-space character not matched already. This will match colons and commas, since they're\n // not matched by \"everyThingElse\", but will also match any other single character that wasn't already\n // matched (for example: in \"a: 1, b: 2\", each of the non-space characters will be matched by oneNotSpace).\n '[^\\\\s]'\n ].join('|'),\n 'g'\n)\n\n// Match end of previous token to determine whether a slash is a division or regex.\nconst divisionLookBehind = /[\\])\"'A-Za-z0-9_$]+$/\nconst keywordRegexLookBehind = { in: 1, return: 1, typeof: 1 }\n\n/**\n * Break a binding string (data-bind='x: val, y: ..') into a stable array\n * of {key: value}.\n */\nexport default function parseObjectLiteral(objectLiteralString) {\n // Trim leading and trailing spaces from the string\n let str = stringTrim(objectLiteralString)\n\n // Trim braces '{' surrounding the whole object literal\n if (str.charCodeAt(0) === 123) str = str.slice(1, -1)\n\n // Add a newline to correctly match a C++ style comment at the end of the string and\n // add a comma so that we don't need a separate code block to deal with the last item\n str += '\\n,'\n\n // Split into tokens\n const result = new Array()\n let toks = str.match(bindingToken)\n let key\n let values = new Array()\n let depth = 0\n\n if (toks.length <= 1) {\n return []\n }\n\n for (let i = 0, tok; (tok = toks[i]); ++i) {\n const c = tok.charCodeAt(0)\n // A comma signals the end of a key/value pair if depth is zero\n if (c === 44) {\n // \",\"\n if (depth <= 0) {\n result.push(key && values.length ? { key: key, value: values.join('') } : { unknown: key || values.join('') })\n key = depth = 0\n values = new Array()\n continue\n }\n // Simply skip the colon that separates the name and value\n } else if (c === 58) {\n // \":\"\n if (!depth && !key && values.length === 1) {\n key = values.pop()\n continue\n }\n // A set of slashes is initially matched as a regular expression, but could be division\n } else if (c === 47 && tok.length > 1 && (tok.charCodeAt(1) === 47 || tok.charCodeAt(1) === 42)) {\n // \"//\" or \"/*\"\n // skip comments\n continue\n } else if (c === 47 && i && tok.length > 1) {\n // \"/\"\n // Look at the end of the previous token to determine if the slash is actually division\n const match = toks[i - 1].match(divisionLookBehind)\n if (match && !keywordRegexLookBehind[match[0]]) {\n // The slash is actually a division punctuator; re-parse the remainder of the string (not including the slash)\n str = str.substr(str.indexOf(tok) + 1)\n toks = str.match(bindingToken)\n i = -1\n // Continue with just the slash\n tok = '/'\n }\n // Increment depth for parentheses, braces, and brackets so that interior commas are ignored\n } else if (c === 40 || c === 123 || c === 91) {\n // '(', '{', '['\n ++depth\n } else if (c === 41 || c === 125 || c === 93) {\n // ')', '}', ']'\n --depth\n // The key will be the first token; if it's a string, trim the quotes\n } else if (!key && !values.length && (c === 34 || c === 39)) {\n // '\"', \"'\"\n tok = tok.slice(1, -1)\n }\n values.push(tok)\n }\n\n return result\n}\n"],
"mappings": ";;AAAA,SAAS,kBAAkB;AAQ3B,MAAM,WAAW;AACjB,MAAM,eAAe;AAAA,EACnB;AAAA;AAAA,IAEE;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA;AAAA,IAGA;AAAA;AAAA;AAAA;AAAA,IAIA,gBAAgB,WAAW,YAAY,WAAW;AAAA;AAAA;AAAA;AAAA,IAIlD;AAAA,EACF,EAAE,KAAK,GAAG;AAAA,EACV;AACF;AAGA,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,EAAE;AAM7D,wBAAwB,mBAAmB,qBAAqB;AAE9D,MAAI,MAAM,WAAW,mBAAmB;AAGxC,MAAI,IAAI,WAAW,CAAC,MAAM,IAAK,OAAM,IAAI,MAAM,GAAG,EAAE;AAIpD,SAAO;AAGP,QAAM,SAAS,IAAI,MAAM;AACzB,MAAI,OAAO,IAAI,MAAM,YAAY;AACjC,MAAI;AACJ,MAAI,SAAS,IAAI,MAAM;AACvB,MAAI,QAAQ;AAEZ,MAAI,KAAK,UAAU,GAAG;AACpB,WAAO,CAAC;AAAA,EACV;AAEA,WAAS,IAAI,GAAG,KAAM,MAAM,KAAK,CAAC,GAAI,EAAE,GAAG;AACzC,UAAM,IAAI,IAAI,WAAW,CAAC;AAE1B,QAAI,MAAM,IAAI;AAEZ,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,OAAO,OAAO,SAAS,EAAE,KAAU,OAAO,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,OAAO,OAAO,KAAK,EAAE,EAAE,CAAC;AAC7G,cAAM,QAAQ;AACd,iBAAS,IAAI,MAAM;AACnB;AAAA,MACF;AAAA,IAEF,WAAW,MAAM,IAAI;AAEnB,UAAI,CAAC,SAAS,CAAC,OAAO,OAAO,WAAW,GAAG;AACzC,cAAM,OAAO,IAAI;AACjB;AAAA,MACF;AAAA,IAEF,WAAW,MAAM,MAAM,IAAI,SAAS,MAAM,IAAI,WAAW,CAAC,MAAM,MAAM,IAAI,WAAW,CAAC,MAAM,KAAK;AAG/F;AAAA,IACF,WAAW,MAAM,MAAM,KAAK,IAAI,SAAS,GAAG;AAG1C,YAAM,QAAQ,KAAK,IAAI,CAAC,EAAE,MAAM,kBAAkB;AAClD,UAAI,SAAS,CAAC,uBAAuB,MAAM,CAAC,CAAC,GAAG;AAE9C,cAAM,IAAI,OAAO,IAAI,QAAQ,GAAG,IAAI,CAAC;AACrC,eAAO,IAAI,MAAM,YAAY;AAC7B,YAAI;AAEJ,cAAM;AAAA,MACR;AAAA,IAEF,WAAW,MAAM,MAAM,MAAM,OAAO,MAAM,IAAI;AAE5C,QAAE;AAAA,IACJ,WAAW,MAAM,MAAM,MAAM,OAAO,MAAM,IAAI;AAE5C,QAAE;AAAA,IAEJ,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,MAAM,MAAM,MAAM,KAAK;AAE3D,YAAM,IAAI,MAAM,GAAG,EAAE;AAAA,IACvB;AACA,WAAO,KAAK,GAAG;AAAA,EACjB;AAEA,SAAO;AACT;",
"names": []
}

@@ -0,3 +1,3 @@

// @tko/utils.parser 🥊 4.0.0 ESM
"use strict";
// @tko/utils.parser 🥊 4.0.0-beta1.6 ESM
import Node from "./Node";

@@ -4,0 +4,0 @@ export default class Ternary {

{
"version": 3,
"sources": ["../src/Ternary.ts"],
"sourcesContent": ["\nimport Node from './Node'\n\nexport default class Ternary {\n constructor (yes, no) {\n Object.assign(this, {yes, no})\n }\n\n get_value () { return this }\n\n get [Node.isExpressionOrIdentifierSymbol] () { return true }\n}\n"],
"mappings": ";;AACA,OAAO,UAAU;AAEjB,qBAAqB,QAAQ;AAAA,EAC3B,YAAa,KAAK,IAAI;AACpB,WAAO,OAAO,MAAM,EAAC,KAAK,GAAE,CAAC;AAAA,EAC/B;AAAA,EAEA,YAAa;AAAE,WAAO;AAAA,EAAK;AAAA,EAE3B,KAAK,KAAK,kCAAmC;AAAE,WAAO;AAAA,EAAK;AAC7D;",
"sourcesContent": ["import Node from './Node'\n\nexport default class Ternary {\n yes: any\n no: any\n constructor(yes?, no?) {\n Object.assign(this, { yes, no })\n }\n\n get_value() {\n return this\n }\n\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true\n }\n}\n"],
"mappings": ";;AAAA,OAAO,UAAU;AAEjB,qBAAqB,QAAQ;AAAA,EAG3B,YAAY,KAAM,IAAK;AACrB,WAAO,OAAO,MAAM,EAAE,KAAK,GAAG,CAAC;AAAA,EACjC;AAAA,EAEA,YAAY;AACV,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,KAAK,8BAA8B,IAAI;AAC1C,WAAO;AAAA,EACT;AACF;",
"names": []
}
{
"version": "4.0.0-beta1.6",
"version": "4.0.0",
"name": "@tko/utils.parser",

@@ -12,10 +12,10 @@ "description": "Parse the Javascript-like language used in data-bind and other HTML attributes (CSP-safe)",

"dependencies": {
"@tko/observable": "^4.0.0-beta1.3",
"@tko/utils": "^4.0.0-beta1.3",
"@tko/observable": "^4.0.0",
"@tko/utils": "^4.0.0",
"tslib": "^2.2.0"
},
"peerDependencies": {
"@tko/bind": "^4.0.0-alpha9.0",
"@tko/binding.core": "^4.0.0-alpha9.0",
"@tko/provider.databind": "^4.0.0-alpha9.0"
"@tko/bind": "^4.0.0",
"@tko/binding.core": "^4.0.0",
"@tko/provider.databind": "^4.0.0"
},

@@ -50,4 +50,3 @@ "karma": {

"url": "git+https://github.com/knockout/tko.git"
},
"gitHead": "c31dee2a2aa3f07e798d59e3aaf0da955dbcacb0"
}
}
The MIT License (MIT) - http://www.opensource.org/licenses/mit-license.php
Copyright (c) Steven Sanderson, the Knockout.js team, and other contributors
http://knockoutjs.com/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display