extract generic helpers to own file
2 files changed, 82 insertions(+), 75 deletions(-)
changed files
M dnsconfig.js → dnsconfig.js
@@ -1,51 +1,10 @@ // @ts-check /// <reference path="types-dnscontrol.d.ts" /> -// Helpers - -/** - * @param {object} record - * @param {string[]} [record.alpn] - * @param {string[]} [record.ipv4hint] - * @param {string[]} [record.ipv6hint] - */ -function https(record) { - return Object.keys(record) - .map(function (key) { - return [key, record[key].join(',')].join('=') - }) - .join(' ') -} +// Use of `require` confuses TypeScript, use `require_glob` instead -/** - * @param {string} target - */ -function ensureAbsolute(target) { - return target.endsWith('.') ? target : target + '.' -} - -/** - * @param {string} target - * @param {string} prefix - */ -function prefix(target, prefix) { - return target === '@' - ? prefix - : prefix + '.' + target - -} - -/** - * @param {string} name - * @param {string} acmeTarget - */ -function acmeDelegate(name, acmeTarget) { - return CNAME( - name === '@' ? '_acme-challenge' : '_acme-challenge.' + name, - ensureAbsolute(acmeTarget), - TTL('15m'), - ) -} +/// <reference path="helpers.js" /> +require_glob("./helpers.js") /** * @param {string} name@@ -75,37 +34,6 @@ ) } return records -} - -/** - * @param {string} domain - * @param {string} verification - * @param {string[]} [extras] - */ -function iCloudMail(domain, verification, extras) { - if (extras == null) { - extras = [] - } - return [ - MX('@', 10, 'mx01.mail.icloud.com.'), - MX('@', 10, 'mx02.mail.icloud.com.'), - TXT('@', 'apple-domain=' + verification), - SPF_BUILDER({ - parts: ['v=spf1'].concat(extras).concat('include:icloud.com', '-all'), - }), - CNAME('sig1._domainkey', 'sig1.dkim.' + domain + '.at.icloudmailadmin.com.'), - ] -} - -/** - * @param {string[]} sources - * @param {string} target - * @param {RecordModifier[]} [recordModifiers] - */ -function bulkCNAME(sources, target, recordModifiers) { - return sources.map(function (source) { - return CNAME.bind(CNAME, source, target).apply(CNAME, recordModifiers) - }) } var nameservers = [
A helpers.js
@@ -0,0 +1,79 @@ +// @ts-check +/// <reference path="types-dnscontrol.d.ts" /> + +// Helpers + +/** + * @param {object} record + * @param {string[]} [record.alpn] + * @param {string[]} [record.ipv4hint] + * @param {string[]} [record.ipv6hint] + */ +function https(record) { + return Object.keys(record) + .map(function (key) { + return [key, record[key].join(',')].join('=') + }) + .join(' ') +} + +/** + * @param {string} target + */ +function ensureAbsolute(target) { + return target.endsWith('.') ? target : target + '.' +} + +/** + * @param {string} target + * @param {string} prefix + */ +function prefix(target, prefix) { + return target === '@' + ? prefix + : prefix + '.' + target + +} + +/** + * @param {string} name + * @param {string} acmeTarget + */ +function acmeDelegate(name, acmeTarget) { + return CNAME( + name === '@' ? '_acme-challenge' : '_acme-challenge.' + name, + ensureAbsolute(acmeTarget), + TTL('15m'), + ) +} + +/** + * @param {string[]} sources + * @param {string} target + * @param {RecordModifier[]} [recordModifiers] + */ +function bulkCNAME(sources, target, recordModifiers) { + return sources.map(function (source) { + return CNAME.bind(CNAME, source, target).apply(CNAME, recordModifiers) + }) +} + +/** + * @param {string} domain + * @param {string} verification + * @param {string[]} [extras] + */ +function iCloudMail(domain, verification, extras) { + if (extras == null) { + extras = [] + } + return [ + MX('@', 10, 'mx01.mail.icloud.com.'), + MX('@', 10, 'mx02.mail.icloud.com.'), + TXT('@', 'apple-domain=' + verification), + SPF_BUILDER({ + parts: ['v=spf1'].concat(extras).concat('include:icloud.com', '-all'), + }), + CNAME('sig1._domainkey', 'sig1.dkim.' + domain + '.at.icloudmailadmin.com.'), + ] +}