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.
172 lines • 6.77 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WarningKeyKind = exports.ERROR_KEYS = exports.ErrorKeyKind = exports.RecordMaxLengthKind = exports.RecordMinLengthKind = exports.INSTRUCTION_TYPES = exports.ALL_RECORD_TYPES = exports.SUPPORTED_RECORD_TYPES = exports.DirectiveKind = void 0;
/** @perf use const enums */
var DirectiveKind;
(function (DirectiveKind) {
DirectiveKind["Origin"] = "$ORIGIN";
DirectiveKind["TimeToLive"] = "$TTL";
})(DirectiveKind = exports.DirectiveKind || (exports.DirectiveKind = {}));
exports.SUPPORTED_RECORD_TYPES = [
'TXT',
'NS',
'A',
'AAAA',
'CNAME',
'MX',
'PTR',
'SPF',
'SRV',
'CAA',
'NAPTR',
];
exports.ALL_RECORD_TYPES = ['SOA', ...exports.SUPPORTED_RECORD_TYPES];
/** @private */
exports.INSTRUCTION_TYPES = [
...exports.SUPPORTED_RECORD_TYPES,
DirectiveKind.TimeToLive,
DirectiveKind.Origin,
];
/** @perf const enum */
var RecordMinLengthKind;
(function (RecordMinLengthKind) {
/**
* treemonkey1.ca. 3W IN TXT "v=DKIM1\; k=rsa\; p=MIGf..."
* TXT "eh=true"
*/
RecordMinLengthKind[RecordMinLengthKind["TXT"] = 1] = "TXT";
/**
* www 1h IN CNAME \\008\\99.igloo.com.
* CNAME igloo.igloo.com.
*/
RecordMinLengthKind[RecordMinLengthKind["CNAME"] = 1] = "CNAME";
/**
* eh 1w A 127.0.0.1
* eh A 127.0.0.1
* A 127.0.0.1
*/
RecordMinLengthKind[RecordMinLengthKind["A"] = 1] = "A";
/**
* eh 3W AAAA ::1
* @ AAAA ::1
*/
RecordMinLengthKind[RecordMinLengthKind["AAAA"] = 1] = "AAAA";
/**
* @ 1W NS ns.igloo.com.
* @ NS NS2.NAMESERVER.NET.
* 1W NS ns.igloo.com.
*/
RecordMinLengthKind[RecordMinLengthKind["NS"] = 1] = "NS";
/**
* 1 3W PTR HOST1.igloo.com.
* 10.3 PTR HOST3.igloo.com.
* @ PTR HOST3.igloo.com.
* PTR HOST3.igloo.com.
*/
RecordMinLengthKind[RecordMinLengthKind["PTR"] = 1] = "PTR";
/**
* igloo.com. MX 10 mail.igloo.com.
* MX 10 mail.igloo.com.
*/
RecordMinLengthKind[RecordMinLengthKind["MX"] = 2] = "MX";
/**
* test1 3w IN SPF "v=spf2" "mx:gcloud-node.com." "-all"
* SPF "v=spf3" "mx:gcloud-node.com." "-all "
* SPF "v=spf4" "mx:gcloud-node.com." "-all"
* SPF "v=spf4 mx:gcloud-node.com."
*/
RecordMinLengthKind[RecordMinLengthKind["SPF"] = 1] = "SPF";
/**
* igloo.com 3W CAA 0 iodef "mailto:security@igloo.com"
* CAA 0 iodef "mailto:security@igloo.com"
*/
RecordMinLengthKind[RecordMinLengthKind["CAA"] = 3] = "CAA";
/**
* _foobar._tcp SRV 0 1 9 old-slow-box.igloo.com.
* _foobar._tcp 1W SRV 0 1 9 old-slow-box.igloo.com.
*/
RecordMinLengthKind[RecordMinLengthKind["SRV"] = 4] = "SRV";
/**
* rfc3403-1 86400 IN NAPTR 100 10 "u" "sip+E2U" "!^.*$!sip:information@foo.se!i" .
* 69 42 "u" "sip" ".*" .
*/
RecordMinLengthKind[RecordMinLengthKind["NAPTR"] = 6] = "NAPTR";
/**
* or 6 | 7...
*/
RecordMinLengthKind[RecordMinLengthKind["SOA"] = 7] = "SOA";
})(RecordMinLengthKind = exports.RecordMinLengthKind || (exports.RecordMinLengthKind = {}));
/** @perf const enum */
var RecordMaxLengthKind;
(function (RecordMaxLengthKind) {
/**
* @example SPF v=spf1 ip:4:192.168.0.1/16-all
* @example SPF v=spf1 ip4:192.0.2.0/24 ip4:198.51.100.123 a -all
*/
RecordMaxLengthKind[RecordMaxLengthKind["SPF"] = Infinity] = "SPF";
RecordMaxLengthKind[RecordMaxLengthKind["SOA"] = Infinity] = "SOA";
RecordMaxLengthKind[RecordMaxLengthKind["TXT"] = 1] = "TXT";
RecordMaxLengthKind[RecordMaxLengthKind["CNAME"] = 1] = "CNAME";
RecordMaxLengthKind[RecordMaxLengthKind["A"] = 1] = "A";
RecordMaxLengthKind[RecordMaxLengthKind["AAAA"] = 1] = "AAAA";
RecordMaxLengthKind[RecordMaxLengthKind["NS"] = 1] = "NS";
RecordMaxLengthKind[RecordMaxLengthKind["PTR"] = 1] = "PTR";
RecordMaxLengthKind[RecordMaxLengthKind["MX"] = 2] = "MX";
RecordMaxLengthKind[RecordMaxLengthKind["CAA"] = 3] = "CAA";
RecordMaxLengthKind[RecordMaxLengthKind["SRV"] = 4] = "SRV";
RecordMaxLengthKind[RecordMaxLengthKind["NAPTR"] = 6] = "NAPTR";
})(RecordMaxLengthKind = exports.RecordMaxLengthKind || (exports.RecordMaxLengthKind = {}));
/** @perf use numbers here in production & const enum */
var ErrorKeyKind;
(function (ErrorKeyKind) {
// === special ===
/** api error, unused */
ErrorKeyKind["Api"] = "API";
/** nothing in the input */
ErrorKeyKind["EmptyInput"] = "EMPTY";
/** nothing to create */
ErrorKeyKind["NoRecords"] = "NO_RECORDS_TO_CREATE";
/** we have records, but none are valid */
ErrorKeyKind["NoValidRecords"] = "NO_VALID_RECORDS_TO_CREATE";
/** not standard */
ErrorKeyKind["BadDirective"] = "BAD_DIRECTIVE";
/** exists either in already created records or twice here */
ErrorKeyKind["Duplicated"] = "DUPLICATED";
/** unknown */
ErrorKeyKind["Unknown"] = "UNKNOWN";
/** fallback case */
ErrorKeyKind["Missing"] = "";
// === ttl ===
/** Invalid ttl format */
ErrorKeyKind["TtlInvalidFormat"] = "TTL_INVALID_FORMAT";
/** Value too large */
ErrorKeyKind["TtlOverflow"] = "TTL_OVERFLOW";
/** Invalid format & missing default value as a number */
ErrorKeyKind["TtlMissingDefault"] = "TTL_INVALID_FORMAT_MISSING_DEFAULT";
// === args ===
/** wrong number of args for this instruction */
ErrorKeyKind["WrongLength"] = "WRONG_LENGTH";
/** format of an instruction is wrong */
ErrorKeyKind["WrongNameArgsLength"] = "EXTRA_NAME_TTL_ARGS";
})(ErrorKeyKind = exports.ErrorKeyKind || (exports.ErrorKeyKind = {}));
exports.ERROR_KEYS = [
ErrorKeyKind.Api,
ErrorKeyKind.EmptyInput,
ErrorKeyKind.NoRecords,
ErrorKeyKind.NoValidRecords,
ErrorKeyKind.BadDirective,
ErrorKeyKind.TtlInvalidFormat,
ErrorKeyKind.TtlOverflow,
ErrorKeyKind.TtlMissingDefault,
ErrorKeyKind.WrongLength,
ErrorKeyKind.WrongNameArgsLength,
ErrorKeyKind.Duplicated,
ErrorKeyKind.Unknown,
];
/** @idea move `warnings` to `errors` and make => `problems` + `severity` */
var WarningKeyKind;
(function (WarningKeyKind) {
WarningKeyKind["NsIgnored"] = "SOA_IGNORED";
WarningKeyKind["SoaIgnored"] = "NS_IGNORED";
})(WarningKeyKind = exports.WarningKeyKind || (exports.WarningKeyKind = {}));
//# sourceMappingURL=constants_domain_specific.js.map