{"version":3,"file":"JsonPath.min.js","sources":["EncompassWebServices/Controls/JsonPath.js"],"sourcesContent":["\"use strict\";\r\n\r\n(function (EWS) {\r\n const JsonPath = function (options) {\r\n options = Object.assign({}, {\r\n data: {},\r\n resultType: \"VALUE\",\r\n keepHistory: true,\r\n onFound(_path, _value) { },\r\n onNormalize(_expression) { },\r\n onTrace(_expression, _value, _path) { },\r\n onWalk(_loc, _expression, _value, _path, _func) { }\r\n }, options);\r\n\r\n const P = {\r\n result: [],\r\n\r\n normalize(expr) {\r\n options.onNormalize(expr);\r\n\r\n const subx = [];\r\n\r\n return expr.replace(/[['](\\??\\(.*?\\))[\\]']|\\['(.*?)'\\]/g, ($0, $1, $2) => `[#${subx.push($1 || $2) - 1}]`).replace(/'?\\.'?|\\['?/g, \";\").replace(/;;;|;;/g, \";..;\").replace(/;$|'?\\]|'$/g, \"\")\r\n .replace(/#([0-9]+)/g, ($0, $1) => subx[$1]);\r\n },\r\n\r\n asPath(path) {\r\n const x = path.split(\";\");\r\n let p = \"$\";\r\n\r\n for (let i = 1, n = x.length; i < n; i++) {\r\n p += /^[0-9*]+$/.test(x[i]) ? (`[${x[i]}]`) : (`['${x[i]}']`);\r\n }\r\n\r\n return p;\r\n },\r\n\r\n store(p, v) {\r\n options.onFound(p, v);\r\n\r\n if (p) {\r\n switch (options.resultType) {\r\n case \"PATH\":\r\n P.result[P.result.length] = P.asPath(p);\r\n break;\r\n\r\n case \"BOTH\":\r\n P.result[P.result.length] = {\r\n path: P.asPath(p),\r\n value: v,\r\n query: p\r\n };\r\n\r\n break;\r\n\r\n default:\r\n case \"VALUE\":\r\n P.result[P.result.length] = v;\r\n break;\r\n }\r\n }\r\n\r\n return !!p;\r\n },\r\n\r\n trace(expr, val, path) {\r\n options.onTrace(expr, val, path);\r\n\r\n if (expr !== \"\") {\r\n let x = expr.split(\";\");\r\n const loc = x.shift();\r\n\r\n x = x.join(\";\");\r\n\r\n if (val && Object.prototype.hasOwnProperty.call(val, loc)) {\r\n P.trace(x, val[loc], `${path};${loc}`);\r\n } else if (loc === \"*\") {\r\n P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n P.trace(`${m};${z}`, v, p);\r\n });\r\n } else if (loc === \"..\") {\r\n P.trace(x, val, path);\r\n\r\n P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n typeof v[m] === \"object\" && P.trace(`..;${z}`, v[m], `${p};${m}`);\r\n });\r\n } else if (/^\\(.*?\\)$/.test(loc)) {\r\n P.trace(`${P.eval(loc, val, path.substr(path.lastIndexOf(\";\") + 1))};${x}`, val, path);\r\n } else if (/^\\?\\(.*?\\)$/.test(loc)) {\r\n P.walk(loc, x, val, path, (m, l, z, v, p) => {\r\n if (P.eval(l.replace(/^\\?\\((.*?)\\)$/, \"$1\"), v instanceof Array ? v[m] : v, m)) {\r\n P.trace(`${m};${z}`, v, p);\r\n }\r\n });\r\n } else if (/^(-?[0-9]*):(-?[0-9]*):?([0-9]*)$/.test(loc)) {\r\n P.slice(loc, x, val, path);\r\n } else if (/,/.test(loc)) {\r\n for (let s = loc.split(/'?,'?/), i = 0, n = s.length; i < n; i++) {\r\n P.trace(`${s[i]};${x}`, val, path);\r\n }\r\n }\r\n } else {\r\n P.store(path, val);\r\n }\r\n },\r\n\r\n walk(loc, expr, val, path, f) {\r\n if (val instanceof Array) {\r\n for (let i = 0, n = val.length; i < n; i++) {\r\n if (i in val) {\r\n f(i, loc, expr, val, path);\r\n }\r\n }\r\n } else if (typeof val === \"object\") {\r\n const keyArr = Object.keys(val);\r\n for (let i = 0; i < keyArr.length; i++) {\r\n const m = keyArr[i];\r\n if (Object.prototype.hasOwnProperty.call(val, m)) {\r\n f(m, loc, expr, val, path);\r\n }\r\n }\r\n }\r\n },\r\n\r\n slice(loc, expr, val, path) {\r\n if (val instanceof Array) {\r\n const len = val.length;\r\n let start = 0;\r\n let end = len;\r\n let step = 1;\r\n\r\n loc.replace(/^(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)$/g, ($0, $1, $2, $3) => {\r\n start = parseInt($1 || start);\r\n end = parseInt($2 || end);\r\n step = parseInt($3 || step);\r\n });\r\n\r\n start = (start < 0) ? Math.max(0, start + len) : Math.min(len, start);\r\n end = (end < 0) ? Math.max(0, end + len) : Math.min(len, end);\r\n\r\n for (let i = start; i < end; i += step) {\r\n P.trace(`${i};${expr}`, val, path);\r\n }\r\n }\r\n },\r\n\r\n eval(x, _v, _vname) {\r\n try {\r\n return _v && eval(x.replace(/(^|[^\\\\])@/g, \"$1_v\").replace(/\\\\@/g, \"@\"));\r\n } catch (e) {\r\n throw new SyntaxError(`jsonPath: ${e.message}: ${x.replace(/(^|[^\\\\])@/g, \"$1_v\").replace(/\\\\@/g, \"@\")}`);\r\n }\r\n },\r\n\r\n query(expression) {\r\n if (!options.keepHistory) {\r\n P.result = [];\r\n }\r\n\r\n if (expression) {\r\n P.trace(P.normalize(expression).replace(/^\\$;?/, \"\"), options.data, \"$\");\r\n return P.result.length ? P.result : false;\r\n }\r\n return null;\r\n }\r\n };\r\n\r\n return P;\r\n };\r\n\r\n EWS.Json = {\r\n Escape(value) {\r\n value = value.replace(/\\(/g, \"\");\r\n value = value.replace(/\\)/g, \"\");\r\n value = value.replace(/\\//g, \"\");\r\n value = value.replace(/\\\\/g, \"\");\r\n value = value.replace(/\\+/g, \"\");\r\n value = value.replace(/-/g, \"\");\r\n value = value.replace(/([.^$*'?()[{\\\\|])/g, \"\\\\$1\");\r\n\r\n return value;\r\n },\r\n\r\n Query(data, expression) {\r\n return JsonPath({\r\n data\r\n }).query(expression);\r\n }\r\n };\r\n}(EWS));\r\n"],"names":["EWS","JsonPath","options","Object","assign","data","resultType","keepHistory","onFound","_path","_value","onNormalize","_expression","onTrace","onWalk","_loc","_func","P","result","normalize","expr","subx","replace","$0","$1","$2","push","asPath","path","x","split","let","p","i","n","length","test","store","v","value","query","trace","val","loc","shift","join","prototype","hasOwnProperty","call","walk","m","l","z","eval","substr","lastIndexOf","Array","slice","s","f","keyArr","keys","len","start","end","step","$3","parseInt","Math","max","min","_v","_vname","e","SyntaxError","message","expression","Json","Escape","Query"],"mappings":"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"}