git.iko.soy/rowtype-yoga/psfp
on 39a8a5d help sign in
18 files changed+4025−335
since splitsnapshots
unifiedsplit
playground/packages.dhall+2−2 playground/run.js+9 playground/run.mjs−9 server/.idea/.gitignore−8 server/.idea/misc.xml−6 server/.idea/modules.xml−8 server/.idea/server.iml−9 server/.idea/vcs.xml−6 server/.vscode/settings.json+2−2 server/package-lock.json+3759−76 server/package.json+10−4 server/packages.dhall+155−34 server/spago.dhall+1−30 server/src/Main.purs+69−119 server/src/Middleware/JsonBodyParser.js+1−3 server/src/Node/OS.js+2−2 server/src/Playground/Playground.js+4−4 server/src/PscIdeClient.purs+11−13
playground/packages.dhall+2−2
@@ -117,7 +117,7 @@ let additions =
117117-------------------------------
118118-}
119119let upstream =
120− https://github.com/purescript/package-sets/releases/download/psc-0.15.8-20230617/packages.dhall
121− sha256:292a92e32db0272db2089f3234140287c9eaf2fc15b6790a3c51f41471050eeb
120+ https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20220901/packages.dhall
121+ sha256:f1531b29c21ac437ffe5666c1b6cc76f0a9c29d3c9d107ff047aa2567744994f
122122
123123in upstream
playground/run.jsnew file+9
@@ -0,0 +1,9 @@
1+const main = require ("./output/Main")
2+if(main.main == undefined) {
3+ console.error("You are missing a 'main' function")
4+} else if (main.main instanceof Function) {
5+ main.main()
6+}
7+else {
8+ console.error("Make sure that you're main function is of type `Effect Unit`")
9+}
playground/run.mjsdeleted−9
@@ -1,9 +0,0 @@
1−import { main } from "./output/Main/index.js"
2−if(main === undefined) {
3− console.error("You are missing a 'main' function")
4−} else if (main instanceof Function) {
5− main()
6−}
7−else {
8− console.error("Make sure that your main function is of type `Effect Unit`")
9−}
server/.idea/.gitignoredeleted−8
@@ -1,8 +0,0 @@
1−# Default ignored files
2−/shelf/
3−/workspace.xml
4−# Editor-based HTTP Client requests
5−/httpRequests/
6−# Datasource local storage ignored files
7−/dataSources/
8−/dataSources.local.xml
server/.idea/misc.xmldeleted−6
@@ -1,6 +0,0 @@
1−<?xml version="1.0" encoding="UTF-8"?>
2−<project version="4">
3− <component name="ProjectRootManager">
4− <output url="file://$PROJECT_DIR$/out" />
5− </component>
6−</project>
server/.idea/modules.xmldeleted−8
@@ -1,8 +0,0 @@
1−<?xml version="1.0" encoding="UTF-8"?>
2−<project version="4">
3− <component name="ProjectModuleManager">
4− <modules>
5− <module fileurl="file://$PROJECT_DIR$/.idea/server.iml" filepath="$PROJECT_DIR$/.idea/server.iml" />
6− </modules>
7− </component>
8−</project>
server/.idea/server.imldeleted−9
@@ -1,9 +0,0 @@
1−<?xml version="1.0" encoding="UTF-8"?>
2−<module type="JAVA_MODULE" version="4">
3− <component name="NewModuleRootManager" inherit-compiler-output="true">
4− <exclude-output />
5− <content url="file://$MODULE_DIR$" />
6− <orderEntry type="inheritedJdk" />
7− <orderEntry type="sourceFolder" forTests="false" />
8− </component>
9−</module>
server/.idea/vcs.xmldeleted−6
@@ -1,6 +0,0 @@
1−<?xml version="1.0" encoding="UTF-8"?>
2−<project version="4">
3− <component name="VcsDirectoryMappings">
4− <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
5− </component>
6−</project>
server/.vscode/settings.json+2−2
@@ -16,8 +16,8 @@
1616 "replace": "∀$1"
1717 },
1818 ],
19− "purescript.buildCommand": "spago build --purs-args '--json-errors'",
19+ "purescript.buildCommand": "npx spago build --purs-args '--json-errors'",
2020 "vscode_custom_css.imports": [
2121 "file:///Users/mark/.vscode-oss/extensions/webrender.synthwave-x-fluoromachine-0.0.9/synthwave-x-fluoromachine.css"
2222 ]
23−}
23+}
server/package-lock.json+3759−76
@@ -9,12 +9,131 @@
99 "version": "1.0.0",
1010 "license": "ISC",
1111 "dependencies": {
12− "big-integer": "^1.6.51",
12+ "body-parser": "^1.19.0",
13+ "express": "^4.17.1",
1314 "fs-extra": "^9.0.0",
15+ "json-parser": "^3.1.2",
1416 "minimist": "^1.2.2",
15− "uuid": "^8.3.2"
17+ "uuid": "^7.0.2"
18+ },
19+ "devDependencies": {
20+ "purescript": "^0.14.0",
21+ "spago": "^0.19.1"
22+ }
23+ },
24+ "node_modules/accepts": {
25+ "version": "1.3.7",
26+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
27+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
28+ "dependencies": {
29+ "mime-types": "~2.1.24",
30+ "negotiator": "0.6.2"
31+ },
32+ "engines": {
33+ "node": ">= 0.6"
34+ }
35+ },
36+ "node_modules/ajv": {
37+ "version": "6.12.6",
38+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
39+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
40+ "dev": true,
41+ "dependencies": {
42+ "fast-deep-equal": "^3.1.1",
43+ "fast-json-stable-stringify": "^2.0.0",
44+ "json-schema-traverse": "^0.4.1",
45+ "uri-js": "^4.2.2"
46+ },
47+ "funding": {
48+ "type": "github",
49+ "url": "https://github.com/sponsors/epoberezkin"
50+ }
51+ },
52+ "node_modules/ansi-escapes": {
53+ "version": "3.2.0",
54+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
55+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
56+ "dev": true,
57+ "engines": {
58+ "node": ">=4"
59+ }
60+ },
61+ "node_modules/ansi-regex": {
62+ "version": "4.1.0",
63+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
64+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
65+ "dev": true,
66+ "engines": {
67+ "node": ">=6"
1668 }
1769 },
70+ "node_modules/ansi-styles": {
71+ "version": "3.2.1",
72+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
73+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
74+ "dev": true,
75+ "dependencies": {
76+ "color-convert": "^1.9.0"
77+ },
78+ "engines": {
79+ "node": ">=4"
80+ }
81+ },
82+ "node_modules/aproba": {
83+ "version": "1.2.0",
84+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
85+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
86+ "dev": true
87+ },
88+ "node_modules/arch": {
89+ "version": "2.2.0",
90+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
91+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
92+ "dev": true,
93+ "funding": [
94+ {
95+ "type": "github",
96+ "url": "https://github.com/sponsors/feross"
97+ },
98+ {
99+ "type": "patreon",
100+ "url": "https://www.patreon.com/feross"
101+ },
102+ {
103+ "type": "consulting",
104+ "url": "https://feross.org/support"
105+ }
106+ ]
107+ },
108+ "node_modules/array-flatten": {
109+ "version": "1.1.1",
110+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
111+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
112+ },
113+ "node_modules/asn1": {
114+ "version": "0.2.4",
115+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
116+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
117+ "dev": true,
118+ "dependencies": {
119+ "safer-buffer": "~2.1.0"
120+ }
121+ },
122+ "node_modules/assert-plus": {
123+ "version": "1.0.0",
124+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
125+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
126+ "dev": true,
127+ "engines": {
128+ "node": ">=0.8"
129+ }
130+ },
131+ "node_modules/asynckit": {
132+ "version": "0.4.0",
133+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
134+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
135+ "dev": true
136+ },
18137 "node_modules/at-least-node": {
19138 "version": "1.0.0",
20139 "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -23,116 +142,3680 @@
23142 "node": ">= 4.0.0"
24143 }
25144 },
26− "node_modules/big-integer": {
27− "version": "1.6.51",
28− "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
29− "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
145+ "node_modules/aws-sign2": {
146+ "version": "0.7.0",
147+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
148+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
149+ "dev": true,
30150 "engines": {
31− "node": ">=0.6"
151+ "node": "*"
32152 }
33153 },
34− "node_modules/fs-extra": {
35− "version": "9.1.0",
36− "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
37− "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
154+ "node_modules/aws4": {
155+ "version": "1.11.0",
156+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
157+ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
158+ "dev": true
159+ },
160+ "node_modules/balanced-match": {
161+ "version": "1.0.0",
162+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
163+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
164+ "dev": true
165+ },
166+ "node_modules/bcrypt-pbkdf": {
167+ "version": "1.0.2",
168+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
169+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
170+ "dev": true,
38171 "dependencies": {
39− "at-least-node": "^1.0.0",
40− "graceful-fs": "^4.2.0",
41− "jsonfile": "^6.0.1",
42− "universalify": "^2.0.0"
172+ "tweetnacl": "^0.14.3"
173+ }
174+ },
175+ "node_modules/bluebird": {
176+ "version": "3.7.2",
177+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
178+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
179+ "dev": true
180+ },
181+ "node_modules/body-parser": {
182+ "version": "1.19.0",
183+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
184+ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
185+ "dependencies": {
186+ "bytes": "3.1.0",
187+ "content-type": "~1.0.4",
188+ "debug": "2.6.9",
189+ "depd": "~1.1.2",
190+ "http-errors": "1.7.2",
191+ "iconv-lite": "0.4.24",
192+ "on-finished": "~2.3.0",
193+ "qs": "6.7.0",
194+ "raw-body": "2.4.0",
195+ "type-is": "~1.6.17"
43196 },
44197 "engines": {
45− "node": ">=10"
198+ "node": ">= 0.8"
46199 }
47200 },
48− "node_modules/graceful-fs": {
49− "version": "4.2.10",
50− "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
51− "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
201+ "node_modules/brace-expansion": {
202+ "version": "1.1.11",
203+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
204+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
205+ "dev": true,
206+ "dependencies": {
207+ "balanced-match": "^1.0.0",
208+ "concat-map": "0.0.1"
209+ }
52210 },
53− "node_modules/jsonfile": {
54− "version": "6.1.0",
55− "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
56− "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
211+ "node_modules/buffer-from": {
212+ "version": "1.1.1",
213+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
214+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
215+ "dev": true
216+ },
217+ "node_modules/byline": {
218+ "version": "5.0.0",
219+ "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
220+ "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=",
221+ "dev": true,
222+ "engines": {
223+ "node": ">=0.10.0"
224+ }
225+ },
226+ "node_modules/bytes": {
227+ "version": "3.1.0",
228+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
229+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
230+ "engines": {
231+ "node": ">= 0.8"
232+ }
233+ },
234+ "node_modules/cacache": {
235+ "version": "11.3.3",
236+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz",
237+ "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==",
238+ "dev": true,
57239 "dependencies": {
58− "universalify": "^2.0.0"
240+ "bluebird": "^3.5.5",
241+ "chownr": "^1.1.1",
242+ "figgy-pudding": "^3.5.1",
243+ "glob": "^7.1.4",
244+ "graceful-fs": "^4.1.15",
245+ "lru-cache": "^5.1.1",
246+ "mississippi": "^3.0.0",
247+ "mkdirp": "^0.5.1",
248+ "move-concurrently": "^1.0.1",
249+ "promise-inflight": "^1.0.1",
250+ "rimraf": "^2.6.3",
251+ "ssri": "^6.0.1",
252+ "unique-filename": "^1.1.1",
253+ "y18n": "^4.0.0"
254+ }
255+ },
256+ "node_modules/caseless": {
257+ "version": "0.12.0",
258+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
259+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
260+ "dev": true
261+ },
262+ "node_modules/chalk": {
263+ "version": "2.4.2",
264+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
265+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
266+ "dev": true,
267+ "dependencies": {
268+ "ansi-styles": "^3.2.1",
269+ "escape-string-regexp": "^1.0.5",
270+ "supports-color": "^5.3.0"
59271 },
60− "optionalDependencies": {
61− "graceful-fs": "^4.1.6"
272+ "engines": {
273+ "node": ">=4"
62274 }
63275 },
64− "node_modules/minimist": {
65− "version": "1.2.6",
66− "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
67− "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
276+ "node_modules/chownr": {
277+ "version": "1.1.4",
278+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
279+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
280+ "dev": true
68281 },
69− "node_modules/universalify": {
70− "version": "2.0.0",
71− "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
72− "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
282+ "node_modules/cli-cursor": {
283+ "version": "2.1.0",
284+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
285+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
286+ "dev": true,
287+ "dependencies": {
288+ "restore-cursor": "^2.0.0"
289+ },
73290 "engines": {
74− "node": ">= 10.0.0"
291+ "node": ">=4"
75292 }
76293 },
77− "node_modules/uuid": {
78− "version": "8.3.2",
79− "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
80− "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
294+ "node_modules/color-convert": {
295+ "version": "1.9.3",
296+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
297+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
298+ "dev": true,
299+ "dependencies": {
300+ "color-name": "1.1.3"
301+ }
302+ },
303+ "node_modules/color-name": {
304+ "version": "1.1.3",
305+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
306+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
307+ "dev": true
308+ },
309+ "node_modules/combined-stream": {
310+ "version": "1.0.8",
311+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
312+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
313+ "dev": true,
314+ "dependencies": {
315+ "delayed-stream": "~1.0.0"
316+ },
317+ "engines": {
318+ "node": ">= 0.8"
319+ }
320+ },
321+ "node_modules/comment-json": {
322+ "version": "2.4.2",
323+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-2.4.2.tgz",
324+ "integrity": "sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA==",
325+ "dependencies": {
326+ "core-util-is": "^1.0.2",
327+ "esprima": "^4.0.1",
328+ "has-own-prop": "^2.0.0",
329+ "repeat-string": "^1.6.1"
330+ },
331+ "engines": {
332+ "node": ">= 6"
333+ }
334+ },
335+ "node_modules/concat-map": {
336+ "version": "0.0.1",
337+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
338+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
339+ "dev": true
340+ },
341+ "node_modules/concat-stream": {
342+ "version": "1.6.2",
343+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
344+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
345+ "dev": true,
346+ "engines": [
347+ "node >= 0.8"
348+ ],
349+ "dependencies": {
350+ "buffer-from": "^1.0.0",
351+ "inherits": "^2.0.3",
352+ "readable-stream": "^2.2.2",
353+ "typedarray": "^0.0.6"
354+ }
355+ },
356+ "node_modules/content-disposition": {
357+ "version": "0.5.3",
358+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
359+ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
360+ "dependencies": {
361+ "safe-buffer": "5.1.2"
362+ },
363+ "engines": {
364+ "node": ">= 0.6"
365+ }
366+ },
367+ "node_modules/content-type": {
368+ "version": "1.0.4",
369+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
370+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
371+ "engines": {
372+ "node": ">= 0.6"
373+ }
374+ },
375+ "node_modules/cookie": {
376+ "version": "0.4.0",
377+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
378+ "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
379+ "engines": {
380+ "node": ">= 0.6"
381+ }
382+ },
383+ "node_modules/cookie-signature": {
384+ "version": "1.0.6",
385+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
386+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
387+ },
388+ "node_modules/copy-concurrently": {
389+ "version": "1.0.5",
390+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
391+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
392+ "dev": true,
393+ "dependencies": {
394+ "aproba": "^1.1.1",
395+ "fs-write-stream-atomic": "^1.0.8",
396+ "iferr": "^0.1.5",
397+ "mkdirp": "^0.5.1",
398+ "rimraf": "^2.5.4",
399+ "run-queue": "^1.0.0"
400+ }
401+ },
402+ "node_modules/core-util-is": {
403+ "version": "1.0.2",
404+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
405+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
406+ },
407+ "node_modules/cross-spawn": {
408+ "version": "7.0.3",
409+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
410+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
411+ "dev": true,
412+ "dependencies": {
413+ "path-key": "^3.1.0",
414+ "shebang-command": "^2.0.0",
415+ "which": "^2.0.1"
416+ },
417+ "engines": {
418+ "node": ">= 8"
419+ }
420+ },
421+ "node_modules/cross-spawn/node_modules/which": {
422+ "version": "2.0.2",
423+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
424+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
425+ "dev": true,
426+ "dependencies": {
427+ "isexe": "^2.0.0"
428+ },
81429 "bin": {
82− "uuid": "dist/bin/uuid"
430+ "node-which": "bin/node-which"
431+ },
432+ "engines": {
433+ "node": ">= 8"
83434 }
84− }
85− },
86− "dependencies": {
87− "at-least-node": {
435+ },
436+ "node_modules/cyclist": {
437+ "version": "1.0.1",
438+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
439+ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
440+ "dev": true
441+ },
442+ "node_modules/dashdash": {
443+ "version": "1.14.1",
444+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
445+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
446+ "dev": true,
447+ "dependencies": {
448+ "assert-plus": "^1.0.0"
449+ },
450+ "engines": {
451+ "node": ">=0.10"
452+ }
453+ },
454+ "node_modules/debug": {
455+ "version": "2.6.9",
456+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
457+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
458+ "dependencies": {
459+ "ms": "2.0.0"
460+ }
461+ },
462+ "node_modules/delayed-stream": {
88463 "version": "1.0.0",
89− "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
90− "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
464+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
465+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
466+ "dev": true,
467+ "engines": {
468+ "node": ">=0.4.0"
469+ }
470+ },
471+ "node_modules/depd": {
472+ "version": "1.1.2",
473+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
474+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
475+ "engines": {
476+ "node": ">= 0.6"
477+ }
91478 },
92− "big-integer": {
93− "version": "1.6.51",
94− "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
95− "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
479+ "node_modules/destroy": {
480+ "version": "1.0.4",
481+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
482+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
96483 },
97− "fs-extra": {
484+ "node_modules/duplexify": {
485+ "version": "3.7.1",
486+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
487+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
488+ "dev": true,
489+ "dependencies": {
490+ "end-of-stream": "^1.0.0",
491+ "inherits": "^2.0.1",
492+ "readable-stream": "^2.0.0",
493+ "stream-shift": "^1.0.0"
494+ }
495+ },
496+ "node_modules/ecc-jsbn": {
497+ "version": "0.1.2",
498+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
499+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
500+ "dev": true,
501+ "dependencies": {
502+ "jsbn": "~0.1.0",
503+ "safer-buffer": "^2.1.0"
504+ }
505+ },
506+ "node_modules/ee-first": {
507+ "version": "1.1.1",
508+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
509+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
510+ },
511+ "node_modules/emoji-regex": {
512+ "version": "7.0.3",
513+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
514+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
515+ "dev": true
516+ },
517+ "node_modules/encodeurl": {
518+ "version": "1.0.2",
519+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
520+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
521+ "engines": {
522+ "node": ">= 0.8"
523+ }
524+ },
525+ "node_modules/end-of-stream": {
526+ "version": "1.4.4",
527+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
528+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
529+ "dev": true,
530+ "dependencies": {
531+ "once": "^1.4.0"
532+ }
533+ },
534+ "node_modules/env-paths": {
535+ "version": "2.2.1",
536+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
537+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
538+ "dev": true,
539+ "engines": {
540+ "node": ">=6"
541+ }
542+ },
543+ "node_modules/escape-html": {
544+ "version": "1.0.3",
545+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
546+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
547+ },
548+ "node_modules/escape-string-regexp": {
549+ "version": "1.0.5",
550+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
551+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
552+ "dev": true,
553+ "engines": {
554+ "node": ">=0.8.0"
555+ }
556+ },
557+ "node_modules/esprima": {
558+ "version": "4.0.1",
559+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
560+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
561+ "bin": {
562+ "esparse": "bin/esparse.js",
563+ "esvalidate": "bin/esvalidate.js"
564+ },
565+ "engines": {
566+ "node": ">=4"
567+ }
568+ },
569+ "node_modules/etag": {
570+ "version": "1.8.1",
571+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
572+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
573+ "engines": {
574+ "node": ">= 0.6"
575+ }
576+ },
577+ "node_modules/execa": {
578+ "version": "2.1.0",
579+ "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
580+ "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
581+ "dev": true,
582+ "dependencies": {
583+ "cross-spawn": "^7.0.0",
584+ "get-stream": "^5.0.0",
585+ "is-stream": "^2.0.0",
586+ "merge-stream": "^2.0.0",
587+ "npm-run-path": "^3.0.0",
588+ "onetime": "^5.1.0",
589+ "p-finally": "^2.0.0",
590+ "signal-exit": "^3.0.2",
591+ "strip-final-newline": "^2.0.0"
592+ },
593+ "engines": {
594+ "node": "^8.12.0 || >=9.7.0"
595+ }
596+ },
597+ "node_modules/express": {
598+ "version": "4.17.1",
599+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
600+ "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
601+ "dependencies": {
602+ "accepts": "~1.3.7",
603+ "array-flatten": "1.1.1",
604+ "body-parser": "1.19.0",
605+ "content-disposition": "0.5.3",
606+ "content-type": "~1.0.4",
607+ "cookie": "0.4.0",
608+ "cookie-signature": "1.0.6",
609+ "debug": "2.6.9",
610+ "depd": "~1.1.2",
611+ "encodeurl": "~1.0.2",
612+ "escape-html": "~1.0.3",
613+ "etag": "~1.8.1",
614+ "finalhandler": "~1.1.2",
615+ "fresh": "0.5.2",
616+ "merge-descriptors": "1.0.1",
617+ "methods": "~1.1.2",
618+ "on-finished": "~2.3.0",
619+ "parseurl": "~1.3.3",
620+ "path-to-regexp": "0.1.7",
621+ "proxy-addr": "~2.0.5",
622+ "qs": "6.7.0",
623+ "range-parser": "~1.2.1",
624+ "safe-buffer": "5.1.2",
625+ "send": "0.17.1",
626+ "serve-static": "1.14.1",
627+ "setprototypeof": "1.1.1",
628+ "statuses": "~1.5.0",
629+ "type-is": "~1.6.18",
630+ "utils-merge": "1.0.1",
631+ "vary": "~1.1.2"
632+ },
633+ "engines": {
634+ "node": ">= 0.10.0"
635+ }
636+ },
637+ "node_modules/extend": {
638+ "version": "3.0.2",
639+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
640+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
641+ "dev": true
642+ },
643+ "node_modules/extsprintf": {
644+ "version": "1.3.0",
645+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
646+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
647+ "dev": true,
648+ "engines": [
649+ "node >=0.6.0"
650+ ]
651+ },
652+ "node_modules/fast-deep-equal": {
653+ "version": "3.1.3",
654+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
655+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
656+ "dev": true
657+ },
658+ "node_modules/fast-json-stable-stringify": {
659+ "version": "2.1.0",
660+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
661+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
662+ "dev": true
663+ },
664+ "node_modules/figgy-pudding": {
665+ "version": "3.5.2",
666+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
667+ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
668+ "dev": true
669+ },
670+ "node_modules/filesize": {
671+ "version": "4.2.1",
672+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz",
673+ "integrity": "sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA==",
674+ "dev": true,
675+ "engines": {
676+ "node": ">= 0.4.0"
677+ }
678+ },
679+ "node_modules/finalhandler": {
680+ "version": "1.1.2",
681+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
682+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
683+ "dependencies": {
684+ "debug": "2.6.9",
685+ "encodeurl": "~1.0.2",
686+ "escape-html": "~1.0.3",
687+ "on-finished": "~2.3.0",
688+ "parseurl": "~1.3.3",
689+ "statuses": "~1.5.0",
690+ "unpipe": "~1.0.0"
691+ },
692+ "engines": {
693+ "node": ">= 0.8"
694+ }
695+ },
696+ "node_modules/flush-write-stream": {
697+ "version": "1.1.1",
698+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
699+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
700+ "dev": true,
701+ "dependencies": {
702+ "inherits": "^2.0.3",
703+ "readable-stream": "^2.3.6"
704+ }
705+ },
706+ "node_modules/forever-agent": {
707+ "version": "0.6.1",
708+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
709+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
710+ "dev": true,
711+ "engines": {
712+ "node": "*"
713+ }
714+ },
715+ "node_modules/form-data": {
716+ "version": "2.3.3",
717+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
718+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
719+ "dev": true,
720+ "dependencies": {
721+ "asynckit": "^0.4.0",
722+ "combined-stream": "^1.0.6",
723+ "mime-types": "^2.1.12"
724+ },
725+ "engines": {
726+ "node": ">= 0.12"
727+ }
728+ },
729+ "node_modules/forwarded": {
730+ "version": "0.1.2",
731+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
732+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
733+ "engines": {
734+ "node": ">= 0.6"
735+ }
736+ },
737+ "node_modules/fresh": {
738+ "version": "0.5.2",
739+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
740+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
741+ "engines": {
742+ "node": ">= 0.6"
743+ }
744+ },
745+ "node_modules/from2": {
746+ "version": "2.3.0",
747+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
748+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
749+ "dev": true,
750+ "dependencies": {
751+ "inherits": "^2.0.1",
752+ "readable-stream": "^2.0.0"
753+ }
754+ },
755+ "node_modules/fs-extra": {
98756 "version": "9.1.0",
99757 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
100758 "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
101− "requires": {
759+ "dependencies": {
102760 "at-least-node": "^1.0.0",
103761 "graceful-fs": "^4.2.0",
104762 "jsonfile": "^6.0.1",
105763 "universalify": "^2.0.0"
764+ },
765+ "engines": {
766+ "node": ">=10"
106767 }
107768 },
108− "graceful-fs": {
109− "version": "4.2.10",
110− "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
111− "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
769+ "node_modules/fs-minipass": {
770+ "version": "1.2.7",
771+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
772+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
773+ "dev": true,
774+ "dependencies": {
775+ "minipass": "^2.6.0"
776+ }
112777 },
113− "jsonfile": {
114− "version": "6.1.0",
115− "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
116− "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
117− "requires": {
118− "graceful-fs": "^4.1.6",
119− "universalify": "^2.0.0"
778+ "node_modules/fs-write-stream-atomic": {
779+ "version": "1.0.10",
780+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
781+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
782+ "dev": true,
783+ "dependencies": {
784+ "graceful-fs": "^4.1.2",
785+ "iferr": "^0.1.5",
786+ "imurmurhash": "^0.1.4",
787+ "readable-stream": "1 || 2"
120788 }
121789 },
122− "minimist": {
123− "version": "1.2.6",
124− "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
125− "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
790+ "node_modules/fs.realpath": {
791+ "version": "1.0.0",
792+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
793+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
794+ "dev": true
126795 },
127− "universalify": {
128− "version": "2.0.0",
129− "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
130− "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
796+ "node_modules/get-stream": {
797+ "version": "5.2.0",
798+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
799+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
800+ "dev": true,
801+ "dependencies": {
802+ "pump": "^3.0.0"
803+ },
804+ "engines": {
805+ "node": ">=8"
806+ },
807+ "funding": {
808+ "url": "https://github.com/sponsors/sindresorhus"
809+ }
131810 },
132− "uuid": {
133− "version": "8.3.2",
134− "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
135− "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
811+ "node_modules/getpass": {
812+ "version": "0.1.7",
813+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
814+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
815+ "dev": true,
816+ "dependencies": {
817+ "assert-plus": "^1.0.0"
818+ }
819+ },
820+ "node_modules/glob": {
821+ "version": "7.1.6",
822+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
823+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
824+ "dev": true,
825+ "dependencies": {
826+ "fs.realpath": "^1.0.0",
827+ "inflight": "^1.0.4",
828+ "inherits": "2",
829+ "minimatch": "^3.0.4",
830+ "once": "^1.3.0",
831+ "path-is-absolute": "^1.0.0"
832+ },
833+ "engines": {
834+ "node": "*"
835+ },
836+ "funding": {
837+ "url": "https://github.com/sponsors/isaacs"
838+ }
839+ },
840+ "node_modules/graceful-fs": {
841+ "version": "4.2.6",
842+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
843+ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
844+ },
845+ "node_modules/har-schema": {
846+ "version": "2.0.0",
847+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
848+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
849+ "dev": true,
850+ "engines": {
851+ "node": ">=4"
852+ }
853+ },
854+ "node_modules/har-validator": {
855+ "version": "5.1.5",
856+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
857+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
858+ "deprecated": "this library is no longer supported",
859+ "dev": true,
860+ "dependencies": {
861+ "ajv": "^6.12.3",
862+ "har-schema": "^2.0.0"
863+ },
864+ "engines": {
865+ "node": ">=6"
866+ }
867+ },
868+ "node_modules/has-flag": {
869+ "version": "3.0.0",
870+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
871+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
872+ "dev": true,
873+ "engines": {
874+ "node": ">=4"
875+ }
876+ },
877+ "node_modules/has-own-prop": {
878+ "version": "2.0.0",
879+ "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
880+ "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==",
881+ "engines": {
882+ "node": ">=8"
883+ }
884+ },
885+ "node_modules/http-errors": {
886+ "version": "1.7.2",
887+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
888+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
889+ "dependencies": {
890+ "depd": "~1.1.2",
891+ "inherits": "2.0.3",
892+ "setprototypeof": "1.1.1",
893+ "statuses": ">= 1.5.0 < 2",
894+ "toidentifier": "1.0.0"
895+ },
896+ "engines": {
897+ "node": ">= 0.6"
898+ }
899+ },
900+ "node_modules/http-signature": {
901+ "version": "1.2.0",
902+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
903+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
904+ "dev": true,
905+ "dependencies": {
906+ "assert-plus": "^1.0.0",
907+ "jsprim": "^1.2.2",
908+ "sshpk": "^1.7.0"
909+ },
910+ "engines": {
911+ "node": ">=0.8",
912+ "npm": ">=1.3.7"
913+ }
914+ },
915+ "node_modules/iconv-lite": {
916+ "version": "0.4.24",
917+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
918+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
919+ "dependencies": {
920+ "safer-buffer": ">= 2.1.2 < 3"
921+ },
922+ "engines": {
923+ "node": ">=0.10.0"
924+ }
925+ },
926+ "node_modules/iferr": {
927+ "version": "0.1.5",
928+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
929+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
930+ "dev": true
931+ },
932+ "node_modules/imurmurhash": {
933+ "version": "0.1.4",
934+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
935+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
936+ "dev": true,
937+ "engines": {
938+ "node": ">=0.8.19"
939+ }
940+ },
941+ "node_modules/inflight": {
942+ "version": "1.0.6",
943+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
944+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
945+ "dev": true,
946+ "dependencies": {
947+ "once": "^1.3.0",
948+ "wrappy": "1"
949+ }
950+ },
951+ "node_modules/inherits": {
952+ "version": "2.0.3",
953+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
954+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
955+ },
956+ "node_modules/ipaddr.js": {
957+ "version": "1.9.1",
958+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
959+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
960+ "engines": {
961+ "node": ">= 0.10"
962+ }
963+ },
964+ "node_modules/is-fullwidth-code-point": {
965+ "version": "2.0.0",
966+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
967+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
968+ "dev": true,
969+ "engines": {
970+ "node": ">=4"
971+ }
972+ },
973+ "node_modules/is-plain-obj": {
974+ "version": "2.1.0",
975+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
976+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
977+ "dev": true,
978+ "engines": {
979+ "node": ">=8"
980+ }
981+ },
982+ "node_modules/is-stream": {
983+ "version": "2.0.0",
984+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
985+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
986+ "dev": true,
987+ "engines": {
988+ "node": ">=8"
989+ }
990+ },
991+ "node_modules/is-typedarray": {
992+ "version": "1.0.0",
993+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
994+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
995+ "dev": true
996+ },
997+ "node_modules/isarray": {
998+ "version": "1.0.0",
999+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1000+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1001+ "dev": true
1002+ },
1003+ "node_modules/isexe": {
1004+ "version": "2.0.0",
1005+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1006+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1007+ "dev": true
1008+ },
1009+ "node_modules/isstream": {
1010+ "version": "0.1.2",
1011+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1012+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
1013+ "dev": true
1014+ },
1015+ "node_modules/jsbn": {
1016+ "version": "0.1.1",
1017+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1018+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1019+ "dev": true
1020+ },
1021+ "node_modules/json-parser": {
1022+ "version": "3.1.2",
1023+ "resolved": "https://registry.npmjs.org/json-parser/-/json-parser-3.1.2.tgz",
1024+ "integrity": "sha512-FCy1zIx3KUtOcNlFw9/ZGfDFBAGAwE6qYeaYwXCYUXhMO4TzizoQaQN1/LpZn088O7cz8eLVCjd/9aeW9HN32w==",
1025+ "deprecated": "`json-parser` is deprecated. Please use `comment-json` instead",
1026+ "dependencies": {
1027+ "comment-json": "^2.1.0"
1028+ },
1029+ "engines": {
1030+ "node": ">= 6"
1031+ }
1032+ },
1033+ "node_modules/json-schema": {
1034+ "version": "0.2.3",
1035+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1036+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
1037+ "dev": true
1038+ },
1039+ "node_modules/json-schema-traverse": {
1040+ "version": "0.4.1",
1041+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1042+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1043+ "dev": true
1044+ },
1045+ "node_modules/json-stringify-safe": {
1046+ "version": "5.0.1",
1047+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1048+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1049+ "dev": true
1050+ },
1051+ "node_modules/jsonfile": {
1052+ "version": "6.1.0",
1053+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
1054+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
1055+ "dependencies": {
1056+ "universalify": "^2.0.0"
1057+ },
1058+ "optionalDependencies": {
1059+ "graceful-fs": "^4.1.6"
1060+ }
1061+ },
1062+ "node_modules/jsprim": {
1063+ "version": "1.4.1",
1064+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1065+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1066+ "dev": true,
1067+ "engines": [
1068+ "node >=0.6.0"
1069+ ],
1070+ "dependencies": {
1071+ "assert-plus": "1.0.0",
1072+ "extsprintf": "1.3.0",
1073+ "json-schema": "0.2.3",
1074+ "verror": "1.10.0"
1075+ }
1076+ },
1077+ "node_modules/log-symbols": {
1078+ "version": "3.0.0",
1079+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
1080+ "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
1081+ "dev": true,
1082+ "dependencies": {
1083+ "chalk": "^2.4.2"
1084+ },
1085+ "engines": {
1086+ "node": ">=8"
1087+ }
1088+ },
1089+ "node_modules/log-update": {
1090+ "version": "3.4.0",
1091+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz",
1092+ "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==",
1093+ "dev": true,
1094+ "dependencies": {
1095+ "ansi-escapes": "^3.2.0",
1096+ "cli-cursor": "^2.1.0",
1097+ "wrap-ansi": "^5.0.0"
1098+ },
1099+ "engines": {
1100+ "node": ">=6"
1101+ },
1102+ "funding": {
1103+ "url": "https://github.com/sponsors/sindresorhus"
1104+ }
1105+ },
1106+ "node_modules/lru-cache": {
1107+ "version": "5.1.1",
1108+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1109+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1110+ "dev": true,
1111+ "dependencies": {
1112+ "yallist": "^3.0.2"
1113+ }
1114+ },
1115+ "node_modules/media-typer": {
1116+ "version": "0.3.0",
1117+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1118+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
1119+ "engines": {
1120+ "node": ">= 0.6"
1121+ }
1122+ },
1123+ "node_modules/merge-descriptors": {
1124+ "version": "1.0.1",
1125+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1126+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
1127+ },
1128+ "node_modules/merge-stream": {
1129+ "version": "2.0.0",
1130+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1131+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1132+ "dev": true
1133+ },
1134+ "node_modules/methods": {
1135+ "version": "1.1.2",
1136+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1137+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
1138+ "engines": {
1139+ "node": ">= 0.6"
1140+ }
1141+ },
1142+ "node_modules/mime": {
1143+ "version": "1.6.0",
1144+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1145+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1146+ "bin": {
1147+ "mime": "cli.js"
1148+ },
1149+ "engines": {
1150+ "node": ">=4"
1151+ }
1152+ },
1153+ "node_modules/mime-db": {
1154+ "version": "1.46.0",
1155+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
1156+ "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
1157+ "engines": {
1158+ "node": ">= 0.6"
1159+ }
1160+ },
1161+ "node_modules/mime-types": {
1162+ "version": "2.1.29",
1163+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
1164+ "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
1165+ "dependencies": {
1166+ "mime-db": "1.46.0"
1167+ },
1168+ "engines": {
1169+ "node": ">= 0.6"
1170+ }
1171+ },
1172+ "node_modules/mimic-fn": {
1173+ "version": "2.1.0",
1174+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1175+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1176+ "dev": true,
1177+ "engines": {
1178+ "node": ">=6"
1179+ }
1180+ },
1181+ "node_modules/minimatch": {
1182+ "version": "3.0.4",
1183+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1184+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1185+ "dev": true,
1186+ "dependencies": {
1187+ "brace-expansion": "^1.1.7"
1188+ },
1189+ "engines": {
1190+ "node": "*"
1191+ }
1192+ },
1193+ "node_modules/minimist": {
1194+ "version": "1.2.5",
1195+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1196+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
1197+ },
1198+ "node_modules/minipass": {
1199+ "version": "2.9.0",
1200+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
1201+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
1202+ "dev": true,
1203+ "dependencies": {
1204+ "safe-buffer": "^5.1.2",
1205+ "yallist": "^3.0.0"
1206+ }
1207+ },
1208+ "node_modules/minizlib": {
1209+ "version": "1.3.3",
1210+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
1211+ "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
1212+ "dev": true,
1213+ "dependencies": {
1214+ "minipass": "^2.9.0"
1215+ }
1216+ },
1217+ "node_modules/mississippi": {
1218+ "version": "3.0.0",
1219+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
1220+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
1221+ "dev": true,
1222+ "dependencies": {
1223+ "concat-stream": "^1.5.0",
1224+ "duplexify": "^3.4.2",
1225+ "end-of-stream": "^1.1.0",
1226+ "flush-write-stream": "^1.0.0",
1227+ "from2": "^2.1.0",
1228+ "parallel-transform": "^1.1.0",
1229+ "pump": "^3.0.0",
1230+ "pumpify": "^1.3.3",
1231+ "stream-each": "^1.1.0",
1232+ "through2": "^2.0.0"
1233+ },
1234+ "engines": {
1235+ "node": ">=4.0.0"
1236+ }
1237+ },
1238+ "node_modules/mkdirp": {
1239+ "version": "0.5.5",
1240+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
1241+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
1242+ "dev": true,
1243+ "dependencies": {
1244+ "minimist": "^1.2.5"
1245+ },
1246+ "bin": {
1247+ "mkdirp": "bin/cmd.js"
1248+ }
1249+ },
1250+ "node_modules/move-concurrently": {
1251+ "version": "1.0.1",
1252+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
1253+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
1254+ "dev": true,
1255+ "dependencies": {
1256+ "aproba": "^1.1.1",
1257+ "copy-concurrently": "^1.0.0",
1258+ "fs-write-stream-atomic": "^1.0.8",
1259+ "mkdirp": "^0.5.1",
1260+ "rimraf": "^2.5.4",
1261+ "run-queue": "^1.0.3"
1262+ }
1263+ },
1264+ "node_modules/ms": {
1265+ "version": "2.0.0",
1266+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1267+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1268+ },
1269+ "node_modules/negotiator": {
1270+ "version": "0.6.2",
1271+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
1272+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
1273+ "engines": {
1274+ "node": ">= 0.6"
1275+ }
1276+ },
1277+ "node_modules/npm-run-path": {
1278+ "version": "3.1.0",
1279+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
1280+ "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
1281+ "dev": true,
1282+ "dependencies": {
1283+ "path-key": "^3.0.0"
1284+ },
1285+ "engines": {
1286+ "node": ">=8"
1287+ }
1288+ },
1289+ "node_modules/oauth-sign": {
1290+ "version": "0.9.0",
1291+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
1292+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
1293+ "dev": true,
1294+ "engines": {
1295+ "node": "*"
1296+ }
1297+ },
1298+ "node_modules/on-finished": {
1299+ "version": "2.3.0",
1300+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
1301+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
1302+ "dependencies": {
1303+ "ee-first": "1.1.1"
1304+ },
1305+ "engines": {
1306+ "node": ">= 0.8"
1307+ }
1308+ },
1309+ "node_modules/once": {
1310+ "version": "1.4.0",
1311+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1312+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1313+ "dev": true,
1314+ "dependencies": {
1315+ "wrappy": "1"
1316+ }
1317+ },
1318+ "node_modules/onetime": {
1319+ "version": "5.1.2",
1320+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1321+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1322+ "dev": true,
1323+ "dependencies": {
1324+ "mimic-fn": "^2.1.0"
1325+ },
1326+ "engines": {
1327+ "node": ">=6"
1328+ },
1329+ "funding": {
1330+ "url": "https://github.com/sponsors/sindresorhus"
1331+ }
1332+ },
1333+ "node_modules/p-finally": {
1334+ "version": "2.0.1",
1335+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
1336+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
1337+ "dev": true,
1338+ "engines": {
1339+ "node": ">=8"
1340+ }
1341+ },
1342+ "node_modules/parallel-transform": {
1343+ "version": "1.2.0",
1344+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
1345+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
1346+ "dev": true,
1347+ "dependencies": {
1348+ "cyclist": "^1.0.1",
1349+ "inherits": "^2.0.3",
1350+ "readable-stream": "^2.1.5"
1351+ }
1352+ },
1353+ "node_modules/parseurl": {
1354+ "version": "1.3.3",
1355+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1356+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1357+ "engines": {
1358+ "node": ">= 0.8"
1359+ }
1360+ },
1361+ "node_modules/path-is-absolute": {
1362+ "version": "1.0.1",
1363+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1364+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1365+ "dev": true,
1366+ "engines": {
1367+ "node": ">=0.10.0"
1368+ }
1369+ },
1370+ "node_modules/path-key": {
1371+ "version": "3.1.1",
1372+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1373+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1374+ "dev": true,
1375+ "engines": {
1376+ "node": ">=8"
1377+ }
1378+ },
1379+ "node_modules/path-to-regexp": {
1380+ "version": "0.1.7",
1381+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1382+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
1383+ },
1384+ "node_modules/performance-now": {
1385+ "version": "2.1.0",
1386+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1387+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
1388+ "dev": true
1389+ },
1390+ "node_modules/process-nextick-args": {
1391+ "version": "2.0.1",
1392+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1393+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
1394+ "dev": true
1395+ },
1396+ "node_modules/promise-inflight": {
1397+ "version": "1.0.1",
1398+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
1399+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
1400+ "dev": true
1401+ },
1402+ "node_modules/proxy-addr": {
1403+ "version": "2.0.6",
1404+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
1405+ "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
1406+ "dependencies": {
1407+ "forwarded": "~0.1.2",
1408+ "ipaddr.js": "1.9.1"
1409+ },
1410+ "engines": {
1411+ "node": ">= 0.10"
1412+ }
1413+ },
1414+ "node_modules/psl": {
1415+ "version": "1.8.0",
1416+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
1417+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
1418+ "dev": true
1419+ },
1420+ "node_modules/pump": {
1421+ "version": "3.0.0",
1422+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
1423+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
1424+ "dev": true,
1425+ "dependencies": {
1426+ "end-of-stream": "^1.1.0",
1427+ "once": "^1.3.1"
1428+ }
1429+ },
1430+ "node_modules/pumpify": {
1431+ "version": "1.5.1",
1432+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
1433+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
1434+ "dev": true,
1435+ "dependencies": {
1436+ "duplexify": "^3.6.0",
1437+ "inherits": "^2.0.3",
1438+ "pump": "^2.0.0"
1439+ }
1440+ },
1441+ "node_modules/pumpify/node_modules/pump": {
1442+ "version": "2.0.1",
1443+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
1444+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
1445+ "dev": true,
1446+ "dependencies": {
1447+ "end-of-stream": "^1.1.0",
1448+ "once": "^1.3.1"
1449+ }
1450+ },
1451+ "node_modules/punycode": {
1452+ "version": "2.1.1",
1453+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1454+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1455+ "dev": true,
1456+ "engines": {
1457+ "node": ">=6"
1458+ }
1459+ },
1460+ "node_modules/purescript": {
1461+ "version": "0.14.0",
1462+ "resolved": "https://registry.npmjs.org/purescript/-/purescript-0.14.0.tgz",
1463+ "integrity": "sha512-iTA1k8mwxHqrJp/K296g6omVfve5RCjnB5D6Up93PVtZdP66mCIqlOYC4hrLBHg2hgkk27xePDt5NUXKvH4ApQ==",
1464+ "dev": true,
1465+ "hasInstallScript": true,
1466+ "dependencies": {
1467+ "purescript-installer": "^0.2.0"
1468+ },
1469+ "bin": {
1470+ "purs": "purs.bin"
1471+ }
1472+ },
1473+ "node_modules/purescript-installer": {
1474+ "version": "0.2.5",
1475+ "resolved": "https://registry.npmjs.org/purescript-installer/-/purescript-installer-0.2.5.tgz",
1476+ "integrity": "sha512-fQAWWP5a7scuchXecjpU4r4KEgSPuS6bBnaP01k9f71qqD28HaJ2m4PXHFkhkR4oATAxTPIGCtmTwtVoiBOHog==",
1477+ "dev": true,
1478+ "dependencies": {
1479+ "arch": "^2.1.1",
1480+ "byline": "^5.0.0",
1481+ "cacache": "^11.3.2",
1482+ "chalk": "^2.4.2",
1483+ "env-paths": "^2.2.0",
1484+ "execa": "^2.0.3",
1485+ "filesize": "^4.1.2",
1486+ "is-plain-obj": "^2.0.0",
1487+ "log-symbols": "^3.0.0",
1488+ "log-update": "^3.2.0",
1489+ "minimist": "^1.2.0",
1490+ "mkdirp": "^0.5.1",
1491+ "ms": "^2.1.2",
1492+ "once": "^1.4.0",
1493+ "pump": "^3.0.0",
1494+ "request": "^2.88.0",
1495+ "rimraf": "^2.6.3",
1496+ "tar": "^4.4.6",
1497+ "which": "^1.3.1",
1498+ "zen-observable": "^0.8.14"
1499+ },
1500+ "bin": {
1501+ "install-purescript": "index.js"
1502+ },
1503+ "engines": {
1504+ "node": ">=8.3.0"
1505+ }
1506+ },
1507+ "node_modules/purescript-installer/node_modules/ms": {
1508+ "version": "2.1.3",
1509+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1510+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1511+ "dev": true
1512+ },
1513+ "node_modules/qs": {
1514+ "version": "6.7.0",
1515+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
1516+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
1517+ "engines": {
1518+ "node": ">=0.6"
1519+ }
1520+ },
1521+ "node_modules/range-parser": {
1522+ "version": "1.2.1",
1523+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1524+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1525+ "engines": {
1526+ "node": ">= 0.6"
1527+ }
1528+ },
1529+ "node_modules/raw-body": {
1530+ "version": "2.4.0",
1531+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
1532+ "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
1533+ "dependencies": {
1534+ "bytes": "3.1.0",
1535+ "http-errors": "1.7.2",
1536+ "iconv-lite": "0.4.24",
1537+ "unpipe": "1.0.0"
1538+ },
1539+ "engines": {
1540+ "node": ">= 0.8"
1541+ }
1542+ },
1543+ "node_modules/readable-stream": {
1544+ "version": "2.3.7",
1545+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
1546+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
1547+ "dev": true,
1548+ "dependencies": {
1549+ "core-util-is": "~1.0.0",
1550+ "inherits": "~2.0.3",
1551+ "isarray": "~1.0.0",
1552+ "process-nextick-args": "~2.0.0",
1553+ "safe-buffer": "~5.1.1",
1554+ "string_decoder": "~1.1.1",
1555+ "util-deprecate": "~1.0.1"
1556+ }
1557+ },
1558+ "node_modules/repeat-string": {
1559+ "version": "1.6.1",
1560+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
1561+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
1562+ "engines": {
1563+ "node": ">=0.10"
1564+ }
1565+ },
1566+ "node_modules/request": {
1567+ "version": "2.88.2",
1568+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
1569+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
1570+ "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
1571+ "dev": true,
1572+ "dependencies": {
1573+ "aws-sign2": "~0.7.0",
1574+ "aws4": "^1.8.0",
1575+ "caseless": "~0.12.0",
1576+ "combined-stream": "~1.0.6",
1577+ "extend": "~3.0.2",
1578+ "forever-agent": "~0.6.1",
1579+ "form-data": "~2.3.2",
1580+ "har-validator": "~5.1.3",
1581+ "http-signature": "~1.2.0",
1582+ "is-typedarray": "~1.0.0",
1583+ "isstream": "~0.1.2",
1584+ "json-stringify-safe": "~5.0.1",
1585+ "mime-types": "~2.1.19",
1586+ "oauth-sign": "~0.9.0",
1587+ "performance-now": "^2.1.0",
1588+ "qs": "~6.5.2",
1589+ "safe-buffer": "^5.1.2",
1590+ "tough-cookie": "~2.5.0",
1591+ "tunnel-agent": "^0.6.0",
1592+ "uuid": "^3.3.2"
1593+ },
1594+ "engines": {
1595+ "node": ">= 6"
1596+ }
1597+ },
1598+ "node_modules/request/node_modules/qs": {
1599+ "version": "6.5.2",
1600+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1601+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
1602+ "dev": true,
1603+ "engines": {
1604+ "node": ">=0.6"
1605+ }
1606+ },
1607+ "node_modules/request/node_modules/uuid": {
1608+ "version": "3.4.0",
1609+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1610+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
1611+ "dev": true,
1612+ "bin": {
1613+ "uuid": "bin/uuid"
1614+ }
1615+ },
1616+ "node_modules/restore-cursor": {
1617+ "version": "2.0.0",
1618+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
1619+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
1620+ "dev": true,
1621+ "dependencies": {
1622+ "onetime": "^2.0.0",
1623+ "signal-exit": "^3.0.2"
1624+ },
1625+ "engines": {
1626+ "node": ">=4"
1627+ }
1628+ },
1629+ "node_modules/restore-cursor/node_modules/mimic-fn": {
1630+ "version": "1.2.0",
1631+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
1632+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
1633+ "dev": true,
1634+ "engines": {
1635+ "node": ">=4"
1636+ }
1637+ },
1638+ "node_modules/restore-cursor/node_modules/onetime": {
1639+ "version": "2.0.1",
1640+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
1641+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
1642+ "dev": true,
1643+ "dependencies": {
1644+ "mimic-fn": "^1.0.0"
1645+ },
1646+ "engines": {
1647+ "node": ">=4"
1648+ }
1649+ },
1650+ "node_modules/rimraf": {
1651+ "version": "2.7.1",
1652+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
1653+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
1654+ "dev": true,
1655+ "dependencies": {
1656+ "glob": "^7.1.3"
1657+ },
1658+ "bin": {
1659+ "rimraf": "bin.js"
1660+ }
1661+ },
1662+ "node_modules/run-queue": {
1663+ "version": "1.0.3",
1664+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
1665+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
1666+ "dev": true,
1667+ "dependencies": {
1668+ "aproba": "^1.1.1"
1669+ }
1670+ },
1671+ "node_modules/safe-buffer": {
1672+ "version": "5.1.2",
1673+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1674+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1675+ },
1676+ "node_modules/safer-buffer": {
1677+ "version": "2.1.2",
1678+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1679+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1680+ },
1681+ "node_modules/send": {
1682+ "version": "0.17.1",
1683+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1684+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1685+ "dependencies": {
1686+ "debug": "2.6.9",
1687+ "depd": "~1.1.2",
1688+ "destroy": "~1.0.4",
1689+ "encodeurl": "~1.0.2",
1690+ "escape-html": "~1.0.3",
1691+ "etag": "~1.8.1",
1692+ "fresh": "0.5.2",
1693+ "http-errors": "~1.7.2",
1694+ "mime": "1.6.0",
1695+ "ms": "2.1.1",
1696+ "on-finished": "~2.3.0",
1697+ "range-parser": "~1.2.1",
1698+ "statuses": "~1.5.0"
1699+ },
1700+ "engines": {
1701+ "node": ">= 0.8.0"
1702+ }
1703+ },
1704+ "node_modules/send/node_modules/ms": {
1705+ "version": "2.1.1",
1706+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1707+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
1708+ },
1709+ "node_modules/serve-static": {
1710+ "version": "1.14.1",
1711+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1712+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1713+ "dependencies": {
1714+ "encodeurl": "~1.0.2",
1715+ "escape-html": "~1.0.3",
1716+ "parseurl": "~1.3.3",
1717+ "send": "0.17.1"
1718+ },
1719+ "engines": {
1720+ "node": ">= 0.8.0"
1721+ }
1722+ },
1723+ "node_modules/setprototypeof": {
1724+ "version": "1.1.1",
1725+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1726+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
1727+ },
1728+ "node_modules/shebang-command": {
1729+ "version": "2.0.0",
1730+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1731+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1732+ "dev": true,
1733+ "dependencies": {
1734+ "shebang-regex": "^3.0.0"
1735+ },
1736+ "engines": {
1737+ "node": ">=8"
1738+ }
1739+ },
1740+ "node_modules/shebang-regex": {
1741+ "version": "3.0.0",
1742+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1743+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1744+ "dev": true,
1745+ "engines": {
1746+ "node": ">=8"
1747+ }
1748+ },
1749+ "node_modules/signal-exit": {
1750+ "version": "3.0.3",
1751+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
1752+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
1753+ "dev": true
1754+ },
1755+ "node_modules/spago": {
1756+ "version": "0.19.1",
1757+ "resolved": "https://registry.npmjs.org/spago/-/spago-0.19.1.tgz",
1758+ "integrity": "sha512-OD/yopJZ9Ub+XsFtayDeLAWLT4kLdMxosJEyyp8W5OkyJVVSbCrvYacsO7iq3lSuHJmmNny/TEZdyb7uSyupng==",
1759+ "dev": true,
1760+ "hasInstallScript": true,
1761+ "dependencies": {
1762+ "request": "^2.88.0",
1763+ "tar": "^4.4.8"
1764+ },
1765+ "bin": {
1766+ "spago": "spago"
1767+ }
1768+ },
1769+ "node_modules/sshpk": {
1770+ "version": "1.16.1",
1771+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
1772+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
1773+ "dev": true,
1774+ "dependencies": {
1775+ "asn1": "~0.2.3",
1776+ "assert-plus": "^1.0.0",
1777+ "bcrypt-pbkdf": "^1.0.0",
1778+ "dashdash": "^1.12.0",
1779+ "ecc-jsbn": "~0.1.1",
1780+ "getpass": "^0.1.1",
1781+ "jsbn": "~0.1.0",
1782+ "safer-buffer": "^2.0.2",
1783+ "tweetnacl": "~0.14.0"
1784+ },
1785+ "bin": {
1786+ "sshpk-conv": "bin/sshpk-conv",
1787+ "sshpk-sign": "bin/sshpk-sign",
1788+ "sshpk-verify": "bin/sshpk-verify"
1789+ },
1790+ "engines": {
1791+ "node": ">=0.10.0"
1792+ }
1793+ },
1794+ "node_modules/ssri": {
1795+ "version": "6.0.1",
1796+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
1797+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
1798+ "dev": true,
1799+ "dependencies": {
1800+ "figgy-pudding": "^3.5.1"
1801+ }
1802+ },
1803+ "node_modules/statuses": {
1804+ "version": "1.5.0",
1805+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1806+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
1807+ "engines": {
1808+ "node": ">= 0.6"
1809+ }
1810+ },
1811+ "node_modules/stream-each": {
1812+ "version": "1.2.3",
1813+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
1814+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
1815+ "dev": true,
1816+ "dependencies": {
1817+ "end-of-stream": "^1.1.0",
1818+ "stream-shift": "^1.0.0"
1819+ }
1820+ },
1821+ "node_modules/stream-shift": {
1822+ "version": "1.0.1",
1823+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
1824+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
1825+ "dev": true
1826+ },
1827+ "node_modules/string_decoder": {
1828+ "version": "1.1.1",
1829+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1830+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1831+ "dev": true,
1832+ "dependencies": {
1833+ "safe-buffer": "~5.1.0"
1834+ }
1835+ },
1836+ "node_modules/string-width": {
1837+ "version": "3.1.0",
1838+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
1839+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
1840+ "dev": true,
1841+ "dependencies": {
1842+ "emoji-regex": "^7.0.1",
1843+ "is-fullwidth-code-point": "^2.0.0",
1844+ "strip-ansi": "^5.1.0"
1845+ },
1846+ "engines": {
1847+ "node": ">=6"
1848+ }
1849+ },
1850+ "node_modules/strip-ansi": {
1851+ "version": "5.2.0",
1852+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1853+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1854+ "dev": true,
1855+ "dependencies": {
1856+ "ansi-regex": "^4.1.0"
1857+ },
1858+ "engines": {
1859+ "node": ">=6"
1860+ }
1861+ },
1862+ "node_modules/strip-final-newline": {
1863+ "version": "2.0.0",
1864+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
1865+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
1866+ "dev": true,
1867+ "engines": {
1868+ "node": ">=6"
1869+ }
1870+ },
1871+ "node_modules/supports-color": {
1872+ "version": "5.5.0",
1873+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1874+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1875+ "dev": true,
1876+ "dependencies": {
1877+ "has-flag": "^3.0.0"
1878+ },
1879+ "engines": {
1880+ "node": ">=4"
1881+ }
1882+ },
1883+ "node_modules/tar": {
1884+ "version": "4.4.13",
1885+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
1886+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
1887+ "dev": true,
1888+ "dependencies": {
1889+ "chownr": "^1.1.1",
1890+ "fs-minipass": "^1.2.5",
1891+ "minipass": "^2.8.6",
1892+ "minizlib": "^1.2.1",
1893+ "mkdirp": "^0.5.0",
1894+ "safe-buffer": "^5.1.2",
1895+ "yallist": "^3.0.3"
1896+ },
1897+ "engines": {
1898+ "node": ">=4.5"
1899+ }
1900+ },
1901+ "node_modules/through2": {
1902+ "version": "2.0.5",
1903+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
1904+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
1905+ "dev": true,
1906+ "dependencies": {
1907+ "readable-stream": "~2.3.6",
1908+ "xtend": "~4.0.1"
1909+ }
1910+ },
1911+ "node_modules/toidentifier": {
1912+ "version": "1.0.0",
1913+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1914+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
1915+ "engines": {
1916+ "node": ">=0.6"
1917+ }
1918+ },
1919+ "node_modules/tough-cookie": {
1920+ "version": "2.5.0",
1921+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1922+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
1923+ "dev": true,
1924+ "dependencies": {
1925+ "psl": "^1.1.28",
1926+ "punycode": "^2.1.1"
1927+ },
1928+ "engines": {
1929+ "node": ">=0.8"
1930+ }
1931+ },
1932+ "node_modules/tunnel-agent": {
1933+ "version": "0.6.0",
1934+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1935+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1936+ "dev": true,
1937+ "dependencies": {
1938+ "safe-buffer": "^5.0.1"
1939+ },
1940+ "engines": {
1941+ "node": "*"
1942+ }
1943+ },
1944+ "node_modules/tweetnacl": {
1945+ "version": "0.14.5",
1946+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1947+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
1948+ "dev": true
1949+ },
1950+ "node_modules/type-is": {
1951+ "version": "1.6.18",
1952+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1953+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1954+ "dependencies": {
1955+ "media-typer": "0.3.0",
1956+ "mime-types": "~2.1.24"
1957+ },
1958+ "engines": {
1959+ "node": ">= 0.6"
1960+ }
1961+ },
1962+ "node_modules/typedarray": {
1963+ "version": "0.0.6",
1964+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
1965+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
1966+ "dev": true
1967+ },
1968+ "node_modules/unique-filename": {
1969+ "version": "1.1.1",
1970+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
1971+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
1972+ "dev": true,
1973+ "dependencies": {
1974+ "unique-slug": "^2.0.0"
1975+ }
1976+ },
1977+ "node_modules/unique-slug": {
1978+ "version": "2.0.2",
1979+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
1980+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
1981+ "dev": true,
1982+ "dependencies": {
1983+ "imurmurhash": "^0.1.4"
1984+ }
1985+ },
1986+ "node_modules/universalify": {
1987+ "version": "2.0.0",
1988+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
1989+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
1990+ "engines": {
1991+ "node": ">= 10.0.0"
1992+ }
1993+ },
1994+ "node_modules/unpipe": {
1995+ "version": "1.0.0",
1996+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1997+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
1998+ "engines": {
1999+ "node": ">= 0.8"
2000+ }
2001+ },
2002+ "node_modules/uri-js": {
2003+ "version": "4.4.1",
2004+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2005+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2006+ "dev": true,
2007+ "dependencies": {
2008+ "punycode": "^2.1.0"
2009+ }
2010+ },
2011+ "node_modules/util-deprecate": {
2012+ "version": "1.0.2",
2013+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2014+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2015+ "dev": true
2016+ },
2017+ "node_modules/utils-merge": {
2018+ "version": "1.0.1",
2019+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
2020+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
2021+ "engines": {
2022+ "node": ">= 0.4.0"
2023+ }
2024+ },
2025+ "node_modules/uuid": {
2026+ "version": "7.0.3",
2027+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
2028+ "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
2029+ "bin": {
2030+ "uuid": "dist/bin/uuid"
2031+ }
2032+ },
2033+ "node_modules/vary": {
2034+ "version": "1.1.2",
2035+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2036+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
2037+ "engines": {
2038+ "node": ">= 0.8"
2039+ }
2040+ },
2041+ "node_modules/verror": {
2042+ "version": "1.10.0",
2043+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
2044+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
2045+ "dev": true,
2046+ "engines": [
2047+ "node >=0.6.0"
2048+ ],
2049+ "dependencies": {
2050+ "assert-plus": "^1.0.0",
2051+ "core-util-is": "1.0.2",
2052+ "extsprintf": "^1.2.0"
2053+ }
2054+ },
2055+ "node_modules/which": {
2056+ "version": "1.3.1",
2057+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2058+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2059+ "dev": true,
2060+ "dependencies": {
2061+ "isexe": "^2.0.0"
2062+ },
2063+ "bin": {
2064+ "which": "bin/which"
2065+ }
2066+ },
2067+ "node_modules/wrap-ansi": {
2068+ "version": "5.1.0",
2069+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
2070+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
2071+ "dev": true,
2072+ "dependencies": {
2073+ "ansi-styles": "^3.2.0",
2074+ "string-width": "^3.0.0",
2075+ "strip-ansi": "^5.0.0"
2076+ },
2077+ "engines": {
2078+ "node": ">=6"
2079+ }
2080+ },
2081+ "node_modules/wrappy": {
2082+ "version": "1.0.2",
2083+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2084+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2085+ "dev": true
2086+ },
2087+ "node_modules/xtend": {
2088+ "version": "4.0.2",
2089+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
2090+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
2091+ "dev": true,
2092+ "engines": {
2093+ "node": ">=0.4"
2094+ }
2095+ },
2096+ "node_modules/y18n": {
2097+ "version": "4.0.1",
2098+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
2099+ "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
2100+ "dev": true
2101+ },
2102+ "node_modules/yallist": {
2103+ "version": "3.1.1",
2104+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
2105+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
2106+ "dev": true
2107+ },
2108+ "node_modules/zen-observable": {
2109+ "version": "0.8.15",
2110+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
2111+ "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==",
2112+ "dev": true
2113+ }
2114+ },
2115+ "dependencies": {
2116+ "accepts": {
2117+ "version": "1.3.7",
2118+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
2119+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
2120+ "requires": {
2121+ "mime-types": "~2.1.24",
2122+ "negotiator": "0.6.2"
2123+ }
2124+ },
2125+ "ajv": {
2126+ "version": "6.12.6",
2127+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
2128+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
2129+ "dev": true,
2130+ "requires": {
2131+ "fast-deep-equal": "^3.1.1",
2132+ "fast-json-stable-stringify": "^2.0.0",
2133+ "json-schema-traverse": "^0.4.1",
2134+ "uri-js": "^4.2.2"
2135+ }
2136+ },
2137+ "ansi-escapes": {
2138+ "version": "3.2.0",
2139+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
2140+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
2141+ "dev": true
2142+ },
2143+ "ansi-regex": {
2144+ "version": "4.1.0",
2145+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
2146+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
2147+ "dev": true
2148+ },
2149+ "ansi-styles": {
2150+ "version": "3.2.1",
2151+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2152+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2153+ "dev": true,
2154+ "requires": {
2155+ "color-convert": "^1.9.0"
2156+ }
2157+ },
2158+ "aproba": {
2159+ "version": "1.2.0",
2160+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
2161+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
2162+ "dev": true
2163+ },
2164+ "arch": {
2165+ "version": "2.2.0",
2166+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
2167+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
2168+ "dev": true
2169+ },
2170+ "array-flatten": {
2171+ "version": "1.1.1",
2172+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
2173+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
2174+ },
2175+ "asn1": {
2176+ "version": "0.2.4",
2177+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
2178+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
2179+ "dev": true,
2180+ "requires": {
2181+ "safer-buffer": "~2.1.0"
2182+ }
2183+ },
2184+ "assert-plus": {
2185+ "version": "1.0.0",
2186+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
2187+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
2188+ "dev": true
2189+ },
2190+ "asynckit": {
2191+ "version": "0.4.0",
2192+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
2193+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
2194+ "dev": true
2195+ },
2196+ "at-least-node": {
2197+ "version": "1.0.0",
2198+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
2199+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
2200+ },
2201+ "aws-sign2": {
2202+ "version": "0.7.0",
2203+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
2204+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
2205+ "dev": true
2206+ },
2207+ "aws4": {
2208+ "version": "1.11.0",
2209+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
2210+ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
2211+ "dev": true
2212+ },
2213+ "balanced-match": {
2214+ "version": "1.0.0",
2215+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
2216+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
2217+ "dev": true
2218+ },
2219+ "bcrypt-pbkdf": {
2220+ "version": "1.0.2",
2221+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
2222+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
2223+ "dev": true,
2224+ "requires": {
2225+ "tweetnacl": "^0.14.3"
2226+ }
2227+ },
2228+ "bluebird": {
2229+ "version": "3.7.2",
2230+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
2231+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
2232+ "dev": true
2233+ },
2234+ "body-parser": {
2235+ "version": "1.19.0",
2236+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
2237+ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
2238+ "requires": {
2239+ "bytes": "3.1.0",
2240+ "content-type": "~1.0.4",
2241+ "debug": "2.6.9",
2242+ "depd": "~1.1.2",
2243+ "http-errors": "1.7.2",
2244+ "iconv-lite": "0.4.24",
2245+ "on-finished": "~2.3.0",
2246+ "qs": "6.7.0",
2247+ "raw-body": "2.4.0",
2248+ "type-is": "~1.6.17"
2249+ }
2250+ },
2251+ "brace-expansion": {
2252+ "version": "1.1.11",
2253+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
2254+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
2255+ "dev": true,
2256+ "requires": {
2257+ "balanced-match": "^1.0.0",
2258+ "concat-map": "0.0.1"
2259+ }
2260+ },
2261+ "buffer-from": {
2262+ "version": "1.1.1",
2263+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
2264+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
2265+ "dev": true
2266+ },
2267+ "byline": {
2268+ "version": "5.0.0",
2269+ "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
2270+ "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=",
2271+ "dev": true
2272+ },
2273+ "bytes": {
2274+ "version": "3.1.0",
2275+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
2276+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
2277+ },
2278+ "cacache": {
2279+ "version": "11.3.3",
2280+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz",
2281+ "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==",
2282+ "dev": true,
2283+ "requires": {
2284+ "bluebird": "^3.5.5",
2285+ "chownr": "^1.1.1",
2286+ "figgy-pudding": "^3.5.1",
2287+ "glob": "^7.1.4",
2288+ "graceful-fs": "^4.1.15",
2289+ "lru-cache": "^5.1.1",
2290+ "mississippi": "^3.0.0",
2291+ "mkdirp": "^0.5.1",
2292+ "move-concurrently": "^1.0.1",
2293+ "promise-inflight": "^1.0.1",
2294+ "rimraf": "^2.6.3",
2295+ "ssri": "^6.0.1",
2296+ "unique-filename": "^1.1.1",
2297+ "y18n": "^4.0.0"
2298+ }
2299+ },
2300+ "caseless": {
2301+ "version": "0.12.0",
2302+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
2303+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
2304+ "dev": true
2305+ },
2306+ "chalk": {
2307+ "version": "2.4.2",
2308+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2309+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
2310+ "dev": true,
2311+ "requires": {
2312+ "ansi-styles": "^3.2.1",
2313+ "escape-string-regexp": "^1.0.5",
2314+ "supports-color": "^5.3.0"
2315+ }
2316+ },
2317+ "chownr": {
2318+ "version": "1.1.4",
2319+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
2320+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
2321+ "dev": true
2322+ },
2323+ "cli-cursor": {
2324+ "version": "2.1.0",
2325+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
2326+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
2327+ "dev": true,
2328+ "requires": {
2329+ "restore-cursor": "^2.0.0"
2330+ }
2331+ },
2332+ "color-convert": {
2333+ "version": "1.9.3",
2334+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2335+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
2336+ "dev": true,
2337+ "requires": {
2338+ "color-name": "1.1.3"
2339+ }
2340+ },
2341+ "color-name": {
2342+ "version": "1.1.3",
2343+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
2344+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
2345+ "dev": true
2346+ },
2347+ "combined-stream": {
2348+ "version": "1.0.8",
2349+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
2350+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
2351+ "dev": true,
2352+ "requires": {
2353+ "delayed-stream": "~1.0.0"
2354+ }
2355+ },
2356+ "comment-json": {
2357+ "version": "2.4.2",
2358+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-2.4.2.tgz",
2359+ "integrity": "sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA==",
2360+ "requires": {
2361+ "core-util-is": "^1.0.2",
2362+ "esprima": "^4.0.1",
2363+ "has-own-prop": "^2.0.0",
2364+ "repeat-string": "^1.6.1"
2365+ }
2366+ },
2367+ "concat-map": {
2368+ "version": "0.0.1",
2369+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
2370+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
2371+ "dev": true
2372+ },
2373+ "concat-stream": {
2374+ "version": "1.6.2",
2375+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
2376+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
2377+ "dev": true,
2378+ "requires": {
2379+ "buffer-from": "^1.0.0",
2380+ "inherits": "^2.0.3",
2381+ "readable-stream": "^2.2.2",
2382+ "typedarray": "^0.0.6"
2383+ }
2384+ },
2385+ "content-disposition": {
2386+ "version": "0.5.3",
2387+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
2388+ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
2389+ "requires": {
2390+ "safe-buffer": "5.1.2"
2391+ }
2392+ },
2393+ "content-type": {
2394+ "version": "1.0.4",
2395+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
2396+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
2397+ },
2398+ "cookie": {
2399+ "version": "0.4.0",
2400+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
2401+ "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
2402+ },
2403+ "cookie-signature": {
2404+ "version": "1.0.6",
2405+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
2406+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
2407+ },
2408+ "copy-concurrently": {
2409+ "version": "1.0.5",
2410+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
2411+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
2412+ "dev": true,
2413+ "requires": {
2414+ "aproba": "^1.1.1",
2415+ "fs-write-stream-atomic": "^1.0.8",
2416+ "iferr": "^0.1.5",
2417+ "mkdirp": "^0.5.1",
2418+ "rimraf": "^2.5.4",
2419+ "run-queue": "^1.0.0"
2420+ }
2421+ },
2422+ "core-util-is": {
2423+ "version": "1.0.2",
2424+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
2425+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
2426+ },
2427+ "cross-spawn": {
2428+ "version": "7.0.3",
2429+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
2430+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
2431+ "dev": true,
2432+ "requires": {
2433+ "path-key": "^3.1.0",
2434+ "shebang-command": "^2.0.0",
2435+ "which": "^2.0.1"
2436+ },
2437+ "dependencies": {
2438+ "which": {
2439+ "version": "2.0.2",
2440+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2441+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2442+ "dev": true,
2443+ "requires": {
2444+ "isexe": "^2.0.0"
2445+ }
2446+ }
2447+ }
2448+ },
2449+ "cyclist": {
2450+ "version": "1.0.1",
2451+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
2452+ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
2453+ "dev": true
2454+ },
2455+ "dashdash": {
2456+ "version": "1.14.1",
2457+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
2458+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
2459+ "dev": true,
2460+ "requires": {
2461+ "assert-plus": "^1.0.0"
2462+ }
2463+ },
2464+ "debug": {
2465+ "version": "2.6.9",
2466+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
2467+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
2468+ "requires": {
2469+ "ms": "2.0.0"
2470+ }
2471+ },
2472+ "delayed-stream": {
2473+ "version": "1.0.0",
2474+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
2475+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
2476+ "dev": true
2477+ },
2478+ "depd": {
2479+ "version": "1.1.2",
2480+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
2481+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
2482+ },
2483+ "destroy": {
2484+ "version": "1.0.4",
2485+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
2486+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
2487+ },
2488+ "duplexify": {
2489+ "version": "3.7.1",
2490+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
2491+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
2492+ "dev": true,
2493+ "requires": {
2494+ "end-of-stream": "^1.0.0",
2495+ "inherits": "^2.0.1",
2496+ "readable-stream": "^2.0.0",
2497+ "stream-shift": "^1.0.0"
2498+ }
2499+ },
2500+ "ecc-jsbn": {
2501+ "version": "0.1.2",
2502+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
2503+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
2504+ "dev": true,
2505+ "requires": {
2506+ "jsbn": "~0.1.0",
2507+ "safer-buffer": "^2.1.0"
2508+ }
2509+ },
2510+ "ee-first": {
2511+ "version": "1.1.1",
2512+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
2513+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
2514+ },
2515+ "emoji-regex": {
2516+ "version": "7.0.3",
2517+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
2518+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
2519+ "dev": true
2520+ },
2521+ "encodeurl": {
2522+ "version": "1.0.2",
2523+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
2524+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
2525+ },
2526+ "end-of-stream": {
2527+ "version": "1.4.4",
2528+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
2529+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
2530+ "dev": true,
2531+ "requires": {
2532+ "once": "^1.4.0"
2533+ }
2534+ },
2535+ "env-paths": {
2536+ "version": "2.2.1",
2537+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
2538+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
2539+ "dev": true
2540+ },
2541+ "escape-html": {
2542+ "version": "1.0.3",
2543+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
2544+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
2545+ },
2546+ "escape-string-regexp": {
2547+ "version": "1.0.5",
2548+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2549+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
2550+ "dev": true
2551+ },
2552+ "esprima": {
2553+ "version": "4.0.1",
2554+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
2555+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
2556+ },
2557+ "etag": {
2558+ "version": "1.8.1",
2559+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
2560+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
2561+ },
2562+ "execa": {
2563+ "version": "2.1.0",
2564+ "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
2565+ "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
2566+ "dev": true,
2567+ "requires": {
2568+ "cross-spawn": "^7.0.0",
2569+ "get-stream": "^5.0.0",
2570+ "is-stream": "^2.0.0",
2571+ "merge-stream": "^2.0.0",
2572+ "npm-run-path": "^3.0.0",
2573+ "onetime": "^5.1.0",
2574+ "p-finally": "^2.0.0",
2575+ "signal-exit": "^3.0.2",
2576+ "strip-final-newline": "^2.0.0"
2577+ }
2578+ },
2579+ "express": {
2580+ "version": "4.17.1",
2581+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
2582+ "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
2583+ "requires": {
2584+ "accepts": "~1.3.7",
2585+ "array-flatten": "1.1.1",
2586+ "body-parser": "1.19.0",
2587+ "content-disposition": "0.5.3",
2588+ "content-type": "~1.0.4",
2589+ "cookie": "0.4.0",
2590+ "cookie-signature": "1.0.6",
2591+ "debug": "2.6.9",
2592+ "depd": "~1.1.2",
2593+ "encodeurl": "~1.0.2",
2594+ "escape-html": "~1.0.3",
2595+ "etag": "~1.8.1",
2596+ "finalhandler": "~1.1.2",
2597+ "fresh": "0.5.2",
2598+ "merge-descriptors": "1.0.1",
2599+ "methods": "~1.1.2",
2600+ "on-finished": "~2.3.0",
2601+ "parseurl": "~1.3.3",
2602+ "path-to-regexp": "0.1.7",
2603+ "proxy-addr": "~2.0.5",
2604+ "qs": "6.7.0",
2605+ "range-parser": "~1.2.1",
2606+ "safe-buffer": "5.1.2",
2607+ "send": "0.17.1",
2608+ "serve-static": "1.14.1",
2609+ "setprototypeof": "1.1.1",
2610+ "statuses": "~1.5.0",
2611+ "type-is": "~1.6.18",
2612+ "utils-merge": "1.0.1",
2613+ "vary": "~1.1.2"
2614+ }
2615+ },
2616+ "extend": {
2617+ "version": "3.0.2",
2618+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
2619+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
2620+ "dev": true
2621+ },
2622+ "extsprintf": {
2623+ "version": "1.3.0",
2624+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
2625+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
2626+ "dev": true
2627+ },
2628+ "fast-deep-equal": {
2629+ "version": "3.1.3",
2630+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
2631+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
2632+ "dev": true
2633+ },
2634+ "fast-json-stable-stringify": {
2635+ "version": "2.1.0",
2636+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
2637+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
2638+ "dev": true
2639+ },
2640+ "figgy-pudding": {
2641+ "version": "3.5.2",
2642+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
2643+ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
2644+ "dev": true
2645+ },
2646+ "filesize": {
2647+ "version": "4.2.1",
2648+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz",
2649+ "integrity": "sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA==",
2650+ "dev": true
2651+ },
2652+ "finalhandler": {
2653+ "version": "1.1.2",
2654+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
2655+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
2656+ "requires": {
2657+ "debug": "2.6.9",
2658+ "encodeurl": "~1.0.2",
2659+ "escape-html": "~1.0.3",
2660+ "on-finished": "~2.3.0",
2661+ "parseurl": "~1.3.3",
2662+ "statuses": "~1.5.0",
2663+ "unpipe": "~1.0.0"
2664+ }
2665+ },
2666+ "flush-write-stream": {
2667+ "version": "1.1.1",
2668+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
2669+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
2670+ "dev": true,
2671+ "requires": {
2672+ "inherits": "^2.0.3",
2673+ "readable-stream": "^2.3.6"
2674+ }
2675+ },
2676+ "forever-agent": {
2677+ "version": "0.6.1",
2678+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
2679+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
2680+ "dev": true
2681+ },
2682+ "form-data": {
2683+ "version": "2.3.3",
2684+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
2685+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
2686+ "dev": true,
2687+ "requires": {
2688+ "asynckit": "^0.4.0",
2689+ "combined-stream": "^1.0.6",
2690+ "mime-types": "^2.1.12"
2691+ }
2692+ },
2693+ "forwarded": {
2694+ "version": "0.1.2",
2695+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
2696+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
2697+ },
2698+ "fresh": {
2699+ "version": "0.5.2",
2700+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
2701+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
2702+ },
2703+ "from2": {
2704+ "version": "2.3.0",
2705+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
2706+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
2707+ "dev": true,
2708+ "requires": {
2709+ "inherits": "^2.0.1",
2710+ "readable-stream": "^2.0.0"
2711+ }
2712+ },
2713+ "fs-extra": {
2714+ "version": "9.1.0",
2715+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
2716+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
2717+ "requires": {
2718+ "at-least-node": "^1.0.0",
2719+ "graceful-fs": "^4.2.0",
2720+ "jsonfile": "^6.0.1",
2721+ "universalify": "^2.0.0"
2722+ }
2723+ },
2724+ "fs-minipass": {
2725+ "version": "1.2.7",
2726+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
2727+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
2728+ "dev": true,
2729+ "requires": {
2730+ "minipass": "^2.6.0"
2731+ }
2732+ },
2733+ "fs-write-stream-atomic": {
2734+ "version": "1.0.10",
2735+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
2736+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
2737+ "dev": true,
2738+ "requires": {
2739+ "graceful-fs": "^4.1.2",
2740+ "iferr": "^0.1.5",
2741+ "imurmurhash": "^0.1.4",
2742+ "readable-stream": "1 || 2"
2743+ }
2744+ },
2745+ "fs.realpath": {
2746+ "version": "1.0.0",
2747+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2748+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
2749+ "dev": true
2750+ },
2751+ "get-stream": {
2752+ "version": "5.2.0",
2753+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
2754+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
2755+ "dev": true,
2756+ "requires": {
2757+ "pump": "^3.0.0"
2758+ }
2759+ },
2760+ "getpass": {
2761+ "version": "0.1.7",
2762+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
2763+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
2764+ "dev": true,
2765+ "requires": {
2766+ "assert-plus": "^1.0.0"
2767+ }
2768+ },
2769+ "glob": {
2770+ "version": "7.1.6",
2771+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
2772+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
2773+ "dev": true,
2774+ "requires": {
2775+ "fs.realpath": "^1.0.0",
2776+ "inflight": "^1.0.4",
2777+ "inherits": "2",
2778+ "minimatch": "^3.0.4",
2779+ "once": "^1.3.0",
2780+ "path-is-absolute": "^1.0.0"
2781+ }
2782+ },
2783+ "graceful-fs": {
2784+ "version": "4.2.6",
2785+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
2786+ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
2787+ },
2788+ "har-schema": {
2789+ "version": "2.0.0",
2790+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
2791+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
2792+ "dev": true
2793+ },
2794+ "har-validator": {
2795+ "version": "5.1.5",
2796+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
2797+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
2798+ "dev": true,
2799+ "requires": {
2800+ "ajv": "^6.12.3",
2801+ "har-schema": "^2.0.0"
2802+ }
2803+ },
2804+ "has-flag": {
2805+ "version": "3.0.0",
2806+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2807+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
2808+ "dev": true
2809+ },
2810+ "has-own-prop": {
2811+ "version": "2.0.0",
2812+ "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
2813+ "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ=="
2814+ },
2815+ "http-errors": {
2816+ "version": "1.7.2",
2817+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
2818+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
2819+ "requires": {
2820+ "depd": "~1.1.2",
2821+ "inherits": "2.0.3",
2822+ "setprototypeof": "1.1.1",
2823+ "statuses": ">= 1.5.0 < 2",
2824+ "toidentifier": "1.0.0"
2825+ }
2826+ },
2827+ "http-signature": {
2828+ "version": "1.2.0",
2829+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
2830+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
2831+ "dev": true,
2832+ "requires": {
2833+ "assert-plus": "^1.0.0",
2834+ "jsprim": "^1.2.2",
2835+ "sshpk": "^1.7.0"
2836+ }
2837+ },
2838+ "iconv-lite": {
2839+ "version": "0.4.24",
2840+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
2841+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
2842+ "requires": {
2843+ "safer-buffer": ">= 2.1.2 < 3"
2844+ }
2845+ },
2846+ "iferr": {
2847+ "version": "0.1.5",
2848+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
2849+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
2850+ "dev": true
2851+ },
2852+ "imurmurhash": {
2853+ "version": "0.1.4",
2854+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2855+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
2856+ "dev": true
2857+ },
2858+ "inflight": {
2859+ "version": "1.0.6",
2860+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2861+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
2862+ "dev": true,
2863+ "requires": {
2864+ "once": "^1.3.0",
2865+ "wrappy": "1"
2866+ }
2867+ },
2868+ "inherits": {
2869+ "version": "2.0.3",
2870+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
2871+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
2872+ },
2873+ "ipaddr.js": {
2874+ "version": "1.9.1",
2875+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
2876+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
2877+ },
2878+ "is-fullwidth-code-point": {
2879+ "version": "2.0.0",
2880+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2881+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2882+ "dev": true
2883+ },
2884+ "is-plain-obj": {
2885+ "version": "2.1.0",
2886+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
2887+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
2888+ "dev": true
2889+ },
2890+ "is-stream": {
2891+ "version": "2.0.0",
2892+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
2893+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
2894+ "dev": true
2895+ },
2896+ "is-typedarray": {
2897+ "version": "1.0.0",
2898+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
2899+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
2900+ "dev": true
2901+ },
2902+ "isarray": {
2903+ "version": "1.0.0",
2904+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2905+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
2906+ "dev": true
2907+ },
2908+ "isexe": {
2909+ "version": "2.0.0",
2910+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2911+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2912+ "dev": true
2913+ },
2914+ "isstream": {
2915+ "version": "0.1.2",
2916+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
2917+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
2918+ "dev": true
2919+ },
2920+ "jsbn": {
2921+ "version": "0.1.1",
2922+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
2923+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
2924+ "dev": true
2925+ },
2926+ "json-parser": {
2927+ "version": "3.1.2",
2928+ "resolved": "https://registry.npmjs.org/json-parser/-/json-parser-3.1.2.tgz",
2929+ "integrity": "sha512-FCy1zIx3KUtOcNlFw9/ZGfDFBAGAwE6qYeaYwXCYUXhMO4TzizoQaQN1/LpZn088O7cz8eLVCjd/9aeW9HN32w==",
2930+ "requires": {
2931+ "comment-json": "^2.1.0"
2932+ }
2933+ },
2934+ "json-schema": {
2935+ "version": "0.2.3",
2936+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
2937+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
2938+ "dev": true
2939+ },
2940+ "json-schema-traverse": {
2941+ "version": "0.4.1",
2942+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2943+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2944+ "dev": true
2945+ },
2946+ "json-stringify-safe": {
2947+ "version": "5.0.1",
2948+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
2949+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
2950+ "dev": true
2951+ },
2952+ "jsonfile": {
2953+ "version": "6.1.0",
2954+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
2955+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
2956+ "requires": {
2957+ "graceful-fs": "^4.1.6",
2958+ "universalify": "^2.0.0"
2959+ }
2960+ },
2961+ "jsprim": {
2962+ "version": "1.4.1",
2963+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
2964+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
2965+ "dev": true,
2966+ "requires": {
2967+ "assert-plus": "1.0.0",
2968+ "extsprintf": "1.3.0",
2969+ "json-schema": "0.2.3",
2970+ "verror": "1.10.0"
2971+ }
2972+ },
2973+ "log-symbols": {
2974+ "version": "3.0.0",
2975+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
2976+ "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
2977+ "dev": true,
2978+ "requires": {
2979+ "chalk": "^2.4.2"
2980+ }
2981+ },
2982+ "log-update": {
2983+ "version": "3.4.0",
2984+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz",
2985+ "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==",
2986+ "dev": true,
2987+ "requires": {
2988+ "ansi-escapes": "^3.2.0",
2989+ "cli-cursor": "^2.1.0",
2990+ "wrap-ansi": "^5.0.0"
2991+ }
2992+ },
2993+ "lru-cache": {
2994+ "version": "5.1.1",
2995+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2996+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2997+ "dev": true,
2998+ "requires": {
2999+ "yallist": "^3.0.2"
3000+ }
3001+ },
3002+ "media-typer": {
3003+ "version": "0.3.0",
3004+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
3005+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
3006+ },
3007+ "merge-descriptors": {
3008+ "version": "1.0.1",
3009+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
3010+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
3011+ },
3012+ "merge-stream": {
3013+ "version": "2.0.0",
3014+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
3015+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
3016+ "dev": true
3017+ },
3018+ "methods": {
3019+ "version": "1.1.2",
3020+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
3021+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
3022+ },
3023+ "mime": {
3024+ "version": "1.6.0",
3025+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
3026+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
3027+ },
3028+ "mime-db": {
3029+ "version": "1.46.0",
3030+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
3031+ "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ=="
3032+ },
3033+ "mime-types": {
3034+ "version": "2.1.29",
3035+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
3036+ "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
3037+ "requires": {
3038+ "mime-db": "1.46.0"
3039+ }
3040+ },
3041+ "mimic-fn": {
3042+ "version": "2.1.0",
3043+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
3044+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
3045+ "dev": true
3046+ },
3047+ "minimatch": {
3048+ "version": "3.0.4",
3049+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
3050+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
3051+ "dev": true,
3052+ "requires": {
3053+ "brace-expansion": "^1.1.7"
3054+ }
3055+ },
3056+ "minimist": {
3057+ "version": "1.2.5",
3058+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
3059+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
3060+ },
3061+ "minipass": {
3062+ "version": "2.9.0",
3063+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
3064+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
3065+ "dev": true,
3066+ "requires": {
3067+ "safe-buffer": "^5.1.2",
3068+ "yallist": "^3.0.0"
3069+ }
3070+ },
3071+ "minizlib": {
3072+ "version": "1.3.3",
3073+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
3074+ "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
3075+ "dev": true,
3076+ "requires": {
3077+ "minipass": "^2.9.0"
3078+ }
3079+ },
3080+ "mississippi": {
3081+ "version": "3.0.0",
3082+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
3083+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
3084+ "dev": true,
3085+ "requires": {
3086+ "concat-stream": "^1.5.0",
3087+ "duplexify": "^3.4.2",
3088+ "end-of-stream": "^1.1.0",
3089+ "flush-write-stream": "^1.0.0",
3090+ "from2": "^2.1.0",
3091+ "parallel-transform": "^1.1.0",
3092+ "pump": "^3.0.0",
3093+ "pumpify": "^1.3.3",
3094+ "stream-each": "^1.1.0",
3095+ "through2": "^2.0.0"
3096+ }
3097+ },
3098+ "mkdirp": {
3099+ "version": "0.5.5",
3100+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
3101+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
3102+ "dev": true,
3103+ "requires": {
3104+ "minimist": "^1.2.5"
3105+ }
3106+ },
3107+ "move-concurrently": {
3108+ "version": "1.0.1",
3109+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
3110+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
3111+ "dev": true,
3112+ "requires": {
3113+ "aproba": "^1.1.1",
3114+ "copy-concurrently": "^1.0.0",
3115+ "fs-write-stream-atomic": "^1.0.8",
3116+ "mkdirp": "^0.5.1",
3117+ "rimraf": "^2.5.4",
3118+ "run-queue": "^1.0.3"
3119+ }
3120+ },
3121+ "ms": {
3122+ "version": "2.0.0",
3123+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
3124+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
3125+ },
3126+ "negotiator": {
3127+ "version": "0.6.2",
3128+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
3129+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
3130+ },
3131+ "npm-run-path": {
3132+ "version": "3.1.0",
3133+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
3134+ "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
3135+ "dev": true,
3136+ "requires": {
3137+ "path-key": "^3.0.0"
3138+ }
3139+ },
3140+ "oauth-sign": {
3141+ "version": "0.9.0",
3142+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
3143+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
3144+ "dev": true
3145+ },
3146+ "on-finished": {
3147+ "version": "2.3.0",
3148+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
3149+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
3150+ "requires": {
3151+ "ee-first": "1.1.1"
3152+ }
3153+ },
3154+ "once": {
3155+ "version": "1.4.0",
3156+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3157+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
3158+ "dev": true,
3159+ "requires": {
3160+ "wrappy": "1"
3161+ }
3162+ },
3163+ "onetime": {
3164+ "version": "5.1.2",
3165+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
3166+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
3167+ "dev": true,
3168+ "requires": {
3169+ "mimic-fn": "^2.1.0"
3170+ }
3171+ },
3172+ "p-finally": {
3173+ "version": "2.0.1",
3174+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
3175+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
3176+ "dev": true
3177+ },
3178+ "parallel-transform": {
3179+ "version": "1.2.0",
3180+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
3181+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
3182+ "dev": true,
3183+ "requires": {
3184+ "cyclist": "^1.0.1",
3185+ "inherits": "^2.0.3",
3186+ "readable-stream": "^2.1.5"
3187+ }
3188+ },
3189+ "parseurl": {
3190+ "version": "1.3.3",
3191+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
3192+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
3193+ },
3194+ "path-is-absolute": {
3195+ "version": "1.0.1",
3196+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3197+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3198+ "dev": true
3199+ },
3200+ "path-key": {
3201+ "version": "3.1.1",
3202+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
3203+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
3204+ "dev": true
3205+ },
3206+ "path-to-regexp": {
3207+ "version": "0.1.7",
3208+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
3209+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
3210+ },
3211+ "performance-now": {
3212+ "version": "2.1.0",
3213+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
3214+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
3215+ "dev": true
3216+ },
3217+ "process-nextick-args": {
3218+ "version": "2.0.1",
3219+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
3220+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
3221+ "dev": true
3222+ },
3223+ "promise-inflight": {
3224+ "version": "1.0.1",
3225+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
3226+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
3227+ "dev": true
3228+ },
3229+ "proxy-addr": {
3230+ "version": "2.0.6",
3231+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
3232+ "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
3233+ "requires": {
3234+ "forwarded": "~0.1.2",
3235+ "ipaddr.js": "1.9.1"
3236+ }
3237+ },
3238+ "psl": {
3239+ "version": "1.8.0",
3240+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
3241+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
3242+ "dev": true
3243+ },
3244+ "pump": {
3245+ "version": "3.0.0",
3246+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
3247+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
3248+ "dev": true,
3249+ "requires": {
3250+ "end-of-stream": "^1.1.0",
3251+ "once": "^1.3.1"
3252+ }
3253+ },
3254+ "pumpify": {
3255+ "version": "1.5.1",
3256+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
3257+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
3258+ "dev": true,
3259+ "requires": {
3260+ "duplexify": "^3.6.0",
3261+ "inherits": "^2.0.3",
3262+ "pump": "^2.0.0"
3263+ },
3264+ "dependencies": {
3265+ "pump": {
3266+ "version": "2.0.1",
3267+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
3268+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
3269+ "dev": true,
3270+ "requires": {
3271+ "end-of-stream": "^1.1.0",
3272+ "once": "^1.3.1"
3273+ }
3274+ }
3275+ }
3276+ },
3277+ "punycode": {
3278+ "version": "2.1.1",
3279+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3280+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
3281+ "dev": true
3282+ },
3283+ "purescript": {
3284+ "version": "0.14.0",
3285+ "resolved": "https://registry.npmjs.org/purescript/-/purescript-0.14.0.tgz",
3286+ "integrity": "sha512-iTA1k8mwxHqrJp/K296g6omVfve5RCjnB5D6Up93PVtZdP66mCIqlOYC4hrLBHg2hgkk27xePDt5NUXKvH4ApQ==",
3287+ "dev": true,
3288+ "requires": {
3289+ "purescript-installer": "^0.2.0"
3290+ }
3291+ },
3292+ "purescript-installer": {
3293+ "version": "0.2.5",
3294+ "resolved": "https://registry.npmjs.org/purescript-installer/-/purescript-installer-0.2.5.tgz",
3295+ "integrity": "sha512-fQAWWP5a7scuchXecjpU4r4KEgSPuS6bBnaP01k9f71qqD28HaJ2m4PXHFkhkR4oATAxTPIGCtmTwtVoiBOHog==",
3296+ "dev": true,
3297+ "requires": {
3298+ "arch": "^2.1.1",
3299+ "byline": "^5.0.0",
3300+ "cacache": "^11.3.2",
3301+ "chalk": "^2.4.2",
3302+ "env-paths": "^2.2.0",
3303+ "execa": "^2.0.3",
3304+ "filesize": "^4.1.2",
3305+ "is-plain-obj": "^2.0.0",
3306+ "log-symbols": "^3.0.0",
3307+ "log-update": "^3.2.0",
3308+ "minimist": "^1.2.0",
3309+ "mkdirp": "^0.5.1",
3310+ "ms": "^2.1.2",
3311+ "once": "^1.4.0",
3312+ "pump": "^3.0.0",
3313+ "request": "^2.88.0",
3314+ "rimraf": "^2.6.3",
3315+ "tar": "^4.4.6",
3316+ "which": "^1.3.1",
3317+ "zen-observable": "^0.8.14"
3318+ },
3319+ "dependencies": {
3320+ "ms": {
3321+ "version": "2.1.3",
3322+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
3323+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
3324+ "dev": true
3325+ }
3326+ }
3327+ },
3328+ "qs": {
3329+ "version": "6.7.0",
3330+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
3331+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
3332+ },
3333+ "range-parser": {
3334+ "version": "1.2.1",
3335+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
3336+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
3337+ },
3338+ "raw-body": {
3339+ "version": "2.4.0",
3340+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
3341+ "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
3342+ "requires": {
3343+ "bytes": "3.1.0",
3344+ "http-errors": "1.7.2",
3345+ "iconv-lite": "0.4.24",
3346+ "unpipe": "1.0.0"
3347+ }
3348+ },
3349+ "readable-stream": {
3350+ "version": "2.3.7",
3351+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
3352+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
3353+ "dev": true,
3354+ "requires": {
3355+ "core-util-is": "~1.0.0",
3356+ "inherits": "~2.0.3",
3357+ "isarray": "~1.0.0",
3358+ "process-nextick-args": "~2.0.0",
3359+ "safe-buffer": "~5.1.1",
3360+ "string_decoder": "~1.1.1",
3361+ "util-deprecate": "~1.0.1"
3362+ }
3363+ },
3364+ "repeat-string": {
3365+ "version": "1.6.1",
3366+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
3367+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
3368+ },
3369+ "request": {
3370+ "version": "2.88.2",
3371+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
3372+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
3373+ "dev": true,
3374+ "requires": {
3375+ "aws-sign2": "~0.7.0",
3376+ "aws4": "^1.8.0",
3377+ "caseless": "~0.12.0",
3378+ "combined-stream": "~1.0.6",
3379+ "extend": "~3.0.2",
3380+ "forever-agent": "~0.6.1",
3381+ "form-data": "~2.3.2",
3382+ "har-validator": "~5.1.3",
3383+ "http-signature": "~1.2.0",
3384+ "is-typedarray": "~1.0.0",
3385+ "isstream": "~0.1.2",
3386+ "json-stringify-safe": "~5.0.1",
3387+ "mime-types": "~2.1.19",
3388+ "oauth-sign": "~0.9.0",
3389+ "performance-now": "^2.1.0",
3390+ "qs": "~6.5.2",
3391+ "safe-buffer": "^5.1.2",
3392+ "tough-cookie": "~2.5.0",
3393+ "tunnel-agent": "^0.6.0",
3394+ "uuid": "^3.3.2"
3395+ },
3396+ "dependencies": {
3397+ "qs": {
3398+ "version": "6.5.2",
3399+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
3400+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
3401+ "dev": true
3402+ },
3403+ "uuid": {
3404+ "version": "3.4.0",
3405+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
3406+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
3407+ "dev": true
3408+ }
3409+ }
3410+ },
3411+ "restore-cursor": {
3412+ "version": "2.0.0",
3413+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
3414+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
3415+ "dev": true,
3416+ "requires": {
3417+ "onetime": "^2.0.0",
3418+ "signal-exit": "^3.0.2"
3419+ },
3420+ "dependencies": {
3421+ "mimic-fn": {
3422+ "version": "1.2.0",
3423+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
3424+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
3425+ "dev": true
3426+ },
3427+ "onetime": {
3428+ "version": "2.0.1",
3429+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
3430+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
3431+ "dev": true,
3432+ "requires": {
3433+ "mimic-fn": "^1.0.0"
3434+ }
3435+ }
3436+ }
3437+ },
3438+ "rimraf": {
3439+ "version": "2.7.1",
3440+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
3441+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
3442+ "dev": true,
3443+ "requires": {
3444+ "glob": "^7.1.3"
3445+ }
3446+ },
3447+ "run-queue": {
3448+ "version": "1.0.3",
3449+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
3450+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
3451+ "dev": true,
3452+ "requires": {
3453+ "aproba": "^1.1.1"
3454+ }
3455+ },
3456+ "safe-buffer": {
3457+ "version": "5.1.2",
3458+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3459+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
3460+ },
3461+ "safer-buffer": {
3462+ "version": "2.1.2",
3463+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
3464+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
3465+ },
3466+ "send": {
3467+ "version": "0.17.1",
3468+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
3469+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
3470+ "requires": {
3471+ "debug": "2.6.9",
3472+ "depd": "~1.1.2",
3473+ "destroy": "~1.0.4",
3474+ "encodeurl": "~1.0.2",
3475+ "escape-html": "~1.0.3",
3476+ "etag": "~1.8.1",
3477+ "fresh": "0.5.2",
3478+ "http-errors": "~1.7.2",
3479+ "mime": "1.6.0",
3480+ "ms": "2.1.1",
3481+ "on-finished": "~2.3.0",
3482+ "range-parser": "~1.2.1",
3483+ "statuses": "~1.5.0"
3484+ },
3485+ "dependencies": {
3486+ "ms": {
3487+ "version": "2.1.1",
3488+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
3489+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
3490+ }
3491+ }
3492+ },
3493+ "serve-static": {
3494+ "version": "1.14.1",
3495+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
3496+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
3497+ "requires": {
3498+ "encodeurl": "~1.0.2",
3499+ "escape-html": "~1.0.3",
3500+ "parseurl": "~1.3.3",
3501+ "send": "0.17.1"
3502+ }
3503+ },
3504+ "setprototypeof": {
3505+ "version": "1.1.1",
3506+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
3507+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
3508+ },
3509+ "shebang-command": {
3510+ "version": "2.0.0",
3511+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
3512+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
3513+ "dev": true,
3514+ "requires": {
3515+ "shebang-regex": "^3.0.0"
3516+ }
3517+ },
3518+ "shebang-regex": {
3519+ "version": "3.0.0",
3520+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
3521+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
3522+ "dev": true
3523+ },
3524+ "signal-exit": {
3525+ "version": "3.0.3",
3526+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
3527+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
3528+ "dev": true
3529+ },
3530+ "spago": {
3531+ "version": "0.19.1",
3532+ "resolved": "https://registry.npmjs.org/spago/-/spago-0.19.1.tgz",
3533+ "integrity": "sha512-OD/yopJZ9Ub+XsFtayDeLAWLT4kLdMxosJEyyp8W5OkyJVVSbCrvYacsO7iq3lSuHJmmNny/TEZdyb7uSyupng==",
3534+ "dev": true,
3535+ "requires": {
3536+ "request": "^2.88.0",
3537+ "tar": "^4.4.8"
3538+ }
3539+ },
3540+ "sshpk": {
3541+ "version": "1.16.1",
3542+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
3543+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
3544+ "dev": true,
3545+ "requires": {
3546+ "asn1": "~0.2.3",
3547+ "assert-plus": "^1.0.0",
3548+ "bcrypt-pbkdf": "^1.0.0",
3549+ "dashdash": "^1.12.0",
3550+ "ecc-jsbn": "~0.1.1",
3551+ "getpass": "^0.1.1",
3552+ "jsbn": "~0.1.0",
3553+ "safer-buffer": "^2.0.2",
3554+ "tweetnacl": "~0.14.0"
3555+ }
3556+ },
3557+ "ssri": {
3558+ "version": "6.0.1",
3559+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
3560+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
3561+ "dev": true,
3562+ "requires": {
3563+ "figgy-pudding": "^3.5.1"
3564+ }
3565+ },
3566+ "statuses": {
3567+ "version": "1.5.0",
3568+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
3569+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
3570+ },
3571+ "stream-each": {
3572+ "version": "1.2.3",
3573+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
3574+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
3575+ "dev": true,
3576+ "requires": {
3577+ "end-of-stream": "^1.1.0",
3578+ "stream-shift": "^1.0.0"
3579+ }
3580+ },
3581+ "stream-shift": {
3582+ "version": "1.0.1",
3583+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
3584+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
3585+ "dev": true
3586+ },
3587+ "string_decoder": {
3588+ "version": "1.1.1",
3589+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
3590+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
3591+ "dev": true,
3592+ "requires": {
3593+ "safe-buffer": "~5.1.0"
3594+ }
3595+ },
3596+ "string-width": {
3597+ "version": "3.1.0",
3598+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
3599+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
3600+ "dev": true,
3601+ "requires": {
3602+ "emoji-regex": "^7.0.1",
3603+ "is-fullwidth-code-point": "^2.0.0",
3604+ "strip-ansi": "^5.1.0"
3605+ }
3606+ },
3607+ "strip-ansi": {
3608+ "version": "5.2.0",
3609+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
3610+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
3611+ "dev": true,
3612+ "requires": {
3613+ "ansi-regex": "^4.1.0"
3614+ }
3615+ },
3616+ "strip-final-newline": {
3617+ "version": "2.0.0",
3618+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
3619+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
3620+ "dev": true
3621+ },
3622+ "supports-color": {
3623+ "version": "5.5.0",
3624+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
3625+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
3626+ "dev": true,
3627+ "requires": {
3628+ "has-flag": "^3.0.0"
3629+ }
3630+ },
3631+ "tar": {
3632+ "version": "4.4.13",
3633+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
3634+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
3635+ "dev": true,
3636+ "requires": {
3637+ "chownr": "^1.1.1",
3638+ "fs-minipass": "^1.2.5",
3639+ "minipass": "^2.8.6",
3640+ "minizlib": "^1.2.1",
3641+ "mkdirp": "^0.5.0",
3642+ "safe-buffer": "^5.1.2",
3643+ "yallist": "^3.0.3"
3644+ }
3645+ },
3646+ "through2": {
3647+ "version": "2.0.5",
3648+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
3649+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
3650+ "dev": true,
3651+ "requires": {
3652+ "readable-stream": "~2.3.6",
3653+ "xtend": "~4.0.1"
3654+ }
3655+ },
3656+ "toidentifier": {
3657+ "version": "1.0.0",
3658+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
3659+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
3660+ },
3661+ "tough-cookie": {
3662+ "version": "2.5.0",
3663+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
3664+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
3665+ "dev": true,
3666+ "requires": {
3667+ "psl": "^1.1.28",
3668+ "punycode": "^2.1.1"
3669+ }
3670+ },
3671+ "tunnel-agent": {
3672+ "version": "0.6.0",
3673+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
3674+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
3675+ "dev": true,
3676+ "requires": {
3677+ "safe-buffer": "^5.0.1"
3678+ }
3679+ },
3680+ "tweetnacl": {
3681+ "version": "0.14.5",
3682+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
3683+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
3684+ "dev": true
3685+ },
3686+ "type-is": {
3687+ "version": "1.6.18",
3688+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
3689+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
3690+ "requires": {
3691+ "media-typer": "0.3.0",
3692+ "mime-types": "~2.1.24"
3693+ }
3694+ },
3695+ "typedarray": {
3696+ "version": "0.0.6",
3697+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
3698+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
3699+ "dev": true
3700+ },
3701+ "unique-filename": {
3702+ "version": "1.1.1",
3703+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
3704+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
3705+ "dev": true,
3706+ "requires": {
3707+ "unique-slug": "^2.0.0"
3708+ }
3709+ },
3710+ "unique-slug": {
3711+ "version": "2.0.2",
3712+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
3713+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
3714+ "dev": true,
3715+ "requires": {
3716+ "imurmurhash": "^0.1.4"
3717+ }
3718+ },
3719+ "universalify": {
3720+ "version": "2.0.0",
3721+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
3722+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
3723+ },
3724+ "unpipe": {
3725+ "version": "1.0.0",
3726+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
3727+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
3728+ },
3729+ "uri-js": {
3730+ "version": "4.4.1",
3731+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
3732+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
3733+ "dev": true,
3734+ "requires": {
3735+ "punycode": "^2.1.0"
3736+ }
3737+ },
3738+ "util-deprecate": {
3739+ "version": "1.0.2",
3740+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3741+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
3742+ "dev": true
3743+ },
3744+ "utils-merge": {
3745+ "version": "1.0.1",
3746+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
3747+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
3748+ },
3749+ "uuid": {
3750+ "version": "7.0.3",
3751+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
3752+ "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg=="
3753+ },
3754+ "vary": {
3755+ "version": "1.1.2",
3756+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
3757+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
3758+ },
3759+ "verror": {
3760+ "version": "1.10.0",
3761+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
3762+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
3763+ "dev": true,
3764+ "requires": {
3765+ "assert-plus": "^1.0.0",
3766+ "core-util-is": "1.0.2",
3767+ "extsprintf": "^1.2.0"
3768+ }
3769+ },
3770+ "which": {
3771+ "version": "1.3.1",
3772+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
3773+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
3774+ "dev": true,
3775+ "requires": {
3776+ "isexe": "^2.0.0"
3777+ }
3778+ },
3779+ "wrap-ansi": {
3780+ "version": "5.1.0",
3781+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
3782+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
3783+ "dev": true,
3784+ "requires": {
3785+ "ansi-styles": "^3.2.0",
3786+ "string-width": "^3.0.0",
3787+ "strip-ansi": "^5.0.0"
3788+ }
3789+ },
3790+ "wrappy": {
3791+ "version": "1.0.2",
3792+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3793+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3794+ "dev": true
3795+ },
3796+ "xtend": {
3797+ "version": "4.0.2",
3798+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
3799+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
3800+ "dev": true
3801+ },
3802+ "y18n": {
3803+ "version": "4.0.1",
3804+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
3805+ "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
3806+ "dev": true
3807+ },
3808+ "yallist": {
3809+ "version": "3.1.1",
3810+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
3811+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
3812+ "dev": true
3813+ },
3814+ "zen-observable": {
3815+ "version": "0.8.15",
3816+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
3817+ "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==",
3818+ "dev": true
1363819 }
1373820 }
1383821}
server/package.json+10−4
@@ -7,15 +7,21 @@
77 "test": "test"
88 },
99 "scripts": {
10− "start": "spago run",
11− "test": "spago test"
10+ "start": "npx spago run",
11+ "test": "npx spago test"
1212 },
1313 "author": "mark.eibes@gmail.com",
1414 "license": "ISC",
1515 "dependencies": {
16− "big-integer": "^1.6.51",
16+ "body-parser": "^1.19.0",
17+ "express": "^4.17.1",
1718 "fs-extra": "^9.0.0",
19+ "json-parser": "^3.1.2",
1820 "minimist": "^1.2.2",
19− "uuid": "^8.3.2"
21+ "uuid": "^7.0.2"
22+ },
23+ "devDependencies": {
24+ "purescript": "^0.14.0",
25+ "spago": "^0.19.1"
2026 }
2127}
server/packages.dhall+155−34
@@ -117,43 +117,164 @@ let additions =
117117-------------------------------
118118-}
119119let upstream =
120− https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20220901/packages.dhall
121− sha256:f1531b29c21ac437ffe5666c1b6cc76f0a9c29d3c9d107ff047aa2567744994f
122−
123−in upstream
124− with foreign-generic =
125− { repo =
126− "https://github.com/working-group-purescript-es/purescript-foreign-generic.git"
127− , version = "v0.15.0-updates"
128− , dependencies =
129− [ "effect"
130− , "exceptions"
131− , "foreign"
132− , "foreign-object"
133− , "identity"
134− , "ordered-collections"
135− , "record"
136− ]
137− }
138− with express =
139− {dependencies =
140− [ "aff"
141− , "arrays"
120+ -- https://github.com/purescript/package-sets/releases/download/psc-0.13.6-20200309/packages.dhall sha256:9221987b4e7ea99ccd0efbe056f7bebc872cd92e0058efe5baa181d73359e7b3
121+ https://github.com/purescript/package-sets/releases/download/psc-0.14.0-20210317/packages.dhall sha256:e2e744972f9b60188dcf07f41418661b505c9ee2e9f91e57e67daefad3a5ae09
122+
123+let overrides =
124+ { react-basic-hooks =
125+ upstream.react-basic-hooks
126+ // { repo =
127+ "https://github.com/i-am-the-slime/purescript-react-basic-hooks.git"
128+ , version = "e04b106ab2dfda3f9a1407420c434a908ff72b90"
129+ }
130+ , css =
131+ upstream.css
132+ // { repo = "https://github.com/i-am-the-slime/purescript-css.git"
133+ , version = "8ea0bab17c268d9c62a09892d7ba231dcbe6308b"
134+ }
135+
136+ , node-net = upstream.node-net
137+ // { repo = "https://github.com/i-am-the-slime/purescript-node-net.git"
138+ , version = "b4efc12a6bc8df695f90e408290b3b82dcd8548b"
139+ }
140+ }
141+
142+let additions =
143+ { react-testing-library =
144+ { dependencies =
145+ [ "aff-promise"
146+ , "console"
147+ , "debug"
148+ , "effect"
149+ , "foreign"
150+ , "foreign-object"
151+ , "psci-support"
152+ , "react-basic-hooks"
153+ , "remotedata"
154+ , "run"
155+ , "simple-json"
156+ , "spec"
157+ , "spec-discovery"
158+ ]
159+ , repo =
160+ "https://github.com/i-am-the-slime/purescript-react-testing-library.git"
161+ , version = "13a63056506a3ce32572e326130be325931ba7c0"
162+ }
163+ , pseudo-random =
164+ { dependencies =
165+ [ "prelude", "console", "effect", "lcg", "arrays", "st" ]
166+ , repo = "https://github.com/opyapeus/purescript-pseudo-random.git"
167+ , version = "7715e8a2c096c480a093a5e0a6df1ece4df5ed2a"
168+ }
169+ , oneof =
170+ { dependencies =
171+ [ "assert"
172+ , "console"
142173 , "effect"
143− , "either"
144− , "exceptions"
145174 , "foreign"
146− , "foreign-generic"
147175 , "foreign-object"
148− , "functions"
176+ , "literal"
149177 , "maybe"
150− , "node-http"
151− , "prelude"
152− , "strings"
153− , "test-unit"
154− , "transformers"
178+ , "newtype"
179+ , "proxy"
180+ , "psci-support"
181+ , "tuples"
155182 , "unsafe-coerce"
156183 ]
157− , repo = "https://github.com/purescript-express/purescript-express.git"
158− , version = "86ec92f0adaa8b01ef49e01d27d1cb999b4cb4cb"
159− }
184+ , repo = "https://github.com/jvliwanag/purescript-oneof.git"
185+ , version = "0325fddf6ee8a181fac2128c9b542c2c01ddd361"
186+ }
187+ , literal =
188+ { dependencies =
189+ [ "assert"
190+ , "effect"
191+ , "console"
192+ , "integers"
193+ , "numbers"
194+ , "partial"
195+ , "psci-support"
196+ , "unsafe-coerce"
197+ , "typelevel-prelude"
198+ ]
199+ , repo = "https://github.com/jvliwanag/purescript-literal.git"
200+ , version = "7b2ae20f77c67b7e419a92fdd0dc7a09b447b18e"
201+ }
202+ , justifill =
203+ { dependencies = [ "record", "typelevel-prelude" ]
204+ , repo = "https://github.com/i-am-the-slime/purescript-justifill.git"
205+ , version = "2de06260ae8e37355678198180bbdd06c91457e3"
206+ }
207+ , matryoshka =
208+ { dependencies =
209+ [ "prelude", "fixed-points", "free", "transformers", "profunctor" ]
210+ , repo = "https://github.com/slamdata/purescript-matryoshka.git"
211+ , version = "caaca2d836d52159ba7963333996286a00428394"
212+ }
213+ , interpolate =
214+ { dependencies = [ "prelude" ]
215+ , repo = "https://github.com/jordanmartinez/purescript-interpolate.git"
216+ , version = "v2.0.1"
217+ }
218+ , yoga-components = ../components/spago.dhall as Location
219+ , foreign-generic = {
220+ dependencies =
221+ [ "effect"
222+ , "foreign"
223+ , "foreign-object"
224+ , "ordered-collections"
225+ , "exceptions"
226+ , "record"
227+ , "identity"
228+ ]
229+ , repo =
230+ "https://github.com/fsoikin/purescript-foreign-generic.git"
231+ , version =
232+ "c9ceaa48d4a03ee3db55f1abfb45f830cae329e7"
233+ }
234+ , uuid = {
235+ dependencies =
236+ [ "console"
237+ , "effect"
238+ , "psci-support"
239+ , "spec"
240+ , "foreign-generic"
241+ ]
242+ , repo =
243+ "https://github.com/spicydonuts/purescript-uuid.git"
244+ , version =
245+ "7c9b1a1261aadb4db4886b3123683ca29c2663a5"
246+ }
247+ , express = {
248+ dependencies =
249+ [ "aff"
250+ , "console"
251+ , "effect"
252+ , "foreign"
253+ , "foreign-generic"
254+ , "node-http"
255+ , "psci-support"
256+ , "test-unit"
257+ ]
258+ , repo =
259+ "https://github.com/i-am-the-slime/purescript-express.git"
260+ , version =
261+ "0.14"
262+ }
263+ , simple-json = {
264+ dependencies =
265+ [ "prelude"
266+ , "typelevel-prelude"
267+ , "record"
268+ , "variant"
269+ , "nullable"
270+ , "foreign-object"
271+ , "foreign"
272+ , "exceptions"
273+ , "arrays"
274+ ]
275+ , repo = "https://github.com/angelinatarapko/purescript-simple-json.git"
276+ , version = "patch-1"
277+ }
278+}
279+
280+in upstream // overrides // additions
server/spago.dhall+1−30
@@ -4,55 +4,26 @@ You can edit this file as you like.
44-}
55{ name = "my-project"
66, dependencies =
7− [ "aff"
8− , "aff-promise"
7+ [ "aff-promise"
98 , "argonaut"
109 , "argonaut-codecs"
11− , "argonaut-core"
12− , "arrays"
1310 , "avar"
14− , "bifunctors"
1511 , "console"
16− , "control"
17− , "datetime"
1812 , "debug"
1913 , "effect"
20− , "either"
21− , "exceptions"
2214 , "express"
23− , "foldable-traversable"
24− , "foreign"
25− , "foreign-object"
2615 , "functions"
27− , "httpurple"
28− , "httpurple-yoga-json"
29− , "integers"
30− , "js-date"
3116 , "maybe"
32− , "newtype"
33− , "node-buffer"
3417 , "node-child-process"
3518 , "node-fs"
3619 , "node-fs-aff"
37− , "node-http"
3820 , "node-net"
3921 , "node-process"
40− , "ordered-collections"
41− , "parallel"
42− , "posix-types"
43− , "prelude"
4422 , "psci-support"
45− , "refs"
46− , "routing-duplex"
4723 , "spec"
4824 , "spec-discovery"
49− , "strings"
5025 , "stringutils"
51− , "transformers"
52− , "tuples"
53− , "unsafe-coerce"
5426 , "uuid"
55− , "yoga-json"
5627 ]
5728, packages = ./packages.dhall
5829, sources = [ "src/**/*.purs", "test/**/*.purs" ]
server/src/Main.purs+69−119
@@ -1,11 +1,9 @@
11module Main where
22
3−import HTTPurple
4−import Prelude hiding ((/))
3+import Prelude
54
65import Auth.Handler (authHandler, readAllowedTokens)
76import Auth.Types (Token(..))
8−import Control.Monad.Cont (ContT(..), callCC, lift, runContT)
97import Control.Parallel (parOneOf, parTraverse)
108import Data.Argonaut (jsonParser)
119import Data.Argonaut.Core (Json)
@@ -15,27 +13,23 @@ import Data.Argonaut.Decode (class DecodeJson, decodeJson, printJsonDecodeError)
1513import Data.Argonaut.Decode.Class (class DecodeJson)
1614import Data.Argonaut.Decode.Decoders (decodeString)
1715import Data.Argonaut.Encode (encodeJson)
18−import Data.Array (any, elem, (..))
16+import Data.Array (elem, (..))
1917import Data.Bifunctor (lmap)
20−import Data.Either (Either(..), note)
18+import Data.Either (Either(..))
2119import Data.Either (hush)
2220import Data.Int (fromString)
23−import Data.Maybe (Maybe(..), fromMaybe, maybe)
21+import Data.Maybe (Maybe(..), fromMaybe)
2422import Data.Newtype (un)
2523import Data.Time.Duration (class Duration, Seconds(..), fromDuration)
2624import Data.Traversable (traverse)
27−import Debug (spy)
2825import Effect (Effect)
29−import Effect.AVar (AVar)
30−import Effect.Aff (Aff, attempt, delay, error, launchAff_, message)
31−import Effect.Aff.AVar as AVar
26+import Effect.Aff (Aff, attempt, delay, launchAff_, message)
3227import Effect.Aff.Class (liftAff)
3328import Effect.Class (class MonadEffect, liftEffect)
3429import Effect.Class.Console (info, log)
3530import Effect.Exception (Error)
3631import Foreign (unsafeToForeign)
37−import HTTPurple.Json.Yoga (jsonDecoder, jsonEncoder) as YogaJson
38−import JobQueue (EnqueueResult(..), Job, NewJob(..), Queue, ResourcePool(..))
32+import JobQueue (EnqueueResult(..), NewJob(..), Queue, ResourcePool(..))
3933import JobQueue as Q
4034import Middleware.JsonBodyParser (jsonBodyParser)
4135import Node.Buffer (Buffer)
@@ -49,7 +43,9 @@ import Node.Express.Middleware.Static (static)
4943import Node.Express.Request (getBody', getRequestHeader)
5044import Node.Express.Response (end, setStatus)
5145import Node.Express.Response as Response
46+import Node.Express.Types (Request, Response)
5247import Node.FS.Aff (readTextFile)
48+import Node.HTTP (Server)
5349import Node.OS (numCpus)
5450import Node.Process (lookupEnv)
5551import Playground.Playground (Folder(..), copy)
@@ -58,18 +54,6 @@ import Shared.Json (readAff, readJsonAff)
5854import Shared.Models.Body (CompileRequest, RunResult, CompileResult)
5955import Shared.Models.Body as Body
6056import Unsafe.Coerce (unsafeCoerce)
61−import Foreign.Object (lookup) as Object
62−import Control.Alt ((<|>))
63−import Data.Array (elem) as Array
64−import HTTPurple.Response (notFound, unauthorized, unprocessableEntity')
65−import Control.Monad.Error.Class (throwError)
66−import Data.Monoid (guard)
67−import HTTPurple.Headers (RequestHeaders)
68−import Data.Map (lookup) as Mapl
69−import Data.String.CaseInsensitive (CaseInsensitiveString(CaseInsensitiveString))
70−import Data.Map (lookup) as Map
71−import HTTPurple.Validation (fromValidated, fromValidatedE)
72−import HTTPurple.Status (forbidden, unauthorized, unprocessableEntity) as Status
7357
7458toBody ∷ ∀ r m. MonadEffect m => { stdout ∷ Buffer, stderr ∷ Buffer | r } -> m RunResult
7559toBody result =
@@ -89,10 +73,59 @@ asErrorWithCode = unsafeCoerce >>> decodeJson >>> hush
8973runCode ∷ ∀ d. Duration d => d -> Folder -> Aff (Maybe ExecResult)
9074runCode timeout folder =
9175 parOneOf
92− [ Just <$> execCommand folder "exec node run.mjs"
76+ [ Just <$> execCommand folder "exec node run.js"
9377 , Nothing <$ delay (timeout # fromDuration)
9478 ]
9579
80+compileAndRunJob ∷ CompileRequest -> (Handler -> Aff Unit) -> NewJob PscIdeConnection
81+compileAndRunJob json handle =
82+ NewJob \jobId conn -> do
83+ stringOrErr ∷ Either Error String <- attempt $ compileCode json.code conn
84+ jsonOrErr ∷ Either Error (Either Error CompileResult) <- attempt $ readJsonAff `traverse` stringOrErr
85+ case jsonOrErr of
86+ Left e -> do
87+ handle $ setStatus 500
88+ log $ "Aff failed with " <> message e
89+ handle $ Response.send $ encodeJson {}
90+ Right (Right res)
91+ | res.resultType == "error" -> do
92+ handle $ setStatus 422
93+ handle $ Response.send $ encodeJson res
94+ Right (Right res) -> do
95+ runResult <- runCode timeout (getFolder conn)
96+ case runResult of
97+ Nothing -> do
98+ handle $ setStatus 408
99+ handle $ Response.send $ encodeJson { error: "Timed out after running for " <> show timeout }
100+ Just rr -> do
101+ resultBody <- toBody rr
102+ handle $ Response.send $ encodeJson (resultBody ∷ Body.RunResult)
103+ Right (Left errs) -> do
104+ handle $ setStatus 500
105+ log $ "Could not decode: " <> show (lmap (const "no way") stringOrErr) <> "\nErrors: " <> show errs
106+ handle $ Response.send $ encodeJson {}
107+ where
108+ timeout = 1.0 # Seconds
109+
110+compileAndRunHandler ∷ Queue PscIdeConnection -> Handler
111+compileAndRunHandler queue = do
112+ body <- getBody'
113+ json <- readAff (unsafeCoerce body) # liftAff
114+ HandlerM \req res next -> do
115+ let
116+ handle = unHandler req res next
117+ runJob = compileAndRunJob json handle
118+ queueRes <- Q.enqueue runJob queue # liftEffect
119+ case queueRes of
120+ Enqueued _ -> pure unit
121+ QueueFull ->
122+ handle do
123+ setStatus 500
124+ Response.send $ encodeJson { error: "Queue full" }
125+
126+unHandler ∷ ∀ a. Request -> Response -> Effect Unit -> HandlerM a -> Aff a
127+unHandler req res next (HandlerM h) = h req res next
128+
96129srcFolder ∷ String
97130srcFolder = "../playground"
98131
@@ -105,8 +138,7 @@ main = do
105138 tokens <- readAllowedTokens
106139 cpus <- numCpus # liftEffect
107140 let
108− -- poolSize = max 2 (cpus / 2) -- use at least 2
109− poolSize = 2
141+ poolSize = max 2 (cpus / 2) -- use at least 2
110142 mkFolder = Folder <<< (destFolder <> _) <<< show
111143 connections <-
112144 (1 .. poolSize)
@@ -124,104 +156,22 @@ main = do
124156 , timeout: 10.0 # Seconds # fromDuration
125157 }
126158 pool
127− void $ liftEffect (serverSetup tokens q)
128−
129−-- makeApp ∷ Array Token -> Queue PscIdeConnection -> App
130−-- makeApp tokens q = do
131−-- use $ static "assets"
132−-- useExternal jsonBodyParser
133−-- use (authHandler tokens)
134−-- E.post "/compileAndRun" (compileAndRunHandler q)
135−
136−-- serverSetup ∷ App -> Aff Server
137−-- serverSetup app = do
138−-- maybePortString <- lookupEnv "PORT" # liftEffect
139−-- let port = maybePortString >>= fromString # fromMaybe 14188
140−-- liftEffect $ (listenHttp app port) \_ -> info $ "psfp server started on port " <> show port
141−-- where
142−-- makeHttpsOptions = do
143−-- key <- readTextFile UTF8 "server.key"
144−-- cert <- readTextFile UTF8 "server.cert"
145−-- pure { key, cert }
146−
147−data Route = CompileAndRun
159+ serverSetup (makeApp tokens q)
148160
149−derive instance Generic Route _
161+makeApp ∷ Array Token -> Queue PscIdeConnection -> App
162+makeApp tokens q = do
163+ use $ static "assets"
164+ useExternal jsonBodyParser
165+ use (authHandler tokens)
166+ E.post "/compileAndRun" (compileAndRunHandler q)
150167
151−route :: RouteDuplex' Route
152−route = mkRoute
153− { "CompileAndRun": "compileAndRun" / noArgs
154− }
155−
156−serverSetup :: Array Token -> Queue _ -> Effect Unit
157−serverSetup tokens queue = do
168+serverSetup ∷ App -> Aff Server
169+serverSetup app = do
158170 maybePortString <- lookupEnv "PORT" # liftEffect
159171 let port = maybePortString >>= fromString # fromMaybe 14188
160− --liftEffect $ (listenHttp app port) \_ ->
161− info $ "psfp server started on port " <> show port
162−
163− void $ serve { port } { route, router }
172+ liftEffect $ (listenHttp app port) \_ -> info $ "psfp server started on port " <> show port
164173 where
165− getToken' headers = do
166− lookup headers "Token" # maybe
167− (Left $ "Missing Token Header")
168− (Right <<< Token)
169−
170− validateToken' :: Token -> Either String Unit
171− validateToken' token = do
172− if Array.elem token tokens then Right unit else Left "Invalid Token"
173−
174− router { route: CompileAndRun, headers, method: Post, body } = usingCont do
175− token <- fromValidatedE getToken' (response' Status.forbidden empty) headers
176− fromValidatedE validateToken' (response' Status.unauthorized empty) token
177− { code } :: { code :: String } <- fromJson YogaJson.jsonDecoder body -- parse the json input
178− -- jobId <- compileAndRunJob code
179− compileAndRunJobCont queue { code } -- do your business logic
180− --notFound
181− router _ = notFound
182174 makeHttpsOptions = do
183175 key <- readTextFile UTF8 "server.key"
184176 cert <- readTextFile UTF8 "server.cert"
185177 pure { key, cert }
186−
187−compileAndRunJobCont :: Queue _ -> CompileRequest -> ContT Response Aff Response
188−compileAndRunJobCont queue { code } = do
189− resultVar <- lift AVar.empty
190− let
191− job :: NewJob _
192− job = NewJob \jobId conn -> do
193− stringOrErr ∷ Either Error String <- attempt $ compileCode code conn
194− jsonOrErr ∷ Either Error (Either Error CompileResult) <- attempt $ readJsonAff `traverse` stringOrErr
195− let folder = getFolder conn
196− AVar.put { jsonOrErr, stringOrErr, folder } resultVar
197− enqueueResult <- lift $ liftEffect $ Q.enqueue job queue
198− case enqueueResult of
199− QueueFull -> notFound
200− _ -> do
201− { jsonOrErr, stringOrErr, folder } <- AVar.take resultVar # lift
202− case jsonOrErr ∷ Either Error (Either Error CompileResult) of
203− Left e -> do
204− lift $ log $ "Aff failed with " <> message e
205− internalServerError' jsonHeaders $ toJson YogaJson.jsonEncoder { error: show e }
206− Right (Right res)
207− | res.resultType == "error" -> do
208− let body = toJson YogaJson.jsonEncoder { result: res.result }
209− response' Status.unprocessableEntity empty body
210− Right (Right res) -> do
211− runResult <- runCode timeout folder # lift
212− case runResult of
213− Nothing -> do
214− requestTimeout' jsonHeaders -- $ toJson YogaJson.jsonEncoder { error: "Timed out after running for " <> show timeout }
215− Just rr -> do
216− resultBody <- toBody rr # lift
217− ok' jsonHeaders $ toJson YogaJson.jsonEncoder { resultBody }
218− Right (Left errs) -> do
219− log $ "Could not decode: " <> show (lmap (const "no way") stringOrErr) <> "\nErrors: " <> show errs
220− internalServerError' jsonHeaders $ toJson YogaJson.jsonEncoder { error: show errs }
221− -- case r of
222− -- Left err -> internalServerError' jsonHeaders $ toJson YogaJson.jsonEncoder { error: show err }
223− -- Right result -> ok' jsonHeaders $ toJson YogaJson.jsonEncoder result
224−
225− where
226− jsonBody = toJson
227− timeout = 1.0 # Seconds
server/src/Middleware/JsonBodyParser.js+1−3
@@ -1,5 +1,3 @@
11"use strict";
22
3−import { json } from "body-parser";
4−
5−export const jsonBodyParser = json()
3+exports.jsonBodyParser = require('body-parser').json()
server/src/Node/OS.js+2−2
@@ -1,2 +1,2 @@
1−import { cpus } from 'os'
2−export const numCpus = function() { return cpus().length }
1+var os = require('os')
2+exports.numCpus = function() { return os.cpus().length }
server/src/Playground/Playground.js+4−4
@@ -1,5 +1,5 @@
1−import {copy} from "fs-extra"
1+var fs = require("fs-extra")
22
3−export const copyImpl = function(src, target) {
4− return copy(src, target, { overwrite: true, dereference: true })
5−}
3+exports.copyImpl = function(src, target) {
4+ return fs.copy(src, target, { overwrite: true, dereference: true })
5+}
server/src/PscIdeClient.purs+11−13
@@ -52,13 +52,13 @@ closeSocketCanceller s =
5252
5353startIdeServer ∷ Folder -> Int -> Aff ChildProcess
5454startIdeServer folder port = do
55− log $ "Spawning ide server " <> infoString
56− cp <- spawnProcess folder "purs" [ "ide", "server", "-p", show port, "--editor-mode", "--no-watch" ]
57− log $ "Spawned ide server " <> infoString
55+ log $ "Spawning ide server" <> infoString
56+ cp <- spawnProcess folder "npx" [ "purs", "ide", "server", "-p", show port, "--editor-mode", "--no-watch" ]
57+ log $ "Spawned ide server" <> infoString
5858 -- building once
59− { error, stderr, stdout } <- execCommand folder "spago build"
59+ { error, stderr, stdout } <- execCommand folder "npx spago build"
6060 stderrStr <- liftEffect $ Buf.toString UTF8 stderr
61− log $ "Built: " <> infoString <> " " <> stderrStr
61+ log $ "Built: " <> stderrStr
6262 log $ "Loading modules: " <> infoString
6363 loadPscIde folder port
6464 pure cp
@@ -74,9 +74,7 @@ execCommand folder command =
7474 makeAff \callback -> do
7575 let options = CP.defaultExecOptions { cwd = Just (un Folder folder) }
7676 childProcess <- CP.exec command options (callback <<< Right)
77− pure $ effectCanceler do
78− log $ "Killing " <> show (CP.pid childProcess)
79− CP.kill SIGKILL childProcess
77+ pure $ effectCanceler ((log $ "Killing " <> show (CP.pid childProcess)) *> CP.kill SIGKILL childProcess)
8078
8179restartIdeServer ∷ Folder -> Int -> Ref ChildProcess -> Aff Unit
8280restartIdeServer folder port processRef = do
@@ -91,9 +89,9 @@ spawnProcess folder command args =
9189 let options = CP.defaultSpawnOptions { cwd = Just (un Folder folder), stdio = Just <$> [ Ignore, Ignore, Ignore ] }
9290 childProcess <- CP.spawn command args options
9391 callback (Right childProcess)
94− pure $ effectCanceler do
95− log $ "Killing " <> show (CP.pid childProcess)
96− CP.kill SIGKILL childProcess
92+ pure $ effectCanceler
93+ $ (log $ "Killing " <> show (CP.pid childProcess))
94+ *> CP.kill SIGKILL childProcess
9795
9896newtype PscIdeConnection = PscIdeConnection
9997 { serverProcessRef ∷ Ref ChildProcess
@@ -115,7 +113,7 @@ getFolder (PscIdeConnection { folder }) = folder
115113loadPscIde ∷ Folder -> Int -> Aff Unit
116114loadPscIde folder port = do
117115 makeAff \affCb -> do
118− socket <- Socket.createConnectionTCP port "127.0.0.1" mempty
116+ socket <- Socket.createConnectionTCP port "localhost" mempty
119117 -- maybe timeout?
120118 Socket.onError socket (affCb <<< Left)
121119 void
@@ -135,7 +133,7 @@ compileCode code (PscIdeConnection { port, folder, serverProcessRef }) = do
135133 saveMainFile folder code
136134 makeAff \affCb -> do
137135 log $ "Compiling on " <> show port
138− socket <- Socket.createConnectionTCP port "127.0.0.1" mempty
136+ socket <- Socket.createConnectionTCP port "localhost" mempty
139137 -- Socket.onError socket (affCb <<< Left)
140138 resultRef <- Ref.new ""
141139 Socket.onData socket \dataFromServer -> do