// @ts-check /// // 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.'), ] }