@fairyfromalfeya/locklift-deploy
Version:
Locklift plugin for replicable deployments and easy testing
55 lines (54 loc) • 2.04 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTagsTree = exports.flatDirTree = exports.isT = exports.calculateDependenciesCount = void 0;
const directory_tree_1 = __importDefault(require("directory-tree"));
const calculateDependenciesCount = (arr, tag, initialTag) => {
if (arr.length === 0) {
return { deep: 0, deps: [] };
}
const searchedEl = arr.find((el) => el.tag === tag);
if (!searchedEl) {
return { deep: 0, deps: [] };
}
if (!searchedEl.dependencies) {
return { deep: 0, deps: [] };
}
if (tag !== initialTag && initialTag === searchedEl.tag) {
throw new Error(`Tag ${initialTag} defined twice or more`);
}
return searchedEl.dependencies.reduce((acc, next) => {
if (initialTag === next) {
throw new Error(`The tag can't depend on self, tag: ${initialTag}, conflict with ${searchedEl.tag}`);
}
const { deps, deep } = (0, exports.calculateDependenciesCount)(arr, next, initialTag);
return {
deps: [...acc.deps, ...deps],
deep: acc.deep + deep + 1,
};
}, { deep: 0, deps: (searchedEl.dependencies || []) });
};
exports.calculateDependenciesCount = calculateDependenciesCount;
const isT = (p) => !!p;
exports.isT = isT;
function flatDirTree(tree) {
return tree?.children?.reduce((acc, current) => {
if (current.children === undefined) {
return [...acc, current];
}
const flatChild = flatDirTree(current);
if (!flatChild)
return acc;
return [...acc, ...flatChild];
}, []);
}
exports.flatDirTree = flatDirTree;
const getTagsTree = (folder) => {
const contractsNestedTree = (0, directory_tree_1.default)(folder, {
extensions: /\.ts/,
});
return flatDirTree(contractsNestedTree);
};
exports.getTagsTree = getTagsTree;