n8n-editor-ui
Version:
Workflow Editor UI for n8n
5,126 lines • 271 kB
JavaScript
;
(function () {
System.register(["./chunk-legacy-Re9CbdfL.js", "./vue.runtime.esm-bundler-legacy--Sn1h8On.js", "./_MapCache-legacy-DlYNX_X1.js", "./src-legacy-uZTNWMC0.js", "./en-legacy-DJK4SpPN.js", "./preload-helper-legacy-CXRjoQ0T.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./truncate-legacy-BGje52Or.js", "./icon-legacy-CqVXaCIS.js", "./empty-legacy-CA9D6itE.js", "./useTelemetry-legacy-B3pzzkAE.js", "./useToast-legacy-C4Vu5mt9.js", "./sanitize-html-legacy-DLqXJu-U.js", "./CalendarDate-legacy-BUvNgcoo.js", "./path-browserify-legacy-C6ml8BkF.js", "./constants-legacy-TKxWCqvM.js", "./merge-legacy-8xjIc_ts.js", "./_baseOrderBy-legacy-CB2Dh5d_.js", "./dateformat-legacy-C4HUJTCr.js", "./useDebounce-legacy-CqZ-fJEm.js", "./useExternalHooks-legacy-8pg6K3ln.js", "./useStyles-legacy-E8NPEyeD.js", "./usePinnedData-legacy-CfMMmXZ8.js", "./useClipboard-legacy-DEPZr2pv.js"], function (_export, _context) {
"use strict";
var __require, __toESM, __commonJS, computed, toDisplayString, createElementBlock, init_dist, global, unref, ref, createVNode, defineComponent, createBlock, withCtx, openBlock, createTextVNode, normalizeClass, createBaseVNode, inject, useI18n, ElDropdownItem, ElDropdownMenu, ElDropdown, N8nIconButton_default, __plugin_vue_export_helper_default, useRoute, executionDataToJson, useNDVStore, clearJsonKey, useWorkflowsStore, convertPath, useTelemetry, useNodeHelpers, useToast, nonExistingJsonPath, PopOutWindowKey, usePinnedData, useClipboard, __vite_style__, require_jsonpath, import_jsonpath, _hoisted_1, RunDataJsonActions_vue_vue_type_script_setup_true_lang_default, actionsGroup, RunDataJsonActions_vue_vue_type_style_index_0_lang_module_default, cssModules, RunDataJsonActions_default;
return {
setters: [function (_chunkLegacy001Js) {
__require = _chunkLegacy001Js.i;
__toESM = _chunkLegacy001Js.o;
__commonJS = _chunkLegacy001Js.t;
}, function (_vueRuntimeEsmBundlerLegacy003Js) {
computed = _vueRuntimeEsmBundlerLegacy003Js.C;
toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Cn;
createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D;
init_dist = _vueRuntimeEsmBundlerLegacy003Js.Dn;
global = _vueRuntimeEsmBundlerLegacy003Js.En;
unref = _vueRuntimeEsmBundlerLegacy003Js.Gt;
ref = _vueRuntimeEsmBundlerLegacy003Js.It;
createVNode = _vueRuntimeEsmBundlerLegacy003Js.M;
defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P;
createBlock = _vueRuntimeEsmBundlerLegacy003Js.T;
withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt;
openBlock = _vueRuntimeEsmBundlerLegacy003Js.et;
createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j;
normalizeClass = _vueRuntimeEsmBundlerLegacy003Js.vn;
createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w;
inject = _vueRuntimeEsmBundlerLegacy003Js.z;
}, function (_MapCacheLegacy005Js) {
useI18n = _MapCacheLegacy005Js.gt;
}, function (_srcLegacy007Js) {
ElDropdownItem = _srcLegacy007Js.Mt;
ElDropdownMenu = _srcLegacy007Js.Nt;
ElDropdown = _srcLegacy007Js.jt;
N8nIconButton_default = _srcLegacy007Js.xt;
}, function (_enLegacy00bJs) {}, function (_preloadHelperLegacy00dJs) {}, function (_pluginVue_exportHelperLegacy00fJs) {
__plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t;
}, function (_truncateLegacy00hJs) {
useRoute = _truncateLegacy00hJs.v;
}, function (_iconLegacy00nJs) {}, function (_emptyLegacy00vJs) {}, function (_useTelemetryLegacy00HJs) {
executionDataToJson = _useTelemetryLegacy00HJs.Vr;
useNDVStore = _useTelemetryLegacy00HJs.a;
clearJsonKey = _useTelemetryLegacy00HJs.fi;
useWorkflowsStore = _useTelemetryLegacy00HJs.o;
convertPath = _useTelemetryLegacy00HJs.pi;
useTelemetry = _useTelemetryLegacy00HJs.t;
useNodeHelpers = _useTelemetryLegacy00HJs.xn;
}, function (_useToastLegacy00JJs) {
useToast = _useToastLegacy00JJs.t;
}, function (_sanitizeHtmlLegacy00LJs) {}, function (_CalendarDateLegacy00NJs) {}, function (_pathBrowserifyLegacy00RJs) {}, function (_constantsLegacy00TJs) {
nonExistingJsonPath = _constantsLegacy00TJs.B;
PopOutWindowKey = _constantsLegacy00TJs.Js;
}, function (_mergeLegacy00VJs) {}, function (_baseOrderByLegacy00ZJs) {}, function (_dateformatLegacy00$Js) {}, function (_useDebounceLegacy011Js) {}, function (_useExternalHooksLegacy013Js) {}, function (_useStylesLegacy015Js) {}, function (_usePinnedDataLegacy01rJs) {
usePinnedData = _usePinnedDataLegacy01rJs.t;
}, function (_useClipboardLegacy01xJs) {
useClipboard = _useClipboardLegacy01xJs.t;
}],
execute: function () {
__vite_style__ = document.createElement('style');
__vite_style__.textContent = "/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._actionsGroup_q5z7w_123 {\n position: absolute;\n z-index: 10;\n top: 0;\n right: 0;\n padding-right: var(--spacing--sm);\n opacity: 0;\n transition: opacity 0.3s ease;\n}/*$vite$:1*/";
document.head.appendChild(__vite_style__);
//#region ../../../node_modules/.pnpm/jsonpath@1.1.1/node_modules/jsonpath/jsonpath.js
require_jsonpath = /* @__PURE__ */__commonJS({
"../../../node_modules/.pnpm/jsonpath@1.1.1/node_modules/jsonpath/jsonpath.js": (exports, module) => {
init_dist();
/*! jsonpath 1.1.1 */
(function (f) {
if (typeof exports === "object" && typeof module !== "undefined") module.exports = f();else if (typeof define === "function" && define.amd) define([], f);else {
var g;
if (typeof window !== "undefined") g = window;else if (typeof global !== "undefined") g = global;else if (typeof self !== "undefined") g = self;else g = this;
g.jsonpath = f();
}
})(function () {
var define$1;
return function e(t, n, r) {
function s(o$1, u) {
if (!n[o$1]) {
if (!t[o$1]) {
var a = typeof __require == "function" && __require;
if (!u && a) return a(o$1, !0);
if (i) return i(o$1, !0);
var f = /* @__PURE__ */new Error("Cannot find module '" + o$1 + "'");
throw f.code = "MODULE_NOT_FOUND", f;
}
var l = n[o$1] = {
exports: {}
};
t[o$1][0].call(l.exports, function (e$1) {
var n$1 = t[o$1][1][e$1];
return s(n$1 ? n$1 : e$1);
}, l, l.exports, e, t, n, r);
}
return n[o$1].exports;
}
var i = typeof __require == "function" && __require;
for (var o = 0; o < r.length; o++) s(r[o]);
return s;
}({
"./aesprim": [function (require$1, module$1, exports$1) {
(function (root, factory) {
/* istanbul ignore next */
if (typeof define$1 === "function" && define$1.amd) define$1(["exports"], factory);else if (typeof exports$1 !== "undefined") factory(exports$1);else factory(root.esprima = {});
})(this, function (exports$2) {
var Token = {
BooleanLiteral: 1,
EOF: 2,
Identifier: 3,
Keyword: 4,
NullLiteral: 5,
NumericLiteral: 6,
Punctuator: 7,
StringLiteral: 8,
RegularExpression: 9
},
TokenName = {},
FnExprTokens,
Syntax,
PropertyKind,
Messages,
Regex,
SyntaxTreeDelegate,
source,
strict,
index,
lineNumber,
lineStart,
length,
delegate,
lookahead,
state,
extra;
TokenName[Token.BooleanLiteral] = "Boolean";
TokenName[Token.EOF] = "<end>";
TokenName[Token.Identifier] = "Identifier";
TokenName[Token.Keyword] = "Keyword";
TokenName[Token.NullLiteral] = "Null";
TokenName[Token.NumericLiteral] = "Numeric";
TokenName[Token.Punctuator] = "Punctuator";
TokenName[Token.StringLiteral] = "String";
TokenName[Token.RegularExpression] = "RegularExpression";
FnExprTokens = ["(", "{", "[", "in", "typeof", "instanceof", "new", "return", "case", "delete", "throw", "void", "=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "&=", "|=", "^=", ",", "+", "-", "*", "/", "%", "++", "--", "<<", ">>", ">>>", "&", "|", "^", "!", "~", "&&", "||", "?", ":", "===", "==", ">=", "<=", "<", ">", "!=", "!=="];
Syntax = {
AssignmentExpression: "AssignmentExpression",
ArrayExpression: "ArrayExpression",
BlockStatement: "BlockStatement",
BinaryExpression: "BinaryExpression",
BreakStatement: "BreakStatement",
CallExpression: "CallExpression",
CatchClause: "CatchClause",
ConditionalExpression: "ConditionalExpression",
ContinueStatement: "ContinueStatement",
DoWhileStatement: "DoWhileStatement",
DebuggerStatement: "DebuggerStatement",
EmptyStatement: "EmptyStatement",
ExpressionStatement: "ExpressionStatement",
ForStatement: "ForStatement",
ForInStatement: "ForInStatement",
FunctionDeclaration: "FunctionDeclaration",
FunctionExpression: "FunctionExpression",
Identifier: "Identifier",
IfStatement: "IfStatement",
Literal: "Literal",
LabeledStatement: "LabeledStatement",
LogicalExpression: "LogicalExpression",
MemberExpression: "MemberExpression",
NewExpression: "NewExpression",
ObjectExpression: "ObjectExpression",
Program: "Program",
Property: "Property",
ReturnStatement: "ReturnStatement",
SequenceExpression: "SequenceExpression",
SwitchStatement: "SwitchStatement",
SwitchCase: "SwitchCase",
ThisExpression: "ThisExpression",
ThrowStatement: "ThrowStatement",
TryStatement: "TryStatement",
UnaryExpression: "UnaryExpression",
UpdateExpression: "UpdateExpression",
VariableDeclaration: "VariableDeclaration",
VariableDeclarator: "VariableDeclarator",
WhileStatement: "WhileStatement",
WithStatement: "WithStatement"
};
PropertyKind = {
Data: 1,
Get: 2,
Set: 4
};
Messages = {
UnexpectedToken: "Unexpected token %0",
UnexpectedNumber: "Unexpected number",
UnexpectedString: "Unexpected string",
UnexpectedIdentifier: "Unexpected identifier",
UnexpectedReserved: "Unexpected reserved word",
UnexpectedEOS: "Unexpected end of input",
NewlineAfterThrow: "Illegal newline after throw",
InvalidRegExp: "Invalid regular expression",
UnterminatedRegExp: "Invalid regular expression: missing /",
InvalidLHSInAssignment: "Invalid left-hand side in assignment",
InvalidLHSInForIn: "Invalid left-hand side in for-in",
MultipleDefaultsInSwitch: "More than one default clause in switch statement",
NoCatchOrFinally: "Missing catch or finally after try",
UnknownLabel: "Undefined label '%0'",
Redeclaration: "%0 '%1' has already been declared",
IllegalContinue: "Illegal continue statement",
IllegalBreak: "Illegal break statement",
IllegalReturn: "Illegal return statement",
StrictModeWith: "Strict mode code may not include a with statement",
StrictCatchVariable: "Catch variable may not be eval or arguments in strict mode",
StrictVarName: "Variable name may not be eval or arguments in strict mode",
StrictParamName: "Parameter name eval or arguments is not allowed in strict mode",
StrictParamDupe: "Strict mode function may not have duplicate parameter names",
StrictFunctionName: "Function name may not be eval or arguments in strict mode",
StrictOctalLiteral: "Octal literals are not allowed in strict mode.",
StrictDelete: "Delete of an unqualified identifier in strict mode.",
StrictDuplicateProperty: "Duplicate data property in object literal not allowed in strict mode",
AccessorDataProperty: "Object literal may not have data and accessor property with the same name",
AccessorGetSet: "Object literal may not have multiple get/set accessors with the same name",
StrictLHSAssignment: "Assignment to eval or arguments is not allowed in strict mode",
StrictLHSPostfix: "Postfix increment/decrement may not have eval or arguments operand in strict mode",
StrictLHSPrefix: "Prefix increment/decrement may not have eval or arguments operand in strict mode",
StrictReservedWord: "Use of future reserved word in strict mode"
};
Regex = {
NonAsciiIdentifierStart: /* @__PURE__ */new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),
NonAsciiIdentifierPart: /* @__PURE__ */new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")
};
function assert(condition, message) {
/* istanbul ignore if */
if (!condition) throw new Error("ASSERT: " + message);
}
function isDecimalDigit(ch) {
return ch >= 48 && ch <= 57;
}
function isHexDigit(ch) {
return "0123456789abcdefABCDEF".indexOf(ch) >= 0;
}
function isOctalDigit(ch) {
return "01234567".indexOf(ch) >= 0;
}
function isWhiteSpace(ch) {
return ch === 32 || ch === 9 || ch === 11 || ch === 12 || ch === 160 || ch >= 5760 && [5760, 6158, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279].indexOf(ch) >= 0;
}
function isLineTerminator(ch) {
return ch === 10 || ch === 13 || ch === 8232 || ch === 8233;
}
function isIdentifierStart(ch) {
return ch == 64 || ch === 36 || ch === 95 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch === 92 || ch >= 128 && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch));
}
function isIdentifierPart(ch) {
return ch === 36 || ch === 95 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 48 && ch <= 57 || ch === 92 || ch >= 128 && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch));
}
function isFutureReservedWord(id) {
switch (id) {
case "class":
case "enum":
case "export":
case "extends":
case "import":
case "super":
return true;
default:
return false;
}
}
function isStrictModeReservedWord(id) {
switch (id) {
case "implements":
case "interface":
case "package":
case "private":
case "protected":
case "public":
case "static":
case "yield":
case "let":
return true;
default:
return false;
}
}
function isRestrictedWord(id) {
return id === "eval" || id === "arguments";
}
function isKeyword(id) {
if (strict && isStrictModeReservedWord(id)) return true;
switch (id.length) {
case 2:
return id === "if" || id === "in" || id === "do";
case 3:
return id === "var" || id === "for" || id === "new" || id === "try" || id === "let";
case 4:
return id === "this" || id === "else" || id === "case" || id === "void" || id === "with" || id === "enum";
case 5:
return id === "while" || id === "break" || id === "catch" || id === "throw" || id === "const" || id === "yield" || id === "class" || id === "super";
case 6:
return id === "return" || id === "typeof" || id === "delete" || id === "switch" || id === "export" || id === "import";
case 7:
return id === "default" || id === "finally" || id === "extends";
case 8:
return id === "function" || id === "continue" || id === "debugger";
case 10:
return id === "instanceof";
default:
return false;
}
}
function addComment(type, value, start, end, loc) {
var comment;
assert(typeof start === "number", "Comment must have valid position");
if (state.lastCommentStart >= start) return;
state.lastCommentStart = start;
comment = {
type,
value
};
if (extra.range) comment.range = [start, end];
if (extra.loc) comment.loc = loc;
extra.comments.push(comment);
if (extra.attachComment) {
extra.leadingComments.push(comment);
extra.trailingComments.push(comment);
}
}
function skipSingleLineComment(offset) {
var start = index - offset,
loc = {
start: {
line: lineNumber,
column: index - lineStart - offset
}
},
ch,
comment;
while (index < length) {
ch = source.charCodeAt(index);
++index;
if (isLineTerminator(ch)) {
if (extra.comments) {
comment = source.slice(start + offset, index - 1);
loc.end = {
line: lineNumber,
column: index - lineStart - 1
};
addComment("Line", comment, start, index - 1, loc);
}
if (ch === 13 && source.charCodeAt(index) === 10) ++index;
++lineNumber;
lineStart = index;
return;
}
}
if (extra.comments) {
comment = source.slice(start + offset, index);
loc.end = {
line: lineNumber,
column: index - lineStart
};
addComment("Line", comment, start, index, loc);
}
}
function skipMultiLineComment() {
var start, loc, ch, comment;
if (extra.comments) {
start = index - 2;
loc = {
start: {
line: lineNumber,
column: index - lineStart - 2
}
};
}
while (index < length) {
ch = source.charCodeAt(index);
if (isLineTerminator(ch)) {
if (ch === 13 && source.charCodeAt(index + 1) === 10) ++index;
++lineNumber;
++index;
lineStart = index;
if (index >= length) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
} else if (ch === 42) {
if (source.charCodeAt(index + 1) === 47) {
++index;
++index;
if (extra.comments) {
comment = source.slice(start + 2, index - 2);
loc.end = {
line: lineNumber,
column: index - lineStart
};
addComment("Block", comment, start, index, loc);
}
return;
}
++index;
} else ++index;
}
throwError({}, Messages.UnexpectedToken, "ILLEGAL");
}
function skipComment() {
var ch,
start = index === 0;
while (index < length) {
ch = source.charCodeAt(index);
if (isWhiteSpace(ch)) ++index;else if (isLineTerminator(ch)) {
++index;
if (ch === 13 && source.charCodeAt(index) === 10) ++index;
++lineNumber;
lineStart = index;
start = true;
} else if (ch === 47) {
ch = source.charCodeAt(index + 1);
if (ch === 47) {
++index;
++index;
skipSingleLineComment(2);
start = true;
} else if (ch === 42) {
++index;
++index;
skipMultiLineComment();
} else break;
} else if (start && ch === 45) {
if (source.charCodeAt(index + 1) === 45 && source.charCodeAt(index + 2) === 62) {
index += 3;
skipSingleLineComment(3);
} else break;
} else if (ch === 60) {
if (source.slice(index + 1, index + 4) === "!--") {
++index;
++index;
++index;
++index;
skipSingleLineComment(4);
} else break;
} else break;
}
}
function scanHexEscape(prefix) {
var i,
len,
ch,
code = 0;
len = prefix === "u" ? 4 : 2;
for (i = 0; i < len; ++i) if (index < length && isHexDigit(source[index])) {
ch = source[index++];
code = code * 16 + "0123456789abcdef".indexOf(ch.toLowerCase());
} else return "";
return String.fromCharCode(code);
}
function getEscapedIdentifier() {
var ch = source.charCodeAt(index++),
id = String.fromCharCode(ch);
if (ch === 92) {
if (source.charCodeAt(index) !== 117) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
++index;
ch = scanHexEscape("u");
if (!ch || ch === "\\" || !isIdentifierStart(ch.charCodeAt(0))) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
id = ch;
}
while (index < length) {
ch = source.charCodeAt(index);
if (!isIdentifierPart(ch)) break;
++index;
id += String.fromCharCode(ch);
if (ch === 92) {
id = id.substr(0, id.length - 1);
if (source.charCodeAt(index) !== 117) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
++index;
ch = scanHexEscape("u");
if (!ch || ch === "\\" || !isIdentifierPart(ch.charCodeAt(0))) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
id += ch;
}
}
return id;
}
function getIdentifier() {
var start = index++,
ch;
while (index < length) {
ch = source.charCodeAt(index);
if (ch === 92) {
index = start;
return getEscapedIdentifier();
}
if (isIdentifierPart(ch)) ++index;else break;
}
return source.slice(start, index);
}
function scanIdentifier() {
var start = index,
id = source.charCodeAt(index) === 92 ? getEscapedIdentifier() : getIdentifier(),
type;
if (id.length === 1) type = Token.Identifier;else if (isKeyword(id)) type = Token.Keyword;else if (id === "null") type = Token.NullLiteral;else if (id === "true" || id === "false") type = Token.BooleanLiteral;else type = Token.Identifier;
return {
type,
value: id,
lineNumber,
lineStart,
start,
end: index
};
}
function scanPunctuator() {
var start = index,
code = source.charCodeAt(index),
code2,
ch1 = source[index],
ch2,
ch3,
ch4;
switch (code) {
case 46:
case 40:
case 41:
case 59:
case 44:
case 123:
case 125:
case 91:
case 93:
case 58:
case 63:
case 126:
++index;
if (extra.tokenize) {
if (code === 40) extra.openParenToken = extra.tokens.length;else if (code === 123) extra.openCurlyToken = extra.tokens.length;
}
return {
type: Token.Punctuator,
value: String.fromCharCode(code),
lineNumber,
lineStart,
start,
end: index
};
default:
code2 = source.charCodeAt(index + 1);
if (code2 === 61) switch (code) {
case 43:
case 45:
case 47:
case 60:
case 62:
case 94:
case 124:
case 37:
case 38:
case 42:
index += 2;
return {
type: Token.Punctuator,
value: String.fromCharCode(code) + String.fromCharCode(code2),
lineNumber,
lineStart,
start,
end: index
};
case 33:
case 61:
index += 2;
if (source.charCodeAt(index) === 61) ++index;
return {
type: Token.Punctuator,
value: source.slice(start, index),
lineNumber,
lineStart,
start,
end: index
};
}
}
ch4 = source.substr(index, 4);
if (ch4 === ">>>=") {
index += 4;
return {
type: Token.Punctuator,
value: ch4,
lineNumber,
lineStart,
start,
end: index
};
}
ch3 = ch4.substr(0, 3);
if (ch3 === ">>>" || ch3 === "<<=" || ch3 === ">>=") {
index += 3;
return {
type: Token.Punctuator,
value: ch3,
lineNumber,
lineStart,
start,
end: index
};
}
ch2 = ch3.substr(0, 2);
if (ch1 === ch2[1] && "+-<>&|".indexOf(ch1) >= 0 || ch2 === "=>") {
index += 2;
return {
type: Token.Punctuator,
value: ch2,
lineNumber,
lineStart,
start,
end: index
};
}
if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) {
++index;
return {
type: Token.Punctuator,
value: ch1,
lineNumber,
lineStart,
start,
end: index
};
}
throwError({}, Messages.UnexpectedToken, "ILLEGAL");
}
function scanHexLiteral(start) {
var number = "";
while (index < length) {
if (!isHexDigit(source[index])) break;
number += source[index++];
}
if (number.length === 0) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
if (isIdentifierStart(source.charCodeAt(index))) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
return {
type: Token.NumericLiteral,
value: parseInt("0x" + number, 16),
lineNumber,
lineStart,
start,
end: index
};
}
function scanOctalLiteral(start) {
var number = "0" + source[index++];
while (index < length) {
if (!isOctalDigit(source[index])) break;
number += source[index++];
}
if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
return {
type: Token.NumericLiteral,
value: parseInt(number, 8),
octal: true,
lineNumber,
lineStart,
start,
end: index
};
}
function scanNumericLiteral() {
var number,
start,
ch = source[index];
assert(isDecimalDigit(ch.charCodeAt(0)) || ch === ".", "Numeric literal must start with a decimal digit or a decimal point");
start = index;
number = "";
if (ch !== ".") {
number = source[index++];
ch = source[index];
if (number === "0") {
if (ch === "x" || ch === "X") {
++index;
return scanHexLiteral(start);
}
if (isOctalDigit(ch)) return scanOctalLiteral(start);
if (ch && isDecimalDigit(ch.charCodeAt(0))) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
}
while (isDecimalDigit(source.charCodeAt(index))) number += source[index++];
ch = source[index];
}
if (ch === ".") {
number += source[index++];
while (isDecimalDigit(source.charCodeAt(index))) number += source[index++];
ch = source[index];
}
if (ch === "e" || ch === "E") {
number += source[index++];
ch = source[index];
if (ch === "+" || ch === "-") number += source[index++];
if (isDecimalDigit(source.charCodeAt(index))) while (isDecimalDigit(source.charCodeAt(index))) number += source[index++];else throwError({}, Messages.UnexpectedToken, "ILLEGAL");
}
if (isIdentifierStart(source.charCodeAt(index))) throwError({}, Messages.UnexpectedToken, "ILLEGAL");
return {
type: Token.NumericLiteral,
value: parseFloat(number),
lineNumber,
lineStart,
start,
end: index
};
}
function scanStringLiteral() {
var str = "",
quote,
start,
ch,
code,
unescaped,
restore,
octal = false,
startLineNumber = lineNumber,
startLineStart = lineStart;
quote = source[index];
assert(quote === "'" || quote === "\"", "String literal must starts with a quote");
start = index;
++index;
while (index < length) {
ch = source[index++];
if (ch === quote) {
quote = "";
break;
} else if (ch === "\\") {
ch = source[index++];
if (!ch || !isLineTerminator(ch.charCodeAt(0))) switch (ch) {
case "u":
case "x":
restore = index;
unescaped = scanHexEscape(ch);
if (unescaped) str += unescaped;else {
index = restore;
str += ch;
}
break;
case "n":
str += "\n";
break;
case "r":
str += "\r";
break;
case "t":
str += " ";
break;
case "b":
str += "\b";
break;
case "f":
str += "\f";
break;
case "v":
str += "\v";
break;
default:
if (isOctalDigit(ch)) {
code = "01234567".indexOf(ch);
if (code !== 0) octal = true;
if (index < length && isOctalDigit(source[index])) {
octal = true;
code = code * 8 + "01234567".indexOf(source[index++]);
if ("0123".indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) code = code * 8 + "01234567".indexOf(source[index++]);
}
str += String.fromCharCode(code);
} else str += ch;
break;
} else {
++lineNumber;
if (ch === "\r" && source[index] === "\n") ++index;
lineStart = index;
}
} else if (isLineTerminator(ch.charCodeAt(0))) break;else str += ch;
}
if (quote !== "") throwError({}, Messages.UnexpectedToken, "ILLEGAL");
return {
type: Token.StringLiteral,
value: str,
octal,
startLineNumber,
startLineStart,
lineNumber,
lineStart,
start,
end: index
};
}
function testRegExp(pattern, flags) {
var value;
try {
value = new RegExp(pattern, flags);
} catch (e) {
throwError({}, Messages.InvalidRegExp);
}
return value;
}
function scanRegExpBody() {
var ch = source[index],
str,
classMarker,
terminated,
body;
assert(ch === "/", "Regular expression literal must start with a slash");
str = source[index++];
classMarker = false;
terminated = false;
while (index < length) {
ch = source[index++];
str += ch;
if (ch === "\\") {
ch = source[index++];
if (isLineTerminator(ch.charCodeAt(0))) throwError({}, Messages.UnterminatedRegExp);
str += ch;
} else if (isLineTerminator(ch.charCodeAt(0))) throwError({}, Messages.UnterminatedRegExp);else if (classMarker) {
if (ch === "]") classMarker = false;
} else if (ch === "/") {
terminated = true;
break;
} else if (ch === "[") classMarker = true;
}
if (!terminated) throwError({}, Messages.UnterminatedRegExp);
body = str.substr(1, str.length - 2);
return {
value: body,
literal: str
};
}
function scanRegExpFlags() {
var ch,
str = "",
flags = "",
restore;
while (index < length) {
ch = source[index];
if (!isIdentifierPart(ch.charCodeAt(0))) break;
++index;
if (ch === "\\" && index < length) {
ch = source[index];
if (ch === "u") {
++index;
restore = index;
ch = scanHexEscape("u");
if (ch) {
flags += ch;
for (str += "\\u"; restore < index; ++restore) str += source[restore];
} else {
index = restore;
flags += "u";
str += "\\u";
}
throwErrorTolerant({}, Messages.UnexpectedToken, "ILLEGAL");
} else {
str += "\\";
throwErrorTolerant({}, Messages.UnexpectedToken, "ILLEGAL");
}
} else {
flags += ch;
str += ch;
}
}
return {
value: flags,
literal: str
};
}
function scanRegExp() {
var start, body, flags, value;
lookahead = null;
skipComment();
start = index;
body = scanRegExpBody();
flags = scanRegExpFlags();
value = testRegExp(body.value, flags.value);
if (extra.tokenize) return {
type: Token.RegularExpression,
value,
lineNumber,
lineStart,
start,
end: index
};
return {
literal: body.literal + flags.literal,
value,
start,
end: index
};
}
function collectRegex() {
var pos, loc, regex, token;
skipComment();
pos = index;
loc = {
start: {
line: lineNumber,
column: index - lineStart
}
};
regex = scanRegExp();
loc.end = {
line: lineNumber,
column: index - lineStart
};
/* istanbul ignore next */
if (!extra.tokenize) {
if (extra.tokens.length > 0) {
token = extra.tokens[extra.tokens.length - 1];
if (token.range[0] === pos && token.type === "Punctuator") {
if (token.value === "/" || token.value === "/=") extra.tokens.pop();
}
}
extra.tokens.push({
type: "RegularExpression",
value: regex.literal,
range: [pos, index],
loc
});
}
return regex;
}
function isIdentifierName(token) {
return token.type === Token.Identifier || token.type === Token.Keyword || token.type === Token.BooleanLiteral || token.type === Token.NullLiteral;
}
function advanceSlash() {
var prevToken = extra.tokens[extra.tokens.length - 1],
checkToken;
if (!prevToken) return collectRegex();
if (prevToken.type === "Punctuator") {
if (prevToken.value === "]") return scanPunctuator();
if (prevToken.value === ")") {
checkToken = extra.tokens[extra.openParenToken - 1];
if (checkToken && checkToken.type === "Keyword" && (checkToken.value === "if" || checkToken.value === "while" || checkToken.value === "for" || checkToken.value === "with")) return collectRegex();
return scanPunctuator();
}
if (prevToken.value === "}") {
if (extra.tokens[extra.openCurlyToken - 3] && extra.tokens[extra.openCurlyToken - 3].type === "Keyword") {
checkToken = extra.tokens[extra.openCurlyToken - 4];
if (!checkToken) return scanPunctuator();
} else if (extra.tokens[extra.openCurlyToken - 4] && extra.tokens[extra.openCurlyToken - 4].type === "Keyword") {
checkToken = extra.tokens[extra.openCurlyToken - 5];
if (!checkToken) return collectRegex();
} else return scanPunctuator();
if (FnExprTokens.indexOf(checkToken.value) >= 0) return scanPunctuator();
return collectRegex();
}
return collectRegex();
}
if (prevToken.type === "Keyword") return collectRegex();
return scanPunctuator();
}
function advance() {
var ch;
skipComment();
if (index >= length) return {
type: Token.EOF,
lineNumber,
lineStart,
start: index,
end: index
};
ch = source.charCodeAt(index);
if (isIdentifierStart(ch)) return scanIdentifier();
if (ch === 40 || ch === 41 || ch === 59) return scanPunctuator();
if (ch === 39 || ch === 34) return scanStringLiteral();
if (ch === 46) {
if (isDecimalDigit(source.charCodeAt(index + 1))) return scanNumericLiteral();
return scanPunctuator();
}
if (isDecimalDigit(ch)) return scanNumericLiteral();
if (extra.tokenize && ch === 47) return advanceSlash();
return scanPunctuator();
}
function collectToken() {
var loc, token, value;
skipComment();
loc = {
start: {
line: lineNumber,
column: index - lineStart
}
};
token = advance();
loc.end = {
line: lineNumber,
column: index - lineStart
};
if (token.type !== Token.EOF) {
value = source.slice(token.start, token.end);
extra.tokens.push({
type: TokenName[token.type],
value,
range: [token.start, token.end],
loc
});
}
return token;
}
function lex() {
var token = lookahead;
index = token.end;
lineNumber = token.lineNumber;
lineStart = token.lineStart;
lookahead = typeof extra.tokens !== "undefined" ? collectToken() : advance();
index = token.end;
lineNumber = token.lineNumber;
lineStart = token.lineStart;
return token;
}
function peek() {
var pos = index,
line = lineNumber,
start = lineStart;
lookahead = typeof extra.tokens !== "undefined" ? collectToken() : advance();
index = pos;
lineNumber = line;
lineStart = start;
}
function Position(line, column) {
this.line = line;
this.column = column;
}
function SourceLocation(startLine, startColumn, line, column) {
this.start = new Position(startLine, startColumn);
this.end = new Position(line, column);
}
SyntaxTreeDelegate = {
name: "SyntaxTree",
processComment: function (node) {
var lastChild, trailingComments;
if (node.type === Syntax.Program) {
if (node.body.length > 0) return;
}
if (extra.trailingComments.length > 0) {
if (extra.trailingComments[0].range[0] >= node.range[1]) {
trailingComments = extra.trailingComments;
extra.trailingComments = [];
} else extra.trailingComments.length = 0;
} else if (extra.bottomRightStack.length > 0 && extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments && extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments[0].range[0] >= node.range[1]) {
trailingComments = extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments;
delete extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments;
}
while (extra.bottomRightStack.length > 0 && extra.bottomRightStack[extra.bottomRightStack.length - 1].range[0] >= node.range[0]) lastChild = extra.bottomRightStack.pop();
if (lastChild) {
if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) {
node.leadingComments = lastChild.leadingComments;
delete lastChild.leadingComments;
}
} else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) {
node.leadingComments = extra.leadingComments;
extra.leadingComments = [];
}
if (trailingComments) node.trailingComments = trailingComments;
extra.bottomRightStack.push(node);
},
markEnd: function (node, startToken) {
if (extra.range) node.range = [startToken.start, index];
if (extra.loc) {
node.loc = new SourceLocation(startToken.startLineNumber === void 0 ? startToken.lineNumber : startToken.startLineNumber, startToken.start - (startToken.startLineStart === void 0 ? startToken.lineStart : startToken.startLineStart), lineNumber, index - lineStart);
this.postProcess(node);
}
if (extra.attachComment) this.processComment(node);
return node;
},
postProcess: function (node) {
if (extra.source) node.loc.source = extra.source;
return node;
},
createArrayExpression: function (elements) {
return {
type: Syntax.ArrayExpression,
elements
};
},
createAssignmentExpression: function (operator, left, right) {
return {
type: Syntax.AssignmentExpression,
operator,
left,
right
};
},
createBinaryExpression: function (operator, left, right) {
return {
type: operator === "||" || operator === "&&" ? Syntax.LogicalExpression : Syntax.BinaryExpression,
operator,
left,
right
};
},
createBlockStatement: function (body) {
return {
type: Syntax.BlockStatement,
body
};
},
createBreakStatement: function (label) {
return {
type: Syntax.BreakStatement,
label
};
},
createCallExpression: function (callee, args) {
return {
type: Syntax.CallExpression,
callee,
"arguments": args
};
},
createCatchClause: function (param, body) {
return {
type: Syntax.CatchClause,
param,
body
};
},
createConditionalExpression: function (test, consequent, alternate) {
return {
type: Syntax.ConditionalExpression,
test,
consequent,
alternate
};
},
createContinueStatement: function (label) {
return {
type: Syntax.ContinueStatement,
label
};
},
createDebuggerStatement: function () {
return {
type: Syntax.DebuggerStatement
};
},
createDoWhileStatement: function (body, test) {
return {
type: Syntax.DoWhileStatement,
body,
test
};
},
createEmptyStatement: function () {
return {
type: Syntax.EmptyStatement
};
},
createExpressionStatement: function (expression) {
return {
type: Syntax.ExpressionStatement,
expression
};
},
createForStatement: function (init, test, update, body) {
return {
type: Syntax.ForStatement,
init,
test,
update,
body
};
},
createForInStatement: function (left, right, body) {
return {
type: Syntax.ForInStatement,
left,
right,
body,
each: false
};
},
createFunctionDeclaration: function (id, params, defaults, body) {
return {
type: Syntax.FunctionDeclaration,
id,
params,
defaults,
body,
rest: null,
generator: false,
expression: false
};
},
createFunctionExpression: function (id, params, defaults, body) {
return {
type: Syntax.FunctionExpression,
id,
params,
defaults,
body,
rest: null,
generator: false,
expression: false
};
},
createIdentifier: function (name) {
return {
type: Syntax.Identifier,
name
};
},
createIfStatement: function (test, consequent, alternate) {
return {
type: Syntax.IfStatement,
test,
consequent,
alternate
};
},
createLabeledStatement: function (label, body) {
return {
type: Syntax.LabeledStatement,
label,
body
};
},
createLiteral: function (token) {
return {
type: Syntax.Literal,
value: token.value,
raw: source.slice(token.start, token.end)
};
},
createMemberExpression: function (accessor, object, property) {
return {
type: Syntax.MemberExpression,
computed: accessor === "[",
object,
property
};
},
createNewExpression: function (callee, args) {
return {
type: Syntax.NewExpression,
callee,
"arguments": args
};
},
createObjectExpression: function (properties) {
return {
type: Syntax.ObjectExpression,
properties
};
},
createPostfixExpression: function (operator, argument) {
return {
type: Syntax.UpdateExpression,
operator,
argument,
prefix: false
};
},
createProgram: function (body) {
return {
type: Syntax.Program,
body
};
},
createProperty: function (kind, key, value) {
return {
type: Syntax.Property,
key,
value,
kind
};
},
createReturnStatement: function (argument) {
return {
type: Syntax.ReturnStatement,
argument
};
},
createSequenceExpression: function (expressions) {
return {
type: Syntax.SequenceExpression,
expressions
};
},
createSwitchCase: function (test, consequent) {
return {
type: Syntax.SwitchCase,
test,
consequent
};
},
createSwitchStatement: function (discriminant, cases) {
return {
type: Syntax.SwitchStatement,
discriminant,
cases
};
},
createThisExpression: function () {
return {
type: Syntax.ThisExpression
};
},
createThrowStatement: function (argument) {
return {
type: Syntax.ThrowStatement,
argument
};
},
createTryStatement: function (block, guardedHandlers, handlers, finalizer) {
return {
type: Syntax.TryStatement,
block,
guardedHandlers,
handlers,
finalizer
};
},
createUnaryExpression: function (operator, argument) {
if (operator === "++" || operator === "--") return {
type: Syntax.UpdateExpression,
operator,
argument,
prefix: true
};
return {
type: Syntax.UnaryExpression,
operator,
argument,
prefix: true
};
},
createVariableDeclaration: function (declarations, kind) {
return {
type: Syntax.VariableDeclaration,
declarations,
kind
};
},
createVariableDeclarator: function (id, init) {
return {
type: Syntax.VariableDeclarator,
id,
init
};
},
createWhileStatement: function (test, body) {
return {
type: Syntax.WhileStatement,
test,
body
};
},
createWithStatement: function (object, body) {
return {
type: Syntax.WithStatement,
object,
body
};
}
};
function peekLineTerminator() {
var pos = index,
line = lineNumber,
start = lineStart,
found;
skipComment();
found = lineNumber !== line;
index = pos;
lineNumber = line;
lineStart = start;
return found;
}
function throwError(token, messageFormat) {
var error,
args = Array.prototype.slice.call(arguments, 2),
msg = messageFormat.replace(/%(\d)/g, function (whole, index$1) {
assert(index$1 < args.length, "Message reference must be in range");
return args[index$1];
});
if (typeof token.lineNumber === "number") {
error = /* @__PURE__ */new Error("Line " + token.lineNumber + ": " + msg);
error.index = token.start;
error.lineNumber = token.lineNumber;
error.column = token.start - lineStart + 1;
} else {
error = /* @__PURE__ */new Error("Line " + lineNumber + ": " + msg);
error.index = index;
error.lineNumber = lineNumber;
error.column = index - lineStart + 1;
}
error.description = msg;
throw error;
}
function throwErrorTolerant() {
try {
throwError.apply(null, arguments);
} catch (e) {
if (extra.errors) extra.errors.push(e);else throw e;
}
}
function throwUnexpected(token) {
if (token.type === Token.EOF) throwError(token, Messages.UnexpectedEOS);
if (token.type === Token.NumericLiteral) throwError(token, Messages.UnexpectedNumber);
if (token.type === Token.StringLiteral) throwError(token, Messages.UnexpectedString);
if (token.type === Token.Identifier) throwError(token, Messages.UnexpectedIdentifier);
if (token.type === Token.Keyword) {
if (isFutureReservedWord(token.value)) throwError(token, Messages.UnexpectedReserved);else if (strict && isStrictModeReservedWord(token.value)) {
throwErrorTolerant(token, Messages.StrictReservedWord);
return;
}
throwError(token, Messages.UnexpectedToken, token.value);
}
throwError(token, Messages.UnexpectedToken, token.value);
}
function expect(value) {
var token = lex();
if (token.type !== Token.Punctuator || token.value !== value) throwUnexpected(token);
}
function expectKeyword(keyword) {
var token = lex();
if (token.type !== Token.Keyword || token.value !== keyword) throwUnexpected(token);
}
function match(value) {
return lookahead.type === Token.Punctuator && lookahead.value === value;
}
function matchKeyword(keyword) {
return lookahead.type === Token.Keyword && lookahead.value === keyword;
}
function matchAssign() {
var op;
if (lookahead.type !== Token.Punctuator) return false;
op = lookahead.value;
return op === "=" || op === "*=" || op === "/=" || op === "%=" || op === "+=" || op === "-=" || op === "<<=" || op === ">>=" || op === ">>>=" || op === "&=" || op === "^=" || op === "|=";
}
function consumeSemicolon() {
var line;
if (source.charCodeAt(index) === 59 || match(";")) {
lex();
return;
}
line = lineNumber;
skipComment();
if (lineNumber !== line) return;
if (lookahead.type !== Token.EOF && !match("}")) throwUnexpected(lookahead);
}
function isLeftHandSide(expr) {
return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression;
}
function parseArrayInitialiser() {
var elements = [],
startToken = lookahead;
expect("[");
while (!match("]")) if (match(",")) {
lex();
elements.push(null);
} else {
elements.push(parseAssignmentExpression());
if (!match("]")) expect(",");
}
lex();
return delegate.markEnd(delegate.createArrayExpression(elements), startToken);
}
function parsePropertyFunction(param, first) {
var previousStrict = strict,
body,
startToken = lookahead;
body = parseFunctionSourceElements();
if (first && strict && isRestrictedWord(param[0].name)) throwErrorTolerant(first, Messages.StrictParamName);
strict = previousStrict;
return delegate.markEnd(delegate.createFunctionExpression(null, param, [], body), startToken);
}
function parseObjectPropertyKey() {
var token,
startToken = lookahead;
token = lex();
if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {
if (strict && token.octal) throwErrorTolerant(token, Messages.StrictOctalLiteral);
return delegate.markEnd(delegate.createLiteral(token), startToken);
}
return delegate.markEnd(delegate.createIdentifier(token.value), startToken);
}
function parseObjectProperty() {
var token = lookahead,
key,
id,
value,
param,
startToken = lookahead;
if (token.type === Token.Identifier) {
id = parseObjectPropertyKey();
if (token.value === "get" && !match(":")) {
key = parseObjectPropertyKey();
expect("(");
expect(")");
value = parsePropertyFunction([]);
return delegate.markEnd(delegate.createProperty("get", key, value), startToken);
}
if (token.value === "set" && !match(":")) {
key = parseObjectPropertyKey();
expect("(");
token = lookahead;
if (token.type !== Token.Identifier) {
expect(")");
throwErrorTolerant(token, Messages.UnexpectedToken, token.value);
value = parsePropertyFunction([]);
} else {
param = [parseVariableIdentifier()];
expect(")");
value = parsePropertyFunction(param, token);
}
return delegate.markEnd(delegate.createProperty("set", key, value), startToken);
}
expect(":");
value = parseAssignmentExpression();
return delegate.markEnd(delegate.createProperty("init", id, value), startToken);
}
if (token.type === Token.EOF || token.type === Token.Punctuator) throwUnexpected(token);else {
key = parseObjectPropertyKey();
expect(":");
value = parseAssignmentExpression();
return delegate.markEnd(delegate.createProperty("init", key, value), startToken);
}
}
function parseObjectInitialiser() {
var properties = [],
property,
name,
key,
kind,
map = {},
toString = String,
startToken = lookahead;
expect("{");
while (!match("}")) {
property = parseObjectProperty();
if (property.key.type === Syntax.Identifier) name = property.key.name;else name = toString(property.key.value);
kind = property.kind === "init" ? PropertyKind.Data : property.kind === "get" ? PropertyKind.Get : PropertyKind.Set;
key = "$" + name;
if (Object.prototype.hasOwnProperty.call(map, key)) {
if (map[key] === PropertyKind.Data) {
if (strict && kind === PropertyKind.Data) throwErrorTolerant({}, Messages.StrictDuplicateProperty);else if (kind !== PropertyKind.Data) throwErrorTolerant({}, Messages.AccessorDataProperty);
} else if (kind === PropertyKind.Data) throwErrorTolerant({}, Messages.AccessorDataProperty);else if (map[key] & kind) throwErrorTolerant({}, Messages.AccessorGetSet);
map[key] |= kind;
} else map[key] = kind;
properties.push(property);
if (!match("}")) expect(",");
}
expect("}");
return delegate.markEnd(delegate.createObjectExpression(properties), startToken);
}
function parseGroupExpression() {
var expr;
expect("(");
expr = parseExpression();
expect(")");
return expr;
}
function parsePrimaryExpression() {
var type, token, expr, startToken;
if (match("(")) return parseGroupExpression();
if (match("[")) return parseArrayInitialiser();
if (match("{")) return parseObjectInitialiser();
type = lookahead.type;
startToken = lookahead;
if (type === Token.Identifier) expr = delegate.createIdentifier(lex().value);else if (type === Token.StringLiteral || type === Token.NumericLiteral) {
if (strict && lookahead.octal) throwErrorTolerant(lookahead, Messages.StrictOctalLiteral);
expr = delegate.createLiteral(lex());
} else if (type === Token.Keyword) {
if (matchKeyword("function")) return parseFunctionExpression();
if (matchKeyword("this")) {
lex();
expr = delegate.createThisExpression();
} else throwUnexpected(lex());
} else if (type === Token.BooleanLiteral) {
token = lex();
token.value = token.value === "true";
expr = delegate.createLiteral(token);
} else if (type === Token.NullLiteral) {
token = lex();
token.value = null;
expr = delegate.createLiteral(token);
} else if (match("/") || match("/=")) {
if (typeof extra.tokens !== "undefined") expr = delegate.createLiteral(collectRegex());else expr = delegate.createLiteral(scanRegExp());
peek();
} else throwUnexpected(lex());
return delegate.markEnd(expr, startToken);
}
function parseArguments() {
var args = [];
expect("(");
if (!match(")")) while (index < length) {
args.push(parseAssignmentExpression());
if (match(")")) break;
expect(",");
}
expect(")");
return args;
}
function parseNonComputedProperty() {
var token,
startToken = lookahead;
token = lex();
if (!isIdentifierName(token)) throwUnexpected(token);
return delegate.markEnd(delegate.createIdentifier(token.value), startToken);
}
function parseNonComputedMember() {
expect(".");
return parseNonComputedProperty();
}
function parseComputedMember() {
var expr;
expect("[");
expr = parseExpression();
expect("]");
return expr;
}
function parseNewExpression() {
var callee,
args,
startToken = lookahead;
expectKeyword("new");
callee = parseLeftHandSideExpression();
args = match("(") ? parseArguments() : [];
return delegate.markEnd(delegate.createNewExpression(callee, args), startToken);
}
function parseLeftHandSideExpressionAllowCall() {
var previousAllowIn,
expr,
args,
property,
startToken = lookahead;
previousAllowIn = state.allowIn;
state.allowIn = true;
expr = matchKeyword("new") ? parseNewExpression() : parsePrimaryExpression();
state.allowIn = previousAllowIn;
for (;;) {
if (match(".")) {
property = parseNonComputedMember();
expr = delegate.createMemberExpression(".", expr, property);
} else if (match("(")) {
args = parseArguments();
expr = delegate.createCallExpression(expr, args);
} else if (match("[")) {
property = parseComputedMember();
expr = delegate.createMemberExpression("[", expr, property);
} else break;
delegate.markEnd(expr, startToken);
}
return expr;
}
function parseLeftHandSideExpression() {
var previousAllowIn,
expr,
property,
startToken = lookahead;
previousAllowIn = state.allowIn;
expr = matchKeyword("new") ? parseNewExpression() : parsePrimaryExpression();
state.allowIn = previousAllowIn;
while (match(".") || match("[")) {
if (match("[")) {
property = parseComputedMember();
expr = delegate.createMemberExpression("[", expr, property);
} else {
property = parseNonComputedMember();
expr = delegate.createMemberExpression(".", expr, property);
}
delegate.markEnd(expr, startToken);
}
return expr;
}
function parsePostfixExpression() {
var expr,
token,
startToken = lookahead;
expr = parseLeftHandSideExpressionAllowCall();
if (lookahead.type === Token.Punctuator) {
if ((match("++") || match("--")) && !peekLineTerminator()) {
if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) throwErrorTolerant({}, Messages.StrictLHSPostfix);
if (!isLeftHandSide(expr)) throwErrorTolerant({}, Messages.InvalidLHSInAssignment);
token = lex();
expr = delegate.markEnd(delegate.createPostfixExpression(token.value, expr), startToken);
}
}
return expr;
}
function parseUnaryExpression() {
var token, expr, startToken;
if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) expr = parsePostfixExpression();else if (match("++") || match("--")) {
startToken = lookahead;
token = lex();
expr = parseUnaryExpression();
if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) throwErrorTolerant({}, Messages.StrictLHSPrefix);
if (!isLeftHandSide(expr)) throwErrorTolerant({}, Messages.InvalidLHSInAssignment);
expr = delegate.createUnaryExpression(token.value, expr);
expr = delegate.markEnd(expr, startToken);
} else if (match("+") || match("-") || match("~") || match("!")) {
startToken = lookahead;
token = lex();
expr = parseUnaryExpression();
expr = delegate.createUnaryExpression(token.value, expr);
expr = delegate.markEnd(expr, startToken);
} else if (matchKeyword("delete") || matchKeyword("void") || matchKeyword("typeof")) {
startToken = lookahead;
token = lex();
expr = parseUnaryExpression();
expr = delegate.createUnaryExpression(token.value, expr);
expr = delegate.markEnd(expr, startToken);
if (strict && expr.operator === "delete" && expr.argument.type === Syntax.Identifier) throwErrorTolerant({}, Messages.StrictDelete);
} else expr = parsePostfixExpression();
return expr;
}
function binaryPrecedence(token, allowIn) {
var prec = 0;
if (token.type !== Token.Punctuator && token.type !== Token.Keyword) return 0;
switch (token.value) {
case "||":
prec = 1;
break;
case "&&":
prec = 2;
break;
case "|":
prec = 3;
break;
case "^":
prec = 4;
break;
case "&":
prec = 5;
break;
case "==":
case "!=":
case "===":
case "!==":
prec = 6;
break;
case "<":
case ">":
case "<=":
case ">=":
case "instanceof":
prec = 7;
break;
case "in":
prec = allowIn ? 7 : 0;
break;
case "<<":
case ">>":
case ">>>":
prec = 8;
break;
case "+":
case "-":
prec = 9;
break;
case "*":
case "/":
case "%":
prec = 11;
break;
default:
break;
}
return prec;
}
function parseBinaryExpression() {
var marker = lookahead,
markers,
expr,
token,
prec,
stack,
right,
operator,
left = parseUnaryExpression(),
i;
token = lookahead;
prec = binaryPrecedence(token, state.allowIn);
if (prec === 0) return left;
token.prec = prec;
lex();
markers = [marker, lookahead];
right = parseUnaryExpression();
stack = [left, token, right];
while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) {
while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {
right = stack.pop();
operator = stack.pop().value;
left = stack.pop();
expr = delegate.createBinaryExpression(operator, left, right);
markers.pop();
marker = markers[markers.length - 1];
delegate.markEnd(expr, marker);
stack.push(expr);
}
token = lex();
token.prec = prec;
stack.push(token);
markers.push(lookahead);
expr = parseUnaryExpression();
stack.push(expr);
}
i = stack.length - 1;
expr = stack[i];
markers.pop();
while (i > 1) {
expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr);
i -= 2;
marker = markers.pop();
delegate.markEnd(expr, marker);
}
return expr;
}
function parseConditionalExpression() {
var expr,
previousAllowIn,
consequent,
alternate,
startToken = lookahead;
expr = parseBinaryExpression();
if (match("?")) {
lex();
previousAllowIn = state.allowIn;
state.allowIn = true;
consequent = parseAssignmentExpression();
state.allowIn = previousAllowIn;
expect(":");
alternate = parseAssignmentExpression();
expr = delegate.createConditionalExpression(expr, consequent, alternate);
delegate.markEnd(expr, startToken);
}
return expr;
}
function parseAssignmentExpression() {
var token = lookahead,
left,
right,
node,
startToken = lookahead;
node = left = parseConditionalExpression();
if (matchAssign()) {
if (!isLeftHandSide(left)) throwErrorTolerant({}, Messages.InvalidLHSInAssignment);
if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) throwErrorTolerant(token, Messages.StrictLHSAssignment);
token = lex();
right = parseAssignmentExpression();
node = delegate.markEnd(delegate.createAssignmentExpression(token.value, left, right), startToken);
}
return node;
}
function parseExpression() {
var expr,
startToken = lookahead;
expr = parseAssignmentExpression();
if (match(",")) {
expr = delegate.createSequenceExpression([expr]);
while (index < length) {
if (!match(",")) break;
lex();
expr.expressions.push(parseAssignmentExpression());
}
delegate.markEnd(expr, startToken);
}
return expr;
}
function parseStatementList() {
var list = [],
statement;
while (index < length) {
if (match("}")) break;
statement = parseSourceElement();
if (typeof statement === "undefined") break;
list.push(statement);
}
return list;
}
function parseBlock() {
var block,
startToken = lookahead;
expect("{");
block = parseStatementList();
expect("}");
return delegate.markEnd(delegate.createBlockStatement(block), startToken);
}
function parseVariableIdentifier() {
var token,
startToken = lookahead;
token = lex();
if (token.type !== Token.Identifier) throwUnexpected(token);
return delegate.markEnd(delegate.createIdentifier(token.value), startToken);
}
function parseVariableDeclaration(kind) {
var init = null,
id,
startToken = lookahead;
id = parseVariableIdentifier();
if (strict && isRestrictedWord(id.name)) throwErrorTolerant({}, Messages.StrictVarName);
if (kind === "const") {
expect("=");
init = parseAssignmentExpression();
} else if (match("=")) {
lex();
init = parseAssignmentExpression();
}
return delegate.markEnd(delegate.createVariableDeclarator(id, init), startToken);
}
function parseVariableDeclarationList(kind) {
var list = [];
do {
list.push(parseVariableDeclaration(kind));
if (!match(",")) break;
lex();
} while (index < length);
return list;
}
function parseVariableStatement() {
var declarations;
expectKeyword("var");
declarations = parseVariableDeclarationList();
consumeSemicolon();
return delegate.createVariableDeclaration(declarations, "var");
}
function parseConstLetDeclaration(kind) {
var declarations,
startToken = lookahead;
expectKeyword(kind);
declarations = parseVariableDeclarationList(kind);
consumeSemicolon();
return delegate.markEnd(delegate.createVariableDeclaration(declarations, kind), startToken);
}
function parseEmptyStatement() {
expect(";");
return delegate.createEmptyStatement();
}
function parseExpressionStatement() {
var expr = parseExpression();
consumeSemicolon();
return delegate.createExpressionStatement(expr);
}
function parseIfStatement() {
var test, consequent, alternate;
expectKeyword("if");
expect("(");
test = parseExpression();
expect(")");
consequent = parseStatement();
if (matchKeyword("else")) {
lex();
alternate = parseStatement();
} else alternate = null;
return delegate.createIfStatement(test, consequent, alternate);
}
function parseDoWhileStatement() {
var body, test, oldInIteration;
expectKeyword("do");
oldInIteration = state.inIteration;
state.inIteration = true;
body = parseStatement();
state.inIteration = oldInIteration;
expectKeyword("while");
expect("(");
test = parseExpression();
expect(")");
if (match(";")) lex();
return delegate.createDoWhileStatement(body, test);
}
function parseWhileStatement() {
var test, body, oldInIteration;
expectKeyword("while");
expect("(");
test = parseExpression();
expect(")");
oldInIteration = state.inIteration;
state.inIteration = true;
body = parseStatement();
state.inIteration = oldInIteration;
return delegate.createWhileStatement(test, body);
}
function parseForVariableDeclaration() {
var token,
declarations,
startToken = lookahead;
token = lex();
declarations = parseVariableDeclarationList();
return delegate.markEnd(delegate.createVariableDeclaration(declarations, token.value), startToken);
}
function parseForStatement() {
var init = test = update = null,
test,
update,
left,
right,
body,
oldInIteration;
expectKeyword("for");
expect("(");
if (match(";")) lex();else {
if (matchKeyword("var") || matchKeyword("let")) {
state.allowIn = false;
init = parseForVariableDeclaration();
state.allowIn = true;
if (init.declarations.length === 1 && matchKeyword("in")) {
lex();
left = init;
right = parseExpression();
init = null;
}
} else {
state.allowIn = false;
init = parseExpression();
state.allowIn = true;
if (matchKeyword("in")) {
if (!isLeftHandSide(init)) throwErrorTolerant({}, Messages.InvalidLHSInForIn);
lex();
left = init;
right = parseExpression();
init = null;
}
}
if (typeof left === "undefined") expect(";");
}
if (typeof left === "undefined") {
if (!match(";")) test = parseExpression();
expect(";");
if (!match(")")) update = parseExpression();
}
expect(")");
oldInIteration = state.inIteration;
state.inIteration = true;
body = parseStatement();
state.inIteration = oldInIteration;
return typeof left === "undefined" ? delegate.createForStatement(init, test, update, body) : delegate.createForInStatement(left, right, body);
}
function parseContinueStatement() {
var label = null,
key;
expectKeyword("continue");
if (source.charCodeAt(index) === 59) {
lex();
if (!state.inIteration) throwError({}, Messages.IllegalContinue);
return delegate.createContinueStatement(null);
}
if (peekLineTerminator()) {
if (!state.inIteration) throwError({}, Messages.IllegalContinue);
return delegate.createContinueStatement(null);
}
if (lookahead.type === Token.Identifier) {
label = parseVariableIdentifier();
key = "$" + label.name;
if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) throwError({}, Messages.UnknownLabel, label.name);
}
consumeSemicolon();
if (label === null && !state.inIteration) throwError({}, Messages.IllegalContinue);
return delegate.createContinueStatement(label);
}
function parseBreakStatement() {
var label = null,
key;
expectKeyword("break");
if (source.charCodeAt(index) === 59) {
lex();
if (!(state.inIteration || state.inSwitch)) throwError({}, Messages.IllegalBreak);
return delegate.createBreakStatement(null);
}
if (peekLineTerminator()) {
if (!(state.inIteration || state.inSwitch)) throwError({}, Messages.IllegalBreak);
return delegate.createBreakStatement(null);
}
if (lookahead.type === Token.Identifier) {
label = parseVariableIdentifier();
key = "$" + label.name;
if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) throwError({}, Messages.UnknownLabel, label.name);
}
consumeSemicolon();
if (label === null && !(state.inIteration || state.inSwitch)) throwError({}, Messages.IllegalBreak);
return delegate.createBreakStatement(label);
}
function parseReturnStatement() {
var argument = null;
expectKeyword("return");
if (!state.inFunctionBody) throwErrorTolerant({}, Messages.IllegalReturn);
if (source.charCodeAt(index) === 32) {
if (isIdentifierStart(source.charCodeAt(index + 1))) {
argument = parseExpression();
consumeSemicolon();
return delegate.createReturnStatement(argument);
}
}
if (peekLineTerminator()) return delegate.createReturnStatement(null);
if (!match(";")) {
if (!match("}") && lookahead.type !== Token.EOF) argument = parseExpression();
}
consumeSemicolon();
return delegate.createReturnStatement(argument);
}
function parseWithStatement() {
var object, body;
if (strict) {
skipComment();
throwErrorTolerant({}, Messages.StrictModeWith);
}
expectKeyword("with");
expect("(");
object = parseExpression();
expect(")");
body = parseStatement();
return delegate.createWithStatement(object, body);
}
function parseSwitchCase() {
var test,
consequent = [],
statement,
startToken = lookahead;
if (matchKeyword("default")) {
lex();
test = null;
} else {
expectKeyword("case");
test = parseExpression();
}
expect(":");
while (index < length) {
if (match("}") || matchKeyword("default") || matchKeyword("case")) break;
statement = parseStatement();
consequent.push(statement);
}
return delegate.markEnd(delegate.createSwitchCase(test, consequent), startToken);
}
function parseSwitchStatement() {
var discriminant, cases, clause, oldInSwitch, defaultFound;
expectKeyword("switch");
expect("(");
discriminant = parseExpression();
expect(")");
expect("{");
cases = [];
if (match("}")) {
lex();
return delegate.createSwitchStatement(discriminant, cases);
}
oldInSwitch = state.inSwitch;
state.inSwitch = true;
defaultFound = false;
while (index < length) {
if (match("}")) break;
clause = parseSwitchCase();
if (clause.test === null) {
if (defaultFound) throwError({}, Messages.MultipleDefaultsInSwitch);
defaultFound = true;
}
cases.push(clause);
}
state.inSwitch = oldInSwitch;
expect("}");
return delegate.createSwitchStatement(discriminant, cases);
}
function parseThrowStatement() {
var argument;
expectKeyword("throw");
if (peekLineTerminator()) throwError({}, Messages.NewlineAfterThrow);
argument = parseExpression();
consumeSemicolon();
return delegate.createThrowStatement(argument);
}
function parseCatchClause() {
var param,
body,
startToken = lookahead;
expectKeyword("catch");
expect("(");
if (match(")")) throwUnexpected(lookahead);
param = parseVariableIdentifier();
if (strict && isRestrictedWord(param.name)) throwErrorTolerant({}, Messages.StrictCatchVariable);
expect(")");
body = parseBlock();
return delegate.markEnd(delegate.createCatchClause(param, body), startToken);
}
function parseTryStatement() {
var block,
handlers = [],
finalizer = null;
expectKeyword("try");
block = parseBlock();
if (matchKeyword("catch")) handlers.push(parseCatchClause());
if (matchKeyword("finally")) {
lex();
finalizer = parseBlock();
}
if (handlers.length === 0 && !finalizer) throwError({}, Messages.NoCatchOrFinally);
return delegate.createTryStatement(block, [], handlers, finalizer);
}
function parseDebuggerStatement() {
expectKeyword("debugger");
consumeSemicolon();
return delegate.createDebuggerStatement();
}
function parseStatement() {
var type = lookahead.type,
expr,
labeledBody,
key,
startToken;
if (type === Token.EOF) throwUnexpected(lookahead);
if (type === Token.Punctuator && lookahead.value === "{") return parseBlock();
startToken = lookahead;
if (type === Token.Punctuator) switch (lookahead.value) {
case ";":
return delegate.markEnd(parseEmptyStatement(), startToken);
case "(":
return delegate.markEnd(parseExpressionStatement(), startToken);
default:
break;
}
if (type === Token.Keyword) switch (lookahead.value) {
case "break":
return delegate.markEnd(parseBreakStatement(), startToken);
case "continue":
return delegate.markEnd(parseContinueStatement(), startToken);
case "debugger":
return delegate.markEnd(parseDebuggerStatement(), startToken);
case "do":
return delegate.markEnd(parseDoWhileStatement(), startToken);
case "for":
return delegate.markEnd(parseForStatement(), startToken);
case "function":
return delegate.markEnd(parseFunctionDeclaration(), startToken);
case "if":
return delegate.markEnd(parseIfStatement(), startToken);
case "return":
return delegate.markEnd(parseReturnStatement(), startToken);
case "switch":
return delegate.markEnd(parseSwitchStatement(), startToken);
case "throw":
return delegate.markEnd(parseThrowStatement(), startToken);
case "try":
return delegate.markEnd(parseTryStatement(), startToken);
case "var":
return delegate.markEnd(parseVariableStatement(), startToken);
case "while":
return delegate.markEnd(parseWhileStatement(), startToken);
case "with":
return delegate.markEnd(parseWithStatement(), startToken);
default:
break;
}
expr = parseExpression();
if (expr.type === Syntax.Identifier && match(":")) {
lex();
key = "$" + expr.name;
if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) throwError({}, Messages.Redeclaration, "Label", expr.name);
state.labelSet[key] = true;
labeledBody = parseStatement();
delete state.labelSet[key];
return delegate.markEnd(delegate.createLabeledStatement(expr, labeledBody), startToken);
}
consumeSemicolon();
return delegate.markEnd(delegate.createExpressionStatement(expr), startToken);
}
function parseFunctionSourceElements() {
var sourceElement,
sourceElements = [],
token,
directive,
firstRestricted,
oldLabelSet,
oldInIteration,
oldInSwitch,
oldInFunctionBody,
startToken = lookahead;
expect("{");
while (index < length) {
if (lookahead.type !== Token.StringLiteral) break;
token = lookahead;
sourceElement = parseSourceElement();
sourceElements.push(sourceElement);
if (sourceElement.expression.type !== Syntax.Literal) break;
directive = source.slice(token.start + 1, token.end - 1);
if (directive === "use strict") {
strict = true;
if (firstRestricted) throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral);
} else if (!firstRestricted && token.octal) firstRestricted = token;
}
oldLabelSet = state.labelSet;
oldInIteration = state.inIteration;
oldInSwitch = state.inSwitch;
oldInFunctionBody = state.inFunctionBody;
state.labelSet = {};
state.inIteration = false;
state.inSwitch = false;
state.inFunctionBody = true;
while (index < length) {
if (match("}")) break;
sourceElement = parseSourceElement();
if (typeof sourceElement === "undefined") break;
sourceElements.push(sourceElement);
}
expect("}");
state.labelSet = oldLabelSet;
state.inIteration = oldInIteration;
state.inSwitch = oldInSwitch;
state.inFunctionBody = oldInFunctionBody;
return delegate.markEnd(delegate.createBlockStatement(sourceElements), startToken);
}
function parseParams(firstRestricted) {
var param,
params = [],
token,
stricted,
paramSet,
key,
message;
expect("(");
if (!match(")")) {
paramSet = {};
while (index < length) {
token = lookahead;
param = parseVariableIdentifier();
key = "$" + token.value;
if (strict) {
if (isRestrictedWord(token.value)) {
stricted = token;
message = Messages.StrictParamName;
}
if (Object.prototype.hasOwnProperty.call(paramSet, key)) {
stricted = token;
message = Messages.StrictParamDupe;
}
} else if (!firstRestricted) {
if (isRestrictedWord(token.value)) {
firstRestricted = token;
message = Messages.StrictParamName;
} else if (isStrictModeReservedWord(token.value)) {
firstRestricted = token;
message = Messages.StrictReservedWord;
} else if (Object.prototype.hasOwnProperty.call(paramSet, key)) {
firstRestricted = token;
message = Messages.StrictParamDupe;
}
}
params.push(param);
paramSet[key] = true;
if (match(")")) break;
expect(",");
}
}
expect(")");
return {
params,
stricted,
firstRestricted,
message
};
}
function parseFunctionDeclaration() {
var id,
params = [],
body,
token,
stricted,
tmp,
firstRestricted,
message,
previousStrict,
startToken = lookahead;
expectKeyword("function");
token = lookahead;
id = parseVariableIdentifier();
if (strict) {
if (isRestrictedWord(token.value)) throwErrorTolerant(token, Messages.StrictFunctionName);
} else if (isRestrictedWord(token.value)) {
firstRestricted = token;
message = Messages.StrictFunctionName;
} else if (isStrictModeReservedWord(token.value)) {
firstRestricted = token;
message = Messages.StrictReservedWord;
}
tmp = parseParams(firstRestricted);
params = tmp.params;
stricted = tmp.stricted;
firstRestricted = tmp.firstRestricted;
if (tmp.message) message = tmp.message;
previousStrict = strict;
body = parseFunctionSourceElements();
if (strict && firstRestricted) throwError(firstRestricted, message);
if (strict && stricted) throwErrorTolerant(stricted, message);
strict = previousStrict;
return delegate.markEnd(delegate.createFunctionDeclaration(id, params, [], body), startToken);
}
function parseFunctionExpression() {
var token,
id = null,
stricted,
firstRestricted,
message,
tmp,
params = [],
body,
previousStrict,
startToken = lookahead;
expectKeyword("function");
if (!match("(")) {
token = lookahead;
id = parseVariableIdentifier();
if (strict) {
if (isRestrictedWord(token.value)) throwErrorTolerant(token, Messages.StrictFunctionName);
} else if (isRestrictedWord(token.value)) {
firstRestricted = token;
message = Messages.StrictFunctionName;
} else if (isStrictModeReservedWord(token.value)) {
firstRestricted = token;
message = Messages.StrictReservedWord;
}
}
tmp = parseParams(firstRestricted);
params = tmp.params;
stricted = tmp.stricted;
firstRestricted = tmp.firstRestricted;
if (tmp.message) message = tmp.message;
previousStrict = strict;
body = parseFunctionSourceElements();
if (strict && firstRestricted) throwError(firstRestricted, message);
if (strict && stricted) throwErrorTolerant(stricted, message);
strict = previousStrict;
return delegate.markEnd(delegate.createFunctionExpression(id, params, [], body), startToken);
}
function parseSourceElement() {
if (lookahead.type === Token.Keyword) switch (lookahead.value) {
case "const":
case "let":
return parseConstLetDeclaration(lookahead.value);
case "function":
return parseFunctionDeclaration();
default:
return parseStatement();
}
if (lookahead.type !== Token.EOF) return parseStatement();
}
function parseSourceElements() {
var sourceElement,
sourceElements = [],
token,
directive,
firstRestricted;
while (index < length) {
token = lookahead;
if (token.type !== Token.StringLiteral) break;
sourceElement = parseSourceElement();
sourceElements.push(sourceElement);
if (sourceElement.expression.type !== Syntax.Literal) break;
directive = source.slice(token.start + 1, token.end - 1);
if (directive === "use strict") {
strict = true;
if (firstRestricted) throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral);
} else if (!firstRestricted && token.octal) firstRestricted = token;
}
while (index < length) {
sourceElement = parseSourceElement();
/* istanbul ignore if */
if (typeof sourceElement === "undefined") break;
sourceElements.push(sourceElement);
}
return sourceElements;
}
function parseProgram() {
var body, startToken;
skipComment();
peek();
startToken = lookahead;
strict = false;
body = parseSourceElements();
return delegate.markEnd(delegate.createProgram(body), startToken);
}
function filterTokenLocation() {
var i,
entry,
token,
tokens = [];
for (i = 0; i < extra.tokens.length; ++i) {
entry = extra.tokens[i];
token = {
type: entry.type,
value: entry.value
};
if (extra.range) token.range = entry.range;
if (extra.loc) token.loc = entry.loc;
tokens.push(token);
}
extra.tokens = tokens;
}
function tokenize(code, options) {
var toString = String,
tokens;
if (typeof code !== "string" && !(code instanceof String)) code = toString(code);
delegate = SyntaxTreeDelegate;
source = code;
index = 0;
lineNumber = source.length > 0 ? 1 : 0;
lineStart = 0;
length = source.length;
lookahead = null;
state = {
allowIn: true,
labelSet: {},
inFunctionBody: false,
inIteration: false,
inSwitch: false,
lastCommentStart: -1
};
extra = {};
options = options || {};
options.tokens = true;
extra.tokens = [];
extra.tokenize = true;
extra.openParenToken = -1;
extra.openCurlyToken = -1;
extra.range = typeof options.range === "boolean" && options.range;
extra.loc = typeof options.loc === "boolean" && options.loc;
if (typeof options.comment === "boolean" && options.comment) extra.comments = [];
if (typeof options.tolerant === "boolean" && options.tolerant) extra.errors = [];
try {
peek();
if (lookahead.type === Token.EOF) return extra.tokens;
lex();
while (lookahead.type !== Token.EOF) try {
lex();
} catch (lexError) {
if (extra.errors) {
extra.errors.push(lexError);
break;
} else throw lexError;
}
filterTokenLocation();
tokens = extra.tokens;
if (typeof extra.comments !== "undefined") tokens.comments = extra.comments;
if (typeof extra.errors !== "undefined") tokens.errors = extra.errors;
} catch (e) {
throw e;
} finally {
extra = {};
}
return tokens;
}
function parse(code, options) {
var program,
toString = String;
if (typeof code !== "string" && !(code instanceof String)) code = toString(code);
delegate = SyntaxTreeDelegate;
source = code;
index = 0;
lineNumber = source.length > 0 ? 1 : 0;
lineStart = 0;
length = source.length;
lookahead = null;
state = {
allowIn: true,
labelSet: {},
inFunctionBody: false,
inIteration: false,
inSwitch: false,
lastCommentStart: -1
};
extra = {};
if (typeof options !== "undefined") {
extra.range = typeof options.range === "boolean" && options.range;
extra.loc = typeof options.loc === "boolean" && options.loc;
extra.attachComment = typeof options.attachComment === "boolean" && options.attachComment;
if (extra.loc && options.source !== null && options.source !== void 0) extra.source = toString(options.source);
if (typeof options.tokens === "boolean" && options.tokens) extra.tokens = [];
if (typeof options.comment === "boolean" && options.comment) extra.comments = [];
if (typeof options.tolerant === "boolean" && options.tolerant) extra.errors = [];
if (extra.attachComment) {
extra.range = true;
extra.comments = [];
extra.bottomRightStack = [];
extra.trailingComments = [];
extra.leadingComments = [];
}
}
try {
program = parseProgram();
if (typeof extra.comments !== "undefined") program.comments = extra.comments;
if (typeof extra.tokens !== "undefined") {
filterTokenLocation();
program.tokens = extra.tokens;
}
if (typeof extra.errors !== "undefined") program.errors = extra.errors;
} catch (e) {
throw e;
} finally {
extra = {};
}
return program;
}
exports$2.version = "1.2.2";
exports$2.tokenize = tokenize;
exports$2.parse = parse;
/* istanbul ignore next */
exports$2.Syntax = function () {
var name,
types = {};
if (typeof Object.create === "function") types = Object.create(null);
for (name in Syntax) if (Syntax.hasOwnProperty(name)) types[name] = Syntax[name];
if (typeof Object.freeze === "function") Object.freeze(types);
return types;
}();
});
}, {}],
1: [function (require$1, module$1, exports$1) {
(function (process) {
var parser = function () {
var parser$1 = {
trace: function trace() {},
yy: {},
symbols_: {
"error": 2,
"JSON_PATH": 3,
"DOLLAR": 4,
"PATH_COMPONENTS": 5,
"LEADING_CHILD_MEMBER_EXPRESSION": 6,
"PATH_COMPONENT": 7,
"MEMBER_COMPONENT": 8,
"SUBSCRIPT_COMPONENT": 9,
"CHILD_MEMBER_COMPONENT": 10,
"DESCENDANT_MEMBER_COMPONENT": 11,
"DOT": 12,
"MEMBER_EXPRESSION": 13,
"DOT_DOT": 14,
"STAR": 15,
"IDENTIFIER": 16,
"SCRIPT_EXPRESSION": 17,
"INTEGER": 18,
"END": 19,
"CHILD_SUBSCRIPT_COMPONENT": 20,
"DESCENDANT_SUBSCRIPT_COMPONENT": 21,
"[": 22,
"SUBSCRIPT": 23,
"]": 24,
"SUBSCRIPT_EXPRESSION": 25,
"SUBSCRIPT_EXPRESSION_LIST": 26,
"SUBSCRIPT_EXPRESSION_LISTABLE": 27,
",": 28,
"STRING_LITERAL": 29,
"ARRAY_SLICE": 30,
"FILTER_EXPRESSION": 31,
"QQ_STRING": 32,
"Q_STRING": 33,
"$accept": 0,
"$end": 1
},
terminals_: {
2: "error",
4: "DOLLAR",
12: "DOT",
14: "DOT_DOT",
15: "STAR",
16: "IDENTIFIER",
17: "SCRIPT_EXPRESSION",
18: "INTEGER",
19: "END",
22: "[",
24: "]",
28: ",",
30: "ARRAY_SLICE",
31: "FILTER_EXPRESSION",
32: "QQ_STRING",
33: "Q_STRING"
},
productions_: [0, [3, 1], [3, 2], [3, 1], [3, 2], [5, 1], [5, 2], [7, 1], [7, 1], [8, 1], [8, 1], [10, 2], [6, 1], [11, 2], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [9, 1], [9, 1], [20, 3], [21, 4], [23, 1], [23, 1], [26, 1], [26, 3], [27, 1], [27, 1], [27, 1], [25, 1], [25, 1], [25, 1], [29, 1], [29, 1]],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
if (!yy.ast) {
yy.ast = _ast;
_ast.initialize();
}
var $0 = $$.length - 1;
switch (yystate) {
case 1:
yy.ast.set({
expression: {
type: "root",
value: $$[$0]
}
});
yy.ast.unshift();
return yy.ast.yield();
case 2:
yy.ast.set({
expression: {
type: "root",
value: $$[$0 - 1]
}
});
yy.ast.unshift();
return yy.ast.yield();
case 3:
yy.ast.unshift();
return yy.ast.yield();
case 4:
yy.ast.set({
operation: "member",
scope: "child",
expression: {
type: "identifier",
value: $$[$0 - 1]
}
});
yy.ast.unshift();
return yy.ast.yield();
case 5:
break;
case 6:
break;
case 7:
yy.ast.set({
operation: "member"
});
yy.ast.push();
break;
case 8:
yy.ast.set({
operation: "subscript"
});
yy.ast.push();
break;
case 9:
yy.ast.set({
scope: "child"
});
break;
case 10:
yy.ast.set({
scope: "descendant"
});
break;
case 11:
break;
case 12:
yy.ast.set({
scope: "child",
operation: "member"
});
break;
case 13:
break;
case 14:
yy.ast.set({
expression: {
type: "wildcard",
value: $$[$0]
}
});
break;
case 15:
yy.ast.set({
expression: {
type: "identifier",
value: $$[$0]
}
});
break;
case 16:
yy.ast.set({
expression: {
type: "script_expression",
value: $$[$0]
}
});
break;
case 17:
yy.ast.set({
expression: {
type: "numeric_literal",
value: parseInt($$[$0])
}
});
break;
case 18:
break;
case 19:
yy.ast.set({
scope: "child"
});
break;
case 20:
yy.ast.set({
scope: "descendant"
});
break;
case 21:
break;
case 22:
break;
case 23:
break;
case 24:
$$[$0].length > 1 ? yy.ast.set({
expression: {
type: "union",
value: $$[$0]
}
}) : this.$ = $$[$0];
break;
case 25:
this.$ = [$$[$0]];
break;
case 26:
this.$ = $$[$0 - 2].concat($$[$0]);
break;
case 27:
this.$ = {
expression: {
type: "numeric_literal",
value: parseInt($$[$0])
}
};
yy.ast.set(this.$);
break;
case 28:
this.$ = {
expression: {
type: "string_literal",
value: $$[$0]
}
};
yy.ast.set(this.$);
break;
case 29:
this.$ = {
expression: {
type: "slice",
value: $$[$0]
}
};
yy.ast.set(this.$);
break;
case 30:
this.$ = {
expression: {
type: "wildcard",
value: $$[$0]
}
};
yy.ast.set(this.$);
break;
case 31:
this.$ = {
expression: {
type: "script_expression",
value: $$[$0]
}
};
yy.ast.set(this.$);
break;
case 32:
this.$ = {
expression: {
type: "filter_expression",
value: $$[$0]
}
};
yy.ast.set(this.$);
break;
case 33:
this.$ = $$[$0];
break;
case 34:
this.$ = $$[$0];
break;
}
},
table: [{
3: 1,
4: [1, 2],
6: 3,
13: 4,
15: [1, 5],
16: [1, 6],
17: [1, 7],
18: [1, 8],
19: [1, 9]
}, {
1: [3]
}, {
1: [2, 1],
5: 10,
7: 11,
8: 12,
9: 13,
10: 14,
11: 15,
12: [1, 18],
14: [1, 19],
20: 16,
21: 17,
22: [1, 20]
}, {
1: [2, 3],
5: 21,
7: 11,
8: 12,
9: 13,
10: 14,
11: 15,
12: [1, 18],
14: [1, 19],
20: 16,
21: 17,
22: [1, 20]
}, {
1: [2, 12],
12: [2, 12],
14: [2, 12],
22: [2, 12]
}, {
1: [2, 14],
12: [2, 14],
14: [2, 14],
22: [2, 14]
}, {
1: [2, 15],
12: [2, 15],
14: [2, 15],
22: [2, 15]
}, {
1: [2, 16],
12: [2, 16],
14: [2, 16],
22: [2, 16]
}, {
1: [2, 17],
12: [2, 17],
14: [2, 17],
22: [2, 17]
}, {
1: [2, 18],
12: [2, 18],
14: [2, 18],
22: [2, 18]
}, {
1: [2, 2],
7: 22,
8: 12,
9: 13,
10: 14,
11: 15,
12: [1, 18],
14: [1, 19],
20: 16,
21: 17,
22: [1, 20]
}, {
1: [2, 5],
12: [2, 5],
14: [2, 5],
22: [2, 5]
}, {
1: [2, 7],
12: [2, 7],
14: [2, 7],
22: [2, 7]
}, {
1: [2, 8],
12: [2, 8],
14: [2, 8],
22: [2, 8]
}, {
1: [2, 9],
12: [2, 9],
14: [2, 9],
22: [2, 9]
}, {
1: [2, 10],
12: [2, 10],
14: [2, 10],
22: [2, 10]
}, {
1: [2, 19],
12: [2, 19],
14: [2, 19],
22: [2, 19]
}, {
1: [2, 20],
12: [2, 20],
14: [2, 20],
22: [2, 20]
}, {
13: 23,
15: [1, 5],
16: [1, 6],
17: [1, 7],
18: [1, 8],
19: [1, 9]
}, {
13: 24,
15: [1, 5],
16: [1, 6],
17: [1, 7],
18: [1, 8],
19: [1, 9],
22: [1, 25]
}, {
15: [1, 29],
17: [1, 30],
18: [1, 33],
23: 26,
25: 27,
26: 28,
27: 32,
29: 34,
30: [1, 35],
31: [1, 31],
32: [1, 36],
33: [1, 37]
}, {
1: [2, 4],
7: 22,
8: 12,
9: 13,
10: 14,
11: 15,
12: [1, 18],
14: [1, 19],
20: 16,
21: 17,
22: [1, 20]
}, {
1: [2, 6],
12: [2, 6],
14: [2, 6],
22: [2, 6]
}, {
1: [2, 11],
12: [2, 11],
14: [2, 11],
22: [2, 11]
}, {
1: [2, 13],
12: [2, 13],
14: [2, 13],
22: [2, 13]
}, {
15: [1, 29],
17: [1, 30],
18: [1, 33],
23: 38,
25: 27,
26: 28,
27: 32,
29: 34,
30: [1, 35],
31: [1, 31],
32: [1, 36],
33: [1, 37]
}, {
24: [1, 39]
}, {
24: [2, 23]
}, {
24: [2, 24],
28: [1, 40]
}, {
24: [2, 30]
}, {
24: [2, 31]
}, {
24: [2, 32]
}, {
24: [2, 25],
28: [2, 25]
}, {
24: [2, 27],
28: [2, 27]
}, {
24: [2, 28],
28: [2, 28]
}, {
24: [2, 29],
28: [2, 29]
}, {
24: [2, 33],
28: [2, 33]
}, {
24: [2, 34],
28: [2, 34]
}, {
24: [1, 41]
}, {
1: [2, 21],
12: [2, 21],
14: [2, 21],
22: [2, 21]
}, {
18: [1, 33],
27: 42,
29: 34,
30: [1, 35],
32: [1, 36],
33: [1, 37]
}, {
1: [2, 22],
12: [2, 22],
14: [2, 22],
22: [2, 22]
}, {
24: [2, 26],
28: [2, 26]
}],
defaultActions: {
27: [2, 23],
29: [2, 30],
30: [2, 31],
31: [2, 32]
},
parseError: function parseError(str, hash) {
if (hash.recoverable) this.trace(str);else throw new Error(str);
},
parse: function parse(input) {
var self$1 = this,
stack = [0],
vstack = [null],
lstack = [],
table = this.table,
yytext = "",
yylineno = 0,
yyleng = 0,
recovering = 0,
TERROR = 2,
EOF = 1;
var args = lstack.slice.call(arguments, 1);
this.lexer.setInput(input);
this.lexer.yy = this.yy;
this.yy.lexer = this.lexer;
this.yy.parser = this;
if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {};
var yyloc = this.lexer.yylloc;
lstack.push(yyloc);
var ranges = this.lexer.options && this.lexer.options.ranges;
if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError;else this.parseError = Object.getPrototypeOf(this).parseError;
function lex() {
var token = self$1.lexer.lex() || EOF;
if (typeof token !== "number") token = self$1.symbols_[token] || token;
return token;
}
var symbol,
preErrorSymbol,
state,
action,
r,
yyval = {},
p,
len,
newState,
expected;
while (true) {
state = stack[stack.length - 1];
if (this.defaultActions[state]) action = this.defaultActions[state];else {
if (symbol === null || typeof symbol == "undefined") symbol = lex();
action = table[state] && table[state][symbol];
}
if (typeof action === "undefined" || !action.length || !action[0]) {
var errStr = "";
expected = [];
for (p in table[state]) if (this.terminals_[p] && p > TERROR) expected.push("'" + this.terminals_[p] + "'");
if (this.lexer.showPosition) errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";else errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'");
this.parseError(errStr, {
text: this.lexer.match,
token: this.terminals_[symbol] || symbol,
line: this.lexer.yylineno,
loc: yyloc,
expected
});
}
if (action[0] instanceof Array && action.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
switch (action[0]) {
case 1:
stack.push(symbol);
vstack.push(this.lexer.yytext);
lstack.push(this.lexer.yylloc);
stack.push(action[1]);
symbol = null;
if (!preErrorSymbol) {
yyleng = this.lexer.yyleng;
yytext = this.lexer.yytext;
yylineno = this.lexer.yylineno;
yyloc = this.lexer.yylloc;
if (recovering > 0) recovering--;
} else {
symbol = preErrorSymbol;
preErrorSymbol = null;
}
break;
case 2:
len = this.productions_[action[1]][1];
yyval.$ = vstack[vstack.length - len];
yyval._$ = {
first_line: lstack[lstack.length - (len || 1)].first_line,
last_line: lstack[lstack.length - 1].last_line,
first_column: lstack[lstack.length - (len || 1)].first_column,
last_column: lstack[lstack.length - 1].last_column
};
if (ranges) yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack].concat(args));
if (typeof r !== "undefined") return r;
if (len) {
stack = stack.slice(0, -1 * len * 2);
vstack = vstack.slice(0, -1 * len);
lstack = lstack.slice(0, -1 * len);
}
stack.push(this.productions_[action[1]][0]);
vstack.push(yyval.$);
lstack.push(yyval._$);
newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
stack.push(newState);
break;
case 3:
return true;
}
}
return true;
}
};
var _ast = {
initialize: function () {
this._nodes = [];
this._node = {};
this._stash = [];
},
set: function (props) {
for (var k in props) this._node[k] = props[k];
return this._node;
},
node: function (obj) {
if (arguments.length) this._node = obj;
return this._node;
},
push: function () {
this._nodes.push(this._node);
this._node = {};
},
unshift: function () {
this._nodes.unshift(this._node);
this._node = {};
},
yield: function () {
var _nodes = this._nodes;
this.initialize();
return _nodes;
}
};
parser$1.lexer = function () {
return {
EOF: 1,
parseError: function parseError(str, hash) {
if (this.yy.parser) this.yy.parser.parseError(str, hash);else throw new Error(str);
},
setInput: function (input) {
this._input = input;
this._more = this._backtrack = this.done = false;
this.yylineno = this.yyleng = 0;
this.yytext = this.matched = this.match = "";
this.conditionStack = ["INITIAL"];
this.yylloc = {
first_line: 1,
first_column: 0,
last_line: 1,
last_column: 0
};
if (this.options.ranges) this.yylloc.range = [0, 0];
this.offset = 0;
return this;
},
input: function () {
var ch = this._input[0];
this.yytext += ch;
this.yyleng++;
this.offset++;
this.match += ch;
this.matched += ch;
if (ch.match(/(?:\r\n?|\n).*/g)) {
this.yylineno++;
this.yylloc.last_line++;
} else this.yylloc.last_column++;
if (this.options.ranges) this.yylloc.range[1]++;
this._input = this._input.slice(1);
return ch;
},
unput: function (ch) {
var len = ch.length;
var lines = ch.split(/(?:\r\n?|\n)/g);
this._input = ch + this._input;
this.yytext = this.yytext.substr(0, this.yytext.length - len - 1);
this.offset -= len;
var oldLines = this.match.split(/(?:\r\n?|\n)/g);
this.match = this.match.substr(0, this.match.length - 1);
this.matched = this.matched.substr(0, this.matched.length - 1);
if (lines.length - 1) this.yylineno -= lines.length - 1;
var r = this.yylloc.range;
this.yylloc = {
first_line: this.yylloc.first_line,
last_line: this.yylineno + 1,
first_column: this.yylloc.first_column,
last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
};
if (this.options.ranges) this.yylloc.range = [r[0], r[0] + this.yyleng - len];
this.yyleng = this.yytext.length;
return this;
},
more: function () {
this._more = true;
return this;
},
reject: function () {
if (this.options.backtrack_lexer) this._backtrack = true;else return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
text: "",
token: null,
line: this.yylineno
});
return this;
},
less: function (n) {
this.unput(this.match.slice(n));
},
pastInput: function () {
var past = this.matched.substr(0, this.matched.length - this.match.length);
return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, "");
},
upcomingInput: function () {
var next = this.match;
if (next.length < 20) next += this._input.substr(0, 20 - next.length);
return (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, "");
},
showPosition: function () {
var pre = this.pastInput();
var c = new Array(pre.length + 1).join("-");
return pre + this.upcomingInput() + "\n" + c + "^";
},
test_match: function (match, indexed_rule) {
var token, lines, backup;
if (this.options.backtrack_lexer) {
backup = {
yylineno: this.yylineno,
yylloc: {
first_line: this.yylloc.first_line,
last_line: this.last_line,
first_column: this.yylloc.first_column,
last_column: this.yylloc.last_column
},
yytext: this.yytext,
match: this.match,
matches: this.matches,
matched: this.matched,
yyleng: this.yyleng,
offset: this.offset,
_more: this._more,
_input: this._input,
yy: this.yy,
conditionStack: this.conditionStack.slice(0),
done: this.done
};
if (this.options.ranges) backup.yylloc.range = this.yylloc.range.slice(0);
}
lines = match[0].match(/(?:\r\n?|\n).*/g);
if (lines) this.yylineno += lines.length;
this.yylloc = {
first_line: this.yylloc.last_line,
last_line: this.yylineno + 1,
first_column: this.yylloc.last_column,
last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
};
this.yytext += match[0];
this.match += match[0];
this.matches = match;
this.yyleng = this.yytext.length;
if (this.options.ranges) this.yylloc.range = [this.offset, this.offset += this.yyleng];
this._more = false;
this._backtrack = false;
this._input = this._input.slice(match[0].length);
this.matched += match[0];
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
if (this.done && this._input) this.done = false;
if (token) return token;else if (this._backtrack) {
for (var k in backup) this[k] = backup[k];
return false;
}
return false;
},
next: function () {
if (this.done) return this.EOF;
if (!this._input) this.done = true;
var token, match, tempMatch, index;
if (!this._more) {
this.yytext = "";
this.match = "";
}
var rules = this._currentRules();
for (var i = 0; i < rules.length; i++) {
tempMatch = this._input.match(this.rules[rules[i]]);
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
match = tempMatch;
index = i;
if (this.options.backtrack_lexer) {
token = this.test_match(tempMatch, rules[i]);
if (token !== false) return token;else if (this._backtrack) {
match = false;
continue;
} else return false;
} else if (!this.options.flex) break;
}
}
if (match) {
token = this.test_match(match, rules[index]);
if (token !== false) return token;
return false;
}
if (this._input === "") return this.EOF;else return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
text: "",
token: null,
line: this.yylineno
});
},
lex: function lex() {
var r = this.next();
if (r) return r;else return this.lex();
},
begin: function begin(condition) {
this.conditionStack.push(condition);
},
popState: function popState() {
if (this.conditionStack.length - 1 > 0) return this.conditionStack.pop();else return this.conditionStack[0];
},
_currentRules: function _currentRules() {
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;else return this.conditions["INITIAL"].rules;
},
topState: function topState(n) {
n = this.conditionStack.length - 1 - Math.abs(n || 0);
if (n >= 0) return this.conditionStack[n];else return "INITIAL";
},
pushState: function pushState(condition) {
this.begin(condition);
},
stateStackSize: function stateStackSize() {
return this.conditionStack.length;
},
options: {},
performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
switch ($avoiding_name_collisions) {
case 0:
return 4;
case 1:
return 14;
case 2:
return 12;
case 3:
return 15;
case 4:
return 16;
case 5:
return 22;
case 6:
return 24;
case 7:
return 28;
case 8:
return 30;
case 9:
return 18;
case 10:
yy_.yytext = yy_.yytext.substr(1, yy_.yyleng - 2);
return 32;
case 11:
yy_.yytext = yy_.yytext.substr(1, yy_.yyleng - 2);
return 33;
case 12:
return 17;
case 13:
return 31;
}
},
rules: [/^(?:\$)/, /^(?:\.\.)/, /^(?:\.)/, /^(?:\*)/, /^(?:[a-zA-Z_]+[a-zA-Z0-9_]*)/, /^(?:\[)/, /^(?:\])/, /^(?:,)/, /^(?:((-?(?:0|[1-9][0-9]*)))?\:((-?(?:0|[1-9][0-9]*)))?(\:((-?(?:0|[1-9][0-9]*)))?)?)/, /^(?:(-?(?:0|[1-9][0-9]*)))/, /^(?:"(?:\\["bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^"\\])*")/, /^(?:'(?:\\['bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^'\\])*')/, /^(?:\(.+?\)(?=\]))/, /^(?:\?\(.+?\)(?=\]))/],
conditions: {
"INITIAL": {
"rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
"inclusive": true
}
}
};
}();
function Parser() {
this.yy = {};
}
Parser.prototype = parser$1;
parser$1.Parser = Parser;
return new Parser();
}();
if (typeof require$1 !== "undefined" && typeof exports$1 !== "undefined") {
exports$1.parser = parser;
exports$1.Parser = parser.Parser;
exports$1.parse = function () {
return parser.parse.apply(parser, arguments);
};
exports$1.main = function commonjsMain(args) {
if (!args[1]) {
console.log("Usage: " + args[0] + " FILE");
process.exit(1);
}
var source = require$1("fs").readFileSync(require$1("path").normalize(args[1]), "utf8");
return exports$1.parser.parse(source);
};
if (typeof module$1 !== "undefined" && require$1.main === module$1) exports$1.main(process.argv.slice(1));
}
}).call(this, require$1("_process"));
}, {
"_process": 14,
"fs": 12,
"path": 13
}],
2: [function (require$1, module$1, exports$1) {
module$1.exports = {
identifier: "[a-zA-Z_]+[a-zA-Z0-9_]*",
integer: "-?(?:0|[1-9][0-9]*)",
qq_string: "\"(?:\\\\[\"bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\"\\\\])*\"",
q_string: "'(?:\\\\['bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^'\\\\])*'"
};
}, {}],
3: [function (require$1, module$1, exports$1) {
var dict = require$1("./dict");
var fs = require$1("fs");
var grammar = {
lex: {
macros: {
esc: "\\\\",
int: dict.integer
},
rules: [["\\$", "return 'DOLLAR'"], ["\\.\\.", "return 'DOT_DOT'"], ["\\.", "return 'DOT'"], ["\\*", "return 'STAR'"], [dict.identifier, "return 'IDENTIFIER'"], ["\\[", "return '['"], ["\\]", "return ']'"], [",", "return ','"], ["({int})?\\:({int})?(\\:({int})?)?", "return 'ARRAY_SLICE'"], ["{int}", "return 'INTEGER'"], [dict.qq_string, "yytext = yytext.substr(1,yyleng-2); return 'QQ_STRING';"], [dict.q_string, "yytext = yytext.substr(1,yyleng-2); return 'Q_STRING';"], ["\\(.+?\\)(?=\\])", "return 'SCRIPT_EXPRESSION'"], ["\\?\\(.+?\\)(?=\\])", "return 'FILTER_EXPRESSION'"]]
},
start: "JSON_PATH",
bnf: {
JSON_PATH: [["DOLLAR", "yy.ast.set({ expression: { type: \"root\", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()"], ["DOLLAR PATH_COMPONENTS", "yy.ast.set({ expression: { type: \"root\", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()"], ["LEADING_CHILD_MEMBER_EXPRESSION", "yy.ast.unshift(); return yy.ast.yield()"], ["LEADING_CHILD_MEMBER_EXPRESSION PATH_COMPONENTS", "yy.ast.set({ operation: \"member\", scope: \"child\", expression: { type: \"identifier\", value: $1 }}); yy.ast.unshift(); return yy.ast.yield()"]],
PATH_COMPONENTS: [["PATH_COMPONENT", ""], ["PATH_COMPONENTS PATH_COMPONENT", ""]],
PATH_COMPONENT: [["MEMBER_COMPONENT", "yy.ast.set({ operation: \"member\" }); yy.ast.push()"], ["SUBSCRIPT_COMPONENT", "yy.ast.set({ operation: \"subscript\" }); yy.ast.push() "]],
MEMBER_COMPONENT: [["CHILD_MEMBER_COMPONENT", "yy.ast.set({ scope: \"child\" })"], ["DESCENDANT_MEMBER_COMPONENT", "yy.ast.set({ scope: \"descendant\" })"]],
CHILD_MEMBER_COMPONENT: [["DOT MEMBER_EXPRESSION", ""]],
LEADING_CHILD_MEMBER_EXPRESSION: [["MEMBER_EXPRESSION", "yy.ast.set({ scope: \"child\", operation: \"member\" })"]],
DESCENDANT_MEMBER_COMPONENT: [["DOT_DOT MEMBER_EXPRESSION", ""]],
MEMBER_EXPRESSION: [["STAR", "yy.ast.set({ expression: { type: \"wildcard\", value: $1 } })"], ["IDENTIFIER", "yy.ast.set({ expression: { type: \"identifier\", value: $1 } })"], ["SCRIPT_EXPRESSION", "yy.ast.set({ expression: { type: \"script_expression\", value: $1 } })"], ["INTEGER", "yy.ast.set({ expression: { type: \"numeric_literal\", value: parseInt($1) } })"], ["END", ""]],
SUBSCRIPT_COMPONENT: [["CHILD_SUBSCRIPT_COMPONENT", "yy.ast.set({ scope: \"child\" })"], ["DESCENDANT_SUBSCRIPT_COMPONENT", "yy.ast.set({ scope: \"descendant\" })"]],
CHILD_SUBSCRIPT_COMPONENT: [["[ SUBSCRIPT ]", ""]],
DESCENDANT_SUBSCRIPT_COMPONENT: [["DOT_DOT [ SUBSCRIPT ]", ""]],
SUBSCRIPT: [["SUBSCRIPT_EXPRESSION", ""], ["SUBSCRIPT_EXPRESSION_LIST", "$1.length > 1? yy.ast.set({ expression: { type: \"union\", value: $1 } }) : $$ = $1"]],
SUBSCRIPT_EXPRESSION_LIST: [["SUBSCRIPT_EXPRESSION_LISTABLE", "$$ = [$1]"], ["SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE", "$$ = $1.concat($3)"]],
SUBSCRIPT_EXPRESSION_LISTABLE: [["INTEGER", "$$ = { expression: { type: \"numeric_literal\", value: parseInt($1) } }; yy.ast.set($$)"], ["STRING_LITERAL", "$$ = { expression: { type: \"string_literal\", value: $1 } }; yy.ast.set($$)"], ["ARRAY_SLICE", "$$ = { expression: { type: \"slice\", value: $1 } }; yy.ast.set($$)"]],
SUBSCRIPT_EXPRESSION: [["STAR", "$$ = { expression: { type: \"wildcard\", value: $1 } }; yy.ast.set($$)"], ["SCRIPT_EXPRESSION", "$$ = { expression: { type: \"script_expression\", value: $1 } }; yy.ast.set($$)"], ["FILTER_EXPRESSION", "$$ = { expression: { type: \"filter_expression\", value: $1 } }; yy.ast.set($$)"]],
STRING_LITERAL: [["QQ_STRING", "$$ = $1"], ["Q_STRING", "$$ = $1"]]
}
};
if (fs.readFileSync) {
grammar.moduleInclude = fs.readFileSync(require$1.resolve("../include/module.js"));
grammar.actionInclude = fs.readFileSync(require$1.resolve("../include/action.js"));
}
module$1.exports = grammar;
}, {
"./dict": 2,
"fs": 12
}],
4: [function (require$1, module$1, exports$1) {
var aesprim = require$1("./aesprim");
var slice = require$1("./slice");
var _evaluate = require$1("static-eval");
var _uniq = require$1("underscore").uniq;
var Handlers = function () {
return this.initialize.apply(this, arguments);
};
Handlers.prototype.initialize = function () {
this.traverse = traverser(true);
this.descend = traverser();
};
Handlers.prototype.keys = Object.keys;
Handlers.prototype.resolve = function (component) {
var key = [component.operation, component.scope, component.expression.type].join("-");
var method = this._fns[key];
if (!method) throw new Error("couldn't resolve key: " + key);
return method.bind(this);
};
Handlers.prototype.register = function (key, handler) {
if (!handler instanceof Function) throw new Error("handler must be a function");
this._fns[key] = handler;
};
Handlers.prototype._fns = {
"member-child-identifier": function (component, partial) {
var key = component.expression.value;
var value = partial.value;
if (value instanceof Object && key in value) return [{
value: value[key],
path: partial.path.concat(key)
}];
},
"member-descendant-identifier": _traverse(function (key, value, ref$1) {
return key == ref$1;
}),
"subscript-child-numeric_literal": _descend(function (key, value, ref$1) {
return key === ref$1;
}),
"member-child-numeric_literal": _descend(function (key, value, ref$1) {
return String(key) === String(ref$1);
}),
"subscript-descendant-numeric_literal": _traverse(function (key, value, ref$1) {
return key === ref$1;
}),
"member-child-wildcard": _descend(function () {
return true;
}),
"member-descendant-wildcard": _traverse(function () {
return true;
}),
"subscript-descendant-wildcard": _traverse(function () {
return true;
}),
"subscript-child-wildcard": _descend(function () {
return true;
}),
"subscript-child-slice": function (component, partial) {
if (is_array(partial.value)) {
var args = component.expression.value.split(":").map(_parse_nullable_int);
var values = partial.value.map(function (v, i) {
return {
value: v,
path: partial.path.concat(i)
};
});
return slice.apply(null, [values].concat(args));
}
},
"subscript-child-union": function (component, partial) {
var results = [];
component.expression.value.forEach(function (component$1) {
var _component = {
operation: "subscript",
scope: "child",
expression: component$1.expression
};
var _results = this.resolve(_component)(_component, partial);
if (_results) results = results.concat(_results);
}, this);
return unique(results);
},
"subscript-descendant-union": function (component, partial, count) {
var jp$1 = require$1("..");
var self$1 = this;
var results = [];
jp$1.nodes(partial, "$..*").slice(1).forEach(function (node) {
if (results.length >= count) return;
component.expression.value.forEach(function (component$1) {
var _component = {
operation: "subscript",
scope: "child",
expression: component$1.expression
};
var _results = self$1.resolve(_component)(_component, node);
results = results.concat(_results);
});
});
return unique(results);
},
"subscript-child-filter_expression": function (component, partial, count) {
var src = component.expression.value.slice(2, -1);
var ast = aesprim.parse(src).body[0].expression;
var passable = function (key, value) {
return evaluate(ast, {
"@": value
});
};
return this.descend(partial, null, passable, count);
},
"subscript-descendant-filter_expression": function (component, partial, count) {
var src = component.expression.value.slice(2, -1);
var ast = aesprim.parse(src).body[0].expression;
var passable = function (key, value) {
return evaluate(ast, {
"@": value
});
};
return this.traverse(partial, null, passable, count);
},
"subscript-child-script_expression": function (component, partial) {
return eval_recurse(partial, component.expression.value.slice(1, -1), "$[{{value}}]");
},
"member-child-script_expression": function (component, partial) {
return eval_recurse(partial, component.expression.value.slice(1, -1), "$.{{value}}");
},
"member-descendant-script_expression": function (component, partial) {
return eval_recurse(partial, component.expression.value.slice(1, -1), "$..value");
}
};
Handlers.prototype._fns["subscript-child-string_literal"] = Handlers.prototype._fns["member-child-identifier"];
Handlers.prototype._fns["member-descendant-numeric_literal"] = Handlers.prototype._fns["subscript-descendant-string_literal"] = Handlers.prototype._fns["member-descendant-identifier"];
function eval_recurse(partial, src, template) {
var jp$1 = require$1("./index");
var ast = aesprim.parse(src).body[0].expression;
var value = evaluate(ast, {
"@": partial.value
});
var path = template.replace(/\{\{\s*value\s*\}\}/g, value);
var results = jp$1.nodes(partial.value, path);
results.forEach(function (r) {
r.path = partial.path.concat(r.path.slice(1));
});
return results;
}
function is_array(val) {
return Array.isArray(val);
}
function is_object(val) {
return val && !(val instanceof Array) && val instanceof Object;
}
function traverser(recurse) {
return function (partial, ref$1, passable, count) {
var value = partial.value;
var path = partial.path;
var results = [];
var descend = function (value$1, path$1) {
if (is_array(value$1)) {
value$1.forEach(function (element, index) {
if (results.length >= count) return;
if (passable(index, element, ref$1)) results.push({
path: path$1.concat(index),
value: element
});
});
value$1.forEach(function (element, index) {
if (results.length >= count) return;
if (recurse) descend(element, path$1.concat(index));
});
} else if (is_object(value$1)) {
this.keys(value$1).forEach(function (k) {
if (results.length >= count) return;
if (passable(k, value$1[k], ref$1)) results.push({
path: path$1.concat(k),
value: value$1[k]
});
});
this.keys(value$1).forEach(function (k) {
if (results.length >= count) return;
if (recurse) descend(value$1[k], path$1.concat(k));
});
}
}.bind(this);
descend(value, path);
return results;
};
}
function _descend(passable) {
return function (component, partial, count) {
return this.descend(partial, component.expression.value, passable, count);
};
}
function _traverse(passable) {
return function (component, partial, count) {
return this.traverse(partial, component.expression.value, passable, count);
};
}
function evaluate() {
try {
return _evaluate.apply(this, arguments);
} catch (e) {}
}
function unique(results) {
results = results.filter(function (d) {
return d;
});
return _uniq(results, function (r) {
return r.path.map(function (c) {
return String(c).replace("-", "--");
}).join("-");
});
}
function _parse_nullable_int(val) {
var sval = String(val);
return sval.match(/^-?[0-9]+$/) ? parseInt(sval) : null;
}
module$1.exports = Handlers;
}, {
"..": "jsonpath",
"./aesprim": "./aesprim",
"./index": 5,
"./slice": 7,
"static-eval": 15,
"underscore": 12
}],
5: [function (require$1, module$1, exports$1) {
var assert = require$1("assert");
var dict = require$1("./dict");
var Parser = require$1("./parser");
var Handlers = require$1("./handlers");
var JSONPath = function () {
this.initialize.apply(this, arguments);
};
JSONPath.prototype.initialize = function () {
this.parser = new Parser();
this.handlers = new Handlers();
};
JSONPath.prototype.parse = function (string) {
assert.ok(_is_string(string), "we need a path");
return this.parser.parse(string);
};
JSONPath.prototype.parent = function (obj, string) {
assert.ok(obj instanceof Object, "obj needs to be an object");
assert.ok(string, "we need a path");
var node = this.nodes(obj, string)[0];
node.path.pop();
return this.value(obj, node.path);
};
JSONPath.prototype.apply = function (obj, string, fn) {
assert.ok(obj instanceof Object, "obj needs to be an object");
assert.ok(string, "we need a path");
assert.equal(typeof fn, "function", "fn needs to be function");
var nodes = this.nodes(obj, string).sort(function (a, b) {
return b.path.length - a.path.length;
});
nodes.forEach(function (node) {
var key = node.path.pop();
var parent = this.value(obj, this.stringify(node.path));
parent[key] = node.value = fn.call(obj, parent[key]);
}, this);
return nodes;
};
JSONPath.prototype.value = function (obj, path, value) {
assert.ok(obj instanceof Object, "obj needs to be an object");
assert.ok(path, "we need a path");
if (arguments.length >= 3) {
var node = this.nodes(obj, path).shift();
if (!node) return this._vivify(obj, path, value);
var key = node.path.slice(-1).shift();
var parent = this.parent(obj, this.stringify(node.path));
parent[key] = value;
}
return this.query(obj, this.stringify(path), 1).shift();
};
JSONPath.prototype._vivify = function (obj, string, value) {
var self$1 = this;
assert.ok(obj instanceof Object, "obj needs to be an object");
assert.ok(string, "we need a path");
var path = this.parser.parse(string).map(function (component) {
return component.expression.value;
});
var setValue = function (path$1, value$1) {
var key = path$1.pop();
var node = self$1.value(obj, path$1);
if (!node) {
setValue(path$1.concat(), typeof key === "string" ? {} : []);
node = self$1.value(obj, path$1);
}
node[key] = value$1;
};
setValue(path, value);
return this.query(obj, string)[0];
};
JSONPath.prototype.query = function (obj, string, count) {
assert.ok(obj instanceof Object, "obj needs to be an object");
assert.ok(_is_string(string), "we need a path");
return this.nodes(obj, string, count).map(function (r) {
return r.value;
});
};
JSONPath.prototype.paths = function (obj, string, count) {
assert.ok(obj instanceof Object, "obj needs to be an object");
assert.ok(string, "we need a path");
return this.nodes(obj, string, count).map(function (r) {
return r.path;
});
};
JSONPath.prototype.nodes = function (obj, string, count) {
assert.ok(obj instanceof Object, "obj needs to be an object");
assert.ok(string, "we need a path");
if (count === 0) return [];
var path = this.parser.parse(string);
var handlers = this.handlers;
var partials = [{
path: ["$"],
value: obj
}];
var matches = [];
if (path.length && path[0].expression.type == "root") path.shift();
if (!path.length) return partials;
path.forEach(function (component, index) {
if (matches.length >= count) return;
var handler = handlers.resolve(component);
var _partials = [];
partials.forEach(function (p) {
if (matches.length >= count) return;
var results = handler(component, p, count);
if (index == path.length - 1) matches = matches.concat(results || []);else _partials = _partials.concat(results || []);
});
partials = _partials;
});
return count ? matches.slice(0, count) : matches;
};
JSONPath.prototype.stringify = function (path) {
assert.ok(path, "we need a path");
var string = "$";
var templates = {
"descendant-member": "..{{value}}",
"child-member": ".{{value}}",
"descendant-subscript": "..[{{value}}]",
"child-subscript": "[{{value}}]"
};
path = this._normalize(path);
path.forEach(function (component) {
if (component.expression.type == "root") return;
var key = [component.scope, component.operation].join("-");
var template = templates[key];
var value;
if (component.expression.type == "string_literal") value = JSON.stringify(component.expression.value);else value = component.expression.value;
if (!template) throw new Error("couldn't find template " + key);
string += template.replace(/{{value}}/, value);
});
return string;
};
JSONPath.prototype._normalize = function (path) {
assert.ok(path, "we need a path");
if (typeof path == "string") return this.parser.parse(path);else if (Array.isArray(path) && typeof path[0] == "string") {
var _path = [{
expression: {
type: "root",
value: "$"
}
}];
path.forEach(function (component, index) {
if (component == "$" && index === 0) return;
if (typeof component == "string" && component.match("^" + dict.identifier + "$")) _path.push({
operation: "member",
scope: "child",
expression: {
value: component,
type: "identifier"
}
});else {
var type = typeof component == "number" ? "numeric_literal" : "string_literal";
_path.push({
operation: "subscript",
scope: "child",
expression: {
value: component,
type
}
});
}
});
return _path;
} else if (Array.isArray(path) && typeof path[0] == "object") return path;
throw new Error("couldn't understand path " + path);
};
function _is_string(obj) {
return Object.prototype.toString.call(obj) == "[object String]";
}
JSONPath.Handlers = Handlers;
JSONPath.Parser = Parser;
var instance = new JSONPath();
instance.JSONPath = JSONPath;
module$1.exports = instance;
}, {
"./dict": 2,
"./handlers": 4,
"./parser": 6,
"assert": 8
}],
6: [function (require$1, module$1, exports$1) {
var grammar = require$1("./grammar");
var gparser = require$1("../generated/parser");
var Parser = function () {
var parser = new gparser.Parser();
var _parseError = parser.parseError;
parser.yy.parseError = function () {
if (parser.yy.ast) parser.yy.ast.initialize();
_parseError.apply(parser, arguments);
};
return parser;
};
Parser.grammar = grammar;
module$1.exports = Parser;
}, {
"../generated/parser": 1,
"./grammar": 3
}],
7: [function (require$1, module$1, exports$1) {
module$1.exports = function (arr, start, end, step) {
if (typeof start == "string") throw new Error("start cannot be a string");
if (typeof end == "string") throw new Error("end cannot be a string");
if (typeof step == "string") throw new Error("step cannot be a string");
var len = arr.length;
if (step === 0) throw new Error("step cannot be zero");
step = step ? integer(step) : 1;
start = start < 0 ? len + start : start;
end = end < 0 ? len + end : end;
start = integer(start === 0 ? 0 : !start ? step > 0 ? 0 : len - 1 : start);
end = integer(end === 0 ? 0 : !end ? step > 0 ? len : -1 : end);
start = step > 0 ? Math.max(0, start) : Math.min(len, start);
end = step > 0 ? Math.min(end, len) : Math.max(-1, end);
if (step > 0 && end <= start) return [];
if (step < 0 && start <= end) return [];
var result = [];
for (var i = start; i != end; i += step) {
if (step < 0 && i <= end || step > 0 && i >= end) break;
result.push(arr[i]);
}
return result;
};
function integer(val) {
return String(val).match(/^[0-9]+$/) ? parseInt(val) : Number.isFinite(val) ? parseInt(val, 10) : 0;
}
}, {}],
8: [function (require$1, module$1, exports$1) {
var util = require$1("util/");
var pSlice = Array.prototype.slice;
var hasOwn = Object.prototype.hasOwnProperty;
var assert = module$1.exports = ok;
assert.AssertionError = function AssertionError(options) {
this.name = "AssertionError";
this.actual = options.actual;
this.expected = options.expected;
this.operator = options.operator;
if (options.message) {
this.message = options.message;
this.generatedMessage = false;
} else {
this.message = getMessage(this);
this.generatedMessage = true;
}
var stackStartFunction = options.stackStartFunction || fail;
if (Error.captureStackTrace) Error.captureStackTrace(this, stackStartFunction);else {
var err = /* @__PURE__ */new Error();
if (err.stack) {
var out = err.stack;
var fn_name = stackStartFunction.name;
var idx = out.indexOf("\n" + fn_name);
if (idx >= 0) {
var next_line = out.indexOf("\n", idx + 1);
out = out.substring(next_line + 1);
}
this.stack = out;
}
}
};
util.inherits(assert.AssertionError, Error);
function replacer(key, value) {
if (util.isUndefined(value)) return "" + value;
if (util.isNumber(value) && !isFinite(value)) return value.toString();
if (util.isFunction(value) || util.isRegExp(value)) return value.toString();
return value;
}
function truncate(s, n) {
if (util.isString(s)) return s.length < n ? s : s.slice(0, n);else return s;
}
function getMessage(self$1) {
return truncate(JSON.stringify(self$1.actual, replacer), 128) + " " + self$1.operator + " " + truncate(JSON.stringify(self$1.expected, replacer), 128);
}
function fail(actual, expected, message, operator, stackStartFunction) {
throw new assert.AssertionError({
message,
actual,
expected,
operator,
stackStartFunction
});
}
assert.fail = fail;
function ok(value, message) {
if (!value) fail(value, true, message, "==", assert.ok);
}
assert.ok = ok;
assert.equal = function equal(actual, expected, message) {
if (actual != expected) fail(actual, expected, message, "==", assert.equal);
};
assert.notEqual = function notEqual(actual, expected, message) {
if (actual == expected) fail(actual, expected, message, "!=", assert.notEqual);
};
assert.deepEqual = function deepEqual(actual, expected, message) {
if (!_deepEqual(actual, expected)) fail(actual, expected, message, "deepEqual", assert.deepEqual);
};
function _deepEqual(actual, expected) {
if (actual === expected) return true;else if (util.isBuffer(actual) && util.isBuffer(expected)) {
if (actual.length != expected.length) return false;
for (var i = 0; i < actual.length; i++) if (actual[i] !== expected[i]) return false;
return true;
} else if (util.isDate(actual) && util.isDate(expected)) return actual.getTime() === expected.getTime();else if (util.isRegExp(actual) && util.isRegExp(expected)) return actual.source === expected.source && actual.global === expected.global && actual.multiline === expected.multiline && actual.lastIndex === expected.lastIndex && actual.ignoreCase === expected.ignoreCase;else if (!util.isObject(actual) && !util.isObject(expected)) return actual == expected;else return objEquiv(actual, expected);
}
function isArguments(object) {
return Object.prototype.toString.call(object) == "[object Arguments]";
}
function objEquiv(a, b) {
if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) return false;
if (a.prototype !== b.prototype) return false;
if (util.isPrimitive(a) || util.isPrimitive(b)) return a === b;
var aIsArgs = isArguments(a),
bIsArgs = isArguments(b);
if (aIsArgs && !bIsArgs || !aIsArgs && bIsArgs) return false;
if (aIsArgs) {
a = pSlice.call(a);
b = pSlice.call(b);
return _deepEqual(a, b);
}
var ka = objectKeys(a),
kb = objectKeys(b),
key,
i;
if (ka.length != kb.length) return false;
ka.sort();
kb.sort();
for (i = ka.length - 1; i >= 0; i--) if (ka[i] != kb[i]) return false;
for (i = ka.length - 1; i >= 0; i--) {
key = ka[i];
if (!_deepEqual(a[key], b[key])) return false;
}
return true;
}
assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
if (_deepEqual(actual, expected)) fail(actual, expected, message, "notDeepEqual", assert.notDeepEqual);
};
assert.strictEqual = function strictEqual(actual, expected, message) {
if (actual !== expected) fail(actual, expected, message, "===", assert.strictEqual);
};
assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
if (actual === expected) fail(actual, expected, message, "!==", assert.notStrictEqual);
};
function expectedException(actual, expected) {
if (!actual || !expected) return false;
if (Object.prototype.toString.call(expected) == "[object RegExp]") return expected.test(actual);else if (actual instanceof expected) return true;else if (expected.call({}, actual) === true) return true;
return false;
}
function _throws(shouldThrow, block, expected, message) {
var actual;
if (util.isString(expected)) {
message = expected;
expected = null;
}
try {
block();
} catch (e) {
actual = e;
}
message = (expected && expected.name ? " (" + expected.name + ")." : ".") + (message ? " " + message : ".");
if (shouldThrow && !actual) fail(actual, expected, "Missing expected exception" + message);
if (!shouldThrow && expectedException(actual, expected)) fail(actual, expected, "Got unwanted exception" + message);
if (shouldThrow && actual && expected && !expectedException(actual, expected) || !shouldThrow && actual) throw actual;
}
assert.throws = function (block, error, message) {
_throws.apply(this, [true].concat(pSlice.call(arguments)));
};
assert.doesNotThrow = function (block, message) {
_throws.apply(this, [false].concat(pSlice.call(arguments)));
};
assert.ifError = function (err) {
if (err) throw err;
};
var objectKeys = Object.keys || function (obj) {
var keys = [];
for (var key in obj) if (hasOwn.call(obj, key)) keys.push(key);
return keys;
};
}, {
"util/": 11
}],
9: [function (require$1, module$1, exports$1) {
if (typeof Object.create === "function") module$1.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor;
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
});
};else module$1.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
};
}, {}],
10: [function (require$1, module$1, exports$1) {
module$1.exports = function isBuffer(arg) {
return arg && typeof arg === "object" && typeof arg.copy === "function" && typeof arg.fill === "function" && typeof arg.readUInt8 === "function";
};
}, {}],
11: [function (require$1, module$1, exports$1) {
(function (process, global$1) {
var formatRegExp = /%[sdj%]/g;
exports$1.format = function (f) {
if (!isString(f)) {
var objects = [];
for (var i = 0; i < arguments.length; i++) objects.push(inspect(arguments[i]));
return objects.join(" ");
}
var i = 1;
var args = arguments;
var len = args.length;
var str = String(f).replace(formatRegExp, function (x$1) {
if (x$1 === "%%") return "%";
if (i >= len) return x$1;
switch (x$1) {
case "%s":
return String(args[i++]);
case "%d":
return Number(args[i++]);
case "%j":
try {
return JSON.stringify(args[i++]);
} catch (_) {
return "[Circular]";
}
default:
return x$1;
}
});
for (var x = args[i]; i < len; x = args[++i]) if (isNull(x) || !isObject(x)) str += " " + x;else str += " " + inspect(x);
return str;
};
exports$1.deprecate = function (fn, msg) {
if (isUndefined(global$1.process)) return function () {
return exports$1.deprecate(fn, msg).apply(this, arguments);
};
if (process.noDeprecation === true) return fn;
var warned = false;
function deprecated() {
if (!warned) {
if (process.throwDeprecation) throw new Error(msg);else if (process.traceDeprecation) console.trace(msg);else console.error(msg);
warned = true;
}
return fn.apply(this, arguments);
}
return deprecated;
};
var debugs = {};
var debugEnviron;
exports$1.debuglog = function (set) {
if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || "";
set = set.toUpperCase();
if (!debugs[set]) if (new RegExp("\\b" + set + "\\b", "i").test(debugEnviron)) {
var pid = process.pid;
debugs[set] = function () {
var msg = exports$1.format.apply(exports$1, arguments);
console.error("%s %d: %s", set, pid, msg);
};
} else debugs[set] = function () {};
return debugs[set];
};
/**
* Echos the value of a value. Trys to print the value out
* in the best way possible given the different types.
*
* @param {Object} obj The object to print out.
* @param {Object} opts Optional options object that alters the output.
*/
function inspect(obj, opts) {
var ctx = {
seen: [],
stylize: stylizeNoColor
};
if (arguments.length >= 3) ctx.depth = arguments[2];
if (arguments.length >= 4) ctx.colors = arguments[3];
if (isBoolean(opts)) ctx.showHidden = opts;else if (opts) exports$1._extend(ctx, opts);
if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
if (isUndefined(ctx.depth)) ctx.depth = 2;
if (isUndefined(ctx.colors)) ctx.colors = false;
if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
if (ctx.colors) ctx.stylize = stylizeWithColor;
return formatValue(ctx, obj, ctx.depth);
}
exports$1.inspect = inspect;
inspect.colors = {
"bold": [1, 22],
"italic": [3, 23],
"underline": [4, 24],
"inverse": [7, 27],
"white": [37, 39],
"grey": [90, 39],
"black": [30, 39],
"blue": [34, 39],
"cyan": [36, 39],
"green": [32, 39],
"magenta": [35, 39],
"red": [31, 39],
"yellow": [33, 39]
};
inspect.styles = {
"special": "cyan",
"number": "yellow",
"boolean": "yellow",
"undefined": "grey",
"null": "bold",
"string": "green",
"date": "magenta",
"regexp": "red"
};
function stylizeWithColor(str, styleType) {
var style = inspect.styles[styleType];
if (style) return "\x1B[" + inspect.colors[style][0] + "m" + str + "\x1B[" + inspect.colors[style][1] + "m";else return str;
}
function stylizeNoColor(str, styleType) {
return str;
}
function arrayToHash(array) {
var hash = {};
array.forEach(function (val, idx) {
hash[val] = true;
});
return hash;
}
function formatValue(ctx, value, recurseTimes) {
if (ctx.customInspect && value && isFunction(value.inspect) && value.inspect !== exports$1.inspect && !(value.constructor && value.constructor.prototype === value)) {
var ret = value.inspect(recurseTimes, ctx);
if (!isString(ret)) ret = formatValue(ctx, ret, recurseTimes);
return ret;
}
var primitive = formatPrimitive(ctx, value);
if (primitive) return primitive;
var keys = Object.keys(value);
var visibleKeys = arrayToHash(keys);
if (ctx.showHidden) keys = Object.getOwnPropertyNames(value);
if (isError(value) && (keys.indexOf("message") >= 0 || keys.indexOf("description") >= 0)) return formatError(value);
if (keys.length === 0) {
if (isFunction(value)) {
var name = value.name ? ": " + value.name : "";
return ctx.stylize("[Function" + name + "]", "special");
}
if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), "regexp");
if (isDate(value)) return ctx.stylize(Date.prototype.toString.call(value), "date");
if (isError(value)) return formatError(value);
}
var base = "",
array = false,
braces = ["{", "}"];
if (isArray(value)) {
array = true;
braces = ["[", "]"];
}
if (isFunction(value)) base = " [Function" + (value.name ? ": " + value.name : "") + "]";
if (isRegExp(value)) base = " " + RegExp.prototype.toString.call(value);
if (isDate(value)) base = " " + Date.prototype.toUTCString.call(value);
if (isError(value)) base = " " + formatError(value);
if (keys.length === 0 && (!array || value.length == 0)) return braces[0] + base + braces[1];
if (recurseTimes < 0) if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), "regexp");else return ctx.stylize("[Object]", "special");
ctx.seen.push(value);
var output;
if (array) output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);else output = keys.map(function (key) {
return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
});
ctx.seen.pop();
return reduceToSingleString(output, base, braces);
}
function formatPrimitive(ctx, value) {
if (isUndefined(value)) return ctx.stylize("undefined", "undefined");
if (isString(value)) {
var simple = "'" + JSON.stringify(value).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, "\"") + "'";
return ctx.stylize(simple, "string");
}
if (isNumber(value)) return ctx.stylize("" + value, "number");
if (isBoolean(value)) return ctx.stylize("" + value, "boolean");
if (isNull(value)) return ctx.stylize("null", "null");
}
function formatError(value) {
return "[" + Error.prototype.toString.call(value) + "]";
}
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
var output = [];
for (var i = 0, l = value.length; i < l; ++i) if (hasOwnProperty(value, String(i))) output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));else output.push("");
keys.forEach(function (key) {
if (!key.match(/^\d+$/)) output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));
});
return output;
}
function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
var name,
str,
desc = Object.getOwnPropertyDescriptor(value, key) || {
value: value[key]
};
if (desc.get) {
if (desc.set) str = ctx.stylize("[Getter/Setter]", "special");else str = ctx.stylize("[Getter]", "special");
} else if (desc.set) str = ctx.stylize("[Setter]", "special");
if (!hasOwnProperty(visibleKeys, key)) name = "[" + key + "]";
if (!str) if (ctx.seen.indexOf(desc.value) < 0) {
if (isNull(recurseTimes)) str = formatValue(ctx, desc.value, null);else str = formatValue(ctx, desc.value, recurseTimes - 1);
if (str.indexOf("\n") > -1) if (array) str = str.split("\n").map(function (line) {
return " " + line;
}).join("\n").substr(2);else str = "\n" + str.split("\n").map(function (line) {
return " " + line;
}).join("\n");
} else str = ctx.stylize("[Circular]", "special");
if (isUndefined(name)) {
if (array && key.match(/^\d+$/)) return str;
name = JSON.stringify("" + key);
if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
name = name.substr(1, name.length - 2);
name = ctx.stylize(name, "name");
} else {
name = name.replace(/'/g, "\\'").replace(/\\"/g, "\"").replace(/(^"|"$)/g, "'");
name = ctx.stylize(name, "string");
}
}
return name + ": " + str;
}
function reduceToSingleString(output, base, braces) {
var numLinesEst = 0;
if (output.reduce(function (prev, cur) {
numLinesEst++;
if (cur.indexOf("\n") >= 0) numLinesEst++;
return prev + cur.replace(/\u001b\[\d\d?m/g, "").length + 1;
}, 0) > 60) return braces[0] + (base === "" ? "" : base + "\n ") + " " + output.join(",\n ") + " " + braces[1];
return braces[0] + base + " " + output.join(", ") + " " + braces[1];
}
function isArray(ar) {
return Array.isArray(ar);
}
exports$1.isArray = isArray;
function isBoolean(arg) {
return typeof arg === "boolean";
}
exports$1.isBoolean = isBoolean;
function isNull(arg) {
return arg === null;
}
exports$1.isNull = isNull;
function isNullOrUndefined(arg) {
return arg == null;
}
exports$1.isNullOrUndefined = isNullOrUndefined;
function isNumber(arg) {
return typeof arg === "number";
}
exports$1.isNumber = isNumber;
function isString(arg) {
return typeof arg === "string";
}
exports$1.isString = isString;
function isSymbol(arg) {
return typeof arg === "symbol";
}
exports$1.isSymbol = isSymbol;
function isUndefined(arg) {
return arg === void 0;
}
exports$1.isUndefined = isUndefined;
function isRegExp(re) {
return isObject(re) && objectToString(re) === "[object RegExp]";
}
exports$1.isRegExp = isRegExp;
function isObject(arg) {
return typeof arg === "object" && arg !== null;
}
exports$1.isObject = isObject;
function isDate(d) {
return isObject(d) && objectToString(d) === "[object Date]";
}
exports$1.isDate = isDate;
function isError(e) {
return isObject(e) && (objectToString(e) === "[object Error]" || e instanceof Error);
}
exports$1.isError = isError;
function isFunction(arg) {
return typeof arg === "function";
}
exports$1.isFunction = isFunction;
function isPrimitive(arg) {
return arg === null || typeof arg === "boolean" || typeof arg === "number" || typeof arg === "string" || typeof arg === "symbol" || typeof arg === "undefined";
}
exports$1.isPrimitive = isPrimitive;
exports$1.isBuffer = require$1("./support/isBuffer");
function objectToString(o) {
return Object.prototype.toString.call(o);
}
function pad(n) {
return n < 10 ? "0" + n.toString(10) : n.toString(10);
}
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
function timestamp() {
var d = /* @__PURE__ */new Date();
var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(":");
return [d.getDate(), months[d.getMonth()], time].join(" ");
}
exports$1.log = function () {
console.log("%s - %s", timestamp(), exports$1.format.apply(exports$1, arguments));
};
/**
* Inherit the prototype methods from one constructor into another.
*
* The Function.prototype.inherits from lang.js rewritten as a standalone
* function (not on Function.prototype). NOTE: If this file is to be loaded
* during bootstrapping this function needs to be rewritten using some native
* functions as prototype setup using normal JavaScript does not work as
* expected during bootstrapping (see mirror.js in r114903).
*
* @param {function} ctor Constructor function which needs to inherit the
* prototype.
* @param {function} superCtor Constructor function to inherit prototype from.
*/
exports$1.inherits = require$1("inherits");
exports$1._extend = function (origin, add) {
if (!add || !isObject(add)) return origin;
var keys = Object.keys(add);
var i = keys.length;
while (i--) origin[keys[i]] = add[keys[i]];
return origin;
};
function hasOwnProperty(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
}).call(this, require$1("_process"), typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
}, {
"./support/isBuffer": 10,
"_process": 14,
"inherits": 9
}],
12: [function (require$1, module$1, exports$1) {}, {}],
13: [function (require$1, module$1, exports$1) {
(function (process) {
function normalizeArray(parts, allowAboveRoot) {
var up = 0;
for (var i = parts.length - 1; i >= 0; i--) {
var last = parts[i];
if (last === ".") parts.splice(i, 1);else if (last === "..") {
parts.splice(i, 1);
up++;
} else if (up) {
parts.splice(i, 1);
up--;
}
}
if (allowAboveRoot) for (; up--;) parts.unshift("..");
return parts;
}
exports$1.resolve = function () {
var resolvedPath = "",
resolvedAbsolute = false;
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
var path = i >= 0 ? arguments[i] : process.cwd();
if (typeof path !== "string") throw new TypeError("Arguments to path.resolve must be strings");else if (!path) continue;
resolvedPath = path + "/" + resolvedPath;
resolvedAbsolute = path.charAt(0) === "/";
}
resolvedPath = normalizeArray(filter(resolvedPath.split("/"), function (p) {
return !!p;
}), !resolvedAbsolute).join("/");
return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";
};
exports$1.normalize = function (path) {
var isAbsolute = exports$1.isAbsolute(path),
trailingSlash = substr(path, -1) === "/";
path = normalizeArray(filter(path.split("/"), function (p) {
return !!p;
}), !isAbsolute).join("/");
if (!path && !isAbsolute) path = ".";
if (path && trailingSlash) path += "/";
return (isAbsolute ? "/" : "") + path;
};
exports$1.isAbsolute = function (path) {
return path.charAt(0) === "/";
};
exports$1.join = function () {
var paths = Array.prototype.slice.call(arguments, 0);
return exports$1.normalize(filter(paths, function (p, index) {
if (typeof p !== "string") throw new TypeError("Arguments to path.join must be strings");
return p;
}).join("/"));
};
exports$1.relative = function (from, to) {
from = exports$1.resolve(from).substr(1);
to = exports$1.resolve(to).substr(1);
function trim(arr) {
var start = 0;
for (; start < arr.length; start++) if (arr[start] !== "") break;
var end = arr.length - 1;
for (; end >= 0; end--) if (arr[end] !== "") break;
if (start > end) return [];
return arr.slice(start, end - start + 1);
}
var fromParts = trim(from.split("/"));
var toParts = trim(to.split("/"));
var length = Math.min(fromParts.length, toParts.length);
var samePartsLength = length;
for (var i = 0; i < length; i++) if (fromParts[i] !== toParts[i]) {
samePartsLength = i;
break;
}
var outputParts = [];
for (var i = samePartsLength; i < fromParts.length; i++) outputParts.push("..");
outputParts = outputParts.concat(toParts.slice(samePartsLength));
return outputParts.join("/");
};
exports$1.sep = "/";
exports$1.delimiter = ":";
exports$1.dirname = function (path) {
if (typeof path !== "string") path = path + "";
if (path.length === 0) return ".";
var code = path.charCodeAt(0);
var hasRoot = code === 47;
var end = -1;
var matchedSlash = true;
for (var i = path.length - 1; i >= 1; --i) {
code = path.charCodeAt(i);
if (code === 47) {
if (!matchedSlash) {
end = i;
break;
}
} else matchedSlash = false;
}
if (end === -1) return hasRoot ? "/" : ".";
if (hasRoot && end === 1) return "/";
return path.slice(0, end);
};
function basename(path) {
if (typeof path !== "string") path = path + "";
var start = 0;
var end = -1;
var matchedSlash = true;
var i;
for (i = path.length - 1; i >= 0; --i) if (path.charCodeAt(i) === 47) {
if (!matchedSlash) {
start = i + 1;
break;
}
} else if (end === -1) {
matchedSlash = false;
end = i + 1;
}
if (end === -1) return "";
return path.slice(start, end);
}
exports$1.basename = function (path, ext) {
var f = basename(path);
if (ext && f.substr(-1 * ext.length) === ext) f = f.substr(0, f.length - ext.length);
return f;
};
exports$1.extname = function (path) {
if (typeof path !== "string") path = path + "";
var startDot = -1;
var startPart = 0;
var end = -1;
var matchedSlash = true;
var preDotState = 0;
for (var i = path.length - 1; i >= 0; --i) {
var code = path.charCodeAt(i);
if (code === 47) {
if (!matchedSlash) {
startPart = i + 1;
break;
}
continue;
}
if (end === -1) {
matchedSlash = false;
end = i + 1;
}
if (code === 46) {
if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;
} else if (startDot !== -1) preDotState = -1;
}
if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) return "";
return path.slice(startDot, end);
};
function filter(xs, f) {
if (xs.filter) return xs.filter(f);
var res = [];
for (var i = 0; i < xs.length; i++) if (f(xs[i], i, xs)) res.push(xs[i]);
return res;
}
var substr = "ab".substr(-1) === "b" ? function (str, start, len) {
return str.substr(start, len);
} : function (str, start, len) {
if (start < 0) start = str.length + start;
return str.substr(start, len);
};
}).call(this, require$1("_process"));
}, {
"_process": 14
}],
14: [function (require$1, module$1, exports$1) {
var process = module$1.exports = {};
var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
throw new Error("setTimeout has not been defined");
}
function defaultClearTimeout() {
throw new Error("clearTimeout has not been defined");
}
(function () {
try {
if (typeof setTimeout === "function") cachedSetTimeout = setTimeout;else cachedSetTimeout = defaultSetTimout;
} catch (e) {
cachedSetTimeout = defaultSetTimout;
}
try {
if (typeof clearTimeout === "function") cachedClearTimeout = clearTimeout;else cachedClearTimeout = defaultClearTimeout;
} catch (e) {
cachedClearTimeout = defaultClearTimeout;
}
})();
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) return setTimeout(fun, 0);
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
return cachedSetTimeout(fun, 0);
} catch (e) {
try {
return cachedSetTimeout.call(null, fun, 0);
} catch (e$1) {
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) return clearTimeout(marker);
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
return cachedClearTimeout(marker);
} catch (e) {
try {
return cachedClearTimeout.call(null, marker);
} catch (e$1) {
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) return;
draining = false;
if (currentQueue.length) queue = currentQueue.concat(queue);else queueIndex = -1;
if (queue.length) drainQueue();
}
function drainQueue() {
if (draining) return;
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while (len) {
currentQueue = queue;
queue = [];
while (++queueIndex < len) if (currentQueue) currentQueue[queueIndex].run();
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);
}
process.nextTick = function (fun) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) for (var i = 1; i < arguments.length; i++) args[i - 1] = arguments[i];
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) runTimeout(drainQueue);
};
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
this.fun.apply(null, this.array);
};
process.title = "browser";
process.browser = true;
process.env = {};
process.argv = [];
process.version = "";
process.versions = {};
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;
process.listeners = function (name) {
return [];
};
process.binding = function (name) {
throw new Error("process.binding is not supported");
};
process.cwd = function () {
return "/";
};
process.chdir = function (dir) {
throw new Error("process.chdir is not supported");
};
process.umask = function () {
return 0;
};
}, {}],
15: [function (require$1, module$1, exports$1) {
var unparse = require$1("escodegen").generate;
module$1.exports = function (ast, vars) {
if (!vars) vars = {};
var FAIL = {};
var result = function walk(node, scopeVars) {
if (node.type === "Literal") return node.value;else if (node.type === "UnaryExpression") {
var val = walk(node.argument);
if (node.operator === "+") return +val;
if (node.operator === "-") return -val;
if (node.operator === "~") return ~val;
if (node.operator === "!") return !val;
return FAIL;
} else if (node.type === "ArrayExpression") {
var xs = [];
for (var i = 0, l = node.elements.length; i < l; i++) {
var x = walk(node.elements[i]);
if (x === FAIL) return FAIL;
xs.push(x);
}
return xs;
} else if (node.type === "ObjectExpression") {
var obj = {};
for (var i = 0; i < node.properties.length; i++) {
var prop = node.properties[i];
var value = prop.value === null ? prop.value : walk(prop.value);
if (value === FAIL) return FAIL;
obj[prop.key.value || prop.key.name] = value;
}
return obj;
} else if (node.type === "BinaryExpression" || node.type === "LogicalExpression") {
var l = walk(node.left);
if (l === FAIL) return FAIL;
var r = walk(node.right);
if (r === FAIL) return FAIL;
var op = node.operator;
if (op === "==") return l == r;
if (op === "===") return l === r;
if (op === "!=") return l != r;
if (op === "!==") return l !== r;
if (op === "+") return l + r;
if (op === "-") return l - r;
if (op === "*") return l * r;
if (op === "/") return l / r;
if (op === "%") return l % r;
if (op === "<") return l < r;
if (op === "<=") return l <= r;
if (op === ">") return l > r;
if (op === ">=") return l >= r;
if (op === "|") return l | r;
if (op === "&") return l & r;
if (op === "^") return l ^ r;
if (op === "&&") return l && r;
if (op === "||") return l || r;
return FAIL;
} else if (node.type === "Identifier") {
if ({}.hasOwnProperty.call(vars, node.name)) return vars[node.name];else return FAIL;
} else if (node.type === "ThisExpression") {
if ({}.hasOwnProperty.call(vars, "this")) return vars["this"];else return FAIL;
} else if (node.type === "CallExpression") {
var callee = walk(node.callee);
if (callee === FAIL) return FAIL;
if (typeof callee !== "function") return FAIL;
var ctx = node.callee.object ? walk(node.callee.object) : FAIL;
if (ctx === FAIL) ctx = null;
var args = [];
for (var i = 0, l = node.arguments.length; i < l; i++) {
var x = walk(node.arguments[i]);
if (x === FAIL) return FAIL;
args.push(x);
}
return callee.apply(ctx, args);
} else if (node.type === "MemberExpression") {
var obj = walk(node.object);
if (obj === FAIL || typeof obj == "function") return FAIL;
if (node.property.type === "Identifier") return obj[node.property.name];
var prop = walk(node.property);
if (prop === FAIL) return FAIL;
return obj[prop];
} else if (node.type === "ConditionalExpression") {
var val = walk(node.test);
if (val === FAIL) return FAIL;
return val ? walk(node.consequent) : walk(node.alternate);
} else if (node.type === "ExpressionStatement") {
var val = walk(node.expression);
if (val === FAIL) return FAIL;
return val;
} else if (node.type === "ReturnStatement") return walk(node.argument);else if (node.type === "FunctionExpression") {
var bodies = node.body.body;
var oldVars = {};
Object.keys(vars).forEach(function (element) {
oldVars[element] = vars[element];
});
for (var i = 0; i < node.params.length; i++) {
var key = node.params[i];
if (key.type == "Identifier") vars[key.name] = null;else return FAIL;
}
for (var i in bodies) if (walk(bodies[i]) === FAIL) return FAIL;
vars = oldVars;
var keys = Object.keys(vars);
var vals = keys.map(function (key$1) {
return vars[key$1];
});
return Function(keys.join(", "), "return " + unparse(node)).apply(null, vals);
} else if (node.type === "TemplateLiteral") {
var str = "";
for (var i = 0; i < node.expressions.length; i++) {
str += walk(node.quasis[i]);
str += walk(node.expressions[i]);
}
str += walk(node.quasis[i]);
return str;
} else if (node.type === "TaggedTemplateExpression") {
var tag = walk(node.tag);
var quasi = node.quasi;
var strings = quasi.quasis.map(walk);
var values = quasi.expressions.map(walk);
return tag.apply(null, [strings].concat(values));
} else if (node.type === "TemplateElement") return node.value.cooked;else return FAIL;
}(ast);
return result === FAIL ? void 0 : result;
};
}, {
"escodegen": 12
}],
"jsonpath": [function (require$1, module$1, exports$1) {
module$1.exports = require$1("./lib/index");
}, {
"./lib/index": 5
}]
}, {}, ["jsonpath"])("jsonpath");
});
}
}); //#endregion
//#region src/features/ndv/runData/components/RunDataJsonActions.vue?vue&type=script&setup=true&lang.ts
import_jsonpath = /* @__PURE__ */__toESM(require_jsonpath());
_hoisted_1 = {
class: "el-dropdown-link"
};
RunDataJsonActions_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
__name: "RunDataJsonActions",
props: {
node: {},
paneType: {},
pushRef: {},
distanceFromActive: {},
selectedJsonPath: {
default: nonExistingJsonPath
},
jsonData: {},
outputIndex: {},
runIndex: {}
},
setup(__props) {
const props = __props;
const popOutWindow = inject(PopOutWindowKey, ref());
const isInPopOutWindow = computed(() => popOutWindow?.value !== void 0);
const ndvStore = useNDVStore();
const workflowsStore = useWorkflowsStore();
const clipboard = useClipboard();
const i18n = useI18n();
const nodeHelpers = useNodeHelpers();
const {
activeNode
} = ndvStore;
const pinnedData = usePinnedData(activeNode);
const {
showToast
} = useToast();
const telemetry = useTelemetry();
const route = useRoute();
const isReadOnlyRoute = computed(() => {
return route?.meta?.readOnlyCanvas === true;
});
const noSelection = computed(() => {
return props.selectedJsonPath === nonExistingJsonPath;
});
const normalisedJsonPath = computed(() => {
return noSelection.value ? "[\"\"]" : props.selectedJsonPath;
});
function getJsonValue() {
let selectedValue;
if (noSelection.value) {
const inExecutionsFrame = window !== window.parent && window.parent.location.pathname.includes("/executions");
if (pinnedData.hasData.value && !inExecutionsFrame) selectedValue = clearJsonKey(pinnedData.data.value);else selectedValue = executionDataToJson(nodeHelpers.getNodeInputData(props.node, props.runIndex, props.outputIndex));
} else {
const jsonPath = normalisedJsonPath.value.startsWith("$") ? normalisedJsonPath.value : `$${normalisedJsonPath.value}`;
selectedValue = import_jsonpath.default.query(props.jsonData, jsonPath)[0];
}
let value = "";
if (typeof selectedValue === "object") value = JSON.stringify(selectedValue, null, 2);else value = selectedValue.toString();
return value;
}
function getJsonItemPath() {
const newPath = convertPath(normalisedJsonPath.value);
let startPath = "";
let path = "";
const pathParts = newPath.split("]");
const index = pathParts[0].slice(1);
path = pathParts.slice(1).join("]");
startPath = `$item(${index}).$node["${props.node.name}"].json`;
return {
path,
startPath
};
}
function getJsonParameterPath() {
const path = convertPath(normalisedJsonPath.value).split("]").slice(1).join("]");
let startPath = `$node["${props.node.name}"].json`;
if (props.distanceFromActive === 1) startPath = "$json";
return {
path,
startPath
};
}
function handleCopyClick(commandData) {
let value;
if (commandData.command === "value") {
value = getJsonValue();
showToast({
title: i18n.baseText("runData.copyValue.toast"),
message: "",
type: "success",
duration: 2e3
});
} else {
let startPath = "";
let path = "";
if (commandData.command === "itemPath") {
const jsonItemPath = getJsonItemPath();
startPath = jsonItemPath.startPath;
path = jsonItemPath.path;
showToast({
title: i18n.baseText("runData.copyItemPath.toast"),
message: "",
type: "success",
duration: 2e3
});
} else if (commandData.command === "parameterPath") {
const jsonParameterPath = getJsonParameterPath();
startPath = jsonParameterPath.startPath;
path = jsonParameterPath.path;
showToast({
title: i18n.baseText("runData.copyParameterPath.toast"),
message: "",
type: "success",
duration: 2e3
});
}
if (!path.startsWith("[") && !path.startsWith(".") && path) path += ".";
value = `{{ ${startPath + path} }}`;
}
const copyType = {
value: "selection",
itemPath: "item_path",
parameterPath: "parameter_path"
}[commandData.command];
telemetry.track("User copied ndv data", {
node_type: activeNode?.type,
push_ref: props.pushRef,
run_index: props.runIndex,
view: "json",
copy_type: copyType,
workflow_id: workflowsStore.workflowId,
pane: props.paneType,
in_execution_log: isReadOnlyRoute.value
});
clipboard.copy(value);
}
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass(_ctx.$style.actionsGroup),
"data-test-id": "ndv-json-actions"
}, [noSelection.value ? (openBlock(), createBlock(unref(N8nIconButton_default), {
key: 0,
title: unref(i18n).baseText("runData.copyToClipboard"),
icon: "files",
type: "tertiary",
circle: false,
onClick: _cache[0] || (_cache[0] = $event => handleCopyClick({
command: "value"
}))
}, null, 8, ["title"])) : (openBlock(), createBlock(unref(ElDropdown), {
key: 1,
trigger: "click",
teleported: !isInPopOutWindow.value,
onCommand: handleCopyClick
}, {
dropdown: withCtx(() => [createVNode(unref(ElDropdownMenu), null, {
default: withCtx(() => [createVNode(unref(ElDropdownItem), {
command: {
command: "value"
}
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("runData.copyValue")), 1)]),
_: 1
}), createVNode(unref(ElDropdownItem), {
command: {
command: "itemPath"
},
divided: ""
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("runData.copyItemPath")), 1)]),
_: 1
}), createVNode(unref(ElDropdownItem), {
command: {
command: "parameterPath"
}
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("runData.copyParameterPath")), 1)]),
_: 1
})]),
_: 1
})]),
default: withCtx(() => [createBaseVNode("span", _hoisted_1, [createVNode(unref(N8nIconButton_default), {
title: unref(i18n).baseText("runData.copyToClipboard"),
icon: "files",
type: "tertiary",
circle: false
}, null, 8, ["title"])])]),
_: 1
}, 8, ["teleported"]))], 2);
};
}
}); //#endregion
//#region src/features/ndv/runData/components/RunDataJsonActions.vue?vue&type=style&index=0&lang.module.scss
actionsGroup = "_actionsGroup_q5z7w_123";
RunDataJsonActions_vue_vue_type_style_index_0_lang_module_default = {
actionsGroup
}; //#endregion
//#region src/features/ndv/runData/components/RunDataJsonActions.vue
cssModules = {
"$style": RunDataJsonActions_vue_vue_type_style_index_0_lang_module_default
};
_export("default", RunDataJsonActions_default = /* @__PURE__ */__plugin_vue_export_helper_default(RunDataJsonActions_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules]])); //#endregion
}
};
});
})();