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.
37 lines • 6.17 kB
JavaScript
import { DirectiveKind, ErrorKeyKind, ERROR_KEYS, } from '../shared/constants_domain_specific';
var defaultOnBeforeEmptyInputValidator = function (parser, builder) {
if (parser.input.textInput.replace(/\s+/, '') === '') {
throw builder.create({
errorType: ErrorKeyKind.EmptyInput,
instructionType: ErrorKeyKind.Unknown
});
}
};
var defaultOnAfterNoRecordsValidator = function (parser, builder) {
if (Object.keys(parser.zoneObj).filter(function (x) { return x !== DirectiveKind.Origin && x !== DirectiveKind.TimeToLive; }).length === 0) {
throw builder.create({
errorType: ErrorKeyKind.NoRecords,
instructionType: ErrorKeyKind.Unknown
});
}
};
var defaultLoopValidator = function (parser, builder) {
var errorType = builder.entry.errorType;
if (errorType && ERROR_KEYS.includes(errorType)) {
throw builder.create(builder.entry);
}
};
var wrongLengthValidator = function (parser, builder) {
if (builder.entry.errorType === ErrorKeyKind.WrongLength) {
var _a = builder.entry
.error, expected = _a.expected, type = _a.type, actual = _a.actual;
throw builder.create(builder.entry, { expected: expected, actual: actual, type: type });
}
};
export var createDefaultValidators = function () { return ({
loopValidators: [wrongLengthValidator, defaultLoopValidator],
getErrorText: function (entry) { return entry.errorType; },
preValidators: [defaultOnBeforeEmptyInputValidator],
postValidators: [defaultOnAfterNoRecordsValidator]
}); };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF92YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vZGVmYXVsdF92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLFVBQVUsR0FDWCxNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLElBQU0sa0NBQWtDLEdBQWtCLFVBQUMsTUFBTSxFQUFFLE9BQU87SUFDeEUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNwRCxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbkIsU0FBUyxFQUFFLFlBQVksQ0FBQyxVQUFVO1lBQ2xDLGVBQWUsRUFBRSxZQUFZLENBQUMsT0FBTztTQUN0QyxDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQztBQUVGLElBQU0sZ0NBQWdDLEdBQWtCLFVBQUMsTUFBTSxFQUFFLE9BQU87SUFDdEUsSUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQ2hDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLGFBQWEsQ0FBQyxVQUFVLEVBQTVELENBQTRELENBQ2xFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDZDtRQUNBLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNuQixTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVM7WUFDakMsZUFBZSxFQUFFLFlBQVksQ0FBQyxPQUFPO1NBQ3RDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsSUFBTSxvQkFBb0IsR0FBa0IsVUFBQyxNQUFNLEVBQUUsT0FBTztJQUMxRCxJQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUMxQyxJQUFJLFNBQVMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQWdCLENBQUMsRUFBRTtRQUN0RCxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsSUFBTSxvQkFBb0IsR0FBa0IsVUFBQyxNQUFNLEVBQUUsT0FBTztJQUMxRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDbEQsSUFBQSxLQUE2QixPQUFPLENBQUMsS0FBSzthQUM3QyxLQUFvQyxFQUQvQixRQUFRLGNBQUEsRUFBRSxJQUFJLFVBQUEsRUFBRSxNQUFNLFlBQ1MsQ0FBQztRQUV4QyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsVUFBQSxFQUFFLE1BQU0sUUFBQSxFQUFFLElBQUksTUFBQSxFQUFFLENBQUMsQ0FBQztLQUNqRTtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxJQUFNLHVCQUF1QixHQUFHLGNBQThDLE9BQUEsQ0FBQztJQUNwRixjQUFjLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztJQUM1RCxZQUFZLEVBQUUsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsU0FBUyxFQUFmLENBQWU7SUFDdEMsYUFBYSxFQUFFLENBQUMsa0NBQWtDLENBQUM7SUFDbkQsY0FBYyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7Q0FDbkQsQ0FBQyxFQUxtRixDQUtuRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VySW52YWxpZEFyZ3VtZW50c0Vycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3BhcnNpbmdfZXJyb3JfaW52YWxpZF9hcmd1bWVudHMnO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlS2luZCxcbiAgRXJyb3JLZXlLaW5kLFxuICBFUlJPUl9LRVlTLFxufSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzX2RvbWFpbl9zcGVjaWZpYyc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9uX3R5cGVzJztcblxuY29uc3QgZGVmYXVsdE9uQmVmb3JlRW1wdHlJbnB1dFZhbGlkYXRvcjogVmFsaWRhdGlvbi5DYiA9IChwYXJzZXIsIGJ1aWxkZXIpID0+IHtcbiAgaWYgKHBhcnNlci5pbnB1dC50ZXh0SW5wdXQucmVwbGFjZSgvXFxzKy8sICcnKSA9PT0gJycpIHtcbiAgICB0aHJvdyBidWlsZGVyLmNyZWF0ZSh7XG4gICAgICBlcnJvclR5cGU6IEVycm9yS2V5S2luZC5FbXB0eUlucHV0LFxuICAgICAgaW5zdHJ1Y3Rpb25UeXBlOiBFcnJvcktleUtpbmQuVW5rbm93bixcbiAgICB9KTtcbiAgfVxufTtcblxuY29uc3QgZGVmYXVsdE9uQWZ0ZXJOb1JlY29yZHNWYWxpZGF0b3I6IFZhbGlkYXRpb24uQ2IgPSAocGFyc2VyLCBidWlsZGVyKSA9PiB7XG4gIGlmIChcbiAgICBPYmplY3Qua2V5cyhwYXJzZXIuem9uZU9iaikuZmlsdGVyKFxuICAgICAgeCA9PiB4ICE9PSBEaXJlY3RpdmVLaW5kLk9yaWdpbiAmJiB4ICE9PSBEaXJlY3RpdmVLaW5kLlRpbWVUb0xpdmVcbiAgICApLmxlbmd0aCA9PT0gMFxuICApIHtcbiAgICB0aHJvdyBidWlsZGVyLmNyZWF0ZSh7XG4gICAgICBlcnJvclR5cGU6IEVycm9yS2V5S2luZC5Ob1JlY29yZHMsXG4gICAgICBpbnN0cnVjdGlvblR5cGU6IEVycm9yS2V5S2luZC5Vbmtub3duLFxuICAgIH0pO1xuICB9XG59O1xuXG5jb25zdCBkZWZhdWx0TG9vcFZhbGlkYXRvcjogVmFsaWRhdGlvbi5DYiA9IChwYXJzZXIsIGJ1aWxkZXIpID0+IHtcbiAgY29uc3QgZXJyb3JUeXBlID0gYnVpbGRlci5lbnRyeS5lcnJvclR5cGU7XG4gIGlmIChlcnJvclR5cGUgJiYgRVJST1JfS0VZUy5pbmNsdWRlcyhlcnJvclR5cGUgYXMgYW55KSkge1xuICAgIHRocm93IGJ1aWxkZXIuY3JlYXRlKGJ1aWxkZXIuZW50cnkpO1xuICB9XG59O1xuXG5jb25zdCB3cm9uZ0xlbmd0aFZhbGlkYXRvcjogVmFsaWRhdGlvbi5DYiA9IChwYXJzZXIsIGJ1aWxkZXIpID0+IHtcbiAgaWYgKGJ1aWxkZXIuZW50cnkuZXJyb3JUeXBlID09PSBFcnJvcktleUtpbmQuV3JvbmdMZW5ndGgpIHtcbiAgICBjb25zdCB7IGV4cGVjdGVkLCB0eXBlLCBhY3R1YWwgfSA9IGJ1aWxkZXIuZW50cnlcbiAgICAgIC5lcnJvciBhcyBQYXJzZXJJbnZhbGlkQXJndW1lbnRzRXJyb3I7XG5cbiAgICB0aHJvdyBidWlsZGVyLmNyZWF0ZShidWlsZGVyLmVudHJ5LCB7IGV4cGVjdGVkLCBhY3R1YWwsIHR5cGUgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0VmFsaWRhdG9ycyA9ICgpOiBSZXF1aXJlZDxWYWxpZGF0aW9uLlZhbGlkYXRpb25PcHRpb25zPiA9PiAoe1xuICBsb29wVmFsaWRhdG9yczogW3dyb25nTGVuZ3RoVmFsaWRhdG9yLCBkZWZhdWx0TG9vcFZhbGlkYXRvcl0sXG4gIGdldEVycm9yVGV4dDogZW50cnkgPT4gZW50cnkuZXJyb3JUeXBlLFxuICBwcmVWYWxpZGF0b3JzOiBbZGVmYXVsdE9uQmVmb3JlRW1wdHlJbnB1dFZhbGlkYXRvcl0sXG4gIHBvc3RWYWxpZGF0b3JzOiBbZGVmYXVsdE9uQWZ0ZXJOb1JlY29yZHNWYWxpZGF0b3JdLFxufSk7XG4iXX0=