aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.eslintrc3
-rw-r--r--package-lock.json2995
-rw-r--r--package.json21
-rw-r--r--src/components/auth/Login.js22
-rw-r--r--src/components/auth/Signup.js22
-rw-r--r--src/components/auth/Welcome.js21
-rw-r--r--src/components/services/content/Services.js32
-rw-r--r--src/helpers/serverless-helpers.js16
-rw-r--r--src/i18n/locales/defaultMessages.json190
-rw-r--r--src/i18n/locales/en-US.json2
-rw-r--r--src/i18n/messages/src/components/auth/Login.json70
-rw-r--r--src/i18n/messages/src/components/auth/Signup.json70
-rw-r--r--src/i18n/messages/src/components/auth/Welcome.json21
-rw-r--r--src/i18n/messages/src/components/services/content/Services.json29
-rw-r--r--src/index.js3
-rw-r--r--src/server/.editorconfig13
-rw-r--r--src/server/.eslintrc.js22
-rw-r--r--src/server/.gitattributes2
-rw-r--r--src/server/.gitignore19
-rw-r--r--src/server/README.md17
-rw-r--r--src/server/ace21
-rw-r--r--src/server/app/Controllers/Http/RecipeController.js119
-rw-r--r--src/server/app/Controllers/Http/ServiceController.js211
-rw-r--r--src/server/app/Controllers/Http/StaticController.js224
-rw-r--r--src/server/app/Controllers/Http/UserController.js231
-rw-r--r--src/server/app/Controllers/Http/WorkspaceController.js148
-rw-r--r--src/server/app/Exceptions/Handler.js45
-rw-r--r--src/server/app/Middleware/ConvertEmptyStringsToNull.js16
-rw-r--r--src/server/app/Models/Recipe.js8
-rw-r--r--src/server/app/Models/Service.js8
-rw-r--r--src/server/app/Models/Token.js8
-rw-r--r--src/server/app/Models/Traits/NoTimestamp.js15
-rw-r--r--src/server/app/Models/User.js8
-rw-r--r--src/server/app/Models/Workspace.js8
-rw-r--r--src/server/config/app.js242
-rw-r--r--src/server/config/auth.js93
-rw-r--r--src/server/config/bodyParser.js156
-rw-r--r--src/server/config/cors.js86
-rw-r--r--src/server/config/database.js87
-rw-r--r--src/server/config/drive.js45
-rw-r--r--src/server/config/hash.js48
-rw-r--r--src/server/config/session.js98
-rw-r--r--src/server/config/shield.js144
-rw-r--r--src/server/database/factory.js20
-rw-r--r--src/server/database/migrations/1566385379883_service_schema.js22
-rw-r--r--src/server/database/migrations/1566554231482_recipe_schema.js21
-rw-r--r--src/server/database/migrations/1566554359294_workspace_schema.js23
-rw-r--r--src/server/database/template.sqlitebin0 -> 36864 bytes
-rw-r--r--src/server/env.ini16
-rw-r--r--src/server/logo.pngbin0 -> 298671 bytes
-rw-r--r--src/server/package.json49
-rw-r--r--src/server/public/css/main.css69
-rw-r--r--src/server/public/css/vanilla.css138
-rw-r--r--src/server/resources/views/import.edge15
-rw-r--r--src/server/resources/views/index.edge32
-rw-r--r--src/server/resources/views/layouts/main.edge18
-rw-r--r--src/server/start.js40
-rw-r--r--src/server/start/app.js62
-rw-r--r--src/server/start/kernel.js56
-rw-r--r--src/server/start/routes.js74
-rw-r--r--src/styles/services.scss2
-rw-r--r--src/styles/type.scss3
-rw-r--r--src/styles/welcome.scss1
63 files changed, 5807 insertions, 513 deletions
diff --git a/.eslintrc b/.eslintrc
index 6253c0837..c2d1b557c 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -56,7 +56,8 @@
56 "btoa": true, 56 "btoa": true,
57 "ga": true, 57 "ga": true,
58 "mocha": true, 58 "mocha": true,
59 "Element": true 59 "Element": true,
60 "electron": true
60 }, 61 },
61 "env": { 62 "env": {
62 "jest/globals": true 63 "jest/globals": true
diff --git a/package-lock.json b/package-lock.json
index fb3b675fb..dde0a1d80 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -33,6 +33,339 @@
33 } 33 }
34 } 34 }
35 }, 35 },
36 "@adonisjs/ace": {
37 "version": "5.0.8",
38 "resolved": "https://registry.npmjs.org/@adonisjs/ace/-/ace-5.0.8.tgz",
39 "integrity": "sha512-M4MGrzWzuE++jlPrbDPgo1tdv5j7uH4FsaoGddH+qJ+iXErVZuV6z2gYdmlorDDbvotFpxA+TTtDEXrTLCE08w==",
40 "requires": {
41 "cli-table": "^0.3.1",
42 "commander": "^2.18.0",
43 "debug": "^4.0.1",
44 "enquirer": "^1.0.3",
45 "fast-levenshtein": "^2.0.6",
46 "fs-extra": "^7.0.0",
47 "is-arrow-function": "^2.0.3",
48 "kleur": "^2.0.2",
49 "lodash": "^4.17.11",
50 "mustache": "^3.0.0",
51 "prompt-checkbox": "^2.2.0",
52 "prompt-confirm": "^2.0.4",
53 "prompt-expand": "^1.0.1",
54 "prompt-list": "^3.2.0",
55 "prompt-password": "^1.2.0"
56 },
57 "dependencies": {
58 "kleur": {
59 "version": "2.0.2",
60 "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz",
61 "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ=="
62 }
63 }
64 },
65 "@adonisjs/auth": {
66 "version": "3.0.7",
67 "resolved": "https://registry.npmjs.org/@adonisjs/auth/-/auth-3.0.7.tgz",
68 "integrity": "sha512-ui7cSTNmxO+8r3iaA9ZQOtgzXwHshg/XFHH1OR7tUELHUUyInoPaRqLofb+5KpjYZ1U9RrZC6eT+sTUQzzxk+Q==",
69 "requires": {
70 "@adonisjs/generic-exceptions": "^2.0.1",
71 "basic-auth": "^2.0.1",
72 "debug": "^4.0.1",
73 "jsonwebtoken": "^8.3.0",
74 "lodash": "^4.17.11",
75 "ms": "^2.1.1",
76 "resetable": "^1.0.3",
77 "uuid": "^3.3.2"
78 }
79 },
80 "@adonisjs/bodyparser": {
81 "version": "2.0.9",
82 "resolved": "https://registry.npmjs.org/@adonisjs/bodyparser/-/bodyparser-2.0.9.tgz",
83 "integrity": "sha512-1wE53LBPflolar9Jq+VF22I4tIJZklsXAE9pDxr9t1DuqpvB8TA4uSvLM2UjQFtX7iTQ85iWZqZCRt05jbsziQ==",
84 "requires": {
85 "@adonisjs/generic-exceptions": "^2.0.1",
86 "bytes": "^3.0.0",
87 "co-body": "^6.0.0",
88 "debug": "^4.1.0",
89 "end-of-stream": "^1.4.1",
90 "fs-extra": "^7.0.0",
91 "get-stream": "^4.1.0",
92 "lodash": "^4.17.11",
93 "media-typer": "^0.3.0",
94 "multiparty": "^4.2.1"
95 }
96 },
97 "@adonisjs/cors": {
98 "version": "1.0.7",
99 "resolved": "https://registry.npmjs.org/@adonisjs/cors/-/cors-1.0.7.tgz",
100 "integrity": "sha512-jBO+bI/zdydAXURL02gQxXB57L5+eV2MUYp7zmDrVa12M6mQPMRz5TC2F7a0Kknx9JUr5dsl4+eN0XNfe/8sWQ=="
101 },
102 "@adonisjs/drive": {
103 "version": "1.0.4",
104 "resolved": "https://registry.npmjs.org/@adonisjs/drive/-/drive-1.0.4.tgz",
105 "integrity": "sha512-p2Ot+ylOwtGV6gHIKIMJG0M+AxBatjnqv+UOrUW3Y8xsyN9bKg9khZTEqn7WrHUAlmeS4WUR5T68KIaxuXgRDw==",
106 "requires": {
107 "@slynova/flydrive": "^0.3.1"
108 }
109 },
110 "@adonisjs/fold": {
111 "version": "4.0.9",
112 "resolved": "https://registry.npmjs.org/@adonisjs/fold/-/fold-4.0.9.tgz",
113 "integrity": "sha512-eH6048Ug32BvYvvvfRThy+IDE8lcRtqExca2TfE/Gw5ZP51rVEYqPd1yy3ioB4R5XI8VUS0hjOt5l7tKUh4Sww==",
114 "requires": {
115 "@adonisjs/generic-exceptions": "^2.0.1",
116 "caller": "^1.0.1",
117 "debug": "^3.1.0",
118 "lodash": "^4.17.10",
119 "require-stack": "^1.0.2"
120 },
121 "dependencies": {
122 "debug": {
123 "version": "3.2.6",
124 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
125 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
126 "requires": {
127 "ms": "^2.1.1"
128 }
129 }
130 }
131 },
132 "@adonisjs/framework": {
133 "version": "5.0.13",
134 "resolved": "https://registry.npmjs.org/@adonisjs/framework/-/framework-5.0.13.tgz",
135 "integrity": "sha512-qZx+9WF1bnK3sM4UJnKw6Zu52WIPCB1R4LjBBwSFrnG5TYbIAQATyB08YXc7ETMkQ4dIQmPH+tpq4J7+k2Joog==",
136 "requires": {
137 "@adonisjs/generic-exceptions": "^2.0.1",
138 "@adonisjs/middleware-base": "^1.0.0",
139 "bcryptjs": "^2.4.3",
140 "co-compose": "^4.0.0",
141 "debug": "^4.1.1",
142 "dotenv": "^6.2.0",
143 "edge.js": "^1.1.4",
144 "eventemitter2": "^5.0.1",
145 "haye": "^2.0.2",
146 "lodash": "^4.17.11",
147 "macroable": "^1.0.0",
148 "node-cookie": "^2.1.1",
149 "node-exceptions": "^3.0.0",
150 "node-req": "^2.1.1",
151 "node-res": "4.1.4",
152 "parseurl": "^1.3.2",
153 "path-to-regexp": "^2.4.0",
154 "require-all": "^3.0.0",
155 "resetable": "^1.0.3",
156 "serve-static": "^1.13.2",
157 "simple-encryptor": "^2.0.0",
158 "useragent": "^2.3.0",
159 "winston": "^3.2.1",
160 "youch": "^2.0.10"
161 },
162 "dependencies": {
163 "depd": {
164 "version": "1.1.2",
165 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
166 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
167 },
168 "destroy": {
169 "version": "1.0.4",
170 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
171 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
172 },
173 "dotenv": {
174 "version": "6.2.0",
175 "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
176 "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w=="
177 },
178 "ee-first": {
179 "version": "1.1.1",
180 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
181 "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
182 },
183 "escape-html": {
184 "version": "1.0.3",
185 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
186 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
187 },
188 "fresh": {
189 "version": "0.5.2",
190 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
191 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
192 },
193 "mime": {
194 "version": "1.6.0",
195 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
196 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
197 },
198 "on-finished": {
199 "version": "2.3.0",
200 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
201 "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
202 "requires": {
203 "ee-first": "1.1.1"
204 }
205 },
206 "path-to-regexp": {
207 "version": "2.4.0",
208 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz",
209 "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w=="
210 },
211 "range-parser": {
212 "version": "1.2.1",
213 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
214 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
215 },
216 "send": {
217 "version": "0.17.1",
218 "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
219 "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
220 "requires": {
221 "debug": "2.6.9",
222 "depd": "~1.1.2",
223 "destroy": "~1.0.4",
224 "encodeurl": "~1.0.2",
225 "escape-html": "~1.0.3",
226 "etag": "~1.8.1",
227 "fresh": "0.5.2",
228 "http-errors": "~1.7.2",
229 "mime": "1.6.0",
230 "ms": "2.1.1",
231 "on-finished": "~2.3.0",
232 "range-parser": "~1.2.1",
233 "statuses": "~1.5.0"
234 },
235 "dependencies": {
236 "debug": {
237 "version": "2.6.9",
238 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
239 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
240 "requires": {
241 "ms": "2.0.0"
242 },
243 "dependencies": {
244 "ms": {
245 "version": "2.0.0",
246 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
247 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
248 }
249 }
250 }
251 }
252 },
253 "serve-static": {
254 "version": "1.14.1",
255 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
256 "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
257 "requires": {
258 "encodeurl": "~1.0.2",
259 "escape-html": "~1.0.3",
260 "parseurl": "~1.3.3",
261 "send": "0.17.1"
262 }
263 }
264 }
265 },
266 "@adonisjs/generic-exceptions": {
267 "version": "2.0.1",
268 "resolved": "https://registry.npmjs.org/@adonisjs/generic-exceptions/-/generic-exceptions-2.0.1.tgz",
269 "integrity": "sha512-ZIPnj7vlRZKaAyZ4c2SUFCpJ6Yk+xzR+STjsze9unmZQncpQmVq1K8r20pXX3Z9rnxKVlfwO58HTxMMWaX9t9A==",
270 "requires": {
271 "node-exceptions": "^3.0.0",
272 "upcast": "^2.1.1"
273 }
274 },
275 "@adonisjs/ignitor": {
276 "version": "2.0.8",
277 "resolved": "https://registry.npmjs.org/@adonisjs/ignitor/-/ignitor-2.0.8.tgz",
278 "integrity": "sha512-drpuwxIjvBpBBn4Ndt2Sghf0aN3ml1zz3Bxu3g42k29ZEMDKgw9KkmabsEd+MVUqPLzch4cJRFKIReh9TWnY+Q==",
279 "requires": {
280 "debug": "^4.0.1",
281 "pify": "^4.0.0",
282 "youch": "^2.0.10",
283 "youch-terminal": "^1.0.0"
284 },
285 "dependencies": {
286 "pify": {
287 "version": "4.0.1",
288 "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
289 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
290 }
291 }
292 },
293 "@adonisjs/lucid": {
294 "version": "6.1.3",
295 "resolved": "https://registry.npmjs.org/@adonisjs/lucid/-/lucid-6.1.3.tgz",
296 "integrity": "sha512-x/Ke8WkkgRmseRPETBOObptnElXMclQXtjJftfDMiVlz9VhJuIaFCLJwcGZ8g6UNRohMUkcfDrElaXOPc6W1fA==",
297 "requires": {
298 "@adonisjs/generic-exceptions": "^2.0.1",
299 "chance": "^1.0.16",
300 "debug": "^4.0.1",
301 "knex": "^0.15.2",
302 "lodash": "^4.17.11",
303 "moment": "^2.22.2",
304 "pluralize": "^7.0.0",
305 "pretty-hrtime": "^1.0.3",
306 "require-all": "^3.0.0"
307 }
308 },
309 "@adonisjs/middleware-base": {
310 "version": "1.0.0",
311 "resolved": "https://registry.npmjs.org/@adonisjs/middleware-base/-/middleware-base-1.0.0.tgz",
312 "integrity": "sha512-Jw8teZCdR7DTRX72V4mJ45knlZRK0emoaBuAI7vMB5ucyeagLQE6Gl0vKxpRk3STrc2K56mKn23B5h8lQWyhcQ==",
313 "requires": {
314 "@adonisjs/generic-exceptions": "^2.0.0",
315 "co-compose": "^4.0.0",
316 "debug": "^3.1.0",
317 "haye": "^2.0.1",
318 "lodash": "^4.17.5"
319 },
320 "dependencies": {
321 "debug": {
322 "version": "3.2.6",
323 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
324 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
325 "requires": {
326 "ms": "^2.1.1"
327 }
328 }
329 }
330 },
331 "@adonisjs/session": {
332 "version": "1.0.29",
333 "resolved": "https://registry.npmjs.org/@adonisjs/session/-/session-1.0.29.tgz",
334 "integrity": "sha512-dr8P/WUrt50uLZt5SZ8C1uhp4FXzGPh1dNUeS0Lur95ftzHri6S+suBXQ4DM+sNiZQn7iaVylYwsFqUlOkp8gQ==",
335 "requires": {
336 "@adonisjs/generic-exceptions": "^2.0.1",
337 "bson": "^1.1.0",
338 "debug": "^4.1.0",
339 "fs-extra": "^7.0.0",
340 "lodash": "^4.17.11",
341 "ms": "^2.1.1",
342 "type-of-is": "^3.5.1",
343 "uuid": "^3.3.2"
344 }
345 },
346 "@adonisjs/shield": {
347 "version": "1.0.8",
348 "resolved": "https://registry.npmjs.org/@adonisjs/shield/-/shield-1.0.8.tgz",
349 "integrity": "sha512-bFPuDIlChrp7ihbwjl8OVCw/b57pG0yn/1rrzFXP2XBpIUTbOFdQxzDlvydHxsyg90/pAup/4qtmdulywczg2g==",
350 "requires": {
351 "@adonisjs/generic-exceptions": "^2.0.1",
352 "csrf": "^3.0.6",
353 "node-cookie": "^2.1.1",
354 "node-csp": "^1.0.1",
355 "node-guard": "^1.0.0",
356 "uuid": "^3.3.2"
357 }
358 },
359 "@adonisjs/validator": {
360 "version": "5.0.6",
361 "resolved": "https://registry.npmjs.org/@adonisjs/validator/-/validator-5.0.6.tgz",
362 "integrity": "sha512-Koql5nOSfRFhNwkvk38tAHLfpxwuOinZIuLhPP0zAfHCltrXCh02MfydfgA13vDc5LITJgWycXFv+FNb7ljCqg==",
363 "requires": {
364 "@adonisjs/generic-exceptions": "^2.0.1",
365 "indicative": "^5.0.8",
366 "lodash": "^4.17.11"
367 }
368 },
36 "@babel/cli": { 369 "@babel/cli": {
37 "version": "7.0.0", 370 "version": "7.0.0",
38 "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0.tgz", 371 "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0.tgz",
@@ -2848,6 +3181,29 @@
2848 "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", 3181 "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
2849 "dev": true 3182 "dev": true
2850 }, 3183 },
3184 "@slynova/flydrive": {
3185 "version": "0.3.1",
3186 "resolved": "https://registry.npmjs.org/@slynova/flydrive/-/flydrive-0.3.1.tgz",
3187 "integrity": "sha512-/C3chxZRqonxjQwj70WOyqtw0JGjBr6rjvkcrGlDedUXi5YoiJiTVHwD4ry6tHJKwOi3PtxpWO9RZwSKElVWzw==",
3188 "requires": {
3189 "create-output-stream": "0.0.1",
3190 "fs-extra": "^6.0.0",
3191 "node-exceptions": "^3.0.0",
3192 "resetable": "^1.0.2"
3193 },
3194 "dependencies": {
3195 "fs-extra": {
3196 "version": "6.0.1",
3197 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
3198 "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
3199 "requires": {
3200 "graceful-fs": "^4.1.2",
3201 "jsonfile": "^4.0.0",
3202 "universalify": "^0.1.0"
3203 }
3204 }
3205 }
3206 },
2851 "@szmarczak/http-timer": { 3207 "@szmarczak/http-timer": {
2852 "version": "1.1.2", 3208 "version": "1.1.2",
2853 "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 3209 "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
@@ -3299,8 +3655,7 @@
3299 "abbrev": { 3655 "abbrev": {
3300 "version": "1.1.1", 3656 "version": "1.1.1",
3301 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 3657 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
3302 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 3658 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
3303 "dev": true
3304 }, 3659 },
3305 "accepts": { 3660 "accepts": {
3306 "version": "1.0.7", 3661 "version": "1.0.7",
@@ -3359,6 +3714,28 @@
3359 "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", 3714 "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==",
3360 "dev": true 3715 "dev": true
3361 }, 3716 },
3717 "acorn-node": {
3718 "version": "1.8.2",
3719 "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
3720 "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
3721 "requires": {
3722 "acorn": "^7.0.0",
3723 "acorn-walk": "^7.0.0",
3724 "xtend": "^4.0.2"
3725 },
3726 "dependencies": {
3727 "acorn": {
3728 "version": "7.1.0",
3729 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
3730 "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ=="
3731 },
3732 "acorn-walk": {
3733 "version": "7.0.0",
3734 "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz",
3735 "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg=="
3736 }
3737 }
3738 },
3362 "acorn-walk": { 3739 "acorn-walk": {
3363 "version": "6.2.0", 3740 "version": "6.2.0",
3364 "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", 3741 "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
@@ -3407,7 +3784,6 @@
3407 "version": "6.10.2", 3784 "version": "6.10.2",
3408 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", 3785 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
3409 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", 3786 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
3410 "dev": true,
3411 "requires": { 3787 "requires": {
3412 "fast-deep-equal": "^2.0.1", 3788 "fast-deep-equal": "^2.0.1",
3413 "fast-json-stable-stringify": "^2.0.0", 3789 "fast-json-stable-stringify": "^2.0.0",
@@ -3591,6 +3967,94 @@
3591 } 3967 }
3592 } 3968 }
3593 }, 3969 },
3970 "ansi-bgblack": {
3971 "version": "0.1.1",
3972 "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz",
3973 "integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=",
3974 "requires": {
3975 "ansi-wrap": "0.1.0"
3976 }
3977 },
3978 "ansi-bgblue": {
3979 "version": "0.1.1",
3980 "resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz",
3981 "integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=",
3982 "requires": {
3983 "ansi-wrap": "0.1.0"
3984 }
3985 },
3986 "ansi-bgcyan": {
3987 "version": "0.1.1",
3988 "resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz",
3989 "integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=",
3990 "requires": {
3991 "ansi-wrap": "0.1.0"
3992 }
3993 },
3994 "ansi-bggreen": {
3995 "version": "0.1.1",
3996 "resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz",
3997 "integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=",
3998 "requires": {
3999 "ansi-wrap": "0.1.0"
4000 }
4001 },
4002 "ansi-bgmagenta": {
4003 "version": "0.1.1",
4004 "resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz",
4005 "integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=",
4006 "requires": {
4007 "ansi-wrap": "0.1.0"
4008 }
4009 },
4010 "ansi-bgred": {
4011 "version": "0.1.1",
4012 "resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz",
4013 "integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=",
4014 "requires": {
4015 "ansi-wrap": "0.1.0"
4016 }
4017 },
4018 "ansi-bgwhite": {
4019 "version": "0.1.1",
4020 "resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz",
4021 "integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=",
4022 "requires": {
4023 "ansi-wrap": "0.1.0"
4024 }
4025 },
4026 "ansi-bgyellow": {
4027 "version": "0.1.1",
4028 "resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz",
4029 "integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=",
4030 "requires": {
4031 "ansi-wrap": "0.1.0"
4032 }
4033 },
4034 "ansi-black": {
4035 "version": "0.1.1",
4036 "resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz",
4037 "integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=",
4038 "requires": {
4039 "ansi-wrap": "0.1.0"
4040 }
4041 },
4042 "ansi-blue": {
4043 "version": "0.1.1",
4044 "resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz",
4045 "integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=",
4046 "requires": {
4047 "ansi-wrap": "0.1.0"
4048 }
4049 },
4050 "ansi-bold": {
4051 "version": "0.1.1",
4052 "resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz",
4053 "integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=",
4054 "requires": {
4055 "ansi-wrap": "0.1.0"
4056 }
4057 },
3594 "ansi-colors": { 4058 "ansi-colors": {
3595 "version": "1.1.0", 4059 "version": "1.1.0",
3596 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", 4060 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
@@ -3607,6 +4071,14 @@
3607 "ansi-wrap": "0.1.0" 4071 "ansi-wrap": "0.1.0"
3608 } 4072 }
3609 }, 4073 },
4074 "ansi-dim": {
4075 "version": "0.1.1",
4076 "resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz",
4077 "integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=",
4078 "requires": {
4079 "ansi-wrap": "0.1.0"
4080 }
4081 },
3610 "ansi-escapes": { 4082 "ansi-escapes": {
3611 "version": "3.2.0", 4083 "version": "3.2.0",
3612 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 4084 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
@@ -3617,7 +4089,30 @@
3617 "version": "0.1.1", 4089 "version": "0.1.1",
3618 "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", 4090 "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
3619 "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", 4091 "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
3620 "dev": true, 4092 "requires": {
4093 "ansi-wrap": "0.1.0"
4094 }
4095 },
4096 "ansi-green": {
4097 "version": "0.1.1",
4098 "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz",
4099 "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=",
4100 "requires": {
4101 "ansi-wrap": "0.1.0"
4102 }
4103 },
4104 "ansi-grey": {
4105 "version": "0.1.1",
4106 "resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz",
4107 "integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=",
4108 "requires": {
4109 "ansi-wrap": "0.1.0"
4110 }
4111 },
4112 "ansi-hidden": {
4113 "version": "0.1.1",
4114 "resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz",
4115 "integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=",
3621 "requires": { 4116 "requires": {
3622 "ansi-wrap": "0.1.0" 4117 "ansi-wrap": "0.1.0"
3623 } 4118 }
@@ -3628,6 +4123,30 @@
3628 "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", 4123 "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
3629 "dev": true 4124 "dev": true
3630 }, 4125 },
4126 "ansi-inverse": {
4127 "version": "0.1.1",
4128 "resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz",
4129 "integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=",
4130 "requires": {
4131 "ansi-wrap": "0.1.0"
4132 }
4133 },
4134 "ansi-italic": {
4135 "version": "0.1.1",
4136 "resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz",
4137 "integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=",
4138 "requires": {
4139 "ansi-wrap": "0.1.0"
4140 }
4141 },
4142 "ansi-magenta": {
4143 "version": "0.1.1",
4144 "resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz",
4145 "integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=",
4146 "requires": {
4147 "ansi-wrap": "0.1.0"
4148 }
4149 },
3631 "ansi-red": { 4150 "ansi-red": {
3632 "version": "0.1.1", 4151 "version": "0.1.1",
3633 "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", 4152 "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
@@ -3639,23 +4158,61 @@
3639 "ansi-regex": { 4158 "ansi-regex": {
3640 "version": "3.0.0", 4159 "version": "3.0.0",
3641 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 4160 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
3642 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 4161 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
3643 "dev": true 4162 },
4163 "ansi-reset": {
4164 "version": "0.1.1",
4165 "resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz",
4166 "integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=",
4167 "requires": {
4168 "ansi-wrap": "0.1.0"
4169 }
4170 },
4171 "ansi-strikethrough": {
4172 "version": "0.1.1",
4173 "resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz",
4174 "integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=",
4175 "requires": {
4176 "ansi-wrap": "0.1.0"
4177 }
3644 }, 4178 },
3645 "ansi-styles": { 4179 "ansi-styles": {
3646 "version": "3.2.1", 4180 "version": "3.2.1",
3647 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 4181 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
3648 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 4182 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
3649 "dev": true,
3650 "requires": { 4183 "requires": {
3651 "color-convert": "^1.9.0" 4184 "color-convert": "^1.9.0"
3652 } 4185 }
3653 }, 4186 },
4187 "ansi-underline": {
4188 "version": "0.1.1",
4189 "resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz",
4190 "integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=",
4191 "requires": {
4192 "ansi-wrap": "0.1.0"
4193 }
4194 },
4195 "ansi-white": {
4196 "version": "0.1.1",
4197 "resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz",
4198 "integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=",
4199 "requires": {
4200 "ansi-wrap": "0.1.0"
4201 }
4202 },
3654 "ansi-wrap": { 4203 "ansi-wrap": {
3655 "version": "0.1.0", 4204 "version": "0.1.0",
3656 "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", 4205 "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
3657 "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" 4206 "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
3658 }, 4207 },
4208 "ansi-yellow": {
4209 "version": "0.1.1",
4210 "resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz",
4211 "integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=",
4212 "requires": {
4213 "ansi-wrap": "0.1.0"
4214 }
4215 },
3659 "any-promise": { 4216 "any-promise": {
3660 "version": "1.3.0", 4217 "version": "1.3.0",
3661 "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 4218 "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@@ -3744,8 +4301,7 @@
3744 "aproba": { 4301 "aproba": {
3745 "version": "1.2.0", 4302 "version": "1.2.0",
3746 "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 4303 "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
3747 "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", 4304 "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
3748 "dev": true
3749 }, 4305 },
3750 "archy": { 4306 "archy": {
3751 "version": "1.0.0", 4307 "version": "1.0.0",
@@ -3757,7 +4313,6 @@
3757 "version": "1.1.5", 4313 "version": "1.1.5",
3758 "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", 4314 "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
3759 "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 4315 "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
3760 "dev": true,
3761 "requires": { 4316 "requires": {
3762 "delegates": "^1.0.0", 4317 "delegates": "^1.0.0",
3763 "readable-stream": "^2.0.6" 4318 "readable-stream": "^2.0.6"
@@ -3767,7 +4322,6 @@
3767 "version": "2.3.6", 4322 "version": "2.3.6",
3768 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 4323 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
3769 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 4324 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
3770 "dev": true,
3771 "requires": { 4325 "requires": {
3772 "core-util-is": "~1.0.0", 4326 "core-util-is": "~1.0.0",
3773 "inherits": "~2.0.3", 4327 "inherits": "~2.0.3",
@@ -3781,14 +4335,12 @@
3781 "safe-buffer": { 4335 "safe-buffer": {
3782 "version": "5.1.2", 4336 "version": "5.1.2",
3783 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 4337 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3784 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 4338 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
3785 "dev": true
3786 }, 4339 },
3787 "string_decoder": { 4340 "string_decoder": {
3788 "version": "1.1.1", 4341 "version": "1.1.1",
3789 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 4342 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
3790 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 4343 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
3791 "dev": true,
3792 "requires": { 4344 "requires": {
3793 "safe-buffer": "~5.1.0" 4345 "safe-buffer": "~5.1.0"
3794 } 4346 }
@@ -3841,6 +4393,14 @@
3841 "make-iterator": "^1.0.0" 4393 "make-iterator": "^1.0.0"
3842 } 4394 }
3843 }, 4395 },
4396 "arr-swap": {
4397 "version": "1.0.1",
4398 "resolved": "https://registry.npmjs.org/arr-swap/-/arr-swap-1.0.1.tgz",
4399 "integrity": "sha1-FHWQ7WX8gVvAf+8Jl8Llgj1kNTQ=",
4400 "requires": {
4401 "is-number": "^3.0.0"
4402 }
4403 },
3844 "arr-union": { 4404 "arr-union": {
3845 "version": "3.1.0", 4405 "version": "3.1.0",
3846 "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 4406 "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
@@ -3929,8 +4489,7 @@
3929 "array-slice": { 4489 "array-slice": {
3930 "version": "1.1.0", 4490 "version": "1.1.0",
3931 "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", 4491 "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
3932 "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", 4492 "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w=="
3933 "dev": true
3934 }, 4493 },
3935 "array-sort": { 4494 "array-sort": {
3936 "version": "1.0.0", 4495 "version": "1.0.0",
@@ -3969,8 +4528,7 @@
3969 "array-unique": { 4528 "array-unique": {
3970 "version": "0.3.2", 4529 "version": "0.3.2",
3971 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 4530 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
3972 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 4531 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
3973 "dev": true
3974 }, 4532 },
3975 "arraybuffer.slice": { 4533 "arraybuffer.slice": {
3976 "version": "0.0.6", 4534 "version": "0.0.6",
@@ -3993,7 +4551,6 @@
3993 "version": "0.2.4", 4551 "version": "0.2.4",
3994 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 4552 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
3995 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 4553 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
3996 "dev": true,
3997 "requires": { 4554 "requires": {
3998 "safer-buffer": "~2.1.0" 4555 "safer-buffer": "~2.1.0"
3999 } 4556 }
@@ -4039,8 +4596,7 @@
4039 "assert-plus": { 4596 "assert-plus": {
4040 "version": "1.0.0", 4597 "version": "1.0.0",
4041 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 4598 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
4042 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 4599 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
4043 "dev": true
4044 }, 4600 },
4045 "assign-symbols": { 4601 "assign-symbols": {
4046 "version": "1.0.0", 4602 "version": "1.0.0",
@@ -4111,8 +4667,7 @@
4111 "asynckit": { 4667 "asynckit": {
4112 "version": "0.4.0", 4668 "version": "0.4.0",
4113 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 4669 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
4114 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", 4670 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
4115 "dev": true
4116 }, 4671 },
4117 "atob": { 4672 "atob": {
4118 "version": "2.1.2", 4673 "version": "2.1.2",
@@ -4148,14 +4703,12 @@
4148 "aws-sign2": { 4703 "aws-sign2": {
4149 "version": "0.7.0", 4704 "version": "0.7.0",
4150 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 4705 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
4151 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", 4706 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
4152 "dev": true
4153 }, 4707 },
4154 "aws4": { 4708 "aws4": {
4155 "version": "1.8.0", 4709 "version": "1.8.0",
4156 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", 4710 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
4157 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", 4711 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
4158 "dev": true
4159 }, 4712 },
4160 "axobject-query": { 4713 "axobject-query": {
4161 "version": "2.0.2", 4714 "version": "2.0.2",
@@ -4403,7 +4956,6 @@
4403 "version": "0.11.2", 4956 "version": "0.11.2",
4404 "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 4957 "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
4405 "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 4958 "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
4406 "dev": true,
4407 "requires": { 4959 "requires": {
4408 "cache-base": "^1.0.1", 4960 "cache-base": "^1.0.1",
4409 "class-utils": "^0.3.5", 4961 "class-utils": "^0.3.5",
@@ -4418,7 +4970,6 @@
4418 "version": "1.0.0", 4970 "version": "1.0.0",
4419 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 4971 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
4420 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 4972 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
4421 "dev": true,
4422 "requires": { 4973 "requires": {
4423 "is-descriptor": "^1.0.0" 4974 "is-descriptor": "^1.0.0"
4424 } 4975 }
@@ -4427,7 +4978,6 @@
4427 "version": "1.0.0", 4978 "version": "1.0.0",
4428 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 4979 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
4429 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 4980 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
4430 "dev": true,
4431 "requires": { 4981 "requires": {
4432 "kind-of": "^6.0.0" 4982 "kind-of": "^6.0.0"
4433 } 4983 }
@@ -4436,7 +4986,6 @@
4436 "version": "1.0.0", 4986 "version": "1.0.0",
4437 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 4987 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
4438 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 4988 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
4439 "dev": true,
4440 "requires": { 4989 "requires": {
4441 "kind-of": "^6.0.0" 4990 "kind-of": "^6.0.0"
4442 } 4991 }
@@ -4445,7 +4994,6 @@
4445 "version": "1.0.2", 4994 "version": "1.0.2",
4446 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 4995 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
4447 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 4996 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
4448 "dev": true,
4449 "requires": { 4997 "requires": {
4450 "is-accessor-descriptor": "^1.0.0", 4998 "is-accessor-descriptor": "^1.0.0",
4451 "is-data-descriptor": "^1.0.0", 4999 "is-data-descriptor": "^1.0.0",
@@ -4472,6 +5020,21 @@
4472 "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", 5020 "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
4473 "dev": true 5021 "dev": true
4474 }, 5022 },
5023 "basic-auth": {
5024 "version": "2.0.1",
5025 "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
5026 "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
5027 "requires": {
5028 "safe-buffer": "5.1.2"
5029 },
5030 "dependencies": {
5031 "safe-buffer": {
5032 "version": "5.1.2",
5033 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
5034 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
5035 }
5036 }
5037 },
4475 "batch": { 5038 "batch": {
4476 "version": "0.5.1", 5039 "version": "0.5.1",
4477 "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.1.tgz", 5040 "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.1.tgz",
@@ -4482,11 +5045,15 @@
4482 "version": "1.0.2", 5045 "version": "1.0.2",
4483 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 5046 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
4484 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 5047 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
4485 "dev": true,
4486 "requires": { 5048 "requires": {
4487 "tweetnacl": "^0.14.3" 5049 "tweetnacl": "^0.14.3"
4488 } 5050 }
4489 }, 5051 },
5052 "bcryptjs": {
5053 "version": "2.4.3",
5054 "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
5055 "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
5056 },
4490 "beeper": { 5057 "beeper": {
4491 "version": "1.1.1", 5058 "version": "1.1.1",
4492 "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", 5059 "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
@@ -4528,6 +5095,53 @@
4528 "file-uri-to-path": "1.0.0" 5095 "file-uri-to-path": "1.0.0"
4529 } 5096 }
4530 }, 5097 },
5098 "bl": {
5099 "version": "1.2.2",
5100 "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
5101 "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
5102 "requires": {
5103 "readable-stream": "^2.3.5",
5104 "safe-buffer": "^5.1.1"
5105 },
5106 "dependencies": {
5107 "readable-stream": {
5108 "version": "2.3.6",
5109 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
5110 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
5111 "requires": {
5112 "core-util-is": "~1.0.0",
5113 "inherits": "~2.0.3",
5114 "isarray": "~1.0.0",
5115 "process-nextick-args": "~2.0.0",
5116 "safe-buffer": "~5.1.1",
5117 "string_decoder": "~1.1.1",
5118 "util-deprecate": "~1.0.1"
5119 },
5120 "dependencies": {
5121 "safe-buffer": {
5122 "version": "5.1.2",
5123 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
5124 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
5125 }
5126 }
5127 },
5128 "string_decoder": {
5129 "version": "1.1.1",
5130 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
5131 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
5132 "requires": {
5133 "safe-buffer": "~5.1.0"
5134 },
5135 "dependencies": {
5136 "safe-buffer": {
5137 "version": "5.1.2",
5138 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
5139 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
5140 }
5141 }
5142 }
5143 }
5144 },
4531 "blob": { 5145 "blob": {
4532 "version": "0.0.4", 5146 "version": "0.0.4",
4533 "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", 5147 "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
@@ -4546,8 +5160,7 @@
4546 "bluebird": { 5160 "bluebird": {
4547 "version": "3.5.5", 5161 "version": "3.5.5",
4548 "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", 5162 "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
4549 "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", 5163 "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w=="
4550 "dev": true
4551 }, 5164 },
4552 "bluebird-lst": { 5165 "bluebird-lst": {
4553 "version": "1.0.9", 5166 "version": "1.0.9",
@@ -4718,7 +5331,6 @@
4718 "version": "2.3.2", 5331 "version": "2.3.2",
4719 "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 5332 "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
4720 "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 5333 "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
4721 "dev": true,
4722 "requires": { 5334 "requires": {
4723 "arr-flatten": "^1.1.0", 5335 "arr-flatten": "^1.1.0",
4724 "array-unique": "^0.3.2", 5336 "array-unique": "^0.3.2",
@@ -4736,7 +5348,6 @@
4736 "version": "2.0.1", 5348 "version": "2.0.1",
4737 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 5349 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
4738 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 5350 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
4739 "dev": true,
4740 "requires": { 5351 "requires": {
4741 "is-extendable": "^0.1.0" 5352 "is-extendable": "^0.1.0"
4742 } 5353 }
@@ -4874,6 +5485,16 @@
4874 "node-int64": "^0.4.0" 5485 "node-int64": "^0.4.0"
4875 } 5486 }
4876 }, 5487 },
5488 "bson": {
5489 "version": "1.1.1",
5490 "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz",
5491 "integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg=="
5492 },
5493 "btoa": {
5494 "version": "1.2.1",
5495 "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
5496 "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g=="
5497 },
4877 "btoa-lite": { 5498 "btoa-lite": {
4878 "version": "1.0.0", 5499 "version": "1.0.0",
4879 "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", 5500 "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
@@ -4891,6 +5512,20 @@
4891 "isarray": "^1.0.0" 5512 "isarray": "^1.0.0"
4892 } 5513 }
4893 }, 5514 },
5515 "buffer-alloc": {
5516 "version": "1.2.0",
5517 "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
5518 "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
5519 "requires": {
5520 "buffer-alloc-unsafe": "^1.1.0",
5521 "buffer-fill": "^1.0.0"
5522 }
5523 },
5524 "buffer-alloc-unsafe": {
5525 "version": "1.1.0",
5526 "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
5527 "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
5528 },
4894 "buffer-equal": { 5529 "buffer-equal": {
4895 "version": "1.0.0", 5530 "version": "1.0.0",
4896 "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", 5531 "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
@@ -4902,6 +5537,11 @@
4902 "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 5537 "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
4903 "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 5538 "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
4904 }, 5539 },
5540 "buffer-fill": {
5541 "version": "1.0.0",
5542 "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
5543 "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
5544 },
4905 "buffer-from": { 5545 "buffer-from": {
4906 "version": "1.1.1", 5546 "version": "1.1.1",
4907 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 5547 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -4995,8 +5635,7 @@
4995 "bytes": { 5635 "bytes": {
4996 "version": "3.0.0", 5636 "version": "3.0.0",
4997 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 5637 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
4998 "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", 5638 "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
4999 "dev": true
5000 }, 5639 },
5001 "cacache": { 5640 "cacache": {
5002 "version": "12.0.3", 5641 "version": "12.0.3",
@@ -5036,7 +5675,6 @@
5036 "version": "1.0.1", 5675 "version": "1.0.1",
5037 "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 5676 "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
5038 "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 5677 "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
5039 "dev": true,
5040 "requires": { 5678 "requires": {
5041 "collection-visit": "^1.0.0", 5679 "collection-visit": "^1.0.0",
5042 "component-emitter": "^1.2.1", 5680 "component-emitter": "^1.2.1",
@@ -5093,6 +5731,11 @@
5093 "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", 5731 "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
5094 "dev": true 5732 "dev": true
5095 }, 5733 },
5734 "caller": {
5735 "version": "1.0.1",
5736 "resolved": "https://registry.npmjs.org/caller/-/caller-1.0.1.tgz",
5737 "integrity": "sha1-uFGGD3Dhlds9J3OVqhp+I+ow7PU="
5738 },
5096 "caller-callsite": { 5739 "caller-callsite": {
5097 "version": "2.0.0", 5740 "version": "2.0.0",
5098 "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", 5741 "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
@@ -5114,7 +5757,6 @@
5114 "version": "0.1.0", 5757 "version": "0.1.0",
5115 "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 5758 "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
5116 "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 5759 "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
5117 "dev": true,
5118 "requires": { 5760 "requires": {
5119 "callsites": "^0.2.0" 5761 "callsites": "^0.2.0"
5120 } 5762 }
@@ -5128,8 +5770,7 @@
5128 "callsites": { 5770 "callsites": {
5129 "version": "0.2.0", 5771 "version": "0.2.0",
5130 "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 5772 "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
5131 "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 5773 "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo="
5132 "dev": true
5133 }, 5774 },
5134 "camel-case": { 5775 "camel-case": {
5135 "version": "3.0.0", 5776 "version": "3.0.0",
@@ -5183,8 +5824,7 @@
5183 "caseless": { 5824 "caseless": {
5184 "version": "0.12.0", 5825 "version": "0.12.0",
5185 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 5826 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
5186 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", 5827 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
5187 "dev": true
5188 }, 5828 },
5189 "chain-function": { 5829 "chain-function": {
5190 "version": "1.0.1", 5830 "version": "1.0.1",
@@ -5195,19 +5835,48 @@
5195 "version": "2.4.2", 5835 "version": "2.4.2",
5196 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 5836 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
5197 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 5837 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
5198 "dev": true,
5199 "requires": { 5838 "requires": {
5200 "ansi-styles": "^3.2.1", 5839 "ansi-styles": "^3.2.1",
5201 "escape-string-regexp": "^1.0.5", 5840 "escape-string-regexp": "^1.0.5",
5202 "supports-color": "^5.3.0" 5841 "supports-color": "^5.3.0"
5203 } 5842 }
5204 }, 5843 },
5844 "chance": {
5845 "version": "1.1.3",
5846 "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.3.tgz",
5847 "integrity": "sha512-XeJsdoVAzDb1WRPRuMBesRSiWpW1uNTo5Fd7mYxPJsAfgX71+jfuCOHOdbyBz2uAUZ8TwKcXgWk3DMedFfJkbg=="
5848 },
5205 "chardet": { 5849 "chardet": {
5206 "version": "0.7.0", 5850 "version": "0.7.0",
5207 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 5851 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
5208 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 5852 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
5209 "dev": true 5853 "dev": true
5210 }, 5854 },
5855 "choices-separator": {
5856 "version": "2.0.0",
5857 "resolved": "https://registry.npmjs.org/choices-separator/-/choices-separator-2.0.0.tgz",
5858 "integrity": "sha1-kv0XYxgteQM/XFxR0Lo1LlVnxpY=",
5859 "requires": {
5860 "ansi-dim": "^0.1.1",
5861 "debug": "^2.6.6",
5862 "strip-color": "^0.1.0"
5863 },
5864 "dependencies": {
5865 "debug": {
5866 "version": "2.6.9",
5867 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
5868 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
5869 "requires": {
5870 "ms": "2.0.0"
5871 }
5872 },
5873 "ms": {
5874 "version": "2.0.0",
5875 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
5876 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
5877 }
5878 }
5879 },
5211 "chokidar": { 5880 "chokidar": {
5212 "version": "2.1.8", 5881 "version": "2.1.8",
5213 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", 5882 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
@@ -5282,7 +5951,6 @@
5282 "version": "0.3.6", 5951 "version": "0.3.6",
5283 "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 5952 "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
5284 "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 5953 "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
5285 "dev": true,
5286 "requires": { 5954 "requires": {
5287 "arr-union": "^3.1.0", 5955 "arr-union": "^3.1.0",
5288 "define-property": "^0.2.5", 5956 "define-property": "^0.2.5",
@@ -5294,7 +5962,6 @@
5294 "version": "0.2.5", 5962 "version": "0.2.5",
5295 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 5963 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
5296 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 5964 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
5297 "dev": true,
5298 "requires": { 5965 "requires": {
5299 "is-descriptor": "^0.1.0" 5966 "is-descriptor": "^0.1.0"
5300 } 5967 }
@@ -5345,6 +6012,21 @@
5345 "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", 6012 "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==",
5346 "dev": true 6013 "dev": true
5347 }, 6014 },
6015 "cli-table": {
6016 "version": "0.3.1",
6017 "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
6018 "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
6019 "requires": {
6020 "colors": "1.0.3"
6021 },
6022 "dependencies": {
6023 "colors": {
6024 "version": "1.0.3",
6025 "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
6026 "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
6027 }
6028 }
6029 },
5348 "cli-width": { 6030 "cli-width": {
5349 "version": "2.2.0", 6031 "version": "2.2.0",
5350 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 6032 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
@@ -5374,6 +6056,24 @@
5374 "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", 6056 "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
5375 "dev": true 6057 "dev": true
5376 }, 6058 },
6059 "clone-deep": {
6060 "version": "1.0.0",
6061 "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz",
6062 "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==",
6063 "requires": {
6064 "for-own": "^1.0.0",
6065 "is-plain-object": "^2.0.4",
6066 "kind-of": "^5.0.0",
6067 "shallow-clone": "^1.0.0"
6068 },
6069 "dependencies": {
6070 "kind-of": {
6071 "version": "5.1.0",
6072 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
6073 "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
6074 }
6075 }
6076 },
5377 "clone-response": { 6077 "clone-response": {
5378 "version": "1.0.2", 6078 "version": "1.0.2",
5379 "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 6079 "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
@@ -5443,11 +6143,29 @@
5443 "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 6143 "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
5444 "dev": true 6144 "dev": true
5445 }, 6145 },
6146 "co-body": {
6147 "version": "6.0.0",
6148 "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.0.0.tgz",
6149 "integrity": "sha512-9ZIcixguuuKIptnY8yemEOuhb71L/lLf+Rl5JfJEUiDNJk0e02MBt7BPxR2GEh5mw8dPthQYR4jPI/BnS1MQgw==",
6150 "requires": {
6151 "inflation": "^2.0.0",
6152 "qs": "^6.5.2",
6153 "raw-body": "^2.3.3",
6154 "type-is": "^1.6.16"
6155 }
6156 },
6157 "co-compose": {
6158 "version": "4.0.0",
6159 "resolved": "https://registry.npmjs.org/co-compose/-/co-compose-4.0.0.tgz",
6160 "integrity": "sha512-0wXLbbbkU49Pyj7Fjfu58wIoeLgyyRau3huJfxEimmytzI7M+o1XhK2ls872PjpOzyvw0U3KGLqxrIst8IHaWA==",
6161 "requires": {
6162 "once": "^1.4.0"
6163 }
6164 },
5446 "code-point-at": { 6165 "code-point-at": {
5447 "version": "1.1.0", 6166 "version": "1.1.0",
5448 "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 6167 "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
5449 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 6168 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
5450 "dev": true
5451 }, 6169 },
5452 "collection-map": { 6170 "collection-map": {
5453 "version": "1.0.0", 6171 "version": "1.0.0",
@@ -5464,7 +6182,6 @@
5464 "version": "1.0.0", 6182 "version": "1.0.0",
5465 "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 6183 "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
5466 "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 6184 "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
5467 "dev": true,
5468 "requires": { 6185 "requires": {
5469 "map-visit": "^1.0.0", 6186 "map-visit": "^1.0.0",
5470 "object-visit": "^1.0.0" 6187 "object-visit": "^1.0.0"
@@ -5507,11 +6224,35 @@
5507 "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 6224 "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
5508 "dev": true 6225 "dev": true
5509 }, 6226 },
6227 "colornames": {
6228 "version": "1.1.1",
6229 "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz",
6230 "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y="
6231 },
5510 "colors": { 6232 "colors": {
5511 "version": "1.4.0", 6233 "version": "1.4.0",
5512 "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 6234 "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
5513 "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 6235 "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
5514 "dev": true 6236 },
6237 "colorspace": {
6238 "version": "1.1.2",
6239 "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
6240 "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
6241 "requires": {
6242 "color": "3.0.x",
6243 "text-hex": "1.0.x"
6244 },
6245 "dependencies": {
6246 "color": {
6247 "version": "3.0.0",
6248 "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
6249 "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
6250 "requires": {
6251 "color-convert": "^1.9.1",
6252 "color-string": "^1.5.2"
6253 }
6254 }
6255 }
5515 }, 6256 },
5516 "columnify": { 6257 "columnify": {
5517 "version": "1.5.4", 6258 "version": "1.5.4",
@@ -5544,7 +6285,6 @@
5544 "version": "1.0.8", 6285 "version": "1.0.8",
5545 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 6286 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
5546 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 6287 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
5547 "dev": true,
5548 "requires": { 6288 "requires": {
5549 "delayed-stream": "~1.0.0" 6289 "delayed-stream": "~1.0.0"
5550 } 6290 }
@@ -5579,8 +6319,7 @@
5579 "component-emitter": { 6319 "component-emitter": {
5580 "version": "1.3.0", 6320 "version": "1.3.0",
5581 "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 6321 "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
5582 "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 6322 "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
5583 "dev": true
5584 }, 6323 },
5585 "component-inherit": { 6324 "component-inherit": {
5586 "version": "0.0.3", 6325 "version": "0.0.3",
@@ -5843,8 +6582,7 @@
5843 "console-control-strings": { 6582 "console-control-strings": {
5844 "version": "1.1.0", 6583 "version": "1.1.0",
5845 "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 6584 "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
5846 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", 6585 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
5847 "dev": true
5848 }, 6586 },
5849 "constants-browserify": { 6587 "constants-browserify": {
5850 "version": "1.0.0", 6588 "version": "1.0.0",
@@ -5862,7 +6600,6 @@
5862 "version": "0.5.3", 6600 "version": "0.5.3",
5863 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 6601 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
5864 "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 6602 "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
5865 "dev": true,
5866 "requires": { 6603 "requires": {
5867 "safe-buffer": "5.1.2" 6604 "safe-buffer": "5.1.2"
5868 }, 6605 },
@@ -5870,8 +6607,7 @@
5870 "safe-buffer": { 6607 "safe-buffer": {
5871 "version": "5.1.2", 6608 "version": "5.1.2",
5872 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 6609 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
5873 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 6610 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
5874 "dev": true
5875 } 6611 }
5876 } 6612 }
5877 }, 6613 },
@@ -6160,8 +6896,7 @@
6160 "cookie": { 6896 "cookie": {
6161 "version": "0.3.1", 6897 "version": "0.3.1",
6162 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 6898 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
6163 "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", 6899 "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
6164 "dev": true
6165 }, 6900 },
6166 "cookie-signature": { 6901 "cookie-signature": {
6167 "version": "1.0.6", 6902 "version": "1.0.6",
@@ -6186,8 +6921,7 @@
6186 "copy-descriptor": { 6921 "copy-descriptor": {
6187 "version": "0.1.1", 6922 "version": "0.1.1",
6188 "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 6923 "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
6189 "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 6924 "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
6190 "dev": true
6191 }, 6925 },
6192 "copy-props": { 6926 "copy-props": {
6193 "version": "2.0.4", 6927 "version": "2.0.4",
@@ -6276,6 +7010,14 @@
6276 "sha.js": "^2.4.8" 7010 "sha.js": "^2.4.8"
6277 } 7011 }
6278 }, 7012 },
7013 "create-output-stream": {
7014 "version": "0.0.1",
7015 "resolved": "https://registry.npmjs.org/create-output-stream/-/create-output-stream-0.0.1.tgz",
7016 "integrity": "sha1-4Kwx4n3v6uDk9pnA7bnGVYyfpas=",
7017 "requires": {
7018 "mkdirp": "^0.5.1"
7019 }
7020 },
6279 "create-react-class": { 7021 "create-react-class": {
6280 "version": "15.6.3", 7022 "version": "15.6.3",
6281 "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", 7023 "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
@@ -6290,7 +7032,6 @@
6290 "version": "5.2.1", 7032 "version": "5.2.1",
6291 "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", 7033 "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz",
6292 "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", 7034 "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==",
6293 "dev": true,
6294 "requires": { 7035 "requires": {
6295 "cross-spawn": "^6.0.5" 7036 "cross-spawn": "^6.0.5"
6296 } 7037 }
@@ -6299,7 +7040,6 @@
6299 "version": "6.0.5", 7040 "version": "6.0.5",
6300 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 7041 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
6301 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 7042 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
6302 "dev": true,
6303 "requires": { 7043 "requires": {
6304 "nice-try": "^1.0.4", 7044 "nice-try": "^1.0.4",
6305 "path-key": "^2.0.1", 7045 "path-key": "^2.0.1",
@@ -6333,6 +7073,16 @@
6333 "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", 7073 "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
6334 "dev": true 7074 "dev": true
6335 }, 7075 },
7076 "csrf": {
7077 "version": "3.1.0",
7078 "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz",
7079 "integrity": "sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==",
7080 "requires": {
7081 "rndm": "1.2.0",
7082 "tsscmp": "1.0.6",
7083 "uid-safe": "2.1.5"
7084 }
7085 },
6336 "css": { 7086 "css": {
6337 "version": "2.2.4", 7087 "version": "2.2.4",
6338 "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", 7088 "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
@@ -6491,7 +7241,6 @@
6491 "version": "1.14.1", 7241 "version": "1.14.1",
6492 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 7242 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
6493 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 7243 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
6494 "dev": true,
6495 "requires": { 7244 "requires": {
6496 "assert-plus": "^1.0.0" 7245 "assert-plus": "^1.0.0"
6497 } 7246 }
@@ -6613,8 +7362,7 @@
6613 "deep-extend": { 7362 "deep-extend": {
6614 "version": "0.6.0", 7363 "version": "0.6.0",
6615 "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 7364 "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
6616 "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 7365 "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
6617 "dev": true
6618 }, 7366 },
6619 "deep-is": { 7367 "deep-is": {
6620 "version": "0.1.3", 7368 "version": "0.1.3",
@@ -6706,7 +7454,6 @@
6706 "version": "2.0.2", 7454 "version": "2.0.2",
6707 "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 7455 "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
6708 "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 7456 "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
6709 "dev": true,
6710 "requires": { 7457 "requires": {
6711 "is-descriptor": "^1.0.2", 7458 "is-descriptor": "^1.0.2",
6712 "isobject": "^3.0.1" 7459 "isobject": "^3.0.1"
@@ -6716,7 +7463,6 @@
6716 "version": "1.0.0", 7463 "version": "1.0.0",
6717 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 7464 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
6718 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 7465 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
6719 "dev": true,
6720 "requires": { 7466 "requires": {
6721 "kind-of": "^6.0.0" 7467 "kind-of": "^6.0.0"
6722 } 7468 }
@@ -6725,7 +7471,6 @@
6725 "version": "1.0.0", 7471 "version": "1.0.0",
6726 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 7472 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
6727 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 7473 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
6728 "dev": true,
6729 "requires": { 7474 "requires": {
6730 "kind-of": "^6.0.0" 7475 "kind-of": "^6.0.0"
6731 } 7476 }
@@ -6734,7 +7479,6 @@
6734 "version": "1.0.2", 7479 "version": "1.0.2",
6735 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 7480 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
6736 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 7481 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
6737 "dev": true,
6738 "requires": { 7482 "requires": {
6739 "is-accessor-descriptor": "^1.0.0", 7483 "is-accessor-descriptor": "^1.0.0",
6740 "is-data-descriptor": "^1.0.0", 7484 "is-data-descriptor": "^1.0.0",
@@ -6789,14 +7533,12 @@
6789 "delayed-stream": { 7533 "delayed-stream": {
6790 "version": "1.0.0", 7534 "version": "1.0.0",
6791 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 7535 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
6792 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 7536 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
6793 "dev": true
6794 }, 7537 },
6795 "delegates": { 7538 "delegates": {
6796 "version": "1.0.0", 7539 "version": "1.0.0",
6797 "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 7540 "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
6798 "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", 7541 "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
6799 "dev": true
6800 }, 7542 },
6801 "depd": { 7543 "depd": {
6802 "version": "0.4.4", 7544 "version": "0.4.4",
@@ -6829,8 +7571,7 @@
6829 "detect-file": { 7571 "detect-file": {
6830 "version": "1.0.0", 7572 "version": "1.0.0",
6831 "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", 7573 "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
6832 "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", 7574 "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc="
6833 "dev": true
6834 }, 7575 },
6835 "detect-indent": { 7576 "detect-indent": {
6836 "version": "5.0.0", 7577 "version": "5.0.0",
@@ -6841,8 +7582,7 @@
6841 "detect-libc": { 7582 "detect-libc": {
6842 "version": "1.0.3", 7583 "version": "1.0.3",
6843 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 7584 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
6844 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", 7585 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
6845 "dev": true
6846 }, 7586 },
6847 "detect-newline": { 7587 "detect-newline": {
6848 "version": "2.1.0", 7588 "version": "2.1.0",
@@ -6866,6 +7606,16 @@
6866 "wrappy": "1" 7606 "wrappy": "1"
6867 } 7607 }
6868 }, 7608 },
7609 "diagnostics": {
7610 "version": "1.1.1",
7611 "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
7612 "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==",
7613 "requires": {
7614 "colorspace": "1.1.x",
7615 "enabled": "1.0.x",
7616 "kuler": "1.0.x"
7617 }
7618 },
6869 "didyoumean": { 7619 "didyoumean": {
6870 "version": "1.2.1", 7620 "version": "1.2.1",
6871 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz", 7621 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz",
@@ -7184,7 +7934,6 @@
7184 "version": "0.1.2", 7934 "version": "0.1.2",
7185 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 7935 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
7186 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 7936 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
7187 "dev": true,
7188 "requires": { 7937 "requires": {
7189 "jsbn": "~0.1.0", 7938 "jsbn": "~0.1.0",
7190 "safer-buffer": "^2.1.0" 7939 "safer-buffer": "^2.1.0"
@@ -7198,6 +7947,37 @@
7198 "safe-buffer": "^5.0.1" 7947 "safe-buffer": "^5.0.1"
7199 } 7948 }
7200 }, 7949 },
7950 "edge.js": {
7951 "version": "1.1.4",
7952 "resolved": "https://registry.npmjs.org/edge.js/-/edge.js-1.1.4.tgz",
7953 "integrity": "sha512-IF4RTNf15KLsn99nTDU90SMZ4fiCcN1WD5kTAB9jOdjx/HEPa3vf/Z+zDOMi6n7d4R0ypm4PzSRuhbIAHmEYcg==",
7954 "requires": {
7955 "debug": "^3.1.0",
7956 "encodeurl": "^1.0.2",
7957 "escape-html": "^1.0.3",
7958 "esprima": "^4.0.0",
7959 "indent-string": "^3.2.0",
7960 "lodash": "^4.17.4",
7961 "node-exceptions": "^3.0.0",
7962 "require-uncached": "^1.0.3",
7963 "upcast": "^2.1.1"
7964 },
7965 "dependencies": {
7966 "debug": {
7967 "version": "3.2.6",
7968 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
7969 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
7970 "requires": {
7971 "ms": "^2.1.1"
7972 }
7973 },
7974 "escape-html": {
7975 "version": "1.0.3",
7976 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
7977 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
7978 }
7979 }
7980 },
7201 "ee-first": { 7981 "ee-first": {
7202 "version": "1.0.5", 7982 "version": "1.0.5",
7203 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz", 7983 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz",
@@ -7736,11 +8516,18 @@
7736 "tslib": "^1.8.0" 8516 "tslib": "^1.8.0"
7737 } 8517 }
7738 }, 8518 },
8519 "enabled": {
8520 "version": "1.0.2",
8521 "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz",
8522 "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=",
8523 "requires": {
8524 "env-variable": "0.0.x"
8525 }
8526 },
7739 "encodeurl": { 8527 "encodeurl": {
7740 "version": "1.0.2", 8528 "version": "1.0.2",
7741 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 8529 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
7742 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 8530 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
7743 "dev": true
7744 }, 8531 },
7745 "encoding": { 8532 "encoding": {
7746 "version": "0.1.12", 8533 "version": "0.1.12",
@@ -7893,6 +8680,59 @@
7893 "tapable": "^1.0.0" 8680 "tapable": "^1.0.0"
7894 } 8681 }
7895 }, 8682 },
8683 "enquirer": {
8684 "version": "1.0.3",
8685 "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-1.0.3.tgz",
8686 "integrity": "sha512-3y9zemKlEhH6oW/WBrqofpc2JLtFkoolvWFFTTMPVede1lQ/E83xjdaE4L82RJCYgaiGB5ctjHX/BRbVk2iuJA==",
8687 "requires": {
8688 "choices-separator": "^2.0.0",
8689 "collection-visit": "^1.0.0",
8690 "component-emitter": "^1.2.1",
8691 "debug": "^2.6.8",
8692 "extend-shallow": "^2.0.1",
8693 "get-value": "^2.0.6",
8694 "isobject": "^3.0.0",
8695 "promise-reduce": "^2.1.0",
8696 "prompt-input": "^3.0.0",
8697 "prompt-question": "^3.0.3",
8698 "readline-ui": "^2.2.2",
8699 "set-value": "^1.0.0"
8700 },
8701 "dependencies": {
8702 "debug": {
8703 "version": "2.6.9",
8704 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
8705 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
8706 "requires": {
8707 "ms": "2.0.0"
8708 }
8709 },
8710 "extend-shallow": {
8711 "version": "2.0.1",
8712 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
8713 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
8714 "requires": {
8715 "is-extendable": "^0.1.0"
8716 }
8717 },
8718 "ms": {
8719 "version": "2.0.0",
8720 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
8721 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
8722 },
8723 "set-value": {
8724 "version": "1.0.0",
8725 "resolved": "https://registry.npmjs.org/set-value/-/set-value-1.0.0.tgz",
8726 "integrity": "sha1-vMdvcaDx4HokuYfQoCr+yfZlME8=",
8727 "requires": {
8728 "extend-shallow": "^2.0.1",
8729 "is-extendable": "^0.1.1",
8730 "is-plain-object": "^2.0.1",
8731 "to-object-path": "^0.3.0"
8732 }
8733 }
8734 }
8735 },
7896 "entities": { 8736 "entities": {
7897 "version": "1.1.2", 8737 "version": "1.1.2",
7898 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 8738 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
@@ -7904,6 +8744,11 @@
7904 "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", 8744 "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=",
7905 "dev": true 8745 "dev": true
7906 }, 8746 },
8747 "env-variable": {
8748 "version": "0.0.5",
8749 "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz",
8750 "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA=="
8751 },
7907 "err-code": { 8752 "err-code": {
7908 "version": "1.1.2", 8753 "version": "1.1.2",
7909 "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", 8754 "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
@@ -7936,6 +8781,11 @@
7936 } 8781 }
7937 } 8782 }
7938 }, 8783 },
8784 "error-symbol": {
8785 "version": "0.1.0",
8786 "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz",
8787 "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y="
8788 },
7939 "es-abstract": { 8789 "es-abstract": {
7940 "version": "1.14.2", 8790 "version": "1.14.2",
7941 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", 8791 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz",
@@ -8029,8 +8879,7 @@
8029 "escape-string-regexp": { 8879 "escape-string-regexp": {
8030 "version": "1.0.5", 8880 "version": "1.0.5",
8031 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 8881 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
8032 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 8882 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
8033 "dev": true
8034 }, 8883 },
8035 "escodegen": { 8884 "escodegen": {
8036 "version": "1.12.0", 8885 "version": "1.12.0",
@@ -8461,8 +9310,7 @@
8461 "etag": { 9310 "etag": {
8462 "version": "1.8.1", 9311 "version": "1.8.1",
8463 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 9312 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
8464 "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 9313 "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
8465 "dev": true
8466 }, 9314 },
8467 "event-emitter": { 9315 "event-emitter": {
8468 "version": "0.3.5", 9316 "version": "0.3.5",
@@ -8473,6 +9321,11 @@
8473 "es5-ext": "~0.10.14" 9321 "es5-ext": "~0.10.14"
8474 } 9322 }
8475 }, 9323 },
9324 "eventemitter2": {
9325 "version": "5.0.1",
9326 "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz",
9327 "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI="
9328 },
8476 "eventemitter3": { 9329 "eventemitter3": {
8477 "version": "3.1.2", 9330 "version": "3.1.2",
8478 "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", 9331 "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
@@ -8540,7 +9393,6 @@
8540 "version": "2.1.4", 9393 "version": "2.1.4",
8541 "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 9394 "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
8542 "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 9395 "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
8543 "dev": true,
8544 "requires": { 9396 "requires": {
8545 "debug": "^2.3.3", 9397 "debug": "^2.3.3",
8546 "define-property": "^0.2.5", 9398 "define-property": "^0.2.5",
@@ -8555,7 +9407,6 @@
8555 "version": "2.6.9", 9407 "version": "2.6.9",
8556 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 9408 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
8557 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 9409 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
8558 "dev": true,
8559 "requires": { 9410 "requires": {
8560 "ms": "2.0.0" 9411 "ms": "2.0.0"
8561 } 9412 }
@@ -8564,7 +9415,6 @@
8564 "version": "0.2.5", 9415 "version": "0.2.5",
8565 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 9416 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
8566 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 9417 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
8567 "dev": true,
8568 "requires": { 9418 "requires": {
8569 "is-descriptor": "^0.1.0" 9419 "is-descriptor": "^0.1.0"
8570 } 9420 }
@@ -8573,7 +9423,6 @@
8573 "version": "2.0.1", 9423 "version": "2.0.1",
8574 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 9424 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
8575 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 9425 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
8576 "dev": true,
8577 "requires": { 9426 "requires": {
8578 "is-extendable": "^0.1.0" 9427 "is-extendable": "^0.1.0"
8579 } 9428 }
@@ -8581,8 +9430,7 @@
8581 "ms": { 9430 "ms": {
8582 "version": "2.0.0", 9431 "version": "2.0.0",
8583 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 9432 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
8584 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 9433 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
8585 "dev": true
8586 } 9434 }
8587 } 9435 }
8588 }, 9436 },
@@ -8641,7 +9489,6 @@
8641 "version": "2.0.2", 9489 "version": "2.0.2",
8642 "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 9490 "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
8643 "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 9491 "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
8644 "dev": true,
8645 "requires": { 9492 "requires": {
8646 "homedir-polyfill": "^1.0.1" 9493 "homedir-polyfill": "^1.0.1"
8647 } 9494 }
@@ -8909,8 +9756,7 @@
8909 "extend": { 9756 "extend": {
8910 "version": "3.0.2", 9757 "version": "3.0.2",
8911 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 9758 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
8912 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 9759 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
8913 "dev": true
8914 }, 9760 },
8915 "extend-shallow": { 9761 "extend-shallow": {
8916 "version": "3.0.2", 9762 "version": "3.0.2",
@@ -8946,7 +9792,6 @@
8946 "version": "2.0.4", 9792 "version": "2.0.4",
8947 "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 9793 "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
8948 "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 9794 "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
8949 "dev": true,
8950 "requires": { 9795 "requires": {
8951 "array-unique": "^0.3.2", 9796 "array-unique": "^0.3.2",
8952 "define-property": "^1.0.0", 9797 "define-property": "^1.0.0",
@@ -8962,7 +9807,6 @@
8962 "version": "1.0.0", 9807 "version": "1.0.0",
8963 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 9808 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
8964 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 9809 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
8965 "dev": true,
8966 "requires": { 9810 "requires": {
8967 "is-descriptor": "^1.0.0" 9811 "is-descriptor": "^1.0.0"
8968 } 9812 }
@@ -8971,7 +9815,6 @@
8971 "version": "2.0.1", 9815 "version": "2.0.1",
8972 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 9816 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
8973 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 9817 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
8974 "dev": true,
8975 "requires": { 9818 "requires": {
8976 "is-extendable": "^0.1.0" 9819 "is-extendable": "^0.1.0"
8977 } 9820 }
@@ -8980,7 +9823,6 @@
8980 "version": "1.0.0", 9823 "version": "1.0.0",
8981 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 9824 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
8982 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 9825 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
8983 "dev": true,
8984 "requires": { 9826 "requires": {
8985 "kind-of": "^6.0.0" 9827 "kind-of": "^6.0.0"
8986 } 9828 }
@@ -8989,7 +9831,6 @@
8989 "version": "1.0.0", 9831 "version": "1.0.0",
8990 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 9832 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
8991 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 9833 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
8992 "dev": true,
8993 "requires": { 9834 "requires": {
8994 "kind-of": "^6.0.0" 9835 "kind-of": "^6.0.0"
8995 } 9836 }
@@ -8998,7 +9839,6 @@
8998 "version": "1.0.2", 9839 "version": "1.0.2",
8999 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 9840 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
9000 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 9841 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
9001 "dev": true,
9002 "requires": { 9842 "requires": {
9003 "is-accessor-descriptor": "^1.0.0", 9843 "is-accessor-descriptor": "^1.0.0",
9004 "is-data-descriptor": "^1.0.0", 9844 "is-data-descriptor": "^1.0.0",
@@ -9039,8 +9879,7 @@
9039 "extsprintf": { 9879 "extsprintf": {
9040 "version": "1.3.0", 9880 "version": "1.3.0",
9041 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 9881 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
9042 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", 9882 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
9043 "dev": true
9044 }, 9883 },
9045 "fancy-log": { 9884 "fancy-log": {
9046 "version": "1.3.3", 9885 "version": "1.3.3",
@@ -9057,8 +9896,7 @@
9057 "fast-deep-equal": { 9896 "fast-deep-equal": {
9058 "version": "2.0.1", 9897 "version": "2.0.1",
9059 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 9898 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
9060 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 9899 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
9061 "dev": true
9062 }, 9900 },
9063 "fast-glob": { 9901 "fast-glob": {
9064 "version": "2.2.7", 9902 "version": "2.2.7",
@@ -9077,14 +9915,17 @@
9077 "fast-json-stable-stringify": { 9915 "fast-json-stable-stringify": {
9078 "version": "2.0.0", 9916 "version": "2.0.0",
9079 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 9917 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
9080 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 9918 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
9081 "dev": true
9082 }, 9919 },
9083 "fast-levenshtein": { 9920 "fast-levenshtein": {
9084 "version": "2.0.6", 9921 "version": "2.0.6",
9085 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 9922 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
9086 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 9923 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
9087 "dev": true 9924 },
9925 "fast-safe-stringify": {
9926 "version": "2.0.7",
9927 "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
9928 "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
9088 }, 9929 },
9089 "faye-websocket": { 9930 "faye-websocket": {
9090 "version": "0.10.0", 9931 "version": "0.10.0",
@@ -9134,6 +9975,11 @@
9134 "pend": "~1.2.0" 9975 "pend": "~1.2.0"
9135 } 9976 }
9136 }, 9977 },
9978 "fecha": {
9979 "version": "2.3.3",
9980 "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
9981 "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
9982 },
9137 "figgy-pudding": { 9983 "figgy-pudding": {
9138 "version": "3.5.1", 9984 "version": "3.5.1",
9139 "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", 9985 "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
@@ -9174,7 +10020,6 @@
9174 "version": "4.0.0", 10020 "version": "4.0.0",
9175 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 10021 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
9176 "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 10022 "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
9177 "dev": true,
9178 "requires": { 10023 "requires": {
9179 "extend-shallow": "^2.0.1", 10024 "extend-shallow": "^2.0.1",
9180 "is-number": "^3.0.0", 10025 "is-number": "^3.0.0",
@@ -9186,7 +10031,6 @@
9186 "version": "2.0.1", 10031 "version": "2.0.1",
9187 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 10032 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
9188 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 10033 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
9189 "dev": true,
9190 "requires": { 10034 "requires": {
9191 "is-extendable": "^0.1.0" 10035 "is-extendable": "^0.1.0"
9192 } 10036 }
@@ -9262,7 +10106,6 @@
9262 "version": "1.2.0", 10106 "version": "1.2.0",
9263 "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", 10107 "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
9264 "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", 10108 "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
9265 "dev": true,
9266 "requires": { 10109 "requires": {
9267 "expand-tilde": "^2.0.2", 10110 "expand-tilde": "^2.0.2",
9268 "is-plain-object": "^2.0.3", 10111 "is-plain-object": "^2.0.3",
@@ -9280,8 +10123,7 @@
9280 "flagged-respawn": { 10123 "flagged-respawn": {
9281 "version": "1.0.1", 10124 "version": "1.0.1",
9282 "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", 10125 "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
9283 "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", 10126 "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q=="
9284 "dev": true
9285 }, 10127 },
9286 "flat-cache": { 10128 "flat-cache": {
9287 "version": "1.3.4", 10129 "version": "1.3.4",
@@ -9371,14 +10213,12 @@
9371 "for-in": { 10213 "for-in": {
9372 "version": "1.0.2", 10214 "version": "1.0.2",
9373 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 10215 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
9374 "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 10216 "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
9375 "dev": true
9376 }, 10217 },
9377 "for-own": { 10218 "for-own": {
9378 "version": "1.0.0", 10219 "version": "1.0.0",
9379 "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 10220 "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
9380 "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 10221 "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
9381 "dev": true,
9382 "requires": { 10222 "requires": {
9383 "for-in": "^1.0.1" 10223 "for-in": "^1.0.1"
9384 } 10224 }
@@ -9386,8 +10226,7 @@
9386 "forever-agent": { 10226 "forever-agent": {
9387 "version": "0.6.1", 10227 "version": "0.6.1",
9388 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 10228 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
9389 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", 10229 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
9390 "dev": true
9391 }, 10230 },
9392 "fork-stream": { 10231 "fork-stream": {
9393 "version": "0.0.4", 10232 "version": "0.0.4",
@@ -9398,7 +10237,6 @@
9398 "version": "2.3.3", 10237 "version": "2.3.3",
9399 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 10238 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
9400 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 10239 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
9401 "dev": true,
9402 "requires": { 10240 "requires": {
9403 "asynckit": "^0.4.0", 10241 "asynckit": "^0.4.0",
9404 "combined-stream": "^1.0.6", 10242 "combined-stream": "^1.0.6",
@@ -9408,14 +10246,12 @@
9408 "forwarded": { 10246 "forwarded": {
9409 "version": "0.1.2", 10247 "version": "0.1.2",
9410 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 10248 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
9411 "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", 10249 "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
9412 "dev": true
9413 }, 10250 },
9414 "fragment-cache": { 10251 "fragment-cache": {
9415 "version": "0.2.1", 10252 "version": "0.2.1",
9416 "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 10253 "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
9417 "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 10254 "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
9418 "dev": true,
9419 "requires": { 10255 "requires": {
9420 "map-cache": "^0.2.2" 10256 "map-cache": "^0.2.2"
9421 } 10257 }
@@ -9468,6 +10304,11 @@
9468 } 10304 }
9469 } 10305 }
9470 }, 10306 },
10307 "fs-constants": {
10308 "version": "1.0.0",
10309 "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
10310 "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
10311 },
9471 "fs-extra": { 10312 "fs-extra": {
9472 "version": "7.0.1", 10313 "version": "7.0.1",
9473 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", 10314 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
@@ -9591,8 +10432,7 @@
9591 "fs.realpath": { 10432 "fs.realpath": {
9592 "version": "1.0.0", 10433 "version": "1.0.0",
9593 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 10434 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
9594 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 10435 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
9595 "dev": true
9596 }, 10436 },
9597 "fsevents": { 10437 "fsevents": {
9598 "version": "1.2.9", 10438 "version": "1.2.9",
@@ -10236,7 +11076,6 @@
10236 "version": "2.7.4", 11076 "version": "2.7.4",
10237 "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 11077 "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
10238 "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 11078 "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
10239 "dev": true,
10240 "requires": { 11079 "requires": {
10241 "aproba": "^1.0.3", 11080 "aproba": "^1.0.3",
10242 "console-control-strings": "^1.0.0", 11081 "console-control-strings": "^1.0.0",
@@ -10251,14 +11090,12 @@
10251 "ansi-regex": { 11090 "ansi-regex": {
10252 "version": "2.1.1", 11091 "version": "2.1.1",
10253 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 11092 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
10254 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 11093 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
10255 "dev": true
10256 }, 11094 },
10257 "is-fullwidth-code-point": { 11095 "is-fullwidth-code-point": {
10258 "version": "1.0.0", 11096 "version": "1.0.0",
10259 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 11097 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
10260 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 11098 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
10261 "dev": true,
10262 "requires": { 11099 "requires": {
10263 "number-is-nan": "^1.0.0" 11100 "number-is-nan": "^1.0.0"
10264 } 11101 }
@@ -10267,7 +11104,6 @@
10267 "version": "1.0.2", 11104 "version": "1.0.2",
10268 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 11105 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
10269 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 11106 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
10270 "dev": true,
10271 "requires": { 11107 "requires": {
10272 "code-point-at": "^1.0.0", 11108 "code-point-at": "^1.0.0",
10273 "is-fullwidth-code-point": "^1.0.0", 11109 "is-fullwidth-code-point": "^1.0.0",
@@ -10278,7 +11114,6 @@
10278 "version": "3.0.1", 11114 "version": "3.0.1",
10279 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 11115 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
10280 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 11116 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
10281 "dev": true,
10282 "requires": { 11117 "requires": {
10283 "ansi-regex": "^2.0.0" 11118 "ansi-regex": "^2.0.0"
10284 } 11119 }
@@ -10545,7 +11380,6 @@
10545 "version": "4.1.0", 11380 "version": "4.1.0",
10546 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 11381 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
10547 "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 11382 "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
10548 "dev": true,
10549 "requires": { 11383 "requires": {
10550 "pump": "^3.0.0" 11384 "pump": "^3.0.0"
10551 } 11385 }
@@ -10553,14 +11387,12 @@
10553 "get-value": { 11387 "get-value": {
10554 "version": "2.0.6", 11388 "version": "2.0.6",
10555 "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 11389 "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
10556 "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 11390 "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
10557 "dev": true
10558 }, 11391 },
10559 "getpass": { 11392 "getpass": {
10560 "version": "0.1.7", 11393 "version": "0.1.7",
10561 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 11394 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
10562 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 11395 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
10563 "dev": true,
10564 "requires": { 11396 "requires": {
10565 "assert-plus": "^1.0.0" 11397 "assert-plus": "^1.0.0"
10566 } 11398 }
@@ -10696,7 +11528,6 @@
10696 "version": "7.1.4", 11528 "version": "7.1.4",
10697 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 11529 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
10698 "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 11530 "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
10699 "dev": true,
10700 "requires": { 11531 "requires": {
10701 "fs.realpath": "^1.0.0", 11532 "fs.realpath": "^1.0.0",
10702 "inflight": "^1.0.4", 11533 "inflight": "^1.0.4",
@@ -10855,7 +11686,6 @@
10855 "version": "1.0.0", 11686 "version": "1.0.0",
10856 "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", 11687 "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
10857 "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", 11688 "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
10858 "dev": true,
10859 "requires": { 11689 "requires": {
10860 "global-prefix": "^1.0.1", 11690 "global-prefix": "^1.0.1",
10861 "is-windows": "^1.0.1", 11691 "is-windows": "^1.0.1",
@@ -10872,7 +11702,6 @@
10872 "version": "1.0.2", 11702 "version": "1.0.2",
10873 "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", 11703 "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
10874 "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", 11704 "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
10875 "dev": true,
10876 "requires": { 11705 "requires": {
10877 "expand-tilde": "^2.0.2", 11706 "expand-tilde": "^2.0.2",
10878 "homedir-polyfill": "^1.0.1", 11707 "homedir-polyfill": "^1.0.1",
@@ -12392,14 +13221,12 @@
12392 "har-schema": { 13221 "har-schema": {
12393 "version": "2.0.0", 13222 "version": "2.0.0",
12394 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 13223 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
12395 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", 13224 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
12396 "dev": true
12397 }, 13225 },
12398 "har-validator": { 13226 "har-validator": {
12399 "version": "5.1.3", 13227 "version": "5.1.3",
12400 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", 13228 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
12401 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", 13229 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
12402 "dev": true,
12403 "requires": { 13230 "requires": {
12404 "ajv": "^6.5.5", 13231 "ajv": "^6.5.5",
12405 "har-schema": "^2.0.0" 13232 "har-schema": "^2.0.0"
@@ -12457,8 +13284,7 @@
12457 "has-flag": { 13284 "has-flag": {
12458 "version": "3.0.0", 13285 "version": "3.0.0",
12459 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 13286 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
12460 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 13287 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
12461 "dev": true
12462 }, 13288 },
12463 "has-gulplog": { 13289 "has-gulplog": {
12464 "version": "0.1.0", 13290 "version": "0.1.0",
@@ -12477,14 +13303,12 @@
12477 "has-unicode": { 13303 "has-unicode": {
12478 "version": "2.0.1", 13304 "version": "2.0.1",
12479 "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 13305 "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
12480 "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", 13306 "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
12481 "dev": true
12482 }, 13307 },
12483 "has-value": { 13308 "has-value": {
12484 "version": "1.0.0", 13309 "version": "1.0.0",
12485 "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 13310 "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
12486 "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 13311 "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
12487 "dev": true,
12488 "requires": { 13312 "requires": {
12489 "get-value": "^2.0.6", 13313 "get-value": "^2.0.6",
12490 "has-values": "^1.0.0", 13314 "has-values": "^1.0.0",
@@ -12495,7 +13319,6 @@
12495 "version": "1.0.0", 13319 "version": "1.0.0",
12496 "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 13320 "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
12497 "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 13321 "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
12498 "dev": true,
12499 "requires": { 13322 "requires": {
12500 "is-number": "^3.0.0", 13323 "is-number": "^3.0.0",
12501 "kind-of": "^4.0.0" 13324 "kind-of": "^4.0.0"
@@ -12505,7 +13328,6 @@
12505 "version": "4.0.0", 13328 "version": "4.0.0",
12506 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 13329 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
12507 "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 13330 "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
12508 "dev": true,
12509 "requires": { 13331 "requires": {
12510 "is-buffer": "^1.1.5" 13332 "is-buffer": "^1.1.5"
12511 } 13333 }
@@ -12538,6 +13360,11 @@
12538 "minimalistic-assert": "^1.0.1" 13360 "minimalistic-assert": "^1.0.1"
12539 } 13361 }
12540 }, 13362 },
13363 "haye": {
13364 "version": "2.0.2",
13365 "resolved": "https://registry.npmjs.org/haye/-/haye-2.0.2.tgz",
13366 "integrity": "sha512-C+jeFipAuwLLmQziwQrXuHzUIihDzqoLpCpwDWYFQVCIyqi5ZvC+4YtzawPTmd1tIKo0ULf+4P0Mw8irUdXIpg=="
13367 },
12541 "he": { 13368 "he": {
12542 "version": "1.2.0", 13369 "version": "1.2.0",
12543 "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 13370 "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -12600,7 +13427,6 @@
12600 "version": "1.0.3", 13427 "version": "1.0.3",
12601 "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", 13428 "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
12602 "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", 13429 "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
12603 "dev": true,
12604 "requires": { 13430 "requires": {
12605 "parse-passwd": "^1.0.0" 13431 "parse-passwd": "^1.0.0"
12606 } 13432 }
@@ -12755,7 +13581,6 @@
12755 "version": "1.7.2", 13581 "version": "1.7.2",
12756 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 13582 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
12757 "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 13583 "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
12758 "dev": true,
12759 "requires": { 13584 "requires": {
12760 "depd": "~1.1.2", 13585 "depd": "~1.1.2",
12761 "inherits": "2.0.3", 13586 "inherits": "2.0.3",
@@ -12767,14 +13592,12 @@
12767 "depd": { 13592 "depd": {
12768 "version": "1.1.2", 13593 "version": "1.1.2",
12769 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 13594 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
12770 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 13595 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
12771 "dev": true
12772 }, 13596 },
12773 "inherits": { 13597 "inherits": {
12774 "version": "2.0.3", 13598 "version": "2.0.3",
12775 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 13599 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
12776 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 13600 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
12777 "dev": true
12778 } 13601 }
12779 } 13602 }
12780 }, 13603 },
@@ -12846,7 +13669,6 @@
12846 "version": "1.2.0", 13669 "version": "1.2.0",
12847 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 13670 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
12848 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 13671 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
12849 "dev": true,
12850 "requires": { 13672 "requires": {
12851 "assert-plus": "^1.0.0", 13673 "assert-plus": "^1.0.0",
12852 "jsprim": "^1.2.2", 13674 "jsprim": "^1.2.2",
@@ -12980,7 +13802,6 @@
12980 "version": "3.0.2", 13802 "version": "3.0.2",
12981 "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.2.tgz", 13803 "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.2.tgz",
12982 "integrity": "sha512-EXyErtpHbn75ZTsOADsfx6J/FPo6/5cjev46PXrcTpd8z3BoRkXgYu9/JVqrI7tusjmwCZutGeRJeU0Wo1e4Cw==", 13804 "integrity": "sha512-EXyErtpHbn75ZTsOADsfx6J/FPo6/5cjev46PXrcTpd8z3BoRkXgYu9/JVqrI7tusjmwCZutGeRJeU0Wo1e4Cw==",
12983 "dev": true,
12984 "requires": { 13805 "requires": {
12985 "minimatch": "^3.0.4" 13806 "minimatch": "^3.0.4"
12986 } 13807 }
@@ -13063,8 +13884,7 @@
13063 "indent-string": { 13884 "indent-string": {
13064 "version": "3.2.0", 13885 "version": "3.2.0",
13065 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", 13886 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
13066 "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", 13887 "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok="
13067 "dev": true
13068 }, 13888 },
13069 "indexof": { 13889 "indexof": {
13070 "version": "0.0.1", 13890 "version": "0.0.1",
@@ -13072,22 +13892,36 @@
13072 "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", 13892 "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
13073 "dev": true 13893 "dev": true
13074 }, 13894 },
13895 "indicative": {
13896 "version": "5.0.8",
13897 "resolved": "https://registry.npmjs.org/indicative/-/indicative-5.0.8.tgz",
13898 "integrity": "sha512-Do9YKlrxyvK6RpMs9AdtxmjhweKrA6hJbJejY81iD8aYjjvOU4HYkJcM2IUxC3S7ZRm/L11u67QT4OQ101N5HQ=="
13899 },
13075 "infer-owner": { 13900 "infer-owner": {
13076 "version": "1.0.4", 13901 "version": "1.0.4",
13077 "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", 13902 "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
13078 "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", 13903 "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
13079 "dev": true 13904 "dev": true
13080 }, 13905 },
13906 "inflation": {
13907 "version": "2.0.0",
13908 "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz",
13909 "integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8="
13910 },
13081 "inflight": { 13911 "inflight": {
13082 "version": "1.0.6", 13912 "version": "1.0.6",
13083 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 13913 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
13084 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 13914 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
13085 "dev": true,
13086 "requires": { 13915 "requires": {
13087 "once": "^1.3.0", 13916 "once": "^1.3.0",
13088 "wrappy": "1" 13917 "wrappy": "1"
13089 } 13918 }
13090 }, 13919 },
13920 "info-symbol": {
13921 "version": "0.1.0",
13922 "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz",
13923 "integrity": "sha1-J4QdcoZ920JCzWEtecEGM4gcang="
13924 },
13091 "inherits": { 13925 "inherits": {
13092 "version": "2.0.4", 13926 "version": "2.0.4",
13093 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 13927 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -13096,8 +13930,7 @@
13096 "ini": { 13930 "ini": {
13097 "version": "1.3.5", 13931 "version": "1.3.5",
13098 "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 13932 "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
13099 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", 13933 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
13100 "dev": true
13101 }, 13934 },
13102 "init-package-json": { 13935 "init-package-json": {
13103 "version": "1.10.3", 13936 "version": "1.10.3",
@@ -13166,8 +13999,7 @@
13166 "interpret": { 13999 "interpret": {
13167 "version": "1.2.0", 14000 "version": "1.2.0",
13168 "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", 14001 "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
13169 "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", 14002 "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw=="
13170 "dev": true
13171 }, 14003 },
13172 "intl-format-cache": { 14004 "intl-format-cache": {
13173 "version": "2.2.9", 14005 "version": "2.2.9",
@@ -13230,8 +14062,7 @@
13230 "ipaddr.js": { 14062 "ipaddr.js": {
13231 "version": "1.9.0", 14063 "version": "1.9.0",
13232 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", 14064 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
13233 "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", 14065 "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
13234 "dev": true
13235 }, 14066 },
13236 "is": { 14067 "is": {
13237 "version": "0.3.0", 14068 "version": "0.3.0",
@@ -13243,7 +14074,6 @@
13243 "version": "1.0.0", 14074 "version": "1.0.0",
13244 "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 14075 "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
13245 "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 14076 "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
13246 "dev": true,
13247 "requires": { 14077 "requires": {
13248 "is-relative": "^1.0.0", 14078 "is-relative": "^1.0.0",
13249 "is-windows": "^1.0.1" 14079 "is-windows": "^1.0.1"
@@ -13253,7 +14083,6 @@
13253 "version": "0.1.6", 14083 "version": "0.1.6",
13254 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 14084 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
13255 "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 14085 "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
13256 "dev": true,
13257 "requires": { 14086 "requires": {
13258 "kind-of": "^3.0.2" 14087 "kind-of": "^3.0.2"
13259 }, 14088 },
@@ -13262,7 +14091,6 @@
13262 "version": "3.2.2", 14091 "version": "3.2.2",
13263 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 14092 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
13264 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 14093 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
13265 "dev": true,
13266 "requires": { 14094 "requires": {
13267 "is-buffer": "^1.1.5" 14095 "is-buffer": "^1.1.5"
13268 } 14096 }
@@ -13280,6 +14108,14 @@
13280 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", 14108 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
13281 "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" 14109 "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
13282 }, 14110 },
14111 "is-arrow-function": {
14112 "version": "2.0.3",
14113 "resolved": "https://registry.npmjs.org/is-arrow-function/-/is-arrow-function-2.0.3.tgz",
14114 "integrity": "sha1-Kb4sLY2UUIUri7r7Y1unuNjofsI=",
14115 "requires": {
14116 "is-callable": "^1.0.4"
14117 }
14118 },
13283 "is-binary-path": { 14119 "is-binary-path": {
13284 "version": "1.0.1", 14120 "version": "1.0.1",
13285 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 14121 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
@@ -13292,14 +14128,12 @@
13292 "is-buffer": { 14128 "is-buffer": {
13293 "version": "1.1.6", 14129 "version": "1.1.6",
13294 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 14130 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
13295 "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 14131 "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
13296 "dev": true
13297 }, 14132 },
13298 "is-callable": { 14133 "is-callable": {
13299 "version": "1.1.4", 14134 "version": "1.1.4",
13300 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 14135 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
13301 "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 14136 "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
13302 "dev": true
13303 }, 14137 },
13304 "is-ci": { 14138 "is-ci": {
13305 "version": "2.0.0", 14139 "version": "2.0.0",
@@ -13314,7 +14148,6 @@
13314 "version": "0.1.4", 14148 "version": "0.1.4",
13315 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 14149 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
13316 "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 14150 "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
13317 "dev": true,
13318 "requires": { 14151 "requires": {
13319 "kind-of": "^3.0.2" 14152 "kind-of": "^3.0.2"
13320 }, 14153 },
@@ -13323,7 +14156,6 @@
13323 "version": "3.2.2", 14156 "version": "3.2.2",
13324 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 14157 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
13325 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 14158 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
13326 "dev": true,
13327 "requires": { 14159 "requires": {
13328 "is-buffer": "^1.1.5" 14160 "is-buffer": "^1.1.5"
13329 } 14161 }
@@ -13340,7 +14172,6 @@
13340 "version": "0.1.6", 14172 "version": "0.1.6",
13341 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 14173 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
13342 "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 14174 "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
13343 "dev": true,
13344 "requires": { 14175 "requires": {
13345 "is-accessor-descriptor": "^0.1.6", 14176 "is-accessor-descriptor": "^0.1.6",
13346 "is-data-descriptor": "^0.1.4", 14177 "is-data-descriptor": "^0.1.4",
@@ -13350,8 +14181,7 @@
13350 "kind-of": { 14181 "kind-of": {
13351 "version": "5.1.0", 14182 "version": "5.1.0",
13352 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 14183 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
13353 "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 14184 "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
13354 "dev": true
13355 } 14185 }
13356 } 14186 }
13357 }, 14187 },
@@ -13379,14 +14209,12 @@
13379 "is-extendable": { 14209 "is-extendable": {
13380 "version": "0.1.1", 14210 "version": "0.1.1",
13381 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 14211 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
13382 "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 14212 "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
13383 "dev": true
13384 }, 14213 },
13385 "is-extglob": { 14214 "is-extglob": {
13386 "version": "2.1.1", 14215 "version": "2.1.1",
13387 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 14216 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
13388 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 14217 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
13389 "dev": true
13390 }, 14218 },
13391 "is-finite": { 14219 "is-finite": {
13392 "version": "1.0.2", 14220 "version": "1.0.2",
@@ -13400,8 +14228,7 @@
13400 "is-fullwidth-code-point": { 14228 "is-fullwidth-code-point": {
13401 "version": "2.0.0", 14229 "version": "2.0.0",
13402 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 14230 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
13403 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 14231 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
13404 "dev": true
13405 }, 14232 },
13406 "is-function": { 14233 "is-function": {
13407 "version": "1.0.1", 14234 "version": "1.0.1",
@@ -13454,7 +14281,6 @@
13454 "version": "3.0.0", 14281 "version": "3.0.0",
13455 "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 14282 "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
13456 "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 14283 "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
13457 "dev": true,
13458 "requires": { 14284 "requires": {
13459 "kind-of": "^3.0.2" 14285 "kind-of": "^3.0.2"
13460 }, 14286 },
@@ -13463,7 +14289,6 @@
13463 "version": "3.2.2", 14289 "version": "3.2.2",
13464 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 14290 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
13465 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 14291 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
13466 "dev": true,
13467 "requires": { 14292 "requires": {
13468 "is-buffer": "^1.1.5" 14293 "is-buffer": "^1.1.5"
13469 } 14294 }
@@ -13543,7 +14368,6 @@
13543 "version": "1.0.0", 14368 "version": "1.0.0",
13544 "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 14369 "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
13545 "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 14370 "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
13546 "dev": true,
13547 "requires": { 14371 "requires": {
13548 "is-unc-path": "^1.0.0" 14372 "is-unc-path": "^1.0.0"
13549 } 14373 }
@@ -13583,14 +14407,12 @@
13583 "is-typedarray": { 14407 "is-typedarray": {
13584 "version": "1.0.0", 14408 "version": "1.0.0",
13585 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 14409 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
13586 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 14410 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
13587 "dev": true
13588 }, 14411 },
13589 "is-unc-path": { 14412 "is-unc-path": {
13590 "version": "1.0.0", 14413 "version": "1.0.0",
13591 "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 14414 "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
13592 "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 14415 "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
13593 "dev": true,
13594 "requires": { 14416 "requires": {
13595 "unc-path-regex": "^0.1.2" 14417 "unc-path-regex": "^0.1.2"
13596 } 14418 }
@@ -13610,8 +14432,7 @@
13610 "is-windows": { 14432 "is-windows": {
13611 "version": "1.0.2", 14433 "version": "1.0.2",
13612 "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 14434 "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
13613 "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 14435 "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
13614 "dev": true
13615 }, 14436 },
13616 "is-wsl": { 14437 "is-wsl": {
13617 "version": "1.1.0", 14438 "version": "1.1.0",
@@ -13639,8 +14460,7 @@
13639 "isexe": { 14460 "isexe": {
13640 "version": "2.0.0", 14461 "version": "2.0.0",
13641 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 14462 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
13642 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 14463 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
13643 "dev": true
13644 }, 14464 },
13645 "isobject": { 14465 "isobject": {
13646 "version": "3.0.1", 14466 "version": "3.0.1",
@@ -13654,13 +14474,23 @@
13654 "requires": { 14474 "requires": {
13655 "node-fetch": "^1.0.1", 14475 "node-fetch": "^1.0.1",
13656 "whatwg-fetch": ">=0.10.0" 14476 "whatwg-fetch": ">=0.10.0"
14477 },
14478 "dependencies": {
14479 "node-fetch": {
14480 "version": "1.7.3",
14481 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
14482 "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
14483 "requires": {
14484 "encoding": "^0.1.11",
14485 "is-stream": "^1.0.1"
14486 }
14487 }
13657 } 14488 }
13658 }, 14489 },
13659 "isstream": { 14490 "isstream": {
13660 "version": "0.1.2", 14491 "version": "0.1.2",
13661 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 14492 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
13662 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 14493 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
13663 "dev": true
13664 }, 14494 },
13665 "istanbul-lib-coverage": { 14495 "istanbul-lib-coverage": {
13666 "version": "2.0.5", 14496 "version": "2.0.5",
@@ -14416,8 +15246,7 @@
14416 "jsbn": { 15246 "jsbn": {
14417 "version": "0.1.1", 15247 "version": "0.1.1",
14418 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 15248 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
14419 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 15249 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
14420 "dev": true
14421 }, 15250 },
14422 "jsdom": { 15251 "jsdom": {
14423 "version": "11.12.0", 15252 "version": "11.12.0",
@@ -14513,14 +15342,12 @@
14513 "json-schema": { 15342 "json-schema": {
14514 "version": "0.2.3", 15343 "version": "0.2.3",
14515 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 15344 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
14516 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", 15345 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
14517 "dev": true
14518 }, 15346 },
14519 "json-schema-traverse": { 15347 "json-schema-traverse": {
14520 "version": "0.4.1", 15348 "version": "0.4.1",
14521 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 15349 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
14522 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 15350 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
14523 "dev": true
14524 }, 15351 },
14525 "json-stable-stringify": { 15352 "json-stable-stringify": {
14526 "version": "1.0.1", 15353 "version": "1.0.1",
@@ -14540,8 +15367,7 @@
14540 "json-stringify-safe": { 15367 "json-stringify-safe": {
14541 "version": "5.0.1", 15368 "version": "5.0.1",
14542 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 15369 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
14543 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 15370 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
14544 "dev": true
14545 }, 15371 },
14546 "json3": { 15372 "json3": {
14547 "version": "3.3.2", 15373 "version": "3.3.2",
@@ -14607,7 +15433,6 @@
14607 "version": "1.4.1", 15433 "version": "1.4.1",
14608 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 15434 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
14609 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 15435 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
14610 "dev": true,
14611 "requires": { 15436 "requires": {
14612 "assert-plus": "1.0.0", 15437 "assert-plus": "1.0.0",
14613 "extsprintf": "1.3.0", 15438 "extsprintf": "1.3.0",
@@ -14769,8 +15594,7 @@
14769 "kind-of": { 15594 "kind-of": {
14770 "version": "6.0.2", 15595 "version": "6.0.2",
14771 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 15596 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
14772 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 15597 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
14773 "dev": true
14774 }, 15598 },
14775 "kleur": { 15599 "kleur": {
14776 "version": "3.0.3", 15600 "version": "3.0.3",
@@ -14778,6 +15602,106 @@
14778 "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", 15602 "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
14779 "dev": true 15603 "dev": true
14780 }, 15604 },
15605 "knex": {
15606 "version": "0.15.2",
15607 "resolved": "https://registry.npmjs.org/knex/-/knex-0.15.2.tgz",
15608 "integrity": "sha1-YFm4dIlgX0zIdZmm0qnSZXCek0A=",
15609 "requires": {
15610 "babel-runtime": "^6.26.0",
15611 "bluebird": "^3.5.1",
15612 "chalk": "2.3.2",
15613 "commander": "^2.16.0",
15614 "debug": "3.1.0",
15615 "inherits": "~2.0.3",
15616 "interpret": "^1.1.0",
15617 "liftoff": "2.5.0",
15618 "lodash": "^4.17.10",
15619 "minimist": "1.2.0",
15620 "mkdirp": "^0.5.1",
15621 "pg-connection-string": "2.0.0",
15622 "tarn": "^1.1.4",
15623 "tildify": "1.2.0",
15624 "uuid": "^3.3.2",
15625 "v8flags": "^3.1.1"
15626 },
15627 "dependencies": {
15628 "chalk": {
15629 "version": "2.3.2",
15630 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
15631 "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
15632 "requires": {
15633 "ansi-styles": "^3.2.1",
15634 "escape-string-regexp": "^1.0.5",
15635 "supports-color": "^5.3.0"
15636 }
15637 },
15638 "debug": {
15639 "version": "3.1.0",
15640 "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
15641 "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
15642 "requires": {
15643 "ms": "2.0.0"
15644 }
15645 },
15646 "findup-sync": {
15647 "version": "2.0.0",
15648 "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
15649 "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
15650 "requires": {
15651 "detect-file": "^1.0.0",
15652 "is-glob": "^3.1.0",
15653 "micromatch": "^3.0.4",
15654 "resolve-dir": "^1.0.1"
15655 }
15656 },
15657 "is-glob": {
15658 "version": "3.1.0",
15659 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
15660 "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
15661 "requires": {
15662 "is-extglob": "^2.1.0"
15663 }
15664 },
15665 "liftoff": {
15666 "version": "2.5.0",
15667 "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
15668 "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
15669 "requires": {
15670 "extend": "^3.0.0",
15671 "findup-sync": "^2.0.0",
15672 "fined": "^1.0.1",
15673 "flagged-respawn": "^1.0.0",
15674 "is-plain-object": "^2.0.4",
15675 "object.map": "^1.0.0",
15676 "rechoir": "^0.6.2",
15677 "resolve": "^1.1.7"
15678 }
15679 },
15680 "minimist": {
15681 "version": "1.2.0",
15682 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
15683 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
15684 },
15685 "ms": {
15686 "version": "2.0.0",
15687 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
15688 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
15689 }
15690 }
15691 },
15692 "koalas": {
15693 "version": "1.0.2",
15694 "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz",
15695 "integrity": "sha1-MYQz8HQjXbePrlZhoCqMpT7ilc0="
15696 },
15697 "kuler": {
15698 "version": "1.0.1",
15699 "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz",
15700 "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==",
15701 "requires": {
15702 "colornames": "^1.1.1"
15703 }
15704 },
14781 "last-run": { 15705 "last-run": {
14782 "version": "1.1.1", 15706 "version": "1.1.1",
14783 "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", 15707 "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
@@ -14797,6 +15721,14 @@
14797 "package-json": "^6.3.0" 15721 "package-json": "^6.3.0"
14798 } 15722 }
14799 }, 15723 },
15724 "lazy-cache": {
15725 "version": "2.0.2",
15726 "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
15727 "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=",
15728 "requires": {
15729 "set-getter": "^0.1.0"
15730 }
15731 },
14800 "lazy-val": { 15732 "lazy-val": {
14801 "version": "1.0.4", 15733 "version": "1.0.4",
14802 "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz", 15734 "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
@@ -15263,6 +16195,15 @@
15263 "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", 16195 "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
15264 "dev": true 16196 "dev": true
15265 }, 16197 },
16198 "log-ok": {
16199 "version": "0.1.1",
16200 "resolved": "https://registry.npmjs.org/log-ok/-/log-ok-0.1.1.tgz",
16201 "integrity": "sha1-vqPdNqzQuKckDXhza1uXxlREozQ=",
16202 "requires": {
16203 "ansi-green": "^0.1.1",
16204 "success-symbol": "^0.1.0"
16205 }
16206 },
15266 "log-symbols": { 16207 "log-symbols": {
15267 "version": "2.2.0", 16208 "version": "2.2.0",
15268 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 16209 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
@@ -15272,6 +16213,68 @@
15272 "chalk": "^2.0.1" 16213 "chalk": "^2.0.1"
15273 } 16214 }
15274 }, 16215 },
16216 "log-utils": {
16217 "version": "0.2.1",
16218 "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.2.1.tgz",
16219 "integrity": "sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=",
16220 "requires": {
16221 "ansi-colors": "^0.2.0",
16222 "error-symbol": "^0.1.0",
16223 "info-symbol": "^0.1.0",
16224 "log-ok": "^0.1.1",
16225 "success-symbol": "^0.1.0",
16226 "time-stamp": "^1.0.1",
16227 "warning-symbol": "^0.1.0"
16228 },
16229 "dependencies": {
16230 "ansi-colors": {
16231 "version": "0.2.0",
16232 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.2.0.tgz",
16233 "integrity": "sha1-csMd4qDZoszQysMMyYI+6y9kNLU=",
16234 "requires": {
16235 "ansi-bgblack": "^0.1.1",
16236 "ansi-bgblue": "^0.1.1",
16237 "ansi-bgcyan": "^0.1.1",
16238 "ansi-bggreen": "^0.1.1",
16239 "ansi-bgmagenta": "^0.1.1",
16240 "ansi-bgred": "^0.1.1",
16241 "ansi-bgwhite": "^0.1.1",
16242 "ansi-bgyellow": "^0.1.1",
16243 "ansi-black": "^0.1.1",
16244 "ansi-blue": "^0.1.1",
16245 "ansi-bold": "^0.1.1",
16246 "ansi-cyan": "^0.1.1",
16247 "ansi-dim": "^0.1.1",
16248 "ansi-gray": "^0.1.1",
16249 "ansi-green": "^0.1.1",
16250 "ansi-grey": "^0.1.1",
16251 "ansi-hidden": "^0.1.1",
16252 "ansi-inverse": "^0.1.1",
16253 "ansi-italic": "^0.1.1",
16254 "ansi-magenta": "^0.1.1",
16255 "ansi-red": "^0.1.1",
16256 "ansi-reset": "^0.1.1",
16257 "ansi-strikethrough": "^0.1.1",
16258 "ansi-underline": "^0.1.1",
16259 "ansi-white": "^0.1.1",
16260 "ansi-yellow": "^0.1.1",
16261 "lazy-cache": "^2.0.1"
16262 }
16263 }
16264 }
16265 },
16266 "logform": {
16267 "version": "2.1.2",
16268 "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz",
16269 "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==",
16270 "requires": {
16271 "colors": "^1.2.1",
16272 "fast-safe-stringify": "^2.0.4",
16273 "fecha": "^2.3.3",
16274 "ms": "^2.1.1",
16275 "triple-beam": "^1.3.0"
16276 }
16277 },
15275 "loglevel": { 16278 "loglevel": {
15276 "version": "1.6.4", 16279 "version": "1.6.4",
15277 "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz", 16280 "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz",
@@ -15317,7 +16320,6 @@
15317 "version": "4.1.5", 16320 "version": "4.1.5",
15318 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 16321 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
15319 "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 16322 "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
15320 "dev": true,
15321 "requires": { 16323 "requires": {
15322 "pseudomap": "^1.0.2", 16324 "pseudomap": "^1.0.2",
15323 "yallist": "^2.1.2" 16325 "yallist": "^2.1.2"
@@ -15326,8 +16328,7 @@
15326 "yallist": { 16328 "yallist": {
15327 "version": "2.1.2", 16329 "version": "2.1.2",
15328 "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 16330 "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
15329 "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 16331 "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
15330 "dev": true
15331 } 16332 }
15332 } 16333 }
15333 }, 16334 },
@@ -15354,6 +16355,21 @@
15354 "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", 16355 "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==",
15355 "dev": true 16356 "dev": true
15356 }, 16357 },
16358 "macroable": {
16359 "version": "1.0.0",
16360 "resolved": "https://registry.npmjs.org/macroable/-/macroable-1.0.0.tgz",
16361 "integrity": "sha1-I+Y0gyXG0GgqZQIfiL70CIve0WA=",
16362 "requires": {
16363 "node-exceptions": "^2.0.1"
16364 },
16365 "dependencies": {
16366 "node-exceptions": {
16367 "version": "2.0.2",
16368 "resolved": "https://registry.npmjs.org/node-exceptions/-/node-exceptions-2.0.2.tgz",
16369 "integrity": "sha512-nILccFLvnaOBoKZZtWfZipn/hlThZOT6UJOLX6SA3yLMYPcvLTIF26PXx73sPnAg45p05iYFYw2jvayNHz4rDA=="
16370 }
16371 }
16372 },
15357 "make-dir": { 16373 "make-dir": {
15358 "version": "1.3.0", 16374 "version": "1.3.0",
15359 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 16375 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
@@ -15416,7 +16432,6 @@
15416 "version": "1.0.1", 16432 "version": "1.0.1",
15417 "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", 16433 "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
15418 "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", 16434 "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
15419 "dev": true,
15420 "requires": { 16435 "requires": {
15421 "kind-of": "^6.0.2" 16436 "kind-of": "^6.0.2"
15422 } 16437 }
@@ -15447,8 +16462,7 @@
15447 "map-cache": { 16462 "map-cache": {
15448 "version": "0.2.2", 16463 "version": "0.2.2",
15449 "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 16464 "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
15450 "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 16465 "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
15451 "dev": true
15452 }, 16466 },
15453 "map-obj": { 16467 "map-obj": {
15454 "version": "2.0.0", 16468 "version": "2.0.0",
@@ -15460,7 +16474,6 @@
15460 "version": "1.0.0", 16474 "version": "1.0.0",
15461 "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 16475 "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
15462 "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 16476 "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
15463 "dev": true,
15464 "requires": { 16477 "requires": {
15465 "object-visit": "^1.0.0" 16478 "object-visit": "^1.0.0"
15466 } 16479 }
@@ -15535,8 +16548,7 @@
15535 "media-typer": { 16548 "media-typer": {
15536 "version": "0.3.0", 16549 "version": "0.3.0",
15537 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 16550 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
15538 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 16551 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
15539 "dev": true
15540 }, 16552 },
15541 "mem": { 16553 "mem": {
15542 "version": "4.3.0", 16554 "version": "4.3.0",
@@ -15698,7 +16710,6 @@
15698 "version": "3.1.10", 16710 "version": "3.1.10",
15699 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 16711 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
15700 "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 16712 "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
15701 "dev": true,
15702 "requires": { 16713 "requires": {
15703 "arr-diff": "^4.0.0", 16714 "arr-diff": "^4.0.0",
15704 "array-unique": "^0.3.2", 16715 "array-unique": "^0.3.2",
@@ -15879,7 +16890,6 @@
15879 "version": "1.3.2", 16890 "version": "1.3.2",
15880 "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 16891 "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
15881 "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 16892 "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
15882 "dev": true,
15883 "requires": { 16893 "requires": {
15884 "for-in": "^1.0.2", 16894 "for-in": "^1.0.2",
15885 "is-extendable": "^1.0.1" 16895 "is-extendable": "^1.0.1"
@@ -15889,13 +16899,28 @@
15889 "version": "1.0.1", 16899 "version": "1.0.1",
15890 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 16900 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
15891 "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 16901 "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
15892 "dev": true,
15893 "requires": { 16902 "requires": {
15894 "is-plain-object": "^2.0.4" 16903 "is-plain-object": "^2.0.4"
15895 } 16904 }
15896 } 16905 }
15897 } 16906 }
15898 }, 16907 },
16908 "mixin-object": {
16909 "version": "2.0.1",
16910 "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
16911 "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
16912 "requires": {
16913 "for-in": "^0.1.3",
16914 "is-extendable": "^0.1.1"
16915 },
16916 "dependencies": {
16917 "for-in": {
16918 "version": "0.1.8",
16919 "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
16920 "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE="
16921 }
16922 }
16923 },
15899 "mkdirp": { 16924 "mkdirp": {
15900 "version": "0.5.1", 16925 "version": "0.5.1",
15901 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 16926 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
@@ -16096,6 +17121,32 @@
16096 } 17121 }
16097 } 17122 }
16098 }, 17123 },
17124 "multiparty": {
17125 "version": "4.2.1",
17126 "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.1.tgz",
17127 "integrity": "sha512-AvESCnNoQlZiOfP9R4mxN8M9csy2L16EIbWIkt3l4FuGti9kXBS8QVzlfyg4HEnarJhrzZilgNFlZtqmoiAIIA==",
17128 "requires": {
17129 "fd-slicer": "1.1.0",
17130 "http-errors": "~1.7.0",
17131 "safe-buffer": "5.1.2",
17132 "uid-safe": "2.1.5"
17133 },
17134 "dependencies": {
17135 "fd-slicer": {
17136 "version": "1.1.0",
17137 "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
17138 "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
17139 "requires": {
17140 "pend": "~1.2.0"
17141 }
17142 },
17143 "safe-buffer": {
17144 "version": "5.1.2",
17145 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
17146 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
17147 }
17148 }
17149 },
16099 "multipipe": { 17150 "multipipe": {
16100 "version": "0.1.2", 17151 "version": "0.1.2",
16101 "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", 17152 "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
@@ -16105,6 +17156,11 @@
16105 "duplexer2": "0.0.2" 17156 "duplexer2": "0.0.2"
16106 } 17157 }
16107 }, 17158 },
17159 "mustache": {
17160 "version": "3.1.0",
17161 "resolved": "https://registry.npmjs.org/mustache/-/mustache-3.1.0.tgz",
17162 "integrity": "sha512-3Bxq1R5LBZp7fbFPZzFe5WN4s0q3+gxZaZuZVY+QctYJiCiVgXHOTIC0/HgZuOPFt/6BQcx5u0H2CUOxT/RoGQ=="
17163 },
16108 "mute-stdout": { 17164 "mute-stdout": {
16109 "version": "1.0.1", 17165 "version": "1.0.1",
16110 "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", 17166 "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
@@ -16114,8 +17170,7 @@
16114 "mute-stream": { 17170 "mute-stream": {
16115 "version": "0.0.7", 17171 "version": "0.0.7",
16116 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 17172 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
16117 "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 17173 "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
16118 "dev": true
16119 }, 17174 },
16120 "mz": { 17175 "mz": {
16121 "version": "2.7.0", 17176 "version": "2.7.0",
@@ -16142,7 +17197,6 @@
16142 "version": "1.2.13", 17197 "version": "1.2.13",
16143 "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 17198 "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
16144 "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 17199 "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
16145 "dev": true,
16146 "requires": { 17200 "requires": {
16147 "arr-diff": "^4.0.0", 17201 "arr-diff": "^4.0.0",
16148 "array-unique": "^0.3.2", 17202 "array-unique": "^0.3.2",
@@ -16169,6 +17223,26 @@
16169 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 17223 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
16170 "dev": true 17224 "dev": true
16171 }, 17225 },
17226 "needle": {
17227 "version": "2.4.0",
17228 "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz",
17229 "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==",
17230 "requires": {
17231 "debug": "^3.2.6",
17232 "iconv-lite": "^0.4.4",
17233 "sax": "^1.2.4"
17234 },
17235 "dependencies": {
17236 "debug": {
17237 "version": "3.2.6",
17238 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
17239 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
17240 "requires": {
17241 "ms": "^2.1.1"
17242 }
17243 }
17244 }
17245 },
16172 "negotiator": { 17246 "negotiator": {
16173 "version": "0.4.7", 17247 "version": "0.4.7",
16174 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz", 17248 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz",
@@ -16189,8 +17263,7 @@
16189 "nice-try": { 17263 "nice-try": {
16190 "version": "1.0.5", 17264 "version": "1.0.5",
16191 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 17265 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
16192 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 17266 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
16193 "dev": true
16194 }, 17267 },
16195 "no-case": { 17268 "no-case": {
16196 "version": "2.3.2", 17269 "version": "2.3.2",
@@ -16209,15 +17282,49 @@
16209 "semver": "^5.4.1" 17282 "semver": "^5.4.1"
16210 } 17283 }
16211 }, 17284 },
16212 "node-fetch": { 17285 "node-cookie": {
16213 "version": "1.7.3", 17286 "version": "2.1.1",
16214 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", 17287 "resolved": "https://registry.npmjs.org/node-cookie/-/node-cookie-2.1.1.tgz",
16215 "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", 17288 "integrity": "sha512-NZG0AxjfMT7N421HUvgOu4ilLin2GpzUnHrETT3k8UyytQTnEWBH6KOyAP9LoMEeu+CvUdwMB5w4ZK3pohjswg==",
16216 "requires": { 17289 "requires": {
16217 "encoding": "^0.1.11", 17290 "cookie": "^0.3.1",
16218 "is-stream": "^1.0.1" 17291 "cookie-signature": "^1.1.0",
17292 "simple-encryptor": "^1.4.0"
17293 },
17294 "dependencies": {
17295 "cookie-signature": {
17296 "version": "1.1.0",
17297 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.1.0.tgz",
17298 "integrity": "sha512-Alvs19Vgq07eunykd3Xy2jF0/qSNv2u7KDbAek9H5liV1UMijbqFs5cycZvv5dVsvseT/U4H8/7/w8Koh35C4A=="
17299 },
17300 "simple-encryptor": {
17301 "version": "1.4.0",
17302 "resolved": "https://registry.npmjs.org/simple-encryptor/-/simple-encryptor-1.4.0.tgz",
17303 "integrity": "sha512-g7UhXQ6flzimqzoaDqjGl5hBh4/+tJ4dtAIHaWhO9gtt+GkLRb3F/Xjv//XORFstkNxA+CFVzZJCLhs24NmrSQ==",
17304 "requires": {
17305 "scmp": "2.0.0"
17306 }
17307 }
16219 } 17308 }
16220 }, 17309 },
17310 "node-csp": {
17311 "version": "1.0.1",
17312 "resolved": "https://registry.npmjs.org/node-csp/-/node-csp-1.0.1.tgz",
17313 "integrity": "sha1-MF6yN3yY2oQVq7sDcW76HU6wznI=",
17314 "requires": {
17315 "platform": "^1.3.1"
17316 }
17317 },
17318 "node-exceptions": {
17319 "version": "3.0.0",
17320 "resolved": "https://registry.npmjs.org/node-exceptions/-/node-exceptions-3.0.0.tgz",
17321 "integrity": "sha512-pFhMAqdN1avrFwtZs66HxYiVnbnH9wjXB4m8IKs5Z9+r7U5voqxT+EDbVkRfge+V7JnkOgKhN4HfKBn1o5g9Wg=="
17322 },
17323 "node-fetch": {
17324 "version": "2.6.0",
17325 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
17326 "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
17327 },
16221 "node-fetch-npm": { 17328 "node-fetch-npm": {
16222 "version": "2.0.2", 17329 "version": "2.0.2",
16223 "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", 17330 "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz",
@@ -16235,6 +17342,11 @@
16235 "integrity": "sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg==", 17342 "integrity": "sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg==",
16236 "dev": true 17343 "dev": true
16237 }, 17344 },
17345 "node-guard": {
17346 "version": "1.0.0",
17347 "resolved": "https://registry.npmjs.org/node-guard/-/node-guard-1.0.0.tgz",
17348 "integrity": "sha1-5FSb63kcOxyEJ1WlJztzvosICjQ="
17349 },
16238 "node-gyp": { 17350 "node-gyp": {
16239 "version": "3.8.0", 17351 "version": "3.8.0",
16240 "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", 17352 "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
@@ -16370,6 +17482,34 @@
16370 "which": "^1.3.0" 17482 "which": "^1.3.0"
16371 } 17483 }
16372 }, 17484 },
17485 "node-pre-gyp": {
17486 "version": "0.11.0",
17487 "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",
17488 "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",
17489 "requires": {
17490 "detect-libc": "^1.0.2",
17491 "mkdirp": "^0.5.1",
17492 "needle": "^2.2.1",
17493 "nopt": "^4.0.1",
17494 "npm-packlist": "^1.1.6",
17495 "npmlog": "^4.0.2",
17496 "rc": "^1.2.7",
17497 "rimraf": "^2.6.1",
17498 "semver": "^5.3.0",
17499 "tar": "^4"
17500 },
17501 "dependencies": {
17502 "nopt": {
17503 "version": "4.0.1",
17504 "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
17505 "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
17506 "requires": {
17507 "abbrev": "1",
17508 "osenv": "^0.1.4"
17509 }
17510 }
17511 }
17512 },
16373 "node-releases": { 17513 "node-releases": {
16374 "version": "1.1.32", 17514 "version": "1.1.32",
16375 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz", 17515 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz",
@@ -16379,6 +17519,169 @@
16379 "semver": "^5.3.0" 17519 "semver": "^5.3.0"
16380 } 17520 }
16381 }, 17521 },
17522 "node-req": {
17523 "version": "2.1.2",
17524 "resolved": "https://registry.npmjs.org/node-req/-/node-req-2.1.2.tgz",
17525 "integrity": "sha512-zJqZ03vs0oHN8u+wn7kUT/vj63jQdQvNYWjbRMGNVu7ijV3mVz8UwX7pJl7LUugOT2x8vBKasKqbUqnh6GDKMQ==",
17526 "requires": {
17527 "accepts": "^1.3.5",
17528 "fresh": "^0.5.2",
17529 "parseurl": "^1.3.2",
17530 "proxy-addr": "^2.0.4",
17531 "qs": "^6.5.2",
17532 "type-is": "^1.6.16"
17533 },
17534 "dependencies": {
17535 "accepts": {
17536 "version": "1.3.7",
17537 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
17538 "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
17539 "requires": {
17540 "mime-types": "~2.1.24",
17541 "negotiator": "0.6.2"
17542 }
17543 },
17544 "fresh": {
17545 "version": "0.5.2",
17546 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
17547 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
17548 },
17549 "mime-db": {
17550 "version": "1.40.0",
17551 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
17552 "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
17553 },
17554 "mime-types": {
17555 "version": "2.1.24",
17556 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
17557 "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
17558 "requires": {
17559 "mime-db": "1.40.0"
17560 }
17561 },
17562 "negotiator": {
17563 "version": "0.6.2",
17564 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
17565 "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
17566 }
17567 }
17568 },
17569 "node-res": {
17570 "version": "4.1.4",
17571 "resolved": "https://registry.npmjs.org/node-res/-/node-res-4.1.4.tgz",
17572 "integrity": "sha512-CE6NEM51MVeySzGn6stEuohJzYPHovjo9+/UK147peh8Hslth/S+IpXKupb1qv9QeIxbgnKJ9WoVOpEwJd5pYg==",
17573 "requires": {
17574 "content-disposition": "^0.5.2",
17575 "etag": "^1.8.1",
17576 "mime-types": "^2.1.17",
17577 "send": "^0.16.1",
17578 "vary": "^1.1.2"
17579 },
17580 "dependencies": {
17581 "debug": {
17582 "version": "2.6.9",
17583 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
17584 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
17585 "requires": {
17586 "ms": "2.0.0"
17587 }
17588 },
17589 "depd": {
17590 "version": "1.1.2",
17591 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
17592 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
17593 },
17594 "destroy": {
17595 "version": "1.0.4",
17596 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
17597 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
17598 },
17599 "ee-first": {
17600 "version": "1.1.1",
17601 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
17602 "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
17603 },
17604 "escape-html": {
17605 "version": "1.0.3",
17606 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
17607 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
17608 },
17609 "fresh": {
17610 "version": "0.5.2",
17611 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
17612 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
17613 },
17614 "http-errors": {
17615 "version": "1.6.3",
17616 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
17617 "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
17618 "requires": {
17619 "depd": "~1.1.2",
17620 "inherits": "2.0.3",
17621 "setprototypeof": "1.1.0",
17622 "statuses": ">= 1.4.0 < 2"
17623 }
17624 },
17625 "inherits": {
17626 "version": "2.0.3",
17627 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
17628 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
17629 },
17630 "mime": {
17631 "version": "1.4.1",
17632 "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
17633 "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
17634 },
17635 "ms": {
17636 "version": "2.0.0",
17637 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
17638 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
17639 },
17640 "on-finished": {
17641 "version": "2.3.0",
17642 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
17643 "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
17644 "requires": {
17645 "ee-first": "1.1.1"
17646 }
17647 },
17648 "range-parser": {
17649 "version": "1.2.1",
17650 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
17651 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
17652 },
17653 "send": {
17654 "version": "0.16.2",
17655 "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
17656 "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
17657 "requires": {
17658 "debug": "2.6.9",
17659 "depd": "~1.1.2",
17660 "destroy": "~1.0.4",
17661 "encodeurl": "~1.0.2",
17662 "escape-html": "~1.0.3",
17663 "etag": "~1.8.1",
17664 "fresh": "0.5.2",
17665 "http-errors": "~1.6.2",
17666 "mime": "1.4.1",
17667 "ms": "2.0.0",
17668 "on-finished": "~2.3.0",
17669 "range-parser": "~1.2.0",
17670 "statuses": "~1.4.0"
17671 }
17672 },
17673 "setprototypeof": {
17674 "version": "1.1.0",
17675 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
17676 "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
17677 },
17678 "statuses": {
17679 "version": "1.4.0",
17680 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
17681 "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
17682 }
17683 }
17684 },
16382 "node-sass": { 17685 "node-sass": {
16383 "version": "4.11.0", 17686 "version": "4.11.0",
16384 "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", 17687 "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz",
@@ -16693,8 +17996,7 @@
16693 "npm-bundled": { 17996 "npm-bundled": {
16694 "version": "1.0.6", 17997 "version": "1.0.6",
16695 "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", 17998 "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz",
16696 "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", 17999 "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g=="
16697 "dev": true
16698 }, 18000 },
16699 "npm-lifecycle": { 18001 "npm-lifecycle": {
16700 "version": "3.1.4", 18002 "version": "3.1.4",
@@ -16761,7 +18063,6 @@
16761 "version": "1.4.4", 18063 "version": "1.4.4",
16762 "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.4.tgz", 18064 "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.4.tgz",
16763 "integrity": "sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==", 18065 "integrity": "sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==",
16764 "dev": true,
16765 "requires": { 18066 "requires": {
16766 "ignore-walk": "^3.0.1", 18067 "ignore-walk": "^3.0.1",
16767 "npm-bundled": "^1.0.1" 18068 "npm-bundled": "^1.0.1"
@@ -16791,7 +18092,6 @@
16791 "version": "4.1.2", 18092 "version": "4.1.2",
16792 "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 18093 "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
16793 "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 18094 "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
16794 "dev": true,
16795 "requires": { 18095 "requires": {
16796 "are-we-there-yet": "~1.1.2", 18096 "are-we-there-yet": "~1.1.2",
16797 "console-control-strings": "~1.1.0", 18097 "console-control-strings": "~1.1.0",
@@ -17021,8 +18321,7 @@
17021 "number-is-nan": { 18321 "number-is-nan": {
17022 "version": "1.0.1", 18322 "version": "1.0.1",
17023 "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 18323 "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
17024 "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 18324 "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
17025 "dev": true
17026 }, 18325 },
17027 "nwsapi": { 18326 "nwsapi": {
17028 "version": "2.1.4", 18327 "version": "2.1.4",
@@ -17033,8 +18332,7 @@
17033 "oauth-sign": { 18332 "oauth-sign": {
17034 "version": "0.9.0", 18333 "version": "0.9.0",
17035 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 18334 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
17036 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 18335 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
17037 "dev": true
17038 }, 18336 },
17039 "object-assign": { 18337 "object-assign": {
17040 "version": "4.1.1", 18338 "version": "4.1.1",
@@ -17051,7 +18349,6 @@
17051 "version": "0.1.0", 18349 "version": "0.1.0",
17052 "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 18350 "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
17053 "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 18351 "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
17054 "dev": true,
17055 "requires": { 18352 "requires": {
17056 "copy-descriptor": "^0.1.0", 18353 "copy-descriptor": "^0.1.0",
17057 "define-property": "^0.2.5", 18354 "define-property": "^0.2.5",
@@ -17062,7 +18359,6 @@
17062 "version": "0.2.5", 18359 "version": "0.2.5",
17063 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 18360 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
17064 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 18361 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
17065 "dev": true,
17066 "requires": { 18362 "requires": {
17067 "is-descriptor": "^0.1.0" 18363 "is-descriptor": "^0.1.0"
17068 } 18364 }
@@ -17071,7 +18367,6 @@
17071 "version": "3.2.2", 18367 "version": "3.2.2",
17072 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 18368 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
17073 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 18369 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
17074 "dev": true,
17075 "requires": { 18370 "requires": {
17076 "is-buffer": "^1.1.5" 18371 "is-buffer": "^1.1.5"
17077 } 18372 }
@@ -17106,7 +18401,6 @@
17106 "version": "1.0.1", 18401 "version": "1.0.1",
17107 "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 18402 "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
17108 "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 18403 "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
17109 "dev": true,
17110 "requires": { 18404 "requires": {
17111 "isobject": "^3.0.0" 18405 "isobject": "^3.0.0"
17112 } 18406 }
@@ -17127,7 +18421,6 @@
17127 "version": "1.1.0", 18421 "version": "1.1.0",
17128 "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 18422 "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
17129 "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 18423 "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
17130 "dev": true,
17131 "requires": { 18424 "requires": {
17132 "array-each": "^1.0.1", 18425 "array-each": "^1.0.1",
17133 "array-slice": "^1.0.0", 18426 "array-slice": "^1.0.0",
@@ -17161,7 +18454,6 @@
17161 "version": "1.0.1", 18454 "version": "1.0.1",
17162 "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", 18455 "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
17163 "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", 18456 "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
17164 "dev": true,
17165 "requires": { 18457 "requires": {
17166 "for-own": "^1.0.0", 18458 "for-own": "^1.0.0",
17167 "make-iterator": "^1.0.0" 18459 "make-iterator": "^1.0.0"
@@ -17192,7 +18484,6 @@
17192 "version": "1.3.0", 18484 "version": "1.3.0",
17193 "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 18485 "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
17194 "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 18486 "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
17195 "dev": true,
17196 "requires": { 18487 "requires": {
17197 "isobject": "^3.0.1" 18488 "isobject": "^3.0.1"
17198 } 18489 }
@@ -17242,6 +18533,11 @@
17242 "wrappy": "1" 18533 "wrappy": "1"
17243 } 18534 }
17244 }, 18535 },
18536 "one-time": {
18537 "version": "0.0.4",
18538 "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz",
18539 "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4="
18540 },
17245 "onetime": { 18541 "onetime": {
17246 "version": "2.0.1", 18542 "version": "2.0.1",
17247 "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 18543 "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
@@ -17402,8 +18698,7 @@
17402 "os-homedir": { 18698 "os-homedir": {
17403 "version": "1.0.2", 18699 "version": "1.0.2",
17404 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 18700 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
17405 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 18701 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
17406 "dev": true
17407 }, 18702 },
17408 "os-locale": { 18703 "os-locale": {
17409 "version": "3.1.0", 18704 "version": "3.1.0",
@@ -17429,14 +18724,12 @@
17429 "os-tmpdir": { 18724 "os-tmpdir": {
17430 "version": "1.0.2", 18725 "version": "1.0.2",
17431 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 18726 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
17432 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 18727 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
17433 "dev": true
17434 }, 18728 },
17435 "osenv": { 18729 "osenv": {
17436 "version": "0.1.5", 18730 "version": "0.1.5",
17437 "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 18731 "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
17438 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 18732 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
17439 "dev": true,
17440 "requires": { 18733 "requires": {
17441 "os-homedir": "^1.0.0", 18734 "os-homedir": "^1.0.0",
17442 "os-tmpdir": "^1.0.0" 18735 "os-tmpdir": "^1.0.0"
@@ -17649,7 +18942,6 @@
17649 "version": "1.0.2", 18942 "version": "1.0.2",
17650 "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", 18943 "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
17651 "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", 18944 "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
17652 "dev": true,
17653 "requires": { 18945 "requires": {
17654 "is-absolute": "^1.0.0", 18946 "is-absolute": "^1.0.0",
17655 "map-cache": "^0.2.0", 18947 "map-cache": "^0.2.0",
@@ -17710,8 +19002,7 @@
17710 "parse-passwd": { 19002 "parse-passwd": {
17711 "version": "1.0.0", 19003 "version": "1.0.0",
17712 "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 19004 "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
17713 "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 19005 "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY="
17714 "dev": true
17715 }, 19006 },
17716 "parse-path": { 19007 "parse-path": {
17717 "version": "4.0.1", 19008 "version": "4.0.1",
@@ -17779,14 +19070,12 @@
17779 "parseurl": { 19070 "parseurl": {
17780 "version": "1.3.3", 19071 "version": "1.3.3",
17781 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 19072 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
17782 "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 19073 "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
17783 "dev": true
17784 }, 19074 },
17785 "pascalcase": { 19075 "pascalcase": {
17786 "version": "0.1.1", 19076 "version": "0.1.1",
17787 "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 19077 "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
17788 "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 19078 "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
17789 "dev": true
17790 }, 19079 },
17791 "path-browserify": { 19080 "path-browserify": {
17792 "version": "0.0.1", 19081 "version": "0.0.1",
@@ -17819,20 +19108,17 @@
17819 "path-key": { 19108 "path-key": {
17820 "version": "2.0.1", 19109 "version": "2.0.1",
17821 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 19110 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
17822 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 19111 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
17823 "dev": true
17824 }, 19112 },
17825 "path-parse": { 19113 "path-parse": {
17826 "version": "1.0.6", 19114 "version": "1.0.6",
17827 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 19115 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
17828 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 19116 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
17829 "dev": true
17830 }, 19117 },
17831 "path-root": { 19118 "path-root": {
17832 "version": "0.1.1", 19119 "version": "0.1.1",
17833 "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 19120 "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
17834 "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 19121 "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
17835 "dev": true,
17836 "requires": { 19122 "requires": {
17837 "path-root-regex": "^0.1.0" 19123 "path-root-regex": "^0.1.0"
17838 } 19124 }
@@ -17840,8 +19126,7 @@
17840 "path-root-regex": { 19126 "path-root-regex": {
17841 "version": "0.1.2", 19127 "version": "0.1.2",
17842 "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 19128 "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
17843 "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", 19129 "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0="
17844 "dev": true
17845 }, 19130 },
17846 "path-to-regexp": { 19131 "path-to-regexp": {
17847 "version": "0.1.7", 19132 "version": "0.1.7",
@@ -17880,14 +19165,17 @@
17880 "pend": { 19165 "pend": {
17881 "version": "1.2.0", 19166 "version": "1.2.0",
17882 "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 19167 "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
17883 "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", 19168 "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
17884 "dev": true
17885 }, 19169 },
17886 "performance-now": { 19170 "performance-now": {
17887 "version": "2.1.0", 19171 "version": "2.1.0",
17888 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 19172 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
17889 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", 19173 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
17890 "dev": true 19174 },
19175 "pg-connection-string": {
19176 "version": "2.0.0",
19177 "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.0.0.tgz",
19178 "integrity": "sha1-Pu/lmX4G2Ugh5NUC5CtqHHP434I="
17891 }, 19179 },
17892 "pidtree": { 19180 "pidtree": {
17893 "version": "0.3.0", 19181 "version": "0.3.0",
@@ -17986,6 +19274,11 @@
17986 } 19274 }
17987 } 19275 }
17988 }, 19276 },
19277 "platform": {
19278 "version": "1.3.5",
19279 "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz",
19280 "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q=="
19281 },
17989 "please-upgrade-node": { 19282 "please-upgrade-node": {
17990 "version": "3.2.0", 19283 "version": "3.2.0",
17991 "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", 19284 "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
@@ -18009,8 +19302,7 @@
18009 "pluralize": { 19302 "pluralize": {
18010 "version": "7.0.0", 19303 "version": "7.0.0",
18011 "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", 19304 "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
18012 "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", 19305 "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow=="
18013 "dev": true
18014 }, 19306 },
18015 "pn": { 19307 "pn": {
18016 "version": "1.1.0", 19308 "version": "1.1.0",
@@ -18018,6 +19310,11 @@
18018 "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", 19310 "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
18019 "dev": true 19311 "dev": true
18020 }, 19312 },
19313 "pointer-symbol": {
19314 "version": "1.0.0",
19315 "resolved": "https://registry.npmjs.org/pointer-symbol/-/pointer-symbol-1.0.0.tgz",
19316 "integrity": "sha1-YPkRAgTqepKbYmRKITFVQ8uz1Ec="
19317 },
18021 "portfinder": { 19318 "portfinder": {
18022 "version": "1.0.24", 19319 "version": "1.0.24",
18023 "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz", 19320 "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz",
@@ -18055,8 +19352,7 @@
18055 "posix-character-classes": { 19352 "posix-character-classes": {
18056 "version": "0.1.1", 19353 "version": "0.1.1",
18057 "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 19354 "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
18058 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 19355 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
18059 "dev": true
18060 }, 19356 },
18061 "prelude-ls": { 19357 "prelude-ls": {
18062 "version": "1.1.2", 19358 "version": "1.1.2",
@@ -18119,8 +19415,7 @@
18119 "pretty-hrtime": { 19415 "pretty-hrtime": {
18120 "version": "1.0.3", 19416 "version": "1.0.3",
18121 "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", 19417 "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
18122 "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", 19418 "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
18123 "dev": true
18124 }, 19419 },
18125 "private": { 19420 "private": {
18126 "version": "0.1.8", 19421 "version": "0.1.8",
@@ -18220,6 +19515,21 @@
18220 "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", 19515 "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
18221 "dev": true 19516 "dev": true
18222 }, 19517 },
19518 "promise-reduce": {
19519 "version": "2.1.0",
19520 "resolved": "https://registry.npmjs.org/promise-reduce/-/promise-reduce-2.1.0.tgz",
19521 "integrity": "sha1-dxmHMbXGLL1fjhhFUREx0A47bEc=",
19522 "requires": {
19523 "any-promise": "^0.1.0"
19524 },
19525 "dependencies": {
19526 "any-promise": {
19527 "version": "0.1.0",
19528 "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz",
19529 "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic="
19530 }
19531 }
19532 },
18223 "promise-retry": { 19533 "promise-retry": {
18224 "version": "1.1.1", 19534 "version": "1.1.1",
18225 "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", 19535 "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
@@ -18230,6 +19540,535 @@
18230 "retry": "^0.10.0" 19540 "retry": "^0.10.0"
18231 } 19541 }
18232 }, 19542 },
19543 "prompt-actions": {
19544 "version": "3.0.2",
19545 "resolved": "https://registry.npmjs.org/prompt-actions/-/prompt-actions-3.0.2.tgz",
19546 "integrity": "sha512-dhz2Fl7vK+LPpmnQ/S/eSut4BnH4NZDLyddHKi5uTU/2PDn3grEMGkgsll16V5RpVUh/yxdiam0xsM0RD4xvtg==",
19547 "requires": {
19548 "debug": "^2.6.8"
19549 },
19550 "dependencies": {
19551 "debug": {
19552 "version": "2.6.9",
19553 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
19554 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
19555 "requires": {
19556 "ms": "2.0.0"
19557 }
19558 },
19559 "ms": {
19560 "version": "2.0.0",
19561 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
19562 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
19563 }
19564 }
19565 },
19566 "prompt-base": {
19567 "version": "4.1.0",
19568 "resolved": "https://registry.npmjs.org/prompt-base/-/prompt-base-4.1.0.tgz",
19569 "integrity": "sha512-svGzgLUKZoqomz9SGMkf1hBG8Wl3K7JGuRCXc/Pv7xw8239hhaTBXrmjt7EXA9P/QZzdyT8uNWt9F/iJTXq75g==",
19570 "requires": {
19571 "component-emitter": "^1.2.1",
19572 "debug": "^3.0.1",
19573 "koalas": "^1.0.2",
19574 "log-utils": "^0.2.1",
19575 "prompt-actions": "^3.0.2",
19576 "prompt-question": "^5.0.1",
19577 "readline-ui": "^2.2.3",
19578 "readline-utils": "^2.2.3",
19579 "static-extend": "^0.1.2"
19580 },
19581 "dependencies": {
19582 "debug": {
19583 "version": "3.2.6",
19584 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
19585 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
19586 "requires": {
19587 "ms": "^2.1.1"
19588 }
19589 },
19590 "define-property": {
19591 "version": "1.0.0",
19592 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
19593 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
19594 "requires": {
19595 "is-descriptor": "^1.0.0"
19596 }
19597 },
19598 "is-accessor-descriptor": {
19599 "version": "1.0.0",
19600 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
19601 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
19602 "requires": {
19603 "kind-of": "^6.0.0"
19604 },
19605 "dependencies": {
19606 "kind-of": {
19607 "version": "6.0.2",
19608 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
19609 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
19610 }
19611 }
19612 },
19613 "is-data-descriptor": {
19614 "version": "1.0.0",
19615 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
19616 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
19617 "requires": {
19618 "kind-of": "^6.0.0"
19619 },
19620 "dependencies": {
19621 "kind-of": {
19622 "version": "6.0.2",
19623 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
19624 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
19625 }
19626 }
19627 },
19628 "is-descriptor": {
19629 "version": "1.0.2",
19630 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
19631 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
19632 "requires": {
19633 "is-accessor-descriptor": "^1.0.0",
19634 "is-data-descriptor": "^1.0.0",
19635 "kind-of": "^6.0.2"
19636 },
19637 "dependencies": {
19638 "kind-of": {
19639 "version": "6.0.2",
19640 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
19641 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
19642 }
19643 }
19644 },
19645 "kind-of": {
19646 "version": "5.1.0",
19647 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
19648 "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
19649 },
19650 "prompt-question": {
19651 "version": "5.0.2",
19652 "resolved": "https://registry.npmjs.org/prompt-question/-/prompt-question-5.0.2.tgz",
19653 "integrity": "sha512-wreaLbbu8f5+7zXds199uiT11Ojp59Z4iBi6hONlSLtsKGTvL2UY8VglcxQ3t/X4qWIxsNCg6aT4O8keO65v6Q==",
19654 "requires": {
19655 "clone-deep": "^1.0.0",
19656 "debug": "^3.0.1",
19657 "define-property": "^1.0.0",
19658 "isobject": "^3.0.1",
19659 "kind-of": "^5.0.2",
19660 "koalas": "^1.0.2",
19661 "prompt-choices": "^4.0.5"
19662 }
19663 }
19664 }
19665 },
19666 "prompt-checkbox": {
19667 "version": "2.2.0",
19668 "resolved": "https://registry.npmjs.org/prompt-checkbox/-/prompt-checkbox-2.2.0.tgz",
19669 "integrity": "sha512-T/QWgkdUmKjRSr0FQlV8O+LfgmBk8PwDbWhzllm7mwWNAjs3qOVuru5Y1gV4/14L73zCncqcuwGwvnDyVcVgvA==",
19670 "requires": {
19671 "ansi-cyan": "^0.1.1",
19672 "debug": "^2.6.8",
19673 "prompt-base": "^4.0.2"
19674 },
19675 "dependencies": {
19676 "debug": {
19677 "version": "2.6.9",
19678 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
19679 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
19680 "requires": {
19681 "ms": "2.0.0"
19682 }
19683 },
19684 "ms": {
19685 "version": "2.0.0",
19686 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
19687 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
19688 }
19689 }
19690 },
19691 "prompt-choices": {
19692 "version": "4.1.0",
19693 "resolved": "https://registry.npmjs.org/prompt-choices/-/prompt-choices-4.1.0.tgz",
19694 "integrity": "sha512-ZNYLv6rW9z9n0WdwCkEuS+w5nUAGzRgtRt6GQ5aFNFz6MIcU7nHFlHOwZtzy7RQBk80KzUGPSRQphvMiQzB8pg==",
19695 "requires": {
19696 "arr-flatten": "^1.1.0",
19697 "arr-swap": "^1.0.1",
19698 "choices-separator": "^2.0.0",
19699 "clone-deep": "^4.0.0",
19700 "collection-visit": "^1.0.0",
19701 "define-property": "^2.0.2",
19702 "is-number": "^6.0.0",
19703 "kind-of": "^6.0.2",
19704 "koalas": "^1.0.2",
19705 "log-utils": "^0.2.1",
19706 "pointer-symbol": "^1.0.0",
19707 "radio-symbol": "^2.0.0",
19708 "set-value": "^3.0.0",
19709 "strip-color": "^0.1.0",
19710 "terminal-paginator": "^2.0.2",
19711 "toggle-array": "^1.0.1"
19712 },
19713 "dependencies": {
19714 "clone-deep": {
19715 "version": "4.0.1",
19716 "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
19717 "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
19718 "requires": {
19719 "is-plain-object": "^2.0.4",
19720 "kind-of": "^6.0.2",
19721 "shallow-clone": "^3.0.0"
19722 }
19723 },
19724 "is-number": {
19725 "version": "6.0.0",
19726 "resolved": "https://registry.npmjs.org/is-number/-/is-number-6.0.0.tgz",
19727 "integrity": "sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg=="
19728 },
19729 "set-value": {
19730 "version": "3.0.1",
19731 "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.1.tgz",
19732 "integrity": "sha512-w6n3GUPYAWQj4ZyHWzD7K2FnFXHx9OTwJYbWg+6nXjG8sCLfs9DGv+KlqglKIIJx+ks7MlFuwFW2RBPb+8V+xg==",
19733 "requires": {
19734 "is-plain-object": "^2.0.4"
19735 }
19736 },
19737 "shallow-clone": {
19738 "version": "3.0.1",
19739 "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
19740 "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
19741 "requires": {
19742 "kind-of": "^6.0.2"
19743 }
19744 }
19745 }
19746 },
19747 "prompt-confirm": {
19748 "version": "2.0.4",
19749 "resolved": "https://registry.npmjs.org/prompt-confirm/-/prompt-confirm-2.0.4.tgz",
19750 "integrity": "sha512-X5lzbC8/kMNHdPOqQPfMKpH4VV2f7v2OTRJoN69ZYBirSwTeQaf9ZhmzPEO9ybMA0YV2Pha5MV27u2/U4ahWfg==",
19751 "requires": {
19752 "ansi-cyan": "^0.1.1",
19753 "prompt-base": "^4.0.1"
19754 }
19755 },
19756 "prompt-expand": {
19757 "version": "1.0.1",
19758 "resolved": "https://registry.npmjs.org/prompt-expand/-/prompt-expand-1.0.1.tgz",
19759 "integrity": "sha512-BDTw6tuWF6TuM1ZmwN5K/p6FCmm2E/QeQbtKoL76HrVdgjUQab9MQnIcWfTPh5d0NOO7Rf/Y1onvIQMkEw3Srg==",
19760 "requires": {
19761 "ansi-colors": "^1.1.0",
19762 "prompt-rawlist": "^2.0.1"
19763 }
19764 },
19765 "prompt-input": {
19766 "version": "3.0.0",
19767 "resolved": "https://registry.npmjs.org/prompt-input/-/prompt-input-3.0.0.tgz",
19768 "integrity": "sha512-c0udMEi7nWE+n+enZKfyMl+HWZ6/0qFELGqzWTQ1D2QXCFwDpFZ1X41+CmYwjGwEkGFQVBTLMH+8VenvR5uGOA==",
19769 "requires": {
19770 "debug": "^2.6.8",
19771 "prompt-base": "^4.0.2"
19772 },
19773 "dependencies": {
19774 "debug": {
19775 "version": "2.6.9",
19776 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
19777 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
19778 "requires": {
19779 "ms": "2.0.0"
19780 }
19781 },
19782 "ms": {
19783 "version": "2.0.0",
19784 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
19785 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
19786 }
19787 }
19788 },
19789 "prompt-list": {
19790 "version": "3.2.0",
19791 "resolved": "https://registry.npmjs.org/prompt-list/-/prompt-list-3.2.0.tgz",
19792 "integrity": "sha512-PDao47cmC9+m2zEUghH+WIIascd8SuyyWO+akuUubd0XxOQyUH96HMdIcL3YnNS8kJUHwddH1rHVgL9vZA1QsQ==",
19793 "requires": {
19794 "ansi-cyan": "^0.1.1",
19795 "ansi-dim": "^0.1.1",
19796 "prompt-radio": "^1.2.1"
19797 }
19798 },
19799 "prompt-password": {
19800 "version": "1.2.0",
19801 "resolved": "https://registry.npmjs.org/prompt-password/-/prompt-password-1.2.0.tgz",
19802 "integrity": "sha512-lBehk9YPGLxH9hAJ+VU7Bj/ePi9t5kPL/1ZBGZ2fLrDX1QeaBwi4RtQggZrsbMalGJaXaAuo/7VOa7QvbE2hAQ==",
19803 "requires": {
19804 "debug": "^2.6.8",
19805 "prompt-base": "^4.0.2"
19806 },
19807 "dependencies": {
19808 "debug": {
19809 "version": "2.6.9",
19810 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
19811 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
19812 "requires": {
19813 "ms": "2.0.0"
19814 }
19815 },
19816 "ms": {
19817 "version": "2.0.0",
19818 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
19819 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
19820 }
19821 }
19822 },
19823 "prompt-question": {
19824 "version": "3.0.3",
19825 "resolved": "https://registry.npmjs.org/prompt-question/-/prompt-question-3.0.3.tgz",
19826 "integrity": "sha1-xVhYvXaxh4wequy5F6koqcE8ijc=",
19827 "requires": {
19828 "clone-deep": "^0.3.0",
19829 "debug": "^2.6.8",
19830 "define-property": "^1.0.0",
19831 "extend-shallow": "^2.0.1",
19832 "kind-of": "^4.0.0",
19833 "koalas": "^1.0.2",
19834 "prompt-choices": "^3.0.3"
19835 },
19836 "dependencies": {
19837 "clone-deep": {
19838 "version": "0.3.0",
19839 "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz",
19840 "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=",
19841 "requires": {
19842 "for-own": "^1.0.0",
19843 "is-plain-object": "^2.0.1",
19844 "kind-of": "^3.2.2",
19845 "shallow-clone": "^0.1.2"
19846 },
19847 "dependencies": {
19848 "kind-of": {
19849 "version": "3.2.2",
19850 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
19851 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
19852 "requires": {
19853 "is-buffer": "^1.1.5"
19854 }
19855 }
19856 }
19857 },
19858 "debug": {
19859 "version": "2.6.9",
19860 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
19861 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
19862 "requires": {
19863 "ms": "2.0.0"
19864 }
19865 },
19866 "define-property": {
19867 "version": "1.0.0",
19868 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
19869 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
19870 "requires": {
19871 "is-descriptor": "^1.0.0"
19872 }
19873 },
19874 "extend-shallow": {
19875 "version": "2.0.1",
19876 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
19877 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
19878 "requires": {
19879 "is-extendable": "^0.1.0"
19880 }
19881 },
19882 "is-accessor-descriptor": {
19883 "version": "1.0.0",
19884 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
19885 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
19886 "requires": {
19887 "kind-of": "^6.0.0"
19888 },
19889 "dependencies": {
19890 "kind-of": {
19891 "version": "6.0.2",
19892 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
19893 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
19894 }
19895 }
19896 },
19897 "is-data-descriptor": {
19898 "version": "1.0.0",
19899 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
19900 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
19901 "requires": {
19902 "kind-of": "^6.0.0"
19903 },
19904 "dependencies": {
19905 "kind-of": {
19906 "version": "6.0.2",
19907 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
19908 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
19909 }
19910 }
19911 },
19912 "is-descriptor": {
19913 "version": "1.0.2",
19914 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
19915 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
19916 "requires": {
19917 "is-accessor-descriptor": "^1.0.0",
19918 "is-data-descriptor": "^1.0.0",
19919 "kind-of": "^6.0.2"
19920 },
19921 "dependencies": {
19922 "kind-of": {
19923 "version": "6.0.2",
19924 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
19925 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
19926 }
19927 }
19928 },
19929 "kind-of": {
19930 "version": "4.0.0",
19931 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
19932 "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
19933 "requires": {
19934 "is-buffer": "^1.1.5"
19935 }
19936 },
19937 "lazy-cache": {
19938 "version": "0.2.7",
19939 "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz",
19940 "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U="
19941 },
19942 "ms": {
19943 "version": "2.0.0",
19944 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
19945 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
19946 },
19947 "prompt-choices": {
19948 "version": "3.0.6",
19949 "resolved": "https://registry.npmjs.org/prompt-choices/-/prompt-choices-3.0.6.tgz",
19950 "integrity": "sha1-XDXD2Z7hft/ZVjwfuBBGsISe+P8=",
19951 "requires": {
19952 "arr-flatten": "^1.0.3",
19953 "choices-separator": "^2.0.0",
19954 "clone-deep": "^0.3.0",
19955 "collection-visit": "^1.0.0",
19956 "debug": "^2.6.8",
19957 "define-property": "^1.0.0",
19958 "extend-shallow": "^2.0.1",
19959 "is-number": "^3.0.0",
19960 "kind-of": "^4.0.0",
19961 "lazy-cache": "^2.0.2",
19962 "log-utils": "^0.2.1",
19963 "pointer-symbol": "^1.0.0",
19964 "radio-symbol": "^2.0.0",
19965 "set-value": "^1.0.0",
19966 "strip-color": "^0.1.0",
19967 "terminal-paginator": "^2.0.0",
19968 "toggle-array": "^1.0.1"
19969 },
19970 "dependencies": {
19971 "lazy-cache": {
19972 "version": "2.0.2",
19973 "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
19974 "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=",
19975 "requires": {
19976 "set-getter": "^0.1.0"
19977 }
19978 }
19979 }
19980 },
19981 "set-value": {
19982 "version": "1.0.0",
19983 "resolved": "https://registry.npmjs.org/set-value/-/set-value-1.0.0.tgz",
19984 "integrity": "sha1-vMdvcaDx4HokuYfQoCr+yfZlME8=",
19985 "requires": {
19986 "extend-shallow": "^2.0.1",
19987 "is-extendable": "^0.1.1",
19988 "is-plain-object": "^2.0.1",
19989 "to-object-path": "^0.3.0"
19990 }
19991 },
19992 "shallow-clone": {
19993 "version": "0.1.2",
19994 "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz",
19995 "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=",
19996 "requires": {
19997 "is-extendable": "^0.1.1",
19998 "kind-of": "^2.0.1",
19999 "lazy-cache": "^0.2.3",
20000 "mixin-object": "^2.0.1"
20001 },
20002 "dependencies": {
20003 "kind-of": {
20004 "version": "2.0.1",
20005 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz",
20006 "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=",
20007 "requires": {
20008 "is-buffer": "^1.0.2"
20009 }
20010 }
20011 }
20012 }
20013 }
20014 },
20015 "prompt-radio": {
20016 "version": "1.2.1",
20017 "resolved": "https://registry.npmjs.org/prompt-radio/-/prompt-radio-1.2.1.tgz",
20018 "integrity": "sha512-vH1iAkgbWyvZBC1BTajydiHmwJP4F1b684gq0fm2wOjPVW1zaDo01OXWr/Dske0XdoHhtZFNMOXNj/ZUSRBywg==",
20019 "requires": {
20020 "debug": "^2.6.8",
20021 "prompt-checkbox": "^2.2.0"
20022 },
20023 "dependencies": {
20024 "debug": {
20025 "version": "2.6.9",
20026 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
20027 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
20028 "requires": {
20029 "ms": "2.0.0"
20030 }
20031 },
20032 "ms": {
20033 "version": "2.0.0",
20034 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
20035 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
20036 }
20037 }
20038 },
20039 "prompt-rawlist": {
20040 "version": "2.0.1",
20041 "resolved": "https://registry.npmjs.org/prompt-rawlist/-/prompt-rawlist-2.0.1.tgz",
20042 "integrity": "sha512-mhCPnC7fvjcCZuksiF380arJKiXjSP9WT6kZqO+biFg+yHBpDLAs4GCck5nRkvL9ikYur/wPz6fAzV63HI7gLg==",
20043 "requires": {
20044 "ansi-cyan": "^0.1.1",
20045 "ansi-dim": "^0.1.1",
20046 "ansi-red": "^0.1.1",
20047 "is-number": "^3.0.0",
20048 "prompt-list": "^2.0.1"
20049 },
20050 "dependencies": {
20051 "debug": {
20052 "version": "3.2.6",
20053 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
20054 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
20055 "requires": {
20056 "ms": "^2.1.1"
20057 }
20058 },
20059 "prompt-list": {
20060 "version": "2.2.0",
20061 "resolved": "https://registry.npmjs.org/prompt-list/-/prompt-list-2.2.0.tgz",
20062 "integrity": "sha512-41Eu3las4OthLTotMC6VyGPQaLXKWnoyqirgGKzTHxErV5JEediDkdjv+FF4AKTwBCkpt2I0TQSa24qAU1b9Bw==",
20063 "requires": {
20064 "ansi-cyan": "^0.1.1",
20065 "ansi-dim": "^0.1.1",
20066 "debug": "^3.0.1",
20067 "prompt-radio": "^1.2.1"
20068 }
20069 }
20070 }
20071 },
18233 "prompts": { 20072 "prompts": {
18234 "version": "2.2.1", 20073 "version": "2.2.1",
18235 "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", 20074 "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz",
@@ -18284,7 +20123,6 @@
18284 "version": "2.0.5", 20123 "version": "2.0.5",
18285 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", 20124 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
18286 "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", 20125 "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
18287 "dev": true,
18288 "requires": { 20126 "requires": {
18289 "forwarded": "~0.1.2", 20127 "forwarded": "~0.1.2",
18290 "ipaddr.js": "1.9.0" 20128 "ipaddr.js": "1.9.0"
@@ -18305,14 +20143,12 @@
18305 "pseudomap": { 20143 "pseudomap": {
18306 "version": "1.0.2", 20144 "version": "1.0.2",
18307 "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 20145 "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
18308 "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 20146 "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
18309 "dev": true
18310 }, 20147 },
18311 "psl": { 20148 "psl": {
18312 "version": "1.4.0", 20149 "version": "1.4.0",
18313 "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", 20150 "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
18314 "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", 20151 "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw=="
18315 "dev": true
18316 }, 20152 },
18317 "public-encrypt": { 20153 "public-encrypt": {
18318 "version": "4.0.3", 20154 "version": "4.0.3",
@@ -18332,7 +20168,6 @@
18332 "version": "3.0.0", 20168 "version": "3.0.0",
18333 "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 20169 "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
18334 "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 20170 "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
18335 "dev": true,
18336 "requires": { 20171 "requires": {
18337 "end-of-stream": "^1.1.0", 20172 "end-of-stream": "^1.1.0",
18338 "once": "^1.3.1" 20173 "once": "^1.3.1"
@@ -18364,8 +20199,7 @@
18364 "punycode": { 20199 "punycode": {
18365 "version": "2.1.1", 20200 "version": "2.1.1",
18366 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 20201 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
18367 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 20202 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
18368 "dev": true
18369 }, 20203 },
18370 "pupa": { 20204 "pupa": {
18371 "version": "1.0.0", 20205 "version": "1.0.0",
@@ -18381,8 +20215,7 @@
18381 "qs": { 20215 "qs": {
18382 "version": "6.5.2", 20216 "version": "6.5.2",
18383 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 20217 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
18384 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", 20218 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
18385 "dev": true
18386 }, 20219 },
18387 "query-string": { 20220 "query-string": {
18388 "version": "4.3.4", 20221 "version": "4.3.4",
@@ -18417,6 +20250,21 @@
18417 "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", 20250 "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
18418 "dev": true 20251 "dev": true
18419 }, 20252 },
20253 "radio-symbol": {
20254 "version": "2.0.0",
20255 "resolved": "https://registry.npmjs.org/radio-symbol/-/radio-symbol-2.0.0.tgz",
20256 "integrity": "sha1-eqm/xQSFY21S3XbWqOYxspB5muE=",
20257 "requires": {
20258 "ansi-gray": "^0.1.1",
20259 "ansi-green": "^0.1.1",
20260 "is-windows": "^1.0.1"
20261 }
20262 },
20263 "random-bytes": {
20264 "version": "1.0.0",
20265 "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
20266 "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
20267 },
18420 "randomatic": { 20268 "randomatic": {
18421 "version": "3.1.1", 20269 "version": "3.1.1",
18422 "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", 20270 "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
@@ -18465,7 +20313,6 @@
18465 "version": "2.4.0", 20313 "version": "2.4.0",
18466 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 20314 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
18467 "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 20315 "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
18468 "dev": true,
18469 "requires": { 20316 "requires": {
18470 "bytes": "3.1.0", 20317 "bytes": "3.1.0",
18471 "http-errors": "1.7.2", 20318 "http-errors": "1.7.2",
@@ -18476,8 +20323,7 @@
18476 "bytes": { 20323 "bytes": {
18477 "version": "3.1.0", 20324 "version": "3.1.0",
18478 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 20325 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
18479 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 20326 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
18480 "dev": true
18481 } 20327 }
18482 } 20328 }
18483 }, 20329 },
@@ -18485,7 +20331,6 @@
18485 "version": "1.2.8", 20331 "version": "1.2.8",
18486 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 20332 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
18487 "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 20333 "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
18488 "dev": true,
18489 "requires": { 20334 "requires": {
18490 "deep-extend": "^0.6.0", 20335 "deep-extend": "^0.6.0",
18491 "ini": "~1.3.0", 20336 "ini": "~1.3.0",
@@ -18496,8 +20341,7 @@
18496 "minimist": { 20341 "minimist": {
18497 "version": "1.2.0", 20342 "version": "1.2.0",
18498 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 20343 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
18499 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 20344 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
18500 "dev": true
18501 } 20345 }
18502 } 20346 }
18503 }, 20347 },
@@ -18943,6 +20787,101 @@
18943 } 20787 }
18944 } 20788 }
18945 }, 20789 },
20790 "readline-ui": {
20791 "version": "2.2.3",
20792 "resolved": "https://registry.npmjs.org/readline-ui/-/readline-ui-2.2.3.tgz",
20793 "integrity": "sha512-ix7jz0PxqQqcIuq3yQTHv1TOhlD2IHO74aNO+lSuXsRYm1d+pdyup1yF3zKyLK1wWZrVNGjkzw5tUegO2IDy+A==",
20794 "requires": {
20795 "component-emitter": "^1.2.1",
20796 "debug": "^2.6.8",
20797 "readline-utils": "^2.2.1",
20798 "string-width": "^2.0.0"
20799 },
20800 "dependencies": {
20801 "debug": {
20802 "version": "2.6.9",
20803 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
20804 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
20805 "requires": {
20806 "ms": "2.0.0"
20807 }
20808 },
20809 "ms": {
20810 "version": "2.0.0",
20811 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
20812 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
20813 }
20814 }
20815 },
20816 "readline-utils": {
20817 "version": "2.2.3",
20818 "resolved": "https://registry.npmjs.org/readline-utils/-/readline-utils-2.2.3.tgz",
20819 "integrity": "sha1-b4R9a48ZFcORtYHDZ81HhzhiNRo=",
20820 "requires": {
20821 "arr-flatten": "^1.1.0",
20822 "extend-shallow": "^2.0.1",
20823 "is-buffer": "^1.1.5",
20824 "is-number": "^3.0.0",
20825 "is-windows": "^1.0.1",
20826 "koalas": "^1.0.2",
20827 "mute-stream": "0.0.7",
20828 "strip-color": "^0.1.0",
20829 "window-size": "^1.1.0"
20830 },
20831 "dependencies": {
20832 "define-property": {
20833 "version": "1.0.0",
20834 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
20835 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
20836 "requires": {
20837 "is-descriptor": "^1.0.0"
20838 }
20839 },
20840 "extend-shallow": {
20841 "version": "2.0.1",
20842 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
20843 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
20844 "requires": {
20845 "is-extendable": "^0.1.0"
20846 }
20847 },
20848 "is-accessor-descriptor": {
20849 "version": "1.0.0",
20850 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
20851 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
20852 "requires": {
20853 "kind-of": "^6.0.0"
20854 }
20855 },
20856 "is-data-descriptor": {
20857 "version": "1.0.0",
20858 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
20859 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
20860 "requires": {
20861 "kind-of": "^6.0.0"
20862 }
20863 },
20864 "is-descriptor": {
20865 "version": "1.0.2",
20866 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
20867 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
20868 "requires": {
20869 "is-accessor-descriptor": "^1.0.0",
20870 "is-data-descriptor": "^1.0.0",
20871 "kind-of": "^6.0.2"
20872 }
20873 },
20874 "window-size": {
20875 "version": "1.1.1",
20876 "resolved": "https://registry.npmjs.org/window-size/-/window-size-1.1.1.tgz",
20877 "integrity": "sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==",
20878 "requires": {
20879 "define-property": "^1.0.0",
20880 "is-number": "^3.0.0"
20881 }
20882 }
20883 }
20884 },
18946 "realpath-native": { 20885 "realpath-native": {
18947 "version": "1.1.0", 20886 "version": "1.1.0",
18948 "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", 20887 "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz",
@@ -18956,7 +20895,6 @@
18956 "version": "0.6.2", 20895 "version": "0.6.2",
18957 "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 20896 "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
18958 "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 20897 "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
18959 "dev": true,
18960 "requires": { 20898 "requires": {
18961 "resolve": "^1.1.6" 20899 "resolve": "^1.1.6"
18962 } 20900 }
@@ -19019,7 +20957,6 @@
19019 "version": "1.0.2", 20957 "version": "1.0.2",
19020 "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 20958 "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
19021 "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 20959 "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
19022 "dev": true,
19023 "requires": { 20960 "requires": {
19024 "extend-shallow": "^3.0.2", 20961 "extend-shallow": "^3.0.2",
19025 "safe-regex": "^1.1.0" 20962 "safe-regex": "^1.1.0"
@@ -19223,14 +21160,12 @@
19223 "repeat-element": { 21160 "repeat-element": {
19224 "version": "1.1.3", 21161 "version": "1.1.3",
19225 "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 21162 "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
19226 "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 21163 "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
19227 "dev": true
19228 }, 21164 },
19229 "repeat-string": { 21165 "repeat-string": {
19230 "version": "1.6.1", 21166 "version": "1.6.1",
19231 "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 21167 "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
19232 "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 21168 "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
19233 "dev": true
19234 }, 21169 },
19235 "repeating": { 21170 "repeating": {
19236 "version": "2.0.1", 21171 "version": "2.0.1",
@@ -19262,7 +21197,6 @@
19262 "version": "2.88.0", 21197 "version": "2.88.0",
19263 "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", 21198 "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
19264 "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", 21199 "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
19265 "dev": true,
19266 "requires": { 21200 "requires": {
19267 "aws-sign2": "~0.7.0", 21201 "aws-sign2": "~0.7.0",
19268 "aws4": "^1.8.0", 21202 "aws4": "^1.8.0",
@@ -19306,6 +21240,11 @@
19306 "tough-cookie": "^2.3.3" 21240 "tough-cookie": "^2.3.3"
19307 } 21241 }
19308 }, 21242 },
21243 "require-all": {
21244 "version": "3.0.0",
21245 "resolved": "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz",
21246 "integrity": "sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI="
21247 },
19309 "require-directory": { 21248 "require-directory": {
19310 "version": "2.1.1", 21249 "version": "2.1.1",
19311 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 21250 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -19318,11 +21257,18 @@
19318 "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", 21257 "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
19319 "dev": true 21258 "dev": true
19320 }, 21259 },
21260 "require-stack": {
21261 "version": "1.0.2",
21262 "resolved": "https://registry.npmjs.org/require-stack/-/require-stack-1.0.2.tgz",
21263 "integrity": "sha1-4A7jSL+Wy1w+LUwntJ5BR24Ill0=",
21264 "requires": {
21265 "syntax-error": "^1.1.4"
21266 }
21267 },
19321 "require-uncached": { 21268 "require-uncached": {
19322 "version": "1.0.3", 21269 "version": "1.0.3",
19323 "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 21270 "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
19324 "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 21271 "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
19325 "dev": true,
19326 "requires": { 21272 "requires": {
19327 "caller-path": "^0.1.0", 21273 "caller-path": "^0.1.0",
19328 "resolve-from": "^1.0.0" 21274 "resolve-from": "^1.0.0"
@@ -19334,11 +21280,25 @@
19334 "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", 21280 "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
19335 "dev": true 21281 "dev": true
19336 }, 21282 },
21283 "resetable": {
21284 "version": "1.0.3",
21285 "resolved": "https://registry.npmjs.org/resetable/-/resetable-1.0.3.tgz",
21286 "integrity": "sha512-AJuhrcU5TVUaM5j0wSjZXlzt0Qb5pai7nDI+klgv7deuSHy5Kom7ovwBt5tMMO3XmJ9YYSCbKhkgDJHL4MEerQ==",
21287 "requires": {
21288 "clone": "^2.1.1"
21289 },
21290 "dependencies": {
21291 "clone": {
21292 "version": "2.1.2",
21293 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
21294 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
21295 }
21296 }
21297 },
19337 "resolve": { 21298 "resolve": {
19338 "version": "1.12.0", 21299 "version": "1.12.0",
19339 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", 21300 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
19340 "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", 21301 "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
19341 "dev": true,
19342 "requires": { 21302 "requires": {
19343 "path-parse": "^1.0.6" 21303 "path-parse": "^1.0.6"
19344 } 21304 }
@@ -19364,7 +21324,6 @@
19364 "version": "1.0.1", 21324 "version": "1.0.1",
19365 "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", 21325 "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
19366 "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", 21326 "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
19367 "dev": true,
19368 "requires": { 21327 "requires": {
19369 "expand-tilde": "^2.0.0", 21328 "expand-tilde": "^2.0.0",
19370 "global-modules": "^1.0.0" 21329 "global-modules": "^1.0.0"
@@ -19373,8 +21332,7 @@
19373 "resolve-from": { 21332 "resolve-from": {
19374 "version": "1.0.1", 21333 "version": "1.0.1",
19375 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 21334 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
19376 "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 21335 "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY="
19377 "dev": true
19378 }, 21336 },
19379 "resolve-options": { 21337 "resolve-options": {
19380 "version": "1.1.0", 21338 "version": "1.1.0",
@@ -19412,8 +21370,7 @@
19412 "ret": { 21370 "ret": {
19413 "version": "0.1.15", 21371 "version": "0.1.15",
19414 "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 21372 "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
19415 "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 21373 "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
19416 "dev": true
19417 }, 21374 },
19418 "retry": { 21375 "retry": {
19419 "version": "0.10.1", 21376 "version": "0.10.1",
@@ -19431,7 +21388,6 @@
19431 "version": "2.7.1", 21388 "version": "2.7.1",
19432 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 21389 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
19433 "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 21390 "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
19434 "dev": true,
19435 "requires": { 21391 "requires": {
19436 "glob": "^7.1.3" 21392 "glob": "^7.1.3"
19437 } 21393 }
@@ -19446,6 +21402,11 @@
19446 "inherits": "^2.0.1" 21402 "inherits": "^2.0.1"
19447 } 21403 }
19448 }, 21404 },
21405 "rndm": {
21406 "version": "1.2.0",
21407 "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz",
21408 "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w="
21409 },
19449 "route-parser": { 21410 "route-parser": {
19450 "version": "0.0.5", 21411 "version": "0.0.5",
19451 "resolved": "https://registry.npmjs.org/route-parser/-/route-parser-0.0.5.tgz", 21412 "resolved": "https://registry.npmjs.org/route-parser/-/route-parser-0.0.5.tgz",
@@ -19505,7 +21466,6 @@
19505 "version": "1.1.0", 21466 "version": "1.1.0",
19506 "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 21467 "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
19507 "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 21468 "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
19508 "dev": true,
19509 "requires": { 21469 "requires": {
19510 "ret": "~0.1.10" 21470 "ret": "~0.1.10"
19511 } 21471 }
@@ -19804,6 +21764,11 @@
19804 "ajv-keywords": "^3.1.0" 21764 "ajv-keywords": "^3.1.0"
19805 } 21765 }
19806 }, 21766 },
21767 "scmp": {
21768 "version": "2.0.0",
21769 "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.0.0.tgz",
21770 "integrity": "sha1-JHEQ7yLM+JexOj8KvdtSeCOTzWo="
21771 },
19807 "scss-tokenizer": { 21772 "scss-tokenizer": {
19808 "version": "0.2.3", 21773 "version": "0.2.3",
19809 "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", 21774 "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
@@ -19941,14 +21906,20 @@
19941 "set-blocking": { 21906 "set-blocking": {
19942 "version": "2.0.0", 21907 "version": "2.0.0",
19943 "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 21908 "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
19944 "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 21909 "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
19945 "dev": true 21910 },
21911 "set-getter": {
21912 "version": "0.1.0",
21913 "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz",
21914 "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=",
21915 "requires": {
21916 "to-object-path": "^0.3.0"
21917 }
19946 }, 21918 },
19947 "set-value": { 21919 "set-value": {
19948 "version": "2.0.1", 21920 "version": "2.0.1",
19949 "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 21921 "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
19950 "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 21922 "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
19951 "dev": true,
19952 "requires": { 21923 "requires": {
19953 "extend-shallow": "^2.0.1", 21924 "extend-shallow": "^2.0.1",
19954 "is-extendable": "^0.1.1", 21925 "is-extendable": "^0.1.1",
@@ -19960,7 +21931,6 @@
19960 "version": "2.0.1", 21931 "version": "2.0.1",
19961 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 21932 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
19962 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 21933 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
19963 "dev": true,
19964 "requires": { 21934 "requires": {
19965 "is-extendable": "^0.1.0" 21935 "is-extendable": "^0.1.0"
19966 } 21936 }
@@ -19975,8 +21945,7 @@
19975 "setprototypeof": { 21945 "setprototypeof": {
19976 "version": "1.1.1", 21946 "version": "1.1.1",
19977 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 21947 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
19978 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 21948 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
19979 "dev": true
19980 }, 21949 },
19981 "sha.js": { 21950 "sha.js": {
19982 "version": "2.4.11", 21951 "version": "2.4.11",
@@ -19988,11 +21957,27 @@
19988 "safe-buffer": "^5.0.1" 21957 "safe-buffer": "^5.0.1"
19989 } 21958 }
19990 }, 21959 },
21960 "shallow-clone": {
21961 "version": "1.0.0",
21962 "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
21963 "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
21964 "requires": {
21965 "is-extendable": "^0.1.1",
21966 "kind-of": "^5.0.0",
21967 "mixin-object": "^2.0.1"
21968 },
21969 "dependencies": {
21970 "kind-of": {
21971 "version": "5.1.0",
21972 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
21973 "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
21974 }
21975 }
21976 },
19991 "shebang-command": { 21977 "shebang-command": {
19992 "version": "1.2.0", 21978 "version": "1.2.0",
19993 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 21979 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
19994 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 21980 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
19995 "dev": true,
19996 "requires": { 21981 "requires": {
19997 "shebang-regex": "^1.0.0" 21982 "shebang-regex": "^1.0.0"
19998 } 21983 }
@@ -20000,8 +21985,7 @@
20000 "shebang-regex": { 21985 "shebang-regex": {
20001 "version": "1.0.0", 21986 "version": "1.0.0",
20002 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 21987 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
20003 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 21988 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
20004 "dev": true
20005 }, 21989 },
20006 "shellwords": { 21990 "shellwords": {
20007 "version": "0.1.1", 21991 "version": "0.1.1",
@@ -20018,8 +22002,15 @@
20018 "signal-exit": { 22002 "signal-exit": {
20019 "version": "3.0.2", 22003 "version": "3.0.2",
20020 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 22004 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
20021 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 22005 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
20022 "dev": true 22006 },
22007 "simple-encryptor": {
22008 "version": "2.0.0",
22009 "resolved": "https://registry.npmjs.org/simple-encryptor/-/simple-encryptor-2.0.0.tgz",
22010 "integrity": "sha512-dqjQbp9RwfMrE+my/7Pgz9viIsHmY3aQtybGJQkv2sL79YuDGmkxUjlmEBFGP6bcUjBRnSvqsBAcv1ro0Y4/5A==",
22011 "requires": {
22012 "scmp": "2.0.0"
22013 }
20023 }, 22014 },
20024 "simple-swizzle": { 22015 "simple-swizzle": {
20025 "version": "0.2.2", 22016 "version": "0.2.2",
@@ -20119,7 +22110,6 @@
20119 "version": "0.8.2", 22110 "version": "0.8.2",
20120 "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 22111 "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
20121 "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 22112 "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
20122 "dev": true,
20123 "requires": { 22113 "requires": {
20124 "base": "^0.11.1", 22114 "base": "^0.11.1",
20125 "debug": "^2.2.0", 22115 "debug": "^2.2.0",
@@ -20135,7 +22125,6 @@
20135 "version": "2.6.9", 22125 "version": "2.6.9",
20136 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 22126 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
20137 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 22127 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
20138 "dev": true,
20139 "requires": { 22128 "requires": {
20140 "ms": "2.0.0" 22129 "ms": "2.0.0"
20141 } 22130 }
@@ -20144,7 +22133,6 @@
20144 "version": "0.2.5", 22133 "version": "0.2.5",
20145 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 22134 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
20146 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 22135 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
20147 "dev": true,
20148 "requires": { 22136 "requires": {
20149 "is-descriptor": "^0.1.0" 22137 "is-descriptor": "^0.1.0"
20150 } 22138 }
@@ -20153,7 +22141,6 @@
20153 "version": "2.0.1", 22141 "version": "2.0.1",
20154 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 22142 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
20155 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 22143 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
20156 "dev": true,
20157 "requires": { 22144 "requires": {
20158 "is-extendable": "^0.1.0" 22145 "is-extendable": "^0.1.0"
20159 } 22146 }
@@ -20161,14 +22148,12 @@
20161 "ms": { 22148 "ms": {
20162 "version": "2.0.0", 22149 "version": "2.0.0",
20163 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 22150 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
20164 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 22151 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
20165 "dev": true
20166 }, 22152 },
20167 "source-map": { 22153 "source-map": {
20168 "version": "0.5.7", 22154 "version": "0.5.7",
20169 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 22155 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
20170 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 22156 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
20171 "dev": true
20172 } 22157 }
20173 } 22158 }
20174 }, 22159 },
@@ -20176,7 +22161,6 @@
20176 "version": "2.1.1", 22161 "version": "2.1.1",
20177 "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 22162 "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
20178 "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 22163 "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
20179 "dev": true,
20180 "requires": { 22164 "requires": {
20181 "define-property": "^1.0.0", 22165 "define-property": "^1.0.0",
20182 "isobject": "^3.0.0", 22166 "isobject": "^3.0.0",
@@ -20187,7 +22171,6 @@
20187 "version": "1.0.0", 22171 "version": "1.0.0",
20188 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 22172 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
20189 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 22173 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
20190 "dev": true,
20191 "requires": { 22174 "requires": {
20192 "is-descriptor": "^1.0.0" 22175 "is-descriptor": "^1.0.0"
20193 } 22176 }
@@ -20196,7 +22179,6 @@
20196 "version": "1.0.0", 22179 "version": "1.0.0",
20197 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 22180 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
20198 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 22181 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
20199 "dev": true,
20200 "requires": { 22182 "requires": {
20201 "kind-of": "^6.0.0" 22183 "kind-of": "^6.0.0"
20202 } 22184 }
@@ -20205,7 +22187,6 @@
20205 "version": "1.0.0", 22187 "version": "1.0.0",
20206 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 22188 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
20207 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 22189 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
20208 "dev": true,
20209 "requires": { 22190 "requires": {
20210 "kind-of": "^6.0.0" 22191 "kind-of": "^6.0.0"
20211 } 22192 }
@@ -20214,7 +22195,6 @@
20214 "version": "1.0.2", 22195 "version": "1.0.2",
20215 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 22196 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
20216 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 22197 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
20217 "dev": true,
20218 "requires": { 22198 "requires": {
20219 "is-accessor-descriptor": "^1.0.0", 22199 "is-accessor-descriptor": "^1.0.0",
20220 "is-data-descriptor": "^1.0.0", 22200 "is-data-descriptor": "^1.0.0",
@@ -20227,7 +22207,6 @@
20227 "version": "3.0.1", 22207 "version": "3.0.1",
20228 "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 22208 "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
20229 "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 22209 "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
20230 "dev": true,
20231 "requires": { 22210 "requires": {
20232 "kind-of": "^3.2.0" 22211 "kind-of": "^3.2.0"
20233 }, 22212 },
@@ -20236,7 +22215,6 @@
20236 "version": "3.2.2", 22215 "version": "3.2.2",
20237 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 22216 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
20238 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 22217 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
20239 "dev": true,
20240 "requires": { 22218 "requires": {
20241 "is-buffer": "^1.1.5" 22219 "is-buffer": "^1.1.5"
20242 } 22220 }
@@ -20641,7 +22619,6 @@
20641 "version": "3.1.0", 22619 "version": "3.1.0",
20642 "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 22620 "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
20643 "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 22621 "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
20644 "dev": true,
20645 "requires": { 22622 "requires": {
20646 "extend-shallow": "^3.0.0" 22623 "extend-shallow": "^3.0.0"
20647 } 22624 }
@@ -20702,11 +22679,20 @@
20702 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 22679 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
20703 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 22680 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
20704 }, 22681 },
22682 "sqlite3": {
22683 "version": "4.1.0",
22684 "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.1.0.tgz",
22685 "integrity": "sha512-RvqoKxq+8pDHsJo7aXxsFR18i+dU2Wp5o12qAJOV5LNcDt+fgJsc2QKKg3sIRfXrN9ZjzY1T7SNe/DFVqAXjaw==",
22686 "requires": {
22687 "nan": "^2.12.1",
22688 "node-pre-gyp": "^0.11.0",
22689 "request": "^2.87.0"
22690 }
22691 },
20705 "sshpk": { 22692 "sshpk": {
20706 "version": "1.16.1", 22693 "version": "1.16.1",
20707 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 22694 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
20708 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 22695 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
20709 "dev": true,
20710 "requires": { 22696 "requires": {
20711 "asn1": "~0.2.3", 22697 "asn1": "~0.2.3",
20712 "assert-plus": "^1.0.0", 22698 "assert-plus": "^1.0.0",
@@ -20731,8 +22717,7 @@
20731 "stack-trace": { 22717 "stack-trace": {
20732 "version": "0.0.10", 22718 "version": "0.0.10",
20733 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 22719 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
20734 "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", 22720 "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
20735 "dev": true
20736 }, 22721 },
20737 "stack-utils": { 22722 "stack-utils": {
20738 "version": "1.0.2", 22723 "version": "1.0.2",
@@ -20750,7 +22735,6 @@
20750 "version": "0.1.2", 22735 "version": "0.1.2",
20751 "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 22736 "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
20752 "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 22737 "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
20753 "dev": true,
20754 "requires": { 22738 "requires": {
20755 "define-property": "^0.2.5", 22739 "define-property": "^0.2.5",
20756 "object-copy": "^0.1.0" 22740 "object-copy": "^0.1.0"
@@ -20760,7 +22744,6 @@
20760 "version": "0.2.5", 22744 "version": "0.2.5",
20761 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 22745 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
20762 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 22746 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
20763 "dev": true,
20764 "requires": { 22747 "requires": {
20765 "is-descriptor": "^0.1.0" 22748 "is-descriptor": "^0.1.0"
20766 } 22749 }
@@ -20770,8 +22753,7 @@
20770 "statuses": { 22753 "statuses": {
20771 "version": "1.5.0", 22754 "version": "1.5.0",
20772 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 22755 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
20773 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 22756 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
20774 "dev": true
20775 }, 22757 },
20776 "stdout-stream": { 22758 "stdout-stream": {
20777 "version": "1.4.1", 22759 "version": "1.4.1",
@@ -20947,7 +22929,6 @@
20947 "version": "2.1.1", 22929 "version": "2.1.1",
20948 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 22930 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
20949 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 22931 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
20950 "dev": true,
20951 "requires": { 22932 "requires": {
20952 "is-fullwidth-code-point": "^2.0.0", 22933 "is-fullwidth-code-point": "^2.0.0",
20953 "strip-ansi": "^4.0.0" 22934 "strip-ansi": "^4.0.0"
@@ -20985,7 +22966,6 @@
20985 "version": "4.0.0", 22966 "version": "4.0.0",
20986 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 22967 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
20987 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 22968 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
20988 "dev": true,
20989 "requires": { 22969 "requires": {
20990 "ansi-regex": "^3.0.0" 22970 "ansi-regex": "^3.0.0"
20991 } 22971 }
@@ -20996,6 +22976,11 @@
20996 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 22976 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
20997 "dev": true 22977 "dev": true
20998 }, 22978 },
22979 "strip-color": {
22980 "version": "0.1.0",
22981 "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz",
22982 "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s="
22983 },
20999 "strip-eof": { 22984 "strip-eof": {
21000 "version": "1.0.0", 22985 "version": "1.0.0",
21001 "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 22986 "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
@@ -21011,8 +22996,7 @@
21011 "strip-json-comments": { 22996 "strip-json-comments": {
21012 "version": "2.0.1", 22997 "version": "2.0.1",
21013 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 22998 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
21014 "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 22999 "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
21015 "dev": true
21016 }, 23000 },
21017 "strong-log-transformer": { 23001 "strong-log-transformer": {
21018 "version": "2.1.0", 23002 "version": "2.1.0",
@@ -21033,6 +23017,11 @@
21033 } 23017 }
21034 } 23018 }
21035 }, 23019 },
23020 "success-symbol": {
23021 "version": "0.1.0",
23022 "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz",
23023 "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc="
23024 },
21036 "sumchecker": { 23025 "sumchecker": {
21037 "version": "2.0.2", 23026 "version": "2.0.2",
21038 "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", 23027 "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
@@ -21063,7 +23052,6 @@
21063 "version": "5.5.0", 23052 "version": "5.5.0",
21064 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 23053 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
21065 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 23054 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
21066 "dev": true,
21067 "requires": { 23055 "requires": {
21068 "has-flag": "^3.0.0" 23056 "has-flag": "^3.0.0"
21069 } 23057 }
@@ -21089,6 +23077,14 @@
21089 "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", 23077 "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
21090 "dev": true 23078 "dev": true
21091 }, 23079 },
23080 "syntax-error": {
23081 "version": "1.4.0",
23082 "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
23083 "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
23084 "requires": {
23085 "acorn-node": "^1.2.0"
23086 }
23087 },
21092 "table": { 23088 "table": {
21093 "version": "5.4.6", 23089 "version": "5.4.6",
21094 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 23090 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
@@ -21149,6 +23145,84 @@
21149 "yallist": "^3.0.3" 23145 "yallist": "^3.0.3"
21150 } 23146 }
21151 }, 23147 },
23148 "tar-fs": {
23149 "version": "1.16.3",
23150 "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
23151 "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
23152 "requires": {
23153 "chownr": "^1.0.1",
23154 "mkdirp": "^0.5.1",
23155 "pump": "^1.0.0",
23156 "tar-stream": "^1.1.2"
23157 },
23158 "dependencies": {
23159 "pump": {
23160 "version": "1.0.3",
23161 "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
23162 "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
23163 "requires": {
23164 "end-of-stream": "^1.1.0",
23165 "once": "^1.3.1"
23166 }
23167 }
23168 }
23169 },
23170 "tar-stream": {
23171 "version": "1.6.2",
23172 "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
23173 "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
23174 "requires": {
23175 "bl": "^1.0.0",
23176 "buffer-alloc": "^1.2.0",
23177 "end-of-stream": "^1.0.0",
23178 "fs-constants": "^1.0.0",
23179 "readable-stream": "^2.3.0",
23180 "to-buffer": "^1.1.1",
23181 "xtend": "^4.0.0"
23182 },
23183 "dependencies": {
23184 "readable-stream": {
23185 "version": "2.3.6",
23186 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
23187 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
23188 "requires": {
23189 "core-util-is": "~1.0.0",
23190 "inherits": "~2.0.3",
23191 "isarray": "~1.0.0",
23192 "process-nextick-args": "~2.0.0",
23193 "safe-buffer": "~5.1.1",
23194 "string_decoder": "~1.1.1",
23195 "util-deprecate": "~1.0.1"
23196 }
23197 },
23198 "safe-buffer": {
23199 "version": "5.1.2",
23200 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
23201 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
23202 },
23203 "string_decoder": {
23204 "version": "1.1.1",
23205 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
23206 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
23207 "requires": {
23208 "safe-buffer": "~5.1.0"
23209 }
23210 }
23211 }
23212 },
23213 "targz": {
23214 "version": "1.0.1",
23215 "resolved": "https://registry.npmjs.org/targz/-/targz-1.0.1.tgz",
23216 "integrity": "sha1-j3alI2lM3t+7XWCkB2/27uzFOY8=",
23217 "requires": {
23218 "tar-fs": "^1.8.1"
23219 }
23220 },
23221 "tarn": {
23222 "version": "1.1.5",
23223 "resolved": "https://registry.npmjs.org/tarn/-/tarn-1.1.5.tgz",
23224 "integrity": "sha512-PMtJ3HCLAZeedWjJPgGnCvcphbCOMbtZpjKgLq3qM5Qq9aQud+XHrL0WlrlgnTyS8U+jrjGbEXprFcQrxPy52g=="
23225 },
21152 "temp-dir": { 23226 "temp-dir": {
21153 "version": "1.0.0", 23227 "version": "1.0.0",
21154 "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", 23228 "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
@@ -21253,6 +23327,39 @@
21253 } 23327 }
21254 } 23328 }
21255 }, 23329 },
23330 "terminal-paginator": {
23331 "version": "2.0.2",
23332 "resolved": "https://registry.npmjs.org/terminal-paginator/-/terminal-paginator-2.0.2.tgz",
23333 "integrity": "sha512-IZMT5ECF9p4s+sNCV8uvZSW9E1+9zy9Ji9xz2oee8Jfo7hUFpauyjxkhfRcIH6Lu3Wdepv5D1kVRc8Hx74/LfQ==",
23334 "requires": {
23335 "debug": "^2.6.6",
23336 "extend-shallow": "^2.0.1",
23337 "log-utils": "^0.2.1"
23338 },
23339 "dependencies": {
23340 "debug": {
23341 "version": "2.6.9",
23342 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
23343 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
23344 "requires": {
23345 "ms": "2.0.0"
23346 }
23347 },
23348 "extend-shallow": {
23349 "version": "2.0.1",
23350 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
23351 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
23352 "requires": {
23353 "is-extendable": "^0.1.0"
23354 }
23355 },
23356 "ms": {
23357 "version": "2.0.0",
23358 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
23359 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
23360 }
23361 }
23362 },
21256 "ternary-stream": { 23363 "ternary-stream": {
21257 "version": "3.0.0", 23364 "version": "3.0.0",
21258 "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz", 23365 "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz",
@@ -21435,6 +23542,11 @@
21435 "integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==", 23542 "integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==",
21436 "dev": true 23543 "dev": true
21437 }, 23544 },
23545 "text-hex": {
23546 "version": "1.0.0",
23547 "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
23548 "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
23549 },
21438 "text-table": { 23550 "text-table": {
21439 "version": "0.2.0", 23551 "version": "0.2.0",
21440 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 23552 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -21558,7 +23670,6 @@
21558 "version": "1.2.0", 23670 "version": "1.2.0",
21559 "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", 23671 "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
21560 "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", 23672 "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
21561 "dev": true,
21562 "requires": { 23673 "requires": {
21563 "os-homedir": "^1.0.0" 23674 "os-homedir": "^1.0.0"
21564 } 23675 }
@@ -21566,8 +23677,7 @@
21566 "time-stamp": { 23677 "time-stamp": {
21567 "version": "1.1.0", 23678 "version": "1.1.0",
21568 "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", 23679 "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
21569 "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", 23680 "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
21570 "dev": true
21571 }, 23681 },
21572 "timers-browserify": { 23682 "timers-browserify": {
21573 "version": "2.0.11", 23683 "version": "2.0.11",
@@ -21591,7 +23701,6 @@
21591 "version": "0.0.33", 23701 "version": "0.0.33",
21592 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 23702 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
21593 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 23703 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
21594 "dev": true,
21595 "requires": { 23704 "requires": {
21596 "os-tmpdir": "~1.0.2" 23705 "os-tmpdir": "~1.0.2"
21597 } 23706 }
@@ -21624,6 +23733,11 @@
21624 "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 23733 "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
21625 "dev": true 23734 "dev": true
21626 }, 23735 },
23736 "to-buffer": {
23737 "version": "1.1.1",
23738 "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
23739 "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
23740 },
21627 "to-fast-properties": { 23741 "to-fast-properties": {
21628 "version": "2.0.0", 23742 "version": "2.0.0",
21629 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 23743 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -21634,7 +23748,6 @@
21634 "version": "0.3.0", 23748 "version": "0.3.0",
21635 "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 23749 "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
21636 "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 23750 "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
21637 "dev": true,
21638 "requires": { 23751 "requires": {
21639 "kind-of": "^3.0.2" 23752 "kind-of": "^3.0.2"
21640 }, 23753 },
@@ -21643,7 +23756,6 @@
21643 "version": "3.2.2", 23756 "version": "3.2.2",
21644 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 23757 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
21645 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 23758 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
21646 "dev": true,
21647 "requires": { 23759 "requires": {
21648 "is-buffer": "^1.1.5" 23760 "is-buffer": "^1.1.5"
21649 } 23761 }
@@ -21660,7 +23772,6 @@
21660 "version": "3.0.2", 23772 "version": "3.0.2",
21661 "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 23773 "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
21662 "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 23774 "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
21663 "dev": true,
21664 "requires": { 23775 "requires": {
21665 "define-property": "^2.0.2", 23776 "define-property": "^2.0.2",
21666 "extend-shallow": "^3.0.2", 23777 "extend-shallow": "^3.0.2",
@@ -21672,7 +23783,6 @@
21672 "version": "2.1.1", 23783 "version": "2.1.1",
21673 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 23784 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
21674 "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 23785 "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
21675 "dev": true,
21676 "requires": { 23786 "requires": {
21677 "is-number": "^3.0.0", 23787 "is-number": "^3.0.0",
21678 "repeat-string": "^1.6.1" 23788 "repeat-string": "^1.6.1"
@@ -21729,17 +23839,23 @@
21729 } 23839 }
21730 } 23840 }
21731 }, 23841 },
23842 "toggle-array": {
23843 "version": "1.0.1",
23844 "resolved": "https://registry.npmjs.org/toggle-array/-/toggle-array-1.0.1.tgz",
23845 "integrity": "sha1-y/WEB5K9UJfzMReugkyTKv/ofVg=",
23846 "requires": {
23847 "isobject": "^3.0.0"
23848 }
23849 },
21732 "toidentifier": { 23850 "toidentifier": {
21733 "version": "1.0.0", 23851 "version": "1.0.0",
21734 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 23852 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
21735 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 23853 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
21736 "dev": true
21737 }, 23854 },
21738 "tough-cookie": { 23855 "tough-cookie": {
21739 "version": "2.4.3", 23856 "version": "2.4.3",
21740 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", 23857 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
21741 "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", 23858 "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
21742 "dev": true,
21743 "requires": { 23859 "requires": {
21744 "psl": "^1.1.24", 23860 "psl": "^1.1.24",
21745 "punycode": "^1.4.1" 23861 "punycode": "^1.4.1"
@@ -21748,8 +23864,7 @@
21748 "punycode": { 23864 "punycode": {
21749 "version": "1.4.1", 23865 "version": "1.4.1",
21750 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 23866 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
21751 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 23867 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
21752 "dev": true
21753 } 23868 }
21754 } 23869 }
21755 }, 23870 },
@@ -21786,6 +23901,11 @@
21786 "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 23901 "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
21787 "dev": true 23902 "dev": true
21788 }, 23903 },
23904 "triple-beam": {
23905 "version": "1.3.0",
23906 "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
23907 "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
23908 },
21789 "true-case-path": { 23909 "true-case-path": {
21790 "version": "1.0.3", 23910 "version": "1.0.3",
21791 "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", 23911 "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
@@ -21934,6 +24054,11 @@
21934 } 24054 }
21935 } 24055 }
21936 }, 24056 },
24057 "tsscmp": {
24058 "version": "1.0.6",
24059 "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
24060 "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="
24061 },
21937 "tsutils": { 24062 "tsutils": {
21938 "version": "2.29.0", 24063 "version": "2.29.0",
21939 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", 24064 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
@@ -21953,7 +24078,6 @@
21953 "version": "0.6.0", 24078 "version": "0.6.0",
21954 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 24079 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
21955 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 24080 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
21956 "dev": true,
21957 "requires": { 24081 "requires": {
21958 "safe-buffer": "^5.0.1" 24082 "safe-buffer": "^5.0.1"
21959 } 24083 }
@@ -21966,8 +24090,7 @@
21966 "tweetnacl": { 24090 "tweetnacl": {
21967 "version": "0.14.5", 24091 "version": "0.14.5",
21968 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 24092 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
21969 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 24093 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
21970 "dev": true
21971 }, 24094 },
21972 "type": { 24095 "type": {
21973 "version": "1.0.3", 24096 "version": "1.0.3",
@@ -21993,7 +24116,6 @@
21993 "version": "1.6.18", 24116 "version": "1.6.18",
21994 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 24117 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
21995 "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 24118 "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
21996 "dev": true,
21997 "requires": { 24119 "requires": {
21998 "media-typer": "0.3.0", 24120 "media-typer": "0.3.0",
21999 "mime-types": "~2.1.24" 24121 "mime-types": "~2.1.24"
@@ -22002,20 +24124,23 @@
22002 "mime-db": { 24124 "mime-db": {
22003 "version": "1.40.0", 24125 "version": "1.40.0",
22004 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", 24126 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
22005 "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", 24127 "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
22006 "dev": true
22007 }, 24128 },
22008 "mime-types": { 24129 "mime-types": {
22009 "version": "2.1.24", 24130 "version": "2.1.24",
22010 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", 24131 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
22011 "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", 24132 "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
22012 "dev": true,
22013 "requires": { 24133 "requires": {
22014 "mime-db": "1.40.0" 24134 "mime-db": "1.40.0"
22015 } 24135 }
22016 } 24136 }
22017 } 24137 }
22018 }, 24138 },
24139 "type-of-is": {
24140 "version": "3.5.1",
24141 "resolved": "https://registry.npmjs.org/type-of-is/-/type-of-is-3.5.1.tgz",
24142 "integrity": "sha1-7sL8ibgo2/mQDrZBbu4w9P4PzTE="
24143 },
22019 "typedarray": { 24144 "typedarray": {
22020 "version": "0.0.6", 24145 "version": "0.0.6",
22021 "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 24146 "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -22048,6 +24173,14 @@
22048 "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", 24173 "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=",
22049 "dev": true 24174 "dev": true
22050 }, 24175 },
24176 "uid-safe": {
24177 "version": "2.1.5",
24178 "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
24179 "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
24180 "requires": {
24181 "random-bytes": "~1.0.0"
24182 }
24183 },
22051 "ultron": { 24184 "ultron": {
22052 "version": "1.0.2", 24185 "version": "1.0.2",
22053 "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", 24186 "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
@@ -22063,8 +24196,7 @@
22063 "unc-path-regex": { 24196 "unc-path-regex": {
22064 "version": "0.1.2", 24197 "version": "0.1.2",
22065 "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 24198 "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
22066 "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 24199 "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo="
22067 "dev": true
22068 }, 24200 },
22069 "undertaker": { 24201 "undertaker": {
22070 "version": "1.2.1", 24202 "version": "1.2.1",
@@ -22121,7 +24253,6 @@
22121 "version": "1.0.1", 24253 "version": "1.0.1",
22122 "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 24254 "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
22123 "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 24255 "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
22124 "dev": true,
22125 "requires": { 24256 "requires": {
22126 "arr-union": "^3.1.0", 24257 "arr-union": "^3.1.0",
22127 "get-value": "^2.0.6", 24258 "get-value": "^2.0.6",
@@ -22191,14 +24322,12 @@
22191 "unpipe": { 24322 "unpipe": {
22192 "version": "1.0.0", 24323 "version": "1.0.0",
22193 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 24324 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
22194 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 24325 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
22195 "dev": true
22196 }, 24326 },
22197 "unset-value": { 24327 "unset-value": {
22198 "version": "1.0.0", 24328 "version": "1.0.0",
22199 "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 24329 "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
22200 "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 24330 "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
22201 "dev": true,
22202 "requires": { 24331 "requires": {
22203 "has-value": "^0.3.1", 24332 "has-value": "^0.3.1",
22204 "isobject": "^3.0.0" 24333 "isobject": "^3.0.0"
@@ -22208,7 +24337,6 @@
22208 "version": "0.3.1", 24337 "version": "0.3.1",
22209 "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 24338 "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
22210 "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 24339 "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
22211 "dev": true,
22212 "requires": { 24340 "requires": {
22213 "get-value": "^2.0.3", 24341 "get-value": "^2.0.3",
22214 "has-values": "^0.1.4", 24342 "has-values": "^0.1.4",
@@ -22219,7 +24347,6 @@
22219 "version": "2.1.0", 24347 "version": "2.1.0",
22220 "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 24348 "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
22221 "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 24349 "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
22222 "dev": true,
22223 "requires": { 24350 "requires": {
22224 "isarray": "1.0.0" 24351 "isarray": "1.0.0"
22225 } 24352 }
@@ -22229,8 +24356,7 @@
22229 "has-values": { 24356 "has-values": {
22230 "version": "0.1.4", 24357 "version": "0.1.4",
22231 "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 24358 "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
22232 "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 24359 "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
22233 "dev": true
22234 } 24360 }
22235 } 24361 }
22236 }, 24362 },
@@ -22254,6 +24380,14 @@
22254 "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", 24380 "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
22255 "dev": true 24381 "dev": true
22256 }, 24382 },
24383 "upcast": {
24384 "version": "2.1.2",
24385 "resolved": "https://registry.npmjs.org/upcast/-/upcast-2.1.2.tgz",
24386 "integrity": "sha512-c+ueM175OVWv9vr1SYA3rI1ao0bxq6Y7l6u5Sac25Hi0yWz9Lz341zt9/sVOa5+7lYcvHMb0xxaacFy/2lVF2w==",
24387 "requires": {
24388 "cross-env": "^5.1.0"
24389 }
24390 },
22257 "update-notifier": { 24391 "update-notifier": {
22258 "version": "3.0.1", 24392 "version": "3.0.1",
22259 "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz", 24393 "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz",
@@ -22283,7 +24417,6 @@
22283 "version": "4.2.2", 24417 "version": "4.2.2",
22284 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 24418 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
22285 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 24419 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
22286 "dev": true,
22287 "requires": { 24420 "requires": {
22288 "punycode": "^2.1.0" 24421 "punycode": "^2.1.0"
22289 } 24422 }
@@ -22341,8 +24474,7 @@
22341 "use": { 24474 "use": {
22342 "version": "3.1.1", 24475 "version": "3.1.1",
22343 "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 24476 "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
22344 "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 24477 "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
22345 "dev": true
22346 }, 24478 },
22347 "user-home": { 24479 "user-home": {
22348 "version": "1.1.1", 24480 "version": "1.1.1",
@@ -22350,6 +24482,15 @@
22350 "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 24482 "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
22351 "dev": true 24483 "dev": true
22352 }, 24484 },
24485 "useragent": {
24486 "version": "2.3.0",
24487 "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
24488 "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==",
24489 "requires": {
24490 "lru-cache": "4.1.x",
24491 "tmp": "0.0.x"
24492 }
24493 },
22353 "utf8": { 24494 "utf8": {
22354 "version": "3.0.0", 24495 "version": "3.0.0",
22355 "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", 24496 "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
@@ -22429,7 +24570,6 @@
22429 "version": "3.1.3", 24570 "version": "3.1.3",
22430 "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", 24571 "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz",
22431 "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", 24572 "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==",
22432 "dev": true,
22433 "requires": { 24573 "requires": {
22434 "homedir-polyfill": "^1.0.1" 24574 "homedir-polyfill": "^1.0.1"
22435 } 24575 }
@@ -22467,14 +24607,12 @@
22467 "vary": { 24607 "vary": {
22468 "version": "1.1.2", 24608 "version": "1.1.2",
22469 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 24609 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
22470 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 24610 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
22471 "dev": true
22472 }, 24611 },
22473 "verror": { 24612 "verror": {
22474 "version": "1.10.0", 24613 "version": "1.10.0",
22475 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 24614 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
22476 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 24615 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
22477 "dev": true,
22478 "requires": { 24616 "requires": {
22479 "assert-plus": "^1.0.0", 24617 "assert-plus": "^1.0.0",
22480 "core-util-is": "1.0.2", 24618 "core-util-is": "1.0.2",
@@ -22653,6 +24791,11 @@
22653 "loose-envify": "^1.0.0" 24791 "loose-envify": "^1.0.0"
22654 } 24792 }
22655 }, 24793 },
24794 "warning-symbol": {
24795 "version": "0.1.0",
24796 "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz",
24797 "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE="
24798 },
22656 "watchpack": { 24799 "watchpack": {
22657 "version": "1.6.0", 24800 "version": "1.6.0",
22658 "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", 24801 "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
@@ -23105,7 +25248,6 @@
23105 "version": "1.3.1", 25248 "version": "1.3.1",
23106 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 25249 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
23107 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 25250 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
23108 "dev": true,
23109 "requires": { 25251 "requires": {
23110 "isexe": "^2.0.0" 25252 "isexe": "^2.0.0"
23111 } 25253 }
@@ -23120,7 +25262,6 @@
23120 "version": "1.1.3", 25262 "version": "1.1.3",
23121 "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 25263 "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
23122 "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 25264 "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
23123 "dev": true,
23124 "requires": { 25265 "requires": {
23125 "string-width": "^1.0.2 || 2" 25266 "string-width": "^1.0.2 || 2"
23126 } 25267 }
@@ -23172,6 +25313,70 @@
23172 "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", 25313 "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz",
23173 "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" 25314 "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs="
23174 }, 25315 },
25316 "winston": {
25317 "version": "3.2.1",
25318 "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz",
25319 "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==",
25320 "requires": {
25321 "async": "^2.6.1",
25322 "diagnostics": "^1.1.1",
25323 "is-stream": "^1.1.0",
25324 "logform": "^2.1.1",
25325 "one-time": "0.0.4",
25326 "readable-stream": "^3.1.1",
25327 "stack-trace": "0.0.x",
25328 "triple-beam": "^1.3.0",
25329 "winston-transport": "^4.3.0"
25330 },
25331 "dependencies": {
25332 "async": {
25333 "version": "2.6.3",
25334 "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
25335 "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
25336 "requires": {
25337 "lodash": "^4.17.14"
25338 }
25339 }
25340 }
25341 },
25342 "winston-transport": {
25343 "version": "4.3.0",
25344 "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz",
25345 "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==",
25346 "requires": {
25347 "readable-stream": "^2.3.6",
25348 "triple-beam": "^1.2.0"
25349 },
25350 "dependencies": {
25351 "readable-stream": {
25352 "version": "2.3.6",
25353 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
25354 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
25355 "requires": {
25356 "core-util-is": "~1.0.0",
25357 "inherits": "~2.0.3",
25358 "isarray": "~1.0.0",
25359 "process-nextick-args": "~2.0.0",
25360 "safe-buffer": "~5.1.1",
25361 "string_decoder": "~1.1.1",
25362 "util-deprecate": "~1.0.1"
25363 }
25364 },
25365 "safe-buffer": {
25366 "version": "5.1.2",
25367 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
25368 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
25369 },
25370 "string_decoder": {
25371 "version": "1.1.1",
25372 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
25373 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
25374 "requires": {
25375 "safe-buffer": "~5.1.0"
25376 }
25377 }
25378 }
25379 },
23175 "word-wrap": { 25380 "word-wrap": {
23176 "version": "1.2.3", 25381 "version": "1.2.3",
23177 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 25382 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -23449,6 +25654,24 @@
23449 "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", 25654 "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
23450 "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", 25655 "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
23451 "dev": true 25656 "dev": true
25657 },
25658 "youch": {
25659 "version": "2.0.10",
25660 "resolved": "https://registry.npmjs.org/youch/-/youch-2.0.10.tgz",
25661 "integrity": "sha512-qPLQW2TuwlcK9sm5i1Gbb9ezRZRZyzr6NsY5cqxsbh+2iEyKPxLlz0OSAc+pQ7mv1pYZLri1MXynggP6R2FcNQ==",
25662 "requires": {
25663 "cookie": "^0.3.1",
25664 "mustache": "^3.0.0",
25665 "stack-trace": "0.0.10"
25666 }
25667 },
25668 "youch-terminal": {
25669 "version": "1.0.0",
25670 "resolved": "https://registry.npmjs.org/youch-terminal/-/youch-terminal-1.0.0.tgz",
25671 "integrity": "sha512-rOVcJi5juKSUI3/mwAKOP+gjrUWUgb5AUTe2LZlfLBgLdfgnYtBKCrWc02GgRozDf/i6uXBu9/y3Vf6db+7k1A==",
25672 "requires": {
25673 "chalk": "^2.3.0"
25674 }
23452 } 25675 }
23453 } 25676 }
23454} 25677}
diff --git a/package.json b/package.json
index e016f7359..52681241b 100644
--- a/package.json
+++ b/package.json
@@ -37,6 +37,18 @@
37 "author": "Amine Mouafik <amine@mouafik.fr>", 37 "author": "Amine Mouafik <amine@mouafik.fr>",
38 "license": "Apache-2.0", 38 "license": "Apache-2.0",
39 "dependencies": { 39 "dependencies": {
40 "@adonisjs/ace": "5.0.8",
41 "@adonisjs/auth": "3.0.7",
42 "@adonisjs/bodyparser": "2.0.9",
43 "@adonisjs/cors": "1.0.7",
44 "@adonisjs/drive": "1.0.4",
45 "@adonisjs/fold": "4.0.9",
46 "@adonisjs/framework": "5.0.13",
47 "@adonisjs/ignitor": "2.0.8",
48 "@adonisjs/lucid": "6.1.3",
49 "@adonisjs/session": "1.0.29",
50 "@adonisjs/shield": "1.0.8",
51 "@adonisjs/validator": "5.0.6",
40 "@babel/polyfill": "7.4.4", 52 "@babel/polyfill": "7.4.4",
41 "@babel/runtime": "7.4.5", 53 "@babel/runtime": "7.4.5",
42 "@mdi/js": "4.2.95", 54 "@mdi/js": "4.2.95",
@@ -45,7 +57,9 @@
45 "@meetfranz/theme": "file:packages/theme", 57 "@meetfranz/theme": "file:packages/theme",
46 "@meetfranz/ui": "file:packages/ui", 58 "@meetfranz/ui": "file:packages/ui",
47 "address-rfc2822": "^2.0.1", 59 "address-rfc2822": "^2.0.1",
60 "atob": "2.1.2",
48 "auto-launch": "5.0.5", 61 "auto-launch": "5.0.5",
62 "btoa": "1.2.1",
49 "classnames": "2.2.6", 63 "classnames": "2.2.6",
50 "cld3-asm": "1.0.1", 64 "cld3-asm": "1.0.1",
51 "css": "2.2.4", 65 "css": "2.2.4",
@@ -78,6 +92,7 @@
78 "mobx-react-router": "3.1.2", 92 "mobx-react-router": "3.1.2",
79 "moment": "^2.17.1", 93 "moment": "^2.17.1",
80 "ms": "2.1.1", 94 "ms": "2.1.1",
95 "node-fetch": "2.6.0",
81 "normalize-url": "^1.9.1", 96 "normalize-url": "^1.9.1",
82 "pretty-bytes": "^4.0.2", 97 "pretty-bytes": "^4.0.2",
83 "prop-types": "^15.5.10", 98 "prop-types": "^15.5.10",
@@ -97,9 +112,11 @@
97 "route-parser": "^0.0.5", 112 "route-parser": "^0.0.5",
98 "semver": "^5.4.1", 113 "semver": "^5.4.1",
99 "smoothscroll-polyfill": "^0.3.4", 114 "smoothscroll-polyfill": "^0.3.4",
115 "sqlite3": "4.1.0",
100 "tar": "^4.0.2", 116 "tar": "^4.0.2",
117 "targz": "1.0.1",
101 "terser": "4.3.8", 118 "terser": "4.3.8",
102 "uuid": "^3.0.1", 119 "uuid": "3.3.3",
103 "validator": "11.0.0", 120 "validator": "11.0.0",
104 "ws": "6.2.1" 121 "ws": "6.2.1"
105 }, 122 },
@@ -109,7 +126,7 @@
109 "@babel/core": "^7.2.2", 126 "@babel/core": "^7.2.2",
110 "@babel/plugin-proposal-class-properties": "^7.0.0", 127 "@babel/plugin-proposal-class-properties": "^7.0.0",
111 "@babel/plugin-proposal-decorators": "^7.0.0", 128 "@babel/plugin-proposal-decorators": "^7.0.0",
112 "@babel/plugin-proposal-export-default-from": "^7.0.0", 129 "@babel/plugin-proposal-export-default-from": "7.5.2",
113 "@babel/plugin-proposal-throw-expressions": "^7.0.0", 130 "@babel/plugin-proposal-throw-expressions": "^7.0.0",
114 "@babel/plugin-syntax-dynamic-import": "^7.0.0", 131 "@babel/plugin-syntax-dynamic-import": "^7.0.0",
115 "@babel/plugin-transform-regenerator": "^7.0.0", 132 "@babel/plugin-transform-regenerator": "^7.0.0",
diff --git a/src/components/auth/Login.js b/src/components/auth/Login.js
index eea5a09bf..e58016e25 100644
--- a/src/components/auth/Login.js
+++ b/src/components/auth/Login.js
@@ -1,11 +1,13 @@
1/* eslint jsx-a11y/anchor-is-valid: 0 */
1import React, { Component } from 'react'; 2import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 4import { observer, inject } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 5import { defineMessages, intlShape } from 'react-intl';
5 6
6import { isDevMode, useLiveAPI } from '../../environment'; 7import { isDevMode, useLiveAPI } from '../../environment';
7import Form from '../../lib/Form'; 8import Form from '../../lib/Form';
8import { required, email } from '../../helpers/validation-helpers'; 9import { required, email } from '../../helpers/validation-helpers';
10import serverlessLogin from '../../helpers/serverless-helpers';
9import Input from '../ui/Input'; 11import Input from '../ui/Input';
10import Button from '../ui/Button'; 12import Button from '../ui/Button';
11import Link from '../ui/Link'; 13import Link from '../ui/Link';
@@ -54,13 +56,21 @@ const messages = defineMessages({
54 id: 'login.link.signup', 56 id: 'login.link.signup',
55 defaultMessage: '!!!Create a free account', 57 defaultMessage: '!!!Create a free account',
56 }, 58 },
59 changeServer: {
60 id: 'login.changeServer',
61 defaultMessage: '!!!Change server',
62 },
63 serverless: {
64 id: 'services.serverless',
65 defaultMessage: '!!!Use Ferdi without an Account',
66 },
57 passwordLink: { 67 passwordLink: {
58 id: 'login.link.password', 68 id: 'login.link.password',
59 defaultMessage: '!!!Forgot password', 69 defaultMessage: '!!!Forgot password',
60 }, 70 },
61}); 71});
62 72
63export default @observer class Login extends Component { 73export default @observer @inject('actions') class Login extends Component {
64 static propTypes = { 74 static propTypes = {
65 onSubmit: PropTypes.func.isRequired, 75 onSubmit: PropTypes.func.isRequired,
66 isSubmitting: PropTypes.bool.isRequired, 76 isSubmitting: PropTypes.bool.isRequired,
@@ -69,6 +79,7 @@ export default @observer class Login extends Component {
69 signupRoute: PropTypes.string.isRequired, 79 signupRoute: PropTypes.string.isRequired,
70 passwordRoute: PropTypes.string.isRequired, 80 passwordRoute: PropTypes.string.isRequired,
71 error: globalErrorPropType.isRequired, 81 error: globalErrorPropType.isRequired,
82 actions: PropTypes.object.isRequired,
72 }; 83 };
73 84
74 static contextTypes = { 85 static contextTypes = {
@@ -103,6 +114,10 @@ export default @observer class Login extends Component {
103 }); 114 });
104 } 115 }
105 116
117 useLocalServer() {
118 serverlessLogin(this.props.actions);
119 }
120
106 render() { 121 render() {
107 const { form } = this; 122 const { form } = this;
108 const { intl } = this.context; 123 const { intl } = this.context;
@@ -179,7 +194,8 @@ export default @observer class Login extends Component {
179 )} 194 )}
180 </form> 195 </form>
181 <div className="auth__links"> 196 <div className="auth__links">
182 <Link to="/settings/app">Change server</Link> 197 <Link to="/settings/app">{intl.formatMessage(messages.changeServer)}</Link>
198 <a onClick={this.useLocalServer.bind(this)}>{intl.formatMessage(messages.serverless)}</a>
183 <Link to={signupRoute}>{intl.formatMessage(messages.signupLink)}</Link> 199 <Link to={signupRoute}>{intl.formatMessage(messages.signupLink)}</Link>
184 <Link to={passwordRoute}>{intl.formatMessage(messages.passwordLink)}</Link> 200 <Link to={passwordRoute}>{intl.formatMessage(messages.passwordLink)}</Link>
185 </div> 201 </div>
diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js
index b36e71ce1..47e9daf18 100644
--- a/src/components/auth/Signup.js
+++ b/src/components/auth/Signup.js
@@ -1,11 +1,13 @@
1/* eslint jsx-a11y/anchor-is-valid: 0 */
1import React, { Component } from 'react'; 2import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 4import { observer, inject } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 5import { defineMessages, intlShape } from 'react-intl';
5 6
6import { isDevMode, useLiveAPI } from '../../environment'; 7import { isDevMode, useLiveAPI } from '../../environment';
7import Form from '../../lib/Form'; 8import Form from '../../lib/Form';
8import { required, email, minLength } from '../../helpers/validation-helpers'; 9import { required, email, minLength } from '../../helpers/validation-helpers';
10import serverlessLogin from '../../helpers/serverless-helpers';
9import Input from '../ui/Input'; 11import Input from '../ui/Input';
10import Button from '../ui/Button'; 12import Button from '../ui/Button';
11import Link from '../ui/Link'; 13import Link from '../ui/Link';
@@ -58,18 +60,27 @@ const messages = defineMessages({
58 id: 'signup.link.login', 60 id: 'signup.link.login',
59 defaultMessage: '!!!Already have an account, sign in?', 61 defaultMessage: '!!!Already have an account, sign in?',
60 }, 62 },
63 changeServer: {
64 id: 'login.changeServer',
65 defaultMessage: '!!!Change server',
66 },
67 serverless: {
68 id: 'services.serverless',
69 defaultMessage: '!!!Use Ferdi without an Account',
70 },
61 emailDuplicate: { 71 emailDuplicate: {
62 id: 'signup.emailDuplicate', 72 id: 'signup.emailDuplicate',
63 defaultMessage: '!!!A user with that email address already exists', 73 defaultMessage: '!!!A user with that email address already exists',
64 }, 74 },
65}); 75});
66 76
67export default @observer class Signup extends Component { 77export default @observer @inject('actions') class Signup extends Component {
68 static propTypes = { 78 static propTypes = {
69 onSubmit: PropTypes.func.isRequired, 79 onSubmit: PropTypes.func.isRequired,
70 isSubmitting: PropTypes.bool.isRequired, 80 isSubmitting: PropTypes.bool.isRequired,
71 loginRoute: PropTypes.string.isRequired, 81 loginRoute: PropTypes.string.isRequired,
72 error: globalErrorPropType.isRequired, 82 error: globalErrorPropType.isRequired,
83 actions: PropTypes.object.isRequired,
73 }; 84 };
74 85
75 static contextTypes = { 86 static contextTypes = {
@@ -112,6 +123,10 @@ export default @observer class Signup extends Component {
112 }); 123 });
113 } 124 }
114 125
126 useLocalServer() {
127 serverlessLogin(this.props.actions);
128 }
129
115 render() { 130 render() {
116 const { form } = this; 131 const { form } = this;
117 const { intl } = this.context; 132 const { intl } = this.context;
@@ -183,7 +198,8 @@ export default @observer class Signup extends Component {
183 </p> 198 </p>
184 </form> 199 </form>
185 <div className="auth__links"> 200 <div className="auth__links">
186 <Link to="/settings/app">Change server</Link> 201 <Link to="/settings/app">{intl.formatMessage(messages.changeServer)}</Link>
202 <a onClick={this.useLocalServer.bind(this)}>{intl.formatMessage(messages.serverless)}</a>
187 <Link to={loginRoute}>{intl.formatMessage(messages.loginLink)}</Link> 203 <Link to={loginRoute}>{intl.formatMessage(messages.loginLink)}</Link>
188 </div> 204 </div>
189 </div> 205 </div>
diff --git a/src/components/auth/Welcome.js b/src/components/auth/Welcome.js
index ef917e336..2ca8b430f 100644
--- a/src/components/auth/Welcome.js
+++ b/src/components/auth/Welcome.js
@@ -1,7 +1,9 @@
1/* eslint jsx-a11y/anchor-is-valid: 0 */
1import React, { Component } from 'react'; 2import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; 4import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 5import { defineMessages, intlShape } from 'react-intl';
6import serverlessLogin from '../../helpers/serverless-helpers';
5 7
6import Link from '../ui/Link'; 8import Link from '../ui/Link';
7 9
@@ -14,19 +16,28 @@ const messages = defineMessages({
14 id: 'welcome.loginButton', 16 id: 'welcome.loginButton',
15 defaultMessage: '!!!Login to your account', 17 defaultMessage: '!!!Login to your account',
16 }, 18 },
19 serverless: {
20 id: 'services.serverless',
21 defaultMessage: '!!!Use Ferdi without an Account',
22 },
17}); 23});
18 24
19export default @observer class Login extends Component { 25export default @observer @inject('actions') class Login extends Component {
20 static propTypes = { 26 static propTypes = {
21 loginRoute: PropTypes.string.isRequired, 27 loginRoute: PropTypes.string.isRequired,
22 signupRoute: PropTypes.string.isRequired, 28 signupRoute: PropTypes.string.isRequired,
23 recipes: MobxPropTypes.arrayOrObservableArray.isRequired, 29 recipes: MobxPropTypes.arrayOrObservableArray.isRequired,
30 actions: PropTypes.object.isRequired,
24 }; 31 };
25 32
26 static contextTypes = { 33 static contextTypes = {
27 intl: intlShape, 34 intl: intlShape,
28 }; 35 };
29 36
37 useLocalServer() {
38 serverlessLogin(this.props.actions);
39 }
40
30 render() { 41 render() {
31 const { intl } = this.context; 42 const { intl } = this.context;
32 const { 43 const {
@@ -53,6 +64,12 @@ export default @observer class Login extends Component {
53 </Link> 64 </Link>
54 <br /> 65 <br />
55 <br /> 66 <br />
67 <a className="button" onClick={this.useLocalServer.bind(this)}>
68 {intl.formatMessage(messages.serverless)}
69 </a>
70 <br />
71 <br />
72
56 73
57 <Link to="settings/app"> 74 <Link to="settings/app">
58 <span style={{ 75 <span style={{
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js
index caa3f3b23..80f17d8f2 100644
--- a/src/components/services/content/Services.js
+++ b/src/components/services/content/Services.js
@@ -1,6 +1,6 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; 3import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react';
4import { Link } from 'react-router'; 4import { Link } from 'react-router';
5import { defineMessages, intlShape } from 'react-intl'; 5import { defineMessages, intlShape } from 'react-intl';
6import Confetti from 'react-confetti'; 6import Confetti from 'react-confetti';
@@ -9,6 +9,7 @@ import injectSheet from 'react-jss';
9 9
10import ServiceView from './ServiceView'; 10import ServiceView from './ServiceView';
11import Appear from '../../ui/effects/Appear'; 11import Appear from '../../ui/effects/Appear';
12import serverlessLogin from '../../../helpers/serverless-helpers';
12 13
13const messages = defineMessages({ 14const messages = defineMessages({
14 welcome: { 15 welcome: {
@@ -23,6 +24,10 @@ const messages = defineMessages({
23 id: 'services.login', 24 id: 'services.login',
24 defaultMessage: '!!!Please login to use Ferdi.', 25 defaultMessage: '!!!Please login to use Ferdi.',
25 }, 26 },
27 serverless: {
28 id: 'services.serverless',
29 defaultMessage: '!!!Use Ferdi without an Account',
30 },
26 serverInfo: { 31 serverInfo: {
27 id: 'services.serverInfo', 32 id: 'services.serverInfo',
28 defaultMessage: '!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.', 33 defaultMessage: '!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.',
@@ -39,7 +44,7 @@ const styles = {
39 }, 44 },
40}; 45};
41 46
42export default @injectSheet(styles) @observer class Services extends Component { 47export default @injectSheet(styles) @inject('actions') @observer class Services extends Component {
43 static propTypes = { 48 static propTypes = {
44 services: MobxPropTypes.arrayOrObservableArray, 49 services: MobxPropTypes.arrayOrObservableArray,
45 setWebviewReference: PropTypes.func.isRequired, 50 setWebviewReference: PropTypes.func.isRequired,
@@ -52,6 +57,7 @@ export default @injectSheet(styles) @observer class Services extends Component {
52 userHasCompletedSignup: PropTypes.bool.isRequired, 57 userHasCompletedSignup: PropTypes.bool.isRequired,
53 hasActivatedTrial: PropTypes.bool.isRequired, 58 hasActivatedTrial: PropTypes.bool.isRequired,
54 classes: PropTypes.object.isRequired, 59 classes: PropTypes.object.isRequired,
60 actions: PropTypes.object.isRequired,
55 }; 61 };
56 62
57 static defaultProps = { 63 static defaultProps = {
@@ -68,6 +74,12 @@ export default @injectSheet(styles) @observer class Services extends Component {
68 74
69 _confettiTimeout = null; 75 _confettiTimeout = null;
70 76
77 constructor(props) {
78 super(props);
79
80 this.useLocalServer = this.useLocalServer.bind(this);
81 }
82
71 componentDidMount() { 83 componentDidMount() {
72 this._confettiTimeout = window.setTimeout(() => { 84 this._confettiTimeout = window.setTimeout(() => {
73 this.setState({ 85 this.setState({
@@ -82,6 +94,10 @@ export default @injectSheet(styles) @observer class Services extends Component {
82 } 94 }
83 } 95 }
84 96
97 useLocalServer() {
98 serverlessLogin(this.props.actions);
99 }
100
85 render() { 101 render() {
86 const { 102 const {
87 services, 103 services,
@@ -136,6 +152,18 @@ export default @injectSheet(styles) @observer class Services extends Component {
136 <Link to={isLoggedIn ? '/settings/services' : '/auth/welcome'} className="button"> 152 <Link to={isLoggedIn ? '/settings/services' : '/auth/welcome'} className="button">
137 { isLoggedIn ? intl.formatMessage(messages.getStarted) : 'Login' } 153 { isLoggedIn ? intl.formatMessage(messages.getStarted) : 'Login' }
138 </Link> 154 </Link>
155 {!isLoggedIn && (
156 <button
157 type="button"
158 className="button"
159 style={{
160 marginLeft: 10,
161 }}
162 onClick={this.useLocalServer}
163 >
164 {intl.formatMessage(messages.serverless)}
165 </button>
166 )}
139 </Appear> 167 </Appear>
140 </div> 168 </div>
141 </Appear> 169 </Appear>
diff --git a/src/helpers/serverless-helpers.js b/src/helpers/serverless-helpers.js
new file mode 100644
index 000000000..741bce7f9
--- /dev/null
+++ b/src/helpers/serverless-helpers.js
@@ -0,0 +1,16 @@
1export default function useLocalServer(actions) {
2 // Use local server for user
3 actions.settings.update({
4 type: 'app',
5 data: {
6 server: 'http://localhost:45569',
7 },
8 });
9
10 // Log into local server
11 // Credentials are ignored by the server but the client requires them
12 actions.user.login({
13 email: 'ferdi@localhost',
14 password: 'FERDI_',
15 });
16}
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index 6f380af3b..66b41ac21 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -272,143 +272,169 @@
272 "defaultMessage": "!!!Sign in", 272 "defaultMessage": "!!!Sign in",
273 "end": { 273 "end": {
274 "column": 3, 274 "column": 3,
275 "line": 20 275 "line": 22
276 }, 276 },
277 "file": "src/components/auth/Login.js", 277 "file": "src/components/auth/Login.js",
278 "id": "login.headline", 278 "id": "login.headline",
279 "start": { 279 "start": {
280 "column": 12, 280 "column": 12,
281 "line": 17 281 "line": 19
282 } 282 }
283 }, 283 },
284 { 284 {
285 "defaultMessage": "!!!Email address", 285 "defaultMessage": "!!!Email address",
286 "end": { 286 "end": {
287 "column": 3, 287 "column": 3,
288 "line": 24 288 "line": 26
289 }, 289 },
290 "file": "src/components/auth/Login.js", 290 "file": "src/components/auth/Login.js",
291 "id": "login.email.label", 291 "id": "login.email.label",
292 "start": { 292 "start": {
293 "column": 14, 293 "column": 14,
294 "line": 21 294 "line": 23
295 } 295 }
296 }, 296 },
297 { 297 {
298 "defaultMessage": "!!!Password", 298 "defaultMessage": "!!!Password",
299 "end": { 299 "end": {
300 "column": 3, 300 "column": 3,
301 "line": 28 301 "line": 30
302 }, 302 },
303 "file": "src/components/auth/Login.js", 303 "file": "src/components/auth/Login.js",
304 "id": "login.password.label", 304 "id": "login.password.label",
305 "start": { 305 "start": {
306 "column": 17, 306 "column": 17,
307 "line": 25 307 "line": 27
308 } 308 }
309 }, 309 },
310 { 310 {
311 "defaultMessage": "!!!Sign in", 311 "defaultMessage": "!!!Sign in",
312 "end": { 312 "end": {
313 "column": 3, 313 "column": 3,
314 "line": 32 314 "line": 34
315 }, 315 },
316 "file": "src/components/auth/Login.js", 316 "file": "src/components/auth/Login.js",
317 "id": "login.submit.label", 317 "id": "login.submit.label",
318 "start": { 318 "start": {
319 "column": 21, 319 "column": 21,
320 "line": 29 320 "line": 31
321 } 321 }
322 }, 322 },
323 { 323 {
324 "defaultMessage": "!!!Email or password not valid", 324 "defaultMessage": "!!!Email or password not valid",
325 "end": { 325 "end": {
326 "column": 3, 326 "column": 3,
327 "line": 36 327 "line": 38
328 }, 328 },
329 "file": "src/components/auth/Login.js", 329 "file": "src/components/auth/Login.js",
330 "id": "login.invalidCredentials", 330 "id": "login.invalidCredentials",
331 "start": { 331 "start": {
332 "column": 22, 332 "column": 22,
333 "line": 33 333 "line": 35
334 } 334 }
335 }, 335 },
336 { 336 {
337 "defaultMessage": "!!!Using a Franz account to log in?", 337 "defaultMessage": "!!!Using a Franz account to log in?",
338 "end": { 338 "end": {
339 "column": 3, 339 "column": 3,
340 "line": 40 340 "line": 42
341 }, 341 },
342 "file": "src/components/auth/Login.js", 342 "file": "src/components/auth/Login.js",
343 "id": "login.customServerQuestion", 343 "id": "login.customServerQuestion",
344 "start": { 344 "start": {
345 "column": 24, 345 "column": 24,
346 "line": 37 346 "line": 39
347 } 347 }
348 }, 348 },
349 { 349 {
350 "defaultMessage": "!!!Try importing your Franz account into Ferdi", 350 "defaultMessage": "!!!Try importing your Franz account into Ferdi",
351 "end": { 351 "end": {
352 "column": 3, 352 "column": 3,
353 "line": 44 353 "line": 46
354 }, 354 },
355 "file": "src/components/auth/Login.js", 355 "file": "src/components/auth/Login.js",
356 "id": "login.customServerSuggestion", 356 "id": "login.customServerSuggestion",
357 "start": { 357 "start": {
358 "column": 26, 358 "column": 26,
359 "line": 41 359 "line": 43
360 } 360 }
361 }, 361 },
362 { 362 {
363 "defaultMessage": "!!!Your session expired, please login again.", 363 "defaultMessage": "!!!Your session expired, please login again.",
364 "end": { 364 "end": {
365 "column": 3, 365 "column": 3,
366 "line": 48 366 "line": 50
367 }, 367 },
368 "file": "src/components/auth/Login.js", 368 "file": "src/components/auth/Login.js",
369 "id": "login.tokenExpired", 369 "id": "login.tokenExpired",
370 "start": { 370 "start": {
371 "column": 16, 371 "column": 16,
372 "line": 45 372 "line": 47
373 } 373 }
374 }, 374 },
375 { 375 {
376 "defaultMessage": "!!!Your session expired, please login again.", 376 "defaultMessage": "!!!Your session expired, please login again.",
377 "end": { 377 "end": {
378 "column": 3, 378 "column": 3,
379 "line": 52 379 "line": 54
380 }, 380 },
381 "file": "src/components/auth/Login.js", 381 "file": "src/components/auth/Login.js",
382 "id": "login.serverLogout", 382 "id": "login.serverLogout",
383 "start": { 383 "start": {
384 "column": 16, 384 "column": 16,
385 "line": 49 385 "line": 51
386 } 386 }
387 }, 387 },
388 { 388 {
389 "defaultMessage": "!!!Create a free account", 389 "defaultMessage": "!!!Create a free account",
390 "end": { 390 "end": {
391 "column": 3, 391 "column": 3,
392 "line": 56 392 "line": 58
393 }, 393 },
394 "file": "src/components/auth/Login.js", 394 "file": "src/components/auth/Login.js",
395 "id": "login.link.signup", 395 "id": "login.link.signup",
396 "start": { 396 "start": {
397 "column": 14, 397 "column": 14,
398 "line": 53 398 "line": 55
399 }
400 },
401 {
402 "defaultMessage": "!!!Change server",
403 "end": {
404 "column": 3,
405 "line": 62
406 },
407 "file": "src/components/auth/Login.js",
408 "id": "login.changeServer",
409 "start": {
410 "column": 16,
411 "line": 59
412 }
413 },
414 {
415 "defaultMessage": "!!!Use Ferdi without an Account",
416 "end": {
417 "column": 3,
418 "line": 66
419 },
420 "file": "src/components/auth/Login.js",
421 "id": "services.serverless",
422 "start": {
423 "column": 14,
424 "line": 63
399 } 425 }
400 }, 426 },
401 { 427 {
402 "defaultMessage": "!!!Forgot password", 428 "defaultMessage": "!!!Forgot password",
403 "end": { 429 "end": {
404 "column": 3, 430 "column": 3,
405 "line": 60 431 "line": 70
406 }, 432 },
407 "file": "src/components/auth/Login.js", 433 "file": "src/components/auth/Login.js",
408 "id": "login.link.password", 434 "id": "login.link.password",
409 "start": { 435 "start": {
410 "column": 16, 436 "column": 16,
411 "line": 57 437 "line": 67
412 } 438 }
413 } 439 }
414 ], 440 ],
@@ -638,143 +664,169 @@
638 "defaultMessage": "!!!Sign up", 664 "defaultMessage": "!!!Sign up",
639 "end": { 665 "end": {
640 "column": 3, 666 "column": 3,
641 "line": 20 667 "line": 22
642 }, 668 },
643 "file": "src/components/auth/Signup.js", 669 "file": "src/components/auth/Signup.js",
644 "id": "signup.headline", 670 "id": "signup.headline",
645 "start": { 671 "start": {
646 "column": 12, 672 "column": 12,
647 "line": 17 673 "line": 19
648 } 674 }
649 }, 675 },
650 { 676 {
651 "defaultMessage": "!!!Firstname", 677 "defaultMessage": "!!!Firstname",
652 "end": { 678 "end": {
653 "column": 3, 679 "column": 3,
654 "line": 24 680 "line": 26
655 }, 681 },
656 "file": "src/components/auth/Signup.js", 682 "file": "src/components/auth/Signup.js",
657 "id": "signup.firstname.label", 683 "id": "signup.firstname.label",
658 "start": { 684 "start": {
659 "column": 18, 685 "column": 18,
660 "line": 21 686 "line": 23
661 } 687 }
662 }, 688 },
663 { 689 {
664 "defaultMessage": "!!!Lastname", 690 "defaultMessage": "!!!Lastname",
665 "end": { 691 "end": {
666 "column": 3, 692 "column": 3,
667 "line": 28 693 "line": 30
668 }, 694 },
669 "file": "src/components/auth/Signup.js", 695 "file": "src/components/auth/Signup.js",
670 "id": "signup.lastname.label", 696 "id": "signup.lastname.label",
671 "start": { 697 "start": {
672 "column": 17, 698 "column": 17,
673 "line": 25 699 "line": 27
674 } 700 }
675 }, 701 },
676 { 702 {
677 "defaultMessage": "!!!Email address", 703 "defaultMessage": "!!!Email address",
678 "end": { 704 "end": {
679 "column": 3, 705 "column": 3,
680 "line": 32 706 "line": 34
681 }, 707 },
682 "file": "src/components/auth/Signup.js", 708 "file": "src/components/auth/Signup.js",
683 "id": "signup.email.label", 709 "id": "signup.email.label",
684 "start": { 710 "start": {
685 "column": 14, 711 "column": 14,
686 "line": 29 712 "line": 31
687 } 713 }
688 }, 714 },
689 { 715 {
690 "defaultMessage": "!!!Password", 716 "defaultMessage": "!!!Password",
691 "end": { 717 "end": {
692 "column": 3, 718 "column": 3,
693 "line": 40 719 "line": 42
694 }, 720 },
695 "file": "src/components/auth/Signup.js", 721 "file": "src/components/auth/Signup.js",
696 "id": "signup.password.label", 722 "id": "signup.password.label",
697 "start": { 723 "start": {
698 "column": 17, 724 "column": 17,
699 "line": 37 725 "line": 39
700 } 726 }
701 }, 727 },
702 { 728 {
703 "defaultMessage": "!!!By creating a Ferdi account you accept the", 729 "defaultMessage": "!!!By creating a Ferdi account you accept the",
704 "end": { 730 "end": {
705 "column": 3, 731 "column": 3,
706 "line": 44 732 "line": 46
707 }, 733 },
708 "file": "src/components/auth/Signup.js", 734 "file": "src/components/auth/Signup.js",
709 "id": "signup.legal.info", 735 "id": "signup.legal.info",
710 "start": { 736 "start": {
711 "column": 13, 737 "column": 13,
712 "line": 41 738 "line": 43
713 } 739 }
714 }, 740 },
715 { 741 {
716 "defaultMessage": "!!!Terms of service", 742 "defaultMessage": "!!!Terms of service",
717 "end": { 743 "end": {
718 "column": 3, 744 "column": 3,
719 "line": 48 745 "line": 50
720 }, 746 },
721 "file": "src/components/auth/Signup.js", 747 "file": "src/components/auth/Signup.js",
722 "id": "signup.legal.terms", 748 "id": "signup.legal.terms",
723 "start": { 749 "start": {
724 "column": 9, 750 "column": 9,
725 "line": 45 751 "line": 47
726 } 752 }
727 }, 753 },
728 { 754 {
729 "defaultMessage": "!!!Privacy Statement", 755 "defaultMessage": "!!!Privacy Statement",
730 "end": { 756 "end": {
731 "column": 3, 757 "column": 3,
732 "line": 52 758 "line": 54
733 }, 759 },
734 "file": "src/components/auth/Signup.js", 760 "file": "src/components/auth/Signup.js",
735 "id": "signup.legal.privacy", 761 "id": "signup.legal.privacy",
736 "start": { 762 "start": {
737 "column": 11, 763 "column": 11,
738 "line": 49 764 "line": 51
739 } 765 }
740 }, 766 },
741 { 767 {
742 "defaultMessage": "!!!Create account", 768 "defaultMessage": "!!!Create account",
743 "end": { 769 "end": {
744 "column": 3, 770 "column": 3,
745 "line": 56 771 "line": 58
746 }, 772 },
747 "file": "src/components/auth/Signup.js", 773 "file": "src/components/auth/Signup.js",
748 "id": "signup.submit.label", 774 "id": "signup.submit.label",
749 "start": { 775 "start": {
750 "column": 21, 776 "column": 21,
751 "line": 53 777 "line": 55
752 } 778 }
753 }, 779 },
754 { 780 {
755 "defaultMessage": "!!!Already have an account, sign in?", 781 "defaultMessage": "!!!Already have an account, sign in?",
756 "end": { 782 "end": {
757 "column": 3, 783 "column": 3,
758 "line": 60 784 "line": 62
759 }, 785 },
760 "file": "src/components/auth/Signup.js", 786 "file": "src/components/auth/Signup.js",
761 "id": "signup.link.login", 787 "id": "signup.link.login",
762 "start": { 788 "start": {
763 "column": 13, 789 "column": 13,
764 "line": 57 790 "line": 59
791 }
792 },
793 {
794 "defaultMessage": "!!!Change server",
795 "end": {
796 "column": 3,
797 "line": 66
798 },
799 "file": "src/components/auth/Signup.js",
800 "id": "login.changeServer",
801 "start": {
802 "column": 16,
803 "line": 63
804 }
805 },
806 {
807 "defaultMessage": "!!!Use Ferdi without an Account",
808 "end": {
809 "column": 3,
810 "line": 70
811 },
812 "file": "src/components/auth/Signup.js",
813 "id": "services.serverless",
814 "start": {
815 "column": 14,
816 "line": 67
765 } 817 }
766 }, 818 },
767 { 819 {
768 "defaultMessage": "!!!A user with that email address already exists", 820 "defaultMessage": "!!!A user with that email address already exists",
769 "end": { 821 "end": {
770 "column": 3, 822 "column": 3,
771 "line": 64 823 "line": 74
772 }, 824 },
773 "file": "src/components/auth/Signup.js", 825 "file": "src/components/auth/Signup.js",
774 "id": "signup.emailDuplicate", 826 "id": "signup.emailDuplicate",
775 "start": { 827 "start": {
776 "column": 18, 828 "column": 18,
777 "line": 61 829 "line": 71
778 } 830 }
779 } 831 }
780 ], 832 ],
@@ -786,26 +838,39 @@
786 "defaultMessage": "!!!Create a free account", 838 "defaultMessage": "!!!Create a free account",
787 "end": { 839 "end": {
788 "column": 3, 840 "column": 3,
789 "line": 12 841 "line": 14
790 }, 842 },
791 "file": "src/components/auth/Welcome.js", 843 "file": "src/components/auth/Welcome.js",
792 "id": "welcome.signupButton", 844 "id": "welcome.signupButton",
793 "start": { 845 "start": {
794 "column": 16, 846 "column": 16,
795 "line": 9 847 "line": 11
796 } 848 }
797 }, 849 },
798 { 850 {
799 "defaultMessage": "!!!Login to your account", 851 "defaultMessage": "!!!Login to your account",
800 "end": { 852 "end": {
801 "column": 3, 853 "column": 3,
802 "line": 16 854 "line": 18
803 }, 855 },
804 "file": "src/components/auth/Welcome.js", 856 "file": "src/components/auth/Welcome.js",
805 "id": "welcome.loginButton", 857 "id": "welcome.loginButton",
806 "start": { 858 "start": {
807 "column": 15, 859 "column": 15,
808 "line": 13 860 "line": 15
861 }
862 },
863 {
864 "defaultMessage": "!!!Use Ferdi without an Account",
865 "end": {
866 "column": 3,
867 "line": 22
868 },
869 "file": "src/components/auth/Welcome.js",
870 "id": "services.serverless",
871 "start": {
872 "column": 14,
873 "line": 19
809 } 874 }
810 } 875 }
811 ], 876 ],
@@ -1167,52 +1232,65 @@
1167 "defaultMessage": "!!!Welcome to Ferdi", 1232 "defaultMessage": "!!!Welcome to Ferdi",
1168 "end": { 1233 "end": {
1169 "column": 3, 1234 "column": 3,
1170 "line": 17 1235 "line": 18
1171 }, 1236 },
1172 "file": "src/components/services/content/Services.js", 1237 "file": "src/components/services/content/Services.js",
1173 "id": "services.welcome", 1238 "id": "services.welcome",
1174 "start": { 1239 "start": {
1175 "column": 11, 1240 "column": 11,
1176 "line": 14 1241 "line": 15
1177 } 1242 }
1178 }, 1243 },
1179 { 1244 {
1180 "defaultMessage": "!!!Get started", 1245 "defaultMessage": "!!!Get started",
1181 "end": { 1246 "end": {
1182 "column": 3, 1247 "column": 3,
1183 "line": 21 1248 "line": 22
1184 }, 1249 },
1185 "file": "src/components/services/content/Services.js", 1250 "file": "src/components/services/content/Services.js",
1186 "id": "services.getStarted", 1251 "id": "services.getStarted",
1187 "start": { 1252 "start": {
1188 "column": 14, 1253 "column": 14,
1189 "line": 18 1254 "line": 19
1190 } 1255 }
1191 }, 1256 },
1192 { 1257 {
1193 "defaultMessage": "!!!Please login to use Ferdi.", 1258 "defaultMessage": "!!!Please login to use Ferdi.",
1194 "end": { 1259 "end": {
1195 "column": 3, 1260 "column": 3,
1196 "line": 25 1261 "line": 26
1197 }, 1262 },
1198 "file": "src/components/services/content/Services.js", 1263 "file": "src/components/services/content/Services.js",
1199 "id": "services.login", 1264 "id": "services.login",
1200 "start": { 1265 "start": {
1201 "column": 9, 1266 "column": 9,
1202 "line": 22 1267 "line": 23
1268 }
1269 },
1270 {
1271 "defaultMessage": "!!!Use Ferdi without an Account",
1272 "end": {
1273 "column": 3,
1274 "line": 30
1275 },
1276 "file": "src/components/services/content/Services.js",
1277 "id": "services.serverless",
1278 "start": {
1279 "column": 14,
1280 "line": 27
1203 } 1281 }
1204 }, 1282 },
1205 { 1283 {
1206 "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", 1284 "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
1207 "end": { 1285 "end": {
1208 "column": 3, 1286 "column": 3,
1209 "line": 29 1287 "line": 34
1210 }, 1288 },
1211 "file": "src/components/services/content/Services.js", 1289 "file": "src/components/services/content/Services.js",
1212 "id": "services.serverInfo", 1290 "id": "services.serverInfo",
1213 "start": { 1291 "start": {
1214 "column": 14, 1292 "column": 14,
1215 "line": 26 1293 "line": 31
1216 } 1294 }
1217 } 1295 }
1218 ], 1296 ],
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index e1ee6f824..6f28e2bfc 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -54,6 +54,7 @@
54 "locked.invalidCredentials": "Password invalid", 54 "locked.invalidCredentials": "Password invalid",
55 "locked.password.label": "Password", 55 "locked.password.label": "Password",
56 "locked.submit.label": "Unlock", 56 "locked.submit.label": "Unlock",
57 "login.changeServer": "Change server",
57 "login.customServerQuestion": "Using a Franz account to log in?", 58 "login.customServerQuestion": "Using a Franz account to log in?",
58 "login.customServerSuggestion": "Try importing your Franz account into Ferdi", 59 "login.customServerSuggestion": "Try importing your Franz account into Ferdi",
59 "login.email.label": "Email address", 60 "login.email.label": "Email address",
@@ -186,6 +187,7 @@
186 "services.getStarted": "Get started", 187 "services.getStarted": "Get started",
187 "services.login": "Please login to use Ferdi.", 188 "services.login": "Please login to use Ferdi.",
188 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", 189 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
190 "services.serverless": "Use Ferdi without an Account",
189 "services.welcome": "Welcome to Ferdi", 191 "services.welcome": "Welcome to Ferdi",
190 "settings.account.account.editButton": "Edit account", 192 "settings.account.account.editButton": "Edit account",
191 "settings.account.accountType.basic": "Basic Account", 193 "settings.account.accountType.basic": "Basic Account",
diff --git a/src/i18n/messages/src/components/auth/Login.json b/src/i18n/messages/src/components/auth/Login.json
index 7e4b32294..c3b4ee4eb 100644
--- a/src/i18n/messages/src/components/auth/Login.json
+++ b/src/i18n/messages/src/components/auth/Login.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Sign in", 4 "defaultMessage": "!!!Sign in",
5 "file": "src/components/auth/Login.js", 5 "file": "src/components/auth/Login.js",
6 "start": { 6 "start": {
7 "line": 17, 7 "line": 19,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 20, 11 "line": 22,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Email address", 17 "defaultMessage": "!!!Email address",
18 "file": "src/components/auth/Login.js", 18 "file": "src/components/auth/Login.js",
19 "start": { 19 "start": {
20 "line": 21, 20 "line": 23,
21 "column": 14 21 "column": 14
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 24, 24 "line": 26,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Password", 30 "defaultMessage": "!!!Password",
31 "file": "src/components/auth/Login.js", 31 "file": "src/components/auth/Login.js",
32 "start": { 32 "start": {
33 "line": 25, 33 "line": 27,
34 "column": 17 34 "column": 17
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 28, 37 "line": 30,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Sign in", 43 "defaultMessage": "!!!Sign in",
44 "file": "src/components/auth/Login.js", 44 "file": "src/components/auth/Login.js",
45 "start": { 45 "start": {
46 "line": 29, 46 "line": 31,
47 "column": 21 47 "column": 21
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 32, 50 "line": 34,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Email or password not valid", 56 "defaultMessage": "!!!Email or password not valid",
57 "file": "src/components/auth/Login.js", 57 "file": "src/components/auth/Login.js",
58 "start": { 58 "start": {
59 "line": 33, 59 "line": 35,
60 "column": 22 60 "column": 22
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 36, 63 "line": 38,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Using a Franz account to log in?", 69 "defaultMessage": "!!!Using a Franz account to log in?",
70 "file": "src/components/auth/Login.js", 70 "file": "src/components/auth/Login.js",
71 "start": { 71 "start": {
72 "line": 37, 72 "line": 39,
73 "column": 24 73 "column": 24
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 40, 76 "line": 42,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Try importing your Franz account into Ferdi", 82 "defaultMessage": "!!!Try importing your Franz account into Ferdi",
83 "file": "src/components/auth/Login.js", 83 "file": "src/components/auth/Login.js",
84 "start": { 84 "start": {
85 "line": 41, 85 "line": 43,
86 "column": 26 86 "column": 26
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 44, 89 "line": 46,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Your session expired, please login again.", 95 "defaultMessage": "!!!Your session expired, please login again.",
96 "file": "src/components/auth/Login.js", 96 "file": "src/components/auth/Login.js",
97 "start": { 97 "start": {
98 "line": 45, 98 "line": 47,
99 "column": 16 99 "column": 16
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 48, 102 "line": 50,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Your session expired, please login again.", 108 "defaultMessage": "!!!Your session expired, please login again.",
109 "file": "src/components/auth/Login.js", 109 "file": "src/components/auth/Login.js",
110 "start": { 110 "start": {
111 "line": 49, 111 "line": 51,
112 "column": 16 112 "column": 16
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 52, 115 "line": 54,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,37 @@
121 "defaultMessage": "!!!Create a free account", 121 "defaultMessage": "!!!Create a free account",
122 "file": "src/components/auth/Login.js", 122 "file": "src/components/auth/Login.js",
123 "start": { 123 "start": {
124 "line": 53, 124 "line": 55,
125 "column": 14 125 "column": 14
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 56, 128 "line": 58,
129 "column": 3
130 }
131 },
132 {
133 "id": "login.changeServer",
134 "defaultMessage": "!!!Change server",
135 "file": "src/components/auth/Login.js",
136 "start": {
137 "line": 59,
138 "column": 16
139 },
140 "end": {
141 "line": 62,
142 "column": 3
143 }
144 },
145 {
146 "id": "services.serverless",
147 "defaultMessage": "!!!Use Ferdi without an Account",
148 "file": "src/components/auth/Login.js",
149 "start": {
150 "line": 63,
151 "column": 14
152 },
153 "end": {
154 "line": 66,
129 "column": 3 155 "column": 3
130 } 156 }
131 }, 157 },
@@ -134,11 +160,11 @@
134 "defaultMessage": "!!!Forgot password", 160 "defaultMessage": "!!!Forgot password",
135 "file": "src/components/auth/Login.js", 161 "file": "src/components/auth/Login.js",
136 "start": { 162 "start": {
137 "line": 57, 163 "line": 67,
138 "column": 16 164 "column": 16
139 }, 165 },
140 "end": { 166 "end": {
141 "line": 60, 167 "line": 70,
142 "column": 3 168 "column": 3
143 } 169 }
144 } 170 }
diff --git a/src/i18n/messages/src/components/auth/Signup.json b/src/i18n/messages/src/components/auth/Signup.json
index 9aa7b25ab..2628c9aa3 100644
--- a/src/i18n/messages/src/components/auth/Signup.json
+++ b/src/i18n/messages/src/components/auth/Signup.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Sign up", 4 "defaultMessage": "!!!Sign up",
5 "file": "src/components/auth/Signup.js", 5 "file": "src/components/auth/Signup.js",
6 "start": { 6 "start": {
7 "line": 17, 7 "line": 19,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 20, 11 "line": 22,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Firstname", 17 "defaultMessage": "!!!Firstname",
18 "file": "src/components/auth/Signup.js", 18 "file": "src/components/auth/Signup.js",
19 "start": { 19 "start": {
20 "line": 21, 20 "line": 23,
21 "column": 18 21 "column": 18
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 24, 24 "line": 26,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Lastname", 30 "defaultMessage": "!!!Lastname",
31 "file": "src/components/auth/Signup.js", 31 "file": "src/components/auth/Signup.js",
32 "start": { 32 "start": {
33 "line": 25, 33 "line": 27,
34 "column": 17 34 "column": 17
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 28, 37 "line": 30,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Email address", 43 "defaultMessage": "!!!Email address",
44 "file": "src/components/auth/Signup.js", 44 "file": "src/components/auth/Signup.js",
45 "start": { 45 "start": {
46 "line": 29, 46 "line": 31,
47 "column": 14 47 "column": 14
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 32, 50 "line": 34,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Password", 56 "defaultMessage": "!!!Password",
57 "file": "src/components/auth/Signup.js", 57 "file": "src/components/auth/Signup.js",
58 "start": { 58 "start": {
59 "line": 37, 59 "line": 39,
60 "column": 17 60 "column": 17
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 40, 63 "line": 42,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!By creating a Ferdi account you accept the", 69 "defaultMessage": "!!!By creating a Ferdi account you accept the",
70 "file": "src/components/auth/Signup.js", 70 "file": "src/components/auth/Signup.js",
71 "start": { 71 "start": {
72 "line": 41, 72 "line": 43,
73 "column": 13 73 "column": 13
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 44, 76 "line": 46,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Terms of service", 82 "defaultMessage": "!!!Terms of service",
83 "file": "src/components/auth/Signup.js", 83 "file": "src/components/auth/Signup.js",
84 "start": { 84 "start": {
85 "line": 45, 85 "line": 47,
86 "column": 9 86 "column": 9
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 48, 89 "line": 50,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Privacy Statement", 95 "defaultMessage": "!!!Privacy Statement",
96 "file": "src/components/auth/Signup.js", 96 "file": "src/components/auth/Signup.js",
97 "start": { 97 "start": {
98 "line": 49, 98 "line": 51,
99 "column": 11 99 "column": 11
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 52, 102 "line": 54,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Create account", 108 "defaultMessage": "!!!Create account",
109 "file": "src/components/auth/Signup.js", 109 "file": "src/components/auth/Signup.js",
110 "start": { 110 "start": {
111 "line": 53, 111 "line": 55,
112 "column": 21 112 "column": 21
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 56, 115 "line": 58,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,37 @@
121 "defaultMessage": "!!!Already have an account, sign in?", 121 "defaultMessage": "!!!Already have an account, sign in?",
122 "file": "src/components/auth/Signup.js", 122 "file": "src/components/auth/Signup.js",
123 "start": { 123 "start": {
124 "line": 57, 124 "line": 59,
125 "column": 13 125 "column": 13
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 60, 128 "line": 62,
129 "column": 3
130 }
131 },
132 {
133 "id": "login.changeServer",
134 "defaultMessage": "!!!Change server",
135 "file": "src/components/auth/Signup.js",
136 "start": {
137 "line": 63,
138 "column": 16
139 },
140 "end": {
141 "line": 66,
142 "column": 3
143 }
144 },
145 {
146 "id": "services.serverless",
147 "defaultMessage": "!!!Use Ferdi without an Account",
148 "file": "src/components/auth/Signup.js",
149 "start": {
150 "line": 67,
151 "column": 14
152 },
153 "end": {
154 "line": 70,
129 "column": 3 155 "column": 3
130 } 156 }
131 }, 157 },
@@ -134,11 +160,11 @@
134 "defaultMessage": "!!!A user with that email address already exists", 160 "defaultMessage": "!!!A user with that email address already exists",
135 "file": "src/components/auth/Signup.js", 161 "file": "src/components/auth/Signup.js",
136 "start": { 162 "start": {
137 "line": 61, 163 "line": 71,
138 "column": 18 164 "column": 18
139 }, 165 },
140 "end": { 166 "end": {
141 "line": 64, 167 "line": 74,
142 "column": 3 168 "column": 3
143 } 169 }
144 } 170 }
diff --git a/src/i18n/messages/src/components/auth/Welcome.json b/src/i18n/messages/src/components/auth/Welcome.json
index b4d2ce689..3f0c1e5c2 100644
--- a/src/i18n/messages/src/components/auth/Welcome.json
+++ b/src/i18n/messages/src/components/auth/Welcome.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Create a free account", 4 "defaultMessage": "!!!Create a free account",
5 "file": "src/components/auth/Welcome.js", 5 "file": "src/components/auth/Welcome.js",
6 "start": { 6 "start": {
7 "line": 9, 7 "line": 11,
8 "column": 16 8 "column": 16
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 12, 11 "line": 14,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,24 @@
17 "defaultMessage": "!!!Login to your account", 17 "defaultMessage": "!!!Login to your account",
18 "file": "src/components/auth/Welcome.js", 18 "file": "src/components/auth/Welcome.js",
19 "start": { 19 "start": {
20 "line": 13, 20 "line": 15,
21 "column": 15 21 "column": 15
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 16, 24 "line": 18,
25 "column": 3
26 }
27 },
28 {
29 "id": "services.serverless",
30 "defaultMessage": "!!!Use Ferdi without an Account",
31 "file": "src/components/auth/Welcome.js",
32 "start": {
33 "line": 19,
34 "column": 14
35 },
36 "end": {
37 "line": 22,
25 "column": 3 38 "column": 3
26 } 39 }
27 } 40 }
diff --git a/src/i18n/messages/src/components/services/content/Services.json b/src/i18n/messages/src/components/services/content/Services.json
index c2e57b8b5..6a5eb052e 100644
--- a/src/i18n/messages/src/components/services/content/Services.json
+++ b/src/i18n/messages/src/components/services/content/Services.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Welcome to Ferdi", 4 "defaultMessage": "!!!Welcome to Ferdi",
5 "file": "src/components/services/content/Services.js", 5 "file": "src/components/services/content/Services.js",
6 "start": { 6 "start": {
7 "line": 14, 7 "line": 15,
8 "column": 11 8 "column": 11
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 17, 11 "line": 18,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Get started", 17 "defaultMessage": "!!!Get started",
18 "file": "src/components/services/content/Services.js", 18 "file": "src/components/services/content/Services.js",
19 "start": { 19 "start": {
20 "line": 18, 20 "line": 19,
21 "column": 14 21 "column": 14
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 21, 24 "line": 22,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,24 @@
30 "defaultMessage": "!!!Please login to use Ferdi.", 30 "defaultMessage": "!!!Please login to use Ferdi.",
31 "file": "src/components/services/content/Services.js", 31 "file": "src/components/services/content/Services.js",
32 "start": { 32 "start": {
33 "line": 22, 33 "line": 23,
34 "column": 9 34 "column": 9
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 25, 37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "services.serverless",
43 "defaultMessage": "!!!Use Ferdi without an Account",
44 "file": "src/components/services/content/Services.js",
45 "start": {
46 "line": 27,
47 "column": 14
48 },
49 "end": {
50 "line": 30,
38 "column": 3 51 "column": 3
39 } 52 }
40 }, 53 },
@@ -43,11 +56,11 @@
43 "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", 56 "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
44 "file": "src/components/services/content/Services.js", 57 "file": "src/components/services/content/Services.js",
45 "start": { 58 "start": {
46 "line": 26, 59 "line": 31,
47 "column": 14 60 "column": 14
48 }, 61 },
49 "end": { 62 "end": {
50 "line": 29, 63 "line": 34,
51 "column": 3 64 "column": 3
52 } 65 }
53 } 66 }
diff --git a/src/index.js b/src/index.js
index 4d7215d5e..7a0e89285 100644
--- a/src/index.js
+++ b/src/index.js
@@ -34,6 +34,9 @@ import { isPositionValid } from './electron/windowUtils';
34import { appId } from './package.json'; // eslint-disable-line import/no-unresolved 34import { appId } from './package.json'; // eslint-disable-line import/no-unresolved
35import './electron/exception'; 35import './electron/exception';
36 36
37// Start internal server
38import './server/start';
39
37import { 40import {
38 DEFAULT_APP_SETTINGS, 41 DEFAULT_APP_SETTINGS,
39 DEFAULT_WINDOW_OPTIONS, 42 DEFAULT_WINDOW_OPTIONS,
diff --git a/src/server/.editorconfig b/src/server/.editorconfig
new file mode 100644
index 000000000..914223976
--- /dev/null
+++ b/src/server/.editorconfig
@@ -0,0 +1,13 @@
1# editorconfig.org
2root = true
3
4[*]
5indent_size = 2
6indent_style = space
7end_of_line = lf
8charset = utf-8
9trim_trailing_whitespace = true
10insert_final_newline = true
11
12[*.md]
13trim_trailing_whitespace = false
diff --git a/src/server/.eslintrc.js b/src/server/.eslintrc.js
new file mode 100644
index 000000000..d02f4890d
--- /dev/null
+++ b/src/server/.eslintrc.js
@@ -0,0 +1,22 @@
1module.exports = {
2 env: {
3 commonjs: true,
4 es6: true,
5 node: true,
6 },
7 extends: [
8 'airbnb-base',
9 ],
10 globals: {
11 Atomics: 'readonly',
12 SharedArrayBuffer: 'readonly',
13 use: 'readonly'
14 },
15 parserOptions: {
16 ecmaVersion: 2018,
17 },
18 rules: {
19 "class-methods-use-this": 'off',
20 "no-restricted-syntax": 'off',
21 },
22};
diff --git a/src/server/.gitattributes b/src/server/.gitattributes
new file mode 100644
index 000000000..dfe077042
--- /dev/null
+++ b/src/server/.gitattributes
@@ -0,0 +1,2 @@
1# Auto detect text files and perform LF normalization
2* text=auto
diff --git a/src/server/.gitignore b/src/server/.gitignore
new file mode 100644
index 000000000..d84ffadd4
--- /dev/null
+++ b/src/server/.gitignore
@@ -0,0 +1,19 @@
1# Node modules
2node_modules
3
4# Adonis directory for storing tmp files
5tmp
6
7# Environment variables, never commit this file
8.env
9
10# The development sqlite file
11database/development.sqlite
12database/adonis.sqlite
13
14# Uploaded recipes
15recipes/
16
17.DS_Store
18public/terms.html
19public/privacy.html
diff --git a/src/server/README.md b/src/server/README.md
new file mode 100644
index 000000000..0074f2314
--- /dev/null
+++ b/src/server/README.md
@@ -0,0 +1,17 @@
1<p align="center">
2 <img src="./logo.png" alt="" width="300"/>
3</p>
4
5# ferdi-internal-server
6Internal Ferdi Server used for storing settings without logging into an external server.
7
8## Configuration
9franz-server's configuration is saved inside the `env.ini` file. Besides AdonisJS's settings, ferdi-internal-server has the following custom settings:
10- `CONNECT_WITH_FRANZ` (`true` or `false`, default: `true`): Whether to enable connections to the Franz server. By enabling this option, ferdi-server can:
11 - Show the full Franz recipe library instead of only custom recipes
12 - Import Franz accounts
13
14## Importing your Franz account
15ferdi-server allows you to import your full Franz account, including all its settings.
16
17To import your Franz account, open `http://localhost:45569/import` in your browser and login using your Franz account details. ferdi-server will create a new user with the same credentials and copy your Franz settings, services and workspaces.
diff --git a/src/server/ace b/src/server/ace
new file mode 100644
index 000000000..42f8f10d1
--- /dev/null
+++ b/src/server/ace
@@ -0,0 +1,21 @@
1'use strict'
2
3/*
4|--------------------------------------------------------------------------
5| Ace Commands
6|--------------------------------------------------------------------------
7|
8| The ace file is just a regular Javascript file but with no extension. You
9| can call `node ace` followed by the command name and it just works.
10|
11| Also you can use `adonis` followed by the command name, since the adonis
12| global proxies all the ace commands.
13|
14*/
15
16const { Ignitor } = require('@adonisjs/ignitor')
17
18new Ignitor(require('@adonisjs/fold'))
19 .appRoot(__dirname)
20 .fireAce()
21 .catch(console.error)
diff --git a/src/server/app/Controllers/Http/RecipeController.js b/src/server/app/Controllers/Http/RecipeController.js
new file mode 100644
index 000000000..71ac12c0f
--- /dev/null
+++ b/src/server/app/Controllers/Http/RecipeController.js
@@ -0,0 +1,119 @@
1
2const Recipe = use('App/Models/Recipe');
3const Drive = use('Drive');
4const {
5 validateAll,
6} = use('Validator');
7const Env = use('Env');
8
9const fetch = require('node-fetch');
10
11class RecipeController {
12 // List official and custom recipes
13 async list({
14 response,
15 }) {
16 const officialRecipes = JSON.parse(await (await fetch('https://api.getferdi.com/v1/recipes')).text());
17 const customRecipesArray = (await Recipe.all()).rows;
18 const customRecipes = customRecipesArray.map(recipe => ({
19 id: recipe.recipeId,
20 name: recipe.name,
21 ...JSON.parse(recipe.data),
22 }));
23
24 const recipes = [
25 ...officialRecipes,
26 ...customRecipes,
27 ];
28
29 return response.send(recipes);
30 }
31
32 // Search official and custom recipes
33 async search({
34 request,
35 response,
36 }) {
37 // Validate user input
38 const validation = await validateAll(request.all(), {
39 needle: 'required',
40 });
41 if (validation.fails()) {
42 return response.status(401).send({
43 message: 'Please provide a needle',
44 messages: validation.messages(),
45 status: 401,
46 });
47 }
48
49 const needle = request.input('needle');
50
51 // Get results
52 let results;
53
54 if (needle === 'ferdi:custom') {
55 const dbResults = (await Recipe.all()).toJSON();
56 results = dbResults.map(recipe => ({
57 id: recipe.recipeId,
58 name: recipe.name,
59 ...JSON.parse(recipe.data),
60 }));
61 } else {
62 let remoteResults = [];
63 if (Env.get('CONNECT_WITH_FRANZ') == 'true') { // eslint-disable-line eqeqeq
64 remoteResults = JSON.parse(await (await fetch(`https://api.getferdi.com/v1/recipes/search?needle=${encodeURIComponent(needle)}`)).text());
65 }
66 const localResultsArray = (await Recipe.query().where('name', 'LIKE', `%${needle}%`).fetch()).toJSON();
67 const localResults = localResultsArray.map(recipe => ({
68 id: recipe.recipeId,
69 name: recipe.name,
70 ...JSON.parse(recipe.data),
71 }));
72
73 results = [
74 ...localResults,
75 ...remoteResults || [],
76 ];
77 }
78
79 return response.send(results);
80 }
81
82 // Download a recipe
83 async download({
84 response,
85 params,
86 }) {
87 // Validate user input
88 const validation = await validateAll(params, {
89 recipe: 'required|accepted',
90 });
91 if (validation.fails()) {
92 return response.status(401).send({
93 message: 'Please provide a recipe ID',
94 messages: validation.messages(),
95 status: 401,
96 });
97 }
98
99 const service = params.recipe;
100
101 // Check for invalid characters
102 if (/\.{1,}/.test(service) || /\/{1,}/.test(service)) {
103 return response.send('Invalid recipe name');
104 }
105
106 // Check if recipe exists in recipes folder
107 if (await Drive.exists(`${service}.tar.gz`)) {
108 return response.send(await Drive.get(`${service}.tar.gz`));
109 } if (Env.get('CONNECT_WITH_FRANZ') == 'true') { // eslint-disable-line eqeqeq
110 return response.redirect(`https://api.getferdi.com/v1/recipes/download/${service}`);
111 }
112 return response.status(400).send({
113 message: 'Recipe not found',
114 code: 'recipe-not-found',
115 });
116 }
117}
118
119module.exports = RecipeController;
diff --git a/src/server/app/Controllers/Http/ServiceController.js b/src/server/app/Controllers/Http/ServiceController.js
new file mode 100644
index 000000000..ea7035ca1
--- /dev/null
+++ b/src/server/app/Controllers/Http/ServiceController.js
@@ -0,0 +1,211 @@
1const Service = use('App/Models/Service');
2const {
3 validateAll,
4} = use('Validator');
5
6const uuid = require('uuid/v4');
7
8class ServiceController {
9 // Create a new service for user
10 async create({
11 request,
12 response,
13 }) {
14 // Validate user input
15 const validation = await validateAll(request.all(), {
16 name: 'required|string',
17 recipeId: 'required',
18 });
19 if (validation.fails()) {
20 return response.status(401).send({
21 message: 'Invalid POST arguments',
22 messages: validation.messages(),
23 status: 401,
24 });
25 }
26
27 const data = request.all();
28
29 // Get new, unused uuid
30 let serviceId;
31 do {
32 serviceId = uuid();
33 } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
34
35 await Service.create({
36 serviceId,
37 name: data.name,
38 recipeId: data.recipeId,
39 settings: JSON.stringify(data),
40 });
41
42 return response.send({
43 data: {
44 userId: 1,
45 id: serviceId,
46 isEnabled: true,
47 isNotificationEnabled: true,
48 isBadgeEnabled: true,
49 isMuted: false,
50 isDarkModeEnabled: '',
51 spellcheckerLanguage: '',
52 order: 1,
53 customRecipe: false,
54 hasCustomIcon: false,
55 workspaces: [],
56 iconUrl: null,
57 ...data,
58 },
59 status: ['created'],
60 });
61 }
62
63 // List all services a user has created
64 async list({
65 response,
66 }) {
67 const services = (await Service.all()).rows;
68 // Convert to array with all data Franz wants
69 const servicesArray = services.map(service => ({
70 customRecipe: false,
71 hasCustomIcon: false,
72 isBadgeEnabled: true,
73 isDarkModeEnabled: '',
74 isEnabled: true,
75 isMuted: false,
76 isNotificationEnabled: true,
77 order: 1,
78 spellcheckerLanguage: '',
79 workspaces: [],
80 iconUrl: null,
81 ...JSON.parse(service.settings),
82 id: service.serviceId,
83 name: service.name,
84 recipeId: service.recipeId,
85 userId: 1,
86 }));
87
88 return response.send(servicesArray);
89 }
90
91 async edit({
92 request,
93 response,
94 params,
95 }) {
96 // Validate user input
97 const validation = await validateAll(request.all(), {
98 name: 'required',
99 });
100 if (validation.fails()) {
101 return response.status(401).send({
102 message: 'Invalid POST arguments',
103 messages: validation.messages(),
104 status: 401,
105 });
106 }
107
108 const data = request.all();
109 const {
110 id,
111 } = params;
112
113 // Get current settings from db
114 const serviceData = (await Service.query()
115 .where('serviceId', id).fetch()).rows[0];
116
117 const settings = {
118 ...JSON.parse(serviceData.settings),
119 ...data,
120 };
121
122 // Update data in database
123 await (Service.query()
124 .where('serviceId', id)).update({
125 name: data.name,
126 settings: JSON.stringify(settings),
127 });
128
129 // Get updated row
130 const service = (await Service.query()
131 .where('serviceId', id).fetch()).rows[0];
132
133 return response.send({
134 id: service.serviceId,
135 name: data.name,
136 ...settings,
137 userId: 1,
138 });
139 }
140
141 async reorder({
142 request,
143 response,
144 }) {
145 const data = request.all();
146
147 for (const service of Object.keys(data)) {
148 // Get current settings from db
149 const serviceData = (await Service.query() // eslint-disable-line no-await-in-loop
150 .where('serviceId', service).fetch()).rows[0];
151
152 const settings = {
153 ...JSON.parse(serviceData.settings),
154 order: data[service],
155 };
156
157 // Update data in database
158 await (Service.query() // eslint-disable-line no-await-in-loop
159 .where('serviceId', service))
160 .update({
161 settings: JSON.stringify(settings),
162 });
163 }
164
165 // Get new services
166 const services = (await Service.all()).rows;
167 // Convert to array with all data Franz wants
168 const servicesArray = services.map(service => ({
169 customRecipe: false,
170 hasCustomIcon: false,
171 isBadgeEnabled: true,
172 isDarkModeEnabled: '',
173 isEnabled: true,
174 isMuted: false,
175 isNotificationEnabled: true,
176 order: 1,
177 spellcheckerLanguage: '',
178 workspaces: [],
179 iconUrl: null,
180 ...JSON.parse(service.settings),
181 id: service.serviceId,
182 name: service.name,
183 recipeId: service.recipeId,
184 userId: 1,
185 }));
186
187 return response.send(servicesArray);
188 }
189
190 update({
191 response,
192 }) {
193 return response.send([]);
194 }
195
196 async delete({
197 params,
198 response,
199 }) {
200 // Update data in database
201 await (Service.query()
202 .where('serviceId', params.id)).delete();
203
204 return response.send({
205 message: 'Sucessfully deleted service',
206 status: 200,
207 });
208 }
209}
210
211module.exports = ServiceController;
diff --git a/src/server/app/Controllers/Http/StaticController.js b/src/server/app/Controllers/Http/StaticController.js
new file mode 100644
index 000000000..b16e6cb6d
--- /dev/null
+++ b/src/server/app/Controllers/Http/StaticController.js
@@ -0,0 +1,224 @@
1
2/**
3 * Controller for routes with static responses
4 */
5
6class StaticController {
7 // Enable all features
8 features({
9 response,
10 }) {
11 return response.send({
12 needToWaitToProceed: false,
13 isSpellcheckerPremiumFeature: true,
14 isServiceProxyEnabled: true,
15 isServiceProxyPremiumFeature: true,
16 isWorkspacePremiumFeature: true,
17 isWorkspaceEnabled: true,
18 isAnnouncementsEnabled: true,
19 isSettingsWSEnabled: false,
20 isServiceLimitEnabled: false,
21 serviceLimitCount: 0,
22 isCommunityRecipesPremiumFeature: false,
23 });
24 }
25
26 // Return an empty array
27 emptyArray({
28 response,
29 }) {
30 return response.send([]);
31 }
32
33 // Payment plans availible
34 plans({
35 response,
36 }) {
37 return response.send({
38 month: {
39 id: 'franz-supporter-license',
40 price: 99,
41 },
42 year: {
43 id: 'franz-supporter-license-year-2019',
44 price: 99,
45 },
46 });
47 }
48
49 // Return list of popular recipes (copy of the response Franz's API is returning)
50 popularRecipes({
51 response,
52 }) {
53 return response.send([{
54 author: 'Stefan Malzner <stefan@adlk.io>',
55 featured: false,
56 id: 'slack',
57 name: 'Slack',
58 version: '1.0.4',
59 icons: {
60 png: 'https://cdn.franzinfra.com/recipes/dist/slack/src/icon.png',
61 svg: 'https://cdn.franzinfra.com/recipes/dist/slack/src/icon.svg',
62 },
63 }, {
64 author: 'Stefan Malzner <stefan@adlk.io>',
65 featured: false,
66 id: 'whatsapp',
67 name: 'WhatsApp',
68 version: '1.0.1',
69 icons: {
70 png: 'https://cdn.franzinfra.com/recipes/dist/whatsapp/src/icon.png',
71 svg: 'https://cdn.franzinfra.com/recipes/dist/whatsapp/src/icon.svg',
72 },
73 }, {
74 author: 'Stefan Malzner <stefan@adlk.io>',
75 featured: false,
76 id: 'messenger',
77 name: 'Messenger',
78 version: '1.0.6',
79 icons: {
80 png: 'https://cdn.franzinfra.com/recipes/dist/messenger/src/icon.png',
81 svg: 'https://cdn.franzinfra.com/recipes/dist/messenger/src/icon.svg',
82 },
83 }, {
84 author: 'Stefan Malzner <stefan@adlk.io>',
85 featured: false,
86 id: 'telegram',
87 name: 'Telegram',
88 version: '1.0.0',
89 icons: {
90 png: 'https://cdn.franzinfra.com/recipes/dist/telegram/src/icon.png',
91 svg: 'https://cdn.franzinfra.com/recipes/dist/telegram/src/icon.svg',
92 },
93 }, {
94 author: 'Stefan Malzner <stefan@adlk.io>',
95 featured: false,
96 id: 'gmail',
97 name: 'Gmail',
98 version: '1.0.0',
99 icons: {
100 png: 'https://cdn.franzinfra.com/recipes/dist/gmail/src/icon.png',
101 svg: 'https://cdn.franzinfra.com/recipes/dist/gmail/src/icon.svg',
102 },
103 }, {
104 author: 'Stefan Malzner <stefan@adlk.io>',
105 featured: false,
106 id: 'skype',
107 name: 'Skype',
108 version: '1.0.0',
109 icons: {
110 png: 'https://cdn.franzinfra.com/recipes/dist/skype/src/icon.png',
111 svg: 'https://cdn.franzinfra.com/recipes/dist/skype/src/icon.svg',
112 },
113 }, {
114 author: 'Stefan Malzner <stefan@adlk.io>',
115 featured: false,
116 id: 'hangouts',
117 name: 'Hangouts',
118 version: '1.0.0',
119 icons: {
120 png: 'https://cdn.franzinfra.com/recipes/dist/hangouts/src/icon.png',
121 svg: 'https://cdn.franzinfra.com/recipes/dist/hangouts/src/icon.svg',
122 },
123 }, {
124 author: 'Stefan Malzner <stefan@adlk.io>',
125 featured: false,
126 id: 'discord',
127 name: 'Discord',
128 version: '1.0.0',
129 icons: {
130 png: 'https://cdn.franzinfra.com/recipes/dist/discord/src/icon.png',
131 svg: 'https://cdn.franzinfra.com/recipes/dist/discord/src/icon.svg',
132 },
133 }, {
134 author: 'Stefan Malzner <stefan@adlk.io>',
135 featured: false,
136 id: 'tweetdeck',
137 name: 'Tweetdeck',
138 version: '1.0.1',
139 icons: {
140 png: 'https://cdn.franzinfra.com/recipes/dist/tweetdeck/src/icon.png',
141 svg: 'https://cdn.franzinfra.com/recipes/dist/tweetdeck/src/icon.svg',
142 },
143 }, {
144 author: 'Stefan Malzner <stefan@adlk.io>',
145 featured: false,
146 id: 'hipchat',
147 name: 'HipChat',
148 version: '1.0.1',
149 icons: {
150 png: 'https://cdn.franzinfra.com/recipes/dist/hipchat/src/icon.png',
151 svg: 'https://cdn.franzinfra.com/recipes/dist/hipchat/src/icon.svg',
152 },
153 }, {
154 author: 'Stefan Malzner <stefan@adlk.io>',
155 featured: false,
156 id: 'gmailinbox',
157 name: 'Inbox by Gmail',
158 version: '1.0.0',
159 icons: {
160 png: 'https://cdn.franzinfra.com/recipes/dist/gmailinbox/src/icon.png',
161 svg: 'https://cdn.franzinfra.com/recipes/dist/gmailinbox/src/icon.svg',
162 },
163 }, {
164 author: 'Stefan Malzner <stefan@adlk.io>',
165 featured: false,
166 id: 'rocketchat',
167 name: 'Rocket.Chat',
168 version: '1.0.1',
169 icons: {
170 png: 'https://cdn.franzinfra.com/recipes/dist/rocketchat/src/icon.png',
171 svg: 'https://cdn.franzinfra.com/recipes/dist/rocketchat/src/icon.svg',
172 },
173 }, {
174 author: 'Brian Gilbert <brian@briangilbert.net>',
175 featured: false,
176 id: 'gitter',
177 name: 'Gitter',
178 version: '1.0.0',
179 icons: {
180 png: 'https://cdn.franzinfra.com/recipes/dist/gitter/src/icon.png',
181 svg: 'https://cdn.franzinfra.com/recipes/dist/gitter/src/icon.svg',
182 },
183 }, {
184 author: 'Stefan Malzner <stefan@adlk.io>',
185 featured: false,
186 id: 'mattermost',
187 name: 'Mattermost',
188 version: '1.0.0',
189 icons: {
190 png: 'https://cdn.franzinfra.com/recipes/dist/mattermost/src/icon.png',
191 svg: 'https://cdn.franzinfra.com/recipes/dist/mattermost/src/icon.svg',
192 },
193 }, {
194 author: 'Franz <recipe@meetfranz.com>',
195 featured: false,
196 id: 'toggl',
197 name: 'toggl',
198 version: '1.0.0',
199 icons: {
200 png: 'https://cdn.franzinfra.com/recipes/dist/toggl/src/icon.png',
201 svg: 'https://cdn.franzinfra.com/recipes/dist/toggl/src/icon.svg',
202 },
203 }, {
204 author: 'Stuart Clark <stuart@realityloop.com>',
205 featured: false,
206 id: 'twist',
207 name: 'twist',
208 version: '1.0.0',
209 icons: {
210 png: 'https://cdn.franzinfra.com/recipes/dist/twist/src/icon.png',
211 svg: 'https://cdn.franzinfra.com/recipes/dist/twist/src/icon.svg',
212 },
213 }]);
214 }
215
216 // Show announcements
217 announcement({
218 response,
219 }) {
220 return response.send('No announcement found.');
221 }
222}
223
224module.exports = StaticController;
diff --git a/src/server/app/Controllers/Http/UserController.js b/src/server/app/Controllers/Http/UserController.js
new file mode 100644
index 000000000..ee6a82702
--- /dev/null
+++ b/src/server/app/Controllers/Http/UserController.js
@@ -0,0 +1,231 @@
1const Service = use('App/Models/Service');
2const Workspace = use('App/Models/Workspace');
3const {
4 validateAll,
5} = use('Validator');
6const Env = use('Env');
7
8const btoa = require('btoa');
9const fetch = require('node-fetch');
10const uuid = require('uuid/v4');
11const crypto = require('crypto');
12
13const franzRequest = (route, method, auth) => new Promise((resolve, reject) => {
14 const base = 'https://api.franzinfra.com/v1/';
15 const user = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36';
16
17 try {
18 fetch(base + route, {
19 method,
20 headers: {
21 Authorization: `Bearer ${auth}`,
22 'User-Agent': user,
23 },
24 })
25 .then(data => data.json())
26 .then(json => resolve(json));
27 } catch (e) {
28 reject();
29 }
30});
31
32class UserController {
33 // Register a new user
34 async signup({
35 request,
36 response,
37 }) {
38 // Validate user input
39 const validation = await validateAll(request.all(), {
40 firstname: 'required',
41 email: 'required|email',
42 password: 'required',
43 });
44 if (validation.fails()) {
45 return response.status(401).send({
46 message: 'Invalid POST arguments',
47 messages: validation.messages(),
48 status: 401,
49 });
50 }
51
52 return response.send({
53 message: 'Successfully created account',
54 token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJGZXJkaSBJbnRlcm5hbCBTZXJ2ZXIiLCJpYXQiOjE1NzEwNDAyMTUsImV4cCI6MjUzMzk1NDE3ODQ0LCJhdWQiOiJnZXRmZXJkaS5jb20iLCJzdWIiOiJmZXJkaUBsb2NhbGhvc3QiLCJ1c2VySWQiOiIxIn0.9_TWFGp6HROv8Yg82Rt6i1-95jqWym40a-HmgrdMC6M',
55 });
56 }
57
58 // Login using an existing user
59 async login({
60 request,
61 response,
62 }) {
63 if (!request.header('Authorization')) {
64 return response.status(401).send({
65 message: 'Please provide authorization',
66 status: 401,
67 });
68 }
69
70 return response.send({
71 message: 'Successfully logged in',
72 token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJGZXJkaSBJbnRlcm5hbCBTZXJ2ZXIiLCJpYXQiOjE1NzEwNDAyMTUsImV4cCI6MjUzMzk1NDE3ODQ0LCJhdWQiOiJnZXRmZXJkaS5jb20iLCJzdWIiOiJmZXJkaUBsb2NhbGhvc3QiLCJ1c2VySWQiOiIxIn0.9_TWFGp6HROv8Yg82Rt6i1-95jqWym40a-HmgrdMC6M',
73 });
74 }
75
76 // Return information about the current user
77 async me({
78 response,
79 }) {
80 return response.send({
81 accountType: 'individual',
82 beta: false,
83 donor: {},
84 email: '',
85 emailValidated: true,
86 features: {},
87 firstname: 'Ferdi',
88 id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8',
89 isPremium: true,
90 isSubscriptionOwner: true,
91 lastname: 'Application',
92 locale: 'en-US',
93 });
94 }
95
96
97 async import({
98 request,
99 response,
100 }) {
101 // Validate user input
102 const validation = await validateAll(request.all(), {
103 email: 'required|email',
104 password: 'required',
105 });
106 if (validation.fails()) {
107 let errorMessage = 'There was an error while trying to import your account:\n';
108 for (const message of validation.messages()) {
109 if (message.validation === 'required') {
110 errorMessage += `- Please make sure to supply your ${message.field}\n`;
111 } else if (message.validation === 'unique') {
112 errorMessage += '- There is already a user with this email.\n';
113 } else {
114 errorMessage += `${message.message}\n`;
115 }
116 }
117 return response.status(401).send(errorMessage);
118 }
119
120 const {
121 email,
122 password,
123 } = request.all();
124
125 const hashedPassword = crypto.createHash('sha256').update(password).digest('base64');
126
127 if (Env.get('CONNECT_WITH_FRANZ') == 'false') { // eslint-disable-line eqeqeq
128 return response.send('Your account has been created but due to this server\'s configuration, we could not import your Franz account data.\n\nIf you are the server owner, please set CONNECT_WITH_FRANZ to true to enable account imports.');
129 }
130
131 const base = 'https://api.franzinfra.com/v1/';
132 const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36';
133
134 // Try to get an authentication token
135 let token;
136 try {
137 const basicToken = btoa(`${email}:${hashedPassword}`);
138
139 const rawResponse = await fetch(`${base}auth/login`, {
140 method: 'POST',
141 headers: {
142 Authorization: `Basic ${basicToken}`,
143 'User-Agent': userAgent,
144 },
145 });
146 const content = await rawResponse.json();
147
148 if (!content.message || content.message !== 'Successfully logged in') {
149 const errorMessage = 'Could not login into Franz with your supplied credentials. Please check and try again';
150 return response.status(401).send(errorMessage);
151 }
152
153 // eslint-disable-next-line prefer-destructuring
154 token = content.token;
155 } catch (e) {
156 return response.status(401).send({
157 message: 'Cannot login to Franz',
158 error: e,
159 });
160 }
161
162 // Get user information
163 let userInf = false;
164 try {
165 userInf = await franzRequest('me', 'GET', token);
166 } catch (e) {
167 const errorMessage = `Could not get your user info from Franz. Please check your credentials or try again later.\nError: ${e}`;
168 return response.status(401).send(errorMessage);
169 }
170 if (!userInf) {
171 const errorMessage = 'Could not get your user info from Franz. Please check your credentials or try again later';
172 return response.status(401).send(errorMessage);
173 }
174
175 const serviceIdTranslation = {};
176
177 // Import services
178 try {
179 const services = await franzRequest('me/services', 'GET', token);
180
181 for (const service of services) {
182 // Get new, unused uuid
183 let serviceId;
184 do {
185 serviceId = uuid();
186 } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
187
188 await Service.create({ // eslint-disable-line no-await-in-loop
189 serviceId,
190 name: service.name,
191 recipeId: service.recipeId,
192 settings: JSON.stringify(service),
193 });
194
195 serviceIdTranslation[service.id] = serviceId;
196 }
197 } catch (e) {
198 const errorMessage = `Could not import your services into our system.\nError: ${e}`;
199 return response.status(401).send(errorMessage);
200 }
201
202 // Import workspaces
203 try {
204 const workspaces = await franzRequest('workspace', 'GET', token);
205
206 for (const workspace of workspaces) {
207 let workspaceId;
208 do {
209 workspaceId = uuid();
210 } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
211
212 const services = workspace.services.map(service => serviceIdTranslation[service]);
213
214 await Workspace.create({ // eslint-disable-line no-await-in-loop
215 workspaceId,
216 name: workspace.name,
217 order: workspace.order,
218 services: JSON.stringify(services),
219 data: JSON.stringify({}),
220 });
221 }
222 } catch (e) {
223 const errorMessage = `Could not import your workspaces into our system.\nError: ${e}`;
224 return response.status(401).send(errorMessage);
225 }
226
227 return response.send('Your account has been imported. You can now use your Franz account in Ferdi.');
228 }
229}
230
231module.exports = UserController;
diff --git a/src/server/app/Controllers/Http/WorkspaceController.js b/src/server/app/Controllers/Http/WorkspaceController.js
new file mode 100644
index 000000000..7990b8434
--- /dev/null
+++ b/src/server/app/Controllers/Http/WorkspaceController.js
@@ -0,0 +1,148 @@
1const Workspace = use('App/Models/Workspace');
2const {
3 validateAll,
4} = use('Validator');
5
6const uuid = require('uuid/v4');
7
8class WorkspaceController {
9 // Create a new workspace for user
10 async create({
11 request,
12 response,
13 }) {
14 // Validate user input
15 const validation = await validateAll(request.all(), {
16 name: 'required|alpha',
17 });
18 if (validation.fails()) {
19 return response.status(401).send({
20 message: 'Invalid POST arguments',
21 messages: validation.messages(),
22 status: 401,
23 });
24 }
25
26 const data = request.all();
27
28 // Get new, unused uuid
29 let workspaceId;
30 do {
31 workspaceId = uuid();
32 } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
33
34 const order = (await Workspace.all()).rows.length;
35
36 await Workspace.create({
37 workspaceId,
38 name: data.name,
39 order,
40 services: JSON.stringify([]),
41 data: JSON.stringify(data),
42 });
43
44 return response.send({
45 userId: 1,
46 name: data.name,
47 id: workspaceId,
48 order,
49 workspaces: [],
50 });
51 }
52
53 async edit({
54 request,
55 response,
56 params,
57 }) {
58 // Validate user input
59 const validation = await validateAll(request.all(), {
60 name: 'required|alpha',
61 services: 'required|array',
62 });
63 if (validation.fails()) {
64 return response.status(401).send({
65 message: 'Invalid POST arguments',
66 messages: validation.messages(),
67 status: 401,
68 });
69 }
70
71 const data = request.all();
72 const {
73 id,
74 } = params;
75
76 // Update data in database
77 await (Workspace.query()
78 .where('workspaceId', id)).update({
79 name: data.name,
80 services: JSON.stringify(data.services),
81 });
82
83 // Get updated row
84 const workspace = (await Workspace.query()
85 .where('workspaceId', id).fetch()).rows[0];
86
87 return response.send({
88 id: workspace.workspaceId,
89 name: data.name,
90 order: workspace.order,
91 services: data.services,
92 userId: 1,
93 });
94 }
95
96 async delete({
97 request,
98 response,
99 params,
100 }) {
101 // Validate user input
102 const validation = await validateAll(request.all(), {
103 id: 'required',
104 });
105 if (validation.fails()) {
106 return response.status(401).send({
107 message: 'Invalid POST arguments',
108 messages: validation.messages(),
109 status: 401,
110 });
111 }
112
113 const {
114 id,
115 } = params;
116
117 // Update data in database
118 await (Workspace.query()
119 .where('workspaceId', id)).delete();
120
121 return response.send({
122 message: 'Successfully deleted workspace',
123 });
124 }
125
126 // List all workspaces a user has created
127 async list({
128 response,
129 }) {
130 const workspaces = (await Workspace.all()).rows;
131 // Convert to array with all data Franz wants
132 let workspacesArray = [];
133 if (workspaces) {
134 workspacesArray = workspaces.map(workspace => ({
135 id: workspace.workspaceId,
136 name: workspace.name,
137 order: workspace.order,
138 services: JSON.parse(workspace.services),
139 userId: 1,
140 }));
141 }
142
143
144 return response.send(workspacesArray);
145 }
146}
147
148module.exports = WorkspaceController;
diff --git a/src/server/app/Exceptions/Handler.js b/src/server/app/Exceptions/Handler.js
new file mode 100644
index 000000000..e8d2d2ee2
--- /dev/null
+++ b/src/server/app/Exceptions/Handler.js
@@ -0,0 +1,45 @@
1
2const BaseExceptionHandler = use('BaseExceptionHandler');
3
4/**
5 * This class handles all exceptions thrown during
6 * the HTTP request lifecycle.
7 *
8 * @class ExceptionHandler
9 */
10class ExceptionHandler extends BaseExceptionHandler {
11 /**
12 * Handle exception thrown during the HTTP lifecycle
13 *
14 * @method handle
15 *
16 * @param {Object} error
17 * @param {Object} options.request
18 * @param {Object} options.response
19 *
20 * @return {void}
21 */
22 async handle(error, { response }) {
23 if (error.name === 'ValidationException') {
24 return response.status(400).send('Invalid arguments');
25 }
26
27 return response.status(error.status).send(error.message);
28 }
29
30 /**
31 * Report exception for logging or debugging.
32 *
33 * @method report
34 *
35 * @param {Object} error
36 * @param {Object} options.request
37 *
38 * @return {void}
39 */
40 async report() {
41 return true;
42 }
43}
44
45module.exports = ExceptionHandler;
diff --git a/src/server/app/Middleware/ConvertEmptyStringsToNull.js b/src/server/app/Middleware/ConvertEmptyStringsToNull.js
new file mode 100644
index 000000000..bc3079a7f
--- /dev/null
+++ b/src/server/app/Middleware/ConvertEmptyStringsToNull.js
@@ -0,0 +1,16 @@
1
2class ConvertEmptyStringsToNull {
3 async handle({ request }, next) {
4 if (Object.keys(request.body).length) {
5 request.body = Object.assign(
6 ...Object.keys(request.body).map(key => ({
7 [key]: request.body[key] !== '' ? request.body[key] : null,
8 })),
9 );
10 }
11
12 await next();
13 }
14}
15
16module.exports = ConvertEmptyStringsToNull;
diff --git a/src/server/app/Models/Recipe.js b/src/server/app/Models/Recipe.js
new file mode 100644
index 000000000..da3618bf7
--- /dev/null
+++ b/src/server/app/Models/Recipe.js
@@ -0,0 +1,8 @@
1
2/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
3const Model = use('Model');
4
5class Recipe extends Model {
6}
7
8module.exports = Recipe;
diff --git a/src/server/app/Models/Service.js b/src/server/app/Models/Service.js
new file mode 100644
index 000000000..20679feb1
--- /dev/null
+++ b/src/server/app/Models/Service.js
@@ -0,0 +1,8 @@
1
2/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
3const Model = use('Model');
4
5class Service extends Model {
6}
7
8module.exports = Service;
diff --git a/src/server/app/Models/Token.js b/src/server/app/Models/Token.js
new file mode 100644
index 000000000..f6bec0852
--- /dev/null
+++ b/src/server/app/Models/Token.js
@@ -0,0 +1,8 @@
1
2/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
3const Model = use('Model');
4
5class Token extends Model {
6}
7
8module.exports = Token;
diff --git a/src/server/app/Models/Traits/NoTimestamp.js b/src/server/app/Models/Traits/NoTimestamp.js
new file mode 100644
index 000000000..c647428b3
--- /dev/null
+++ b/src/server/app/Models/Traits/NoTimestamp.js
@@ -0,0 +1,15 @@
1
2class NoTimestamp {
3 register(Model) {
4 Object.defineProperties(Model, {
5 createdAtColumn: {
6 get: () => null,
7 },
8 updatedAtColumn: {
9 get: () => null,
10 },
11 });
12 }
13}
14
15module.exports = NoTimestamp;
diff --git a/src/server/app/Models/User.js b/src/server/app/Models/User.js
new file mode 100644
index 000000000..907710d8d
--- /dev/null
+++ b/src/server/app/Models/User.js
@@ -0,0 +1,8 @@
1// File is required by AdonisJS but not used by the server
2/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
3const Model = use('Model');
4
5class User extends Model {
6}
7
8module.exports = User;
diff --git a/src/server/app/Models/Workspace.js b/src/server/app/Models/Workspace.js
new file mode 100644
index 000000000..3b73cbf33
--- /dev/null
+++ b/src/server/app/Models/Workspace.js
@@ -0,0 +1,8 @@
1
2/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
3const Model = use('Model');
4
5class Workspace extends Model {
6}
7
8module.exports = Workspace;
diff --git a/src/server/config/app.js b/src/server/config/app.js
new file mode 100644
index 000000000..7938b81df
--- /dev/null
+++ b/src/server/config/app.js
@@ -0,0 +1,242 @@
1
2/** @type {import('@adonisjs/framework/src/Env')} */
3const Env = use('Env');
4
5module.exports = {
6
7 /*
8 |--------------------------------------------------------------------------
9 | Application Name
10 |--------------------------------------------------------------------------
11 |
12 | This value is the name of your application and can used when you
13 | need to place the application's name in a email, view or
14 | other location.
15 |
16 */
17
18 name: Env.get('APP_NAME', 'Ferdi Internal Server'),
19
20 /*
21 |--------------------------------------------------------------------------
22 | App Key
23 |--------------------------------------------------------------------------
24 |
25 | App key is a randomly generated 16 or 32 characters long string required
26 | to encrypt cookies, sessions and other sensitive data.
27 |
28 */
29 appKey: Env.getOrFail('APP_KEY'),
30
31 http: {
32 /*
33 |--------------------------------------------------------------------------
34 | Allow Method Spoofing
35 |--------------------------------------------------------------------------
36 |
37 | Method spoofing allows to make requests by spoofing the http verb.
38 | Which means you can make a GET request but instruct the server to
39 | treat as a POST or PUT request. If you want this feature, set the
40 | below value to true.
41 |
42 */
43 allowMethodSpoofing: true,
44
45 /*
46 |--------------------------------------------------------------------------
47 | Trust Proxy
48 |--------------------------------------------------------------------------
49 |
50 | Trust proxy defines whether X-Forwarded-* headers should be trusted or not.
51 | When your application is behind a proxy server like nginx, these values
52 | are set automatically and should be trusted. Apart from setting it
53 | to true or false Adonis supports handful or ways to allow proxy
54 | values. Read documentation for that.
55 |
56 */
57 trustProxy: false,
58
59 /*
60 |--------------------------------------------------------------------------
61 | Subdomains
62 |--------------------------------------------------------------------------
63 |
64 | Offset to be used for returning subdomains for a given request.For
65 | majority of applications it will be 2, until you have nested
66 | sudomains.
67 | cheatsheet.adonisjs.com - offset - 2
68 | virk.cheatsheet.adonisjs.com - offset - 3
69 |
70 */
71 subdomainOffset: 2,
72
73 /*
74 |--------------------------------------------------------------------------
75 | JSONP Callback
76 |--------------------------------------------------------------------------
77 |
78 | Default jsonp callback to be used when callback query string is missing
79 | in request url.
80 |
81 */
82 jsonpCallback: 'callback',
83
84
85 /*
86 |--------------------------------------------------------------------------
87 | Etag
88 |--------------------------------------------------------------------------
89 |
90 | Set etag on all HTTP response. In order to disable for selected routes,
91 | you can call the `response.send` with an options object as follows.
92 |
93 | response.send('Hello', { ignoreEtag: true })
94 |
95 */
96 etag: false,
97 },
98
99 views: {
100 /*
101 |--------------------------------------------------------------------------
102 | Cache Views
103 |--------------------------------------------------------------------------
104 |
105 | Define whether or not to cache the compiled view. Set it to true in
106 | production to optimize view loading time.
107 |
108 */
109 cache: Env.get('CACHE_VIEWS', true),
110 },
111
112 static: {
113 /*
114 |--------------------------------------------------------------------------
115 | Dot Files
116 |--------------------------------------------------------------------------
117 |
118 | Define how to treat dot files when trying to server static resources.
119 | By default it is set to ignore, which will pretend that dotfiles
120 | does not exists.
121 |
122 | Can be one of the following
123 | ignore, deny, allow
124 |
125 */
126 dotfiles: 'ignore',
127
128 /*
129 |--------------------------------------------------------------------------
130 | ETag
131 |--------------------------------------------------------------------------
132 |
133 | Enable or disable etag generation
134 |
135 */
136 etag: true,
137
138 /*
139 |--------------------------------------------------------------------------
140 | Extensions
141 |--------------------------------------------------------------------------
142 |
143 | Set file extension fallbacks. When set, if a file is not found, the given
144 | extensions will be added to the file name and search for. The first
145 | that exists will be served. Example: ['html', 'htm'].
146 |
147 */
148 extensions: false,
149 },
150
151 locales: {
152 /*
153 |--------------------------------------------------------------------------
154 | Loader
155 |--------------------------------------------------------------------------
156 |
157 | The loader to be used for fetching and updating locales. Below is the
158 | list of available options.
159 |
160 | file, database
161 |
162 */
163 loader: 'file',
164
165 /*
166 |--------------------------------------------------------------------------
167 | Default Locale
168 |--------------------------------------------------------------------------
169 |
170 | Default locale to be used by Antl provider. You can always switch drivers
171 | in runtime or use the official Antl middleware to detect the driver
172 | based on HTTP headers/query string.
173 |
174 */
175 locale: 'en',
176 },
177
178 logger: {
179 /*
180 |--------------------------------------------------------------------------
181 | Transport
182 |--------------------------------------------------------------------------
183 |
184 | Transport to be used for logging messages. You can have multiple
185 | transports using same driver.
186 |
187 | Available drivers are: `file` and `console`.
188 |
189 */
190 transport: 'console',
191
192 /*
193 |--------------------------------------------------------------------------
194 | Console Transport
195 |--------------------------------------------------------------------------
196 |
197 | Using `console` driver for logging. This driver writes to `stdout`
198 | and `stderr`
199 |
200 */
201 console: {
202 driver: 'console',
203 name: 'adonis-app',
204 level: 'info',
205 },
206
207 /*
208 |--------------------------------------------------------------------------
209 | File Transport
210 |--------------------------------------------------------------------------
211 |
212 | File transport uses file driver and writes log messages for a given
213 | file inside `tmp` directory for your app.
214 |
215 | For a different directory, set an absolute path for the filename.
216 |
217 */
218 file: {
219 driver: 'file',
220 name: 'adonis-app',
221 filename: 'adonis.log',
222 level: 'info',
223 },
224 },
225
226 /*
227 |--------------------------------------------------------------------------
228 | Generic Cookie Options
229 |--------------------------------------------------------------------------
230 |
231 | The following cookie options are generic settings used by AdonisJs to create
232 | cookies. However, some parts of the application like `sessions` can have
233 | separate settings for cookies inside `config/session.js`.
234 |
235 */
236 cookie: {
237 httpOnly: true,
238 sameSite: false,
239 path: '/',
240 maxAge: 7200,
241 },
242};
diff --git a/src/server/config/auth.js b/src/server/config/auth.js
new file mode 100644
index 000000000..b831b06c6
--- /dev/null
+++ b/src/server/config/auth.js
@@ -0,0 +1,93 @@
1
2/** @type {import('@adonisjs/framework/src/Env')} */
3const Env = use('Env');
4
5module.exports = {
6 /*
7 |--------------------------------------------------------------------------
8 | Authenticator
9 |--------------------------------------------------------------------------
10 |
11 | Authentication is a combination of serializer and scheme with extra
12 | config to define on how to authenticate a user.
13 |
14 | Available Schemes - basic, session, jwt, api
15 | Available Serializers - lucid, database
16 |
17 */
18 authenticator: 'jwt',
19
20 /*
21 |--------------------------------------------------------------------------
22 | Session
23 |--------------------------------------------------------------------------
24 |
25 | Session authenticator makes use of sessions to authenticate a user.
26 | Session authentication is always persistent.
27 |
28 */
29 session: {
30 serializer: 'lucid',
31 model: 'App/Models/User',
32 scheme: 'session',
33 uid: 'email',
34 password: 'password',
35 },
36
37 /*
38 |--------------------------------------------------------------------------
39 | Basic Auth
40 |--------------------------------------------------------------------------
41 |
42 | The basic auth authenticator uses basic auth header to authenticate a
43 | user.
44 |
45 | NOTE:
46 | This scheme is not persistent and users are supposed to pass
47 | login credentials on each request.
48 |
49 */
50 basic: {
51 serializer: 'lucid',
52 model: 'App/Models/User',
53 scheme: 'basic',
54 uid: 'email',
55 password: 'password',
56 },
57
58 /*
59 |--------------------------------------------------------------------------
60 | Jwt
61 |--------------------------------------------------------------------------
62 |
63 | The jwt authenticator works by passing a jwt token on each HTTP request
64 | via HTTP `Authorization` header.
65 |
66 */
67 jwt: {
68 serializer: 'lucid',
69 model: 'App/Models/User',
70 scheme: 'jwt',
71 uid: 'email',
72 password: 'password',
73 options: {
74 secret: Env.get('APP_KEY'),
75 },
76 },
77
78 /*
79 |--------------------------------------------------------------------------
80 | Api
81 |--------------------------------------------------------------------------
82 |
83 | The Api scheme makes use of API personal tokens to authenticate a user.
84 |
85 */
86 api: {
87 serializer: 'lucid',
88 model: 'App/Models/User',
89 scheme: 'api',
90 uid: 'email',
91 password: 'password',
92 },
93};
diff --git a/src/server/config/bodyParser.js b/src/server/config/bodyParser.js
new file mode 100644
index 000000000..c336e67d2
--- /dev/null
+++ b/src/server/config/bodyParser.js
@@ -0,0 +1,156 @@
1
2module.exports = {
3 /*
4 |--------------------------------------------------------------------------
5 | JSON Parser
6 |--------------------------------------------------------------------------
7 |
8 | Below settings are applied when the request body contains a JSON payload.
9 | If you want body parser to ignore JSON payloads, then simply set `types`
10 | to an empty array.
11 */
12 json: {
13 /*
14 |--------------------------------------------------------------------------
15 | limit
16 |--------------------------------------------------------------------------
17 |
18 | Defines the limit of JSON that can be sent by the client. If payload
19 | is over 1mb it will not be processed.
20 |
21 */
22 limit: '50mb',
23
24 /*
25 |--------------------------------------------------------------------------
26 | strict
27 |--------------------------------------------------------------------------
28 |
29 | When `strict` is set to true, body parser will only parse Arrays and
30 | Object. Otherwise everything parseable by `JSON.parse` is parsed.
31 |
32 */
33 strict: true,
34
35 /*
36 |--------------------------------------------------------------------------
37 | types
38 |--------------------------------------------------------------------------
39 |
40 | Which content types are processed as JSON payloads. You are free to
41 | add your own types here, but the request body should be parseable
42 | by `JSON.parse` method.
43 |
44 */
45 types: [
46 'application/json',
47 'application/json-patch+json',
48 'application/vnd.api+json',
49 'application/csp-report',
50 ],
51 },
52
53 /*
54 |--------------------------------------------------------------------------
55 | Raw Parser
56 |--------------------------------------------------------------------------
57 |
58 |
59 |
60 */
61 raw: {
62 types: [
63 'text/*',
64 ],
65 },
66
67 /*
68 |--------------------------------------------------------------------------
69 | Form Parser
70 |--------------------------------------------------------------------------
71 |
72 |
73 |
74 */
75 form: {
76 types: [
77 'application/x-www-form-urlencoded',
78 ],
79 },
80
81 /*
82 |--------------------------------------------------------------------------
83 | Files Parser
84 |--------------------------------------------------------------------------
85 |
86 |
87 |
88 */
89 files: {
90 types: [
91 'multipart/form-data',
92 ],
93
94 /*
95 |--------------------------------------------------------------------------
96 | Max Size
97 |--------------------------------------------------------------------------
98 |
99 | Below value is the max size of all the files uploaded to the server. It
100 | is validated even before files have been processed and hard exception
101 | is thrown.
102 |
103 | Consider setting a reasonable value here, otherwise people may upload GB's
104 | of files which will keep your server busy.
105 |
106 | Also this value is considered when `autoProcess` is set to true.
107 |
108 */
109 maxSize: '20mb',
110
111 /*
112 |--------------------------------------------------------------------------
113 | Auto Process
114 |--------------------------------------------------------------------------
115 |
116 | Whether or not to auto-process files. Since HTTP servers handle files via
117 | couple of specific endpoints. It is better to set this value off and
118 | manually process the files when required.
119 |
120 | This value can contain a boolean or an array of route patterns
121 | to be autoprocessed.
122 */
123 autoProcess: true,
124
125 /*
126 |--------------------------------------------------------------------------
127 | Process Manually
128 |--------------------------------------------------------------------------
129 |
130 | The list of routes that should not process files and instead rely on
131 | manual process. This list should only contain routes when autoProcess
132 | is to true. Otherwise everything is processed manually.
133 |
134 */
135 processManually: [],
136
137 /*
138 |--------------------------------------------------------------------------
139 | Temporary file name
140 |--------------------------------------------------------------------------
141 |
142 | Define a function, which should return a string to be used as the
143 | tmp file name.
144 |
145 | If not defined, Bodyparser will use `uuid` as the tmp file name.
146 |
147 | To be defined as. If you are defining the function, then do make sure
148 | to return a value from it.
149 |
150 | tmpFileName () {
151 | return 'some-unique-value'
152 | }
153 |
154 */
155 },
156};
diff --git a/src/server/config/cors.js b/src/server/config/cors.js
new file mode 100644
index 000000000..7ebbe3ffa
--- /dev/null
+++ b/src/server/config/cors.js
@@ -0,0 +1,86 @@
1
2module.exports = {
3 /*
4 |--------------------------------------------------------------------------
5 | Origin
6 |--------------------------------------------------------------------------
7 |
8 | Set a list of origins to be allowed. The value can be one of the following
9 |
10 | Boolean: true - Allow current request origin
11 | Boolean: false - Disallow all
12 | String - Comma separated list of allowed origins
13 | Array - An array of allowed origins
14 | String: * - A wildcard to allow current request origin
15 | Function - Receives the current origin and should return one of the above values.
16 |
17 */
18 origin: false,
19
20 /*
21 |--------------------------------------------------------------------------
22 | Methods
23 |--------------------------------------------------------------------------
24 |
25 | HTTP methods to be allowed. The value can be one of the following
26 |
27 | String - Comma separated list of allowed methods
28 | Array - An array of allowed methods
29 |
30 */
31 methods: ['GET', 'PUT', 'PATCH', 'POST', 'DELETE'],
32
33 /*
34 |--------------------------------------------------------------------------
35 | Headers
36 |--------------------------------------------------------------------------
37 |
38 | List of headers to be allowed via Access-Control-Request-Headers header.
39 | The value can be one of the following.
40 |
41 | Boolean: true - Allow current request headers
42 | Boolean: false - Disallow all
43 | String - Comma separated list of allowed headers
44 | Array - An array of allowed headers
45 | String: * - A wildcard to allow current request headers
46 | Function - Receives the current header and should return one of the above values.
47 |
48 */
49 headers: true,
50
51 /*
52 |--------------------------------------------------------------------------
53 | Expose Headers
54 |--------------------------------------------------------------------------
55 |
56 | A list of headers to be exposed via `Access-Control-Expose-Headers`
57 | header. The value can be one of the following.
58 |
59 | Boolean: false - Disallow all
60 | String: Comma separated list of allowed headers
61 | Array - An array of allowed headers
62 |
63 */
64 exposeHeaders: false,
65
66 /*
67 |--------------------------------------------------------------------------
68 | Credentials
69 |--------------------------------------------------------------------------
70 |
71 | Define Access-Control-Allow-Credentials header. It should always be a
72 | boolean.
73 |
74 */
75 credentials: false,
76
77 /*
78 |--------------------------------------------------------------------------
79 | MaxAge
80 |--------------------------------------------------------------------------
81 |
82 | Define Access-Control-Allow-Max-Age
83 |
84 */
85 maxAge: 90,
86};
diff --git a/src/server/config/database.js b/src/server/config/database.js
new file mode 100644
index 000000000..86f18dac5
--- /dev/null
+++ b/src/server/config/database.js
@@ -0,0 +1,87 @@
1
2/** @type {import('@adonisjs/framework/src/Env')} */
3const Env = use('Env');
4
5// eslint-disable-next-line import/no-extraneous-dependencies
6const { app } = require('electron');
7const path = require('path');
8
9const dbPath = path.join(app.getPath('userData'), 'server.sqlite');
10
11module.exports = {
12 /*
13 |--------------------------------------------------------------------------
14 | Default Connection
15 |--------------------------------------------------------------------------
16 |
17 | Connection defines the default connection settings to be used while
18 | interacting with SQL databases.
19 |
20 */
21 connection: Env.get('DB_CONNECTION', 'sqlite'),
22
23 /*
24 |--------------------------------------------------------------------------
25 | Sqlite
26 |--------------------------------------------------------------------------
27 |
28 | Sqlite is a flat file database and can be a good choice for a development
29 | environment.
30 |
31 | npm i --save sqlite3
32 |
33 */
34 sqlite: {
35 client: 'sqlite3',
36 connection: {
37 // filename: Helpers.databasePath(`${Env.get('DB_DATABASE', 'development')}.sqlite`),
38 filename: dbPath,
39 },
40 useNullAsDefault: true,
41 debug: Env.get('DB_DEBUG', false),
42 },
43
44 /*
45 |--------------------------------------------------------------------------
46 | MySQL
47 |--------------------------------------------------------------------------
48 |
49 | Here we define connection settings for MySQL database.
50 |
51 | npm i --save mysql
52 |
53 */
54 mysql: {
55 client: 'mysql',
56 connection: {
57 host: Env.get('DB_HOST', 'localhost'),
58 port: Env.get('DB_PORT', ''),
59 user: Env.get('DB_USER', 'root'),
60 password: Env.get('DB_PASSWORD', ''),
61 database: Env.get('DB_DATABASE', 'adonis'),
62 },
63 debug: Env.get('DB_DEBUG', false),
64 },
65
66 /*
67 |--------------------------------------------------------------------------
68 | PostgreSQL
69 |--------------------------------------------------------------------------
70 |
71 | Here we define connection settings for PostgreSQL database.
72 |
73 | npm i --save pg
74 |
75 */
76 pg: {
77 client: 'pg',
78 connection: {
79 host: Env.get('DB_HOST', 'localhost'),
80 port: Env.get('DB_PORT', ''),
81 user: Env.get('DB_USER', 'root'),
82 password: Env.get('DB_PASSWORD', ''),
83 database: Env.get('DB_DATABASE', 'adonis'),
84 },
85 debug: Env.get('DB_DEBUG', false),
86 },
87};
diff --git a/src/server/config/drive.js b/src/server/config/drive.js
new file mode 100644
index 000000000..617ce470a
--- /dev/null
+++ b/src/server/config/drive.js
@@ -0,0 +1,45 @@
1const Env = use('Env');
2
3module.exports = {
4 /*
5 |--------------------------------------------------------------------------
6 | Default disk
7 |--------------------------------------------------------------------------
8 |
9 | The default disk is used when you interact with the file system without
10 | defining a disk name
11 |
12 */
13 default: 'local',
14
15 disks: {
16 /*
17 |--------------------------------------------------------------------------
18 | Local
19 |--------------------------------------------------------------------------
20 |
21 | Local disk interacts with the a local folder inside your application
22 |
23 */
24 local: {
25 root: `${__dirname}/../recipes`,
26 driver: 'local',
27 },
28
29 /*
30 |--------------------------------------------------------------------------
31 | S3
32 |--------------------------------------------------------------------------
33 |
34 | S3 disk interacts with a bucket on aws s3
35 |
36 */
37 s3: {
38 driver: 's3',
39 key: Env.get('S3_KEY'),
40 secret: Env.get('S3_SECRET'),
41 bucket: Env.get('S3_BUCKET'),
42 region: Env.get('S3_REGION'),
43 },
44 },
45};
diff --git a/src/server/config/hash.js b/src/server/config/hash.js
new file mode 100644
index 000000000..297c977fc
--- /dev/null
+++ b/src/server/config/hash.js
@@ -0,0 +1,48 @@
1
2/** @type {import('@adonisjs/framework/src/Env')} */
3const Env = use('Env');
4
5module.exports = {
6 /*
7 |--------------------------------------------------------------------------
8 | Driver
9 |--------------------------------------------------------------------------
10 |
11 | Driver to be used for hashing values. The same driver is used by the
12 | auth module too.
13 |
14 */
15 driver: Env.get('HASH_DRIVER', 'bcrypt'),
16
17 /*
18 |--------------------------------------------------------------------------
19 | Bcrypt
20 |--------------------------------------------------------------------------
21 |
22 | Config related to bcrypt hashing. https://www.npmjs.com/package/bcrypt
23 | package is used internally.
24 |
25 */
26 bcrypt: {
27 rounds: 10,
28 },
29
30 /*
31 |--------------------------------------------------------------------------
32 | Argon
33 |--------------------------------------------------------------------------
34 |
35 | Config related to argon. https://www.npmjs.com/package/argon2 package is
36 | used internally.
37 |
38 | Since argon is optional, you will have to install the dependency yourself
39 |
40 |============================================================================
41 | npm i argon2
42 |============================================================================
43 |
44 */
45 argon: {
46 type: 1,
47 },
48};
diff --git a/src/server/config/session.js b/src/server/config/session.js
new file mode 100644
index 000000000..bce28bdd9
--- /dev/null
+++ b/src/server/config/session.js
@@ -0,0 +1,98 @@
1
2const Env = use('Env');
3
4module.exports = {
5 /*
6 |--------------------------------------------------------------------------
7 | Session Driver
8 |--------------------------------------------------------------------------
9 |
10 | The session driver to be used for storing session values. It can be
11 | cookie, file or redis.
12 |
13 | For `redis` driver, make sure to install and register `@adonisjs/redis`
14 |
15 */
16 driver: Env.get('SESSION_DRIVER', 'cookie'),
17
18 /*
19 |--------------------------------------------------------------------------
20 | Cookie Name
21 |--------------------------------------------------------------------------
22 |
23 | The name of the cookie to be used for saving session id. Session ids
24 | are signed and encrypted.
25 |
26 */
27 cookieName: 'adonis-session',
28
29 /*
30 |--------------------------------------------------------------------------
31 | Clear session when browser closes
32 |--------------------------------------------------------------------------
33 |
34 | If this value is true, the session cookie will be temporary and will be
35 | removed when browser closes.
36 |
37 */
38 clearWithBrowser: true,
39
40 /*
41 |--------------------------------------------------------------------------
42 | Session age
43 |--------------------------------------------------------------------------
44 |
45 | This value is only used when `clearWithBrowser` is set to false. The
46 | age must be a valid https://npmjs.org/package/ms string or should
47 | be in milliseconds.
48 |
49 | Valid values are:
50 | '2h', '10d', '5y', '2.5 hrs'
51 |
52 */
53 age: '2h',
54
55 /*
56 |--------------------------------------------------------------------------
57 | Cookie options
58 |--------------------------------------------------------------------------
59 |
60 | Cookie options defines the options to be used for setting up session
61 | cookie
62 |
63 */
64 cookie: {
65 httpOnly: true,
66 path: '/',
67 sameSite: false,
68 },
69
70 /*
71 |--------------------------------------------------------------------------
72 | Sessions location
73 |--------------------------------------------------------------------------
74 |
75 | If driver is set to file, we need to define the relative location from
76 | the temporary path or absolute url to any location.
77 |
78 */
79 file: {
80 location: 'sessions',
81 },
82
83 /*
84 |--------------------------------------------------------------------------
85 | Redis config
86 |--------------------------------------------------------------------------
87 |
88 | The configuration for the redis driver.
89 |
90 */
91 redis: {
92 host: '127.0.0.1',
93 port: 6379,
94 password: null,
95 db: 0,
96 keyPrefix: '',
97 },
98};
diff --git a/src/server/config/shield.js b/src/server/config/shield.js
new file mode 100644
index 000000000..5c1c5cd73
--- /dev/null
+++ b/src/server/config/shield.js
@@ -0,0 +1,144 @@
1
2module.exports = {
3 /*
4 |--------------------------------------------------------------------------
5 | Content Security Policy
6 |--------------------------------------------------------------------------
7 |
8 | Content security policy filters out the origins not allowed to execute
9 | and load resources like scripts, styles and fonts. There are wide
10 | variety of options to choose from.
11 */
12 csp: {
13 /*
14 |--------------------------------------------------------------------------
15 | Directives
16 |--------------------------------------------------------------------------
17 |
18 | All directives are defined in camelCase and here is the list of
19 | available directives and their possible values.
20 |
21 | https://content-security-policy.com
22 |
23 | @example
24 | directives: {
25 | defaultSrc: ['self', '@nonce', 'cdnjs.cloudflare.com']
26 | }
27 |
28 */
29 directives: {
30 },
31 /*
32 |--------------------------------------------------------------------------
33 | Report only
34 |--------------------------------------------------------------------------
35 |
36 | Setting `reportOnly=true` will not block the scripts from running and
37 | instead report them to a URL.
38 |
39 */
40 reportOnly: false,
41 /*
42 |--------------------------------------------------------------------------
43 | Set all headers
44 |--------------------------------------------------------------------------
45 |
46 | Headers staring with `X` have been depreciated, since all major browsers
47 | supports the standard CSP header. So its better to disable deperciated
48 | headers, unless you want them to be set.
49 |
50 */
51 setAllHeaders: false,
52
53 /*
54 |--------------------------------------------------------------------------
55 | Disable on android
56 |--------------------------------------------------------------------------
57 |
58 | Certain versions of android are buggy with CSP policy. So you can set
59 | this value to true, to disable it for Android versions with buggy
60 | behavior.
61 |
62 | Here is an issue reported on a different package, but helpful to read
63 | if you want to know the behavior. https://github.com/helmetjs/helmet/pull/82
64 |
65 */
66 disableAndroid: true,
67 },
68
69 /*
70 |--------------------------------------------------------------------------
71 | X-XSS-Protection
72 |--------------------------------------------------------------------------
73 |
74 | X-XSS Protection saves from applications from XSS attacks. It is adopted
75 | by IE and later followed by some other browsers.
76 |
77 | Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
78 |
79 */
80 xss: {
81 enabled: true,
82 enableOnOldIE: false,
83 },
84
85 /*
86 |--------------------------------------------------------------------------
87 | Iframe Options
88 |--------------------------------------------------------------------------
89 |
90 | xframe defines whether or not your website can be embedded inside an
91 | iframe. Choose from one of the following options.
92 | @available options
93 | DENY, SAMEORIGIN, ALLOW-FROM http://example.com
94 |
95 | Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
96 */
97 xframe: 'DENY',
98
99 /*
100 |--------------------------------------------------------------------------
101 | No Sniff
102 |--------------------------------------------------------------------------
103 |
104 | Browsers have a habit of sniffing content-type of a response. Which means
105 | files with .txt extension containing Javascript code will be executed as
106 | Javascript. You can disable this behavior by setting nosniff to false.
107 |
108 | Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
109 |
110 */
111 nosniff: true,
112
113 /*
114 |--------------------------------------------------------------------------
115 | No Open
116 |--------------------------------------------------------------------------
117 |
118 | IE users can execute webpages in the context of your website, which is
119 | a serious security risk. Below option will manage this for you.
120 |
121 */
122 noopen: true,
123
124 /*
125 |--------------------------------------------------------------------------
126 | CSRF Protection
127 |--------------------------------------------------------------------------
128 |
129 | CSRF Protection adds another layer of security by making sure, actionable
130 | routes does have a valid token to execute an action.
131 |
132 */
133 csrf: {
134 enable: true,
135 methods: ['POST', 'PUT', 'DELETE'],
136 filterUris: [],
137 cookieOptions: {
138 httpOnly: false,
139 sameSite: true,
140 path: '/',
141 maxAge: 7200,
142 },
143 },
144};
diff --git a/src/server/database/factory.js b/src/server/database/factory.js
new file mode 100644
index 000000000..550c5e6ab
--- /dev/null
+++ b/src/server/database/factory.js
@@ -0,0 +1,20 @@
1
2/*
3|--------------------------------------------------------------------------
4| Factory
5|--------------------------------------------------------------------------
6|
7| Factories are used to define blueprints for database tables or Lucid
8| models. Later you can use these blueprints to seed your database
9| with dummy data.
10|
11*/
12
13/** @type {import('@adonisjs/lucid/src/Factory')} */
14// const Factory = use('Factory')
15
16// Factory.blueprint('App/Models/User', (faker) => {
17// return {
18// username: faker.username()
19// }
20// })
diff --git a/src/server/database/migrations/1566385379883_service_schema.js b/src/server/database/migrations/1566385379883_service_schema.js
new file mode 100644
index 000000000..1db95c19d
--- /dev/null
+++ b/src/server/database/migrations/1566385379883_service_schema.js
@@ -0,0 +1,22 @@
1
2/** @type {import('@adonisjs/lucid/src/Schema')} */
3const Schema = use('Schema');
4
5class ServiceSchema extends Schema {
6 up() {
7 this.create('services', (table) => {
8 table.increments();
9 table.string('serviceId', 80).notNullable();
10 table.string('name', 80).notNullable();
11 table.string('recipeId', 254).notNullable();
12 table.json('settings');
13 table.timestamps();
14 });
15 }
16
17 down() {
18 this.drop('services');
19 }
20}
21
22module.exports = ServiceSchema;
diff --git a/src/server/database/migrations/1566554231482_recipe_schema.js b/src/server/database/migrations/1566554231482_recipe_schema.js
new file mode 100644
index 000000000..14fcb82e5
--- /dev/null
+++ b/src/server/database/migrations/1566554231482_recipe_schema.js
@@ -0,0 +1,21 @@
1
2/** @type {import('@adonisjs/lucid/src/Schema')} */
3const Schema = use('Schema');
4
5class RecipeSchema extends Schema {
6 up() {
7 this.create('recipes', (table) => {
8 table.increments();
9 table.string('name', 80).notNullable();
10 table.string('recipeId', 254).notNullable().unique();
11 table.json('data');
12 table.timestamps();
13 });
14 }
15
16 down() {
17 this.drop('recipes');
18 }
19}
20
21module.exports = RecipeSchema;
diff --git a/src/server/database/migrations/1566554359294_workspace_schema.js b/src/server/database/migrations/1566554359294_workspace_schema.js
new file mode 100644
index 000000000..b53bbe656
--- /dev/null
+++ b/src/server/database/migrations/1566554359294_workspace_schema.js
@@ -0,0 +1,23 @@
1
2/** @type {import('@adonisjs/lucid/src/Schema')} */
3const Schema = use('Schema');
4
5class WorkspaceSchema extends Schema {
6 up() {
7 this.create('workspaces', (table) => {
8 table.increments();
9 table.string('workspaceId', 80).notNullable().unique();
10 table.string('name', 80).notNullable();
11 table.integer('order');
12 table.json('services');
13 table.json('data');
14 table.timestamps();
15 });
16 }
17
18 down() {
19 this.drop('workspaces');
20 }
21}
22
23module.exports = WorkspaceSchema;
diff --git a/src/server/database/template.sqlite b/src/server/database/template.sqlite
new file mode 100644
index 000000000..db5425ee6
--- /dev/null
+++ b/src/server/database/template.sqlite
Binary files differ
diff --git a/src/server/env.ini b/src/server/env.ini
new file mode 100644
index 000000000..902e8e4c8
--- /dev/null
+++ b/src/server/env.ini
@@ -0,0 +1,16 @@
1HOST=127.0.0.1
2PORT=45569
3NODE_ENV=development
4APP_NAME=Ferdi Internal Server
5APP_URL=http://${HOST}:${PORT}
6CACHE_VIEWS=false
7APP_KEY=FERDIINTERNALSERVER
8DB_CONNECTION=sqlite
9DB_HOST=127.0.0.1
10DB_PORT=3306
11DB_USER=root
12DB_PASSWORD=
13DB_DATABASE=ferdi
14HASH_DRIVER=bcrypt
15IS_CREATION_ENABLED=true
16CONNECT_WITH_FRANZ=true \ No newline at end of file
diff --git a/src/server/logo.png b/src/server/logo.png
new file mode 100644
index 000000000..4145a077a
--- /dev/null
+++ b/src/server/logo.png
Binary files differ
diff --git a/src/server/package.json b/src/server/package.json
new file mode 100644
index 000000000..60dd58e93
--- /dev/null
+++ b/src/server/package.json
@@ -0,0 +1,49 @@
1{
2 "name": "ferdi-internal-server",
3 "version": "1.0.0",
4 "adonis-version": "4.1.0",
5 "description": "Internal server used by the Ferdi application.",
6 "main": "index.js",
7 "scripts": {
8 "start": "node server.js",
9 "test": "node ace test",
10 "lint": "eslint --fix ./"
11 },
12 "keywords": [
13 ],
14 "author": "",
15 "license": "MIT License",
16 "private": true,
17 "dependencies": {
18 "@adonisjs/ace": "^5.0.8",
19 "@adonisjs/auth": "^3.0.7",
20 "@adonisjs/bodyparser": "^2.0.5",
21 "@adonisjs/cors": "^1.0.7",
22 "@adonisjs/drive": "^1.0.4",
23 "@adonisjs/fold": "^4.0.9",
24 "@adonisjs/framework": "^5.0.9",
25 "@adonisjs/ignitor": "^2.0.8",
26 "@adonisjs/lucid": "^6.1.3",
27 "@adonisjs/session": "^1.0.29",
28 "@adonisjs/shield": "^1.0.8",
29 "@adonisjs/validator": "^5.0.6",
30 "atob": "^2.1.2",
31 "btoa": "^1.2.1",
32 "fs-extra": "^8.1.0",
33 "node-fetch": "^2.6.0",
34 "sqlite3": "^4.1.0",
35 "uuid": "^3.3.3"
36 },
37 "devDependencies": {
38 "eslint": "^6.3.0",
39 "eslint-config-airbnb": "^18.0.1",
40 "eslint-config-airbnb-base": "^14.0.0",
41 "eslint-plugin-import": "^2.18.2",
42 "eslint-plugin-jsx-a11y": "^6.2.3",
43 "eslint-plugin-react": "^7.14.3",
44 "eslint-plugin-react-hooks": "^1.7.0"
45 },
46 "autoload": {
47 "App": "./app"
48 }
49}
diff --git a/src/server/public/css/main.css b/src/server/public/css/main.css
new file mode 100644
index 000000000..a1c5653d7
--- /dev/null
+++ b/src/server/public/css/main.css
@@ -0,0 +1,69 @@
1input {
2 margin-bottom: 1rem;
3 width: 100%;
4 padding: 0.5rem;
5}
6
7button, .button {
8 display: flex;
9 overflow: hidden;
10 padding: 12px 12px;
11 cursor: pointer;
12 width: 100%;
13 -webkit-user-select: none;
14 -moz-user-select: none;
15 -ms-user-select: none;
16 user-select: none;
17 transition: all 150ms linear;
18 text-align: center;
19 white-space: nowrap;
20 text-decoration: none !important;
21 text-transform: none;
22 text-transform: capitalize;
23 color: #fff !important;
24 border: 0 none;
25 border-radius: 4px;
26 font-size: 13px;
27 font-weight: 500;
28 line-height: 1.3;
29 -webkit-appearance: none;
30 -moz-appearance: none;
31 appearance: none;
32 justify-content: center;
33 align-items: center;
34 flex: 0 0 160px;
35 box-shadow: 2px 5px 10px #e4e4e4;
36 color: #FFFFFF;
37 background: #161616;
38}
39
40#dropzone {
41 width: 100%;
42 height: 30vh;
43 background-color: #ebebeb;
44
45 display: flex;
46 align-items: center;
47 justify-content: center;
48 text-align: center;
49
50 cursor: pointer;
51}
52
53#dropzone p {
54 font-size: 0.85rem;
55}
56
57#files {
58 display: none;
59}
60
61.alert {
62 background-color: #e7a8a6;
63 padding: 0.8rem;
64 margin-bottom: 1rem;
65}
66
67td {
68 word-break: break-all;
69} \ No newline at end of file
diff --git a/src/server/public/css/vanilla.css b/src/server/public/css/vanilla.css
new file mode 100644
index 000000000..37bc051a2
--- /dev/null
+++ b/src/server/public/css/vanilla.css
@@ -0,0 +1,138 @@
1/* Reset */
2html, body, div, span, applet, object, iframe,
3h1, h2, h3, h4, h5, h6, p, blockquote, pre,
4a, abbr, acronym, address, big, cite, code,
5del, dfn, em, img, ins, kbd, q, s, samp,
6small, strike, strong, sub, sup, tt, var,
7b, u, i, center,
8dl, dt, dd, ol, ul, li,
9fieldset, form, label, legend,
10table, caption, tbody, tfoot, thead, tr, th, td,
11article, aside, canvas, details, embed,
12figure, figcaption, footer, header, hgroup,
13menu, nav, output, ruby, section, summary,
14time, mark, audio, video {
15 margin: 0;
16 padding: 0;
17 border: 0;
18 font-size: 100%;
19 font: inherit;
20 vertical-align: baseline;
21}
22* {
23 box-sizing: border-box;
24}
25
26
27
28/* Variables */
29:root {
30 --desktop-font-size: 1.3rem/1.5;
31 --mobile-font-size: 1.1rem/1.4;
32 --text-color: #2d2d2d;
33 --link-color: blue;
34 --primary-color: lightsteelblue;
35 --secondary-color: aliceblue;
36 --tertiary-color: whitesmoke;
37}
38
39
40
41
42/* Typography */
43body {
44 color: var(--text-color);
45 padding: 3rem;
46 font: var(--desktop-font-size) -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto, Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol";
47}
48
49h1,h2,h3,h4,h5,h6,p,blockquote,dl,img,figure {
50 margin: 2rem 0;
51}
52
53h1,h2,h3,h4,h5,h6 { font-weight: bold; }
54h1 { font-size: 200%; }
55h2 { font-size: 150%; }
56h3 { font-size: 120%; }
57h4,h5,h6 { font-size: 100%; }
58h5, h6 { text-transform: uppercase; }
59
60header h1 { border-bottom: 1px solid; }
61
62p { margin: 2rem 0; }
63
64a,a:visited { color: var(--link-color); }
65
66strong, time, b { font-weight: bold; }
67em, dfn, i { font-style: italic; }
68sub { font-size: 60%; vertical-align: bottom; }
69small { font-size: 80%; }
70
71blockquote, q {
72 background: var(--secondary-color);
73 border-left: 10px solid var(--primary-color);
74 font-family: "Georgia", serif;
75 padding: 1rem;
76}
77blockquote p:first-child { margin-top: 0; }
78cite {
79 font-family: "Georgia", serif;
80 font-style: italic;
81 font-weight: bold;
82}
83
84kbd,code,samp,pre,var { font-family: monospace; font-weight: bold; }
85code, pre {
86 background: var(--tertiary-color);
87 padding: 0.5rem 1rem;
88}
89code pre , pre code { padding: 0; }
90
91
92
93/* Elements */
94hr {
95 background: var(--text-color);
96 border: 0;
97 height: 1px;
98 margin: 4rem 0;
99}
100
101img { max-width: 100%; }
102
103figure {
104 border: 1px solid var(--primary-color);
105 display: inline-block;
106 padding: 1rem;
107 width: auto;
108}
109figure img { margin: 0; }
110figure figcaption { font-size: 80%; }
111
112ul, ol { margin: 2rem 0; padding: 0 0 0 4rem; }
113
114dl dd { padding-left: 2rem; }
115
116table {
117 border: 1px solid var(--primary-color);
118 border-collapse: collapse;
119 table-layout: fixed;
120 width: 100%;
121}
122table caption { margin: 2rem 0; }
123table thead { text-align: center; }
124table tbody { text-align: right; }
125table tr { border-bottom: 1px solid var(--primary-color); }
126table tbody tr:nth-child(even) { background: var(--tertiary-color); }
127table th { background: var(--secondary-color); font-weight: bold; }
128table th, table td { padding: 1rem; }
129table th:not(last-of-type), table td:not(last-of-type) { border-right: 1px solid var(--primary-color); }
130
131
132
133/* Mobile Styling */
134@media screen and (max-width: 50rem) {
135 body {
136 font: var(--mobile-font-size) -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto, Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol"
137 }
138} \ No newline at end of file
diff --git a/src/server/resources/views/import.edge b/src/server/resources/views/import.edge
new file mode 100644
index 000000000..f7b52b179
--- /dev/null
+++ b/src/server/resources/views/import.edge
@@ -0,0 +1,15 @@
1@layout('layouts.main')
2
3@section('content')
4<h1>Import a Franz account</h1>
5<p>Please login using your Franz account. We will import your services and workspaces.</p>
6<form action="import" method="post">
7 <label for="email">E-Mail address</label><br />
8 <input type="email" name="email" placeholder="joe@example.com" required><br />
9
10 <label for="password">Password</label><br />
11 <input type="password" name="password" placeholder="********" required><br />
12
13 <button type="submit" id="submitbutton">Import Franz account</button>
14</form>
15@endsection
diff --git a/src/server/resources/views/index.edge b/src/server/resources/views/index.edge
new file mode 100644
index 000000000..3e0198a09
--- /dev/null
+++ b/src/server/resources/views/index.edge
@@ -0,0 +1,32 @@
1@layout('layouts.main')
2
3@section('content')
4<style>
5 ol,
6 p {
7 margin: 0.5rem 0;
8 }
9
10</style>
11<h1>Internal Ferdi Server</h1>
12<p>You are accessing the local server instance of your Ferdi application. This server is used to enable Ferdi's "Use without an Account" feature.</p>
13<p>
14 To use this server in your Ferdi client, <a href="ferdi://settings/app">open Ferdi's settings</a> and as the
15 <code>server</code>, enter <code id="server"></code>
16</p>
17<p>
18 Alternatively, you can <a href="/import">import your Franz account</a>.
19</p>
20
21<script>
22 // Get server URL for current location
23 let server = location.href.replace('/index.html', '');
24 if (server[server.length - 1] == '/') {
25 server = server.substr(0, server.length - 1)
26 }
27
28 // Show on page
29 document.getElementById('server').innerText = server;
30
31</script>
32@endsection
diff --git a/src/server/resources/views/layouts/main.edge b/src/server/resources/views/layouts/main.edge
new file mode 100644
index 000000000..77af30327
--- /dev/null
+++ b/src/server/resources/views/layouts/main.edge
@@ -0,0 +1,18 @@
1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5 <meta charset="UTF-8">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <meta http-equiv="X-UA-Compatible" content="ie=edge">
8 <title>ferdi-internal-server</title>
9
10 {{ style('css/vanilla') }}
11 {{ style('css/main') }}
12</head>
13
14<body>
15 @!section('content')
16</body>
17
18</html>
diff --git a/src/server/start.js b/src/server/start.js
new file mode 100644
index 000000000..8a8711a78
--- /dev/null
+++ b/src/server/start.js
@@ -0,0 +1,40 @@
1
2/*
3|--------------------------------------------------------------------------
4| Http server
5|--------------------------------------------------------------------------
6|
7| This file bootstraps Adonisjs to start the HTTP server. You are free to
8| customize the process of booting the http server.
9|
10| """ Loading ace commands """
11| At times you may want to load ace commands when starting the HTTP server.
12| Same can be done by chaining `loadCommands()` method after
13|
14| """ Preloading files """
15| Also you can preload files by calling `preLoad('path/to/file')` method.
16| Make sure to pass a relative path from the project root.
17*/
18const path = require('path');
19const fs = require('fs-extra');
20// eslint-disable-next-line import/no-extraneous-dependencies
21const { app } = require('electron');
22
23process.env.ENV_PATH = path.join(__dirname, 'env.ini');
24
25// Make sure local database exists
26const dbPath = path.join(app.getPath('userData'), 'server.sqlite');
27if (!fs.existsSync(dbPath)) {
28 fs.copySync(
29 path.join(__dirname, 'database', 'template.sqlite'),
30 dbPath,
31 );
32}
33
34const { Ignitor } = require('@adonisjs/ignitor');
35const fold = require('@adonisjs/fold');
36
37new Ignitor(fold)
38 .appRoot(__dirname)
39 .fireHttpServer()
40 .catch(console.error); // eslint-disable-line no-console
diff --git a/src/server/start/app.js b/src/server/start/app.js
new file mode 100644
index 000000000..a29ca6594
--- /dev/null
+++ b/src/server/start/app.js
@@ -0,0 +1,62 @@
1
2/*
3|--------------------------------------------------------------------------
4| Providers
5|--------------------------------------------------------------------------
6|
7| Providers are building blocks for your Adonis app. Anytime you install
8| a new Adonis specific package, chances are you will register the
9| provider here.
10|
11*/
12const providers = [
13 '@adonisjs/framework/providers/AppProvider',
14 '@adonisjs/bodyparser/providers/BodyParserProvider',
15 '@adonisjs/cors/providers/CorsProvider',
16 '@adonisjs/lucid/providers/LucidProvider',
17 '@adonisjs/drive/providers/DriveProvider',
18 '@adonisjs/validator/providers/ValidatorProvider',
19 '@adonisjs/framework/providers/ViewProvider',
20 '@adonisjs/shield/providers/ShieldProvider',
21];
22
23/*
24|--------------------------------------------------------------------------
25| Ace Providers
26|--------------------------------------------------------------------------
27|
28| Ace providers are required only when running ace commands. For example
29| Providers for migrations, tests etc.
30|
31*/
32const aceProviders = [
33 '@adonisjs/lucid/providers/MigrationsProvider',
34];
35
36/*
37|--------------------------------------------------------------------------
38| Aliases
39|--------------------------------------------------------------------------
40|
41| Aliases are short unique names for IoC container bindings. You are free
42| to create your own aliases.
43|
44| For example:
45| { Route: 'Adonis/Src/Route' }
46|
47*/
48const aliases = {};
49
50/*
51|--------------------------------------------------------------------------
52| Commands
53|--------------------------------------------------------------------------
54|
55| Here you store ace commands for your package
56|
57*/
58const commands = [];
59
60module.exports = {
61 providers, aceProviders, aliases, commands,
62};
diff --git a/src/server/start/kernel.js b/src/server/start/kernel.js
new file mode 100644
index 000000000..54fe1f35d
--- /dev/null
+++ b/src/server/start/kernel.js
@@ -0,0 +1,56 @@
1
2/** @type {import('@adonisjs/framework/src/Server')} */
3const Server = use('Server');
4
5/*
6|--------------------------------------------------------------------------
7| Global Middleware
8|--------------------------------------------------------------------------
9|
10| Global middleware are executed on each http request only when the routes
11| match.
12|
13*/
14const globalMiddleware = [
15 'Adonis/Middleware/BodyParser',
16 'App/Middleware/ConvertEmptyStringsToNull',
17];
18
19/*
20|--------------------------------------------------------------------------
21| Named Middleware
22|--------------------------------------------------------------------------
23|
24| Named middleware is key/value object to conditionally add middleware on
25| specific routes or group of routes.
26|
27| // define
28| {
29| auth: 'Adonis/Middleware/Auth'
30| }
31|
32| // use
33| Route.get().middleware('auth')
34|
35*/
36const namedMiddleware = {
37};
38
39/*
40|--------------------------------------------------------------------------
41| Server Middleware
42|--------------------------------------------------------------------------
43|
44| Server level middleware are executed even when route for a given URL is
45| not registered. Features like `static assets` and `cors` needs better
46| control over request lifecycle.
47|
48*/
49const serverMiddleware = [
50 'Adonis/Middleware/Static',
51];
52
53Server
54 .registerGlobal(globalMiddleware)
55 .registerNamed(namedMiddleware)
56 .use(serverMiddleware);
diff --git a/src/server/start/routes.js b/src/server/start/routes.js
new file mode 100644
index 000000000..333a5ba06
--- /dev/null
+++ b/src/server/start/routes.js
@@ -0,0 +1,74 @@
1
2/*
3|--------------------------------------------------------------------------
4| Routes
5|--------------------------------------------------------------------------
6|
7*/
8
9/** @type {typeof import('@adonisjs/framework/src/Route/Manager')} */
10const Route = use('Route');
11
12const OnlyAllowFerdi = async ({ request, response }, next) => {
13 const user = request.header('User-Agent');
14 if (!/Ferdi\/\d(\.\d){2}/g.test(user)) {
15 return response.status(403).redirect('/');
16 }
17
18 await next();
19 return true;
20};
21
22// Health: Returning if all systems function correctly
23Route.get('health', ({
24 response,
25}) => response.send({
26 api: 'success',
27 db: 'success',
28})).middleware(OnlyAllowFerdi);
29
30// API is grouped under '/v1/' route
31Route.group(() => {
32 // User authentification
33 Route.post('auth/signup', 'UserController.signup');
34 Route.post('auth/login', 'UserController.login');
35
36 // User info
37 Route.get('me', 'UserController.me');
38
39 // Service info
40 Route.post('service', 'ServiceController.create');
41 Route.put('service/:id', 'ServiceController.edit');
42 Route.delete('service/:id', 'ServiceController.delete');
43 Route.get('me/services', 'ServiceController.list');
44 Route.put('service/reorder', 'ServiceController.reorder');
45 Route.get('recipe', 'ServiceController.list');
46 Route.post('recipes/update', 'ServiceController.update');
47
48 // Recipe store
49 Route.get('recipes', 'RecipeController.list');
50 Route.get('recipes/download/:recipe', 'RecipeController.download');
51 Route.get('recipes/search', 'RecipeController.search');
52 Route.get('recipes/popular', 'StaticController.popularRecipes');
53 Route.get('recipes/update', 'StaticController.emptyArray');
54
55 // Workspaces
56 Route.put('workspace/:id', 'WorkspaceController.edit');
57 Route.delete('workspace/:id', 'WorkspaceController.delete');
58 Route.post('workspace', 'WorkspaceController.create');
59 Route.get('workspace', 'WorkspaceController.list');
60
61 // Static responses
62 Route.get('features', 'StaticController.features');
63 Route.get('services', 'StaticController.emptyArray');
64 Route.get('news', 'StaticController.emptyArray');
65 Route.get('payment/plans', 'StaticController.plans');
66 Route.get('announcements/:version', 'StaticController.announcement');
67}).prefix('v1').middleware(OnlyAllowFerdi);
68
69// Franz account import
70Route.post('import', 'UserController.import');
71Route.get('import', ({ view }) => view.render('import'));
72
73// Index
74Route.get('/', ({ view }) => view.render('index'));
diff --git a/src/styles/services.scss b/src/styles/services.scss
index 5acf92d2c..ef1097791 100644
--- a/src/styles/services.scss
+++ b/src/styles/services.scss
@@ -64,7 +64,7 @@
64 margin: 25px 0 40px; 64 margin: 25px 0 40px;
65 } 65 }
66 66
67 a.button, 67 .button,
68 button { margin: 40px 0 20px; } 68 button { margin: 40px 0 20px; }
69 } 69 }
70 70
diff --git a/src/styles/type.scss b/src/styles/type.scss
index e0b27fe34..636b8fd36 100644
--- a/src/styles/type.scss
+++ b/src/styles/type.scss
@@ -33,7 +33,7 @@ p {
33 33
34strong { font-weight: bold; } 34strong { font-weight: bold; }
35 35
36a { 36a, button {
37 color: $theme-text-color; 37 color: $theme-text-color;
38 text-decoration: none; 38 text-decoration: none;
39 39
@@ -49,6 +49,7 @@ a {
49 position: relative; 49 position: relative;
50 text-align: center; 50 text-align: center;
51 transition: background .5s, color .5s; 51 transition: background .5s, color .5s;
52 cursor: pointer;
52 53
53 &:hover { 54 &:hover {
54 background: darken($theme-brand-primary, 5%); 55 background: darken($theme-brand-primary, 5%);
diff --git a/src/styles/welcome.scss b/src/styles/welcome.scss
index b517431f0..c1f85391e 100644
--- a/src/styles/welcome.scss
+++ b/src/styles/welcome.scss
@@ -48,6 +48,7 @@
48 .button { 48 .button {
49 border-color: #FFF; 49 border-color: #FFF;
50 color: #FFF; 50 color: #FFF;
51 cursor: pointer;
51 52
52 &:hover { 53 &:hover {
53 background: #FFF; 54 background: #FFF;