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.
106 lines • 9.4 kB
JavaScript
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 __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
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 { ErrorBuilder } from './error_builder';
import { createDefaultValidators } from './default_validators';
/** @mutates */
var mergeOptions = function (target, partial) {
var keys = Object.keys(partial);
keys.forEach(function (key) {
if (key === 'getErrorText') {
target[key] = partial[key];
}
else if (Array.isArray(target[key])) {
target[key] = __spreadArray(__spreadArray([], __read(target[key])), __read(partial[key]));
}
});
};
var Validator = /** @class */ (function () {
function Validator(options) {
if (options === void 0) { options = {}; }
this.errors = [];
this.options = createDefaultValidators();
this.errorBuilder = new ErrorBuilder();
this.mergeOptions(options);
}
Validator.prototype.mergeOptions = function (partial) {
mergeOptions(this.options, partial);
this.errorBuilder.getErrorText = this.options.getErrorText;
return this;
};
Validator.prototype.validate = function (parser) {
var e_1, _a;
var _this = this;
this.options.preValidators.forEach(function (validator) {
try {
validator(parser, _this.errorBuilder);
}
catch (beforeError) {
_this.errors.push(beforeError);
}
});
try {
for (var _b = __values(parser.parsingMeta), _c = _b.next(); !_c.done; _c = _b.next()) {
var _d = __read(_c.value, 2), parsingLineNumber = _d[0], entry = _d[1];
this.errorBuilder.update(parsingLineNumber, entry);
this.options.loopValidators.forEach(function (validator) {
try {
validator(parser, _this.errorBuilder);
}
catch (loopError) {
_this.errors.push(loopError);
}
});
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b["return"])) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
this.errorBuilder.update(0, {});
this.options.postValidators.forEach(function (validator) {
try {
validator(parser, _this.errorBuilder);
}
catch (afterError) {
_this.errors.push(afterError);
}
});
return this;
};
return Validator;
}());
export { Validator };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9ELGVBQWU7QUFDZixJQUFNLFlBQVksR0FBRyxVQUNuQixNQUE4QyxFQUM5QyxPQUFxQztJQUVyQyxJQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FFL0IsQ0FBQztJQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO1FBQ2QsSUFBSSxHQUFHLEtBQUssY0FBYyxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFFLENBQUM7U0FDN0I7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQ0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQUssT0FBTyxDQUFDLEdBQUcsQ0FBRSxFQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGO0lBS0UsbUJBQVksT0FBMEM7UUFBMUMsd0JBQUEsRUFBQSxZQUEwQztRQUovQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUM1QixZQUFPLEdBQTJDLHVCQUF1QixFQUFFLENBQUM7UUFDM0UsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3hDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLGdDQUFZLEdBQXBCLFVBQXFCLE9BQXFDO1FBQ3hELFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLDRCQUFRLEdBQWYsVUFBZ0IsTUFBNEI7O1FBQTVDLGlCQStCQztRQTlCQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBQSxTQUFTO1lBQzFDLElBQUk7Z0JBQ0YsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdEM7WUFBQyxPQUFPLFdBQVcsRUFBRTtnQkFDcEIsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDL0I7UUFDSCxDQUFDLENBQUMsQ0FBQzs7WUFFSCxLQUF5QyxJQUFBLEtBQUEsU0FBQSxNQUFNLENBQUMsV0FBVyxDQUFBLGdCQUFBLDRCQUFFO2dCQUFsRCxJQUFBLEtBQUEsbUJBQTBCLEVBQXpCLGlCQUFpQixRQUFBLEVBQUUsS0FBSyxRQUFBO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQUEsU0FBUztvQkFDM0MsSUFBSTt3QkFDRixTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDdEM7b0JBQUMsT0FBTyxTQUFTLEVBQUU7d0JBQ2xCLEtBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUM3QjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKOzs7Ozs7Ozs7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQUEsU0FBUztZQUMzQyxJQUFJO2dCQUNGLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3RDO1lBQUMsT0FBTyxVQUFVLEVBQUU7Z0JBQ25CLEtBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzlCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDSCxnQkFBQztBQUFELENBQUMsQUEvQ0QsSUErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzaW5nRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcGFyc2luZ19lcnJvcic7XG5pbXBvcnQgeyBQYXJzZXJUeXBpbmdzIH0gZnJvbSAnLi4vcGFyc2VyL3R5cGVzX3BhcnNlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9uX3R5cGVzJztcbmltcG9ydCB7IEVycm9yQnVpbGRlciB9IGZyb20gJy4vZXJyb3JfYnVpbGRlcic7XG5pbXBvcnQgeyBjcmVhdGVEZWZhdWx0VmFsaWRhdG9ycyB9IGZyb20gJy4vZGVmYXVsdF92YWxpZGF0b3JzJztcblxuLyoqIEBtdXRhdGVzICovXG5jb25zdCBtZXJnZU9wdGlvbnMgPSAoXG4gIHRhcmdldDogUmVxdWlyZWQ8VmFsaWRhdGlvbi5WYWxpZGF0aW9uT3B0aW9ucz4sXG4gIHBhcnRpYWw6IFZhbGlkYXRpb24uVmFsaWRhdGlvbk9wdGlvbnNcbikgPT4ge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFydGlhbCkgYXMgQXJyYXk8XG4gICAga2V5b2YgVmFsaWRhdGlvbi5WYWxpZGF0aW9uT3B0aW9uc1xuICA+O1xuICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICBpZiAoa2V5ID09PSAnZ2V0RXJyb3JUZXh0Jykge1xuICAgICAgdGFyZ2V0W2tleV0gPSBwYXJ0aWFsW2tleV0hO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXRba2V5XSkpIHtcbiAgICAgIHRhcmdldFtrZXldID0gWy4uLnRhcmdldFtrZXldLCAuLi5wYXJ0aWFsW2tleV0hXTtcbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvciB7XG4gIHB1YmxpYyBlcnJvcnM6IFBhcnNpbmdFcnJvcltdID0gW107XG4gIHB1YmxpYyBvcHRpb25zOiBSZXF1aXJlZDxWYWxpZGF0aW9uLlZhbGlkYXRpb25PcHRpb25zPiA9IGNyZWF0ZURlZmF1bHRWYWxpZGF0b3JzKCk7XG4gIHByaXZhdGUgZXJyb3JCdWlsZGVyID0gbmV3IEVycm9yQnVpbGRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFZhbGlkYXRpb24uVmFsaWRhdGlvbk9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMubWVyZ2VPcHRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU9wdGlvbnMocGFydGlhbDogVmFsaWRhdGlvbi5WYWxpZGF0aW9uT3B0aW9ucykge1xuICAgIG1lcmdlT3B0aW9ucyh0aGlzLm9wdGlvbnMsIHBhcnRpYWwpO1xuICAgIHRoaXMuZXJyb3JCdWlsZGVyLmdldEVycm9yVGV4dCA9IHRoaXMub3B0aW9ucy5nZXRFcnJvclRleHQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUocGFyc2VyOiBQYXJzZXJUeXBpbmdzLlBhcnNlcik6IHRoaXMge1xuICAgIHRoaXMub3B0aW9ucy5wcmVWYWxpZGF0b3JzLmZvckVhY2godmFsaWRhdG9yID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbGlkYXRvcihwYXJzZXIsIHRoaXMuZXJyb3JCdWlsZGVyKTtcbiAgICAgIH0gY2F0Y2ggKGJlZm9yZUVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzLnB1c2goYmVmb3JlRXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBbcGFyc2luZ0xpbmVOdW1iZXIsIGVudHJ5XSBvZiBwYXJzZXIucGFyc2luZ01ldGEpIHtcbiAgICAgIHRoaXMuZXJyb3JCdWlsZGVyLnVwZGF0ZShwYXJzaW5nTGluZU51bWJlciwgZW50cnkpO1xuXG4gICAgICB0aGlzLm9wdGlvbnMubG9vcFZhbGlkYXRvcnMuZm9yRWFjaCh2YWxpZGF0b3IgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhbGlkYXRvcihwYXJzZXIsIHRoaXMuZXJyb3JCdWlsZGVyKTtcbiAgICAgICAgfSBjYXRjaCAobG9vcEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcnMucHVzaChsb29wRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmVycm9yQnVpbGRlci51cGRhdGUoMCwge30gYXMgYW55KTtcbiAgICB0aGlzLm9wdGlvbnMucG9zdFZhbGlkYXRvcnMuZm9yRWFjaCh2YWxpZGF0b3IgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsaWRhdG9yKHBhcnNlciwgdGhpcy5lcnJvckJ1aWxkZXIpO1xuICAgICAgfSBjYXRjaCAoYWZ0ZXJFcnJvcikge1xuICAgICAgICB0aGlzLmVycm9ycy5wdXNoKGFmdGVyRXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==