UNPKG

2.39 kBJavaScriptView Raw
1'use strict';
2
3var utils = require('lazy-cache')(require);
4var fn = require;
5
6/**
7 * Lazily required module dependencies
8 */
9
10require = utils;
11require('arr-flatten', 'flatten');
12require('arr-union', 'union');
13require('async-each-series', 'eachSeries');
14require('clone-deep', 'clone');
15require('define-property', 'define');
16require('extend-shallow', 'extend');
17require('get-value', 'get');
18require('has-value', 'has');
19require('inquirer2', 'inquirer');
20require('is-answer');
21require('isobject', 'isObject');
22require('mixin-deep', 'merge');
23require('omit-empty');
24require('project-name', 'project');
25require('set-value', 'set');
26require('to-choices');
27require = fn;
28
29utils.decorate = function(opts) {
30 utils.define(opts, 'set', function(prop, val) {
31 utils.set(this, prop, val);
32 return this;
33 }.bind(opts));
34
35 utils.define(opts, 'get', function(prop) {
36 return utils.get(this, prop);
37 }.bind(opts));
38
39 utils.define(opts, 'enabled', function(prop) {
40 return this.get(prop) === true;
41 }.bind(opts));
42
43 utils.define(opts, 'disabled', function(prop) {
44 return this.get(prop) === false;
45 }.bind(opts));
46};
47
48utils.isEmpty = function(answer) {
49 return !utils.isAnswer(answer);
50};
51
52utils.matchesKey = function(prop, key) {
53 if (typeof key !== 'string' || typeof prop !== 'string') {
54 return false;
55 }
56 if (prop === key) {
57 return true;
58 }
59 var len = prop.length;
60 var ch = key.charAt(len);
61 return key.indexOf(prop) === 0 && ch === '.';
62};
63
64/**
65 * Cast val to an array
66 */
67
68utils.arrayify = function(val) {
69 if (!val) return [];
70 return Array.isArray(val) ? val : [val];
71};
72
73/**
74 * Returns true if a value is an object and appears to be a
75 * question object.
76 */
77
78utils.isQuestion = function(val) {
79 return utils.isObject(val) && (val.isQuestion || !utils.isOptions(val));
80};
81
82/**
83 * Returns true if a value is an object and appears to be an
84 * options object.
85 */
86
87utils.isOptions = function(val) {
88 if (!utils.isObject(val)) {
89 return false;
90 }
91 if (val.hasOwnProperty('locale')) {
92 return true;
93 }
94 if (val.hasOwnProperty('force')) {
95 return true;
96 }
97 if (val.hasOwnProperty('type')) {
98 return false;
99 }
100 if (val.hasOwnProperty('message')) {
101 return false;
102 }
103 if (val.hasOwnProperty('choices')) {
104 return false;
105 }
106 if (val.hasOwnProperty('name')) {
107 return false;
108 }
109};
110
111/**
112 * Expose `utils`
113 */
114
115module.exports = utils;