From 7384743f6d3d71737b4fe106dc59ca4207d2bcca Mon Sep 17 00:00:00 2001 From: Tom Limoncelli Date: Sat, 22 Feb 2020 12:07:10 -0500 Subject: [PATCH] pretty helpers.js (#649) --- pkg/js/helpers.js | 71 +++++++++++------ pkg/js/static.go | 191 +++++++++++++++++++++++----------------------- 2 files changed, 144 insertions(+), 118 deletions(-) diff --git a/pkg/js/helpers.js b/pkg/js/helpers.js index a5c6f1395..1e2920394 100644 --- a/pkg/js/helpers.js +++ b/pkg/js/helpers.js @@ -167,25 +167,29 @@ var ALIAS = recordBuilder('ALIAS'); // R53_ALIAS(name, target, type, recordModifiers...) var R53_ALIAS = recordBuilder('R53_ALIAS', { - args: [['name', _.isString], ['type', validateR53AliasType], ['target', _.isString]], - transform: function (record, args, modifiers) { + args: [ + ['name', _.isString], + ['type', validateR53AliasType], + ['target', _.isString], + ], + transform: function(record, args, modifiers) { record.name = args.name; record.target = args.target; if (_.isObject(record.r53_alias)) { record.r53_alias['type'] = args.type; } else { - record.r53_alias = { 'type': args.type }; + record.r53_alias = { type: args.type }; } }, }); // R53_ZONE(zone_id) function R53_ZONE(zone_id) { - return function (r) { + return function(r) { if (_.isObject(r.r53_alias)) { r.r53_alias['zone_id'] = zone_id; } else { - r.r53_alias = { 'zone_id': zone_id } + r.r53_alias = { zone_id: zone_id }; } }; } @@ -194,13 +198,30 @@ function validateR53AliasType(value) { if (!_.isString(value)) { return false; } - return ['A', 'AAAA', 'CNAME', 'CAA', 'MX', 'TXT', 'PTR', 'SPF', 'SRV', 'NAPTR'].indexOf(value) != -1; + return ( + [ + 'A', + 'AAAA', + 'CNAME', + 'CAA', + 'MX', + 'TXT', + 'PTR', + 'SPF', + 'SRV', + 'NAPTR', + ].indexOf(value) != -1 + ); } // CAA(name,tag,value, recordModifiers...) var CAA = recordBuilder('CAA', { // TODO(tlim): It should be an error if value is not 0 or 128. - args: [['name', _.isString], ['tag', _.isString], ['value', _.isString]], + args: [ + ['name', _.isString], + ['tag', _.isString], + ['value', _.isString], + ], transform: function(record, args, modifiers) { record.name = args.name; record.caatag = args.tag; @@ -297,7 +318,10 @@ function isStringOrArray(x) { // TXT(name,target, recordModifiers...) var TXT = recordBuilder('TXT', { - args: [['name', _.isString], ['target', isStringOrArray]], + args: [ + ['name', _.isString], + ['target', isStringOrArray], + ], transform: function(record, args, modifiers) { record.name = args.name; // Store the strings twice: @@ -337,8 +361,8 @@ var NS = recordBuilder('NS'); // NAMESERVER(name,target) function NAMESERVER(name) { - if (arguments.length != 1){ - throw("NAMESERVER only accepts one argument for name.") + if (arguments.length != 1) { + throw 'NAMESERVER only accepts one argument for name.'; } return function(d) { d.nameservers.push({ name: name }); @@ -350,7 +374,7 @@ function NAMESERVER_TTL(v) { if (_.isString(v)) { v = stringToDuration(v); } - return {ns_ttl: v.toString()}; + return { ns_ttl: v.toString() }; } function format_tt(transform_table) { @@ -387,7 +411,7 @@ function format_tt(transform_table) { // IGNORE(name) function IGNORE(name) { - return function (d) { + return function(d) { d.ignored_labels.push(name); }; } @@ -594,7 +618,7 @@ function num2dot(num) { var d = num % 256; for (var i = 3; i > 0; i--) { num = Math.floor(num / 256); - d = num % 256 + '.' + d; + d = (num % 256) + '.' + d; } return d; } @@ -710,12 +734,15 @@ function CAA_BUILDER(value) { value.label = '@'; } - if (value.issue && value.issue == 'none') - value.issue = [ ";" ]; - if (value.issuewild && value.issuewild == 'none') - value.issuewild = [ ";" ]; + if (value.issue && value.issue == 'none') value.issue = [';']; + if (value.issuewild && value.issuewild == 'none') value.issuewild = [';']; - if ( (!value.issue && !value.issuewild) || ((value.issue && value.issue.length == 0) && (value.issuewild && value.issuewild.length == 0)) ) { + if ( + (!value.issue && !value.issuewild) || + (value.issue && + value.issue.length == 0 && + value.issuewild && value.issuewild.length == 0) + ) { throw 'CAA_BUILDER requires at least one entry at issue or issuewild'; } @@ -723,19 +750,19 @@ function CAA_BUILDER(value) { if (value.iodef) { if (value.iodef_critical) { - r.push(CAA(value.label, "iodef", value.iodef, CAA_CRITICAL)); + r.push(CAA(value.label, 'iodef', value.iodef, CAA_CRITICAL)); } else { - r.push(CAA(value.label, "iodef", value.iodef)); + r.push(CAA(value.label, 'iodef', value.iodef)); } } if (value.issue) for (var i = 0, len = value.issue.length; i < len; i++) - r.push(CAA(value.label, "issue", value.issue[i])); + r.push(CAA(value.label, 'issue', value.issue[i])); if (value.issuewild) for (var i = 0, len = value.issuewild.length; i < len; i++) - r.push(CAA(value.label, "issuewild", value.issuewild[i])); + r.push(CAA(value.label, 'issuewild', value.issuewild[i])); return r; } diff --git a/pkg/js/static.go b/pkg/js/static.go index 2e1fd9b39..a7adadd89 100644 --- a/pkg/js/static.go +++ b/pkg/js/static.go @@ -212,104 +212,103 @@ var _escData = map[string]*_escFile{ "/helpers.js": { name: "helpers.js", local: "pkg/js/helpers.js", - size: 21856, + size: 22107, modtime: 0, compressed: ` -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 -AA== +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 `, }, }