UNPKG

amazon-route-53-dns-zone-file

Version:

Makes DNS Zone File easy. Parses and validates BIND zone files and can be extended for custom features. Functionality is modular. Features are made open for extension and closed for runtime mutation. Written in TypeScript.

84 lines 7.9 kB
var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; import { transformInputText } from './utils_parser'; import { visitors } from './visitors'; import { ParserNode } from './parser_node'; var Parser = /** @class */ (function () { function Parser($originName) { if ($originName === void 0) { $originName = ''; } this.parsingMeta = new Map(); this.stack = []; this.visitors = visitors; this.input = { textInput: null, textInputFlattened: '', textInputSplitByLine: [] }; this.zoneObj = { $ORIGIN: $originName }; this.input.$originName = $originName; } Parser.prototype.setText = function (textInput) { var _a = __read(transformInputText(textInput), 2), flattened = _a[0], splitByLine = _a[1]; this.input.textInput = textInput; this.input.textInputFlattened = flattened; this.input.textInputSplitByLine = splitByLine; return this; }; /** * @perf can optimize this looping * @note sharing the node instance across iterations can save memory but also add confusion like React SyntheticEvent */ Parser.prototype.parse = function () { var e_1, _a; var _b; /* istanbul ignore next */ if (process.env.NODE_ENV !== 'production' && this.input.textInput == null) { console.error("[Parser] must setText(string) before calling parse()"); } var node = new ParserNode(this); var findVisitor = function (x) { return x.isSatisfied(node); }; try { for (var _c = __values(this.input.textInputSplitByLine.entries()), _d = _c.next(); !_d.done; _d = _c.next()) { var _e = __read(_d.value, 2), index = _e[0], lineContent = _e[1]; node.update(lineContent, index); (_b = this.visitors.find(findVisitor)) === null || _b === void 0 ? void 0 : _b.visit(this, node); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_d && !_d.done && (_a = _c["return"])) _a.call(_c); } finally { if (e_1) throw e_1.error; } } return this; }; return Parser; }()); export { Parser }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnNlci9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDO0lBV0UsZ0JBQVksV0FBd0I7UUFBeEIsNEJBQUEsRUFBQSxnQkFBd0I7UUFUN0IsZ0JBQVcsR0FBd0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM3RCxVQUFLLEdBQWtDLEVBQUUsQ0FBQztRQUMxQyxhQUFRLEdBQXFDLFFBQVEsQ0FBQztRQUN0RCxVQUFLLEdBQWtDO1lBQzVDLFNBQVMsRUFBRSxJQUFXO1lBQ3RCLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsb0JBQW9CLEVBQUUsRUFBRTtTQUN6QixDQUFDO1FBR0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQXVCLENBQUM7UUFDN0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSx3QkFBTyxHQUFkLFVBQWUsU0FBaUI7UUFDeEIsSUFBQSxLQUFBLE9BQTJCLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFBLEVBQXZELFNBQVMsUUFBQSxFQUFFLFdBQVcsUUFBaUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxXQUFXLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksc0JBQUssR0FBWjs7O1FBQ0UsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUN6RSxPQUFPLENBQUMsS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFNLFdBQVcsR0FBRyxVQUFDLENBQXdCLElBQUssT0FBQSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFuQixDQUFtQixDQUFDOztZQUV0RSxLQUdLLElBQUEsS0FBQSxTQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUEsZ0JBQUEsNEJBQUU7Z0JBSHJDLElBQUEsS0FBQSxtQkFHVixFQUZDLEtBQUssUUFBQSxFQUNMLFdBQVcsUUFBQTtnQkFFWCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEMsTUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsMENBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNwRDs7Ozs7Ozs7O1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0gsYUFBQztBQUFELENBQUMsQUEvQ0QsSUErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZWRUeXBpbmdzIH0gZnJvbSAnLi4vc2hhcmVkL3R5cGVzX2RvbWFpbl9zcGVjaWZpYyc7XG5pbXBvcnQgeyBQYXJzZXJUeXBpbmdzIH0gZnJvbSAnLi90eXBlc19wYXJzZXInO1xuaW1wb3J0IHsgdHJhbnNmb3JtSW5wdXRUZXh0IH0gZnJvbSAnLi91dGlsc19wYXJzZXInO1xuaW1wb3J0IHsgdmlzaXRvcnMgfSBmcm9tICcuL3Zpc2l0b3JzJztcbmltcG9ydCB7IFBhcnNlck5vZGUgfSBmcm9tICcuL3BhcnNlcl9ub2RlJztcblxuZXhwb3J0IGNsYXNzIFBhcnNlciBpbXBsZW1lbnRzIFBhcnNlclR5cGluZ3MuUGFyc2VyIHtcbiAgcHVibGljIHpvbmVPYmo6IFBhcnNlclR5cGluZ3MuUGFyc2VyWyd6b25lT2JqJ107XG4gIHB1YmxpYyBwYXJzaW5nTWV0YTogUGFyc2VyVHlwaW5ncy5QYXJzZXJbJ3BhcnNpbmdNZXRhJ10gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBzdGFjazogUGFyc2VyVHlwaW5ncy5QYXJzZXJbJ3N0YWNrJ10gPSBbXTtcbiAgcHVibGljIHZpc2l0b3JzOiBQYXJzZXJUeXBpbmdzLlBhcnNlclsndmlzaXRvcnMnXSA9IHZpc2l0b3JzO1xuICBwdWJsaWMgaW5wdXQ6IFBhcnNlclR5cGluZ3MuUGFyc2VyWydpbnB1dCddID0ge1xuICAgIHRleHRJbnB1dDogbnVsbCBhcyBhbnksXG4gICAgdGV4dElucHV0RmxhdHRlbmVkOiAnJyxcbiAgICB0ZXh0SW5wdXRTcGxpdEJ5TGluZTogW10sXG4gIH07XG5cbiAgY29uc3RydWN0b3IoJG9yaWdpbk5hbWU6IHN0cmluZyA9ICcnKSB7XG4gICAgdGhpcy56b25lT2JqID0geyAkT1JJR0lOOiAkb3JpZ2luTmFtZSB9IGFzIFBhcnNlZFR5cGluZ3MuT2JqO1xuICAgIHRoaXMuaW5wdXQuJG9yaWdpbk5hbWUgPSAkb3JpZ2luTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUZXh0KHRleHRJbnB1dDogc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgW2ZsYXR0ZW5lZCwgc3BsaXRCeUxpbmVdID0gdHJhbnNmb3JtSW5wdXRUZXh0KHRleHRJbnB1dCk7XG4gICAgdGhpcy5pbnB1dC50ZXh0SW5wdXQgPSB0ZXh0SW5wdXQ7XG4gICAgdGhpcy5pbnB1dC50ZXh0SW5wdXRGbGF0dGVuZWQgPSBmbGF0dGVuZWQ7XG4gICAgdGhpcy5pbnB1dC50ZXh0SW5wdXRTcGxpdEJ5TGluZSA9IHNwbGl0QnlMaW5lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwZXJmIGNhbiBvcHRpbWl6ZSB0aGlzIGxvb3BpbmdcbiAgICogQG5vdGUgc2hhcmluZyB0aGUgbm9kZSBpbnN0YW5jZSBhY3Jvc3MgaXRlcmF0aW9ucyBjYW4gc2F2ZSBtZW1vcnkgYnV0IGFsc28gYWRkIGNvbmZ1c2lvbiBsaWtlIFJlYWN0IFN5bnRoZXRpY0V2ZW50XG4gICAqL1xuICBwdWJsaWMgcGFyc2UoKTogdGhpcyB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0aGlzLmlucHV0LnRleHRJbnB1dCA9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbUGFyc2VyXSBtdXN0IHNldFRleHQoc3RyaW5nKSBiZWZvcmUgY2FsbGluZyBwYXJzZSgpYCk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IG5ldyBQYXJzZXJOb2RlKHRoaXMpO1xuICAgIGNvbnN0IGZpbmRWaXNpdG9yID0gKHg6IFBhcnNlclR5cGluZ3MuVmlzaXRvcikgPT4geC5pc1NhdGlzZmllZChub2RlKTtcblxuICAgIGZvciAoY29uc3QgW1xuICAgICAgaW5kZXgsXG4gICAgICBsaW5lQ29udGVudCxcbiAgICBdIG9mIHRoaXMuaW5wdXQudGV4dElucHV0U3BsaXRCeUxpbmUuZW50cmllcygpKSB7XG4gICAgICBub2RlLnVwZGF0ZShsaW5lQ29udGVudCwgaW5kZXgpO1xuICAgICAgdGhpcy52aXNpdG9ycy5maW5kKGZpbmRWaXNpdG9yKT8udmlzaXQodGhpcywgbm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==