UNPKG

3.2 kBJavaScriptView Raw
1'use strict';
2
3var uniq = require('lodash.uniq');
4var savedActionDefinitions = require('../action-definitions.json')
5
6var helpers = module.exports = {
7 getDomainFromActionName: function(actionDefs, name) {
8 name = name.split('*').slice(1).join('*');
9 return actionDefs.domains.reduce(function(match, domain) {
10 if (name.indexOf(domain) === 0) {
11 return domain;
12 }
13 return match;
14 });
15 },
16 createActionOptions: function(self, preconfiguredFunctions, actionDefs) {
17 preconfiguredFunctions = preconfiguredFunctions || [];
18 var domains = self.config.get('domains') || [];
19 helpers.convertToAsterisks(domains);
20 var actionNames = self.config.get('actionNames') || [];
21 helpers.convertToAsterisks(actionNames);
22 var allActionNames = uniq(actionNames.concat(
23 preconfiguredFunctions.map(function(def) {
24 return def.actionId;
25 })));
26 var preconfiguredDomains = uniq(
27 domains.concat(
28 preconfiguredFunctions.map(function(def) {
29 return helpers.getDomainFromActionName(
30 actionDefs || savedActionDefinitions,
31 def.actionId
32 );
33 })
34 )
35 );
36 return {
37 'skip-prompts': self.options['skip-prompts'],
38 internal: self.options.internal,
39 testFramework: self._testFramework,
40 overwriteAll: true,
41 actionNames: allActionNames,
42 preconfigured: preconfiguredFunctions,
43 domains: preconfiguredDomains
44 }
45 },
46 replacePeriod: function(value) {
47 return value.replace(/\./g, '*');
48 },
49 convertToAsterisks: function (values) {
50 if (Array.isArray(values) && values.length > 0) {
51 values.forEach(function(name, i, actionNames) {
52 return actionNames[i] = helpers.replacePeriod(name);
53 });
54 return values;
55 }
56
57 if (typeof(values) === 'object') {
58 Object.keys(values).forEach(function(key){
59 var correctedKey = helpers.replacePeriod(key);
60 if(key === correctedKey) {
61 return;
62 }
63 Object.defineProperty(values, correctedKey, Object.getOwnPropertyDescriptor(values, key));
64 delete values[key];
65 values[correctedKey].forEach(function(value, i) {
66 return values[correctedKey][i] = helpers.replacePeriod(value);
67 })
68 });
69 return values;
70 }
71
72 return values;
73 },
74 replaceAsterisk: function(value) {
75 return value.replace(/\*/g, '.');
76 },
77 convertToPeriods: function (values) {
78 if (Array.isArray(values) && values.length > 0) {
79 values.forEach(function(name, i, actionNames) {
80 return actionNames[i] = helpers.replaceAsterisk(name);
81 });
82 return values;
83 }
84
85 if (typeof(values) === 'object') {
86 Object.keys(values).forEach(function(key){
87 var correctedKey = helpers.replaceAsterisk(key);
88 if(key === correctedKey) {
89 return;
90 }
91 Object.defineProperty(values, correctedKey, Object.getOwnPropertyDescriptor(values, key));
92 delete values[key];
93 values[correctedKey].forEach(function(value, i) {
94 return values[correctedKey][i] = helpers.replaceAsterisk(value);
95 })
96 });
97 return values;
98 }
99 return values;
100 }
101};