UNPKG

@fairyfromalfeya/locklift-deploy

Version:

Locklift plugin for replicable deployments and easy testing

55 lines (54 loc) 2.04 kB
"use strict"; 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;