UNPKG

@codegena/oapi3ts

Version:

Codegeneration from OAS3 to TypeScript

47 lines 6.47 kB
import { flatten, intersectionBy } from 'lodash'; // tslint:enable:no-implicit-dependencies import { uniqDependencies } from './uniq-dependencies'; /** * Mutates arrays! */ export function extractCommonDependencies(...dependencySets) { const allIntersections = []; let allDependencies; if (dependencySets.length === 1) { [allDependencies] = dependencySets; return { allDependencies, commonDependencies: allDependencies, }; } for (let i = 0; i < dependencySets.length - 1; i++) { for (let ii = i + 1; ii < dependencySets.length; ii++) { const firstSet = dependencySets[i]; const secondSet = dependencySets[ii]; const intersections = intersectionBy(firstSet, secondSet, dependency => dependency.source.fileName); if (intersections.length) { allIntersections.push(...intersections); intersections.forEach(intersection => { replaceDependencyBy(firstSet, intersection); replaceDependencyBy(secondSet, intersection); }); } } } const commonDependencies = uniqDependencies(allIntersections); allDependencies = uniqDependencies(flatten(dependencySets)); return { allDependencies, commonDependencies, }; } /** * mutates array */ function replaceDependencyBy(collection, claimToBeSame) { const foundIndex = collection.findIndex(item => item.source.text === claimToBeSame.source.text); if (foundIndex !== -1) { collection[foundIndex] = claimToBeSame; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1jb21tb24tZGVwZW5kZW5jaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9vYXBpM3RzL3NyYy91dGlscy9leHRyYWN0LWNvbW1vbi1kZXBlbmRlbmNpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHakQseUNBQXlDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUNyQyxHQUFHLGNBQThCO0lBRWpDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQzVCLElBQUksZUFBZSxDQUFDO0lBRXBCLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDN0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxjQUFjLENBQUM7UUFFbkMsT0FBTztZQUNILGVBQWU7WUFDZixrQkFBa0IsRUFBRSxlQUFlO1NBQ3RDLENBQUM7S0FDTDtJQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNoRCxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDbkQsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVyQyxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQ2hDLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDM0MsQ0FBQztZQUVGLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtnQkFDdEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7Z0JBQ3hDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ2pDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDNUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsQ0FBQzthQUNOO1NBQ0o7S0FDSjtJQUVELE1BQU0sa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFNUQsT0FBTztRQUNILGVBQWU7UUFDZixrQkFBa0I7S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsbUJBQW1CLENBQUMsVUFBd0IsRUFBRSxhQUF5QjtJQUM1RSxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6RCxDQUFDO0lBRUYsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDbkIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztLQUMxQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbGF0dGVuLCBpbnRlcnNlY3Rpb25CeSB9IGZyb20gJ2xvZGFzaCc7XG4vLyB0c2xpbnQ6ZGlzYWJsZTpuby1pbXBsaWNpdC1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IERlcGVuZGVuY3ksIERlcGVuZGVuY3lDb2xsZWN0aW9uIH0gZnJvbSAnQGNvZGVnZW5hL29hcGkzdHMvY29udHJhY3QnO1xuLy8gdHNsaW50OmVuYWJsZTpuby1pbXBsaWNpdC1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IHVuaXFEZXBlbmRlbmNpZXMgfSBmcm9tICcuL3VuaXEtZGVwZW5kZW5jaWVzJztcblxuLyoqXG4gKiBNdXRhdGVzIGFycmF5cyFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RDb21tb25EZXBlbmRlbmNpZXMoXG4gICAgLi4uZGVwZW5kZW5jeVNldHM6IERlcGVuZGVuY3lbXVtdXG4pOiBEZXBlbmRlbmN5Q29sbGVjdGlvbiB7XG4gICAgY29uc3QgYWxsSW50ZXJzZWN0aW9ucyA9IFtdO1xuICAgIGxldCBhbGxEZXBlbmRlbmNpZXM7XG5cbiAgICBpZiAoZGVwZW5kZW5jeVNldHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIFthbGxEZXBlbmRlbmNpZXNdID0gZGVwZW5kZW5jeVNldHM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFsbERlcGVuZGVuY2llcyxcbiAgICAgICAgICAgIGNvbW1vbkRlcGVuZGVuY2llczogYWxsRGVwZW5kZW5jaWVzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVwZW5kZW5jeVNldHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGlpID0gaSArIDE7IGlpIDwgZGVwZW5kZW5jeVNldHMubGVuZ3RoOyBpaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFNldCA9IGRlcGVuZGVuY3lTZXRzW2ldO1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kU2V0ID0gZGVwZW5kZW5jeVNldHNbaWldO1xuXG4gICAgICAgICAgICBjb25zdCBpbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0aW9uQnkoXG4gICAgICAgICAgICAgICAgZmlyc3RTZXQsXG4gICAgICAgICAgICAgICAgc2Vjb25kU2V0LFxuICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgPT4gZGVwZW5kZW5jeS5zb3VyY2UuZmlsZU5hbWUsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBhbGxJbnRlcnNlY3Rpb25zLnB1c2goLi4uaW50ZXJzZWN0aW9ucyk7XG4gICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9ucy5mb3JFYWNoKGludGVyc2VjdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VEZXBlbmRlbmN5QnkoZmlyc3RTZXQsIGludGVyc2VjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VEZXBlbmRlbmN5Qnkoc2Vjb25kU2V0LCBpbnRlcnNlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tbW9uRGVwZW5kZW5jaWVzID0gdW5pcURlcGVuZGVuY2llcyhhbGxJbnRlcnNlY3Rpb25zKTtcbiAgICBhbGxEZXBlbmRlbmNpZXMgPSB1bmlxRGVwZW5kZW5jaWVzKGZsYXR0ZW4oZGVwZW5kZW5jeVNldHMpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGFsbERlcGVuZGVuY2llcyxcbiAgICAgICAgY29tbW9uRGVwZW5kZW5jaWVzLFxuICAgIH07XG59XG5cbi8qKlxuICogbXV0YXRlcyBhcnJheVxuICovXG5mdW5jdGlvbiByZXBsYWNlRGVwZW5kZW5jeUJ5KGNvbGxlY3Rpb246IERlcGVuZGVuY3lbXSwgY2xhaW1Ub0JlU2FtZTogRGVwZW5kZW5jeSk6IHZvaWQge1xuICAgIGNvbnN0IGZvdW5kSW5kZXggPSBjb2xsZWN0aW9uLmZpbmRJbmRleChcbiAgICAgICAgaXRlbSA9PiBpdGVtLnNvdXJjZS50ZXh0ID09PSBjbGFpbVRvQmVTYW1lLnNvdXJjZS50ZXh0LFxuICAgICk7XG5cbiAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29sbGVjdGlvbltmb3VuZEluZGV4XSA9IGNsYWltVG9CZVNhbWU7XG4gICAgfVxufVxuIl19