UNPKG

@nestia/sdk

Version:

Nestia SDK and Swagger generator

67 lines 3.26 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SourceFinder = void 0; const fs_1 = __importDefault(require("fs")); const glob_1 = __importDefault(require("glob")); const path_1 = __importDefault(require("path")); var SourceFinder; (function (SourceFinder) { SourceFinder.find = (props) => __awaiter(this, void 0, void 0, function* () { var _a; const dict = new Set(); yield emplace(props.filter)(props.include)((str) => dict.add(str)); if ((_a = props.exclude) === null || _a === void 0 ? void 0 : _a.length) yield emplace(props.filter)(props.exclude)((str) => dict.delete(str)); return [...dict]; }); const emplace = (filter) => (input) => (closure) => __awaiter(this, void 0, void 0, function* () { for (const pattern of input) { if (_Is_file(pattern)) { closure(path_1.default.resolve(pattern)); continue; } for (const file of yield _Glob(pattern)) { const stats = yield fs_1.default.promises.stat(file); if (stats.isDirectory() === true) yield iterate(filter)(closure)(file); else if (stats.isFile() && (yield filter(file))) closure(file); } } }); const iterate = (filter) => (closure) => (location) => __awaiter(this, void 0, void 0, function* () { const directory = yield fs_1.default.promises.readdir(location); for (const file of directory) { const next = path_1.default.resolve(`${location}/${file}`); const stats = yield fs_1.default.promises.stat(next); if (stats.isDirectory() === true) yield iterate(filter)(closure)(next); else if (stats.isFile() && (yield filter(next))) closure(next); } }); const _Glob = (pattern) => new Promise((resolve, reject) => { (0, glob_1.default)(pattern, (err, matches) => { if (err) reject(err); else resolve(matches.map((str) => path_1.default.resolve(str))); }); }); const _Is_file = (pattern) => pattern.endsWith(".ts") && !pattern.endsWith(".d.ts") && fs_1.default.existsSync(pattern); })(SourceFinder || (exports.SourceFinder = SourceFinder = {})); //# sourceMappingURL=SourceFinder.js.map