1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.reversePathsToWalk = exports.ConfigResolver = exports.configLookup = void 0;
|
7 |
|
8 | var _path = _interopRequireDefault(require("path"));
|
9 |
|
10 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11 |
|
12 | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
13 |
|
14 | function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
15 |
|
16 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
17 |
|
18 |
|
19 | const uniq = arr => arr.filter((elem, pos, a) => a.indexOf(elem) === pos);
|
20 |
|
21 | const reversePathsToWalk = ({
|
22 | folder,
|
23 | path
|
24 | }) => {
|
25 | const resolved = path.resolve(folder);
|
26 | const parts = resolved.split(path.sep);
|
27 | const results = parts.map((n, idx, arr) => arr.slice(0, idx + 1).join(path.sep));
|
28 | results[0] = results[0] || '/';
|
29 | return results.reverse();
|
30 | };
|
31 |
|
32 | exports.reversePathsToWalk = reversePathsToWalk;
|
33 |
|
34 | const configLookup = (file, folder, path = _path.default) => uniq(reversePathsToWalk({
|
35 | folder,
|
36 | path
|
37 | }).map(p => path.join(p, file)));
|
38 |
|
39 | exports.configLookup = configLookup;
|
40 |
|
41 | class ConfigResolver {
|
42 | constructor(configFile, io) {
|
43 | _defineProperty(this, "configFile", void 0);
|
44 |
|
45 | _defineProperty(this, "io", void 0);
|
46 |
|
47 | this.configFile = configFile;
|
48 | this.io = io;
|
49 | }
|
50 |
|
51 | resolve(from) {
|
52 | var _this = this;
|
53 |
|
54 | return _asyncToGenerator(function* () {
|
55 | const configCandidates = configLookup(_this.configFile, from);
|
56 | const _this$io = _this.io,
|
57 | exists = _this$io.exists,
|
58 | load = _this$io.load,
|
59 | none = _this$io.none;
|
60 | var _iteratorNormalCompletion = true;
|
61 | var _didIteratorError = false;
|
62 | var _iteratorError = undefined;
|
63 |
|
64 | try {
|
65 | for (var _iterator = configCandidates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
66 | const candidate = _step.value;
|
67 |
|
68 | if (yield exists(candidate)) {
|
69 | return yield load(candidate);
|
70 | }
|
71 | }
|
72 | } catch (err) {
|
73 | _didIteratorError = true;
|
74 | _iteratorError = err;
|
75 | } finally {
|
76 | try {
|
77 | if (!_iteratorNormalCompletion && _iterator.return != null) {
|
78 | _iterator.return();
|
79 | }
|
80 | } finally {
|
81 | if (_didIteratorError) {
|
82 | throw _iteratorError;
|
83 | }
|
84 | }
|
85 | }
|
86 |
|
87 | return yield none(from);
|
88 | })();
|
89 | }
|
90 |
|
91 | }
|
92 |
|
93 | exports.ConfigResolver = ConfigResolver; |
\ | No newline at end of file |