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

tag-tree

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tag-tree - npm Package Compare versions

Comparing version 0.4.1 to 1.0.0

.circleci/config.yml

24

js/index.js

@@ -1,26 +0,24 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
var _TagTree = require('./TagTree');
Object.defineProperty(exports, 'TagTree', {
Object.defineProperty(exports, "TagTree", {
enumerable: true,
get: function get() {
return _interopRequireDefault(_TagTree).default;
return _TagTree.default;
}
});
var _TagTreeNode = require('./TagTreeNode');
Object.defineProperty(exports, 'TagTreeNode', {
Object.defineProperty(exports, "TagTreeNode", {
enumerable: true,
get: function get() {
return _interopRequireDefault(_TagTreeNode).default;
return _TagTreeNode.default;
}
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs0Q0FFUUEsTzs7Ozs7Ozs7O2dEQUdBQSxPIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQGZsb3cgKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIFRhZ1RyZWV9IGZyb20gJy4vVGFnVHJlZSc7XG5leHBvcnQgdHlwZSB7VGFnVHJlZUNvbnRyb2xsZXJ9IGZyb20gJy4vVGFnVHJlZSc7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBUYWdUcmVlTm9kZX0gZnJvbSAnLi9UYWdUcmVlTm9kZSc7XG5leHBvcnQgdHlwZSB7VGFnVHJlZU5vZGVDb250cm9sbGVyfSBmcm9tICcuL1RhZ1RyZWVOb2RlJztcbiJdfQ==
var _TagTree = _interopRequireDefault(require("./TagTree"));
var _TagTreeNode = _interopRequireDefault(require("./TagTreeNode"));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUdBIiwic291cmNlc0NvbnRlbnQiOlsiLyogQGZsb3cgKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIFRhZ1RyZWV9IGZyb20gJy4vVGFnVHJlZSc7XG5leHBvcnQgdHlwZSB7VGFnVHJlZUluaXQsIFRhZ1RyZWVDb250cm9sbGVyfSBmcm9tICcuL1RhZ1RyZWUnO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgVGFnVHJlZU5vZGV9IGZyb20gJy4vVGFnVHJlZU5vZGUnO1xuIl19

@@ -1,63 +0,44 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _map = require('babel-runtime/core-js/map');
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _map2 = _interopRequireDefault(_map);
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _set = require('babel-runtime/core-js/set');
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _set2 = _interopRequireDefault(_set);
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _liveSet = _interopRequireDefault(require("live-set"));
var _createClass2 = require('babel-runtime/helpers/createClass');
var _TagTreeNode2 = _interopRequireDefault(require("./TagTreeNode"));
var _createClass3 = _interopRequireDefault(_createClass2);
var EMPTY_ARRAY = Object.freeze([]);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var TagTree =
/*#__PURE__*/
function (_TagTreeNode) {
(0, _inherits2.default)(TagTree, _TagTreeNode);
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _freeze = require('babel-runtime/core-js/object/freeze');
var _freeze2 = _interopRequireDefault(_freeze);
var _liveSet = require('live-set');
var _liveSet2 = _interopRequireDefault(_liveSet);
var _TagTreeNode2 = require('./TagTreeNode');
var _TagTreeNode3 = _interopRequireDefault(_TagTreeNode2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var EMPTY_ARRAY = (0, _freeze2.default)([]);
var TagTree = function (_TagTreeNode) {
(0, _inherits3.default)(TagTree, _TagTreeNode);
function TagTree(init) {
(0, _classCallCheck3.default)(this, TagTree);
var _this;
var rootNodeController = void 0;
var _this = (0, _possibleConstructorReturn3.default)(this, (TagTree.__proto__ || (0, _getPrototypeOf2.default)(TagTree)).call(this, {
(0, _classCallCheck2.default)(this, TagTree);
var rootNodeController;
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TagTree).call(this, {
value: init.root,
parent: null,
ownedTags: new _set2.default(init.tags.map(function (_ref) {
ownedTags: new Set(init.tags.map(function (_ref) {
var tag = _ref.tag;

@@ -70,15 +51,15 @@ return tag;

}));
_this._nodeControllers = new _map2.default();
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "_nodeControllers", new Map());
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "_lookupTable", void 0);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "_allByTag", void 0);
if (!rootNodeController) throw new Error();
_this._nodeControllers.set(_this, rootNodeController);
_this._lookupTable = new _map2.default([[init.root, [_this]]]);
_this._nodeControllers.set((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), rootNodeController);
_this._allByTag = new _map2.default();
_this._lookupTable = new Map([[init.root, [(0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))]]]);
_this._allByTag = new Map();
init.tags.forEach(function (_ref2) {
var tag = _ref2.tag;
var _LiveSet$active = _liveSet2.default.active(),
var _LiveSet$active = _liveSet.default.active(),
liveSet = _LiveSet$active.liveSet,

@@ -88,25 +69,28 @@ controller = _LiveSet$active.controller;

if (_this._allByTag.has(tag)) throw new Error('Tag specified twice: ' + tag);
_this._allByTag.set(tag, { ownedTags: new _set2.default(), liveSet: liveSet, controller: controller });
_this._allByTag.set(tag, {
ownedTags: new Set(),
liveSet: liveSet,
controller: controller
});
});
init.tags.forEach(function (_ref3) {
var tag = _ref3.tag,
ownedBy = _ref3.ownedBy;
if (!ownedBy) return;
ownedBy.forEach(function (owningTag) {
var entry = _this._allByTag.get(owningTag);
if (!entry) throw new Error('unknown ownedBy value for ' + tag + ': ' + owningTag);
if (!entry) throw new Error("unknown ownedBy value for ".concat(tag, ": ").concat(owningTag));
entry.ownedTags.add(tag);
});
});
var controller = {
tree: _this,
tree: (0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)),
addTaggedValue: function addTaggedValue(parent, tag, value) {
var tagEntry = _this._allByTag.get(tag);
if (!tagEntry) throw new Error('unknown tag: ' + tag);
var controller = void 0;
var node = new _TagTreeNode3.default({
if (!tagEntry) throw new Error("unknown tag: ".concat(tag));
var controller;
var node = new _TagTreeNode2.default({
value: value,

@@ -120,2 +104,3 @@ parent: parent,

if (!controller) throw new Error();
_this._nodeControllers.set(node, controller);

@@ -126,2 +111,3 @@

var valueNodes = _this._lookupTable.get(value);
if (valueNodes) {

@@ -134,5 +120,5 @@ valueNodes.push(node);

var parentController = _this._nodeControllers.get(parent);
if (!parentController) throw new Error('parent is not part of TagTree');
parentController.addOwnedNode(tag, node);
return node;

@@ -142,10 +128,14 @@ },

var tagEntry = _this._allByTag.get(tag);
if (!tagEntry) throw new Error('unknown tag: ' + tag);
if (!tagEntry) throw new Error("unknown tag: ".concat(tag));
var parentController = _this._nodeControllers.get(parent);
if (!parentController) throw new Error('parent is not part of TagTree');
var value = node.getValue();
var value = node.getValue();
var nodes = _this._lookupTable.get(value);
if (!nodes) throw new Error('node was missing from lookup table before removal');
if (nodes.length > 1) {

@@ -164,5 +154,5 @@ var ix = nodes.indexOf(node);

});
tagEntry.controller.remove(node);
parentController.removeOwnedNode(tag, node);
_this._nodeControllers.delete(node);

@@ -174,5 +164,5 @@ },

});
_this._allByTag.forEach(function (_ref4) {
var controller = _ref4.controller;
controller.end();

@@ -183,28 +173,34 @@ });

init.executor(controller);
init.executor = function () {}; // release reference
return _this;
}
(0, _createClass3.default)(TagTree, [{
key: 'getNodesForValue',
(0, _createClass2.default)(TagTree, [{
key: "getNodesForValue",
value: function getNodesForValue(value) {
var l = this._lookupTable.get(value);
return l ? (0, _freeze2.default)(l.slice()) : EMPTY_ARRAY;
return l ? Object.freeze(l.slice()) : EMPTY_ARRAY;
}
}, {
key: 'getAllByTag',
key: "getAllByTag",
value: function getAllByTag(tag) {
var entry = this._allByTag.get(tag);
if (!entry) throw new Error('tag does not exist in TagTree: ' + tag);
if (!entry) throw new Error("tag does not exist in TagTree: ".concat(tag));
return entry.liveSet;
}
}, {
key: 'getAll',
key: "getAll",
value: function getAll() {
var m = new _map2.default();
var m = new Map();
this._allByTag.forEach(function (_ref5, tag) {
var liveSet = _ref5.liveSet;
m.set(tag, liveSet);
});
return m;

@@ -214,6 +210,7 @@ }

return TagTree;
}(_TagTreeNode3.default);
}(_TagTreeNode2.default);
exports.default = TagTree;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9UYWdUcmVlLmpzIl0sIm5hbWVzIjpbIkVNUFRZX0FSUkFZIiwiVGFnVHJlZSIsImluaXQiLCJyb290Tm9kZUNvbnRyb2xsZXIiLCJ2YWx1ZSIsInJvb3QiLCJwYXJlbnQiLCJvd25lZFRhZ3MiLCJ0YWdzIiwibWFwIiwidGFnIiwiZXhlY3V0b3IiLCJjb250cm9sbGVyIiwiX25vZGVDb250cm9sbGVycyIsIkVycm9yIiwic2V0IiwiX2xvb2t1cFRhYmxlIiwiX2FsbEJ5VGFnIiwiZm9yRWFjaCIsImFjdGl2ZSIsImxpdmVTZXQiLCJoYXMiLCJvd25lZEJ5IiwiZW50cnkiLCJnZXQiLCJvd25pbmdUYWciLCJhZGQiLCJ0cmVlIiwiYWRkVGFnZ2VkVmFsdWUiLCJ0YWdFbnRyeSIsIm5vZGUiLCJfY29udHJvbGxlciIsInZhbHVlTm9kZXMiLCJwdXNoIiwicGFyZW50Q29udHJvbGxlciIsImFkZE93bmVkTm9kZSIsInJlbW92ZVRhZ2dlZE5vZGUiLCJnZXRWYWx1ZSIsIm5vZGVzIiwibGVuZ3RoIiwiaXgiLCJpbmRleE9mIiwic3BsaWNlIiwiZGVsZXRlIiwiZ2V0T3duZWQiLCJ2YWx1ZXMiLCJjaGlsZE5vZGUiLCJyZW1vdmUiLCJyZW1vdmVPd25lZE5vZGUiLCJlbmQiLCJsIiwic2xpY2UiLCJtIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7O0FBR0E7Ozs7OztBQWdCQSxJQUFNQSxjQUFxQixzQkFBYyxFQUFkLENBQTNCOztJQUVxQkMsTzs7O0FBU25CLG1CQUFZQyxJQUFaLEVBQWtDO0FBQUE7O0FBQ2hDLFFBQUlDLDJCQUFKOztBQURnQyx3SUFFMUI7QUFDSkMsYUFBT0YsS0FBS0csSUFEUjtBQUVKQyxjQUFRLElBRko7QUFHSkMsaUJBQVcsa0JBQVFMLEtBQUtNLElBQUwsQ0FBVUMsR0FBVixDQUFjO0FBQUEsWUFBRUMsR0FBRixRQUFFQSxHQUFGO0FBQUEsZUFBV0EsR0FBWDtBQUFBLE9BQWQsQ0FBUixDQUhQO0FBSUpDLGdCQUFVLGtCQUFDQyxVQUFELEVBQWdCO0FBQ3hCVCw2QkFBcUJTLFVBQXJCO0FBQ0Q7QUFORyxLQUYwQjs7QUFBQSxVQVJsQ0MsZ0JBUWtDLEdBUmdDLG1CQVFoQzs7QUFVaEMsUUFBSSxDQUFDVixrQkFBTCxFQUF5QixNQUFNLElBQUlXLEtBQUosRUFBTjtBQUN6QixVQUFLRCxnQkFBTCxDQUFzQkUsR0FBdEIsUUFBZ0NaLGtCQUFoQzs7QUFFQSxVQUFLYSxZQUFMLEdBQW9CLGtCQUFRLENBQUMsQ0FBQ2QsS0FBS0csSUFBTixFQUFZLE9BQVosQ0FBRCxDQUFSLENBQXBCOztBQUVBLFVBQUtZLFNBQUwsR0FBaUIsbUJBQWpCO0FBQ0FmLFNBQUtNLElBQUwsQ0FBVVUsT0FBVixDQUFrQixpQkFBVztBQUFBLFVBQVRSLEdBQVMsU0FBVEEsR0FBUzs7QUFBQSw0QkFDRyxrQkFBUVMsTUFBUixFQURIO0FBQUEsVUFDcEJDLE9BRG9CLG1CQUNwQkEsT0FEb0I7QUFBQSxVQUNYUixVQURXLG1CQUNYQSxVQURXOztBQUUzQixVQUFJLE1BQUtLLFNBQUwsQ0FBZUksR0FBZixDQUFtQlgsR0FBbkIsQ0FBSixFQUE2QixNQUFNLElBQUlJLEtBQUosQ0FBVSwwQkFBd0JKLEdBQWxDLENBQU47QUFDN0IsWUFBS08sU0FBTCxDQUFlRixHQUFmLENBQW1CTCxHQUFuQixFQUF3QixFQUFDSCxXQUFXLG1CQUFaLEVBQXVCYSxnQkFBdkIsRUFBZ0NSLHNCQUFoQyxFQUF4QjtBQUNELEtBSkQ7O0FBTUFWLFNBQUtNLElBQUwsQ0FBVVUsT0FBVixDQUFrQixpQkFBb0I7QUFBQSxVQUFsQlIsR0FBa0IsU0FBbEJBLEdBQWtCO0FBQUEsVUFBYlksT0FBYSxTQUFiQSxPQUFhOztBQUNwQyxVQUFJLENBQUNBLE9BQUwsRUFBYztBQUNkQSxjQUFRSixPQUFSLENBQWdCLHFCQUFhO0FBQzNCLFlBQU1LLFFBQVEsTUFBS04sU0FBTCxDQUFlTyxHQUFmLENBQW1CQyxTQUFuQixDQUFkO0FBQ0EsWUFBSSxDQUFDRixLQUFMLEVBQVksTUFBTSxJQUFJVCxLQUFKLGdDQUF1Q0osR0FBdkMsVUFBK0NlLFNBQS9DLENBQU47QUFDWkYsY0FBTWhCLFNBQU4sQ0FBZ0JtQixHQUFoQixDQUFvQmhCLEdBQXBCO0FBQ0QsT0FKRDtBQUtELEtBUEQ7O0FBU0EsUUFBTUUsYUFBYTtBQUNqQmUsaUJBRGlCO0FBRWpCQyxzQkFBZ0Isd0JBQUN0QixNQUFELEVBQVNJLEdBQVQsRUFBY04sS0FBZCxFQUF3QjtBQUN0QyxZQUFNeUIsV0FBVyxNQUFLWixTQUFMLENBQWVPLEdBQWYsQ0FBbUJkLEdBQW5CLENBQWpCO0FBQ0EsWUFBSSxDQUFDbUIsUUFBTCxFQUFlLE1BQU0sSUFBSWYsS0FBSixtQkFBMEJKLEdBQTFCLENBQU47O0FBRWYsWUFBSUUsbUJBQUo7QUFDQSxZQUFNa0IsT0FBTywwQkFBZ0I7QUFDM0IxQixzQkFEMkI7QUFFM0JFLHdCQUYyQjtBQUczQkMscUJBQVdzQixTQUFTdEIsU0FITztBQUkzQkksb0JBQVUsa0JBQUNvQixXQUFELEVBQWlCO0FBQ3pCbkIseUJBQWFtQixXQUFiO0FBQ0Q7QUFOMEIsU0FBaEIsQ0FBYjtBQVFBLFlBQUksQ0FBQ25CLFVBQUwsRUFBaUIsTUFBTSxJQUFJRSxLQUFKLEVBQU47QUFDakIsY0FBS0QsZ0JBQUwsQ0FBc0JFLEdBQXRCLENBQTBCZSxJQUExQixFQUFnQ2xCLFVBQWhDOztBQUVBaUIsaUJBQVNqQixVQUFULENBQW9CYyxHQUFwQixDQUF3QkksSUFBeEI7O0FBRUEsWUFBTUUsYUFBYSxNQUFLaEIsWUFBTCxDQUFrQlEsR0FBbEIsQ0FBc0JwQixLQUF0QixDQUFuQjtBQUNBLFlBQUk0QixVQUFKLEVBQWdCO0FBQ2RBLHFCQUFXQyxJQUFYLENBQWdCSCxJQUFoQjtBQUNELFNBRkQsTUFFTztBQUNMLGdCQUFLZCxZQUFMLENBQWtCRCxHQUFsQixDQUFzQlgsS0FBdEIsRUFBNkIsQ0FBQzBCLElBQUQsQ0FBN0I7QUFDRDs7QUFFRCxZQUFNSSxtQkFBbUIsTUFBS3JCLGdCQUFMLENBQXNCVyxHQUF0QixDQUEwQmxCLE1BQTFCLENBQXpCO0FBQ0EsWUFBSSxDQUFDNEIsZ0JBQUwsRUFBdUIsTUFBTSxJQUFJcEIsS0FBSixDQUFVLCtCQUFWLENBQU47QUFDdkJvQix5QkFBaUJDLFlBQWpCLENBQThCekIsR0FBOUIsRUFBbUNvQixJQUFuQzs7QUFFQSxlQUFPQSxJQUFQO0FBQ0QsT0FoQ2dCO0FBaUNqQk0sd0JBQWtCLDBCQUFDOUIsTUFBRCxFQUFTSSxHQUFULEVBQWNvQixJQUFkLEVBQXVCO0FBQ3ZDLFlBQU1ELFdBQVcsTUFBS1osU0FBTCxDQUFlTyxHQUFmLENBQW1CZCxHQUFuQixDQUFqQjtBQUNBLFlBQUksQ0FBQ21CLFFBQUwsRUFBZSxNQUFNLElBQUlmLEtBQUosbUJBQTBCSixHQUExQixDQUFOOztBQUVmLFlBQU13QixtQkFBbUIsTUFBS3JCLGdCQUFMLENBQXNCVyxHQUF0QixDQUEwQmxCLE1BQTFCLENBQXpCO0FBQ0EsWUFBSSxDQUFDNEIsZ0JBQUwsRUFBdUIsTUFBTSxJQUFJcEIsS0FBSixDQUFVLCtCQUFWLENBQU47O0FBRXZCLFlBQU1WLFFBQVEwQixLQUFLTyxRQUFMLEVBQWQ7QUFDQSxZQUFNQyxRQUFRLE1BQUt0QixZQUFMLENBQWtCUSxHQUFsQixDQUFzQnBCLEtBQXRCLENBQWQ7QUFDQSxZQUFJLENBQUNrQyxLQUFMLEVBQVksTUFBTSxJQUFJeEIsS0FBSixDQUFVLG1EQUFWLENBQU47QUFDWixZQUFJd0IsTUFBTUMsTUFBTixHQUFlLENBQW5CLEVBQXNCO0FBQ3BCLGNBQU1DLEtBQUtGLE1BQU1HLE9BQU4sQ0FBY1gsSUFBZCxDQUFYO0FBQ0EsY0FBSVUsS0FBSyxDQUFULEVBQVksTUFBTSxJQUFJMUIsS0FBSixDQUFVLDJEQUFWLENBQU47QUFDWndCLGdCQUFNSSxNQUFOLENBQWFGLEVBQWIsRUFBaUIsQ0FBakI7QUFDRCxTQUpELE1BSU87QUFDTCxnQkFBS3hCLFlBQUwsQ0FBa0IyQixNQUFsQixDQUF5QnZDLEtBQXpCO0FBQ0Q7O0FBRUQwQixhQUFLYyxRQUFMLEdBQWdCMUIsT0FBaEIsQ0FBd0IsVUFBQ0UsT0FBRCxFQUFVVixHQUFWLEVBQWtCO0FBQ3hDVSxrQkFBUXlCLE1BQVIsR0FBaUIzQixPQUFqQixDQUF5QixxQkFBYTtBQUNwQ04sdUJBQVd3QixnQkFBWCxDQUE0Qk4sSUFBNUIsRUFBa0NwQixHQUFsQyxFQUF1Q29DLFNBQXZDO0FBQ0QsV0FGRDtBQUdELFNBSkQ7O0FBTUFqQixpQkFBU2pCLFVBQVQsQ0FBb0JtQyxNQUFwQixDQUEyQmpCLElBQTNCO0FBQ0FJLHlCQUFpQmMsZUFBakIsQ0FBaUN0QyxHQUFqQyxFQUFzQ29CLElBQXRDO0FBQ0EsY0FBS2pCLGdCQUFMLENBQXNCOEIsTUFBdEIsQ0FBNkJiLElBQTdCO0FBQ0QsT0E1RGdCO0FBNkRqQm1CLFdBQUssZUFBTTtBQUNULGNBQUtwQyxnQkFBTCxDQUFzQkssT0FBdEIsQ0FBOEIsc0JBQWM7QUFDMUNOLHFCQUFXcUMsR0FBWDtBQUNELFNBRkQ7QUFHQSxjQUFLaEMsU0FBTCxDQUFlQyxPQUFmLENBQXVCLGlCQUFrQjtBQUFBLGNBQWhCTixVQUFnQixTQUFoQkEsVUFBZ0I7O0FBQ3ZDQSxxQkFBV3FDLEdBQVg7QUFDRCxTQUZEO0FBR0Q7QUFwRWdCLEtBQW5CO0FBc0VBL0MsU0FBS1MsUUFBTCxDQUFjQyxVQUFkO0FBQ0FWLFNBQUtTLFFBQUwsR0FBZ0IsWUFBTSxDQUFFLENBQXhCLENBdEdnQyxDQXNHTjtBQXRHTTtBQXVHakM7Ozs7cUNBRWdCUCxLLEVBQWlDO0FBQ2hELFVBQU04QyxJQUFJLEtBQUtsQyxZQUFMLENBQWtCUSxHQUFsQixDQUFzQnBCLEtBQXRCLENBQVY7QUFDQSxhQUFPOEMsSUFBSSxzQkFBY0EsRUFBRUMsS0FBRixFQUFkLENBQUosR0FBK0JuRCxXQUF0QztBQUNEOzs7Z0NBRVdVLEcsRUFBc0M7QUFDaEQsVUFBTWEsUUFBUSxLQUFLTixTQUFMLENBQWVPLEdBQWYsQ0FBbUJkLEdBQW5CLENBQWQ7QUFDQSxVQUFJLENBQUNhLEtBQUwsRUFBWSxNQUFNLElBQUlULEtBQUoscUNBQTRDSixHQUE1QyxDQUFOO0FBQ1osYUFBT2EsTUFBTUgsT0FBYjtBQUNEOzs7NkJBRThDO0FBQzdDLFVBQU1nQyxJQUFJLG1CQUFWO0FBQ0EsV0FBS25DLFNBQUwsQ0FBZUMsT0FBZixDQUF1QixpQkFBWVIsR0FBWixFQUFvQjtBQUFBLFlBQWxCVSxPQUFrQixTQUFsQkEsT0FBa0I7O0FBQ3pDZ0MsVUFBRXJDLEdBQUYsQ0FBTUwsR0FBTixFQUFXVSxPQUFYO0FBQ0QsT0FGRDtBQUdBLGFBQU9nQyxDQUFQO0FBQ0Q7Ozs7O2tCQW5Ja0JuRCxPIiwiZmlsZSI6IlRhZ1RyZWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgTGl2ZVNldCBmcm9tICdsaXZlLXNldCc7XG5pbXBvcnQgdHlwZSB7TGl2ZVNldENvbnRyb2xsZXJ9IGZyb20gJ2xpdmUtc2V0JztcblxuaW1wb3J0IFRhZ1RyZWVOb2RlIGZyb20gJy4vVGFnVHJlZU5vZGUnO1xuaW1wb3J0IHR5cGUge1RhZ1RyZWVOb2RlQ29udHJvbGxlcn0gZnJvbSAnLi9UYWdUcmVlTm9kZSc7XG5cbmV4cG9ydCB0eXBlIFRhZ1RyZWVDb250cm9sbGVyPFQ+ID0ge1xuICB0cmVlOiBUYWdUcmVlPFQ+O1xuICBhZGRUYWdnZWRWYWx1ZShwYXJlbnQ6IFRhZ1RyZWVOb2RlPFQ+LCB0YWc6IHN0cmluZywgdmFsdWU6IFQpOiBUYWdUcmVlTm9kZTxUPjtcbiAgcmVtb3ZlVGFnZ2VkTm9kZShwYXJlbnQ6IFRhZ1RyZWVOb2RlPFQ+LCB0YWc6IHN0cmluZywgbm9kZTogVGFnVHJlZU5vZGU8VD4pOiB2b2lkO1xuICBlbmQoKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFRhZ1RyZWVJbml0PFQ+ID0ge3xcbiAgcm9vdDogVDtcbiAgdGFnczogQXJyYXk8e3wgdGFnOiBzdHJpbmcsIG93bmVkQnk/OiA/QXJyYXk8c3RyaW5nPiB8fT47XG4gIGV4ZWN1dG9yOiAoY29udHJvbGxlcjogVGFnVHJlZUNvbnRyb2xsZXI8VD4pID0+IHZvaWQ7XG58fTtcblxuY29uc3QgRU1QVFlfQVJSQVk6IGFueVtdID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhZ1RyZWU8VD4gZXh0ZW5kcyBUYWdUcmVlTm9kZTxUPiB7XG4gIF9ub2RlQ29udHJvbGxlcnM6IE1hcDxUYWdUcmVlTm9kZTxUPiwgVGFnVHJlZU5vZGVDb250cm9sbGVyPFQ+PiA9IG5ldyBNYXAoKTtcbiAgX2xvb2t1cFRhYmxlOiBNYXA8VCwgQXJyYXk8VGFnVHJlZU5vZGU8VD4+PjtcbiAgX2FsbEJ5VGFnOiBNYXA8c3RyaW5nLCB7XG4gICAgb3duZWRUYWdzOiBTZXQ8c3RyaW5nPjtcbiAgICBsaXZlU2V0OiBMaXZlU2V0PFRhZ1RyZWVOb2RlPFQ+PjtcbiAgICBjb250cm9sbGVyOiBMaXZlU2V0Q29udHJvbGxlcjxUYWdUcmVlTm9kZTxUPj47XG4gIH0+O1xuXG4gIGNvbnN0cnVjdG9yKGluaXQ6IFRhZ1RyZWVJbml0PFQ+KSB7XG4gICAgbGV0IHJvb3ROb2RlQ29udHJvbGxlcjtcbiAgICBzdXBlcih7XG4gICAgICB2YWx1ZTogaW5pdC5yb290LFxuICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgb3duZWRUYWdzOiBuZXcgU2V0KGluaXQudGFncy5tYXAoKHt0YWd9KSA9PiB0YWcpKSxcbiAgICAgIGV4ZWN1dG9yOiAoY29udHJvbGxlcikgPT4ge1xuICAgICAgICByb290Tm9kZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcm9vdE5vZGVDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB0aGlzLl9ub2RlQ29udHJvbGxlcnMuc2V0KHRoaXMsIHJvb3ROb2RlQ29udHJvbGxlcik7XG5cbiAgICB0aGlzLl9sb29rdXBUYWJsZSA9IG5ldyBNYXAoW1tpbml0LnJvb3QsIFt0aGlzXV1dKTtcblxuICAgIHRoaXMuX2FsbEJ5VGFnID0gbmV3IE1hcCgpO1xuICAgIGluaXQudGFncy5mb3JFYWNoKCh7dGFnfSkgPT4ge1xuICAgICAgY29uc3Qge2xpdmVTZXQsIGNvbnRyb2xsZXJ9ID0gTGl2ZVNldC5hY3RpdmUoKTtcbiAgICAgIGlmICh0aGlzLl9hbGxCeVRhZy5oYXModGFnKSkgdGhyb3cgbmV3IEVycm9yKCdUYWcgc3BlY2lmaWVkIHR3aWNlOiAnK3RhZyk7XG4gICAgICB0aGlzLl9hbGxCeVRhZy5zZXQodGFnLCB7b3duZWRUYWdzOiBuZXcgU2V0KCksIGxpdmVTZXQsIGNvbnRyb2xsZXJ9KTtcbiAgICB9KTtcblxuICAgIGluaXQudGFncy5mb3JFYWNoKCh7dGFnLCBvd25lZEJ5fSkgPT4ge1xuICAgICAgaWYgKCFvd25lZEJ5KSByZXR1cm47XG4gICAgICBvd25lZEJ5LmZvckVhY2gob3duaW5nVGFnID0+IHtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9hbGxCeVRhZy5nZXQob3duaW5nVGFnKTtcbiAgICAgICAgaWYgKCFlbnRyeSkgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIG93bmVkQnkgdmFsdWUgZm9yICR7dGFnfTogJHtvd25pbmdUYWd9YCk7XG4gICAgICAgIGVudHJ5Lm93bmVkVGFncy5hZGQodGFnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29udHJvbGxlciA9IHtcbiAgICAgIHRyZWU6IHRoaXMsXG4gICAgICBhZGRUYWdnZWRWYWx1ZTogKHBhcmVudCwgdGFnLCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0YWdFbnRyeSA9IHRoaXMuX2FsbEJ5VGFnLmdldCh0YWcpO1xuICAgICAgICBpZiAoIXRhZ0VudHJ5KSB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdGFnOiAke3RhZ31gKTtcblxuICAgICAgICBsZXQgY29udHJvbGxlcjtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBUYWdUcmVlTm9kZSh7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgcGFyZW50LFxuICAgICAgICAgIG93bmVkVGFnczogdGFnRW50cnkub3duZWRUYWdzLFxuICAgICAgICAgIGV4ZWN1dG9yOiAoX2NvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBfY29udHJvbGxlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWNvbnRyb2xsZXIpIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICB0aGlzLl9ub2RlQ29udHJvbGxlcnMuc2V0KG5vZGUsIGNvbnRyb2xsZXIpO1xuXG4gICAgICAgIHRhZ0VudHJ5LmNvbnRyb2xsZXIuYWRkKG5vZGUpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlTm9kZXMgPSB0aGlzLl9sb29rdXBUYWJsZS5nZXQodmFsdWUpO1xuICAgICAgICBpZiAodmFsdWVOb2Rlcykge1xuICAgICAgICAgIHZhbHVlTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9sb29rdXBUYWJsZS5zZXQodmFsdWUsIFtub2RlXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRDb250cm9sbGVyID0gdGhpcy5fbm9kZUNvbnRyb2xsZXJzLmdldChwYXJlbnQpO1xuICAgICAgICBpZiAoIXBhcmVudENvbnRyb2xsZXIpIHRocm93IG5ldyBFcnJvcigncGFyZW50IGlzIG5vdCBwYXJ0IG9mIFRhZ1RyZWUnKTtcbiAgICAgICAgcGFyZW50Q29udHJvbGxlci5hZGRPd25lZE5vZGUodGFnLCBub2RlKTtcblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0sXG4gICAgICByZW1vdmVUYWdnZWROb2RlOiAocGFyZW50LCB0YWcsIG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgdGFnRW50cnkgPSB0aGlzLl9hbGxCeVRhZy5nZXQodGFnKTtcbiAgICAgICAgaWYgKCF0YWdFbnRyeSkgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIHRhZzogJHt0YWd9YCk7XG5cbiAgICAgICAgY29uc3QgcGFyZW50Q29udHJvbGxlciA9IHRoaXMuX25vZGVDb250cm9sbGVycy5nZXQocGFyZW50KTtcbiAgICAgICAgaWYgKCFwYXJlbnRDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoJ3BhcmVudCBpcyBub3QgcGFydCBvZiBUYWdUcmVlJyk7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBub2RlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5fbG9va3VwVGFibGUuZ2V0KHZhbHVlKTtcbiAgICAgICAgaWYgKCFub2RlcykgdGhyb3cgbmV3IEVycm9yKCdub2RlIHdhcyBtaXNzaW5nIGZyb20gbG9va3VwIHRhYmxlIGJlZm9yZSByZW1vdmFsJyk7XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc3QgaXggPSBub2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgICAgIGlmIChpeCA8IDApIHRocm93IG5ldyBFcnJvcignbm9kZSB3YXMgbWlzc2luZyBmcm9tIGxpc3QgaW4gbG9va3VwIHRhYmxlIGJlZm9yZSByZW1vdmFsJyk7XG4gICAgICAgICAgbm9kZXMuc3BsaWNlKGl4LCAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9sb29rdXBUYWJsZS5kZWxldGUodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5nZXRPd25lZCgpLmZvckVhY2goKGxpdmVTZXQsIHRhZykgPT4ge1xuICAgICAgICAgIGxpdmVTZXQudmFsdWVzKCkuZm9yRWFjaChjaGlsZE5vZGUgPT4ge1xuICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVUYWdnZWROb2RlKG5vZGUsIHRhZywgY2hpbGROb2RlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGFnRW50cnkuY29udHJvbGxlci5yZW1vdmUobm9kZSk7XG4gICAgICAgIHBhcmVudENvbnRyb2xsZXIucmVtb3ZlT3duZWROb2RlKHRhZywgbm9kZSk7XG4gICAgICAgIHRoaXMuX25vZGVDb250cm9sbGVycy5kZWxldGUobm9kZSk7XG4gICAgICB9LFxuICAgICAgZW5kOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX25vZGVDb250cm9sbGVycy5mb3JFYWNoKGNvbnRyb2xsZXIgPT4ge1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5kKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9hbGxCeVRhZy5mb3JFYWNoKCh7Y29udHJvbGxlcn0pID0+IHtcbiAgICAgICAgICBjb250cm9sbGVyLmVuZCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGluaXQuZXhlY3V0b3IoY29udHJvbGxlcik7XG4gICAgaW5pdC5leGVjdXRvciA9ICgpID0+IHt9OyAvLyByZWxlYXNlIHJlZmVyZW5jZVxuICB9XG5cbiAgZ2V0Tm9kZXNGb3JWYWx1ZSh2YWx1ZTogVCk6IEFycmF5PFRhZ1RyZWVOb2RlPFQ+PiB7XG4gICAgY29uc3QgbCA9IHRoaXMuX2xvb2t1cFRhYmxlLmdldCh2YWx1ZSk7XG4gICAgcmV0dXJuIGwgPyBPYmplY3QuZnJlZXplKGwuc2xpY2UoKSkgOiBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIGdldEFsbEJ5VGFnKHRhZzogc3RyaW5nKTogTGl2ZVNldDxUYWdUcmVlTm9kZTxUPj4ge1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5fYWxsQnlUYWcuZ2V0KHRhZyk7XG4gICAgaWYgKCFlbnRyeSkgdGhyb3cgbmV3IEVycm9yKGB0YWcgZG9lcyBub3QgZXhpc3QgaW4gVGFnVHJlZTogJHt0YWd9YCk7XG4gICAgcmV0dXJuIGVudHJ5LmxpdmVTZXQ7XG4gIH1cblxuICBnZXRBbGwoKTogTWFwPHN0cmluZywgTGl2ZVNldDxUYWdUcmVlTm9kZTxUPj4+IHtcbiAgICBjb25zdCBtID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX2FsbEJ5VGFnLmZvckVhY2goKHtsaXZlU2V0fSwgdGFnKSA9PiB7XG4gICAgICBtLnNldCh0YWcsIGxpdmVTZXQpO1xuICAgIH0pO1xuICAgIHJldHVybiBtO1xuICB9XG59XG4iXX0=
module.exports = exports.default;
module.exports.default = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9UYWdUcmVlLmpzIl0sIm5hbWVzIjpbIkVNUFRZX0FSUkFZIiwiT2JqZWN0IiwiZnJlZXplIiwiVGFnVHJlZSIsImluaXQiLCJyb290Tm9kZUNvbnRyb2xsZXIiLCJ2YWx1ZSIsInJvb3QiLCJwYXJlbnQiLCJvd25lZFRhZ3MiLCJTZXQiLCJ0YWdzIiwibWFwIiwidGFnIiwiZXhlY3V0b3IiLCJjb250cm9sbGVyIiwiTWFwIiwiRXJyb3IiLCJfbm9kZUNvbnRyb2xsZXJzIiwic2V0IiwiX2xvb2t1cFRhYmxlIiwiX2FsbEJ5VGFnIiwiZm9yRWFjaCIsIkxpdmVTZXQiLCJhY3RpdmUiLCJsaXZlU2V0IiwiaGFzIiwib3duZWRCeSIsIm93bmluZ1RhZyIsImVudHJ5IiwiZ2V0IiwiYWRkIiwidHJlZSIsImFkZFRhZ2dlZFZhbHVlIiwidGFnRW50cnkiLCJub2RlIiwiVGFnVHJlZU5vZGUiLCJfY29udHJvbGxlciIsInZhbHVlTm9kZXMiLCJwdXNoIiwicGFyZW50Q29udHJvbGxlciIsImFkZE93bmVkTm9kZSIsInJlbW92ZVRhZ2dlZE5vZGUiLCJnZXRWYWx1ZSIsIm5vZGVzIiwibGVuZ3RoIiwiaXgiLCJpbmRleE9mIiwic3BsaWNlIiwiZGVsZXRlIiwiZ2V0T3duZWQiLCJ2YWx1ZXMiLCJjaGlsZE5vZGUiLCJyZW1vdmUiLCJyZW1vdmVPd25lZE5vZGUiLCJlbmQiLCJsIiwic2xpY2UiLCJtIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUdBOztBQWdCQSxJQUFNQSxXQUFrQixHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLENBQTNCOztJQUVxQkMsTzs7Ozs7QUFTbkIsbUJBQVlDLElBQVosRUFBa0M7QUFBQTs7QUFBQTtBQUNoQyxRQUFJQyxrQkFBSjtBQUNBLDZHQUFNO0FBQ0pDLE1BQUFBLEtBQUssRUFBRUYsSUFBSSxDQUFDRyxJQURSO0FBRUpDLE1BQUFBLE1BQU0sRUFBRSxJQUZKO0FBR0pD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LEdBQUYsQ0FBTU4sR0FBTixFQUFXWSxPQUFYO0FBQ0QsT0FGRDs7QUFHQSxhQUFPaUMsQ0FBUDtBQUNEOzs7RUFuSXFDdEIscUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgTGl2ZVNldCBmcm9tICdsaXZlLXNldCc7XG5pbXBvcnQgdHlwZSB7TGl2ZVNldENvbnRyb2xsZXJ9IGZyb20gJ2xpdmUtc2V0JztcblxuaW1wb3J0IFRhZ1RyZWVOb2RlIGZyb20gJy4vVGFnVHJlZU5vZGUnO1xuaW1wb3J0IHR5cGUge1RhZ1RyZWVOb2RlQ29udHJvbGxlcn0gZnJvbSAnLi9UYWdUcmVlTm9kZSc7XG5cbmV4cG9ydCB0eXBlIFRhZ1RyZWVDb250cm9sbGVyPFQ+ID0ge1xuICB0cmVlOiBUYWdUcmVlPFQ+O1xuICBhZGRUYWdnZWRWYWx1ZShwYXJlbnQ6IFRhZ1RyZWVOb2RlPFQ+LCB0YWc6IHN0cmluZywgdmFsdWU6IFQpOiBUYWdUcmVlTm9kZTxUPjtcbiAgcmVtb3ZlVGFnZ2VkTm9kZShwYXJlbnQ6IFRhZ1RyZWVOb2RlPFQ+LCB0YWc6IHN0cmluZywgbm9kZTogVGFnVHJlZU5vZGU8VD4pOiB2b2lkO1xuICBlbmQoKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFRhZ1RyZWVJbml0PFQ+ID0ge3xcbiAgcm9vdDogVDtcbiAgdGFnczogJFJlYWRPbmx5QXJyYXk8e3wgdGFnOiBzdHJpbmcsIG93bmVkQnk/OiA/JFJlYWRPbmx5QXJyYXk8c3RyaW5nPiB8fT47XG4gIGV4ZWN1dG9yOiAoY29udHJvbGxlcjogVGFnVHJlZUNvbnRyb2xsZXI8VD4pID0+IHZvaWQ7XG58fTtcblxuY29uc3QgRU1QVFlfQVJSQVk6IGFueVtdID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhZ1RyZWU8VD4gZXh0ZW5kcyBUYWdUcmVlTm9kZTxUPiB7XG4gIF9ub2RlQ29udHJvbGxlcnM6IE1hcDxUYWdUcmVlTm9kZTxUPiwgVGFnVHJlZU5vZGVDb250cm9sbGVyPFQ+PiA9IG5ldyBNYXAoKTtcbiAgX2xvb2t1cFRhYmxlOiBNYXA8VCwgQXJyYXk8VGFnVHJlZU5vZGU8VD4+PjtcbiAgX2FsbEJ5VGFnOiBNYXA8c3RyaW5nLCB7XG4gICAgb3duZWRUYWdzOiBTZXQ8c3RyaW5nPjtcbiAgICBsaXZlU2V0OiBMaXZlU2V0PFRhZ1RyZWVOb2RlPFQ+PjtcbiAgICBjb250cm9sbGVyOiBMaXZlU2V0Q29udHJvbGxlcjxUYWdUcmVlTm9kZTxUPj47XG4gIH0+O1xuXG4gIGNvbnN0cnVjdG9yKGluaXQ6IFRhZ1RyZWVJbml0PFQ+KSB7XG4gICAgbGV0IHJvb3ROb2RlQ29udHJvbGxlcjtcbiAgICBzdXBlcih7XG4gICAgICB2YWx1ZTogaW5pdC5yb290LFxuICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgb3duZWRUYWdzOiBuZXcgU2V0KGluaXQudGFncy5tYXAoKHt0YWd9KSA9PiB0YWcpKSxcbiAgICAgIGV4ZWN1dG9yOiAoY29udHJvbGxlcikgPT4ge1xuICAgICAgICByb290Tm9kZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcm9vdE5vZGVDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB0aGlzLl9ub2RlQ29udHJvbGxlcnMuc2V0KHRoaXMsIHJvb3ROb2RlQ29udHJvbGxlcik7XG5cbiAgICB0aGlzLl9sb29rdXBUYWJsZSA9IG5ldyBNYXAoW1tpbml0LnJvb3QsIFt0aGlzXV1dKTtcblxuICAgIHRoaXMuX2FsbEJ5VGFnID0gbmV3IE1hcCgpO1xuICAgIGluaXQudGFncy5mb3JFYWNoKCh7dGFnfSkgPT4ge1xuICAgICAgY29uc3Qge2xpdmVTZXQsIGNvbnRyb2xsZXJ9ID0gTGl2ZVNldC5hY3RpdmUoKTtcbiAgICAgIGlmICh0aGlzLl9hbGxCeVRhZy5oYXModGFnKSkgdGhyb3cgbmV3IEVycm9yKCdUYWcgc3BlY2lmaWVkIHR3aWNlOiAnK3RhZyk7XG4gICAgICB0aGlzLl9hbGxCeVRhZy5zZXQodGFnLCB7b3duZWRUYWdzOiBuZXcgU2V0KCksIGxpdmVTZXQsIGNvbnRyb2xsZXJ9KTtcbiAgICB9KTtcblxuICAgIGluaXQudGFncy5mb3JFYWNoKCh7dGFnLCBvd25lZEJ5fSkgPT4ge1xuICAgICAgaWYgKCFvd25lZEJ5KSByZXR1cm47XG4gICAgICBvd25lZEJ5LmZvckVhY2gob3duaW5nVGFnID0+IHtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9hbGxCeVRhZy5nZXQob3duaW5nVGFnKTtcbiAgICAgICAgaWYgKCFlbnRyeSkgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIG93bmVkQnkgdmFsdWUgZm9yICR7dGFnfTogJHtvd25pbmdUYWd9YCk7XG4gICAgICAgIGVudHJ5Lm93bmVkVGFncy5hZGQodGFnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29udHJvbGxlciA9IHtcbiAgICAgIHRyZWU6IHRoaXMsXG4gICAgICBhZGRUYWdnZWRWYWx1ZTogKHBhcmVudCwgdGFnLCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0YWdFbnRyeSA9IHRoaXMuX2FsbEJ5VGFnLmdldCh0YWcpO1xuICAgICAgICBpZiAoIXRhZ0VudHJ5KSB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdGFnOiAke3RhZ31gKTtcblxuICAgICAgICBsZXQgY29udHJvbGxlcjtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBUYWdUcmVlTm9kZSh7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgcGFyZW50LFxuICAgICAgICAgIG93bmVkVGFnczogdGFnRW50cnkub3duZWRUYWdzLFxuICAgICAgICAgIGV4ZWN1dG9yOiAoX2NvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBfY29udHJvbGxlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWNvbnRyb2xsZXIpIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICB0aGlzLl9ub2RlQ29udHJvbGxlcnMuc2V0KG5vZGUsIGNvbnRyb2xsZXIpO1xuXG4gICAgICAgIHRhZ0VudHJ5LmNvbnRyb2xsZXIuYWRkKG5vZGUpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlTm9kZXMgPSB0aGlzLl9sb29rdXBUYWJsZS5nZXQodmFsdWUpO1xuICAgICAgICBpZiAodmFsdWVOb2Rlcykge1xuICAgICAgICAgIHZhbHVlTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9sb29rdXBUYWJsZS5zZXQodmFsdWUsIFtub2RlXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRDb250cm9sbGVyID0gdGhpcy5fbm9kZUNvbnRyb2xsZXJzLmdldChwYXJlbnQpO1xuICAgICAgICBpZiAoIXBhcmVudENvbnRyb2xsZXIpIHRocm93IG5ldyBFcnJvcigncGFyZW50IGlzIG5vdCBwYXJ0IG9mIFRhZ1RyZWUnKTtcbiAgICAgICAgcGFyZW50Q29udHJvbGxlci5hZGRPd25lZE5vZGUodGFnLCBub2RlKTtcblxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0sXG4gICAgICByZW1vdmVUYWdnZWROb2RlOiAocGFyZW50LCB0YWcsIG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgdGFnRW50cnkgPSB0aGlzLl9hbGxCeVRhZy5nZXQodGFnKTtcbiAgICAgICAgaWYgKCF0YWdFbnRyeSkgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIHRhZzogJHt0YWd9YCk7XG5cbiAgICAgICAgY29uc3QgcGFyZW50Q29udHJvbGxlciA9IHRoaXMuX25vZGVDb250cm9sbGVycy5nZXQocGFyZW50KTtcbiAgICAgICAgaWYgKCFwYXJlbnRDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoJ3BhcmVudCBpcyBub3QgcGFydCBvZiBUYWdUcmVlJyk7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBub2RlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5fbG9va3VwVGFibGUuZ2V0KHZhbHVlKTtcbiAgICAgICAgaWYgKCFub2RlcykgdGhyb3cgbmV3IEVycm9yKCdub2RlIHdhcyBtaXNzaW5nIGZyb20gbG9va3VwIHRhYmxlIGJlZm9yZSByZW1vdmFsJyk7XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc3QgaXggPSBub2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgICAgIGlmIChpeCA8IDApIHRocm93IG5ldyBFcnJvcignbm9kZSB3YXMgbWlzc2luZyBmcm9tIGxpc3QgaW4gbG9va3VwIHRhYmxlIGJlZm9yZSByZW1vdmFsJyk7XG4gICAgICAgICAgbm9kZXMuc3BsaWNlKGl4LCAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9sb29rdXBUYWJsZS5kZWxldGUodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5nZXRPd25lZCgpLmZvckVhY2goKGxpdmVTZXQsIHRhZykgPT4ge1xuICAgICAgICAgIGxpdmVTZXQudmFsdWVzKCkuZm9yRWFjaChjaGlsZE5vZGUgPT4ge1xuICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmVUYWdnZWROb2RlKG5vZGUsIHRhZywgY2hpbGROb2RlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGFnRW50cnkuY29udHJvbGxlci5yZW1vdmUobm9kZSk7XG4gICAgICAgIHBhcmVudENvbnRyb2xsZXIucmVtb3ZlT3duZWROb2RlKHRhZywgbm9kZSk7XG4gICAgICAgIHRoaXMuX25vZGVDb250cm9sbGVycy5kZWxldGUobm9kZSk7XG4gICAgICB9LFxuICAgICAgZW5kOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX25vZGVDb250cm9sbGVycy5mb3JFYWNoKGNvbnRyb2xsZXIgPT4ge1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5kKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9hbGxCeVRhZy5mb3JFYWNoKCh7Y29udHJvbGxlcn0pID0+IHtcbiAgICAgICAgICBjb250cm9sbGVyLmVuZCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGluaXQuZXhlY3V0b3IoY29udHJvbGxlcik7XG4gICAgaW5pdC5leGVjdXRvciA9ICgpID0+IHt9OyAvLyByZWxlYXNlIHJlZmVyZW5jZVxuICB9XG5cbiAgZ2V0Tm9kZXNGb3JWYWx1ZSh2YWx1ZTogVCk6ICRSZWFkT25seUFycmF5PFRhZ1RyZWVOb2RlPFQ+PiB7XG4gICAgY29uc3QgbCA9IHRoaXMuX2xvb2t1cFRhYmxlLmdldCh2YWx1ZSk7XG4gICAgcmV0dXJuIGwgPyBPYmplY3QuZnJlZXplKGwuc2xpY2UoKSkgOiBFTVBUWV9BUlJBWTtcbiAgfVxuXG4gIGdldEFsbEJ5VGFnKHRhZzogc3RyaW5nKTogTGl2ZVNldDxUYWdUcmVlTm9kZTxUPj4ge1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5fYWxsQnlUYWcuZ2V0KHRhZyk7XG4gICAgaWYgKCFlbnRyeSkgdGhyb3cgbmV3IEVycm9yKGB0YWcgZG9lcyBub3QgZXhpc3QgaW4gVGFnVHJlZTogJHt0YWd9YCk7XG4gICAgcmV0dXJuIGVudHJ5LmxpdmVTZXQ7XG4gIH1cblxuICBnZXRBbGwoKTogTWFwPHN0cmluZywgTGl2ZVNldDxUYWdUcmVlTm9kZTxUPj4+IHtcbiAgICBjb25zdCBtID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX2FsbEJ5VGFnLmZvckVhY2goKHtsaXZlU2V0fSwgdGFnKSA9PiB7XG4gICAgICBtLnNldCh0YWcsIGxpdmVTZXQpO1xuICAgIH0pO1xuICAgIHJldHVybiBtO1xuICB9XG59XG4iXX0=

@@ -1,34 +0,30 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _map = require('babel-runtime/core-js/map');
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _map2 = _interopRequireDefault(_map);
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _liveSet = _interopRequireDefault(require("live-set"));
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _liveSet = require('live-set');
var _liveSet2 = _interopRequireDefault(_liveSet);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var TagTreeNode = function () {
var TagTreeNode =
/*#__PURE__*/
function () {
function TagTreeNode(init) {
var _this = this;
(0, _classCallCheck3.default)(this, TagTreeNode);
this._ownedNodes = new _map2.default();
this._ownedByTag = new _map2.default();
(0, _classCallCheck2.default)(this, TagTreeNode);
(0, _defineProperty2.default)(this, "_init", void 0);
(0, _defineProperty2.default)(this, "_ownedNodes", new Map());
(0, _defineProperty2.default)(this, "_ownedByTag", new Map());
this._init = init;
this._init = init;
this._init.executor({

@@ -38,10 +34,13 @@ node: this,

_this._ownedNodes.set(node, tag);
var entry = _this._ownedByTag.get(tag);
if (!entry) {
entry = _this._createTagEntry();
_this._ownedByTag.set(tag, entry);
}
var _entry = entry,
controller = _entry.controller;
controller.add(node);

@@ -51,6 +50,7 @@ },

_this._ownedNodes.delete(node);
var entry = _this._ownedByTag.get(tag);
if (!entry) throw new Error('tag not owned');
var controller = entry.controller;
controller.remove(node);

@@ -61,3 +61,2 @@ },

var controller = _ref.controller;
controller.end();

@@ -67,12 +66,14 @@ });

});
this._init.executor = function () {}; // release reference
}
(0, _createClass3.default)(TagTreeNode, [{
key: '_createTagEntry',
(0, _createClass2.default)(TagTreeNode, [{
key: "_createTagEntry",
value: function _createTagEntry() {
return _liveSet2.default.active();
return _liveSet.default.active();
}
}, {
key: 'getValue',
key: "getValue",
value: function getValue() {

@@ -82,3 +83,3 @@ return this._init.value;

}, {
key: 'getParent',
key: "getParent",
value: function getParent() {

@@ -88,34 +89,38 @@ return this._init.parent || null;

}, {
key: 'getOwnedByTag',
key: "getOwnedByTag",
value: function getOwnedByTag(tag) {
var entry = this._ownedByTag.get(tag);
if (!entry) {
if (!this._init.ownedTags.has(tag)) {
throw new Error('tag not owned: ' + tag);
throw new Error("tag not owned: ".concat(tag));
}
entry = this._createTagEntry();
this._ownedByTag.set(tag, entry);
}
return entry.liveSet;
}
}, {
key: 'getOwned',
key: "getOwned",
value: function getOwned() {
var m = new _map2.default();
var m = new Map();
this._ownedByTag.forEach(function (_ref2, tag) {
var liveSet = _ref2.liveSet;
m.set(tag, liveSet);
});
return m;
}
}, {
key: 'getTag',
key: "getTag",
value: function getTag() {
var parent = this._init.parent;
return parent ? parent.getTagOfOwnedNode(this) : null;
}
}, {
key: 'ownsNode',
key: "ownsNode",
value: function ownsNode(node) {

@@ -125,5 +130,6 @@ return this._ownedNodes.has(node);

}, {
key: 'getTagOfOwnedNode',
key: "getTagOfOwnedNode",
value: function getTagOfOwnedNode(node) {
var tag = this._ownedNodes.get(node);
if (tag == null) throw new Error('node not owned');

@@ -137,3 +143,4 @@ return tag;

exports.default = TagTreeNode;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9UYWdUcmVlTm9kZS5qcyJdLCJuYW1lcyI6WyJUYWdUcmVlTm9kZSIsImluaXQiLCJfb3duZWROb2RlcyIsIl9vd25lZEJ5VGFnIiwiX2luaXQiLCJleGVjdXRvciIsIm5vZGUiLCJhZGRPd25lZE5vZGUiLCJ0YWciLCJzZXQiLCJlbnRyeSIsImdldCIsIl9jcmVhdGVUYWdFbnRyeSIsImNvbnRyb2xsZXIiLCJhZGQiLCJyZW1vdmVPd25lZE5vZGUiLCJkZWxldGUiLCJFcnJvciIsInJlbW92ZSIsImVuZCIsImZvckVhY2giLCJhY3RpdmUiLCJ2YWx1ZSIsInBhcmVudCIsIm93bmVkVGFncyIsImhhcyIsImxpdmVTZXQiLCJtIiwiZ2V0VGFnT2ZPd25lZE5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7SUFzQnFCQSxXO0FBS25CLHVCQUFZQyxJQUFaLEVBQXNDO0FBQUE7O0FBQUE7QUFBQSxTQUh0Q0MsV0FHc0MsR0FISyxtQkFHTDtBQUFBLFNBRnRDQyxXQUVzQyxHQUZFLG1CQUVGOztBQUNwQyxTQUFLQyxLQUFMLEdBQWFILElBQWI7QUFDQSxTQUFLRyxLQUFMLENBQVdDLFFBQVgsQ0FBb0I7QUFDbEJDLFlBQU0sSUFEWTtBQUVsQkMsb0JBQWMsc0JBQUNDLEdBQUQsRUFBTUYsSUFBTixFQUFlO0FBQzNCLGNBQUtKLFdBQUwsQ0FBaUJPLEdBQWpCLENBQXFCSCxJQUFyQixFQUEyQkUsR0FBM0I7QUFDQSxZQUFJRSxRQUFRLE1BQUtQLFdBQUwsQ0FBaUJRLEdBQWpCLENBQXFCSCxHQUFyQixDQUFaO0FBQ0EsWUFBSSxDQUFDRSxLQUFMLEVBQVk7QUFDVkEsa0JBQVEsTUFBS0UsZUFBTCxFQUFSO0FBQ0EsZ0JBQUtULFdBQUwsQ0FBaUJNLEdBQWpCLENBQXFCRCxHQUFyQixFQUEwQkUsS0FBMUI7QUFDRDtBQU4wQixxQkFPTkEsS0FQTTtBQUFBLFlBT3BCRyxVQVBvQixVQU9wQkEsVUFQb0I7O0FBUTNCQSxtQkFBV0MsR0FBWCxDQUFlUixJQUFmO0FBQ0QsT0FYaUI7QUFZbEJTLHVCQUFpQix5QkFBQ1AsR0FBRCxFQUFNRixJQUFOLEVBQWU7QUFDOUIsY0FBS0osV0FBTCxDQUFpQmMsTUFBakIsQ0FBd0JWLElBQXhCO0FBQ0EsWUFBTUksUUFBUSxNQUFLUCxXQUFMLENBQWlCUSxHQUFqQixDQUFxQkgsR0FBckIsQ0FBZDtBQUNBLFlBQUksQ0FBQ0UsS0FBTCxFQUFZLE1BQU0sSUFBSU8sS0FBSixDQUFVLGVBQVYsQ0FBTjtBQUhrQixZQUl2QkosVUFKdUIsR0FJVEgsS0FKUyxDQUl2QkcsVUFKdUI7O0FBSzlCQSxtQkFBV0ssTUFBWCxDQUFrQlosSUFBbEI7QUFDRCxPQWxCaUI7QUFtQmxCYSxXQUFLLGVBQU07QUFDVCxjQUFLaEIsV0FBTCxDQUFpQmlCLE9BQWpCLENBQXlCLGdCQUFrQjtBQUFBLGNBQWhCUCxVQUFnQixRQUFoQkEsVUFBZ0I7O0FBQ3pDQSxxQkFBV00sR0FBWDtBQUNELFNBRkQ7QUFHRDtBQXZCaUIsS0FBcEI7QUF5QkEsU0FBS2YsS0FBTCxDQUFXQyxRQUFYLEdBQXNCLFlBQU0sQ0FBRSxDQUE5QixDQTNCb0MsQ0EyQko7QUFDakM7Ozs7c0NBRThCO0FBQzdCLGFBQU8sa0JBQVFnQixNQUFSLEVBQVA7QUFDRDs7OytCQUVhO0FBQ1osYUFBTyxLQUFLakIsS0FBTCxDQUFXa0IsS0FBbEI7QUFDRDs7O2dDQUVnQztBQUMvQixhQUFPLEtBQUtsQixLQUFMLENBQVdtQixNQUFYLElBQXFCLElBQTVCO0FBQ0Q7OztrQ0FFYWYsRyxFQUFzQztBQUNsRCxVQUFJRSxRQUFRLEtBQUtQLFdBQUwsQ0FBaUJRLEdBQWpCLENBQXFCSCxHQUFyQixDQUFaO0FBQ0EsVUFBSSxDQUFDRSxLQUFMLEVBQVk7QUFDVixZQUFJLENBQUMsS0FBS04sS0FBTCxDQUFXb0IsU0FBWCxDQUFxQkMsR0FBckIsQ0FBeUJqQixHQUF6QixDQUFMLEVBQW9DO0FBQ2xDLGdCQUFNLElBQUlTLEtBQUoscUJBQTRCVCxHQUE1QixDQUFOO0FBQ0Q7QUFDREUsZ0JBQVEsS0FBS0UsZUFBTCxFQUFSO0FBQ0EsYUFBS1QsV0FBTCxDQUFpQk0sR0FBakIsQ0FBcUJELEdBQXJCLEVBQTBCRSxLQUExQjtBQUNEO0FBQ0QsYUFBT0EsTUFBTWdCLE9BQWI7QUFDRDs7OytCQUVnRDtBQUMvQyxVQUFNQyxJQUFJLG1CQUFWO0FBQ0EsV0FBS3hCLFdBQUwsQ0FBaUJpQixPQUFqQixDQUF5QixpQkFBWVosR0FBWixFQUFvQjtBQUFBLFlBQWxCa0IsT0FBa0IsU0FBbEJBLE9BQWtCOztBQUMzQ0MsVUFBRWxCLEdBQUYsQ0FBTUQsR0FBTixFQUFXa0IsT0FBWDtBQUNELE9BRkQ7QUFHQSxhQUFPQyxDQUFQO0FBQ0Q7Ozs2QkFFcUI7QUFBQSxVQUNiSixNQURhLEdBQ0gsS0FBS25CLEtBREYsQ0FDYm1CLE1BRGE7O0FBRXBCLGFBQU9BLFNBQVNBLE9BQU9LLGlCQUFQLENBQXlCLElBQXpCLENBQVQsR0FBMEMsSUFBakQ7QUFDRDs7OzZCQUVRdEIsSSxFQUErQjtBQUN0QyxhQUFPLEtBQUtKLFdBQUwsQ0FBaUJ1QixHQUFqQixDQUFxQm5CLElBQXJCLENBQVA7QUFDRDs7O3NDQUVpQkEsSSxFQUE4QjtBQUM5QyxVQUFNRSxNQUFNLEtBQUtOLFdBQUwsQ0FBaUJTLEdBQWpCLENBQXFCTCxJQUFyQixDQUFaO0FBQ0EsVUFBSUUsT0FBTyxJQUFYLEVBQWlCLE1BQU0sSUFBSVMsS0FBSixDQUFVLGdCQUFWLENBQU47QUFDakIsYUFBT1QsR0FBUDtBQUNEOzs7OztrQkFoRmtCUixXIiwiZmlsZSI6IlRhZ1RyZWVOb2RlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQGZsb3cgKi9cblxuaW1wb3J0IExpdmVTZXQgZnJvbSAnbGl2ZS1zZXQnO1xuaW1wb3J0IHR5cGUge0xpdmVTZXRDb250cm9sbGVyfSBmcm9tICdsaXZlLXNldCc7XG5cbmV4cG9ydCB0eXBlIFRhZ1RyZWVOb2RlQ29udHJvbGxlcjxUPiA9IHtcbiAgbm9kZTogVGFnVHJlZU5vZGU8VD47XG4gIGFkZE93bmVkTm9kZSh0YWc6IHN0cmluZywgbm9kZTogVGFnVHJlZU5vZGU8VD4pOiB2b2lkO1xuICByZW1vdmVPd25lZE5vZGUodGFnOiBzdHJpbmcsIG5vZGU6IFRhZ1RyZWVOb2RlPFQ+KTogdm9pZDtcbiAgZW5kKCk6IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUYWdUcmVlTm9kZUluaXQ8VD4gPSB7fFxuICB2YWx1ZTogVDtcbiAgcGFyZW50OiA/VGFnVHJlZU5vZGU8VD47XG4gIG93bmVkVGFnczogU2V0PHN0cmluZz47XG4gIGV4ZWN1dG9yOiAoY29udHJvbGxlcjogVGFnVHJlZU5vZGVDb250cm9sbGVyPFQ+KSA9PiB2b2lkO1xufH07XG5cbnR5cGUgVGFnRW50cnk8VD4gPSB7XG4gIGxpdmVTZXQ6IExpdmVTZXQ8VGFnVHJlZU5vZGU8VD4+O1xuICBjb250cm9sbGVyOiBMaXZlU2V0Q29udHJvbGxlcjxUYWdUcmVlTm9kZTxUPj47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWdUcmVlTm9kZTxUPiB7XG4gIF9pbml0OiBUYWdUcmVlTm9kZUluaXQ8VD47XG4gIF9vd25lZE5vZGVzOiBNYXA8VGFnVHJlZU5vZGU8VD4sIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gIF9vd25lZEJ5VGFnOiBNYXA8c3RyaW5nLCBUYWdFbnRyeTxUPj4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IoaW5pdDogVGFnVHJlZU5vZGVJbml0PFQ+KSB7XG4gICAgdGhpcy5faW5pdCA9IGluaXQ7XG4gICAgdGhpcy5faW5pdC5leGVjdXRvcih7XG4gICAgICBub2RlOiB0aGlzLFxuICAgICAgYWRkT3duZWROb2RlOiAodGFnLCBub2RlKSA9PiB7XG4gICAgICAgIHRoaXMuX293bmVkTm9kZXMuc2V0KG5vZGUsIHRhZyk7XG4gICAgICAgIGxldCBlbnRyeSA9IHRoaXMuX293bmVkQnlUYWcuZ2V0KHRhZyk7XG4gICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICBlbnRyeSA9IHRoaXMuX2NyZWF0ZVRhZ0VudHJ5KCk7XG4gICAgICAgICAgdGhpcy5fb3duZWRCeVRhZy5zZXQodGFnLCBlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge2NvbnRyb2xsZXJ9ID0gZW50cnk7XG4gICAgICAgIGNvbnRyb2xsZXIuYWRkKG5vZGUpO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZU93bmVkTm9kZTogKHRhZywgbm9kZSkgPT4ge1xuICAgICAgICB0aGlzLl9vd25lZE5vZGVzLmRlbGV0ZShub2RlKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9vd25lZEJ5VGFnLmdldCh0YWcpO1xuICAgICAgICBpZiAoIWVudHJ5KSB0aHJvdyBuZXcgRXJyb3IoJ3RhZyBub3Qgb3duZWQnKTtcbiAgICAgICAgY29uc3Qge2NvbnRyb2xsZXJ9ID0gZW50cnk7XG4gICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlKG5vZGUpO1xuICAgICAgfSxcbiAgICAgIGVuZDogKCkgPT4ge1xuICAgICAgICB0aGlzLl9vd25lZEJ5VGFnLmZvckVhY2goKHtjb250cm9sbGVyfSkgPT4ge1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5kKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2luaXQuZXhlY3V0b3IgPSAoKSA9PiB7fTsgLy8gcmVsZWFzZSByZWZlcmVuY2VcbiAgfVxuXG4gIF9jcmVhdGVUYWdFbnRyeSgpOiBUYWdFbnRyeTxUPiB7XG4gICAgcmV0dXJuIExpdmVTZXQuYWN0aXZlKCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdC52YWx1ZTtcbiAgfVxuXG4gIGdldFBhcmVudCgpOiBudWxsfFRhZ1RyZWVOb2RlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5faW5pdC5wYXJlbnQgfHwgbnVsbDtcbiAgfVxuXG4gIGdldE93bmVkQnlUYWcodGFnOiBzdHJpbmcpOiBMaXZlU2V0PFRhZ1RyZWVOb2RlPFQ+PiB7XG4gICAgbGV0IGVudHJ5ID0gdGhpcy5fb3duZWRCeVRhZy5nZXQodGFnKTtcbiAgICBpZiAoIWVudHJ5KSB7XG4gICAgICBpZiAoIXRoaXMuX2luaXQub3duZWRUYWdzLmhhcyh0YWcpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdGFnIG5vdCBvd25lZDogJHt0YWd9YCk7XG4gICAgICB9XG4gICAgICBlbnRyeSA9IHRoaXMuX2NyZWF0ZVRhZ0VudHJ5KCk7XG4gICAgICB0aGlzLl9vd25lZEJ5VGFnLnNldCh0YWcsIGVudHJ5KTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5LmxpdmVTZXQ7XG4gIH1cblxuICBnZXRPd25lZCgpOiBNYXA8c3RyaW5nLCBMaXZlU2V0PFRhZ1RyZWVOb2RlPFQ+Pj4ge1xuICAgIGNvbnN0IG0gPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5fb3duZWRCeVRhZy5mb3JFYWNoKCh7bGl2ZVNldH0sIHRhZykgPT4ge1xuICAgICAgbS5zZXQodGFnLCBsaXZlU2V0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbTtcbiAgfVxuXG4gIGdldFRhZygpOiBudWxsfHN0cmluZyB7XG4gICAgY29uc3Qge3BhcmVudH0gPSB0aGlzLl9pbml0O1xuICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQuZ2V0VGFnT2ZPd25lZE5vZGUodGhpcykgOiBudWxsO1xuICB9XG5cbiAgb3duc05vZGUobm9kZTogVGFnVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3duZWROb2Rlcy5oYXMobm9kZSk7XG4gIH1cblxuICBnZXRUYWdPZk93bmVkTm9kZShub2RlOiBUYWdUcmVlTm9kZTxUPik6IHN0cmluZyB7XG4gICAgY29uc3QgdGFnID0gdGhpcy5fb3duZWROb2Rlcy5nZXQobm9kZSk7XG4gICAgaWYgKHRhZyA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ25vZGUgbm90IG93bmVkJyk7XG4gICAgcmV0dXJuIHRhZztcbiAgfVxufVxuIl19
module.exports = exports.default;
module.exports.default = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9UYWdUcmVlTm9kZS5qcyJdLCJuYW1lcyI6WyJUYWdUcmVlTm9kZSIsImluaXQiLCJNYXAiLCJfaW5pdCIsImV4ZWN1dG9yIiwibm9kZSIsImFkZE93bmVkTm9kZSIsInRhZyIsIl9vd25lZE5vZGVzIiwic2V0IiwiZW50cnkiLCJfb3duZWRCeVRhZyIsImdldCIsIl9jcmVhdGVUYWdFbnRyeSIsImNvbnRyb2xsZXIiLCJhZGQiLCJyZW1vdmVPd25lZE5vZGUiLCJkZWxldGUiLCJFcnJvciIsInJlbW92ZSIsImVuZCIsImZvckVhY2giLCJMaXZlU2V0IiwiYWN0aXZlIiwidmFsdWUiLCJwYXJlbnQiLCJvd25lZFRhZ3MiLCJoYXMiLCJsaXZlU2V0IiwibSIsImdldFRhZ09mT3duZWROb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7SUFzQnFCQSxXOzs7QUFLbkIsdUJBQVlDLElBQVosRUFBc0M7QUFBQTs7QUFBQTtBQUFBO0FBQUEsdURBSEssSUFBSUMsR0FBSixFQUdMO0FBQUEsdURBRkUsSUFBSUEsR0FBSixFQUVGO0FBQ3BDLFNBQUtDLEtBQUwsR0FBYUYsSUFBYjs7QUFDQSxTQUFLRSxLQUFMLENBQVdDLFFBQVgsQ0FBb0I7QUFDbEJDLE1BQUFBLElBQUksRUFBRSxJQURZO0FBRWxCQyxNQUFBQSxZQUFZLEVBQUUsc0JBQUNDLEdBQUQsRUFBTUYsSUFBTixFQUFlO0FBQzNCLFFBQUEsS0FBSSxDQUFDRyxXQUFMLENBQWlCQyxHQUFqQixDQUFxQkosSUFBckIsRUFBMkJFLEdBQTNCOztBQUNBLFlBQUlHLEtBQUssR0FBRyxLQUFJLENBQUNDLFdBQUwsQ0FBaUJDLEdBQWpCLENBQXFCTCxHQUFyQixDQUFaOztBQUNBLFlBQUksQ0FBQ0csS0FBTCxFQUFZO0FBQ1ZBLFVBQUFBLEtBQUssR0FBRyxLQUFJLENBQUNHLGVBQUwsRUFBUjs7QUFDQSxVQUFBLEtBQUksQ0FBQ0YsV0FBTCxDQUFpQkYsR0FBakIsQ0FBcUJGLEdB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O0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgTGl2ZVNldCBmcm9tICdsaXZlLXNldCc7XG5pbXBvcnQgdHlwZSB7TGl2ZVNldENvbnRyb2xsZXJ9IGZyb20gJ2xpdmUtc2V0JztcblxuZXhwb3J0IHR5cGUgVGFnVHJlZU5vZGVDb250cm9sbGVyPFQ+ID0ge1xuICBub2RlOiBUYWdUcmVlTm9kZTxUPjtcbiAgYWRkT3duZWROb2RlKHRhZzogc3RyaW5nLCBub2RlOiBUYWdUcmVlTm9kZTxUPik6IHZvaWQ7XG4gIHJlbW92ZU93bmVkTm9kZSh0YWc6IHN0cmluZywgbm9kZTogVGFnVHJlZU5vZGU8VD4pOiB2b2lkO1xuICBlbmQoKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFRhZ1RyZWVOb2RlSW5pdDxUPiA9IHt8XG4gIHZhbHVlOiBUO1xuICBwYXJlbnQ6ID9UYWdUcmVlTm9kZTxUPjtcbiAgb3duZWRUYWdzOiBTZXQ8c3RyaW5nPjtcbiAgZXhlY3V0b3I6IChjb250cm9sbGVyOiBUYWdUcmVlTm9kZUNvbnRyb2xsZXI8VD4pID0+IHZvaWQ7XG58fTtcblxudHlwZSBUYWdFbnRyeTxUPiA9IHtcbiAgbGl2ZVNldDogTGl2ZVNldDxUYWdUcmVlTm9kZTxUPj47XG4gIGNvbnRyb2xsZXI6IExpdmVTZXRDb250cm9sbGVyPFRhZ1RyZWVOb2RlPFQ+Pjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhZ1RyZWVOb2RlPFQ+IHtcbiAgX2luaXQ6IFRhZ1RyZWVOb2RlSW5pdDxUPjtcbiAgX293bmVkTm9kZXM6IE1hcDxUYWdUcmVlTm9kZTxUPiwgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgX293bmVkQnlUYWc6IE1hcDxzdHJpbmcsIFRhZ0VudHJ5PFQ+PiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3Rvcihpbml0OiBUYWdUcmVlTm9kZUluaXQ8VD4pIHtcbiAgICB0aGlzLl9pbml0ID0gaW5pdDtcbiAgICB0aGlzLl9pbml0LmV4ZWN1dG9yKHtcbiAgICAgIG5vZGU6IHRoaXMsXG4gICAgICBhZGRPd25lZE5vZGU6ICh0YWcsIG5vZGUpID0+IHtcbiAgICAgICAgdGhpcy5fb3duZWROb2Rlcy5zZXQobm9kZSwgdGFnKTtcbiAgICAgICAgbGV0IGVudHJ5ID0gdGhpcy5fb3duZWRCeVRhZy5nZXQodGFnKTtcbiAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgIGVudHJ5ID0gdGhpcy5fY3JlYXRlVGFnRW50cnkoKTtcbiAgICAgICAgICB0aGlzLl9vd25lZEJ5VGFnLnNldCh0YWcsIGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7Y29udHJvbGxlcn0gPSBlbnRyeTtcbiAgICAgICAgY29udHJvbGxlci5hZGQobm9kZSk7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlT3duZWROb2RlOiAodGFnLCBub2RlKSA9PiB7XG4gICAgICAgIHRoaXMuX293bmVkTm9kZXMuZGVsZXRlKG5vZGUpO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuX293bmVkQnlUYWcuZ2V0KHRhZyk7XG4gICAgICAgIGlmICghZW50cnkpIHRocm93IG5ldyBFcnJvcigndGFnIG5vdCBvd25lZCcpO1xuICAgICAgICBjb25zdCB7Y29udHJvbGxlcn0gPSBlbnRyeTtcbiAgICAgICAgY29udHJvbGxlci5yZW1vdmUobm9kZSk7XG4gICAgICB9LFxuICAgICAgZW5kOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX293bmVkQnlUYWcuZm9yRWFjaCgoe2NvbnRyb2xsZXJ9KSA9PiB7XG4gICAgICAgICAgY29udHJvbGxlci5lbmQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5faW5pdC5leGVjdXRvciA9ICgpID0+IHt9OyAvLyByZWxlYXNlIHJlZmVyZW5jZVxuICB9XG5cbiAgX2NyZWF0ZVRhZ0VudHJ5KCk6IFRhZ0VudHJ5PFQ+IHtcbiAgICByZXR1cm4gTGl2ZVNldC5hY3RpdmUoKTtcbiAgfVxuXG4gIGdldFZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9pbml0LnZhbHVlO1xuICB9XG5cbiAgZ2V0UGFyZW50KCk6IG51bGx8VGFnVHJlZU5vZGU8VD4ge1xuICAgIHJldHVybiB0aGlzLl9pbml0LnBhcmVudCB8fCBudWxsO1xuICB9XG5cbiAgZ2V0T3duZWRCeVRhZyh0YWc6IHN0cmluZyk6IExpdmVTZXQ8VGFnVHJlZU5vZGU8VD4+IHtcbiAgICBsZXQgZW50cnkgPSB0aGlzLl9vd25lZEJ5VGFnLmdldCh0YWcpO1xuICAgIGlmICghZW50cnkpIHtcbiAgICAgIGlmICghdGhpcy5faW5pdC5vd25lZFRhZ3MuaGFzKHRhZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB0YWcgbm90IG93bmVkOiAke3RhZ31gKTtcbiAgICAgIH1cbiAgICAgIGVudHJ5ID0gdGhpcy5fY3JlYXRlVGFnRW50cnkoKTtcbiAgICAgIHRoaXMuX293bmVkQnlUYWcuc2V0KHRhZywgZW50cnkpO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnkubGl2ZVNldDtcbiAgfVxuXG4gIGdldE93bmVkKCk6IE1hcDxzdHJpbmcsIExpdmVTZXQ8VGFnVHJlZU5vZGU8VD4+PiB7XG4gICAgY29uc3QgbSA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9vd25lZEJ5VGFnLmZvckVhY2goKHtsaXZlU2V0fSwgdGFnKSA9PiB7XG4gICAgICBtLnNldCh0YWcsIGxpdmVTZXQpO1xuICAgIH0pO1xuICAgIHJldHVybiBtO1xuICB9XG5cbiAgZ2V0VGFnKCk6IG51bGx8c3RyaW5nIHtcbiAgICBjb25zdCB7cGFyZW50fSA9IHRoaXMuX2luaXQ7XG4gICAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC5nZXRUYWdPZk93bmVkTm9kZSh0aGlzKSA6IG51bGw7XG4gIH1cblxuICBvd25zTm9kZShub2RlOiBUYWdUcmVlTm9kZTxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vd25lZE5vZGVzLmhhcyhub2RlKTtcbiAgfVxuXG4gIGdldFRhZ09mT3duZWROb2RlKG5vZGU6IFRhZ1RyZWVOb2RlPFQ+KTogc3RyaW5nIHtcbiAgICBjb25zdCB0YWcgPSB0aGlzLl9vd25lZE5vZGVzLmdldChub2RlKTtcbiAgICBpZiAodGFnID09IG51bGwpIHRocm93IG5ldyBFcnJvcignbm9kZSBub3Qgb3duZWQnKTtcbiAgICByZXR1cm4gdGFnO1xuICB9XG59XG4iXX0=
The MIT License (MIT)
Copyright (c) 2017 Rewardly, Inc.
Copyright (c) 2018 Rewardly, Inc.

@@ -5,0 +5,0 @@ Permission is hereby granted, free of charge, to any person obtaining a copy

{
"name": "tag-tree",
"version": "0.4.1",
"version": "1.0.0",
"description": "Class representing a changing tree of tagged items.",
"main": "js/index.js",
"sideEffects": false,
"scripts": {
"prepare": "babel -s inline -d js/ src/ --ignore '*.test.*' && flow-copy-source -v src js --ignore '*.test.*'",
"test": "npm run lint && npm run flow_check && jest",
"flow_check": "flow check",
"prepare": "rimraf js && babel -s inline -d js/ src/ --ignore '**/*.test.js' && flow-copy-source -v src js --ignore '*.test.*'",
"test": "yarn lint && flow check && jest && tsc",
"lint": "eslint .",

@@ -28,21 +28,25 @@ "lint-fix": "eslint . --fix"

"dependencies": {
"babel-runtime": "^6.22.0",
"live-set": "^0.4.0"
"@babel/runtime": "^7.0.0",
"live-set": "^1.0.0"
},
"devDependencies": {
"babel-cli": "^6.22.2",
"babel-eslint": "^7.1.1",
"babel-jest": "^20.0.3",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-transform-flow-strip-types": "^6.22.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-preset-es2015": "^6.22.0",
"babel-preset-stage-2": "^6.22.0",
"eslint": "^4.1.1",
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/plugin-transform-runtime": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-flow": "^7.0.0",
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^10.0.1",
"babel-jest": "^23.6.0",
"babel-plugin-add-module-exports": "^1.0.0",
"eslint": "^5.6.0",
"eslint-plugin-flowtype": "^2.30.0",
"flow-bin": "^0.49.1",
"flow-copy-source": "^1.1.0",
"jest": "^20.0.4",
"pdelay": "^1.0.0"
"flow-bin": "^0.82.0",
"flow-copy-source": "^2.0.2",
"jest": "^23.6.0",
"pdelay": "^2.0.0",
"rimraf": "^2.6.1",
"typescript": "^3.1.1"
}
}
# tag-tree
[![Circle CI](https://circleci.com/gh/StreakYC/tag-tree.svg?style=shield)](https://circleci.com/gh/StreakYC/tag-tree)
[![npm version](https://badge.fury.io/js/tag-tree.svg)](https://badge.fury.io/js/tag-tree)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/StreakYC/tag-tree/blob/master/LICENSE.txt) [![Circle CI](https://circleci.com/gh/StreakYC/tag-tree.svg?style=shield)](https://circleci.com/gh/StreakYC/tag-tree) [![npm version](https://badge.fury.io/js/tag-tree.svg)](https://badge.fury.io/js/tag-tree)

@@ -145,3 +144,4 @@ This class represents a hierarchical tree of tagged (named) values.

[Flow](https://flowtype.org/) type declarations for this module are included!
If you are using Flow, they won't require any configuration to use.
Both [TypeScript](https://www.typescriptlang.org/) and
[Flow](https://flowtype.org/) type definitions for this module are included!
The type definitions won't require any configuration to use.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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