├── .eslintrc.js
├── .gitignore
├── README.md
├── index.js
├── package-lock.json
├── package.json
└── util.js
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: [
4 | 'standard'
5 | ],
6 | overrides: [{ files: ['*.js'] }],
7 | rules: {
8 | 'no-restricted-globals': ['error', 'name'],
9 | 'prefer-const': 'error',
10 | 'no-var': 'error',
11 | 'prefer-template': 'error',
12 | 'standard/array-bracket-even-spacing': ['error', 'never']
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .idea
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # git-amend [](https://www.npmjs.com/package/git-amend) [](https://standardjs.com)
2 | Easily edit git commit with CLI prompt
3 |
4 |
5 |
6 |
7 |
8 | ## Install
9 |
10 | Install with [npm](https://www.npmjs.com/):
11 | ```sh
12 | $ npm i git-amend -g
13 | ```
14 |
15 | ## Usage
16 | ```sh
17 | $ git-amend
18 | ```
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | const moment = require('moment')
3 | const { MultiSelect, Select, Snippet, Form } = require('enquirer')
4 | const { exec, execStdin, makeEcho, colors: c } = require('./util')
5 | const format = 'ddd MMM DD HH:mm:ss YYYY Z'
6 | const formatDispay = 'YYYY-MM-DD HH:mm'
7 | let [,, limit] = process.argv
8 | limit = +limit || 10
9 | // %H: commit hash
10 | // %h: abbreviated commit hash
11 | // %an: author name
12 | // %ae: author email
13 | // %ad: author date
14 | // %cn: committer name
15 | // %ce: committer email
16 | // %cd: committer date
17 | // %s: subject
18 | // %n: newline
19 |
20 | const setEnv = function ({ name, email, date }) {
21 | return Object.assign(process.env, {
22 | 'GIT_AUTHOR_NAME': name,
23 | 'GIT_AUTHOR_EMAIL': email,
24 | 'GIT_AUTHOR_DATE': date,
25 | 'GIT_COMMITTER_NAME': name,
26 | 'GIT_COMMITTER_EMAIL': email,
27 | 'GIT_COMMITTER_DATE': date
28 | })
29 | }
30 | const itemDisplay = function ({ hs, date, name, subject, sequence }) {
31 | return `${c.yellow`(${hs})`} ${c.bold(date.format(formatDispay))} ${c.green.bold(name)} ${subject}${c.cyan(sequence)}`
32 | }
33 |
34 | ;(async function () {
35 | if (exec`git status -s -uno`.length) {
36 | c.red.bold.println`You have uncommitted changes`
37 | return
38 | }
39 | try { exec`git rebase --abort` } catch (e) {}
40 |
41 | const stdout = exec`git log --format=${'%H%x00%h%x00%p%x00%an%x00%ae%x00%ad%x00%cn%x00%ce%x00%cd%x00%s%x00%b%x00%n'} -z -${limit + 1}`
42 | const ref = {}
43 | const commits = stdout.split('\x00\n\x00').map((log, idx) => {
44 | const [hash, hs, p, name, email, date, cname, cemail, cdate, subject, body] = log.trim().split('\x00')
45 | const parents = p ? p.split(' ') : []
46 | const isMerge = parents.length > 1
47 | return hash ? {
48 | hash,
49 | hs,
50 | parents,
51 | isMerge,
52 | subject,
53 | body,
54 | name,
55 | email,
56 | date: moment(date, format),
57 | cname,
58 | cemail,
59 | cdate: moment(cdate, format),
60 | idx,
61 | selected: false
62 | } : undefined
63 | }).filter(x => x)
64 | commits.forEach(x => { ref[x.hash] = x })
65 |
66 | const selectedCommits = (await new MultiSelect({
67 | name: 'value',
68 | message: 'Select commits to change',
69 | footer: 'Please select at least one',
70 | limit,
71 | validate (v) { return !!v.length },
72 | result (names) {
73 | return Object.values(this.map(names))
74 | },
75 | choices: commits.slice(0, -1).map(({ hash, hs, name, date, subject }) => ({
76 | name: `${c.yellow`(${hs})`} ${c.bold(date.format(formatDispay))}`,
77 | hint: `${c.green.bold(name)} ${subject}`,
78 | value: hash
79 | }))
80 | }).run()).map(x => ref[x])
81 |
82 | commits.reverse()
83 | selectedCommits.reverse()
84 | selectedCommits.forEach(x => { x.selected = true })
85 | const selectedCommitIdx = commits.findIndex(x => x.selected)
86 | if (selectedCommitIdx < 1) throw Error(`Can't rebase`)
87 | const rebaseIndex = selectedCommitIdx - (commits[selectedCommitIdx].isMerge ? 0 : 1)
88 | const rebaseTarget = commits[rebaseIndex]
89 | const rebaseCommits = commits.slice(rebaseIndex + 1).filter(x => !x.isMerge)
90 |
91 | const rebaseString = rebaseCommits.map(({ hs }) => `edit ${hs}`).join('\n')
92 | process.env['GIT_SEQUENCE_EDITOR'] = `${makeEcho(rebaseString)}>`
93 |
94 | const mode = {}
95 | const modeName = await new Select({
96 | name: 'mode',
97 | message: 'Select mode',
98 | choices: [
99 | { name: 'info', message: 'Edit info', hint: `- author,email,message` },
100 | { name: 'set', message: 'Set date', hint: `- change date individually` },
101 | { name: 'adjust', message: 'Adjust date', hint: `- add duration to all selected` },
102 | { name: 'stretch', message: 'Stretch Time', hint: '- change date to fit range' }
103 | ]
104 | }).run()
105 | mode[modeName] = true
106 |
107 | async function editInfo ({ subject, hs, name, email, date, cname, cemail, cdate, body }, sequence) {
108 | const message = itemDisplay({ hs, date, name, subject, sequence })
109 | body = body.replace(/\n/gm, '\\n')
110 | const to = await new Form({
111 | name: 'commit',
112 | message,
113 | choices: [
114 | { name: 'name', message: 'Name', initial: name },
115 | { name: 'email', message: 'Email', initial: email },
116 | { name: 'subject', message: 'Subject', initial: subject },
117 | { name: 'body', message: 'Body', initial: body }
118 | ]
119 | }).run()
120 | const diff = { name: name !== to.name, email: email !== to.email, message: subject !== to.subject || body !== to.body }
121 | to.body = to.body.replace(/\\n/g, '\n')
122 | return () => {
123 | setEnv(Object.assign(to, { date }))
124 | if (diff.name || diff.email) exec`git commit --amend --no-edit --author="${to.name} <${to.email}>"`
125 | if (diff.message) {
126 | execStdin(`git commit --amend --no-verify --no-edit --file=-`, `${to.subject}${to.body && (`\n\n${to.body}`)}`)
127 | }
128 | exec`git rebase --skip`
129 | }
130 | }
131 | async function askTime (message, date) {
132 | const fn = c.bold`moment` + (date ? '' : `.${c.yellow`duration`}`)
133 | const days = date ? 'date' : 'days'
134 | const template = `${fn}({
135 | seconds: ${c.yellow`\${seconds}`},
136 | minutes: ${c.yellow`\${minutes}`},
137 | hours: ${c.yellow`\${hours}`},
138 | ${days}: ${c.yellow`\${${days}}`},
139 | months: ${c.yellow`\${months}`},
140 | years: ${c.yellow`\${years}`}
141 | })`
142 | const values = date ? date.toObject() : {
143 | seconds: 0,
144 | minutes: 0,
145 | hours: 0,
146 | days: 0,
147 | months: 0,
148 | years: 0
149 | }
150 | Object.keys(values).forEach(key => { values[key] += '' })
151 | const validate = v => !isNaN(v)
152 | const fields = Object.keys(values).map(name => ({ name, validate }))
153 |
154 | const { values: ret } = await new Snippet({
155 | name: 'Time unit',
156 | message,
157 | fields,
158 | format () { return '' },
159 | values,
160 | template
161 | }).run()
162 | return ret
163 | }
164 | let timeUnit
165 | async function changeTime ({ subject, hs, name, email, date, cname, cemail }, sequence) {
166 | if (mode.set) timeUnit = await askTime(itemDisplay({ hs, date, name, subject, sequence }), date)
167 | else if (!timeUnit) timeUnit = await askTime('Duration to add')
168 | const m = mode.set ? moment(timeUnit) : date.add(timeUnit)
169 | const newDate = m.format(format)
170 | return () => {
171 | setEnv({ name, email, date: newDate })
172 | exec`git commit --amend --no-verify --no-edit --date="${newDate}" --author="${name} <${email}>"`
173 | exec`git rebase --skip`
174 | }
175 | }
176 |
177 | const stretchTime = (() => {
178 | const first = selectedCommits[0].date
179 | const last = selectedCommits[selectedCommits.length - 1].date
180 | let adjust
181 | return async (commit) => {
182 | if (!adjust) {
183 | const from = moment(await askTime('Stretch from', first))
184 | const to = moment(await askTime('Stretch to', last))
185 | const diff = (to - from)
186 | adjust = date => {
187 | const ratio = ((date - first) / (last - first)) || 0
188 | return from + (diff * ratio)
189 | }
190 | }
191 | return () => {
192 | const { name, email } = commit
193 | const date = moment(adjust(commit.date)).format(format)
194 | setEnv({ name, email, date })
195 | exec`git commit --amend --no-verify --no-edit --date="${date}" --author="${name} <${email}>"`
196 | exec`git rebase --skip`
197 | }
198 | }
199 | })()
200 |
201 | const q = [() => exec`git rebase -i ${rebaseTarget.hash}`]
202 | const { length: selectedCount } = rebaseCommits.filter(x => x.selected)
203 | for (let i = 0, count = 0; i < rebaseCommits.length; i++) {
204 | const commit = rebaseCommits[i]
205 | if (commit.selected) {
206 | const sequence = `(${++count}/${selectedCount})`
207 | q.push(() => c.println`running.. ${c.cyan(sequence)}`)
208 | if (mode.stretch) q.push(await stretchTime(commit))
209 | else if (mode.info) q.push(await editInfo(commit, sequence))
210 | else q.push(await (changeTime)(commit, sequence))
211 | } else {
212 | q.push(() => {
213 | setEnv(commit)
214 | exec`git commit --amend --no-edit`
215 | exec`git rebase --skip`
216 | })
217 | }
218 | }
219 | try {
220 | q.forEach(x => x())
221 | } catch (e) {
222 | exec`git rebase --abort`
223 | throw e
224 | }
225 | c.yellow.bold.println`Done!`
226 | })().catch(e => {
227 | c.red.bold.println(e.toString())
228 | })
229 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "git-amend",
3 | "version": "1.1.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "acorn": {
8 | "version": "6.4.2",
9 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
10 | "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
11 | "dev": true
12 | },
13 | "acorn-jsx": {
14 | "version": "5.3.1",
15 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
16 | "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
17 | "dev": true
18 | },
19 | "ajv": {
20 | "version": "6.12.6",
21 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
22 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
23 | "dev": true,
24 | "requires": {
25 | "fast-deep-equal": "^3.1.1",
26 | "fast-json-stable-stringify": "^2.0.0",
27 | "json-schema-traverse": "^0.4.1",
28 | "uri-js": "^4.2.2"
29 | }
30 | },
31 | "ajv-keywords": {
32 | "version": "3.5.2",
33 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
34 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
35 | "dev": true
36 | },
37 | "ansi-colors": {
38 | "version": "3.2.3",
39 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
40 | "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw=="
41 | },
42 | "ansi-escapes": {
43 | "version": "3.2.0",
44 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
45 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
46 | "dev": true
47 | },
48 | "ansi-regex": {
49 | "version": "2.1.1",
50 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
51 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
52 | "dev": true
53 | },
54 | "ansi-styles": {
55 | "version": "2.2.1",
56 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
57 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
58 | "dev": true
59 | },
60 | "argparse": {
61 | "version": "1.0.10",
62 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
63 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
64 | "dev": true,
65 | "requires": {
66 | "sprintf-js": "~1.0.2"
67 | }
68 | },
69 | "array-includes": {
70 | "version": "3.1.3",
71 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
72 | "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
73 | "dev": true,
74 | "requires": {
75 | "call-bind": "^1.0.2",
76 | "define-properties": "^1.1.3",
77 | "es-abstract": "^1.18.0-next.2",
78 | "get-intrinsic": "^1.1.1",
79 | "is-string": "^1.0.5"
80 | }
81 | },
82 | "babel-code-frame": {
83 | "version": "6.26.0",
84 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
85 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
86 | "dev": true,
87 | "requires": {
88 | "chalk": "^1.1.3",
89 | "esutils": "^2.0.2",
90 | "js-tokens": "^3.0.2"
91 | },
92 | "dependencies": {
93 | "chalk": {
94 | "version": "1.1.3",
95 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
96 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
97 | "dev": true,
98 | "requires": {
99 | "ansi-styles": "^2.2.1",
100 | "escape-string-regexp": "^1.0.2",
101 | "has-ansi": "^2.0.0",
102 | "strip-ansi": "^3.0.0",
103 | "supports-color": "^2.0.0"
104 | }
105 | },
106 | "strip-ansi": {
107 | "version": "3.0.1",
108 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
109 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
110 | "dev": true,
111 | "requires": {
112 | "ansi-regex": "^2.0.0"
113 | }
114 | }
115 | }
116 | },
117 | "balanced-match": {
118 | "version": "1.0.0",
119 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
120 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
121 | "dev": true
122 | },
123 | "brace-expansion": {
124 | "version": "1.1.11",
125 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
126 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
127 | "dev": true,
128 | "requires": {
129 | "balanced-match": "^1.0.0",
130 | "concat-map": "0.0.1"
131 | }
132 | },
133 | "call-bind": {
134 | "version": "1.0.2",
135 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
136 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
137 | "dev": true,
138 | "requires": {
139 | "function-bind": "^1.1.1",
140 | "get-intrinsic": "^1.0.2"
141 | }
142 | },
143 | "caller-path": {
144 | "version": "0.1.0",
145 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
146 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
147 | "dev": true,
148 | "requires": {
149 | "callsites": "^0.2.0"
150 | }
151 | },
152 | "callsites": {
153 | "version": "0.2.0",
154 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
155 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
156 | "dev": true
157 | },
158 | "chalk": {
159 | "version": "2.4.2",
160 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
161 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
162 | "dev": true,
163 | "requires": {
164 | "ansi-styles": "^3.2.1",
165 | "escape-string-regexp": "^1.0.5",
166 | "supports-color": "^5.3.0"
167 | },
168 | "dependencies": {
169 | "ansi-styles": {
170 | "version": "3.2.1",
171 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
172 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
173 | "dev": true,
174 | "requires": {
175 | "color-convert": "^1.9.0"
176 | }
177 | },
178 | "supports-color": {
179 | "version": "5.5.0",
180 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
181 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
182 | "dev": true,
183 | "requires": {
184 | "has-flag": "^3.0.0"
185 | }
186 | }
187 | }
188 | },
189 | "chardet": {
190 | "version": "0.4.2",
191 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
192 | "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
193 | "dev": true
194 | },
195 | "circular-json": {
196 | "version": "0.3.3",
197 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
198 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
199 | "dev": true
200 | },
201 | "cli-cursor": {
202 | "version": "2.1.0",
203 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
204 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
205 | "dev": true,
206 | "requires": {
207 | "restore-cursor": "^2.0.0"
208 | }
209 | },
210 | "cli-width": {
211 | "version": "2.2.1",
212 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
213 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
214 | "dev": true
215 | },
216 | "color-convert": {
217 | "version": "1.9.3",
218 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
219 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
220 | "dev": true,
221 | "requires": {
222 | "color-name": "1.1.3"
223 | }
224 | },
225 | "color-name": {
226 | "version": "1.1.3",
227 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
228 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
229 | "dev": true
230 | },
231 | "concat-map": {
232 | "version": "0.0.1",
233 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
234 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
235 | "dev": true
236 | },
237 | "contains-path": {
238 | "version": "0.1.0",
239 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
240 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
241 | "dev": true
242 | },
243 | "cross-spawn": {
244 | "version": "6.0.5",
245 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
246 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
247 | "dev": true,
248 | "requires": {
249 | "nice-try": "^1.0.4",
250 | "path-key": "^2.0.1",
251 | "semver": "^5.5.0",
252 | "shebang-command": "^1.2.0",
253 | "which": "^1.2.9"
254 | }
255 | },
256 | "debug": {
257 | "version": "3.2.7",
258 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
259 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
260 | "dev": true,
261 | "requires": {
262 | "ms": "^2.1.1"
263 | }
264 | },
265 | "debug-log": {
266 | "version": "1.0.1",
267 | "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
268 | "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
269 | "dev": true
270 | },
271 | "deep-is": {
272 | "version": "0.1.3",
273 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
274 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
275 | "dev": true
276 | },
277 | "define-properties": {
278 | "version": "1.1.3",
279 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
280 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
281 | "dev": true,
282 | "requires": {
283 | "object-keys": "^1.0.12"
284 | }
285 | },
286 | "deglob": {
287 | "version": "2.1.1",
288 | "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz",
289 | "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==",
290 | "dev": true,
291 | "requires": {
292 | "find-root": "^1.0.0",
293 | "glob": "^7.0.5",
294 | "ignore": "^3.0.9",
295 | "pkg-config": "^1.1.0",
296 | "run-parallel": "^1.1.2",
297 | "uniq": "^1.0.1"
298 | },
299 | "dependencies": {
300 | "ignore": {
301 | "version": "3.3.10",
302 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
303 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
304 | "dev": true
305 | }
306 | }
307 | },
308 | "doctrine": {
309 | "version": "2.1.0",
310 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
311 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
312 | "dev": true,
313 | "requires": {
314 | "esutils": "^2.0.2"
315 | }
316 | },
317 | "enquirer": {
318 | "version": "2.1.1",
319 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.1.1.tgz",
320 | "integrity": "sha512-Ky4Uo7q/dY9jSJIDkPf+y5nM+9F4ESINZaWJSSJbJqOVY15kVXIa/goQR6XmHNcS/MQ38wZT/N2+1pBwQeC2wQ==",
321 | "requires": {
322 | "ansi-colors": "^3.2.1"
323 | }
324 | },
325 | "error-ex": {
326 | "version": "1.3.2",
327 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
328 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
329 | "dev": true,
330 | "requires": {
331 | "is-arrayish": "^0.2.1"
332 | }
333 | },
334 | "es-abstract": {
335 | "version": "1.18.0",
336 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz",
337 | "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==",
338 | "dev": true,
339 | "requires": {
340 | "call-bind": "^1.0.2",
341 | "es-to-primitive": "^1.2.1",
342 | "function-bind": "^1.1.1",
343 | "get-intrinsic": "^1.1.1",
344 | "has": "^1.0.3",
345 | "has-symbols": "^1.0.2",
346 | "is-callable": "^1.2.3",
347 | "is-negative-zero": "^2.0.1",
348 | "is-regex": "^1.1.2",
349 | "is-string": "^1.0.5",
350 | "object-inspect": "^1.9.0",
351 | "object-keys": "^1.1.1",
352 | "object.assign": "^4.1.2",
353 | "string.prototype.trimend": "^1.0.4",
354 | "string.prototype.trimstart": "^1.0.4",
355 | "unbox-primitive": "^1.0.0"
356 | }
357 | },
358 | "es-to-primitive": {
359 | "version": "1.2.1",
360 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
361 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
362 | "dev": true,
363 | "requires": {
364 | "is-callable": "^1.1.4",
365 | "is-date-object": "^1.0.1",
366 | "is-symbol": "^1.0.2"
367 | }
368 | },
369 | "escape-string-regexp": {
370 | "version": "1.0.5",
371 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
372 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
373 | "dev": true
374 | },
375 | "eslint": {
376 | "version": "5.4.0",
377 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz",
378 | "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==",
379 | "dev": true,
380 | "requires": {
381 | "ajv": "^6.5.0",
382 | "babel-code-frame": "^6.26.0",
383 | "chalk": "^2.1.0",
384 | "cross-spawn": "^6.0.5",
385 | "debug": "^3.1.0",
386 | "doctrine": "^2.1.0",
387 | "eslint-scope": "^4.0.0",
388 | "eslint-utils": "^1.3.1",
389 | "eslint-visitor-keys": "^1.0.0",
390 | "espree": "^4.0.0",
391 | "esquery": "^1.0.1",
392 | "esutils": "^2.0.2",
393 | "file-entry-cache": "^2.0.0",
394 | "functional-red-black-tree": "^1.0.1",
395 | "glob": "^7.1.2",
396 | "globals": "^11.7.0",
397 | "ignore": "^4.0.2",
398 | "imurmurhash": "^0.1.4",
399 | "inquirer": "^5.2.0",
400 | "is-resolvable": "^1.1.0",
401 | "js-yaml": "^3.11.0",
402 | "json-stable-stringify-without-jsonify": "^1.0.1",
403 | "levn": "^0.3.0",
404 | "lodash": "^4.17.5",
405 | "minimatch": "^3.0.4",
406 | "mkdirp": "^0.5.1",
407 | "natural-compare": "^1.4.0",
408 | "optionator": "^0.8.2",
409 | "path-is-inside": "^1.0.2",
410 | "pluralize": "^7.0.0",
411 | "progress": "^2.0.0",
412 | "regexpp": "^2.0.0",
413 | "require-uncached": "^1.0.3",
414 | "semver": "^5.5.0",
415 | "strip-ansi": "^4.0.0",
416 | "strip-json-comments": "^2.0.1",
417 | "table": "^4.0.3",
418 | "text-table": "^0.2.0"
419 | }
420 | },
421 | "eslint-config-standard": {
422 | "version": "12.0.0",
423 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz",
424 | "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==",
425 | "dev": true
426 | },
427 | "eslint-config-standard-jsx": {
428 | "version": "6.0.2",
429 | "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz",
430 | "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==",
431 | "dev": true
432 | },
433 | "eslint-import-resolver-node": {
434 | "version": "0.3.4",
435 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz",
436 | "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==",
437 | "dev": true,
438 | "requires": {
439 | "debug": "^2.6.9",
440 | "resolve": "^1.13.1"
441 | },
442 | "dependencies": {
443 | "debug": {
444 | "version": "2.6.9",
445 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
446 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
447 | "dev": true,
448 | "requires": {
449 | "ms": "2.0.0"
450 | }
451 | },
452 | "ms": {
453 | "version": "2.0.0",
454 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
455 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
456 | "dev": true
457 | }
458 | }
459 | },
460 | "eslint-module-utils": {
461 | "version": "2.6.0",
462 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
463 | "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
464 | "dev": true,
465 | "requires": {
466 | "debug": "^2.6.9",
467 | "pkg-dir": "^2.0.0"
468 | },
469 | "dependencies": {
470 | "debug": {
471 | "version": "2.6.9",
472 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
473 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
474 | "dev": true,
475 | "requires": {
476 | "ms": "2.0.0"
477 | }
478 | },
479 | "ms": {
480 | "version": "2.0.0",
481 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
482 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
483 | "dev": true
484 | }
485 | }
486 | },
487 | "eslint-plugin-es": {
488 | "version": "1.4.1",
489 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz",
490 | "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==",
491 | "dev": true,
492 | "requires": {
493 | "eslint-utils": "^1.4.2",
494 | "regexpp": "^2.0.1"
495 | }
496 | },
497 | "eslint-plugin-import": {
498 | "version": "2.14.0",
499 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
500 | "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
501 | "dev": true,
502 | "requires": {
503 | "contains-path": "^0.1.0",
504 | "debug": "^2.6.8",
505 | "doctrine": "1.5.0",
506 | "eslint-import-resolver-node": "^0.3.1",
507 | "eslint-module-utils": "^2.2.0",
508 | "has": "^1.0.1",
509 | "lodash": "^4.17.4",
510 | "minimatch": "^3.0.3",
511 | "read-pkg-up": "^2.0.0",
512 | "resolve": "^1.6.0"
513 | },
514 | "dependencies": {
515 | "debug": {
516 | "version": "2.6.9",
517 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
518 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
519 | "dev": true,
520 | "requires": {
521 | "ms": "2.0.0"
522 | }
523 | },
524 | "doctrine": {
525 | "version": "1.5.0",
526 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
527 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
528 | "dev": true,
529 | "requires": {
530 | "esutils": "^2.0.2",
531 | "isarray": "^1.0.0"
532 | }
533 | },
534 | "ms": {
535 | "version": "2.0.0",
536 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
537 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
538 | "dev": true
539 | }
540 | }
541 | },
542 | "eslint-plugin-node": {
543 | "version": "7.0.1",
544 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz",
545 | "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==",
546 | "dev": true,
547 | "requires": {
548 | "eslint-plugin-es": "^1.3.1",
549 | "eslint-utils": "^1.3.1",
550 | "ignore": "^4.0.2",
551 | "minimatch": "^3.0.4",
552 | "resolve": "^1.8.1",
553 | "semver": "^5.5.0"
554 | }
555 | },
556 | "eslint-plugin-promise": {
557 | "version": "4.0.1",
558 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz",
559 | "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==",
560 | "dev": true
561 | },
562 | "eslint-plugin-react": {
563 | "version": "7.11.1",
564 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz",
565 | "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==",
566 | "dev": true,
567 | "requires": {
568 | "array-includes": "^3.0.3",
569 | "doctrine": "^2.1.0",
570 | "has": "^1.0.3",
571 | "jsx-ast-utils": "^2.0.1",
572 | "prop-types": "^15.6.2"
573 | }
574 | },
575 | "eslint-plugin-standard": {
576 | "version": "4.0.2",
577 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz",
578 | "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==",
579 | "dev": true
580 | },
581 | "eslint-scope": {
582 | "version": "4.0.3",
583 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
584 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
585 | "dev": true,
586 | "requires": {
587 | "esrecurse": "^4.1.0",
588 | "estraverse": "^4.1.1"
589 | }
590 | },
591 | "eslint-utils": {
592 | "version": "1.4.3",
593 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
594 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
595 | "dev": true,
596 | "requires": {
597 | "eslint-visitor-keys": "^1.1.0"
598 | }
599 | },
600 | "eslint-visitor-keys": {
601 | "version": "1.3.0",
602 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
603 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
604 | "dev": true
605 | },
606 | "espree": {
607 | "version": "4.1.0",
608 | "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz",
609 | "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==",
610 | "dev": true,
611 | "requires": {
612 | "acorn": "^6.0.2",
613 | "acorn-jsx": "^5.0.0",
614 | "eslint-visitor-keys": "^1.0.0"
615 | }
616 | },
617 | "esprima": {
618 | "version": "4.0.1",
619 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
620 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
621 | "dev": true
622 | },
623 | "esquery": {
624 | "version": "1.4.0",
625 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
626 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
627 | "dev": true,
628 | "requires": {
629 | "estraverse": "^5.1.0"
630 | },
631 | "dependencies": {
632 | "estraverse": {
633 | "version": "5.2.0",
634 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
635 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
636 | "dev": true
637 | }
638 | }
639 | },
640 | "esrecurse": {
641 | "version": "4.3.0",
642 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
643 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
644 | "dev": true,
645 | "requires": {
646 | "estraverse": "^5.2.0"
647 | },
648 | "dependencies": {
649 | "estraverse": {
650 | "version": "5.2.0",
651 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
652 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
653 | "dev": true
654 | }
655 | }
656 | },
657 | "estraverse": {
658 | "version": "4.3.0",
659 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
660 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
661 | "dev": true
662 | },
663 | "esutils": {
664 | "version": "2.0.3",
665 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
666 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
667 | "dev": true
668 | },
669 | "external-editor": {
670 | "version": "2.2.0",
671 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
672 | "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
673 | "dev": true,
674 | "requires": {
675 | "chardet": "^0.4.0",
676 | "iconv-lite": "^0.4.17",
677 | "tmp": "^0.0.33"
678 | }
679 | },
680 | "fast-deep-equal": {
681 | "version": "3.1.3",
682 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
683 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
684 | "dev": true
685 | },
686 | "fast-json-stable-stringify": {
687 | "version": "2.1.0",
688 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
689 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
690 | "dev": true
691 | },
692 | "fast-levenshtein": {
693 | "version": "2.0.6",
694 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
695 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
696 | "dev": true
697 | },
698 | "figures": {
699 | "version": "2.0.0",
700 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
701 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
702 | "dev": true,
703 | "requires": {
704 | "escape-string-regexp": "^1.0.5"
705 | }
706 | },
707 | "file-entry-cache": {
708 | "version": "2.0.0",
709 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
710 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
711 | "dev": true,
712 | "requires": {
713 | "flat-cache": "^1.2.1",
714 | "object-assign": "^4.0.1"
715 | }
716 | },
717 | "find-root": {
718 | "version": "1.1.0",
719 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
720 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
721 | "dev": true
722 | },
723 | "find-up": {
724 | "version": "2.1.0",
725 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
726 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
727 | "dev": true,
728 | "requires": {
729 | "locate-path": "^2.0.0"
730 | }
731 | },
732 | "flat-cache": {
733 | "version": "1.3.4",
734 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
735 | "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
736 | "dev": true,
737 | "requires": {
738 | "circular-json": "^0.3.1",
739 | "graceful-fs": "^4.1.2",
740 | "rimraf": "~2.6.2",
741 | "write": "^0.2.1"
742 | }
743 | },
744 | "fs.realpath": {
745 | "version": "1.0.0",
746 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
747 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
748 | "dev": true
749 | },
750 | "function-bind": {
751 | "version": "1.1.1",
752 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
753 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
754 | "dev": true
755 | },
756 | "functional-red-black-tree": {
757 | "version": "1.0.1",
758 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
759 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
760 | "dev": true
761 | },
762 | "get-intrinsic": {
763 | "version": "1.1.1",
764 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
765 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
766 | "dev": true,
767 | "requires": {
768 | "function-bind": "^1.1.1",
769 | "has": "^1.0.3",
770 | "has-symbols": "^1.0.1"
771 | }
772 | },
773 | "get-stdin": {
774 | "version": "6.0.0",
775 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
776 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
777 | "dev": true
778 | },
779 | "glob": {
780 | "version": "7.1.6",
781 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
782 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
783 | "dev": true,
784 | "requires": {
785 | "fs.realpath": "^1.0.0",
786 | "inflight": "^1.0.4",
787 | "inherits": "2",
788 | "minimatch": "^3.0.4",
789 | "once": "^1.3.0",
790 | "path-is-absolute": "^1.0.0"
791 | }
792 | },
793 | "globals": {
794 | "version": "11.12.0",
795 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
796 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
797 | "dev": true
798 | },
799 | "graceful-fs": {
800 | "version": "4.2.6",
801 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
802 | "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
803 | "dev": true
804 | },
805 | "has": {
806 | "version": "1.0.3",
807 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
808 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
809 | "dev": true,
810 | "requires": {
811 | "function-bind": "^1.1.1"
812 | }
813 | },
814 | "has-ansi": {
815 | "version": "2.0.0",
816 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
817 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
818 | "dev": true,
819 | "requires": {
820 | "ansi-regex": "^2.0.0"
821 | }
822 | },
823 | "has-bigints": {
824 | "version": "1.0.1",
825 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
826 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
827 | "dev": true
828 | },
829 | "has-flag": {
830 | "version": "3.0.0",
831 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
832 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
833 | "dev": true
834 | },
835 | "has-symbols": {
836 | "version": "1.0.2",
837 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
838 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
839 | "dev": true
840 | },
841 | "hosted-git-info": {
842 | "version": "2.8.8",
843 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
844 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
845 | "dev": true
846 | },
847 | "iconv-lite": {
848 | "version": "0.4.24",
849 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
850 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
851 | "dev": true,
852 | "requires": {
853 | "safer-buffer": ">= 2.1.2 < 3"
854 | }
855 | },
856 | "ignore": {
857 | "version": "4.0.6",
858 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
859 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
860 | "dev": true
861 | },
862 | "imurmurhash": {
863 | "version": "0.1.4",
864 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
865 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
866 | "dev": true
867 | },
868 | "inflight": {
869 | "version": "1.0.6",
870 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
871 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
872 | "dev": true,
873 | "requires": {
874 | "once": "^1.3.0",
875 | "wrappy": "1"
876 | }
877 | },
878 | "inherits": {
879 | "version": "2.0.4",
880 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
881 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
882 | "dev": true
883 | },
884 | "inquirer": {
885 | "version": "5.2.0",
886 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz",
887 | "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==",
888 | "dev": true,
889 | "requires": {
890 | "ansi-escapes": "^3.0.0",
891 | "chalk": "^2.0.0",
892 | "cli-cursor": "^2.1.0",
893 | "cli-width": "^2.0.0",
894 | "external-editor": "^2.1.0",
895 | "figures": "^2.0.0",
896 | "lodash": "^4.3.0",
897 | "mute-stream": "0.0.7",
898 | "run-async": "^2.2.0",
899 | "rxjs": "^5.5.2",
900 | "string-width": "^2.1.0",
901 | "strip-ansi": "^4.0.0",
902 | "through": "^2.3.6"
903 | }
904 | },
905 | "is-arrayish": {
906 | "version": "0.2.1",
907 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
908 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
909 | "dev": true
910 | },
911 | "is-bigint": {
912 | "version": "1.0.1",
913 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz",
914 | "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==",
915 | "dev": true
916 | },
917 | "is-boolean-object": {
918 | "version": "1.1.0",
919 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz",
920 | "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==",
921 | "dev": true,
922 | "requires": {
923 | "call-bind": "^1.0.0"
924 | }
925 | },
926 | "is-callable": {
927 | "version": "1.2.3",
928 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
929 | "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==",
930 | "dev": true
931 | },
932 | "is-core-module": {
933 | "version": "2.2.0",
934 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
935 | "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
936 | "dev": true,
937 | "requires": {
938 | "has": "^1.0.3"
939 | }
940 | },
941 | "is-date-object": {
942 | "version": "1.0.2",
943 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
944 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
945 | "dev": true
946 | },
947 | "is-fullwidth-code-point": {
948 | "version": "2.0.0",
949 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
950 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
951 | "dev": true
952 | },
953 | "is-negative-zero": {
954 | "version": "2.0.1",
955 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
956 | "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
957 | "dev": true
958 | },
959 | "is-number-object": {
960 | "version": "1.0.4",
961 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz",
962 | "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==",
963 | "dev": true
964 | },
965 | "is-regex": {
966 | "version": "1.1.2",
967 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz",
968 | "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==",
969 | "dev": true,
970 | "requires": {
971 | "call-bind": "^1.0.2",
972 | "has-symbols": "^1.0.1"
973 | }
974 | },
975 | "is-resolvable": {
976 | "version": "1.1.0",
977 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
978 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
979 | "dev": true
980 | },
981 | "is-string": {
982 | "version": "1.0.5",
983 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
984 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
985 | "dev": true
986 | },
987 | "is-symbol": {
988 | "version": "1.0.3",
989 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
990 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
991 | "dev": true,
992 | "requires": {
993 | "has-symbols": "^1.0.1"
994 | }
995 | },
996 | "isarray": {
997 | "version": "1.0.0",
998 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
999 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1000 | "dev": true
1001 | },
1002 | "isexe": {
1003 | "version": "2.0.0",
1004 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1005 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1006 | "dev": true
1007 | },
1008 | "js-tokens": {
1009 | "version": "3.0.2",
1010 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
1011 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
1012 | "dev": true
1013 | },
1014 | "js-yaml": {
1015 | "version": "3.14.1",
1016 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
1017 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
1018 | "dev": true,
1019 | "requires": {
1020 | "argparse": "^1.0.7",
1021 | "esprima": "^4.0.0"
1022 | }
1023 | },
1024 | "json-parse-better-errors": {
1025 | "version": "1.0.2",
1026 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
1027 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
1028 | "dev": true
1029 | },
1030 | "json-schema-traverse": {
1031 | "version": "0.4.1",
1032 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1033 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1034 | "dev": true
1035 | },
1036 | "json-stable-stringify-without-jsonify": {
1037 | "version": "1.0.1",
1038 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1039 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1040 | "dev": true
1041 | },
1042 | "jsx-ast-utils": {
1043 | "version": "2.4.1",
1044 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz",
1045 | "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==",
1046 | "dev": true,
1047 | "requires": {
1048 | "array-includes": "^3.1.1",
1049 | "object.assign": "^4.1.0"
1050 | }
1051 | },
1052 | "levn": {
1053 | "version": "0.3.0",
1054 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1055 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1056 | "dev": true,
1057 | "requires": {
1058 | "prelude-ls": "~1.1.2",
1059 | "type-check": "~0.3.2"
1060 | }
1061 | },
1062 | "load-json-file": {
1063 | "version": "2.0.0",
1064 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
1065 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
1066 | "dev": true,
1067 | "requires": {
1068 | "graceful-fs": "^4.1.2",
1069 | "parse-json": "^2.2.0",
1070 | "pify": "^2.0.0",
1071 | "strip-bom": "^3.0.0"
1072 | }
1073 | },
1074 | "locate-path": {
1075 | "version": "2.0.0",
1076 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
1077 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
1078 | "dev": true,
1079 | "requires": {
1080 | "p-locate": "^2.0.0",
1081 | "path-exists": "^3.0.0"
1082 | }
1083 | },
1084 | "lodash": {
1085 | "version": "4.17.21",
1086 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1087 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1088 | "dev": true
1089 | },
1090 | "loose-envify": {
1091 | "version": "1.4.0",
1092 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1093 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1094 | "dev": true,
1095 | "requires": {
1096 | "js-tokens": "^3.0.0 || ^4.0.0"
1097 | }
1098 | },
1099 | "mimic-fn": {
1100 | "version": "1.2.0",
1101 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
1102 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
1103 | "dev": true
1104 | },
1105 | "minimatch": {
1106 | "version": "3.0.4",
1107 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1108 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1109 | "dev": true,
1110 | "requires": {
1111 | "brace-expansion": "^1.1.7"
1112 | }
1113 | },
1114 | "minimist": {
1115 | "version": "1.2.5",
1116 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1117 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
1118 | "dev": true
1119 | },
1120 | "mkdirp": {
1121 | "version": "0.5.5",
1122 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
1123 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
1124 | "dev": true,
1125 | "requires": {
1126 | "minimist": "^1.2.5"
1127 | }
1128 | },
1129 | "moment": {
1130 | "version": "2.23.0",
1131 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.23.0.tgz",
1132 | "integrity": "sha512-3IE39bHVqFbWWaPOMHZF98Q9c3LDKGTmypMiTM2QygGXXElkFWIH7GxfmlwmY2vwa+wmNsoYZmG2iusf1ZjJoA=="
1133 | },
1134 | "ms": {
1135 | "version": "2.1.3",
1136 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1137 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1138 | "dev": true
1139 | },
1140 | "mute-stream": {
1141 | "version": "0.0.7",
1142 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
1143 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
1144 | "dev": true
1145 | },
1146 | "natural-compare": {
1147 | "version": "1.4.0",
1148 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1149 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1150 | "dev": true
1151 | },
1152 | "nice-try": {
1153 | "version": "1.0.5",
1154 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
1155 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
1156 | "dev": true
1157 | },
1158 | "normalize-package-data": {
1159 | "version": "2.5.0",
1160 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
1161 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
1162 | "dev": true,
1163 | "requires": {
1164 | "hosted-git-info": "^2.1.4",
1165 | "resolve": "^1.10.0",
1166 | "semver": "2 || 3 || 4 || 5",
1167 | "validate-npm-package-license": "^3.0.1"
1168 | }
1169 | },
1170 | "object-assign": {
1171 | "version": "4.1.1",
1172 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1173 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1174 | "dev": true
1175 | },
1176 | "object-inspect": {
1177 | "version": "1.9.0",
1178 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz",
1179 | "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==",
1180 | "dev": true
1181 | },
1182 | "object-keys": {
1183 | "version": "1.1.1",
1184 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1185 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
1186 | "dev": true
1187 | },
1188 | "object.assign": {
1189 | "version": "4.1.2",
1190 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
1191 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
1192 | "dev": true,
1193 | "requires": {
1194 | "call-bind": "^1.0.0",
1195 | "define-properties": "^1.1.3",
1196 | "has-symbols": "^1.0.1",
1197 | "object-keys": "^1.1.1"
1198 | }
1199 | },
1200 | "once": {
1201 | "version": "1.4.0",
1202 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1203 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1204 | "dev": true,
1205 | "requires": {
1206 | "wrappy": "1"
1207 | }
1208 | },
1209 | "onetime": {
1210 | "version": "2.0.1",
1211 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
1212 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
1213 | "dev": true,
1214 | "requires": {
1215 | "mimic-fn": "^1.0.0"
1216 | }
1217 | },
1218 | "optionator": {
1219 | "version": "0.8.3",
1220 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
1221 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
1222 | "dev": true,
1223 | "requires": {
1224 | "deep-is": "~0.1.3",
1225 | "fast-levenshtein": "~2.0.6",
1226 | "levn": "~0.3.0",
1227 | "prelude-ls": "~1.1.2",
1228 | "type-check": "~0.3.2",
1229 | "word-wrap": "~1.2.3"
1230 | }
1231 | },
1232 | "os-tmpdir": {
1233 | "version": "1.0.2",
1234 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1235 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
1236 | "dev": true
1237 | },
1238 | "p-limit": {
1239 | "version": "1.3.0",
1240 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
1241 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
1242 | "dev": true,
1243 | "requires": {
1244 | "p-try": "^1.0.0"
1245 | }
1246 | },
1247 | "p-locate": {
1248 | "version": "2.0.0",
1249 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
1250 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
1251 | "dev": true,
1252 | "requires": {
1253 | "p-limit": "^1.1.0"
1254 | }
1255 | },
1256 | "p-try": {
1257 | "version": "1.0.0",
1258 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
1259 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
1260 | "dev": true
1261 | },
1262 | "parse-json": {
1263 | "version": "2.2.0",
1264 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
1265 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
1266 | "dev": true,
1267 | "requires": {
1268 | "error-ex": "^1.2.0"
1269 | }
1270 | },
1271 | "path-exists": {
1272 | "version": "3.0.0",
1273 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
1274 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
1275 | "dev": true
1276 | },
1277 | "path-is-absolute": {
1278 | "version": "1.0.1",
1279 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1280 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1281 | "dev": true
1282 | },
1283 | "path-is-inside": {
1284 | "version": "1.0.2",
1285 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1286 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
1287 | "dev": true
1288 | },
1289 | "path-key": {
1290 | "version": "2.0.1",
1291 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
1292 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
1293 | "dev": true
1294 | },
1295 | "path-parse": {
1296 | "version": "1.0.6",
1297 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1298 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1299 | "dev": true
1300 | },
1301 | "path-type": {
1302 | "version": "2.0.0",
1303 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
1304 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
1305 | "dev": true,
1306 | "requires": {
1307 | "pify": "^2.0.0"
1308 | }
1309 | },
1310 | "pify": {
1311 | "version": "2.3.0",
1312 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1313 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
1314 | "dev": true
1315 | },
1316 | "pkg-conf": {
1317 | "version": "2.1.0",
1318 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
1319 | "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=",
1320 | "dev": true,
1321 | "requires": {
1322 | "find-up": "^2.0.0",
1323 | "load-json-file": "^4.0.0"
1324 | },
1325 | "dependencies": {
1326 | "load-json-file": {
1327 | "version": "4.0.0",
1328 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
1329 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
1330 | "dev": true,
1331 | "requires": {
1332 | "graceful-fs": "^4.1.2",
1333 | "parse-json": "^4.0.0",
1334 | "pify": "^3.0.0",
1335 | "strip-bom": "^3.0.0"
1336 | }
1337 | },
1338 | "parse-json": {
1339 | "version": "4.0.0",
1340 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
1341 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
1342 | "dev": true,
1343 | "requires": {
1344 | "error-ex": "^1.3.1",
1345 | "json-parse-better-errors": "^1.0.1"
1346 | }
1347 | },
1348 | "pify": {
1349 | "version": "3.0.0",
1350 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
1351 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
1352 | "dev": true
1353 | }
1354 | }
1355 | },
1356 | "pkg-config": {
1357 | "version": "1.1.1",
1358 | "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
1359 | "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=",
1360 | "dev": true,
1361 | "requires": {
1362 | "debug-log": "^1.0.0",
1363 | "find-root": "^1.0.0",
1364 | "xtend": "^4.0.1"
1365 | }
1366 | },
1367 | "pkg-dir": {
1368 | "version": "2.0.0",
1369 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
1370 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
1371 | "dev": true,
1372 | "requires": {
1373 | "find-up": "^2.1.0"
1374 | }
1375 | },
1376 | "pluralize": {
1377 | "version": "7.0.0",
1378 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
1379 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
1380 | "dev": true
1381 | },
1382 | "prelude-ls": {
1383 | "version": "1.1.2",
1384 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1385 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
1386 | "dev": true
1387 | },
1388 | "progress": {
1389 | "version": "2.0.3",
1390 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1391 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1392 | "dev": true
1393 | },
1394 | "prop-types": {
1395 | "version": "15.7.2",
1396 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
1397 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
1398 | "dev": true,
1399 | "requires": {
1400 | "loose-envify": "^1.4.0",
1401 | "object-assign": "^4.1.1",
1402 | "react-is": "^16.8.1"
1403 | }
1404 | },
1405 | "punycode": {
1406 | "version": "2.1.1",
1407 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1408 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1409 | "dev": true
1410 | },
1411 | "queue-microtask": {
1412 | "version": "1.2.2",
1413 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz",
1414 | "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==",
1415 | "dev": true
1416 | },
1417 | "react-is": {
1418 | "version": "16.13.1",
1419 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
1420 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
1421 | "dev": true
1422 | },
1423 | "read-pkg": {
1424 | "version": "2.0.0",
1425 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
1426 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
1427 | "dev": true,
1428 | "requires": {
1429 | "load-json-file": "^2.0.0",
1430 | "normalize-package-data": "^2.3.2",
1431 | "path-type": "^2.0.0"
1432 | }
1433 | },
1434 | "read-pkg-up": {
1435 | "version": "2.0.0",
1436 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
1437 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
1438 | "dev": true,
1439 | "requires": {
1440 | "find-up": "^2.0.0",
1441 | "read-pkg": "^2.0.0"
1442 | }
1443 | },
1444 | "regexpp": {
1445 | "version": "2.0.1",
1446 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
1447 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
1448 | "dev": true
1449 | },
1450 | "require-uncached": {
1451 | "version": "1.0.3",
1452 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
1453 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
1454 | "dev": true,
1455 | "requires": {
1456 | "caller-path": "^0.1.0",
1457 | "resolve-from": "^1.0.0"
1458 | }
1459 | },
1460 | "resolve": {
1461 | "version": "1.20.0",
1462 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
1463 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
1464 | "dev": true,
1465 | "requires": {
1466 | "is-core-module": "^2.2.0",
1467 | "path-parse": "^1.0.6"
1468 | }
1469 | },
1470 | "resolve-from": {
1471 | "version": "1.0.1",
1472 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
1473 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
1474 | "dev": true
1475 | },
1476 | "restore-cursor": {
1477 | "version": "2.0.0",
1478 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
1479 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
1480 | "dev": true,
1481 | "requires": {
1482 | "onetime": "^2.0.0",
1483 | "signal-exit": "^3.0.2"
1484 | }
1485 | },
1486 | "rimraf": {
1487 | "version": "2.6.3",
1488 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
1489 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
1490 | "dev": true,
1491 | "requires": {
1492 | "glob": "^7.1.3"
1493 | }
1494 | },
1495 | "run-async": {
1496 | "version": "2.4.1",
1497 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
1498 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
1499 | "dev": true
1500 | },
1501 | "run-parallel": {
1502 | "version": "1.2.0",
1503 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1504 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1505 | "dev": true,
1506 | "requires": {
1507 | "queue-microtask": "^1.2.2"
1508 | }
1509 | },
1510 | "rxjs": {
1511 | "version": "5.5.12",
1512 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
1513 | "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
1514 | "dev": true,
1515 | "requires": {
1516 | "symbol-observable": "1.0.1"
1517 | }
1518 | },
1519 | "safer-buffer": {
1520 | "version": "2.1.2",
1521 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1522 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1523 | "dev": true
1524 | },
1525 | "semver": {
1526 | "version": "5.7.1",
1527 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1528 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1529 | "dev": true
1530 | },
1531 | "shebang-command": {
1532 | "version": "1.2.0",
1533 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1534 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
1535 | "dev": true,
1536 | "requires": {
1537 | "shebang-regex": "^1.0.0"
1538 | }
1539 | },
1540 | "shebang-regex": {
1541 | "version": "1.0.0",
1542 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1543 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1544 | "dev": true
1545 | },
1546 | "signal-exit": {
1547 | "version": "3.0.3",
1548 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
1549 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
1550 | "dev": true
1551 | },
1552 | "slice-ansi": {
1553 | "version": "1.0.0",
1554 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
1555 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
1556 | "dev": true,
1557 | "requires": {
1558 | "is-fullwidth-code-point": "^2.0.0"
1559 | }
1560 | },
1561 | "spdx-correct": {
1562 | "version": "3.1.1",
1563 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
1564 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
1565 | "dev": true,
1566 | "requires": {
1567 | "spdx-expression-parse": "^3.0.0",
1568 | "spdx-license-ids": "^3.0.0"
1569 | }
1570 | },
1571 | "spdx-exceptions": {
1572 | "version": "2.3.0",
1573 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
1574 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
1575 | "dev": true
1576 | },
1577 | "spdx-expression-parse": {
1578 | "version": "3.0.1",
1579 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
1580 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
1581 | "dev": true,
1582 | "requires": {
1583 | "spdx-exceptions": "^2.1.0",
1584 | "spdx-license-ids": "^3.0.0"
1585 | }
1586 | },
1587 | "spdx-license-ids": {
1588 | "version": "3.0.7",
1589 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
1590 | "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==",
1591 | "dev": true
1592 | },
1593 | "sprintf-js": {
1594 | "version": "1.0.3",
1595 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1596 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
1597 | "dev": true
1598 | },
1599 | "standard": {
1600 | "version": "12.0.1",
1601 | "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz",
1602 | "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==",
1603 | "dev": true,
1604 | "requires": {
1605 | "eslint": "~5.4.0",
1606 | "eslint-config-standard": "12.0.0",
1607 | "eslint-config-standard-jsx": "6.0.2",
1608 | "eslint-plugin-import": "~2.14.0",
1609 | "eslint-plugin-node": "~7.0.1",
1610 | "eslint-plugin-promise": "~4.0.0",
1611 | "eslint-plugin-react": "~7.11.1",
1612 | "eslint-plugin-standard": "~4.0.0",
1613 | "standard-engine": "~9.0.0"
1614 | }
1615 | },
1616 | "standard-engine": {
1617 | "version": "9.0.0",
1618 | "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz",
1619 | "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==",
1620 | "dev": true,
1621 | "requires": {
1622 | "deglob": "^2.1.0",
1623 | "get-stdin": "^6.0.0",
1624 | "minimist": "^1.1.0",
1625 | "pkg-conf": "^2.0.0"
1626 | }
1627 | },
1628 | "string-width": {
1629 | "version": "2.1.1",
1630 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1631 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1632 | "dev": true,
1633 | "requires": {
1634 | "is-fullwidth-code-point": "^2.0.0",
1635 | "strip-ansi": "^4.0.0"
1636 | }
1637 | },
1638 | "string.prototype.trimend": {
1639 | "version": "1.0.4",
1640 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
1641 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
1642 | "dev": true,
1643 | "requires": {
1644 | "call-bind": "^1.0.2",
1645 | "define-properties": "^1.1.3"
1646 | }
1647 | },
1648 | "string.prototype.trimstart": {
1649 | "version": "1.0.4",
1650 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
1651 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
1652 | "dev": true,
1653 | "requires": {
1654 | "call-bind": "^1.0.2",
1655 | "define-properties": "^1.1.3"
1656 | }
1657 | },
1658 | "strip-ansi": {
1659 | "version": "4.0.0",
1660 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1661 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1662 | "dev": true,
1663 | "requires": {
1664 | "ansi-regex": "^3.0.0"
1665 | },
1666 | "dependencies": {
1667 | "ansi-regex": {
1668 | "version": "3.0.0",
1669 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
1670 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
1671 | "dev": true
1672 | }
1673 | }
1674 | },
1675 | "strip-bom": {
1676 | "version": "3.0.0",
1677 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
1678 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
1679 | "dev": true
1680 | },
1681 | "strip-json-comments": {
1682 | "version": "2.0.1",
1683 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1684 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
1685 | "dev": true
1686 | },
1687 | "supports-color": {
1688 | "version": "2.0.0",
1689 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1690 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1691 | "dev": true
1692 | },
1693 | "symbol-observable": {
1694 | "version": "1.0.1",
1695 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
1696 | "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
1697 | "dev": true
1698 | },
1699 | "table": {
1700 | "version": "4.0.3",
1701 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz",
1702 | "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==",
1703 | "dev": true,
1704 | "requires": {
1705 | "ajv": "^6.0.1",
1706 | "ajv-keywords": "^3.0.0",
1707 | "chalk": "^2.1.0",
1708 | "lodash": "^4.17.4",
1709 | "slice-ansi": "1.0.0",
1710 | "string-width": "^2.1.1"
1711 | }
1712 | },
1713 | "text-table": {
1714 | "version": "0.2.0",
1715 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1716 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1717 | "dev": true
1718 | },
1719 | "through": {
1720 | "version": "2.3.8",
1721 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
1722 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
1723 | "dev": true
1724 | },
1725 | "tmp": {
1726 | "version": "0.0.33",
1727 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
1728 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
1729 | "dev": true,
1730 | "requires": {
1731 | "os-tmpdir": "~1.0.2"
1732 | }
1733 | },
1734 | "type-check": {
1735 | "version": "0.3.2",
1736 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1737 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
1738 | "dev": true,
1739 | "requires": {
1740 | "prelude-ls": "~1.1.2"
1741 | }
1742 | },
1743 | "unbox-primitive": {
1744 | "version": "1.0.0",
1745 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz",
1746 | "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==",
1747 | "dev": true,
1748 | "requires": {
1749 | "function-bind": "^1.1.1",
1750 | "has-bigints": "^1.0.0",
1751 | "has-symbols": "^1.0.0",
1752 | "which-boxed-primitive": "^1.0.1"
1753 | }
1754 | },
1755 | "uniq": {
1756 | "version": "1.0.1",
1757 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
1758 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
1759 | "dev": true
1760 | },
1761 | "uri-js": {
1762 | "version": "4.4.1",
1763 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1764 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1765 | "dev": true,
1766 | "requires": {
1767 | "punycode": "^2.1.0"
1768 | }
1769 | },
1770 | "validate-npm-package-license": {
1771 | "version": "3.0.4",
1772 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
1773 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
1774 | "dev": true,
1775 | "requires": {
1776 | "spdx-correct": "^3.0.0",
1777 | "spdx-expression-parse": "^3.0.0"
1778 | }
1779 | },
1780 | "which": {
1781 | "version": "1.3.1",
1782 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1783 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1784 | "dev": true,
1785 | "requires": {
1786 | "isexe": "^2.0.0"
1787 | }
1788 | },
1789 | "which-boxed-primitive": {
1790 | "version": "1.0.2",
1791 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
1792 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
1793 | "dev": true,
1794 | "requires": {
1795 | "is-bigint": "^1.0.1",
1796 | "is-boolean-object": "^1.1.0",
1797 | "is-number-object": "^1.0.4",
1798 | "is-string": "^1.0.5",
1799 | "is-symbol": "^1.0.3"
1800 | }
1801 | },
1802 | "word-wrap": {
1803 | "version": "1.2.3",
1804 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1805 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1806 | "dev": true
1807 | },
1808 | "wrappy": {
1809 | "version": "1.0.2",
1810 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1811 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1812 | "dev": true
1813 | },
1814 | "write": {
1815 | "version": "0.2.1",
1816 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
1817 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
1818 | "dev": true,
1819 | "requires": {
1820 | "mkdirp": "^0.5.1"
1821 | }
1822 | },
1823 | "xtend": {
1824 | "version": "4.0.2",
1825 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1826 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1827 | "dev": true
1828 | }
1829 | }
1830 | }
1831 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "git-amend",
3 | "version": "1.1.0",
4 | "description": "Easily edit git commit with CLI prompt",
5 | "main": "index.js",
6 | "author": "Elevista",
7 | "email": "elevista@sunnyholic.com",
8 | "license": "ISC",
9 | "devDependencies": {
10 | "standard": "^12.0.1"
11 | },
12 | "bin": {
13 | "git-amend": "./index.js"
14 | },
15 | "scripts": {
16 | "lint": "eslint .",
17 | "lint:fix": "eslint . --fix"
18 | },
19 | "dependencies": {
20 | "ansi-colors": "^3.2.3",
21 | "enquirer": "^2.1.1",
22 | "moment": "^2.23.0"
23 | },
24 | "repository": {
25 | "type": "git",
26 | "url": "git+https://github.com/Elevista/git-amend.git"
27 | },
28 | "keywords": [
29 | "git",
30 | "amend",
31 | "rebase",
32 | "commit",
33 | "cli"
34 | ],
35 | "homepage": "https://github.com/Elevista/git-amend"
36 | }
37 |
--------------------------------------------------------------------------------
/util.js:
--------------------------------------------------------------------------------
1 | const win32 = process.platform === 'win32'
2 | const { execSync } = require('child_process')
3 | const escapeRegex = win32 ? [/([%()^])/g, '^$1'] : [/(["\\;])/g, '\\$1']
4 | const c = require('ansi-colors')
5 | const joinTpl = (str, exp) => str.map((x, i) => x + (exp[i] || '')).join('')
6 | const joinChar = win32 ? '\n' : ';\n'
7 |
8 | const escape = function (str, ...exp) {
9 | return str.map((x, i) =>
10 | x + `${exp[i] || ''}`.replace(...escapeRegex)
11 | ).join('')
12 | }
13 | const oneEcho = win32 ? x => escape`echo ${x}` : x => escape`echo "${x}"`
14 | const makeEcho = str => `(\n${str.split('\n').map(oneEcho).join(joinChar)}\n)`
15 | const exec = (...args) => execSync(escape(...args), { stdio: ['pipe', 'pipe', 'pipe'] }).toString()
16 |
17 | const colors = {
18 | println (str, ...exp) {
19 | const input = typeof str === 'string' ? str : joinTpl(str, exp)
20 | console.log(this._color ? this._color(input) : input)
21 | }
22 | }
23 | const define = name => Reflect.defineProperty(colors, name, {
24 | get () {
25 | const ret = (str, ...exp) => {
26 | if (typeof str === 'string') return ret._color(str)
27 | else return ret._color(joinTpl(str, exp))
28 | }
29 | Reflect.setPrototypeOf(ret, colors)
30 | ret._color = this._color ? this._color[name] : c[name]
31 | return ret
32 | }
33 | })
34 | ;[].concat(...Object.values(c.keys)).forEach(define)
35 |
36 | const execStdin = (cmd, stdin) => {
37 | try {
38 | return execSync(cmd, { input: stdin, encoding: 'utf8' })
39 | } catch ({ output: [stdout, stderr], fileName, lineNumber }) {
40 | throw new Error(stderr)
41 | }
42 | }
43 |
44 | module.exports = { exec, execStdin, makeEcho, colors }
45 |
--------------------------------------------------------------------------------