UNPKG

1.93 kBJavaScriptView Raw
1'use strict';
2
3var _stringify = require('babel-runtime/core-js/json/stringify');
4
5var _stringify2 = _interopRequireDefault(_stringify);
6
7function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
9var mergeOptions = require('merge-options');
10var init = require('./init');
11var debug = require('./debug');
12
13var defaultOptions = {
14 update: false,
15 global: false,
16 cwd: process.cwd(),
17 nodeModulesPath: false,
18 skipUnused: false,
19
20 ignoreDev: false,
21 forceColor: false,
22 saveExact: false,
23 debug: false,
24 emoji: true,
25 spinner: false,
26 installer: 'npm',
27
28 globalPackages: {},
29 cwdPackageJson: { devDependencies: {}, dependencies: {} },
30
31 packages: false,
32 unusedDependencies: false,
33 missingFromPackageJson: {}
34};
35
36function state(userOptions) {
37 var currentStateObject = mergeOptions(defaultOptions, {});
38
39 function get(key) {
40 if (!currentStateObject.hasOwnProperty(key)) {
41 throw new Error('Can\'t get unknown option "' + key + '".');
42 }
43 return currentStateObject[key];
44 }
45
46 function set(key, value) {
47 if (get('debug')) {
48 debug('set key', key, 'to value', value);
49 }
50
51 if (currentStateObject.hasOwnProperty(key)) {
52 currentStateObject[key] = value;
53 } else {
54 throw new Error('unknown option "' + key + '" setting to "' + (0, _stringify2.default)(value, false, 4) + '".');
55 }
56 }
57
58 function inspectIfDebugMode() {
59 if (get('debug')) {
60 inspect();
61 }
62 }
63
64 function inspect() {
65 debug('current state', all());
66 }
67
68 function all() {
69 return currentStateObject;
70 }
71
72 var currentState = {
73 get: get,
74 set: set,
75 all: all,
76 inspectIfDebugMode: inspectIfDebugMode
77 };
78
79 return init(currentState, userOptions);
80}
81module.exports = state;
\No newline at end of file