topological-sort-group
Version:
Topological sorting and cycle detection. Optional grouping for parallel processing
29 lines • 1.4 kB
JavaScript
// https://gist.github.com/andrewchilds/30a7fb18981d413260c7a36428ed13da
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return deepGet;
}
});
function _type_of(obj) {
"@swc/helpers - typeof";
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
}
var isArray = Array.isArray || function(x) {
return Object.prototype.toString.call(x) === '[object Array]';
};
function deepGet(value, query) {
var defaultVal = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : undefined;
var splitQuery = isArray(query) ? query : query.replace(/(\[(\d)\])/g, '.$2').replace(/^\./, '').split('.');
if (!splitQuery.length || splitQuery[0] === undefined) return value;
var key = splitQuery[0];
if ((typeof value === "undefined" ? "undefined" : _type_of(value)) !== 'object' || value === null || !(key in value) || value[key] === undefined) {
return defaultVal;
}
return deepGet(value[key], splitQuery.slice(1), defaultVal);
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }