New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

potion-client

Package Overview
Dependencies
Maintainers
2
Versions
183
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

potion-client - npm Package Compare versions

Comparing version 1.5.6 to 1.5.7

39

core/utils.js

@@ -131,3 +131,3 @@ "use strict";

else if (set.has(json)) {
// If the object we want to walk through is a ref we already replaced, just skip it.
// If the object we're about to walk through is a ref. we already parsed, just skip it and return it.
return json;

@@ -139,6 +139,3 @@ }

else if (Array.isArray(json)) {
var list = json.map(function (value) { return replaceSelfReferences(value, roots); });
// Cache the list so we don't loop over it again
set.add(list);
return list;
return json.map(function (value) { return replaceSelfReferences(value, roots); });
}

@@ -150,2 +147,8 @@ else if (json instanceof SelfReference) {

else if (Object.keys(json).length > 0) {
// Object.keys() will only output the keys for custom classes, whereas objects builtins will be empty (which is what we want).
// NOTE: Arrays will also work with Object.keys() and return the indexes.
// We only add an object to the known sets if it's a reference (has {uri}).
if (!Array.isArray(json) && json.uri) {
set.add(json);
}
var _loop_1 = function (key, value) {

@@ -165,4 +168,2 @@ if (value instanceof SelfReference) {

};
// NOTE: Object.keys() will only work for custom classes or objects builtins will be empty, which is what we want.
// NOTE: Arrays will also work with Object.keys() and return the indexes.
for (var _i = 0, _a = Object.entries(json); _i < _a.length; _i++) {

@@ -184,14 +185,14 @@ var _b = _a[_i], key = _b[0], value = _b[1];

var roots = [];
if (Array.isArray(json) || json instanceof pagination_1.Pagination) {
for (var _i = 0, json_1 = json; _i < json_1.length; _i++) {
var value = json_1[_i];
roots.push.apply(roots, findRoots(value));
if (isJsObject(json) && Object.keys(json).length > 0) {
if (set.has(json)) {
// If we find the root in the set it means there is no need to continue.
return [];
}
}
else if (isJsObject(json) && Object.keys(json).length > 0) {
if (json.uri) {
else if (json.uri) {
// We only want to append unique roots.
roots.push(json);
}
for (var _a = 0, _b = Object.values(json); _a < _b.length; _a++) {
var value = _b[_a];
var values = Array.isArray(json) || json instanceof pagination_1.Pagination ? json : Object.values(json);
for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {
var value = values_1[_i];
roots.push.apply(roots, findRoots(value));

@@ -207,4 +208,4 @@ }

};
for (var _c = 0, roots_1 = roots; _c < roots_1.length; _c++) {
var root = roots_1[_c];
for (var _a = 0, roots_1 = roots; _a < roots_1.length; _a++) {
var root = roots_1[_a];
_loop_2(root);

@@ -379,2 +380,2 @@ }

exports.MemCache = MemCache;
//# sourceMappingURL=data:application/json;base64,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QUFDO0lBQ1osQ0FBQztJQUVELHlCQUFNLEdBQU4sVUFBTyxHQUFXO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRixlQUFDO0FBQUQsQ0FqQkEsQUFpQkMsSUFBQTtBQWpCWSw0QkFBUSIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWNsYXNzZXMtcGVyLWZpbGVcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi9pdGVtJztcbmltcG9ydCB7UGFnaW5hdGlvbn0gZnJvbSAnLi9wYWdpbmF0aW9uJztcbmltcG9ydCB7SXRlbUNhY2hlLCBQb3Rpb25SZXNvdXJjZXN9IGZyb20gJy4vcG90aW9uJztcblxuXG4vKipcbiAqIENhbWVsIGNhc2UgdG8gc25ha2UgY2FzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TbmFrZUNhc2Uoc3RyOiBzdHJpbmcsIHNlcGFyYXRvcjogc3RyaW5nID0gJ18nKTogc3RyaW5nIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKC9cXC4/KFtBLVowLTldKykvZywgKF8sICQyKSA9PiBgJHtzZXBhcmF0b3J9JHskMi50b0xvd2VyQ2FzZSgpfWApXG5cdFx0LnJlcGxhY2UoL15fLywgJycpO1xufVxuXG5cbi8qKlxuICogU25ha2UgY2FzZSB0byBjYW1lbCBjYXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbWVsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvXyhbYS16MC05XSkvZywgZyA9PiBnWzFdLnRvVXBwZXJDYXNlKCkpO1xufVxuXG5cbi8qKlxuICogT2JqZWN0IHR5cGUgZ3VhcmRcbiAqIERvY3M6IGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2FkdmFuY2VkLXR5cGVzLmh0bWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSnNPYmplY3QodmFsdWU6IGFueSk6IHZhbHVlIGlzIHtba2V5OiBzdHJpbmddOyBhbnl9IHtcblx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGw7XG59XG4vKipcbiAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBlbXB0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmo6IHt9KTogYm9vbGVhbiB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0eXBlIGd1YXJkXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogYmFuLXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZTogYW55KTogdmFsdWUgaXMgRnVuY3Rpb24ge1xuXHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufVxuXG5cbmV4cG9ydCB0eXBlIEtleU1hcEZ1bmN0aW9uID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBWYWx1ZU1hcEZ1bmN0aW9uID0gKHZhbHVlOiBhbnkpID0+IGFueTtcbi8qKlxuICogT2JqZWN0Lm1hcCgpXG4gKiBOT1RFOiBUaGlzIGlzIE5PVCBhIHJlY3Vyc2l2ZSBmbi5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleU1hcEZ1bmN0aW9uIC0gVHJhbnNmb3JtIG9wZXJhdGlvbiB0byBhcHBseSBvbiB0aGUga2V5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ZhbHVlTWFwRnVuY3Rpb25dIC0gVHJhbnNmb3JtIG9wZXJhdGlvbiB0byBhcHBseSBvbiB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gb21hcChvYmo6IHtba2V5OiBzdHJpbmddOiBhbnl9LCBrZXlNYXBGdW5jdGlvbjogS2V5TWFwRnVuY3Rpb24sIHZhbHVlTWFwRnVuY3Rpb24/OiBWYWx1ZU1hcEZ1bmN0aW9uKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuXHRpZiAoaXNKc09iamVjdChvYmopICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKVxuXHRcdFx0Lm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbaXNGdW5jdGlvbihrZXlNYXBGdW5jdGlvbikgPyBrZXlNYXBGdW5jdGlvbihrZXkpIDoga2V5LCBpc0Z1bmN0aW9uKHZhbHVlTWFwRnVuY3Rpb24pID8gdmFsdWVNYXBGdW5jdGlvbih2YWx1ZSkgOiB2YWx1ZV0pXG5cdFx0XHQucmVkdWNlKChhOiB7fSwgW2tleSwgdmFsdWVdKSA9PiBPYmplY3QuYXNzaWduKGEsIHtba2V5XTogdmFsdWV9KSwge30pO1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG5cblxuLyoqXG4gKiBBZ2dyZWdhdGUgYSBzdHIgYmFzZWQgb24gYW4gRXJyb3Igb2JqZWN0IGFuZCB1cmlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yTWVzc2FnZShlcnJvcjogYW55LCB1cmk/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBtZXNzYWdlID0gJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIFBvdGlvbiB0cmllZCB0byByZXRyaWV2ZSBhIHJlc291cmNlJztcblx0aWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRyZXR1cm4gZXJyb3IubWVzc2FnZTtcblx0fSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIGVycm9yO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB1cmkgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIGAke21lc3NhZ2V9IGZyb20gJyR7dXJpfScuYDtcblx0fVxuXHRyZXR1cm4gYCR7bWVzc2FnZX0uYDtcbn1cblxuXG4vKipcbiAqIENvbnZlcnQgSlNPTiBzY2hlbWEgdG8gYSBKUyBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21TY2hlbWFKU09OKGpzb246IGFueSk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcblx0aWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcblx0XHRyZXR1cm4ganNvbi5tYXAodmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IGZyb21TY2hlbWFKU09OKHZhbHVlKSA6IHZhbHVlKTtcblx0fSBlbHNlIGlmIChpc0pzT2JqZWN0KGpzb24pKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5lbnRyaWVzPGFueT4oanNvbilcblx0XHRcdC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3RvQ2FtZWxDYXNlKGtleSksIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyBmcm9tU2NoZW1hSlNPTih2YWx1ZSkgOiB2YWx1ZV0pXG5cdFx0XHQucmVkdWNlKChhLCBba2V5LCB2YWx1ZV0pID0+IE9iamVjdC5hc3NpZ24oYSwge1trZXldOiB2YWx1ZX0pLCB7fSk7XG5cdH1cblx0cmV0dXJuIGpzb247XG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGZSZWZlcmVuY2Uge1xuXHRjb25zdHJ1Y3RvcihyZWFkb25seSAkdXJpOiBzdHJpbmcpIHt9XG5cdG1hdGNoZXModXJpOiBhbnkpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy4kdXJpID09PSB1cmk7XG5cdH1cbn1cblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggUG90aW9uIEpTT04gYW5kIHJlcGxhY2UgU2VsZlJlZmVyZW5jZSBvYmplY3RzIGZyb20gdGhlIHJvb3RzIChyb290cyBhcmUganVzdCBhIGxvc3Qgb2YgUG90aW9uIGl0ZW0gcmVmZXJlbmNlcykuXG4gKiBAcGFyYW0ganNvbiAtIEFueSB2YWx1ZSB0byB3YWxrIHRocm91Z2guXG4gKiBAcGFyYW0ge0FycmF5PEl0ZW0+fSByb290cyAtIEEgbGlzdCBvZiBQb3Rpb24gaXRlbXMgZm91bmQgaW4gdGhlIHBhc3NlZCBKU09OLlxuICovXG4vLyBOT1RFOiBLZWVwIHJlZnMuIHRvIGxvb3BlZCB0aGluZ3MgaW4gdGhpcyBzZXQgaW5zdGVhZCBvZiBhbHRlcmluZyB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzLlxuLy8gVE9ETzogSXQncyB1bmNlcnRhaW4gaWYgdGhpcyBtYXkgbmVlZCB0byBiZSBjcmVhdGVkIGV2ZXJ5IHRpbWUgd2UgcmVwbGFjZSByZWZzLiwgd2UgbWlnaHQgbmVlZCB0byBkbyBzby5cbmNvbnN0IHNldCA9IG5ldyBXZWFrU2V0KCk7XG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNlbGZSZWZlcmVuY2VzKGpzb246IGFueSwgcm9vdHM6IEl0ZW1bXSk6IGFueSB7XG5cdGlmICh0eXBlb2YganNvbiAhPT0gJ29iamVjdCcgfHwganNvbiA9PT0gbnVsbCkge1xuXHRcdHJldHVybiBqc29uO1xuXHR9IGVsc2UgaWYgKHNldC5oYXMoanNvbikpIHtcblx0XHQvLyBJZiB0aGUgb2JqZWN0IHdlIHdhbnQgdG8gd2FsayB0aHJvdWdoIGlzIGEgcmVmIHdlIGFscmVhZHkgcmVwbGFjZWQsIGp1c3Qgc2tpcCBpdC5cblx0XHRyZXR1cm4ganNvbjtcblx0fSBlbHNlIGlmIChqc29uIGluc3RhbmNlb2YgUGFnaW5hdGlvbikge1xuXHRcdHJldHVybiBqc29uLnVwZGF0ZShqc29uLm1hcCh2YWx1ZSA9PiByZXBsYWNlU2VsZlJlZmVyZW5jZXModmFsdWUsIHJvb3RzKSksIGpzb24udG90YWwpO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcblx0XHRjb25zdCBsaXN0ID0ganNvbi5tYXAodmFsdWUgPT4gcmVwbGFjZVNlbGZSZWZlcmVuY2VzKHZhbHVlLCByb290cykpO1xuXHRcdC8vIENhY2hlIHRoZSBsaXN0IHNvIHdlIGRvbid0IGxvb3Agb3ZlciBpdCBhZ2FpblxuXHRcdHNldC5hZGQobGlzdCk7XG5cdFx0cmV0dXJuIGxpc3Q7XG5cdH0gZWxzZSBpZiAoanNvbiBpbnN0YW5jZW9mIFNlbGZSZWZlcmVuY2UpIHtcblx0XHQvLyBGaW5kIHRoZSByZWYgaW4gdGhlIHJvb3RzLlxuXHRcdHJldHVybiByb290cy5maW5kKGl0ZW0gPT4ganNvbi5tYXRjaGVzKGl0ZW0udXJpKSk7XG5cdH0gZWxzZSBpZiAoT2JqZWN0LmtleXMoanNvbikubGVuZ3RoID4gMCkge1xuXHRcdC8vIE5PVEU6IE9iamVjdC5rZXlzKCkgd2lsbCBvbmx5IHdvcmsgZm9yIGN1c3RvbSBjbGFzc2VzIG9yIG9iamVjdHMgYnVpbHRpbnMgd2lsbCBiZSBlbXB0eSwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LlxuXHRcdC8vIE5PVEU6IEFycmF5cyB3aWxsIGFsc28gd29yayB3aXRoIE9iamVjdC5rZXlzKCkgYW5kIHJldHVybiB0aGUgaW5kZXhlcy5cblx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhqc29uKSkge1xuXHRcdFx0aWYgKHZhbHVlIGluc3RhbmNlb2YgU2VsZlJlZmVyZW5jZSkge1xuXHRcdFx0XHRjb25zdCByZWYgPSByb290cy5maW5kKGl0ZW0gPT4gdmFsdWUubWF0Y2hlcyhpdGVtLnVyaSkpO1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKGpzb24sIHtcblx0XHRcdFx0XHRba2V5XTogcmVmXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChpc0pzT2JqZWN0KHZhbHVlKSkge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKGpzb24sIHtcblx0XHRcdFx0XHRba2V5XTogcmVwbGFjZVNlbGZSZWZlcmVuY2VzKHZhbHVlLCByb290cylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBqc29uO1xuXHR9XG5cblx0cmV0dXJuIGpzb247XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgZmluZCBldmVyeSBvYmplY3Qgd2l0aCB7dXJpfSAoYSBQb3Rpb24gaXRlbSB1c3VhbGx5KSBhbmQgcmV0dXJuIGEgbGlzdCB3aXRoIGFsbC5cbiAqIEBwYXJhbSBqc29uIC0gQSBQb3Rpb24gSlNPTi5cbiAqIEByZXR1cm4ge0FycmF5PEl0ZW0+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvb3RzKGpzb246IGFueSk6IEl0ZW1bXSB7XG5cdGNvbnN0IHJvb3RzOiBhbnlbXSA9IFtdO1xuXHRpZiAoQXJyYXkuaXNBcnJheShqc29uKSB8fCBqc29uIGluc3RhbmNlb2YgUGFnaW5hdGlvbikge1xuXHRcdGZvciAoY29uc3QgdmFsdWUgb2YganNvbikge1xuXHRcdFx0cm9vdHMucHVzaCguLi5maW5kUm9vdHModmFsdWUpKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoaXNKc09iamVjdChqc29uKSAmJiBPYmplY3Qua2V5cyhqc29uKS5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKGpzb24udXJpKSB7XG5cdFx0XHRyb290cy5wdXNoKGpzb24pO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoanNvbikpIHtcblx0XHRcdHJvb3RzLnB1c2goLi4uZmluZFJvb3RzKHZhbHVlKSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVzLlxuXHRjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cdGZvciAoY29uc3Qgcm9vdCBvZiByb290cykge1xuXHRcdGlmIChyZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gcm9vdC51cmkgPT09IGl0ZW0udXJpKSA9PT0gLTEpIHtcblx0XHRcdHJlc3VsdC5wdXNoKHJvb3QpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59XG5cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlbGYgcmVmZXJlbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1NlbGZSZWZlcmVuY2UodXJpOiBzdHJpbmcpOiBTZWxmUmVmZXJlbmNlIHtcblx0cmV0dXJuIG5ldyBTZWxmUmVmZXJlbmNlKHVyaSk7XG59XG5cblxuLyoqXG4gKiBDb252ZXJ0IGFuIE9iamVjdCB0byBQb3Rpb24gSlNPTlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qb3Rpb25KU09OKGpzb246IGFueSwgcHJlZml4Pzogc3RyaW5nKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuXHRpZiAoaXNKc09iamVjdChqc29uKSkge1xuXHRcdGlmIChqc29uIGluc3RhbmNlb2YgSXRlbSAmJiB0eXBlb2YganNvbi51cmkgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4geyRyZWY6IGAke2FkZFByZWZpeFRvVVJJKGpzb24udXJpLCBwcmVmaXgpfWB9O1xuXHRcdH0gZWxzZSBpZiAoanNvbiBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdHJldHVybiB7JGRhdGU6IGpzb24uZ2V0VGltZSgpfTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcblx0XHRcdHJldHVybiBqc29uLm1hcChpdGVtID0+IHRvUG90aW9uSlNPTihpdGVtLCBwcmVmaXgpKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9tYXAoanNvbiwga2V5ID0+IHRvU25ha2VDYXNlKGtleSksIHZhbHVlID0+IHRvUG90aW9uSlNPTih2YWx1ZSwgcHJlZml4KSk7XG5cdH1cblx0cmV0dXJuIGpzb247XG59XG5cblxuZXhwb3J0IHR5cGUgUG90aW9uSUQgPSBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xuLyoqXG4gKiBQYXJzZSBhIFBvdGlvbiBJRFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQb3Rpb25JRChpZDogYW55KTogUG90aW9uSUQge1xuXHRpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJyAmJiBpZC5sZW5ndGggPiAwKSB7XG5cdFx0cmV0dXJuIC9eXFxkKyQvLnRlc3QoaWQpID8gcGFyc2VJbnQoaWQsIDEwKSA6IGlkO1xuXHR9IGVsc2UgaWYgKE51bWJlci5pc0ludGVnZXIoaWQpKSB7XG5cdFx0cmV0dXJuIGlkO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdldCBhIFBvdGlvbiBJRCBmcm9tIGEgVVJJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3Rpb25JRCh1cmk6IHN0cmluZywgcmVzb3VyY2VVUkk6IHN0cmluZyk6IFBvdGlvbklEIHtcblx0Y29uc3QgaW5kZXggPSB1cmkuaW5kZXhPZihgJHtyZXNvdXJjZVVSSX0vYCk7XG5cdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRjb25zdCBpZCA9IHVyaS5zdWJzdHJpbmcoaW5kZXgpXG5cdFx0XHQuc3BsaXQoJy8nKVxuXHRcdFx0LnBvcCgpO1xuXHRcdHJldHVybiBwYXJzZVBvdGlvbklEKGlkKTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cblxuXG4vKipcbiAqIEZpbmQgYSBQb3Rpb24gcmVzb3VyY2UgYmFzZWQgb24gVVJJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUG90aW9uUmVzb3VyY2UodXJpOiBzdHJpbmcsIHJlc291cmNlczogUG90aW9uUmVzb3VyY2VzKToge3Jlc291cmNlVVJJOiBzdHJpbmcsIHJlc291cmNlOiB0eXBlb2YgSXRlbX0gfCB1bmRlZmluZWQge1xuXHRjb25zdCBlbnRyeSA9IE9iamVjdC5lbnRyaWVzKHJlc291cmNlcylcblx0XHQuZmluZCgoW3Jlc291cmNlVVJJXSkgPT4gdXJpLmluZGV4T2YoYCR7cmVzb3VyY2VVUkl9L2ApID09PSAwKTtcblx0aWYgKGVudHJ5KSB7XG5cdFx0Y29uc3QgW3Jlc291cmNlVVJJLCByZXNvdXJjZV0gPSBlbnRyeTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVzb3VyY2VVUkksXG5cdFx0XHRyZXNvdXJjZVxuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBzb21lIHN0cmluZyBpcyBhIFBvdGlvbiBVUklcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG90aW9uVVJJKHVyaTogc3RyaW5nLCByZXNvdXJjZXM6IFBvdGlvblJlc291cmNlcyk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbnRyeSA9IGZpbmRQb3Rpb25SZXNvdXJjZSh1cmksIHJlc291cmNlcyk7XG5cdGlmIChlbnRyeSkge1xuXHRcdHJldHVybiBnZXRQb3Rpb25JRCh1cmksIGVudHJ5LnJlc291cmNlVVJJKSAhPT0gbnVsbDtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cblxuLyoqXG4gKiBHZXQgdGhlIFBvdGlvbiBVUkkgZnJvbSBhIFBvdGlvbiBKU09OIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzVHlwZUFuZElkKHskdHlwZSwgJGlkfToge1trZXk6IHN0cmluZ106IGFueX0pOiBib29sZWFuIHtcblx0cmV0dXJuICh0eXBlb2YgJGlkID09PSAnc3RyaW5nJyB8fCBOdW1iZXIuaXNJbnRlZ2VyKCRpZCkpICYmIHR5cGVvZiAkdHlwZSA9PT0gJ3N0cmluZyc7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UG90aW9uVVJJKHskdXJpLCAkcmVmLCAkdHlwZSwgJGlkfToge1trZXk6IHN0cmluZ106IGFueX0pOiBzdHJpbmcge1xuXHRpZiAodHlwZW9mICR1cmkgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCgkdXJpKTtcblx0fSBlbHNlIGlmICh0eXBlb2YgJHJlZiA9PT0gJ3N0cmluZycpIHtcblx0XHRyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCRyZWYpO1xuXHR9IGVsc2UgaWYgKGhhc1R5cGVBbmRJZCh7JHR5cGUsICRpZH0pKSB7XG5cdFx0cmV0dXJuIGAvJHskdHlwZX0vJHskaWR9YDtcblx0fVxuXHRyZXR1cm4gJyc7XG59XG5cbi8qKlxuICogUmVtb3ZlIHNvbWUgc3RyaW5nIGZyb20gYW5vdGhlciBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVByZWZpeEZyb21VUkkodXJpOiBzdHJpbmcsIHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKHVyaS5pbmNsdWRlcyhzdHIpKSB7XG5cdFx0cmV0dXJuIHVyaS5zdWJzdHJpbmcoc3RyLmxlbmd0aCk7XG5cdH1cblx0cmV0dXJuIHVyaTtcbn1cbi8qKlxuICogQWRkIGEgcHJlZml4IHRvIHNvbWUgc3RyaW5nIChpZiBub3QgYWxyZWFkeSB0aGVyZSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFByZWZpeFRvVVJJKHVyaTogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAodHlwZW9mIHByZWZpeCA9PT0gJ3N0cmluZycgJiYgIXVyaS5pbmNsdWRlcyhwcmVmaXgpKSB7XG5cdFx0cmV0dXJuIGAke3ByZWZpeH0ke3VyaX1gO1xuXHR9XG5cdHJldHVybiB1cmk7XG59XG5cblxuLyoqXG4gKiBNZXJnZSBhcnJheSBvZiBvYmplY3RzIGludG8gb25lIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKC4uLm9iamVjdHM6IEFycmF5PHtba2V5OiBzdHJpbmddOiBhbnl9Pik6IGFueSB7XG5cdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XG5cdFx0T2JqZWN0LmFzc2lnbihyZXN1bHQsIG9iaik7XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuXG4vKipcbiAqIEluLU1lbW9yeSBjYWNoZVxuICogV2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQgYnkgUG90aW9uIGZvciBjYWNoaW5nIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1lbUNhY2hlPFQgZXh0ZW5kcyBJdGVtPiBpbXBsZW1lbnRzIEl0ZW1DYWNoZTxUPiB7XG5cdHByb3RlY3RlZCBpdGVtczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFQ+PigpO1xuXG5cdGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLml0ZW1zLmhhcyhrZXkpO1xuXHR9XG5cdGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuXHRcdHJldHVybiB0aGlzLml0ZW1zLmdldChrZXkpO1xuXHR9XG5cdHB1dChrZXk6IHN0cmluZywgaXRlbTogUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuXHRcdHJldHVybiB0aGlzLml0ZW1zLnNldChrZXksIGl0ZW0pXG5cdFx0XHQuZ2V0KGtleSk7XG5cdH1cblxuXHRyZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLml0ZW1zLmRlbGV0ZShrZXkpO1xuXHR9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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QUFHLEVBQUUsSUFBSSxDQUFDO2FBQzlCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQU8sR0FBVztRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0YsZUFBQztBQUFELENBakJBLEFBaUJDLElBQUE7QUFqQlksNEJBQVEiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG1heC1jbGFzc2VzLXBlci1maWxlXG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQge1BhZ2luYXRpb259IGZyb20gJy4vcGFnaW5hdGlvbic7XG5pbXBvcnQge0l0ZW1DYWNoZSwgUG90aW9uUmVzb3VyY2VzfSBmcm9tICcuL3BvdGlvbic7XG5cblxuLyoqXG4gKiBDYW1lbCBjYXNlIHRvIHNuYWtlIGNhc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2VDYXNlKHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICdfJyk6IHN0cmluZyB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvXFwuPyhbQS1aMC05XSspL2csIChfLCAkMikgPT4gYCR7c2VwYXJhdG9yfSR7JDIudG9Mb3dlckNhc2UoKX1gKVxuXHRcdC5yZXBsYWNlKC9eXy8sICcnKTtcbn1cblxuXG4vKipcbiAqIFNuYWtlIGNhc2UgdG8gY2FtZWwgY2FzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL18oW2EtejAtOV0pL2csIGcgPT4gZ1sxXS50b1VwcGVyQ2FzZSgpKTtcbn1cblxuXG4vKipcbiAqIE9iamVjdCB0eXBlIGd1YXJkXG4gKiBEb2NzOiBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9hZHZhbmNlZC10eXBlcy5odG1sXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0pzT2JqZWN0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyB7W2tleTogc3RyaW5nXTsgYW55fSB7XG5cdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsO1xufVxuLyoqXG4gKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgZW1wdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0RW1wdHkob2JqOiB7fSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdHlwZSBndWFyZFxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGJhbi10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcblx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuXG5leHBvcnQgdHlwZSBLZXlNYXBGdW5jdGlvbiA9IChrZXk6IHN0cmluZykgPT4gc3RyaW5nO1xuZXhwb3J0IHR5cGUgVmFsdWVNYXBGdW5jdGlvbiA9ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4vKipcbiAqIE9iamVjdC5tYXAoKVxuICogTk9URTogVGhpcyBpcyBOT1QgYSByZWN1cnNpdmUgZm4uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlNYXBGdW5jdGlvbiAtIFRyYW5zZm9ybSBvcGVyYXRpb24gdG8gYXBwbHkgb24gdGhlIGtleS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFt2YWx1ZU1hcEZ1bmN0aW9uXSAtIFRyYW5zZm9ybSBvcGVyYXRpb24gdG8gYXBwbHkgb24gdGhlIHZhbHVlLlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9tYXAob2JqOiB7W2tleTogc3RyaW5nXTogYW55fSwga2V5TWFwRnVuY3Rpb246IEtleU1hcEZ1bmN0aW9uLCB2YWx1ZU1hcEZ1bmN0aW9uPzogVmFsdWVNYXBGdW5jdGlvbik6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcblx0aWYgKGlzSnNPYmplY3Qob2JqKSAmJiAhQXJyYXkuaXNBcnJheShvYmopKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iailcblx0XHRcdC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2lzRnVuY3Rpb24oa2V5TWFwRnVuY3Rpb24pID8ga2V5TWFwRnVuY3Rpb24oa2V5KSA6IGtleSwgaXNGdW5jdGlvbih2YWx1ZU1hcEZ1bmN0aW9uKSA/IHZhbHVlTWFwRnVuY3Rpb24odmFsdWUpIDogdmFsdWVdKVxuXHRcdFx0LnJlZHVjZSgoYToge30sIFtrZXksIHZhbHVlXSkgPT4gT2JqZWN0LmFzc2lnbihhLCB7W2tleV06IHZhbHVlfSksIHt9KTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5cbi8qKlxuICogQWdncmVnYXRlIGEgc3RyIGJhc2VkIG9uIGFuIEVycm9yIG9iamVjdCBhbmQgdXJpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3I6IGFueSwgdXJpPzogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgbWVzc2FnZSA9ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBQb3Rpb24gdHJpZWQgdG8gcmV0cmlldmUgYSByZXNvdXJjZSc7XG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdFx0cmV0dXJuIGVycm9yLm1lc3NhZ2U7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBlcnJvcjtcblx0fSBlbHNlIGlmICh0eXBlb2YgdXJpID09PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBgJHttZXNzYWdlfSBmcm9tICcke3VyaX0nLmA7XG5cdH1cblx0cmV0dXJuIGAke21lc3NhZ2V9LmA7XG59XG5cblxuLyoqXG4gKiBDb252ZXJ0IEpTT04gc2NoZW1hIHRvIGEgSlMgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tU2NoZW1hSlNPTihqc29uOiBhbnkpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGpzb24pKSB7XG5cdFx0cmV0dXJuIGpzb24ubWFwKHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyBmcm9tU2NoZW1hSlNPTih2YWx1ZSkgOiB2YWx1ZSk7XG5cdH0gZWxzZSBpZiAoaXNKc09iamVjdChqc29uKSkge1xuXHRcdHJldHVybiBPYmplY3QuZW50cmllczxhbnk+KGpzb24pXG5cdFx0XHQubWFwKChba2V5LCB2YWx1ZV0pID0+IFt0b0NhbWVsQ2FzZShrZXkpLCB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gZnJvbVNjaGVtYUpTT04odmFsdWUpIDogdmFsdWVdKVxuXHRcdFx0LnJlZHVjZSgoYSwgW2tleSwgdmFsdWVdKSA9PiBPYmplY3QuYXNzaWduKGEsIHtba2V5XTogdmFsdWV9KSwge30pO1xuXHR9XG5cdHJldHVybiBqc29uO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBTZWxmUmVmZXJlbmNlIHtcblx0Y29uc3RydWN0b3IocmVhZG9ubHkgJHVyaTogc3RyaW5nKSB7fVxuXHRtYXRjaGVzKHVyaTogYW55KTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuJHVyaSA9PT0gdXJpO1xuXHR9XG59XG5cbi8qKlxuICogV2FsayB0aHJvdWdoIFBvdGlvbiBKU09OIGFuZCByZXBsYWNlIFNlbGZSZWZlcmVuY2Ugb2JqZWN0cyBmcm9tIHRoZSByb290cyAocm9vdHMgYXJlIGp1c3QgYSBsb3N0IG9mIFBvdGlvbiBpdGVtIHJlZmVyZW5jZXMpLlxuICogQHBhcmFtIGpzb24gLSBBbnkgdmFsdWUgdG8gd2FsayB0aHJvdWdoLlxuICogQHBhcmFtIHtBcnJheTxJdGVtPn0gcm9vdHMgLSBBIGxpc3Qgb2YgUG90aW9uIGl0ZW1zIGZvdW5kIGluIHRoZSBwYXNzZWQgSlNPTi5cbiAqL1xuLy8gTk9URTogS2VlcCByZWZzLiB0byBsb29wZWQgdGhpbmdzIGluIHRoaXMgc2V0IGluc3RlYWQgb2YgYWx0ZXJpbmcgdGhlIG9iamVjdHMgdGhlbXNlbHZlcy5cbi8vIFRPRE86IEl0J3MgdW5jZXJ0YWluIGlmIHRoaXMgbWF5IG5lZWQgdG8gYmUgY3JlYXRlZCBldmVyeSB0aW1lIHdlIHJlcGxhY2UgcmVmcy4sIHdlIG1pZ2h0IG5lZWQgdG8gZG8gc28uXG5jb25zdCBzZXQgPSBuZXcgV2Vha1NldCgpO1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VTZWxmUmVmZXJlbmNlcyhqc29uOiBhbnksIHJvb3RzOiBJdGVtW10pOiBhbnkge1xuXHRpZiAodHlwZW9mIGpzb24gIT09ICdvYmplY3QnIHx8IGpzb24gPT09IG51bGwpIHtcblx0XHRyZXR1cm4ganNvbjtcblx0fSBlbHNlIGlmIChzZXQuaGFzKGpzb24pKSB7XG5cdFx0Ly8gSWYgdGhlIG9iamVjdCB3ZSdyZSBhYm91dCB0byB3YWxrIHRocm91Z2ggaXMgYSByZWYuIHdlIGFscmVhZHkgcGFyc2VkLCBqdXN0IHNraXAgaXQgYW5kIHJldHVybiBpdC5cblx0XHRyZXR1cm4ganNvbjtcblx0fSBlbHNlIGlmIChqc29uIGluc3RhbmNlb2YgUGFnaW5hdGlvbikge1xuXHRcdHJldHVybiBqc29uLnVwZGF0ZShqc29uLm1hcCh2YWx1ZSA9PiByZXBsYWNlU2VsZlJlZmVyZW5jZXModmFsdWUsIHJvb3RzKSksIGpzb24udG90YWwpO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcblx0XHRyZXR1cm4ganNvbi5tYXAodmFsdWUgPT4gcmVwbGFjZVNlbGZSZWZlcmVuY2VzKHZhbHVlLCByb290cykpO1xuXHR9IGVsc2UgaWYgKGpzb24gaW5zdGFuY2VvZiBTZWxmUmVmZXJlbmNlKSB7XG5cdFx0Ly8gRmluZCB0aGUgcmVmIGluIHRoZSByb290cy5cblx0XHRyZXR1cm4gcm9vdHMuZmluZChpdGVtID0+IGpzb24ubWF0Y2hlcyhpdGVtLnVyaSkpO1xuXHR9IGVsc2UgaWYgKE9iamVjdC5rZXlzKGpzb24pLmxlbmd0aCA+IDApIHtcblx0XHQvLyBPYmplY3Qua2V5cygpIHdpbGwgb25seSBvdXRwdXQgdGhlIGtleXMgZm9yIGN1c3RvbSBjbGFzc2VzLCB3aGVyZWFzIG9iamVjdHMgYnVpbHRpbnMgd2lsbCBiZSBlbXB0eSAod2hpY2ggaXMgd2hhdCB3ZSB3YW50KS5cblx0XHQvLyBOT1RFOiBBcnJheXMgd2lsbCBhbHNvIHdvcmsgd2l0aCBPYmplY3Qua2V5cygpIGFuZCByZXR1cm4gdGhlIGluZGV4ZXMuXG5cblx0XHQvLyBXZSBvbmx5IGFkZCBhbiBvYmplY3QgdG8gdGhlIGtub3duIHNldHMgaWYgaXQncyBhIHJlZmVyZW5jZSAoaGFzIHt1cml9KS5cblx0XHRpZiAoIUFycmF5LmlzQXJyYXkoanNvbikgJiYganNvbi51cmkpIHtcblx0XHRcdHNldC5hZGQoanNvbik7XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoanNvbikpIHtcblx0XHRcdGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNlbGZSZWZlcmVuY2UpIHtcblx0XHRcdFx0Y29uc3QgcmVmID0gcm9vdHMuZmluZChpdGVtID0+IHZhbHVlLm1hdGNoZXMoaXRlbS51cmkpKTtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihqc29uLCB7XG5cdFx0XHRcdFx0W2tleV06IHJlZlxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAoaXNKc09iamVjdCh2YWx1ZSkpIHtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihqc29uLCB7XG5cdFx0XHRcdFx0W2tleV06IHJlcGxhY2VTZWxmUmVmZXJlbmNlcyh2YWx1ZSwgcm9vdHMpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4ganNvbjtcblx0fVxuXG5cdHJldHVybiBqc29uO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGZpbmQgZXZlcnkgb2JqZWN0IHdpdGgge3VyaX0gKGEgUG90aW9uIGl0ZW0gdXN1YWxseSkgYW5kIHJldHVybiBhIGxpc3Qgd2l0aCBhbGwuXG4gKiBAcGFyYW0ganNvbiAtIEEgUG90aW9uIEpTT04uXG4gKiBAcmV0dXJuIHtBcnJheTxJdGVtPn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRSb290cyhqc29uOiBhbnkpOiBJdGVtW10ge1xuXHRjb25zdCByb290czogYW55W10gPSBbXTtcblx0aWYgKGlzSnNPYmplY3QoanNvbikgJiYgT2JqZWN0LmtleXMoanNvbikubGVuZ3RoID4gMCkge1xuXHRcdGlmIChzZXQuaGFzKGpzb24pKSB7XG5cdFx0XHQvLyBJZiB3ZSBmaW5kIHRoZSByb290IGluIHRoZSBzZXQgaXQgbWVhbnMgdGhlcmUgaXMgbm8gbmVlZCB0byBjb250aW51ZS5cblx0XHRcdHJldHVybiBbXTtcblx0XHR9IGVsc2UgaWYgKGpzb24udXJpKSB7XG5cdFx0XHQvLyBXZSBvbmx5IHdhbnQgdG8gYXBwZW5kIHVuaXF1ZSByb290cy5cblx0XHRcdHJvb3RzLnB1c2goanNvbik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheShqc29uKSB8fCBqc29uIGluc3RhbmNlb2YgUGFnaW5hdGlvbiA/IGpzb24gOiBPYmplY3QudmFsdWVzKGpzb24pO1xuXHRcdGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG5cdFx0XHRyb290cy5wdXNoKC4uLmZpbmRSb290cyh2YWx1ZSkpO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJlbW92ZSBkdXBsaWNhdGUgZW50cmllcy5cblx0Y29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuXHRmb3IgKGNvbnN0IHJvb3Qgb2Ygcm9vdHMpIHtcblx0XHRpZiAocmVzdWx0LmZpbmRJbmRleChpdGVtID0+IHJvb3QudXJpID09PSBpdGVtLnVyaSkgPT09IC0xKSB7XG5cdFx0XHRyZXN1bHQucHVzaChyb290KTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWxmIHJlZmVyZW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TZWxmUmVmZXJlbmNlKHVyaTogc3RyaW5nKTogU2VsZlJlZmVyZW5jZSB7XG5cdHJldHVybiBuZXcgU2VsZlJlZmVyZW5jZSh1cmkpO1xufVxuXG5cbi8qKlxuICogQ29udmVydCBhbiBPYmplY3QgdG8gUG90aW9uIEpTT05cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUG90aW9uSlNPTihqc29uOiBhbnksIHByZWZpeD86IHN0cmluZyk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcblx0aWYgKGlzSnNPYmplY3QoanNvbikpIHtcblx0XHRpZiAoanNvbiBpbnN0YW5jZW9mIEl0ZW0gJiYgdHlwZW9mIGpzb24udXJpID09PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuIHskcmVmOiBgJHthZGRQcmVmaXhUb1VSSShqc29uLnVyaSwgcHJlZml4KX1gfTtcblx0XHR9IGVsc2UgaWYgKGpzb24gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRyZXR1cm4geyRkYXRlOiBqc29uLmdldFRpbWUoKX07XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGpzb24pKSB7XG5cdFx0XHRyZXR1cm4ganNvbi5tYXAoaXRlbSA9PiB0b1BvdGlvbkpTT04oaXRlbSwgcHJlZml4KSk7XG5cdFx0fVxuXHRcdHJldHVybiBvbWFwKGpzb24sIGtleSA9PiB0b1NuYWtlQ2FzZShrZXkpLCB2YWx1ZSA9PiB0b1BvdGlvbkpTT04odmFsdWUsIHByZWZpeCkpO1xuXHR9XG5cdHJldHVybiBqc29uO1xufVxuXG5cbmV4cG9ydCB0eXBlIFBvdGlvbklEID0gc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcbi8qKlxuICogUGFyc2UgYSBQb3Rpb24gSURcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUG90aW9uSUQoaWQ6IGFueSk6IFBvdGlvbklEIHtcblx0aWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgJiYgaWQubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiAvXlxcZCskLy50ZXN0KGlkKSA/IHBhcnNlSW50KGlkLCAxMCkgOiBpZDtcblx0fSBlbHNlIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGlkKSkge1xuXHRcdHJldHVybiBpZDtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBHZXQgYSBQb3Rpb24gSUQgZnJvbSBhIFVSSVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG90aW9uSUQodXJpOiBzdHJpbmcsIHJlc291cmNlVVJJOiBzdHJpbmcpOiBQb3Rpb25JRCB7XG5cdGNvbnN0IGluZGV4ID0gdXJpLmluZGV4T2YoYCR7cmVzb3VyY2VVUkl9L2ApO1xuXHRpZiAoaW5kZXggIT09IC0xKSB7XG5cdFx0Y29uc3QgaWQgPSB1cmkuc3Vic3RyaW5nKGluZGV4KVxuXHRcdFx0LnNwbGl0KCcvJylcblx0XHRcdC5wb3AoKTtcblx0XHRyZXR1cm4gcGFyc2VQb3Rpb25JRChpZCk7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cblxuLyoqXG4gKiBGaW5kIGEgUG90aW9uIHJlc291cmNlIGJhc2VkIG9uIFVSSVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFBvdGlvblJlc291cmNlKHVyaTogc3RyaW5nLCByZXNvdXJjZXM6IFBvdGlvblJlc291cmNlcyk6IHtyZXNvdXJjZVVSSTogc3RyaW5nLCByZXNvdXJjZTogdHlwZW9mIEl0ZW19IHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgZW50cnkgPSBPYmplY3QuZW50cmllcyhyZXNvdXJjZXMpXG5cdFx0LmZpbmQoKFtyZXNvdXJjZVVSSV0pID0+IHVyaS5pbmRleE9mKGAke3Jlc291cmNlVVJJfS9gKSA9PT0gMCk7XG5cdGlmIChlbnRyeSkge1xuXHRcdGNvbnN0IFtyZXNvdXJjZVVSSSwgcmVzb3VyY2VdID0gZW50cnk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHJlc291cmNlVVJJLFxuXHRcdFx0cmVzb3VyY2Vcblx0XHR9O1xuXHR9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgc29tZSBzdHJpbmcgaXMgYSBQb3Rpb24gVVJJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BvdGlvblVSSSh1cmk6IHN0cmluZywgcmVzb3VyY2VzOiBQb3Rpb25SZXNvdXJjZXMpOiBib29sZWFuIHtcblx0Y29uc3QgZW50cnkgPSBmaW5kUG90aW9uUmVzb3VyY2UodXJpLCByZXNvdXJjZXMpO1xuXHRpZiAoZW50cnkpIHtcblx0XHRyZXR1cm4gZ2V0UG90aW9uSUQodXJpLCBlbnRyeS5yZXNvdXJjZVVSSSkgIT09IG51bGw7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5cbi8qKlxuICogR2V0IHRoZSBQb3Rpb24gVVJJIGZyb20gYSBQb3Rpb24gSlNPTiBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1R5cGVBbmRJZCh7JHR5cGUsICRpZH06IHtba2V5OiBzdHJpbmddOiBhbnl9KTogYm9vbGVhbiB7XG5cdHJldHVybiAodHlwZW9mICRpZCA9PT0gJ3N0cmluZycgfHwgTnVtYmVyLmlzSW50ZWdlcigkaWQpKSAmJiB0eXBlb2YgJHR5cGUgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvdGlvblVSSSh7JHVyaSwgJHJlZiwgJHR5cGUsICRpZH06IHtba2V5OiBzdHJpbmddOiBhbnl9KTogc3RyaW5nIHtcblx0aWYgKHR5cGVvZiAkdXJpID09PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoJHVyaSk7XG5cdH0gZWxzZSBpZiAodHlwZW9mICRyZWYgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCgkcmVmKTtcblx0fSBlbHNlIGlmIChoYXNUeXBlQW5kSWQoeyR0eXBlLCAkaWR9KSkge1xuXHRcdHJldHVybiBgLyR7JHR5cGV9LyR7JGlkfWA7XG5cdH1cblx0cmV0dXJuICcnO1xufVxuXG4vKipcbiAqIFJlbW92ZSBzb21lIHN0cmluZyBmcm9tIGFub3RoZXIgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQcmVmaXhGcm9tVVJJKHVyaTogc3RyaW5nLCBzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICh1cmkuaW5jbHVkZXMoc3RyKSkge1xuXHRcdHJldHVybiB1cmkuc3Vic3RyaW5nKHN0ci5sZW5ndGgpO1xuXHR9XG5cdHJldHVybiB1cmk7XG59XG4vKipcbiAqIEFkZCBhIHByZWZpeCB0byBzb21lIHN0cmluZyAoaWYgbm90IGFscmVhZHkgdGhlcmUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQcmVmaXhUb1VSSSh1cmk6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKHR5cGVvZiBwcmVmaXggPT09ICdzdHJpbmcnICYmICF1cmkuaW5jbHVkZXMocHJlZml4KSkge1xuXHRcdHJldHVybiBgJHtwcmVmaXh9JHt1cml9YDtcblx0fVxuXHRyZXR1cm4gdXJpO1xufVxuXG5cbi8qKlxuICogTWVyZ2UgYXJyYXkgb2Ygb2JqZWN0cyBpbnRvIG9uZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZSguLi5vYmplY3RzOiBBcnJheTx7W2tleTogc3RyaW5nXTogYW55fT4pOiBhbnkge1xuXHRjb25zdCByZXN1bHQgPSB7fTtcblx0Zm9yIChjb25zdCBvYmogb2Ygb2JqZWN0cykge1xuXHRcdE9iamVjdC5hc3NpZ24ocmVzdWx0LCBvYmopO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cblxuLyoqXG4gKiBJbi1NZW1vcnkgY2FjaGVcbiAqIFdpbGwgYmUgdXNlZCBieSBkZWZhdWx0IGJ5IFBvdGlvbiBmb3IgY2FjaGluZyByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNZW1DYWNoZTxUIGV4dGVuZHMgSXRlbT4gaW1wbGVtZW50cyBJdGVtQ2FjaGU8VD4ge1xuXHRwcm90ZWN0ZWQgaXRlbXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxUPj4oKTtcblxuXHRoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pdGVtcy5oYXMoa2V5KTtcblx0fVxuXHRnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcblx0XHRyZXR1cm4gdGhpcy5pdGVtcy5nZXQoa2V5KTtcblx0fVxuXHRwdXQoa2V5OiBzdHJpbmcsIGl0ZW06IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcblx0XHRyZXR1cm4gdGhpcy5pdGVtcy5zZXQoa2V5LCBpdGVtKVxuXHRcdFx0LmdldChrZXkpO1xuXHR9XG5cblx0cmVtb3ZlKGtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5pdGVtcy5kZWxldGUoa2V5KTtcblx0fVxufVxuIl19

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

[{"__symbolic":"module","version":3,"metadata":{"toSnakeCase":{"__symbolic":"function","parameters":["str","separator"],"value":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":11},"defaults":[null,"_"]},"toCamelCase":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"error","message":"Expression form not supported","line":19,"character":20}},"isJsObject":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":28,"character":8},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}}},"isObjectEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"member":"length"},"right":0}},"isFunction":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":42,"character":8},"right":"function"}},"omap":{"__symbolic":"function"},"getErrorMessage":{"__symbolic":"function"},"fromSchemaJSON":{"__symbolic":"function"},"SelfReference":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"matches":[{"__symbolic":"method"}]}},"replaceSelfReferences":{"__symbolic":"function"},"findRoots":{"__symbolic":"function"},"toSelfReference":{"__symbolic":"function","parameters":["uri"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SelfReference"},"arguments":[{"__symbolic":"reference","name":"uri"}]}},"toPotionJSON":{"__symbolic":"function"},"parsePotionID":{"__symbolic":"function"},"getPotionID":{"__symbolic":"function"},"findPotionResource":{"__symbolic":"function"},"isPotionURI":{"__symbolic":"function"},"hasTypeAndId":{"__symbolic":"function","parameters":["$type","$id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":266,"character":9},"right":"string"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Number"},"member":"isInteger"},"arguments":[{"__symbolic":"reference","name":"$id"}]}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":266,"character":62},"right":"string"}}},"getPotionURI":{"__symbolic":"function"},"removePrefixFromURI":{"__symbolic":"function"},"addPrefixToURI":{"__symbolic":"function"},"merge":{"__symbolic":"function"},"MemCache":{"__symbolic":"class","arity":1,"members":{"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"toSnakeCase":{"__symbolic":"function","parameters":["str","separator"],"value":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":11},"defaults":[null,"_"]},"toCamelCase":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"error","message":"Expression form not supported","line":19,"character":20}},"isJsObject":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":28,"character":8},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}}},"isObjectEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"member":"length"},"right":0}},"isFunction":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":42,"character":8},"right":"function"}},"omap":{"__symbolic":"function"},"getErrorMessage":{"__symbolic":"function"},"fromSchemaJSON":{"__symbolic":"function"},"SelfReference":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"matches":[{"__symbolic":"method"}]}},"replaceSelfReferences":{"__symbolic":"function"},"findRoots":{"__symbolic":"function"},"toSelfReference":{"__symbolic":"function","parameters":["uri"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SelfReference"},"arguments":[{"__symbolic":"reference","name":"uri"}]}},"toPotionJSON":{"__symbolic":"function"},"parsePotionID":{"__symbolic":"function"},"getPotionID":{"__symbolic":"function"},"findPotionResource":{"__symbolic":"function"},"isPotionURI":{"__symbolic":"function"},"hasTypeAndId":{"__symbolic":"function","parameters":["$type","$id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":266,"character":9},"right":"string"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Number"},"member":"isInteger"},"arguments":[{"__symbolic":"reference","name":"$id"}]}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":266,"character":62},"right":"string"}}},"getPotionURI":{"__symbolic":"function"},"removePrefixFromURI":{"__symbolic":"function"},"addPrefixToURI":{"__symbolic":"function"},"merge":{"__symbolic":"function"},"MemCache":{"__symbolic":"class","arity":1,"members":{"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}}}}]
[{"__symbolic":"module","version":3,"metadata":{"toSnakeCase":{"__symbolic":"function","parameters":["str","separator"],"value":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":11},"defaults":[null,"_"]},"toCamelCase":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"error","message":"Expression form not supported","line":19,"character":20}},"isJsObject":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":28,"character":8},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}}},"isObjectEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"member":"length"},"right":0}},"isFunction":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":42,"character":8},"right":"function"}},"omap":{"__symbolic":"function"},"getErrorMessage":{"__symbolic":"function"},"fromSchemaJSON":{"__symbolic":"function"},"SelfReference":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"matches":[{"__symbolic":"method"}]}},"replaceSelfReferences":{"__symbolic":"function"},"findRoots":{"__symbolic":"function"},"toSelfReference":{"__symbolic":"function","parameters":["uri"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SelfReference"},"arguments":[{"__symbolic":"reference","name":"uri"}]}},"toPotionJSON":{"__symbolic":"function"},"parsePotionID":{"__symbolic":"function"},"getPotionID":{"__symbolic":"function"},"findPotionResource":{"__symbolic":"function"},"isPotionURI":{"__symbolic":"function"},"hasTypeAndId":{"__symbolic":"function","parameters":["$type","$id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":271,"character":9},"right":"string"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Number"},"member":"isInteger"},"arguments":[{"__symbolic":"reference","name":"$id"}]}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":271,"character":62},"right":"string"}}},"getPotionURI":{"__symbolic":"function"},"removePrefixFromURI":{"__symbolic":"function"},"addPrefixToURI":{"__symbolic":"function"},"merge":{"__symbolic":"function"},"MemCache":{"__symbolic":"class","arity":1,"members":{"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"toSnakeCase":{"__symbolic":"function","parameters":["str","separator"],"value":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":11},"defaults":[null,"_"]},"toCamelCase":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"error","message":"Expression form not supported","line":19,"character":20}},"isJsObject":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":28,"character":8},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}}},"isObjectEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"member":"length"},"right":0}},"isFunction":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":42,"character":8},"right":"function"}},"omap":{"__symbolic":"function"},"getErrorMessage":{"__symbolic":"function"},"fromSchemaJSON":{"__symbolic":"function"},"SelfReference":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"matches":[{"__symbolic":"method"}]}},"replaceSelfReferences":{"__symbolic":"function"},"findRoots":{"__symbolic":"function"},"toSelfReference":{"__symbolic":"function","parameters":["uri"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SelfReference"},"arguments":[{"__symbolic":"reference","name":"uri"}]}},"toPotionJSON":{"__symbolic":"function"},"parsePotionID":{"__symbolic":"function"},"getPotionID":{"__symbolic":"function"},"findPotionResource":{"__symbolic":"function"},"isPotionURI":{"__symbolic":"function"},"hasTypeAndId":{"__symbolic":"function","parameters":["$type","$id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":271,"character":9},"right":"string"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Number"},"member":"isInteger"},"arguments":[{"__symbolic":"reference","name":"$id"}]}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":271,"character":62},"right":"string"}}},"getPotionURI":{"__symbolic":"function"},"removePrefixFromURI":{"__symbolic":"function"},"addPrefixToURI":{"__symbolic":"function"},"merge":{"__symbolic":"function"},"MemCache":{"__symbolic":"class","arity":1,"members":{"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}}}}]
{
"name": "potion-client",
"version": "1.5.6",
"version": "1.5.7",
"description": "A ES6 client for APIs written in Flask-Potion",

@@ -5,0 +5,0 @@ "keywords": [

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc