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