diff --git a/Gruntfile.js b/Gruntfile.js index 4350a47..b1e0080 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -12,24 +12,18 @@ module.exports = function( grunt ) { grunt.initConfig( { babel: { options: { - ast: false, - sourceMaps: false, - nonStandard: false, - compact: "false", - modules: "umd", - moduleId: "Toposort", - experimental: true + presets: [ + [ + "@babel/preset-env", + { + modules: "umd" + } + ] + ], + plugins: ["add-module-exports"], + moduleId: "Toposort" }, build: { - options: { - loose: "all", - optional: [ - "spec.undefinedToVoid", - "minification.constantFolding", - "minification.propertyLiterals", - "es7.classProperties" - ] - }, files: [{ expand: true, cwd: "./src/", @@ -41,9 +35,7 @@ module.exports = function( grunt ) { usebanner: { license: { options: { - position: "top", - banner: LICENSE, - linebreak: true + banner: LICENSE }, files: { src: ["./build/**/*.js"] diff --git a/build/toposort.js b/build/toposort.js index 98c482f..3c952b9 100644 --- a/build/toposort.js +++ b/build/toposort.js @@ -23,224 +23,206 @@ * ****/ (function (global, factory) { - if (typeof define === "function" && define.amd) { - define("Toposort", ["exports", "module"], factory); - } else if (typeof exports !== "undefined" && typeof module !== "undefined") { - factory(exports, module); - } else { - var mod = { - exports: {} - }; - factory(mod.exports, mod); - global.Toposort = mod.exports; + if (typeof define === "function" && define.amd) { + define("Toposort", ["exports"], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } else { + var mod = { + exports: {} + }; + factory(mod.exports); + global.Toposort = mod.exports; + } +})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports) { + "use strict"; + + Object.defineProperty(_exports, "__esModule", { + value: true + }); + _exports["default"] = void 0; + function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + var Toposort = /*#__PURE__*/function () { + function Toposort() { + _classCallCheck(this, Toposort); + _defineProperty(this, "edges", []); + _defineProperty(this, "Toposort", Toposort); } -})(this, function (exports, module) { - "use strict"; - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - var Toposort = (function () { - function Toposort() { - _classCallCheck(this, Toposort); - - this.edges = []; - this.Toposort = Toposort; + _createClass(Toposort, [{ + key: "add", + value: + /** + * Adds dependency edges. + * + * @since 0.1.0 + * @param {String} item An dependent name. Must be an string and not empty + * @param {String[]|String} [deps] An dependency or array of dependencies + * @returns {Toposort} The Toposort instance + */ + function add(item, deps) { + if (typeof item !== "string" || !item) { + throw new TypeError("Dependent name must be given as a not empty string"); } - - /** - * Adds dependency edges. - * - * @since 0.1.0 - * @param {String} item An dependent name. Must be an string and not empty - * @param {String[]|String} [deps] An dependency or array of dependencies - * @returns {Toposort} The Toposort instance - */ - - Toposort.prototype.add = function add(item, deps) { - if (typeof item !== "string" || !item) { - throw new TypeError("Dependent name must be given as a not empty string"); + deps = Array.isArray(deps) ? deps : [deps]; + if (deps.length > 0) { + var _iterator = _createForOfIteratorHelper(deps), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var dep = _step.value; + if (typeof dep !== "string" || !dep) { + throw new TypeError("Dependency name must be given as a not empty string"); + } + this.edges.push([item, dep]); } - - deps = Array.isArray(deps) ? deps : [deps]; - - if (deps.length > 0) { - for (var _iterator = deps, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - var dep = _ref; - - if (typeof dep !== "string" || !dep) { - throw new TypeError("Dependency name must be given as a not empty string"); - } - - this.edges.push([item, dep]); + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } else { + this.edges.push([item]); + } + return this; + } + + /** + * Runs the toposorting and return an ordered array of strings + * + * @since 0.1.0 + * @returns {String[]} The list of items topologically sorted. + */ + }, { + key: "sort", + value: function sort() { + var _this = this; + var nodes = []; + + //accumulate unique nodes into a large list + var _iterator2 = _createForOfIteratorHelper(this.edges), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _edge = _step2.value; + var _iterator5 = _createForOfIteratorHelper(_edge), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var _node = _step5.value; + if (nodes.indexOf(_node) === -1) { + nodes.push(_node); } - } else { - this.edges.push([item]); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); } + } - return this; - }; - - /** - * Runs the toposorting and return an ordered array of strings - * - * @since 0.1.0 - * @returns {String[]} The list of items topologically sorted. - */ - - Toposort.prototype.sort = function sort() { - var _this = this; - - var nodes = []; - - //accumulate unique nodes into a large list - for (var _iterator2 = this.edges, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; + //initialize the placement of nodes into the sorted array at the end + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + var place = nodes.length; + + //initialize the sorted array with the same length as the unique nodes array + var sorted = new Array(nodes.length); + + //define a visitor function that recursively traverses dependencies. + var visit = function visit(node, predecessors) { + //check if a node is dependent of itself + if (predecessors.length !== 0 && predecessors.indexOf(node) !== -1) { + throw new Error("Cyclic dependency found. ".concat(node, " is dependent of itself.\nDependency chain: ").concat(predecessors.join(" -> "), " => ").concat(node)); + } + var index = nodes.indexOf(node); + + //if the node still exists, traverse its dependencies + if (index !== -1) { + var copy = false; + + //mark the node as false to exclude it from future iterations + nodes[index] = false; + + //loop through all edges and follow dependencies of the current node + var _iterator3 = _createForOfIteratorHelper(_this.edges), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var edge = _step3.value; + if (edge[0] === node) { + //lazily create a copy of predecessors with the current node concatenated onto it + copy = copy || predecessors.concat([node]); + + //recurse to node dependencies + visit(edge[1], copy); } + } - var edge = _ref2; - - for (var _iterator3 = edge, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref3; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref3 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref3 = _i3.value; - } - - var node = _ref3; - - if (nodes.indexOf(node) === -1) { - nodes.push(node); - } - } + //add the node to the next place in the sorted array + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); } - - //initialize the placement of nodes into the sorted array at the end - var place = nodes.length; - - //initialize the sorted array with the same length as the unique nodes array - var sorted = new Array(nodes.length); - - //define a visitor function that recursively traverses dependencies. - var visit = function visit(node, predecessors) { - //check if a node is dependent of itself - if (predecessors.length !== 0 && predecessors.indexOf(node) !== -1) { - throw new Error("Cyclic dependency found. " + node + " is dependent of itself.\nDependency chain: " + predecessors.join(" -> ") + " => " + node); - } - - var index = nodes.indexOf(node); - - //if the node still exists, traverse its dependencies - if (index !== -1) { - var copy = false; - - //mark the node as false to exclude it from future iterations - nodes[index] = false; - - //loop through all edges and follow dependencies of the current node - for (var _iterator4 = _this.edges, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { - var _ref4; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref4 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref4 = _i4.value; - } - - var edge = _ref4; - - if (edge[0] === node) { - //lazily create a copy of predecessors with the current node concatenated onto it - copy = copy || predecessors.concat([node]); - - //recurse to node dependencies - visit(edge[1], copy); - } - } - - //add the node to the next place in the sorted array - sorted[--place] = node; + sorted[--place] = node; + } + }; + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + + //ignore nodes that have been excluded + if (node !== false) { + //mark the node as false to exclude it from future iterations + nodes[i] = false; + + //loop through all edges and follow dependencies of the current node + var _iterator4 = _createForOfIteratorHelper(this.edges), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var edge = _step4.value; + if (edge[0] === node) { + //recurse to node dependencies + visit(edge[1], [node]); } - }; - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - - //ignore nodes that have been excluded - if (node !== false) { - //mark the node as false to exclude it from future iterations - nodes[i] = false; - - //loop through all edges and follow dependencies of the current node - for (var _iterator5 = this.edges, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { - var _ref5; + } - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref5 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref5 = _i5.value; - } - - var edge = _ref5; - - if (edge[0] === node) { - //recurse to node dependencies - visit(edge[1], [node]); - } - } - - //add the node to the next place in the sorted array - sorted[--place] = node; - } + //add the node to the next place in the sorted array + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); } - - return sorted; - }; - - /** - * Clears edges - * - * @since 0.4.0 - * @returns {Toposort} The Toposort instance - */ - - Toposort.prototype.clear = function clear() { - this.edges = []; - - return this; - }; - - return Toposort; - })(); - - module.exports = Toposort; + sorted[--place] = node; + } + } + return sorted; + } + + /** + * Clears edges + * + * @since 0.4.0 + * @returns {Toposort} The Toposort instance + */ + }, { + key: "clear", + value: function clear() { + this.edges = []; + return this; + } + }]); + return Toposort; + }(); + _exports["default"] = Toposort; + module.exports = exports.default; }); diff --git a/build/toposort.min.js b/build/toposort.min.js index d096405..a813de8 100644 --- a/build/toposort.min.js +++ b/build/toposort.min.js @@ -1 +1 @@ -!function(e,r){"function"==typeof define&&define.amd?define("Toposort",["exports","module"],r):"undefined"!=typeof exports&&"undefined"!=typeof module?r(0,module):(r(r={exports:{}},r),e.Toposort=r.exports)}(this,function(e,r){"use strict";function t(){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function");this.edges=[],this.Toposort=t}t.prototype.add=function(e,r){if("string"!=typeof e||!e)throw new TypeError("Dependent name must be given as a not empty string");if(0<(r=Array.isArray(r)?r:[r]).length)for(var t,n=r,i=Array.isArray(n),o=0,n=i?n:n[Symbol.iterator]();;){if(i){if(o>=n.length)break;t=n[o++]}else{if((o=n.next()).done)break;t=o.value}var a=t;if("string"!=typeof a||!a)throw new TypeError("Dependency name must be given as a not empty string");this.edges.push([e,a])}else this.edges.push([e]);return this},t.prototype.sort=function(){for(var e,l=this,y=[],r=this.edges,t=Array.isArray(r),n=0,r=t?r:r[Symbol.iterator]();;){if(t){if(n>=r.length)break;e=r[n++]}else{if((n=r.next()).done)break;e=n.value}for(var i,o=c=e,a=Array.isArray(o),s=0,o=a?o:o[Symbol.iterator]();;){if(a){if(s>=o.length)break;i=o[s++]}else{if((s=o.next()).done)break;i=s.value}var f=i;-1===y.indexOf(f)&&y.push(f)}}for(var p=y.length,h=new Array(y.length),d=function e(r,t){if(0!==t.length&&-1!==t.indexOf(r))throw new Error("Cyclic dependency found. "+r+" is dependent of itself.\nDependency chain: "+t.join(" -> ")+" => "+r);var n=y.indexOf(r);if(-1!==n){var i=!1;y[n]=!1;for(var o,a=l.edges,s=Array.isArray(a),f=0,a=s?a:a[Symbol.iterator]();;){if(s){if(f>=a.length)break;o=a[f++]}else{if((f=a.next()).done)break;o=f.value}var d=o;d[0]===r&&(i=i||t.concat([r]),e(d[1],i))}h[--p]=r}},u=0;u=v.length)break;g=v[m++]}else{if((m=v.next()).done)break;g=m.value}(c=g)[0]===f&&d(c[1],[f])}h[--p]=f}return h},t.prototype.clear=function(){return this.edges=[],this},r.exports=t}); \ No newline at end of file +!function(e,n){"function"==typeof define&&define.amd?define("Toposort",["exports"],n):"undefined"!=typeof exports?n(exports):(n(n={}),e.Toposort=n)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e){"use strict";function h(e,n){var t,r,o,a,i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(i)return r=!(t=!0),{s:function(){i=i.call(e)},n:function(){var e=i.next();return t=e.done,e},e:function(e){r=!0,o=e},f:function(){try{t||null==i.return||i.return()}finally{if(r)throw o}}};if(Array.isArray(e)||(i=function(e,n){var t;if(e)return"string"==typeof e?f(e,n):"Map"===(t="Object"===(t=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?f(e,n):void 0}(e))||n&&e&&"number"==typeof e.length)return i&&(e=i),a=0,{s:n=function(){},n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:n};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function f(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t ")," => ").concat(n));var r=u.indexOf(n);if(-1!==r){var o,a=!1,i=(u[r]=!1,h(l.edges));try{for(i.s();!(o=i.n()).done;){var f=o.value;f[0]===n&&(a=a||t.concat([n]),e(f[1],a))}}catch(e){i.e(e)}finally{i.f()}c[--s]=n}},i=0;i=0.0.4" - } - } - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -3287,18 +5347,6 @@ } } }, - "stringmap": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", - "integrity": "sha512-mR1LEHDw6TsHa+LwJeeBc9ZqZqEOm7bHidgxMmDg8HB/rbA1HhDeT08gS67CCCG/xrgIfQx5tW42pd8vFpLUow==", - "dev": true - }, - "stringset": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", - "integrity": "sha512-km3jeiRpmySChl1oLiBE2ESdG5k/4+6tjENVL6BB3mdmKBiUikI5ks4paad2WAKsxzpNiBqBBbXCC12QqlpLWA==", - "dev": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -3393,12 +5441,6 @@ "os-tmpdir": "~1.0.2" } }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3408,24 +5450,6 @@ "is-number": "^7.0.0" } }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", - "dev": true - }, - "try-resolve": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", - "integrity": "sha512-yHeaPjCBzVaXwWl5IMUapTaTC2rn/eBYg2fsG2L+CvJd+ttFbk0ylDnpTO3wVhosmE1tQEvcebbBeKLCwScQSQ==", - "dev": true - }, - "tryor": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", - "integrity": "sha512-2+ilNA00DGvbUYYbRrm3ux+snbo7I6uPXMw8I4p/QMl7HUOWBBZFbk+Mpr8/IAPDQE+LQ8vOdlI6xEzjc+e/BQ==", - "dev": true - }, "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -3477,6 +5501,44 @@ } } }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -3492,12 +5554,6 @@ "integrity": "sha512-8pMuAn4KacYdGMkFaoQARicp4HSw24/DHOVKWqVRJ8LhhAwPPFpdGvdL9184JVmUwe7vz7Z9n6IqI6t5n2ELdg==", "dev": true }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ==", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3537,24 +5593,12 @@ "string-width": "^1.0.2 || 2" } }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", - "dev": true - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", - "dev": true - }, "workerpool": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", @@ -3651,26 +5695,6 @@ "mkdirp": "^0.5.1" } }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "yargs": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", - "integrity": "sha512-6atYjGACjX/OYWico7LwdBx9eiGlkMnIw6OwqfBb+uJQpaT82tQ7oI+BI6Dvq62qZvSbzGzQCVLQdMd59tR2eA==", - "dev": true, - "requires": { - "camelcase": "^1.2.1", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "os-locale": "^1.4.0", - "window-size": "^0.1.2", - "y18n": "^3.2.0" - } - }, "yargs-parser": { "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", diff --git a/package.json b/package.json index 2715fce..739eae6 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,13 @@ "description": "Topological sort of directed acyclic graphs (like dependecy lists)", "main": "./index.js", "devDependencies": { + "@babel/core": "7.20.2", + "@babel/preset-env": "7.20.2", "babel-eslint": "10.1.0", + "babel-plugin-add-module-exports": "1.0.4", "eslint": "6.8.0", "grunt": "1.5.3", - "grunt-babel": "5.0.3", + "grunt-babel": "8.0.0", "grunt-banner": "0.6.0", "grunt-contrib-clean": "2.0.1", "grunt-contrib-uglify": "5.2.2",