git.iko.soy/rowtype-yoga/purescript-yoga-json
on main help sign in
26 files changed+2691−2785
since splitsnapshots
unifiedsplit
.github/workflows/ci.yml+5−3 .gitignore+4−1 CHANGELOG.md+34 README.md+129−37 bower.json−47 docs/simple-json-migration.md+47 package-lock.json+179−2429 package.json+4−8 packages.dhall−5 spago.dhall−37 spago.lock+1747 spago.yaml+52 src/Yoga/JSON.js+10−9 src/Yoga/JSON.purs+162−65 src/Yoga/JSON/Derive.purs+13 src/Yoga/JSON/Error.purs+14−7 src/Yoga/JSON/Generics/EnumSumRep.purs+3−3 src/Yoga/JSON/Generics/UntaggedProductRep.purs+6−3 src/Yoga/JSON/Generics/UntaggedSumRep.purs+22−22 src/Yoga/JSON/Variant.purs+6−6 test.dhall−15 test/BasicsSpec.purs+144−50 test/ErrorsSpec.purs+11−12 test/GenericsSpec.purs+53−23 test/Main.purs+4−3 test/WriteViaSpec.purs+42
.github/workflows/ci.yml+5−3
@@ -13,13 +13,15 @@ jobs:
1313 - uses: actions/checkout@v2
1414
1515 - uses: purescript-contrib/setup-purescript@main
16+ with:
17+ spago: "unstable"
1618
1719 - uses: actions/setup-node@v2
1820 with:
19− node-version: "14"
21+ node-version: "20"
2022
2123 - name: Cache PureScript dependencies
22− uses: actions/cache@v2
24+ uses: actions/cache@v4
2325 # This cache uses the .dhall files to know when it should reinstall
2426 # and rebuild packages. It caches both the installed packages from
2527 # the `.spago` directory and compilation artifacts from the `output`
@@ -27,7 +29,7 @@ jobs:
2729 # have changed. If you do not want to cache compiled output, remove
2830 # the `output` path.
2931 with:
30− key: ${{ runner.os }}-spago-${{ hashFiles('**/*.dhall') }}
32+ key: ${{ runner.os }}-spago-${{ hashFiles('**/*.yaml') }}
3133 path: |
3234 .spago
3335 output
.gitignore+4−1
@@ -7,4 +7,7 @@
77/.psa*
88/.spago/
99/.nyc_output/
10−/coverage/
10+/coverage/
11+/.idea/
12+.spec-results
13+.DS_Store
CHANGELOG.mdnew file+34
@@ -0,0 +1,34 @@
1+# Changelog
2+
3+## v5.2.2
4+
5+- Fix variant decoding selecting absent branches whose payload decoders accept missing values, such as empty records and `Maybe`. Branches now require an own property matching their label.
6+
7+## v4.0.1
8+
9+- Allow the type of `read*` functions to be visibly applied (#24 by @postsolar)
10+
11+## v4.0.0
12+- Replace `bigints` dependency with `js-bigints` so that no more external npm dependency is needed (#11 by @sigma-andex)
13+
14+## v3.0.2
15+- Minor internal updates
16+- Improve error handling
17+- Add codecs and `JSDate` (@i-am-the-slime)
18+
19+## v3.0.1
20+- Readme update
21+
22+## v3.0.0
23+- Add codecs for enums and more instances (#9 by @i-am-the-slime)
24+- Add codecs for `Map` and `Map` with newtype (#4 by @i-am-the-slime)
25+
26+## v2.0.0
27+- Add support for `BigInt` (#5 by @sigma-andex)
28+- Improve Generics (#3 by @i-am-the-slime)
29+
30+## v1.0.1
31+- Add Generics (#2 by @i-am-the-slime)
32+
33+## v1.0.0
34+- Initial commit
README.md+129−37
@@ -1,70 +1,162 @@
11# purescript-yoga-json
22
3−**Note**: This is a fork of [simple-json](https://github.com/justinwoo/purescript-simple-json) ([MIT Licence](./LICENSE/simple-json.LICENSE)).
3+`yoga-json` is a light-weight and simple json library for purescript.
44
5+**Note**: This library was initially forked from the amazing [simple-json](https://github.com/justinwoo/purescript-simple-json) ([MIT Licence](./LICENSE/simple-json.LICENSE)).
6+Replace your imports from `Simple.JSON` to `Yoga.JSON` to migrate.
57## Table of Contents
8+* [features](#features)
9+* [installation](#installation)
610* [usage](#usage)
7−* [migrate from `simple-json`](#migrate-from-purescript-simple-json)
11+
12+## Features
13+
14+* 😌 simple and easy to use json codecs
15+* 🪶 light-weight
16+* 🤖 built-in support for many common types (`Sum` types, Tuples, BigInts, Maps, JSDate, DateTime, Eithers, NonEmptyStrings )
17+* 🖍 human-friendly error reporting
18+
19+## Installation
20+
21+```
22+spago install yoga-json
23+```
824
925## Usage
1026
27+`purescript-yoga-json` basically provides two functions `writeJSON` and `readJSON`.
28+
29+Use `writeJSON` to serialise a type to a JSON string:
30+
1131```purescript
1232import Yoga.JSON as JSON
1333
1434serialised :: String
1535serialised =
1636 JSON.writeJSON { first_name: "Lola", last_name: "Flores" }
37+ -- {"last_name":"Flores","first_name":"Lola"}
38+```
39+
40+Use `readJSON` to deserialise a JSON string:
41+```purescript
42+import Yoga.JSON as JSON
43+
44+deserialised :: Either MultipleErrors { first_name :: String, last_name :: String }
45+deserialised = JSON.readJSON """{ "first_name": "Lola", "last_name": "Flores" }"""
46+-- Right { first_name: "Lola", last_name: "Flores" }
47+```
48+
49+As the parsing can fail, `readJSON` returns an `Either`, potentially containing a `Left` data constructor with `MultipleErrors`. If you don't care about the specific errors, you can use `readJSON_`, which returns a `Maybe`:
50+
51+```purescript
52+deserialised :: Maybe { first_name :: String, last_name :: String }
53+deserialised = JSON.readJSON_ """{ "first_name": "Lola", "last_name": "Flores" }"""
54+-- Just { first_name: "Lola", last_name: "Flores" }
55+```
56+
57+
58+## Sum types
59+
60+`purescript-yoga-json` provides utility functions to easily generate serialisers and deserialisers for your sum types.
61+
62+Let's start with a simple example of a sum type where our data constructors do not contain any further values:
63+
1764```
65+import Data.Either (Either)
66+import Data.Generic.Rep (class Generic)
67+import Yoga.JSON as JSON
68+import Yoga.JSON.Generics (genericReadForeignEnum, genericWriteForeignEnum)
69+import Yoga.JSON.Generics.EnumSumRep as Enum
1870
19−Check out the tests for how to encode/decode increasingly complex types.
71+data MyEnum = Enum1 | Enum2 | Enum3
72+```
2073
21−## Migrate from `purescript-simple-json`
74+Now, we need to derive a `Generic` instance for it:
2275
23−`purescript-yoga-json` is almost (read below if you use variants) a drop-in replacement for `purescript-simple-json`. Just change the imports from `Simple.JSON` to `Yoga.JSON`.
76+```
77+derive instance Generic MyEnum _
78+-- and optionally a Show instance
79+instance Show MyEnum where
80+ show = genericShow
81+```
2482
25−## Additions over `simple-json`
83+Next, we define a `WriteForeign` instance and implement the `writeImpl` function using `genericWriteForeignEnum Enum.defaultOptions`.
2684
27−### Errors
28−yoga-json will actually report multiple errors at once in the case of records, objects, and arrays.
29−There's also a way to make errors more readable with `renderHumanError`:
30−(e.g. `Must provide a value of type 'Int' instead of 'Object' at $.a.b.c.d[1]`)
85+```purescript
86+instance WriteForeign MyEnum
87+ where
88+ writeImpl = genericWriteForeignEnum Enum.defaultOptions
89+```
3190
91+Similarly, we implement the `ReadForeign` instance using `genericReadForeignEnum Enum.defaultOptions`
92+```purescript
93+instance ReadForeign MyEnum
94+ where
95+ readImpl = genericReadForeignEnum Enum.defaultOptions
96+```
3297
33−### Tuples
34−There is an inbuilt codec for `Tuple`s thanks to @ursi
35−`yoga-json` represents tuples as arrays in JSON.
98+That's all, we can now serialise our data type:
99+```purescript
100+serialised = writeJSON { "myEnum": Enum3 }
101+-- {"myEnum":"Enum3"}
102+```
103+and deserialise it:
104+```purescript
105+deserialised :: E { "myEnum" :: MyEnum }
106+deserialised = readJSON serialised
107+-- Right { myEnum: Enum3 }
108+```
36109
37−### Eithers
38−There is an inbuilt codec for `Either`s.
39−`yoga-json` represents eithers as objects with a `type` and a `value` tag in JSON.
110+### Writing custom codecs
40111
41−### JSDate and DateTime
42−Both are encoded as ISO8601 strings as spat out by `JSDate.toISOString`.
112+In order to write your own, custom codecs you will need to provide instances for `WriteForeign` and `ReadForeign`.
43113
44−### Generics
45−It includes @justinwoo's codecs for en- and decoding generics inspired by
46−[simple-json-generics](https://github.com/justinwoo/purescript-simple-json-generics)
114+Let's see an example. We define a simple data type `TrafficLight` that has three data constructors `Red`, `Yellow` and `Green`:
115+```purescript
116+data TrafficLight = Red | Yellow | Green
117+```
118+We would like to serialise these constructors as lower case strings `"red"`, `"yellow"` and `"green"`.
47119
48−It is possible to customise the representation of enums, tagged sum types, and untagged sum types via options.
120+First we need to provide an implementation for the `WriteForeign` type class, that tells `yoga-json` how to serialise the type. We pattern match on the three different data constructors and write them as the three `String`s red, yellow and green, using the same `writeImpl` function:
121+```purescript
122+instance WriteForeign TrafficLight where
123+ writeImpl Red = writeImpl "red"
124+ writeImpl Yellow = writeImpl "yellow"
125+ writeImpl Green = writeImpl "green"
126+```
127+This works, because `yoga-json` already knows how to serialise a `String`.
49128
50−### BigInts
51−It can *read* bigints (if you install `big-integer` as a JS dependency).
129+Similarly, we need to provide an implementation for the `ReadForeign` type class, that tells `yoga-json` how to deserialise the type. We start by deserialising into a primitive type, typically a String or an Object, and then convert it to our desired Purescript type.
52130
53−### 💣 Cannot write bigints as bigints but only strings
54−It seems that there is no way to write bigints in JavaScript except for writing your own `JSON.stringify`.
131+Since we don't know the input `String`, it might contain invalid data and therefore deserialisation might fail. `yoga-json` uses the `ExceptT` monad to reflect this. We can return valid values using `pure` and `fail` on invalid values:
55132
56−## Differences to `simple-json`
133+```purescript
134+instance ReadForeign TrafficLight where
135+ readImpl json = do
136+ -- deserialise into a string
137+ str :: String <- readImpl json
138+ -- now we pattern match on our valid types
139+ case str of
140+ "red" -> pure Red
141+ "yellow" -> pure Yellow
142+ "green" -> pure Green
143+ -- and fail if we get an invalid type
144+ other -> fail $ ForeignError $ "Failed to parse " <> other <> " as TrafficLight"
145+```
57146
58−### 💣 Variant codec
59−If you want to emulate `simple-json`'s format you may use the newtype `TaggedVariant`
147+Now we can serialise our data type:
148+```purescript
149+serialised = writeJSON { "trafficLight": Red }
150+-- {"trafficLight":"red"}
151+```
60152
153+and deserialise it:
61154```purescript
62−type YourVariantRow = ( a :: Int, b :: String )
63−type YourVariant = Variant YourVariantRow
64−x :: YourVariant
65−x = inj (Proxy :: Proxy "a") 5
66−-- encoded = writeJSON x
67−-- ^ Let's say you had this before
68−-- You can now do:
69−encoded = writeJSON (TaggedVariant "type" "value" x)
155+deserialised :: E { "trafficLight" :: TrafficLight }
156+deserialised = readJSON """{ "trafficLight": "green" }"""
157+-- Right { trafficLight: Green }
158+
159+deserialisedUnknown :: E { "trafficLight" :: TrafficLight }
160+deserialisedUnknown = readJSON """{ "trafficLight": "purple" }"""
161+-- Left (NonEmptyList (NonEmpty (ErrorAtProperty "trafficLight" (ForeignError "Failed to parse purple as TrafficLight")) Nil))
70162```
bower.jsondeleted−47
@@ -1,47 +0,0 @@
1−{
2− "name": "purescript-yoga-json",
3− "license": [
4− "MIT"
5− ],
6− "repository": {
7− "type": "git",
8− "url": "https://github.com/rowtype-yoga/purescript-yoga-json.git"
9− },
10− "ignore": [
11− "**/.*",
12− "node_modules",
13− "bower_components",
14− "output"
15− ],
16− "dependencies": {
17− "purescript-arrays": "^v7.0.0",
18− "purescript-bifunctors": "^v6.0.0",
19− "purescript-bigints": "^v7.0.1",
20− "purescript-console": "^v6.0.0",
21− "purescript-control": "^v6.0.0",
22− "purescript-datetime": "^v6.0.0",
23− "purescript-effect": "^v4.0.0",
24− "purescript-either": "^v6.1.0",
25− "purescript-exceptions": "^v6.0.0",
26− "purescript-foldable-traversable": "^v6.0.0",
27− "purescript-foreign": "^v7.0.0",
28− "purescript-foreign-object": "^v4.0.0",
29− "purescript-identity": "^v6.0.0",
30− "purescript-integers": "^v6.0.0",
31− "purescript-js-date": "^v8.0.0",
32− "purescript-lists": "^v7.0.0",
33− "purescript-maybe": "^v6.0.0",
34− "purescript-newtype": "^v5.0.0",
35− "purescript-nullable": "^v6.0.0",
36− "purescript-numbers": "^v9.0.0",
37− "purescript-ordered-collections": "^v3.0.0",
38− "purescript-partial": "^v4.0.0",
39− "purescript-prelude": "^v6.0.0",
40− "purescript-record": "^v4.0.0",
41− "purescript-transformers": "^v6.0.0",
42− "purescript-tuples": "^v7.0.0",
43− "purescript-typelevel-prelude": "^v7.0.0",
44− "purescript-unsafe-coerce": "^v6.0.0",
45− "purescript-variant": "^v8.0.0"
46− }
47−}
docs/simple-json-migration.mdnew file+47
@@ -0,0 +1,47 @@
1+# Migrate from `purescript-simple-json`
2+
3+`purescript-yoga-json` is a fork of [simple-json](https://github.com/justinwoo/purescript-simple-json) ([MIT Licence](./LICENSE/simple-json.LICENSE)) and almost (read below if you use variants) a drop-in replacement for `purescript-simple-json`. Just change the imports from `Simple.JSON` to `Yoga.JSON`.
4+
5+## Additions over `simple-json`
6+
7+### Errors
8+yoga-json will actually report multiple errors at once in the case of records, objects, and arrays.
9+There's also a way to make errors more readable with `renderHumanError`:
10+(e.g. `Must provide a value of type 'Int' instead of 'Object' at $.a.b.c.d[1]`)
11+
12+
13+### Tuples
14+There is an inbuilt codec for `Tuple`s thanks to @ursi
15+`yoga-json` represents tuples as arrays in JSON.
16+
17+### Eithers
18+There is an inbuilt codec for `Either`s.
19+`yoga-json` represents eithers as objects with a `type` and a `value` tag in JSON.
20+
21+### JSDate and DateTime
22+Both are encoded as ISO8601 strings as spat out by `JSDate.toISOString`.
23+
24+### Generics
25+It includes @justinwoo's codecs for en- and decoding generics inspired by
26+[simple-json-generics](https://github.com/justinwoo/purescript-simple-json-generics)
27+
28+It is possible to customise the representation of enums, tagged sum types, and untagged sum types via options.
29+
30+### BigInts
31+There is an inbuilt codec for `BigInt`. Writing a `BigInt` however will result in a String. This is a current limitation of JavaScript and the only way around it - it seems - is writing your own JSON.stringify method (which is out of scope of this project).
32+
33+## Differences to `simple-json`
34+
35+### 💣 Variant codec
36+If you want to emulate `simple-json`'s format you may use the newtype `TaggedVariant`
37+
38+```purescript
39+type YourVariantRow = ( a :: Int, b :: String )
40+type YourVariant = Variant YourVariantRow
41+x :: YourVariant
42+x = inj (Proxy :: Proxy "a") 5
43+-- encoded = writeJSON x
44+-- ^ Let's say you had this before
45+-- You can now do:
46+encoded = writeJSON (TaggedVariant "type" "value" x)
47+```
package-lock.json+179−2429
@@ -4,342 +4,18 @@
44 "requires": true,
55 "packages": {
66 "": {
7− "dependencies": {
8− "big-integer": "^1.6.51"
9− },
7+ "name": "purescript-yoga-json",
108 "devDependencies": {
119 "c8": "^7.12.0",
12− "nyc": "^15.1.0",
1310 "rimraf": "^3.0.2"
1411 }
1512 },
16− "node_modules/@ampproject/remapping": {
17− "version": "2.2.0",
18− "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
19− "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
20− "dev": true,
21− "dependencies": {
22− "@jridgewell/gen-mapping": "^0.1.0",
23− "@jridgewell/trace-mapping": "^0.3.9"
24− },
25− "engines": {
26− "node": ">=6.0.0"
27− }
28− },
29− "node_modules/@babel/code-frame": {
30− "version": "7.18.6",
31− "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
32− "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
33− "dev": true,
34− "dependencies": {
35− "@babel/highlight": "^7.18.6"
36− },
37− "engines": {
38− "node": ">=6.9.0"
39− }
40− },
41− "node_modules/@babel/compat-data": {
42− "version": "7.18.8",
43− "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz",
44− "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==",
45− "dev": true,
46− "engines": {
47− "node": ">=6.9.0"
48− }
49− },
50− "node_modules/@babel/core": {
51− "version": "7.18.9",
52− "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz",
53− "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==",
54− "dev": true,
55− "dependencies": {
56− "@ampproject/remapping": "^2.1.0",
57− "@babel/code-frame": "^7.18.6",
58− "@babel/generator": "^7.18.9",
59− "@babel/helper-compilation-targets": "^7.18.9",
60− "@babel/helper-module-transforms": "^7.18.9",
61− "@babel/helpers": "^7.18.9",
62− "@babel/parser": "^7.18.9",
63− "@babel/template": "^7.18.6",
64− "@babel/traverse": "^7.18.9",
65− "@babel/types": "^7.18.9",
66− "convert-source-map": "^1.7.0",
67− "debug": "^4.1.0",
68− "gensync": "^1.0.0-beta.2",
69− "json5": "^2.2.1",
70− "semver": "^6.3.0"
71− },
72− "engines": {
73− "node": ">=6.9.0"
74− },
75− "funding": {
76− "type": "opencollective",
77− "url": "https://opencollective.com/babel"
78− }
79− },
80− "node_modules/@babel/generator": {
81− "version": "7.18.9",
82− "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz",
83− "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==",
84− "dev": true,
85− "dependencies": {
86− "@babel/types": "^7.18.9",
87− "@jridgewell/gen-mapping": "^0.3.2",
88− "jsesc": "^2.5.1"
89− },
90− "engines": {
91− "node": ">=6.9.0"
92− }
93− },
94− "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
95− "version": "0.3.2",
96− "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
97− "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
98− "dev": true,
99− "dependencies": {
100− "@jridgewell/set-array": "^1.0.1",
101− "@jridgewell/sourcemap-codec": "^1.4.10",
102− "@jridgewell/trace-mapping": "^0.3.9"
103− },
104− "engines": {
105− "node": ">=6.0.0"
106− }
107− },
108− "node_modules/@babel/helper-compilation-targets": {
109− "version": "7.18.9",
110− "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz",
111− "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==",
112− "dev": true,
113− "dependencies": {
114− "@babel/compat-data": "^7.18.8",
115− "@babel/helper-validator-option": "^7.18.6",
116− "browserslist": "^4.20.2",
117− "semver": "^6.3.0"
118− },
119− "engines": {
120− "node": ">=6.9.0"
121− },
122− "peerDependencies": {
123− "@babel/core": "^7.0.0"
124− }
125− },
126− "node_modules/@babel/helper-environment-visitor": {
127− "version": "7.18.9",
128− "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
129− "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
130− "dev": true,
131− "engines": {
132− "node": ">=6.9.0"
133− }
134− },
135− "node_modules/@babel/helper-function-name": {
136− "version": "7.18.9",
137− "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz",
138− "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==",
139− "dev": true,
140− "dependencies": {
141− "@babel/template": "^7.18.6",
142− "@babel/types": "^7.18.9"
143− },
144− "engines": {
145− "node": ">=6.9.0"
146− }
147− },
148− "node_modules/@babel/helper-hoist-variables": {
149− "version": "7.18.6",
150− "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
151− "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
152− "dev": true,
153− "dependencies": {
154− "@babel/types": "^7.18.6"
155− },
156− "engines": {
157− "node": ">=6.9.0"
158− }
159− },
160− "node_modules/@babel/helper-module-imports": {
161− "version": "7.18.6",
162− "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
163− "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
164− "dev": true,
165− "dependencies": {
166− "@babel/types": "^7.18.6"
167− },
168− "engines": {
169− "node": ">=6.9.0"
170− }
171− },
172− "node_modules/@babel/helper-module-transforms": {
173− "version": "7.18.9",
174− "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz",
175− "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==",
176− "dev": true,
177− "dependencies": {
178− "@babel/helper-environment-visitor": "^7.18.9",
179− "@babel/helper-module-imports": "^7.18.6",
180− "@babel/helper-simple-access": "^7.18.6",
181− "@babel/helper-split-export-declaration": "^7.18.6",
182− "@babel/helper-validator-identifier": "^7.18.6",
183− "@babel/template": "^7.18.6",
184− "@babel/traverse": "^7.18.9",
185− "@babel/types": "^7.18.9"
186− },
187− "engines": {
188− "node": ">=6.9.0"
189− }
190− },
191− "node_modules/@babel/helper-simple-access": {
192− "version": "7.18.6",
193− "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
194− "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
195− "dev": true,
196− "dependencies": {
197− "@babel/types": "^7.18.6"
198− },
199− "engines": {
200− "node": ">=6.9.0"
201− }
202− },
203− "node_modules/@babel/helper-split-export-declaration": {
204− "version": "7.18.6",
205− "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
206− "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
207− "dev": true,
208− "dependencies": {
209− "@babel/types": "^7.18.6"
210− },
211− "engines": {
212− "node": ">=6.9.0"
213− }
214− },
215− "node_modules/@babel/helper-validator-identifier": {
216− "version": "7.18.6",
217− "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
218− "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
219− "dev": true,
220− "engines": {
221− "node": ">=6.9.0"
222− }
223− },
224− "node_modules/@babel/helper-validator-option": {
225− "version": "7.18.6",
226− "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
227− "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
228− "dev": true,
229− "engines": {
230− "node": ">=6.9.0"
231− }
232− },
233− "node_modules/@babel/helpers": {
234− "version": "7.18.9",
235− "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz",
236− "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==",
237− "dev": true,
238− "dependencies": {
239− "@babel/template": "^7.18.6",
240− "@babel/traverse": "^7.18.9",
241− "@babel/types": "^7.18.9"
242− },
243− "engines": {
244− "node": ">=6.9.0"
245− }
246− },
247− "node_modules/@babel/highlight": {
248− "version": "7.18.6",
249− "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
250− "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
251− "dev": true,
252− "dependencies": {
253− "@babel/helper-validator-identifier": "^7.18.6",
254− "chalk": "^2.0.0",
255− "js-tokens": "^4.0.0"
256− },
257− "engines": {
258− "node": ">=6.9.0"
259− }
260− },
261− "node_modules/@babel/parser": {
262− "version": "7.18.9",
263− "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
264− "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==",
265− "dev": true,
266− "bin": {
267− "parser": "bin/babel-parser.js"
268− },
269− "engines": {
270− "node": ">=6.0.0"
271− }
272− },
273− "node_modules/@babel/template": {
274− "version": "7.18.6",
275− "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
276− "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
277− "dev": true,
278− "dependencies": {
279− "@babel/code-frame": "^7.18.6",
280− "@babel/parser": "^7.18.6",
281− "@babel/types": "^7.18.6"
282− },
283− "engines": {
284− "node": ">=6.9.0"
285− }
286− },
287− "node_modules/@babel/traverse": {
288− "version": "7.18.9",
289− "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz",
290− "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==",
291− "dev": true,
292− "dependencies": {
293− "@babel/code-frame": "^7.18.6",
294− "@babel/generator": "^7.18.9",
295− "@babel/helper-environment-visitor": "^7.18.9",
296− "@babel/helper-function-name": "^7.18.9",
297− "@babel/helper-hoist-variables": "^7.18.6",
298− "@babel/helper-split-export-declaration": "^7.18.6",
299− "@babel/parser": "^7.18.9",
300− "@babel/types": "^7.18.9",
301− "debug": "^4.1.0",
302− "globals": "^11.1.0"
303− },
304− "engines": {
305− "node": ">=6.9.0"
306− }
307− },
308− "node_modules/@babel/types": {
309− "version": "7.18.9",
310− "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz",
311− "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==",
312− "dev": true,
313− "dependencies": {
314− "@babel/helper-validator-identifier": "^7.18.6",
315− "to-fast-properties": "^2.0.0"
316− },
317− "engines": {
318− "node": ">=6.9.0"
319− }
320− },
32113 "node_modules/@bcoe/v8-coverage": {
32214 "version": "0.2.3",
32315 "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
32416 "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
32517 "dev": true
32618 },
327− "node_modules/@istanbuljs/load-nyc-config": {
328− "version": "1.1.0",
329− "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
330− "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
331− "dev": true,
332− "dependencies": {
333− "camelcase": "^5.3.1",
334− "find-up": "^4.1.0",
335− "get-package-type": "^0.1.0",
336− "js-yaml": "^3.13.1",
337− "resolve-from": "^5.0.0"
338− },
339− "engines": {
340− "node": ">=8"
341− }
342− },
34319 "node_modules/@istanbuljs/schema": {
34420 "version": "0.1.3",
34521 "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -349,19 +25,6 @@
34925 "node": ">=8"
35026 }
35127 },
352− "node_modules/@jridgewell/gen-mapping": {
353− "version": "0.1.1",
354− "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
355− "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
356− "dev": true,
357− "dependencies": {
358− "@jridgewell/set-array": "^1.0.0",
359− "@jridgewell/sourcemap-codec": "^1.4.10"
360− },
361− "engines": {
362− "node": ">=6.0.0"
363− }
364− },
36528 "node_modules/@jridgewell/resolve-uri": {
36629 "version": "3.1.0",
36730 "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
@@ -371,15 +34,6 @@
37134 "node": ">=6.0.0"
37235 }
37336 },
374− "node_modules/@jridgewell/set-array": {
375− "version": "1.1.2",
376− "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
377− "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
378− "dev": true,
379− "engines": {
380− "node": ">=6.0.0"
381− }
382− },
38337 "node_modules/@jridgewell/sourcemap-codec": {
38438 "version": "1.4.14",
38539 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
@@ -387,13 +41,13 @@
38741 "dev": true
38842 },
38943 "node_modules/@jridgewell/trace-mapping": {
390− "version": "0.3.14",
391− "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
392− "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
44+ "version": "0.3.17",
45+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
46+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
39347 "dev": true,
39448 "dependencies": {
395− "@jridgewell/resolve-uri": "^3.0.3",
396− "@jridgewell/sourcemap-codec": "^1.4.10"
49+ "@jridgewell/resolve-uri": "3.1.0",
50+ "@jridgewell/sourcemap-codec": "1.4.14"
39751 }
39852 },
39953 "node_modules/@types/istanbul-lib-coverage": {
@@ -402,19 +56,6 @@
40256 "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
40357 "dev": true
40458 },
405− "node_modules/aggregate-error": {
406− "version": "3.1.0",
407− "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
408− "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
409− "dev": true,
410− "dependencies": {
411− "clean-stack": "^2.0.0",
412− "indent-string": "^4.0.0"
413− },
414− "engines": {
415− "node": ">=8"
416− }
417− },
41859 "node_modules/ansi-regex": {
41960 "version": "5.0.1",
42061 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -425,42 +66,18 @@
42566 }
42667 },
42768 "node_modules/ansi-styles": {
428− "version": "3.2.1",
429− "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
430− "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
431− "dev": true,
432− "dependencies": {
433− "color-convert": "^1.9.0"
434− },
435− "engines": {
436− "node": ">=4"
437− }
438− },
439− "node_modules/append-transform": {
440− "version": "2.0.0",
441− "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz",
442− "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==",
69+ "version": "4.3.0",
70+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
71+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
44372 "dev": true,
44473 "dependencies": {
445− "default-require-extensions": "^3.0.0"
74+ "color-convert": "^2.0.1"
44675 },
44776 "engines": {
44877 "node": ">=8"
449− }
450− },
451− "node_modules/archy": {
452− "version": "1.0.0",
453− "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
454− "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
455− "dev": true
456− },
457− "node_modules/argparse": {
458− "version": "1.0.10",
459− "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
460− "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
461− "dev": true,
462− "dependencies": {
463− "sprintf-js": "~1.0.2"
78+ },
79+ "funding": {
80+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
46481 }
46582 },
46683 "node_modules/balanced-match": {
@@ -469,14 +86,6 @@
46986 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
47087 "dev": true
47188 },
472− "node_modules/big-integer": {
473− "version": "1.6.51",
474− "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
475− "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
476− "engines": {
477− "node": ">=0.6"
478− }
479− },
48089 "node_modules/brace-expansion": {
48190 "version": "1.1.11",
48291 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -487,34 +96,6 @@
48796 "concat-map": "0.0.1"
48897 }
48998 },
490− "node_modules/browserslist": {
491− "version": "4.21.2",
492− "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz",
493− "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==",
494− "dev": true,
495− "funding": [
496− {
497− "type": "opencollective",
498− "url": "https://opencollective.com/browserslist"
499− },
500− {
501− "type": "tidelift",
502− "url": "https://tidelift.com/funding/github/npm/browserslist"
503− }
504− ],
505− "dependencies": {
506− "caniuse-lite": "^1.0.30001366",
507− "electron-to-chromium": "^1.4.188",
508− "node-releases": "^2.0.6",
509− "update-browserslist-db": "^1.0.4"
510− },
511− "bin": {
512− "browserslist": "cli.js"
513− },
514− "engines": {
515− "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
516− }
517− },
51899 "node_modules/c8": {
519100 "version": "7.12.0",
520101 "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz",
@@ -541,22 +122,7 @@
541122 "node": ">=10.12.0"
542123 }
543124 },
544− "node_modules/c8/node_modules/ansi-styles": {
545− "version": "4.3.0",
546− "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
547− "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
548− "dev": true,
549− "dependencies": {
550− "color-convert": "^2.0.1"
551− },
552− "engines": {
553− "node": ">=8"
554− },
555− "funding": {
556− "url": "https://github.com/chalk/ansi-styles?sponsor=1"
557− }
558− },
559− "node_modules/c8/node_modules/cliui": {
125+ "node_modules/cliui": {
560126 "version": "7.0.4",
561127 "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
562128 "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
@@ -567,7 +133,7 @@
567133 "wrap-ansi": "^7.0.0"
568134 }
569135 },
570− "node_modules/c8/node_modules/color-convert": {
136+ "node_modules/color-convert": {
571137 "version": "2.0.1",
572138 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
573139 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
@@ -579,221 +145,12 @@
579145 "node": ">=7.0.0"
580146 }
581147 },
582− "node_modules/c8/node_modules/color-name": {
148+ "node_modules/color-name": {
583149 "version": "1.1.4",
584150 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
585151 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
586152 "dev": true
587153 },
588− "node_modules/c8/node_modules/find-up": {
589− "version": "5.0.0",
590− "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
591− "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
592− "dev": true,
593− "dependencies": {
594− "locate-path": "^6.0.0",
595− "path-exists": "^4.0.0"
596− },
597− "engines": {
598− "node": ">=10"
599− },
600− "funding": {
601− "url": "https://github.com/sponsors/sindresorhus"
602− }
603− },
604− "node_modules/c8/node_modules/locate-path": {
605− "version": "6.0.0",
606− "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
607− "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
608− "dev": true,
609− "dependencies": {
610− "p-locate": "^5.0.0"
611− },
612− "engines": {
613− "node": ">=10"
614− },
615− "funding": {
616− "url": "https://github.com/sponsors/sindresorhus"
617− }
618− },
619− "node_modules/c8/node_modules/p-limit": {
620− "version": "3.1.0",
621− "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
622− "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
623− "dev": true,
624− "dependencies": {
625− "yocto-queue": "^0.1.0"
626− },
627− "engines": {
628− "node": ">=10"
629− },
630− "funding": {
631− "url": "https://github.com/sponsors/sindresorhus"
632− }
633− },
634− "node_modules/c8/node_modules/p-locate": {
635− "version": "5.0.0",
636− "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
637− "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
638− "dev": true,
639− "dependencies": {
640− "p-limit": "^3.0.2"
641− },
642− "engines": {
643− "node": ">=10"
644− },
645− "funding": {
646− "url": "https://github.com/sponsors/sindresorhus"
647− }
648− },
649− "node_modules/c8/node_modules/wrap-ansi": {
650− "version": "7.0.0",
651− "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
652− "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
653− "dev": true,
654− "dependencies": {
655− "ansi-styles": "^4.0.0",
656− "string-width": "^4.1.0",
657− "strip-ansi": "^6.0.0"
658− },
659− "engines": {
660− "node": ">=10"
661− },
662− "funding": {
663− "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
664− }
665− },
666− "node_modules/c8/node_modules/y18n": {
667− "version": "5.0.8",
668− "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
669− "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
670− "dev": true,
671− "engines": {
672− "node": ">=10"
673− }
674− },
675− "node_modules/c8/node_modules/yargs": {
676− "version": "16.2.0",
677− "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
678− "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
679− "dev": true,
680− "dependencies": {
681− "cliui": "^7.0.2",
682− "escalade": "^3.1.1",
683− "get-caller-file": "^2.0.5",
684− "require-directory": "^2.1.1",
685− "string-width": "^4.2.0",
686− "y18n": "^5.0.5",
687− "yargs-parser": "^20.2.2"
688− },
689− "engines": {
690− "node": ">=10"
691− }
692− },
693− "node_modules/c8/node_modules/yargs-parser": {
694− "version": "20.2.9",
695− "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
696− "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
697− "dev": true,
698− "engines": {
699− "node": ">=10"
700− }
701− },
702− "node_modules/caching-transform": {
703− "version": "4.0.0",
704− "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz",
705− "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==",
706− "dev": true,
707− "dependencies": {
708− "hasha": "^5.0.0",
709− "make-dir": "^3.0.0",
710− "package-hash": "^4.0.0",
711− "write-file-atomic": "^3.0.0"
712− },
713− "engines": {
714− "node": ">=8"
715− }
716− },
717− "node_modules/camelcase": {
718− "version": "5.3.1",
719− "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
720− "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
721− "dev": true,
722− "engines": {
723− "node": ">=6"
724− }
725− },
726− "node_modules/caniuse-lite": {
727− "version": "1.0.30001368",
728− "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz",
729− "integrity": "sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ==",
730− "dev": true,
731− "funding": [
732− {
733− "type": "opencollective",
734− "url": "https://opencollective.com/browserslist"
735− },
736− {
737− "type": "tidelift",
738− "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
739− }
740− ]
741− },
742− "node_modules/chalk": {
743− "version": "2.4.2",
744− "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
745− "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
746− "dev": true,
747− "dependencies": {
748− "ansi-styles": "^3.2.1",
749− "escape-string-regexp": "^1.0.5",
750− "supports-color": "^5.3.0"
751− },
752− "engines": {
753− "node": ">=4"
754− }
755− },
756− "node_modules/clean-stack": {
757− "version": "2.2.0",
758− "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
759− "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
760− "dev": true,
761− "engines": {
762− "node": ">=6"
763− }
764− },
765− "node_modules/cliui": {
766− "version": "6.0.0",
767− "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
768− "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
769− "dev": true,
770− "dependencies": {
771− "string-width": "^4.2.0",
772− "strip-ansi": "^6.0.0",
773− "wrap-ansi": "^6.2.0"
774− }
775− },
776− "node_modules/color-convert": {
777− "version": "1.9.3",
778− "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
779− "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
780− "dev": true,
781− "dependencies": {
782− "color-name": "1.1.3"
783− }
784− },
785− "node_modules/color-name": {
786− "version": "1.1.3",
787− "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
788− "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
789− "dev": true
790− },
791− "node_modules/commondir": {
792− "version": "1.0.1",
793− "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
794− "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
795− "dev": true
796− },
797154 "node_modules/concat-map": {
798155 "version": "0.0.1",
799156 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -801,143 +158,55 @@
801158 "dev": true
802159 },
803160 "node_modules/convert-source-map": {
804− "version": "1.8.0",
805− "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
806− "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
807− "dev": true,
808− "dependencies": {
809− "safe-buffer": "~5.1.1"
810− }
161+ "version": "1.9.0",
162+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
163+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
164+ "dev": true
811165 },
812166 "node_modules/cross-spawn": {
813− "version": "7.0.3",
814− "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
815− "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
167+ "version": "7.0.6",
168+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
169+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
816170 "dev": true,
171+ "license": "MIT",
817172 "dependencies": {
818173 "path-key": "^3.1.0",
819174 "shebang-command": "^2.0.0",
820− "which": "^2.0.1"
821− },
822− "engines": {
823− "node": ">= 8"
824− }
825− },
826− "node_modules/debug": {
827− "version": "4.3.4",
828− "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
829− "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
830− "dev": true,
831− "dependencies": {
832− "ms": "2.1.2"
833− },
834− "engines": {
835− "node": ">=6.0"
836− },
837− "peerDependenciesMeta": {
838− "supports-color": {
839− "optional": true
840− }
841− }
842− },
843− "node_modules/decamelize": {
844− "version": "1.2.0",
845− "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
846− "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
847− "dev": true,
848− "engines": {
849− "node": ">=0.10.0"
850− }
851− },
852− "node_modules/default-require-extensions": {
853− "version": "3.0.0",
854− "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz",
855− "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==",
856− "dev": true,
857− "dependencies": {
858− "strip-bom": "^4.0.0"
859− },
860− "engines": {
861− "node": ">=8"
862− }
863− },
864− "node_modules/electron-to-chromium": {
865− "version": "1.4.196",
866− "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.196.tgz",
867− "integrity": "sha512-uxMa/Dt7PQsLBVXwH+t6JvpHJnrsYBaxWKi/J6HE+/nBtoHENhwBoNkgkm226/Kfxeg0z1eMQLBRPPKcDH8xWA==",
868− "dev": true
869− },
870− "node_modules/emoji-regex": {
871− "version": "8.0.0",
872− "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
873− "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
874− "dev": true
875− },
876− "node_modules/es6-error": {
877− "version": "4.1.1",
878− "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
879− "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
880− "dev": true
881− },
882− "node_modules/escalade": {
883− "version": "3.1.1",
884− "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
885− "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
886− "dev": true,
887− "engines": {
888− "node": ">=6"
889− }
890− },
891− "node_modules/escape-string-regexp": {
892− "version": "1.0.5",
893− "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
894− "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
895− "dev": true,
896− "engines": {
897− "node": ">=0.8.0"
898− }
899− },
900− "node_modules/esprima": {
901− "version": "4.0.1",
902− "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
903− "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
904− "dev": true,
905− "bin": {
906− "esparse": "bin/esparse.js",
907− "esvalidate": "bin/esvalidate.js"
175+ "which": "^2.0.1"
908176 },
909177 "engines": {
910− "node": ">=4"
178+ "node": ">= 8"
911179 }
912180 },
913− "node_modules/find-cache-dir": {
914− "version": "3.3.2",
915− "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
916− "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
181+ "node_modules/emoji-regex": {
182+ "version": "8.0.0",
183+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
184+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
185+ "dev": true
186+ },
187+ "node_modules/escalade": {
188+ "version": "3.1.1",
189+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
190+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
917191 "dev": true,
918− "dependencies": {
919− "commondir": "^1.0.1",
920− "make-dir": "^3.0.2",
921− "pkg-dir": "^4.1.0"
922− },
923192 "engines": {
924− "node": ">=8"
925− },
926− "funding": {
927− "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
193+ "node": ">=6"
928194 }
929195 },
930196 "node_modules/find-up": {
931− "version": "4.1.0",
932− "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
933− "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
197+ "version": "5.0.0",
198+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
199+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
934200 "dev": true,
935201 "dependencies": {
936− "locate-path": "^5.0.0",
202+ "locate-path": "^6.0.0",
937203 "path-exists": "^4.0.0"
938204 },
939205 "engines": {
940− "node": ">=8"
206+ "node": ">=10"
207+ },
208+ "funding": {
209+ "url": "https://github.com/sponsors/sindresorhus"
941210 }
942211 },
943212 "node_modules/foreground-child": {
@@ -953,41 +222,12 @@
953222 "node": ">=8.0.0"
954223 }
955224 },
956− "node_modules/fromentries": {
957− "version": "1.3.2",
958− "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz",
959− "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==",
960− "dev": true,
961− "funding": [
962− {
963− "type": "github",
964− "url": "https://github.com/sponsors/feross"
965− },
966− {
967− "type": "patreon",
968− "url": "https://www.patreon.com/feross"
969− },
970− {
971− "type": "consulting",
972− "url": "https://feross.org/support"
973− }
974− ]
975− },
976225 "node_modules/fs.realpath": {
977226 "version": "1.0.0",
978227 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
979228 "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
980229 "dev": true
981230 },
982− "node_modules/gensync": {
983− "version": "1.0.0-beta.2",
984− "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
985− "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
986− "dev": true,
987− "engines": {
988− "node": ">=6.9.0"
989− }
990− },
991231 "node_modules/get-caller-file": {
992232 "version": "2.0.5",
993233 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -997,15 +237,6 @@
997237 "node": "6.* || 8.* || >= 10.*"
998238 }
999239 },
1000− "node_modules/get-package-type": {
1001− "version": "0.1.0",
1002− "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
1003− "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
1004− "dev": true,
1005− "engines": {
1006− "node": ">=8.0.0"
1007− }
1008− },
1009240 "node_modules/glob": {
1010241 "version": "7.2.3",
1011242 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -1026,44 +257,13 @@
1026257 "url": "https://github.com/sponsors/isaacs"
1027258 }
1028259 },
1029− "node_modules/globals": {
1030− "version": "11.12.0",
1031− "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1032− "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1033− "dev": true,
1034− "engines": {
1035− "node": ">=4"
1036− }
1037− },
1038− "node_modules/graceful-fs": {
1039− "version": "4.2.10",
1040− "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
1041− "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
1042− "dev": true
1043− },
1044260 "node_modules/has-flag": {
1045− "version": "3.0.0",
1046− "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1047− "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1048− "dev": true,
1049− "engines": {
1050− "node": ">=4"
1051− }
1052− },
1053− "node_modules/hasha": {
1054− "version": "5.2.2",
1055− "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
1056− "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==",
261+ "version": "4.0.0",
262+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
263+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1057264 "dev": true,
1058− "dependencies": {
1059− "is-stream": "^2.0.0",
1060− "type-fest": "^0.8.0"
1061− },
1062265 "engines": {
1063266 "node": ">=8"
1064− },
1065− "funding": {
1066− "url": "https://github.com/sponsors/sindresorhus"
1067267 }
1068268 },
1069269 "node_modules/html-escaper": {
@@ -1072,24 +272,6 @@
1072272 "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
1073273 "dev": true
1074274 },
1075− "node_modules/imurmurhash": {
1076− "version": "0.1.4",
1077− "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1078− "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
1079− "dev": true,
1080− "engines": {
1081− "node": ">=0.8.19"
1082− }
1083− },
1084− "node_modules/indent-string": {
1085− "version": "4.0.0",
1086− "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
1087− "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
1088− "dev": true,
1089− "engines": {
1090− "node": ">=8"
1091− }
1092− },
1093275 "node_modules/inflight": {
1094276 "version": "1.0.6",
1095277 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -1115,33 +297,6 @@
1115297 "node": ">=8"
1116298 }
1117299 },
1118− "node_modules/is-stream": {
1119− "version": "2.0.1",
1120− "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
1121− "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
1122− "dev": true,
1123− "engines": {
1124− "node": ">=8"
1125− },
1126− "funding": {
1127− "url": "https://github.com/sponsors/sindresorhus"
1128− }
1129− },
1130− "node_modules/is-typedarray": {
1131− "version": "1.0.0",
1132− "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1133− "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
1134− "dev": true
1135− },
1136− "node_modules/is-windows": {
1137− "version": "1.0.2",
1138− "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
1139− "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
1140− "dev": true,
1141− "engines": {
1142− "node": ">=0.10.0"
1143− }
1144− },
1145300 "node_modules/isexe": {
1146301 "version": "2.0.0",
1147302 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -1157,50 +312,6 @@
1157312 "node": ">=8"
1158313 }
1159314 },
1160− "node_modules/istanbul-lib-hook": {
1161− "version": "3.0.0",
1162− "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz",
1163− "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==",
1164− "dev": true,
1165− "dependencies": {
1166− "append-transform": "^2.0.0"
1167− },
1168− "engines": {
1169− "node": ">=8"
1170− }
1171− },
1172− "node_modules/istanbul-lib-instrument": {
1173− "version": "4.0.3",
1174− "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
1175− "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
1176− "dev": true,
1177− "dependencies": {
1178− "@babel/core": "^7.7.5",
1179− "@istanbuljs/schema": "^0.1.2",
1180− "istanbul-lib-coverage": "^3.0.0",
1181− "semver": "^6.3.0"
1182− },
1183− "engines": {
1184− "node": ">=8"
1185− }
1186− },
1187− "node_modules/istanbul-lib-processinfo": {
1188− "version": "2.0.3",
1189− "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
1190− "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
1191− "dev": true,
1192− "dependencies": {
1193− "archy": "^1.0.0",
1194− "cross-spawn": "^7.0.3",
1195− "istanbul-lib-coverage": "^3.2.0",
1196− "p-map": "^3.0.0",
1197− "rimraf": "^3.0.0",
1198− "uuid": "^8.3.2"
1199− },
1200− "engines": {
1201− "node": ">=8"
1202− }
1203− },
1204315 "node_modules/istanbul-lib-report": {
1205316 "version": "3.0.0",
1206317 "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
@@ -1215,41 +326,6 @@
1215326 "node": ">=8"
1216327 }
1217328 },
1218− "node_modules/istanbul-lib-report/node_modules/has-flag": {
1219− "version": "4.0.0",
1220− "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1221− "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1222− "dev": true,
1223− "engines": {
1224− "node": ">=8"
1225− }
1226− },
1227− "node_modules/istanbul-lib-report/node_modules/supports-color": {
1228− "version": "7.2.0",
1229− "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1230− "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1231− "dev": true,
1232− "dependencies": {
1233− "has-flag": "^4.0.0"
1234− },
1235− "engines": {
1236− "node": ">=8"
1237− }
1238− },
1239− "node_modules/istanbul-lib-source-maps": {
1240− "version": "4.0.1",
1241− "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
1242− "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
1243− "dev": true,
1244− "dependencies": {
1245− "debug": "^4.1.1",
1246− "istanbul-lib-coverage": "^3.0.0",
1247− "source-map": "^0.6.1"
1248− },
1249− "engines": {
1250− "node": ">=10"
1251− }
1252− },
1253329 "node_modules/istanbul-reports": {
1254330 "version": "3.1.5",
1255331 "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
@@ -1263,67 +339,21 @@
1263339 "node": ">=8"
1264340 }
1265341 },
1266− "node_modules/js-tokens": {
1267− "version": "4.0.0",
1268− "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1269− "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1270− "dev": true
1271− },
1272− "node_modules/js-yaml": {
1273− "version": "3.14.1",
1274− "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
1275− "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
1276− "dev": true,
1277− "dependencies": {
1278− "argparse": "^1.0.7",
1279− "esprima": "^4.0.0"
1280− },
1281− "bin": {
1282− "js-yaml": "bin/js-yaml.js"
1283− }
1284− },
1285− "node_modules/jsesc": {
1286− "version": "2.5.2",
1287− "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1288− "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1289− "dev": true,
1290− "bin": {
1291− "jsesc": "bin/jsesc"
1292− },
1293− "engines": {
1294− "node": ">=4"
1295− }
1296− },
1297− "node_modules/json5": {
1298− "version": "2.2.1",
1299− "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
1300− "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
1301− "dev": true,
1302− "bin": {
1303− "json5": "lib/cli.js"
1304− },
1305− "engines": {
1306− "node": ">=6"
1307− }
1308− },
1309342 "node_modules/locate-path": {
1310− "version": "5.0.0",
1311− "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
1312− "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
343+ "version": "6.0.0",
344+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
345+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
1313346 "dev": true,
1314347 "dependencies": {
1315− "p-locate": "^4.1.0"
348+ "p-locate": "^5.0.0"
1316349 },
1317350 "engines": {
1318− "node": ">=8"
351+ "node": ">=10"
352+ },
353+ "funding": {
354+ "url": "https://github.com/sponsors/sindresorhus"
1319355 }
1320356 },
1321− "node_modules/lodash.flattendeep": {
1322− "version": "4.4.0",
1323− "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
1324− "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
1325− "dev": true
1326− },
1327357 "node_modules/make-dir": {
1328358 "version": "3.1.0",
1329359 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -1351,71 +381,6 @@
1351381 "node": "*"
1352382 }
1353383 },
1354− "node_modules/ms": {
1355− "version": "2.1.2",
1356− "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1357− "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1358− "dev": true
1359− },
1360− "node_modules/node-preload": {
1361− "version": "0.2.1",
1362− "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz",
1363− "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==",
1364− "dev": true,
1365− "dependencies": {
1366− "process-on-spawn": "^1.0.0"
1367− },
1368− "engines": {
1369− "node": ">=8"
1370− }
1371− },
1372− "node_modules/node-releases": {
1373− "version": "2.0.6",
1374− "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
1375− "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
1376− "dev": true
1377− },
1378− "node_modules/nyc": {
1379− "version": "15.1.0",
1380− "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
1381− "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==",
1382− "dev": true,
1383− "dependencies": {
1384− "@istanbuljs/load-nyc-config": "^1.0.0",
1385− "@istanbuljs/schema": "^0.1.2",
1386− "caching-transform": "^4.0.0",
1387− "convert-source-map": "^1.7.0",
1388− "decamelize": "^1.2.0",
1389− "find-cache-dir": "^3.2.0",
1390− "find-up": "^4.1.0",
1391− "foreground-child": "^2.0.0",
1392− "get-package-type": "^0.1.0",
1393− "glob": "^7.1.6",
1394− "istanbul-lib-coverage": "^3.0.0",
1395− "istanbul-lib-hook": "^3.0.0",
1396− "istanbul-lib-instrument": "^4.0.0",
1397− "istanbul-lib-processinfo": "^2.0.2",
1398− "istanbul-lib-report": "^3.0.0",
1399− "istanbul-lib-source-maps": "^4.0.0",
1400− "istanbul-reports": "^3.0.2",
1401− "make-dir": "^3.0.0",
1402− "node-preload": "^0.2.1",
1403− "p-map": "^3.0.0",
1404− "process-on-spawn": "^1.0.0",
1405− "resolve-from": "^5.0.0",
1406− "rimraf": "^3.0.0",
1407− "signal-exit": "^3.0.2",
1408− "spawn-wrap": "^2.0.0",
1409− "test-exclude": "^6.0.0",
1410− "yargs": "^15.0.2"
1411− },
1412− "bin": {
1413− "nyc": "bin/nyc.js"
1414− },
1415− "engines": {
1416− "node": ">=8.9"
1417− }
1418− },
1419384 "node_modules/once": {
1420385 "version": "1.4.0",
1421386 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -1426,66 +391,33 @@
1426391 }
1427392 },
1428393 "node_modules/p-limit": {
1429− "version": "2.3.0",
1430− "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
1431− "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
394+ "version": "3.1.0",
395+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
396+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
1432397 "dev": true,
1433398 "dependencies": {
1434− "p-try": "^2.0.0"
399+ "yocto-queue": "^0.1.0"
1435400 },
1436401 "engines": {
1437− "node": ">=6"
402+ "node": ">=10"
1438403 },
1439404 "funding": {
1440405 "url": "https://github.com/sponsors/sindresorhus"
1441406 }
1442407 },
1443408 "node_modules/p-locate": {
1444− "version": "4.1.0",
1445− "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
1446− "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
1447− "dev": true,
1448− "dependencies": {
1449− "p-limit": "^2.2.0"
1450− },
1451− "engines": {
1452− "node": ">=8"
1453− }
1454− },
1455− "node_modules/p-map": {
1456− "version": "3.0.0",
1457− "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
1458− "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
409+ "version": "5.0.0",
410+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
411+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
1459412 "dev": true,
1460413 "dependencies": {
1461− "aggregate-error": "^3.0.0"
414+ "p-limit": "^3.0.2"
1462415 },
1463416 "engines": {
1464− "node": ">=8"
1465− }
1466− },
1467− "node_modules/p-try": {
1468− "version": "2.2.0",
1469− "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
1470− "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
1471− "dev": true,
1472− "engines": {
1473− "node": ">=6"
1474− }
1475− },
1476− "node_modules/package-hash": {
1477− "version": "4.0.0",
1478− "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz",
1479− "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==",
1480− "dev": true,
1481− "dependencies": {
1482− "graceful-fs": "^4.1.15",
1483− "hasha": "^5.0.0",
1484− "lodash.flattendeep": "^4.4.0",
1485− "release-zalgo": "^1.0.0"
417+ "node": ">=10"
1486418 },
1487− "engines": {
1488− "node": ">=8"
419+ "funding": {
420+ "url": "https://github.com/sponsors/sindresorhus"
1489421 }
1490422 },
1491423 "node_modules/path-exists": {
@@ -1512,49 +444,7 @@
1512444 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1513445 "dev": true,
1514446 "engines": {
1515− "node": ">=8"
1516− }
1517− },
1518− "node_modules/picocolors": {
1519− "version": "1.0.0",
1520− "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1521− "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1522− "dev": true
1523− },
1524− "node_modules/pkg-dir": {
1525− "version": "4.2.0",
1526− "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
1527− "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
1528− "dev": true,
1529− "dependencies": {
1530− "find-up": "^4.0.0"
1531− },
1532− "engines": {
1533− "node": ">=8"
1534− }
1535− },
1536− "node_modules/process-on-spawn": {
1537− "version": "1.0.0",
1538− "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz",
1539− "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==",
1540− "dev": true,
1541− "dependencies": {
1542− "fromentries": "^1.2.0"
1543− },
1544− "engines": {
1545− "node": ">=8"
1546− }
1547− },
1548− "node_modules/release-zalgo": {
1549− "version": "1.0.0",
1550− "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
1551− "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==",
1552− "dev": true,
1553− "dependencies": {
1554− "es6-error": "^4.0.1"
1555− },
1556− "engines": {
1557− "node": ">=4"
447+ "node": ">=8"
1558448 }
1559449 },
1560450 "node_modules/require-directory": {
@@ -1566,26 +456,13 @@
1566456 "node": ">=0.10.0"
1567457 }
1568458 },
1569− "node_modules/require-main-filename": {
1570− "version": "2.0.0",
1571− "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
1572− "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
1573− "dev": true
1574− },
1575− "node_modules/resolve-from": {
1576− "version": "5.0.0",
1577− "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
1578− "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
1579− "dev": true,
1580− "engines": {
1581− "node": ">=8"
1582− }
1583− },
1584459 "node_modules/rimraf": {
1585460 "version": "3.0.2",
1586461 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1587462 "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
463+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
1588464 "dev": true,
465+ "license": "ISC",
1589466 "dependencies": {
1590467 "glob": "^7.1.3"
1591468 },
@@ -1596,27 +473,16 @@
1596473 "url": "https://github.com/sponsors/isaacs"
1597474 }
1598475 },
1599− "node_modules/safe-buffer": {
1600− "version": "5.1.2",
1601− "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1602− "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1603− "dev": true
1604− },
1605476 "node_modules/semver": {
1606− "version": "6.3.0",
1607− "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1608− "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
477+ "version": "6.3.1",
478+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
479+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1609480 "dev": true,
481+ "license": "ISC",
1610482 "bin": {
1611483 "semver": "bin/semver.js"
1612484 }
1613485 },
1614− "node_modules/set-blocking": {
1615− "version": "2.0.0",
1616− "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
1617− "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
1618− "dev": true
1619− },
1620486 "node_modules/shebang-command": {
1621487 "version": "2.0.0",
1622488 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -1644,38 +510,6 @@
1644510 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
1645511 "dev": true
1646512 },
1647− "node_modules/source-map": {
1648− "version": "0.6.1",
1649− "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1650− "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1651− "dev": true,
1652− "engines": {
1653− "node": ">=0.10.0"
1654− }
1655− },
1656− "node_modules/spawn-wrap": {
1657− "version": "2.0.0",
1658− "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz",
1659− "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==",
1660− "dev": true,
1661− "dependencies": {
1662− "foreground-child": "^2.0.0",
1663− "is-windows": "^1.0.2",
1664− "make-dir": "^3.0.0",
1665− "rimraf": "^3.0.0",
1666− "signal-exit": "^3.0.2",
1667− "which": "^2.0.1"
1668− },
1669− "engines": {
1670− "node": ">=8"
1671− }
1672− },
1673− "node_modules/sprintf-js": {
1674− "version": "1.0.3",
1675− "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1676− "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
1677− "dev": true
1678− },
1679513 "node_modules/string-width": {
1680514 "version": "4.2.3",
1681515 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -1702,25 +536,16 @@
1702536 "node": ">=8"
1703537 }
1704538 },
1705− "node_modules/strip-bom": {
1706− "version": "4.0.0",
1707− "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
1708− "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
1709− "dev": true,
1710− "engines": {
1711− "node": ">=8"
1712− }
1713− },
1714539 "node_modules/supports-color": {
1715− "version": "5.5.0",
1716− "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1717− "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
540+ "version": "7.2.0",
541+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
542+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1718543 "dev": true,
1719544 "dependencies": {
1720− "has-flag": "^3.0.0"
545+ "has-flag": "^4.0.0"
1721546 },
1722547 "engines": {
1723− "node": ">=4"
548+ "node": ">=8"
1724549 }
1725550 },
1726551 "node_modules/test-exclude": {
@@ -1737,68 +562,6 @@
1737562 "node": ">=8"
1738563 }
1739564 },
1740− "node_modules/to-fast-properties": {
1741− "version": "2.0.0",
1742− "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1743− "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
1744− "dev": true,
1745− "engines": {
1746− "node": ">=4"
1747− }
1748− },
1749− "node_modules/type-fest": {
1750− "version": "0.8.1",
1751− "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
1752− "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
1753− "dev": true,
1754− "engines": {
1755− "node": ">=8"
1756− }
1757− },
1758− "node_modules/typedarray-to-buffer": {
1759− "version": "3.1.5",
1760− "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
1761− "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
1762− "dev": true,
1763− "dependencies": {
1764− "is-typedarray": "^1.0.0"
1765− }
1766− },
1767− "node_modules/update-browserslist-db": {
1768− "version": "1.0.5",
1769− "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
1770− "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
1771− "dev": true,
1772− "funding": [
1773− {
1774− "type": "opencollective",
1775− "url": "https://opencollective.com/browserslist"
1776− },
1777− {
1778− "type": "tidelift",
1779− "url": "https://tidelift.com/funding/github/npm/browserslist"
1780− }
1781− ],
1782− "dependencies": {
1783− "escalade": "^3.1.1",
1784− "picocolors": "^1.0.0"
1785− },
1786− "bin": {
1787− "browserslist-lint": "cli.js"
1788− },
1789− "peerDependencies": {
1790− "browserslist": ">= 4.21.0"
1791− }
1792− },
1793− "node_modules/uuid": {
1794− "version": "8.3.2",
1795− "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
1796− "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
1797− "dev": true,
1798− "bin": {
1799− "uuid": "dist/bin/uuid"
1800− }
1801− },
1802565 "node_modules/v8-to-istanbul": {
1803566 "version": "9.0.1",
1804567 "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
@@ -1828,16 +591,10 @@
1828591 "node": ">= 8"
1829592 }
1830593 },
1831− "node_modules/which-module": {
1832− "version": "2.0.0",
1833− "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
1834− "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
1835− "dev": true
1836− },
1837594 "node_modules/wrap-ansi": {
1838− "version": "6.2.0",
1839− "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
1840− "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
595+ "version": "7.0.0",
596+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
597+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
1841598 "dev": true,
1842599 "dependencies": {
1843600 "ansi-styles": "^4.0.0",
@@ -1845,99 +602,52 @@
1845602 "strip-ansi": "^6.0.0"
1846603 },
1847604 "engines": {
1848− "node": ">=8"
1849− }
1850− },
1851− "node_modules/wrap-ansi/node_modules/ansi-styles": {
1852− "version": "4.3.0",
1853− "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1854− "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1855− "dev": true,
1856− "dependencies": {
1857− "color-convert": "^2.0.1"
1858− },
1859− "engines": {
1860− "node": ">=8"
605+ "node": ">=10"
1861606 },
1862607 "funding": {
1863− "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1864− }
1865− },
1866− "node_modules/wrap-ansi/node_modules/color-convert": {
1867− "version": "2.0.1",
1868− "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1869− "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1870− "dev": true,
1871− "dependencies": {
1872− "color-name": "~1.1.4"
1873− },
1874− "engines": {
1875− "node": ">=7.0.0"
608+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1876609 }
1877610 },
1878− "node_modules/wrap-ansi/node_modules/color-name": {
1879− "version": "1.1.4",
1880− "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1881− "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1882− "dev": true
1883− },
1884611 "node_modules/wrappy": {
1885612 "version": "1.0.2",
1886613 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1887614 "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1888615 "dev": true
1889616 },
1890− "node_modules/write-file-atomic": {
1891− "version": "3.0.3",
1892− "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
1893− "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
617+ "node_modules/y18n": {
618+ "version": "5.0.8",
619+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
620+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
1894621 "dev": true,
1895− "dependencies": {
1896− "imurmurhash": "^0.1.4",
1897− "is-typedarray": "^1.0.0",
1898− "signal-exit": "^3.0.2",
1899− "typedarray-to-buffer": "^3.1.5"
622+ "engines": {
623+ "node": ">=10"
1900624 }
1901625 },
1902− "node_modules/y18n": {
1903− "version": "4.0.3",
1904− "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
1905− "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
1906− "dev": true
1907− },
1908626 "node_modules/yargs": {
1909− "version": "15.4.1",
1910− "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
1911− "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
627+ "version": "16.2.0",
628+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
629+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
1912630 "dev": true,
1913631 "dependencies": {
1914− "cliui": "^6.0.0",
1915− "decamelize": "^1.2.0",
1916− "find-up": "^4.1.0",
1917− "get-caller-file": "^2.0.1",
632+ "cliui": "^7.0.2",
633+ "escalade": "^3.1.1",
634+ "get-caller-file": "^2.0.5",
1918635 "require-directory": "^2.1.1",
1919− "require-main-filename": "^2.0.0",
1920− "set-blocking": "^2.0.0",
1921636 "string-width": "^4.2.0",
1922− "which-module": "^2.0.0",
1923− "y18n": "^4.0.0",
1924− "yargs-parser": "^18.1.2"
637+ "y18n": "^5.0.5",
638+ "yargs-parser": "^20.2.2"
1925639 },
1926640 "engines": {
1927− "node": ">=8"
641+ "node": ">=10"
1928642 }
1929643 },
1930644 "node_modules/yargs-parser": {
1931− "version": "18.1.3",
1932− "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
1933− "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
645+ "version": "20.2.9",
646+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
647+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
1934648 "dev": true,
1935− "dependencies": {
1936− "camelcase": "^5.0.0",
1937− "decamelize": "^1.2.0"
1938− },
1939649 "engines": {
1940− "node": ">=6"
650+ "node": ">=10"
1941651 }
1942652 },
1943653 "node_modules/yocto-queue": {
@@ -1954,284 +664,24 @@
1954664 }
1955665 },
1956666 "dependencies": {
1957− "@ampproject/remapping": {
1958− "version": "2.2.0",
1959− "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
1960− "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
1961− "dev": true,
1962− "requires": {
1963− "@jridgewell/gen-mapping": "^0.1.0",
1964− "@jridgewell/trace-mapping": "^0.3.9"
1965− }
1966− },
1967− "@babel/code-frame": {
1968− "version": "7.18.6",
1969− "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
1970− "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
1971− "dev": true,
1972− "requires": {
1973− "@babel/highlight": "^7.18.6"
1974− }
1975− },
1976− "@babel/compat-data": {
1977− "version": "7.18.8",
1978− "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz",
1979− "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==",
1980− "dev": true
1981− },
1982− "@babel/core": {
1983− "version": "7.18.9",
1984− "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz",
1985− "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==",
1986− "dev": true,
1987− "requires": {
1988− "@ampproject/remapping": "^2.1.0",
1989− "@babel/code-frame": "^7.18.6",
1990− "@babel/generator": "^7.18.9",
1991− "@babel/helper-compilation-targets": "^7.18.9",
1992− "@babel/helper-module-transforms": "^7.18.9",
1993− "@babel/helpers": "^7.18.9",
1994− "@babel/parser": "^7.18.9",
1995− "@babel/template": "^7.18.6",
1996− "@babel/traverse": "^7.18.9",
1997− "@babel/types": "^7.18.9",
1998− "convert-source-map": "^1.7.0",
1999− "debug": "^4.1.0",
2000− "gensync": "^1.0.0-beta.2",
2001− "json5": "^2.2.1",
2002− "semver": "^6.3.0"
2003− }
2004− },
2005− "@babel/generator": {
2006− "version": "7.18.9",
2007− "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz",
2008− "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==",
2009− "dev": true,
2010− "requires": {
2011− "@babel/types": "^7.18.9",
2012− "@jridgewell/gen-mapping": "^0.3.2",
2013− "jsesc": "^2.5.1"
2014− },
2015− "dependencies": {
2016− "@jridgewell/gen-mapping": {
2017− "version": "0.3.2",
2018− "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
2019− "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
2020− "dev": true,
2021− "requires": {
2022− "@jridgewell/set-array": "^1.0.1",
2023− "@jridgewell/sourcemap-codec": "^1.4.10",
2024− "@jridgewell/trace-mapping": "^0.3.9"
2025− }
2026− }
2027− }
2028− },
2029− "@babel/helper-compilation-targets": {
2030− "version": "7.18.9",
2031− "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz",
2032− "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==",
2033− "dev": true,
2034− "requires": {
2035− "@babel/compat-data": "^7.18.8",
2036− "@babel/helper-validator-option": "^7.18.6",
2037− "browserslist": "^4.20.2",
2038− "semver": "^6.3.0"
2039− }
2040− },
2041− "@babel/helper-environment-visitor": {
2042− "version": "7.18.9",
2043− "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
2044− "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
2045− "dev": true
2046− },
2047− "@babel/helper-function-name": {
2048− "version": "7.18.9",
2049− "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz",
2050− "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==",
2051− "dev": true,
2052− "requires": {
2053− "@babel/template": "^7.18.6",
2054− "@babel/types": "^7.18.9"
2055− }
2056− },
2057− "@babel/helper-hoist-variables": {
2058− "version": "7.18.6",
2059− "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
2060− "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
2061− "dev": true,
2062− "requires": {
2063− "@babel/types": "^7.18.6"
2064− }
2065− },
2066− "@babel/helper-module-imports": {
2067− "version": "7.18.6",
2068− "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
2069− "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
2070− "dev": true,
2071− "requires": {
2072− "@babel/types": "^7.18.6"
2073− }
2074− },
2075− "@babel/helper-module-transforms": {
2076− "version": "7.18.9",
2077− "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz",
2078− "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==",
2079− "dev": true,
2080− "requires": {
2081− "@babel/helper-environment-visitor": "^7.18.9",
2082− "@babel/helper-module-imports": "^7.18.6",
2083− "@babel/helper-simple-access": "^7.18.6",
2084− "@babel/helper-split-export-declaration": "^7.18.6",
2085− "@babel/helper-validator-identifier": "^7.18.6",
2086− "@babel/template": "^7.18.6",
2087− "@babel/traverse": "^7.18.9",
2088− "@babel/types": "^7.18.9"
2089− }
2090− },
2091− "@babel/helper-simple-access": {
2092− "version": "7.18.6",
2093− "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
2094− "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
2095− "dev": true,
2096− "requires": {
2097− "@babel/types": "^7.18.6"
2098− }
2099− },
2100− "@babel/helper-split-export-declaration": {
2101− "version": "7.18.6",
2102− "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
2103− "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
2104− "dev": true,
2105− "requires": {
2106− "@babel/types": "^7.18.6"
2107− }
2108− },
2109− "@babel/helper-validator-identifier": {
2110− "version": "7.18.6",
2111− "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
2112− "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
2113− "dev": true
2114− },
2115− "@babel/helper-validator-option": {
2116− "version": "7.18.6",
2117− "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
2118− "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
2119− "dev": true
2120− },
2121− "@babel/helpers": {
2122− "version": "7.18.9",
2123− "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz",
2124− "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==",
2125− "dev": true,
2126− "requires": {
2127− "@babel/template": "^7.18.6",
2128− "@babel/traverse": "^7.18.9",
2129− "@babel/types": "^7.18.9"
2130− }
2131− },
2132− "@babel/highlight": {
2133− "version": "7.18.6",
2134− "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
2135− "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
2136− "dev": true,
2137− "requires": {
2138− "@babel/helper-validator-identifier": "^7.18.6",
2139− "chalk": "^2.0.0",
2140− "js-tokens": "^4.0.0"
2141− }
2142− },
2143− "@babel/parser": {
2144− "version": "7.18.9",
2145− "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
2146− "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==",
2147− "dev": true
2148− },
2149− "@babel/template": {
2150− "version": "7.18.6",
2151− "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
2152− "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
2153− "dev": true,
2154− "requires": {
2155− "@babel/code-frame": "^7.18.6",
2156− "@babel/parser": "^7.18.6",
2157− "@babel/types": "^7.18.6"
2158− }
2159− },
2160− "@babel/traverse": {
2161− "version": "7.18.9",
2162− "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz",
2163− "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==",
2164− "dev": true,
2165− "requires": {
2166− "@babel/code-frame": "^7.18.6",
2167− "@babel/generator": "^7.18.9",
2168− "@babel/helper-environment-visitor": "^7.18.9",
2169− "@babel/helper-function-name": "^7.18.9",
2170− "@babel/helper-hoist-variables": "^7.18.6",
2171− "@babel/helper-split-export-declaration": "^7.18.6",
2172− "@babel/parser": "^7.18.9",
2173− "@babel/types": "^7.18.9",
2174− "debug": "^4.1.0",
2175− "globals": "^11.1.0"
2176− }
2177− },
2178− "@babel/types": {
2179− "version": "7.18.9",
2180− "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz",
2181− "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==",
2182− "dev": true,
2183− "requires": {
2184− "@babel/helper-validator-identifier": "^7.18.6",
2185− "to-fast-properties": "^2.0.0"
2186− }
2187− },
2188667 "@bcoe/v8-coverage": {
2189668 "version": "0.2.3",
2190669 "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
2191670 "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
2192671 "dev": true
2193672 },
2194− "@istanbuljs/load-nyc-config": {
2195− "version": "1.1.0",
2196− "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
2197− "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
2198− "dev": true,
2199− "requires": {
2200− "camelcase": "^5.3.1",
2201− "find-up": "^4.1.0",
2202− "get-package-type": "^0.1.0",
2203− "js-yaml": "^3.13.1",
2204− "resolve-from": "^5.0.0"
2205− }
2206− },
2207673 "@istanbuljs/schema": {
2208674 "version": "0.1.3",
2209675 "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
2210676 "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
2211677 "dev": true
2212678 },
2213− "@jridgewell/gen-mapping": {
2214− "version": "0.1.1",
2215− "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
2216− "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
2217− "dev": true,
2218− "requires": {
2219− "@jridgewell/set-array": "^1.0.0",
2220− "@jridgewell/sourcemap-codec": "^1.4.10"
2221− }
2222− },
2223679 "@jridgewell/resolve-uri": {
2224680 "version": "3.1.0",
2225681 "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
2226682 "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
2227683 "dev": true
2228684 },
2229− "@jridgewell/set-array": {
2230− "version": "1.1.2",
2231− "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
2232− "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
2233− "dev": true
2234− },
2235685 "@jridgewell/sourcemap-codec": {
2236686 "version": "1.4.14",
2237687 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
@@ -2239,13 +689,13 @@
2239689 "dev": true
2240690 },
2241691 "@jridgewell/trace-mapping": {
2242− "version": "0.3.14",
2243− "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
2244− "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
692+ "version": "0.3.17",
693+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
694+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
2245695 "dev": true,
2246696 "requires": {
2247− "@jridgewell/resolve-uri": "^3.0.3",
2248− "@jridgewell/sourcemap-codec": "^1.4.10"
697+ "@jridgewell/resolve-uri": "3.1.0",
698+ "@jridgewell/sourcemap-codec": "1.4.14"
2249699 }
2250700 },
2251701 "@types/istanbul-lib-coverage": {
@@ -2254,16 +704,6 @@
2254704 "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
2255705 "dev": true
2256706 },
2257− "aggregate-error": {
2258− "version": "3.1.0",
2259− "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
2260− "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
2261− "dev": true,
2262− "requires": {
2263− "clean-stack": "^2.0.0",
2264− "indent-string": "^4.0.0"
2265− }
2266− },
2267707 "ansi-regex": {
2268708 "version": "5.0.1",
2269709 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -2271,36 +711,12 @@
2271711 "dev": true
2272712 },
2273713 "ansi-styles": {
2274− "version": "3.2.1",
2275− "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2276− "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2277− "dev": true,
2278− "requires": {
2279− "color-convert": "^1.9.0"
2280− }
2281− },
2282− "append-transform": {
2283− "version": "2.0.0",
2284− "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz",
2285− "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==",
2286− "dev": true,
2287− "requires": {
2288− "default-require-extensions": "^3.0.0"
2289− }
2290− },
2291− "archy": {
2292− "version": "1.0.0",
2293− "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
2294− "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
2295− "dev": true
2296− },
2297− "argparse": {
2298− "version": "1.0.10",
2299− "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
2300− "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
714+ "version": "4.3.0",
715+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
716+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2301717 "dev": true,
2302718 "requires": {
2303− "sprintf-js": "~1.0.2"
719+ "color-convert": "^2.0.1"
2304720 }
2305721 },
2306722 "balanced-match": {
@@ -2309,11 +725,6 @@
2309725 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
2310726 "dev": true
2311727 },
2312− "big-integer": {
2313− "version": "1.6.51",
2314− "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
2315− "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
2316− },
2317728 "brace-expansion": {
2318729 "version": "1.1.11",
2319730 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2324,18 +735,6 @@
2324735 "concat-map": "0.0.1"
2325736 }
2326737 },
2327− "browserslist": {
2328− "version": "4.21.2",
2329− "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz",
2330− "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==",
2331− "dev": true,
2332− "requires": {
2333− "caniuse-lite": "^1.0.30001366",
2334− "electron-to-chromium": "^1.4.188",
2335− "node-releases": "^2.0.6",
2336− "update-browserslist-db": "^1.0.4"
2337− }
2338− },
2339738 "c8": {
2340739 "version": "7.12.0",
2341740 "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz",
@@ -2350,195 +749,36 @@
2350749 "istanbul-lib-report": "^3.0.0",
2351750 "istanbul-reports": "^3.1.4",
2352751 "rimraf": "^3.0.2",
2353− "test-exclude": "^6.0.0",
2354− "v8-to-istanbul": "^9.0.0",
2355− "yargs": "^16.2.0",
2356− "yargs-parser": "^20.2.9"
2357− },
2358− "dependencies": {
2359− "ansi-styles": {
2360− "version": "4.3.0",
2361− "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2362− "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2363− "dev": true,
2364− "requires": {
2365− "color-convert": "^2.0.1"
2366− }
2367− },
2368− "cliui": {
2369− "version": "7.0.4",
2370− "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
2371− "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
2372− "dev": true,
2373− "requires": {
2374− "string-width": "^4.2.0",
2375− "strip-ansi": "^6.0.0",
2376− "wrap-ansi": "^7.0.0"
2377− }
2378− },
2379− "color-convert": {
2380− "version": "2.0.1",
2381− "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
2382− "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
2383− "dev": true,
2384− "requires": {
2385− "color-name": "~1.1.4"
2386− }
2387− },
2388− "color-name": {
2389− "version": "1.1.4",
2390− "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2391− "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2392− "dev": true
2393− },
2394− "find-up": {
2395− "version": "5.0.0",
2396− "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
2397− "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
2398− "dev": true,
2399− "requires": {
2400− "locate-path": "^6.0.0",
2401− "path-exists": "^4.0.0"
2402− }
2403− },
2404− "locate-path": {
2405− "version": "6.0.0",
2406− "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
2407− "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
2408− "dev": true,
2409− "requires": {
2410− "p-locate": "^5.0.0"
2411− }
2412− },
2413− "p-limit": {
2414− "version": "3.1.0",
2415− "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
2416− "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
2417− "dev": true,
2418− "requires": {
2419− "yocto-queue": "^0.1.0"
2420− }
2421− },
2422− "p-locate": {
2423− "version": "5.0.0",
2424− "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
2425− "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
2426− "dev": true,
2427− "requires": {
2428− "p-limit": "^3.0.2"
2429− }
2430− },
2431− "wrap-ansi": {
2432− "version": "7.0.0",
2433− "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2434− "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2435− "dev": true,
2436− "requires": {
2437− "ansi-styles": "^4.0.0",
2438− "string-width": "^4.1.0",
2439− "strip-ansi": "^6.0.0"
2440− }
2441− },
2442− "y18n": {
2443− "version": "5.0.8",
2444− "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
2445− "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
2446− "dev": true
2447− },
2448− "yargs": {
2449− "version": "16.2.0",
2450− "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
2451− "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
2452− "dev": true,
2453− "requires": {
2454− "cliui": "^7.0.2",
2455− "escalade": "^3.1.1",
2456− "get-caller-file": "^2.0.5",
2457− "require-directory": "^2.1.1",
2458− "string-width": "^4.2.0",
2459− "y18n": "^5.0.5",
2460− "yargs-parser": "^20.2.2"
2461− }
2462− },
2463− "yargs-parser": {
2464− "version": "20.2.9",
2465− "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
2466− "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
2467− "dev": true
2468− }
2469− }
2470− },
2471− "caching-transform": {
2472− "version": "4.0.0",
2473− "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz",
2474− "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==",
2475− "dev": true,
2476− "requires": {
2477− "hasha": "^5.0.0",
2478− "make-dir": "^3.0.0",
2479− "package-hash": "^4.0.0",
2480− "write-file-atomic": "^3.0.0"
2481− }
2482− },
2483− "camelcase": {
2484− "version": "5.3.1",
2485− "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
2486− "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
2487− "dev": true
2488− },
2489− "caniuse-lite": {
2490− "version": "1.0.30001368",
2491− "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz",
2492− "integrity": "sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ==",
2493− "dev": true
2494− },
2495− "chalk": {
2496− "version": "2.4.2",
2497− "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2498− "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
2499− "dev": true,
2500− "requires": {
2501− "ansi-styles": "^3.2.1",
2502− "escape-string-regexp": "^1.0.5",
2503− "supports-color": "^5.3.0"
752+ "test-exclude": "^6.0.0",
753+ "v8-to-istanbul": "^9.0.0",
754+ "yargs": "^16.2.0",
755+ "yargs-parser": "^20.2.9"
2504756 }
2505757 },
2506− "clean-stack": {
2507− "version": "2.2.0",
2508− "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
2509− "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
2510− "dev": true
2511− },
2512758 "cliui": {
2513− "version": "6.0.0",
2514− "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
2515− "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
759+ "version": "7.0.4",
760+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
761+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
2516762 "dev": true,
2517763 "requires": {
2518764 "string-width": "^4.2.0",
2519765 "strip-ansi": "^6.0.0",
2520− "wrap-ansi": "^6.2.0"
766+ "wrap-ansi": "^7.0.0"
2521767 }
2522768 },
2523769 "color-convert": {
2524− "version": "1.9.3",
2525− "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2526− "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
770+ "version": "2.0.1",
771+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
772+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
2527773 "dev": true,
2528774 "requires": {
2529− "color-name": "1.1.3"
775+ "color-name": "~1.1.4"
2530776 }
2531777 },
2532778 "color-name": {
2533− "version": "1.1.3",
2534− "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
2535− "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
2536− "dev": true
2537− },
2538− "commondir": {
2539− "version": "1.0.1",
2540− "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
2541− "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
779+ "version": "1.1.4",
780+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
781+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2542782 "dev": true
2543783 },
2544784 "concat-map": {
@@ -2548,18 +788,15 @@
2548788 "dev": true
2549789 },
2550790 "convert-source-map": {
2551− "version": "1.8.0",
2552− "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
2553− "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
2554− "dev": true,
2555− "requires": {
2556− "safe-buffer": "~5.1.1"
2557− }
791+ "version": "1.9.0",
792+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
793+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
794+ "dev": true
2558795 },
2559796 "cross-spawn": {
2560− "version": "7.0.3",
2561− "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
2562− "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
797+ "version": "7.0.6",
798+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
799+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
2563800 "dev": true,
2564801 "requires": {
2565802 "path-key": "^3.1.0",
@@ -2567,84 +804,25 @@
2567804 "which": "^2.0.1"
2568805 }
2569806 },
2570− "debug": {
2571− "version": "4.3.4",
2572− "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
2573− "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
2574− "dev": true,
2575− "requires": {
2576− "ms": "2.1.2"
2577− }
2578− },
2579− "decamelize": {
2580− "version": "1.2.0",
2581− "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
2582− "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
2583− "dev": true
2584− },
2585− "default-require-extensions": {
2586− "version": "3.0.0",
2587− "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz",
2588− "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==",
2589− "dev": true,
2590− "requires": {
2591− "strip-bom": "^4.0.0"
2592− }
2593− },
2594− "electron-to-chromium": {
2595− "version": "1.4.196",
2596− "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.196.tgz",
2597− "integrity": "sha512-uxMa/Dt7PQsLBVXwH+t6JvpHJnrsYBaxWKi/J6HE+/nBtoHENhwBoNkgkm226/Kfxeg0z1eMQLBRPPKcDH8xWA==",
2598− "dev": true
2599− },
2600807 "emoji-regex": {
2601808 "version": "8.0.0",
2602809 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2603810 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2604811 "dev": true
2605812 },
2606− "es6-error": {
2607− "version": "4.1.1",
2608− "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
2609− "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
2610− "dev": true
2611− },
2612813 "escalade": {
2613814 "version": "3.1.1",
2614815 "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
2615816 "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
2616817 "dev": true
2617818 },
2618− "escape-string-regexp": {
2619− "version": "1.0.5",
2620− "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2621− "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
2622− "dev": true
2623− },
2624− "esprima": {
2625− "version": "4.0.1",
2626− "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
2627− "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
2628− "dev": true
2629− },
2630− "find-cache-dir": {
2631− "version": "3.3.2",
2632− "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
2633− "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
2634− "dev": true,
2635− "requires": {
2636− "commondir": "^1.0.1",
2637− "make-dir": "^3.0.2",
2638− "pkg-dir": "^4.1.0"
2639− }
2640− },
2641819 "find-up": {
2642− "version": "4.1.0",
2643− "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
2644− "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
820+ "version": "5.0.0",
821+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
822+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
2645823 "dev": true,
2646824 "requires": {
2647− "locate-path": "^5.0.0",
825+ "locate-path": "^6.0.0",
2648826 "path-exists": "^4.0.0"
2649827 }
2650828 },
@@ -2658,36 +836,18 @@
2658836 "signal-exit": "^3.0.2"
2659837 }
2660838 },
2661− "fromentries": {
2662− "version": "1.3.2",
2663− "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz",
2664− "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==",
2665− "dev": true
2666− },
2667839 "fs.realpath": {
2668840 "version": "1.0.0",
2669841 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2670842 "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
2671843 "dev": true
2672844 },
2673− "gensync": {
2674− "version": "1.0.0-beta.2",
2675− "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
2676− "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
2677− "dev": true
2678− },
2679845 "get-caller-file": {
2680846 "version": "2.0.5",
2681847 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
2682848 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
2683849 "dev": true
2684850 },
2685− "get-package-type": {
2686− "version": "0.1.0",
2687− "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
2688− "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
2689− "dev": true
2690− },
2691851 "glob": {
2692852 "version": "7.2.3",
2693853 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -2702,52 +862,18 @@
2702862 "path-is-absolute": "^1.0.0"
2703863 }
2704864 },
2705− "globals": {
2706− "version": "11.12.0",
2707− "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
2708− "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
2709− "dev": true
2710− },
2711− "graceful-fs": {
2712− "version": "4.2.10",
2713− "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
2714− "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
2715− "dev": true
2716− },
2717865 "has-flag": {
2718− "version": "3.0.0",
2719− "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2720− "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
866+ "version": "4.0.0",
867+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
868+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2721869 "dev": true
2722870 },
2723− "hasha": {
2724− "version": "5.2.2",
2725− "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
2726− "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==",
2727− "dev": true,
2728− "requires": {
2729− "is-stream": "^2.0.0",
2730− "type-fest": "^0.8.0"
2731− }
2732− },
2733871 "html-escaper": {
2734872 "version": "2.0.2",
2735873 "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
2736874 "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
2737875 "dev": true
2738876 },
2739− "imurmurhash": {
2740− "version": "0.1.4",
2741− "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2742− "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
2743− "dev": true
2744− },
2745− "indent-string": {
2746− "version": "4.0.0",
2747− "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
2748− "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
2749− "dev": true
2750− },
2751877 "inflight": {
2752878 "version": "1.0.6",
2753879 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -2770,24 +896,6 @@
2770896 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
2771897 "dev": true
2772898 },
2773− "is-stream": {
2774− "version": "2.0.1",
2775− "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
2776− "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
2777− "dev": true
2778− },
2779− "is-typedarray": {
2780− "version": "1.0.0",
2781− "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
2782− "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
2783− "dev": true
2784− },
2785− "is-windows": {
2786− "version": "1.0.2",
2787− "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
2788− "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
2789− "dev": true
2790− },
2791899 "isexe": {
2792900 "version": "2.0.0",
2793901 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -2800,41 +908,6 @@
2800908 "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
2801909 "dev": true
2802910 },
2803− "istanbul-lib-hook": {
2804− "version": "3.0.0",
2805− "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz",
2806− "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==",
2807− "dev": true,
2808− "requires": {
2809− "append-transform": "^2.0.0"
2810− }
2811− },
2812− "istanbul-lib-instrument": {
2813− "version": "4.0.3",
2814− "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
2815− "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
2816− "dev": true,
2817− "requires": {
2818− "@babel/core": "^7.7.5",
2819− "@istanbuljs/schema": "^0.1.2",
2820− "istanbul-lib-coverage": "^3.0.0",
2821− "semver": "^6.3.0"
2822− }
2823− },
2824− "istanbul-lib-processinfo": {
2825− "version": "2.0.3",
2826− "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
2827− "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
2828− "dev": true,
2829− "requires": {
2830− "archy": "^1.0.0",
2831− "cross-spawn": "^7.0.3",
2832− "istanbul-lib-coverage": "^3.2.0",
2833− "p-map": "^3.0.0",
2834− "rimraf": "^3.0.0",
2835− "uuid": "^8.3.2"
2836− }
2837− },
2838911 "istanbul-lib-report": {
2839912 "version": "3.0.0",
2840913 "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
@@ -2844,34 +917,6 @@
2844917 "istanbul-lib-coverage": "^3.0.0",
2845918 "make-dir": "^3.0.0",
2846919 "supports-color": "^7.1.0"
2847− },
2848− "dependencies": {
2849− "has-flag": {
2850− "version": "4.0.0",
2851− "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2852− "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2853− "dev": true
2854− },
2855− "supports-color": {
2856− "version": "7.2.0",
2857− "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2858− "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2859− "dev": true,
2860− "requires": {
2861− "has-flag": "^4.0.0"
2862− }
2863− }
2864− }
2865− },
2866− "istanbul-lib-source-maps": {
2867− "version": "4.0.1",
2868− "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
2869− "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
2870− "dev": true,
2871− "requires": {
2872− "debug": "^4.1.1",
2873− "istanbul-lib-coverage": "^3.0.0",
2874− "source-map": "^0.6.1"
2875920 }
2876921 },
2877922 "istanbul-reports": {
@@ -2884,49 +929,15 @@
2884929 "istanbul-lib-report": "^3.0.0"
2885930 }
2886931 },
2887− "js-tokens": {
2888− "version": "4.0.0",
2889− "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2890− "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
2891− "dev": true
2892− },
2893− "js-yaml": {
2894− "version": "3.14.1",
2895− "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
2896− "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
2897− "dev": true,
2898− "requires": {
2899− "argparse": "^1.0.7",
2900− "esprima": "^4.0.0"
2901− }
2902− },
2903− "jsesc": {
2904− "version": "2.5.2",
2905− "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
2906− "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
2907− "dev": true
2908− },
2909− "json5": {
2910− "version": "2.2.1",
2911− "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
2912− "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
2913− "dev": true
2914− },
2915932 "locate-path": {
2916− "version": "5.0.0",
2917− "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
2918− "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
933+ "version": "6.0.0",
934+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
935+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
2919936 "dev": true,
2920937 "requires": {
2921− "p-locate": "^4.1.0"
938+ "p-locate": "^5.0.0"
2922939 }
2923940 },
2924− "lodash.flattendeep": {
2925− "version": "4.4.0",
2926− "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
2927− "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
2928− "dev": true
2929− },
2930941 "make-dir": {
2931942 "version": "3.1.0",
2932943 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -2945,62 +956,6 @@
2945956 "brace-expansion": "^1.1.7"
2946957 }
2947958 },
2948− "ms": {
2949− "version": "2.1.2",
2950− "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2951− "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
2952− "dev": true
2953− },
2954− "node-preload": {
2955− "version": "0.2.1",
2956− "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz",
2957− "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==",
2958− "dev": true,
2959− "requires": {
2960− "process-on-spawn": "^1.0.0"
2961− }
2962− },
2963− "node-releases": {
2964− "version": "2.0.6",
2965− "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
2966− "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
2967− "dev": true
2968− },
2969− "nyc": {
2970− "version": "15.1.0",
2971− "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
2972− "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==",
2973− "dev": true,
2974− "requires": {
2975− "@istanbuljs/load-nyc-config": "^1.0.0",
2976− "@istanbuljs/schema": "^0.1.2",
2977− "caching-transform": "^4.0.0",
2978− "convert-source-map": "^1.7.0",
2979− "decamelize": "^1.2.0",
2980− "find-cache-dir": "^3.2.0",
2981− "find-up": "^4.1.0",
2982− "foreground-child": "^2.0.0",
2983− "get-package-type": "^0.1.0",
2984− "glob": "^7.1.6",
2985− "istanbul-lib-coverage": "^3.0.0",
2986− "istanbul-lib-hook": "^3.0.0",
2987− "istanbul-lib-instrument": "^4.0.0",
2988− "istanbul-lib-processinfo": "^2.0.2",
2989− "istanbul-lib-report": "^3.0.0",
2990− "istanbul-lib-source-maps": "^4.0.0",
2991− "istanbul-reports": "^3.0.2",
2992− "make-dir": "^3.0.0",
2993− "node-preload": "^0.2.1",
2994− "p-map": "^3.0.0",
2995− "process-on-spawn": "^1.0.0",
2996− "resolve-from": "^5.0.0",
2997− "rimraf": "^3.0.0",
2998− "signal-exit": "^3.0.2",
2999− "spawn-wrap": "^2.0.0",
3000− "test-exclude": "^6.0.0",
3001− "yargs": "^15.0.2"
3002− }
3003− },
3004959 "once": {
3005960 "version": "1.4.0",
3006961 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -3011,48 +966,21 @@
3011966 }
3012967 },
3013968 "p-limit": {
3014− "version": "2.3.0",
3015− "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
3016− "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
969+ "version": "3.1.0",
970+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
971+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
3017972 "dev": true,
3018973 "requires": {
3019− "p-try": "^2.0.0"
974+ "yocto-queue": "^0.1.0"
3020975 }
3021976 },
3022977 "p-locate": {
3023− "version": "4.1.0",
3024− "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
3025− "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
3026− "dev": true,
3027− "requires": {
3028− "p-limit": "^2.2.0"
3029− }
3030− },
3031− "p-map": {
3032− "version": "3.0.0",
3033− "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
3034− "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
3035− "dev": true,
3036− "requires": {
3037− "aggregate-error": "^3.0.0"
3038− }
3039− },
3040− "p-try": {
3041− "version": "2.2.0",
3042− "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
3043− "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
3044− "dev": true
3045− },
3046− "package-hash": {
3047− "version": "4.0.0",
3048− "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz",
3049− "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==",
978+ "version": "5.0.0",
979+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
980+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
3050981 "dev": true,
3051982 "requires": {
3052− "graceful-fs": "^4.1.15",
3053− "hasha": "^5.0.0",
3054− "lodash.flattendeep": "^4.4.0",
3055− "release-zalgo": "^1.0.0"
983+ "p-limit": "^3.0.2"
3056984 }
3057985 },
3058986 "path-exists": {
@@ -3073,57 +1001,12 @@
30731001 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
30741002 "dev": true
30751003 },
3076− "picocolors": {
3077− "version": "1.0.0",
3078− "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
3079− "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
3080− "dev": true
3081− },
3082− "pkg-dir": {
3083− "version": "4.2.0",
3084− "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
3085− "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
3086− "dev": true,
3087− "requires": {
3088− "find-up": "^4.0.0"
3089− }
3090− },
3091− "process-on-spawn": {
3092− "version": "1.0.0",
3093− "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz",
3094− "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==",
3095− "dev": true,
3096− "requires": {
3097− "fromentries": "^1.2.0"
3098− }
3099− },
3100− "release-zalgo": {
3101− "version": "1.0.0",
3102− "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
3103− "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==",
3104− "dev": true,
3105− "requires": {
3106− "es6-error": "^4.0.1"
3107− }
3108− },
31091004 "require-directory": {
31101005 "version": "2.1.1",
31111006 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
31121007 "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
31131008 "dev": true
31141009 },
3115− "require-main-filename": {
3116− "version": "2.0.0",
3117− "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
3118− "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
3119− "dev": true
3120− },
3121− "resolve-from": {
3122− "version": "5.0.0",
3123− "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
3124− "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
3125− "dev": true
3126− },
31271010 "rimraf": {
31281011 "version": "3.0.2",
31291012 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -3133,22 +1016,10 @@
31331016 "glob": "^7.1.3"
31341017 }
31351018 },
3136− "safe-buffer": {
3137− "version": "5.1.2",
3138− "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3139− "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
3140− "dev": true
3141− },
31421019 "semver": {
3143− "version": "6.3.0",
3144− "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
3145− "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
3146− "dev": true
3147− },
3148− "set-blocking": {
3149− "version": "2.0.0",
3150− "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
3151− "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
1020+ "version": "6.3.1",
1021+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1022+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
31521023 "dev": true
31531024 },
31541025 "shebang-command": {
@@ -3172,32 +1043,6 @@
31721043 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
31731044 "dev": true
31741045 },
3175− "source-map": {
3176− "version": "0.6.1",
3177− "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3178− "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3179− "dev": true
3180− },
3181− "spawn-wrap": {
3182− "version": "2.0.0",
3183− "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz",
3184− "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==",
3185− "dev": true,
3186− "requires": {
3187− "foreground-child": "^2.0.0",
3188− "is-windows": "^1.0.2",
3189− "make-dir": "^3.0.0",
3190− "rimraf": "^3.0.0",
3191− "signal-exit": "^3.0.2",
3192− "which": "^2.0.1"
3193− }
3194− },
3195− "sprintf-js": {
3196− "version": "1.0.3",
3197− "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
3198− "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
3199− "dev": true
3200− },
32011046 "string-width": {
32021047 "version": "4.2.3",
32031048 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -3218,19 +1063,13 @@
32181063 "ansi-regex": "^5.0.1"
32191064 }
32201065 },
3221− "strip-bom": {
3222− "version": "4.0.0",
3223− "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
3224− "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
3225− "dev": true
3226− },
32271066 "supports-color": {
3228− "version": "5.5.0",
3229− "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
3230− "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1067+ "version": "7.2.0",
1068+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1069+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
32311070 "dev": true,
32321071 "requires": {
3233− "has-flag": "^3.0.0"
1072+ "has-flag": "^4.0.0"
32341073 }
32351074 },
32361075 "test-exclude": {
@@ -3244,43 +1083,6 @@
32441083 "minimatch": "^3.0.4"
32451084 }
32461085 },
3247− "to-fast-properties": {
3248− "version": "2.0.0",
3249− "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
3250− "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
3251− "dev": true
3252− },
3253− "type-fest": {
3254− "version": "0.8.1",
3255− "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
3256− "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
3257− "dev": true
3258− },
3259− "typedarray-to-buffer": {
3260− "version": "3.1.5",
3261− "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
3262− "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
3263− "dev": true,
3264− "requires": {
3265− "is-typedarray": "^1.0.0"
3266− }
3267− },
3268− "update-browserslist-db": {
3269− "version": "1.0.5",
3270− "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
3271− "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
3272− "dev": true,
3273− "requires": {
3274− "escalade": "^3.1.1",
3275− "picocolors": "^1.0.0"
3276− }
3277− },
3278− "uuid": {
3279− "version": "8.3.2",
3280− "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
3281− "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
3282− "dev": true
3283− },
32841086 "v8-to-istanbul": {
32851087 "version": "9.0.1",
32861088 "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
@@ -3301,47 +1103,15 @@
33011103 "isexe": "^2.0.0"
33021104 }
33031105 },
3304− "which-module": {
3305− "version": "2.0.0",
3306− "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
3307− "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
3308− "dev": true
3309− },
33101106 "wrap-ansi": {
3311− "version": "6.2.0",
3312− "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
3313− "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
1107+ "version": "7.0.0",
1108+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
1109+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
33141110 "dev": true,
33151111 "requires": {
33161112 "ansi-styles": "^4.0.0",
33171113 "string-width": "^4.1.0",
33181114 "strip-ansi": "^6.0.0"
3319− },
3320− "dependencies": {
3321− "ansi-styles": {
3322− "version": "4.3.0",
3323− "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
3324− "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
3325− "dev": true,
3326− "requires": {
3327− "color-convert": "^2.0.1"
3328− }
3329− },
3330− "color-convert": {
3331− "version": "2.0.1",
3332− "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
3333− "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
3334− "dev": true,
3335− "requires": {
3336− "color-name": "~1.1.4"
3337− }
3338− },
3339− "color-name": {
3340− "version": "1.1.4",
3341− "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
3342− "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
3343− "dev": true
3344− }
33451115 }
33461116 },
33471117 "wrappy": {
@@ -3350,52 +1120,32 @@
33501120 "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
33511121 "dev": true
33521122 },
3353− "write-file-atomic": {
3354− "version": "3.0.3",
3355− "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
3356− "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
3357− "dev": true,
3358− "requires": {
3359− "imurmurhash": "^0.1.4",
3360− "is-typedarray": "^1.0.0",
3361− "signal-exit": "^3.0.2",
3362− "typedarray-to-buffer": "^3.1.5"
3363− }
3364− },
33651123 "y18n": {
3366− "version": "4.0.3",
3367− "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
3368− "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
1124+ "version": "5.0.8",
1125+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
1126+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
33691127 "dev": true
33701128 },
33711129 "yargs": {
3372− "version": "15.4.1",
3373− "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
3374− "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
1130+ "version": "16.2.0",
1131+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
1132+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
33751133 "dev": true,
33761134 "requires": {
3377− "cliui": "^6.0.0",
3378− "decamelize": "^1.2.0",
3379− "find-up": "^4.1.0",
3380− "get-caller-file": "^2.0.1",
1135+ "cliui": "^7.0.2",
1136+ "escalade": "^3.1.1",
1137+ "get-caller-file": "^2.0.5",
33811138 "require-directory": "^2.1.1",
3382− "require-main-filename": "^2.0.0",
3383− "set-blocking": "^2.0.0",
33841139 "string-width": "^4.2.0",
3385− "which-module": "^2.0.0",
3386− "y18n": "^4.0.0",
3387− "yargs-parser": "^18.1.2"
1140+ "y18n": "^5.0.5",
1141+ "yargs-parser": "^20.2.2"
33881142 }
33891143 },
33901144 "yargs-parser": {
3391− "version": "18.1.3",
3392− "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
3393− "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
3394− "dev": true,
3395− "requires": {
3396− "camelcase": "^5.0.0",
3397− "decamelize": "^1.2.0"
3398− }
1145+ "version": "20.2.9",
1146+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
1147+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
1148+ "dev": true
33991149 },
34001150 "yocto-queue": {
34011151 "version": "0.1.0",
package.json+4−8
@@ -1,15 +1,11 @@
11{
22 "scripts": {
3− "test": "spago -x test.dhall test --purs-args '-g sourcemaps'",
4− "precoverage": "rimraf output && npm run test",
5− "coverage": "c8 --100 npm run test"
6− },
7− "dependencies": {
8− "big-integer": "^1.6.51"
3+ "test": "spago test",
4+ "precoverage": "npm run test",
5+ "coverage": "c8 --lines=99 --branches=75 --statements=99 npm run test"
96 },
107 "type": "module",
118 "devDependencies": {
12− "c8": "^7.12.0",
13− "rimraf": "^3.0.2"
9+ "c8": "^7.12.0"
1410 }
1511}
packages.dhalldeleted−5
@@ -1,5 +0,0 @@
1−let upstream =
2− https://github.com/purescript/package-sets/releases/download/psc-0.15.2-20220610/packages.dhall
3− sha256:348212b7c79da7d343bed71b48ed164d426f1977f92196babac49bd560b32e75
4−
5−in upstream
spago.dhalldeleted−37
@@ -1,37 +0,0 @@
1−{ name = "yoga-json"
2−, license = "MIT"
3−, repository = "https://github.com/rowtype-yoga/purescript-yoga-json.git"
4−, dependencies =
5− [ "arrays"
6− , "bifunctors"
7− , "bigints"
8− , "console"
9− , "control"
10− , "datetime"
11− , "effect"
12− , "either"
13− , "exceptions"
14− , "foldable-traversable"
15− , "foreign"
16− , "foreign-object"
17− , "identity"
18− , "integers"
19− , "js-date"
20− , "lists"
21− , "maybe"
22− , "newtype"
23− , "nullable"
24− , "numbers"
25− , "ordered-collections"
26− , "partial"
27− , "prelude"
28− , "record"
29− , "transformers"
30− , "tuples"
31− , "typelevel-prelude"
32− , "unsafe-coerce"
33− , "variant"
34− ]
35−, packages = ./packages.dhall
36−, sources = [ "src/**/*.purs" ]
37−}
spago.locknew file+1747
@@ -0,0 +1,1747 @@
1+{
2+ "workspace": {
3+ "packages": {
4+ "yoga-json": {
5+ "path": "./",
6+ "core": {
7+ "dependencies": [
8+ {
9+ "arrays": ">=7.3.0 <8.0.0"
10+ },
11+ {
12+ "bifunctors": ">=6.0.0 <7.0.0"
13+ },
14+ {
15+ "control": ">=6.0.0 <7.0.0"
16+ },
17+ {
18+ "datetime": ">=6.1.0 <7.0.0"
19+ },
20+ {
21+ "effect": ">=4.0.0 <5.0.0"
22+ },
23+ {
24+ "either": ">=6.1.0 <7.0.0"
25+ },
26+ {
27+ "exceptions": ">=6.1.0 <7.0.0"
28+ },
29+ {
30+ "foldable-traversable": ">=6.0.0 <7.0.0"
31+ },
32+ {
33+ "foreign": ">=7.0.0 <8.0.0"
34+ },
35+ {
36+ "foreign-object": ">=4.1.0 <5.0.0"
37+ },
38+ {
39+ "free": ">=7.1.0 <8.0.0"
40+ },
41+ {
42+ "identity": ">=6.0.0 <7.0.0"
43+ },
44+ {
45+ "integers": ">=6.0.0 <7.0.0"
46+ },
47+ {
48+ "js-bigints": ">=2.2.1 <3.0.0"
49+ },
50+ {
51+ "js-date": ">=8.0.0 <9.0.0"
52+ },
53+ {
54+ "lists": ">=7.0.0 <8.0.0"
55+ },
56+ {
57+ "maybe": ">=6.0.0 <7.0.0"
58+ },
59+ {
60+ "newtype": ">=5.0.0 <6.0.0"
61+ },
62+ {
63+ "nullable": ">=6.0.0 <7.0.0"
64+ },
65+ {
66+ "numbers": ">=9.0.1 <10.0.0"
67+ },
68+ {
69+ "ordered-collections": ">=3.2.0 <4.0.0"
70+ },
71+ {
72+ "partial": ">=4.0.0 <5.0.0"
73+ },
74+ {
75+ "prelude": ">=6.0.2 <7.0.0"
76+ },
77+ {
78+ "record": ">=4.0.0 <5.0.0"
79+ },
80+ {
81+ "safe-coerce": ">=2.0.0 <3.0.0"
82+ },
83+ {
84+ "strings": ">=6.0.1 <7.0.0"
85+ },
86+ {
87+ "transformers": ">=6.1.0 <7.0.0"
88+ },
89+ {
90+ "tuples": ">=7.0.0 <8.0.0"
91+ },
92+ {
93+ "typelevel-prelude": ">=7.0.0 <8.0.0"
94+ },
95+ {
96+ "unsafe-coerce": ">=6.0.0 <7.0.0"
97+ },
98+ {
99+ "variant": ">=8.0.0 <9.0.0"
100+ },
101+ {
102+ "yoga-tree": ">=1.0.0 <2.0.0"
103+ }
104+ ]
105+ },
106+ "test": {
107+ "dependencies": [
108+ "spec",
109+ "spec-discovery",
110+ "spec-node",
111+ "strings-extra"
112+ ]
113+ }
114+ }
115+ },
116+ "package_set": {
117+ "address": {
118+ "registry": "63.2.1"
119+ },
120+ "compiler": ">=0.15.15 <0.16.0",
121+ "content": {
122+ "abc-parser": "2.0.1",
123+ "ace": "9.1.0",
124+ "address-rfc2821": "0.1.1",
125+ "aff": "8.0.0",
126+ "aff-bus": "6.0.0",
127+ "aff-coroutines": "9.0.0",
128+ "aff-promise": "4.0.0",
129+ "aff-retry": "2.0.0",
130+ "affjax": "13.0.0",
131+ "affjax-node": "1.0.0",
132+ "affjax-web": "1.0.0",
133+ "ansi": "7.0.0",
134+ "apexcharts": "0.5.0",
135+ "applicative-phases": "1.0.0",
136+ "argonaut": "9.0.0",
137+ "argonaut-aeson-generic": "0.4.1",
138+ "argonaut-codecs": "9.1.0",
139+ "argonaut-core": "7.0.0",
140+ "argonaut-generic": "8.0.0",
141+ "argonaut-traversals": "10.0.0",
142+ "argparse-basic": "2.0.0",
143+ "array-builder": "0.1.2",
144+ "array-search": "0.6.0",
145+ "arraybuffer": "13.2.0",
146+ "arraybuffer-builder": "3.1.0",
147+ "arraybuffer-types": "3.0.2",
148+ "arrays": "7.3.0",
149+ "arrays-extra": "0.6.1",
150+ "arrays-zipper": "2.0.1",
151+ "ask": "1.0.0",
152+ "assert": "6.0.0",
153+ "assert-multiple": "0.4.0",
154+ "avar": "5.0.1",
155+ "b64": "0.0.8",
156+ "barbies": "1.0.1",
157+ "barlow-lens": "0.9.0",
158+ "bifunctors": "6.0.0",
159+ "bigints": "7.0.1",
160+ "bolson": "0.3.9",
161+ "bookhound": "0.1.7",
162+ "bower-json": "3.0.0",
163+ "call-by-name": "4.0.1",
164+ "canvas": "6.0.0",
165+ "canvas-action": "9.0.0",
166+ "cartesian": "1.0.6",
167+ "catenable-lists": "7.0.0",
168+ "cbor-stream": "1.3.0",
169+ "chameleon": "1.0.0",
170+ "chameleon-halogen": "1.0.3",
171+ "chameleon-react-basic": "1.1.0",
172+ "chameleon-styled": "2.5.0",
173+ "chameleon-transformers": "1.0.0",
174+ "channel": "1.0.0",
175+ "checked-exceptions": "3.1.1",
176+ "choku": "1.0.2",
177+ "classless": "0.1.1",
178+ "classless-arbitrary": "0.1.1",
179+ "classless-decode-json": "0.1.1",
180+ "classless-encode-json": "0.1.3",
181+ "classnames": "2.0.0",
182+ "codec": "6.1.0",
183+ "codec-argonaut": "10.0.0",
184+ "codec-json": "2.0.0",
185+ "colors": "7.0.1",
186+ "concur-core": "0.5.0",
187+ "concur-react": "0.5.0",
188+ "concurrent-queues": "3.0.0",
189+ "console": "6.1.0",
190+ "const": "6.0.0",
191+ "contravariant": "6.0.0",
192+ "control": "6.0.0",
193+ "convertable-options": "1.0.0",
194+ "coroutines": "7.0.0",
195+ "css": "6.0.0",
196+ "css-class-name-extractor": "0.0.4",
197+ "css-frameworks": "1.0.1",
198+ "csv-stream": "2.3.0",
199+ "data-mvc": "0.0.2",
200+ "datetime": "6.1.0",
201+ "datetime-parsing": "0.2.0",
202+ "debounce": "0.1.0",
203+ "debug": "6.0.2",
204+ "decimals": "7.1.0",
205+ "default-values": "1.0.1",
206+ "deku": "0.9.23",
207+ "deno": "0.0.5",
208+ "dissect": "1.0.0",
209+ "distributive": "6.0.0",
210+ "dodo-printer": "2.2.3",
211+ "dom-filereader": "7.0.0",
212+ "dom-indexed": "12.0.0",
213+ "dom-simple": "0.4.0",
214+ "dotenv": "4.0.3",
215+ "droplet": "0.6.0",
216+ "dts": "1.0.0",
217+ "dual-numbers": "1.0.3",
218+ "dynamic-buffer": "3.0.1",
219+ "echarts-simple": "0.0.1",
220+ "effect": "4.0.0",
221+ "either": "6.1.0",
222+ "elmish": "0.13.0",
223+ "elmish-enzyme": "0.1.1",
224+ "elmish-hooks": "0.10.3",
225+ "elmish-html": "0.9.0",
226+ "elmish-testing-library": "0.3.2",
227+ "email-validate": "7.0.0",
228+ "encoding": "0.0.9",
229+ "enums": "6.0.1",
230+ "env-names": "0.4.0",
231+ "error": "2.0.0",
232+ "eta-conversion": "0.3.2",
233+ "exceptions": "6.1.0",
234+ "exists": "6.0.0",
235+ "exitcodes": "4.0.0",
236+ "expect-inferred": "3.0.0",
237+ "ezfetch": "1.1.0",
238+ "fahrtwind": "2.0.0",
239+ "fallback": "0.1.0",
240+ "fast-vect": "1.2.0",
241+ "fetch": "4.1.0",
242+ "fetch-argonaut": "1.0.1",
243+ "fetch-core": "5.1.0",
244+ "fetch-yoga-json": "1.1.0",
245+ "ffi-simple": "0.5.1",
246+ "fft-js": "0.1.0",
247+ "filterable": "5.0.0",
248+ "fix-functor": "0.1.0",
249+ "fixed-points": "7.0.0",
250+ "fixed-precision": "5.0.0",
251+ "flame": "1.3.0",
252+ "float32": "2.0.0",
253+ "fmt": "0.2.1",
254+ "foldable-traversable": "6.0.0",
255+ "foldable-traversable-extra": "0.0.6",
256+ "foreign": "7.0.0",
257+ "foreign-object": "4.1.0",
258+ "foreign-readwrite": "3.4.0",
259+ "forgetmenot": "0.1.0",
260+ "fork": "6.0.0",
261+ "form-urlencoded": "7.0.0",
262+ "formatters": "7.0.0",
263+ "framer-motion": "1.0.1",
264+ "free": "7.1.0",
265+ "freeap": "7.0.0",
266+ "freer-free": "0.0.1",
267+ "freet": "7.0.0",
268+ "functions": "6.0.0",
269+ "functor1": "3.0.0",
270+ "functors": "5.0.0",
271+ "fuzzy": "0.4.0",
272+ "gen": "4.0.0",
273+ "generate-values": "1.0.1",
274+ "generic-router": "0.0.1",
275+ "geojson": "0.0.5",
276+ "geometria": "2.2.0",
277+ "gojs": "0.1.1",
278+ "grain": "3.0.0",
279+ "grain-router": "3.0.0",
280+ "grain-virtualized": "3.0.0",
281+ "graphs": "8.1.0",
282+ "group": "4.1.1",
283+ "halogen": "7.0.0",
284+ "halogen-bootstrap5": "5.3.2",
285+ "halogen-canvas": "1.0.0",
286+ "halogen-css": "10.0.0",
287+ "halogen-echarts-simple": "0.0.4",
288+ "halogen-formless": "4.0.3",
289+ "halogen-helix": "1.0.1",
290+ "halogen-hooks": "0.6.3",
291+ "halogen-hooks-extra": "0.9.0",
292+ "halogen-infinite-scroll": "1.1.0",
293+ "halogen-store": "0.5.4",
294+ "halogen-storybook": "2.0.0",
295+ "halogen-subscriptions": "2.0.0",
296+ "halogen-svg-elems": "8.0.0",
297+ "halogen-typewriter": "1.0.4",
298+ "halogen-vdom": "8.0.0",
299+ "halogen-vdom-string-renderer": "0.5.0",
300+ "halogen-xterm": "2.0.0",
301+ "heckin": "2.0.1",
302+ "heterogeneous": "0.6.0",
303+ "homogeneous": "0.4.0",
304+ "http-methods": "6.0.0",
305+ "httpurple": "4.0.0",
306+ "huffman": "0.4.0",
307+ "humdrum": "0.0.1",
308+ "hyrule": "2.3.8",
309+ "identity": "6.0.0",
310+ "identy": "4.0.1",
311+ "indexed-db": "1.0.0",
312+ "indexed-monad": "3.0.0",
313+ "int64": "3.0.0",
314+ "integers": "6.0.0",
315+ "interpolate": "5.0.2",
316+ "intersection-observer": "1.0.1",
317+ "invariant": "6.0.0",
318+ "jarilo": "1.0.1",
319+ "jelly": "0.10.0",
320+ "jelly-router": "0.3.0",
321+ "jelly-signal": "0.4.0",
322+ "jest": "1.0.0",
323+ "js-abort-controller": "1.0.0",
324+ "js-bigints": "2.2.1",
325+ "js-date": "8.0.0",
326+ "js-fetch": "0.2.1",
327+ "js-fileio": "3.0.0",
328+ "js-intl": "1.1.4",
329+ "js-iterators": "0.1.1",
330+ "js-maps": "0.1.2",
331+ "js-promise": "1.0.0",
332+ "js-promise-aff": "1.0.0",
333+ "js-timers": "6.1.0",
334+ "js-uri": "3.1.0",
335+ "jsdom": "1.0.0",
336+ "json": "1.1.0",
337+ "json-codecs": "5.0.0",
338+ "justifill": "0.5.0",
339+ "jwt": "0.0.9",
340+ "labeled-data": "0.2.0",
341+ "language-cst-parser": "0.14.1",
342+ "lazy": "6.0.0",
343+ "lazy-joe": "1.0.0",
344+ "lcg": "4.0.0",
345+ "leibniz": "5.0.0",
346+ "leveldb": "1.0.1",
347+ "liminal": "1.0.1",
348+ "linalg": "6.0.0",
349+ "lists": "7.0.0",
350+ "literals": "1.0.2",
351+ "logging": "3.0.0",
352+ "logging-journald": "0.4.0",
353+ "lumi-components": "18.0.0",
354+ "machines": "7.0.0",
355+ "maps-eager": "0.5.0",
356+ "marionette": "1.0.0",
357+ "marionette-react-basic-hooks": "0.1.1",
358+ "marked": "0.1.0",
359+ "matrices": "5.0.1",
360+ "matryoshka": "1.0.0",
361+ "maybe": "6.0.0",
362+ "media-types": "6.0.0",
363+ "meowclient": "1.0.0",
364+ "midi": "4.0.0",
365+ "milkis": "9.0.0",
366+ "minibench": "4.0.1",
367+ "mmorph": "7.0.0",
368+ "monad-control": "5.0.0",
369+ "monad-logger": "1.3.1",
370+ "monad-loops": "0.5.0",
371+ "monad-unlift": "1.0.1",
372+ "monoid-extras": "0.0.1",
373+ "monoidal": "0.16.0",
374+ "morello": "0.4.0",
375+ "mote": "3.0.0",
376+ "motsunabe": "2.0.0",
377+ "mvc": "0.0.1",
378+ "mysql": "6.0.1",
379+ "n3": "0.1.0",
380+ "nano-id": "1.1.0",
381+ "nanoid": "0.1.0",
382+ "naturals": "3.0.0",
383+ "nested-functor": "0.2.1",
384+ "newtype": "5.0.0",
385+ "nextjs": "0.1.1",
386+ "nextui": "0.2.0",
387+ "node-buffer": "9.0.0",
388+ "node-child-process": "11.1.0",
389+ "node-event-emitter": "3.0.0",
390+ "node-execa": "5.0.0",
391+ "node-fs": "9.2.0",
392+ "node-glob-basic": "2.0.0",
393+ "node-http": "9.1.0",
394+ "node-http2": "1.1.1",
395+ "node-human-signals": "1.0.0",
396+ "node-net": "5.1.0",
397+ "node-os": "5.1.0",
398+ "node-path": "5.0.1",
399+ "node-process": "11.2.0",
400+ "node-readline": "8.1.1",
401+ "node-sqlite3": "8.0.0",
402+ "node-stream-pipes": "2.1.6",
403+ "node-streams": "9.0.1",
404+ "node-tls": "0.3.1",
405+ "node-url": "7.0.1",
406+ "node-workerbees": "0.3.1",
407+ "node-zlib": "0.4.0",
408+ "nonempty": "7.0.0",
409+ "now": "6.0.0",
410+ "npm-package-json": "2.0.0",
411+ "nullable": "6.0.0",
412+ "numberfield": "0.2.2",
413+ "numbers": "9.0.1",
414+ "oak": "3.1.1",
415+ "oak-debug": "1.2.2",
416+ "object-maps": "0.3.0",
417+ "ocarina": "1.5.4",
418+ "oooooooooorrrrrrrmm-lib": "0.0.1",
419+ "open-colors-scales-and-schemes": "1.0.0",
420+ "open-folds": "6.4.0",
421+ "open-foreign-generic": "11.0.3",
422+ "open-memoize": "6.2.0",
423+ "open-mkdirp-aff": "1.2.0",
424+ "open-pairing": "6.2.0",
425+ "open-smolder": "12.0.2",
426+ "options": "7.0.0",
427+ "optparse": "5.0.1",
428+ "ordered-collections": "3.2.0",
429+ "ordered-set": "0.4.0",
430+ "orders": "6.0.0",
431+ "owoify": "1.2.0",
432+ "pairs": "9.0.1",
433+ "parallel": "7.0.0",
434+ "parsing": "10.2.0",
435+ "parsing-dataview": "3.2.4",
436+ "partial": "4.0.0",
437+ "pathy": "9.0.0",
438+ "pha": "0.13.0",
439+ "phaser": "0.7.0",
440+ "phylio": "1.1.2",
441+ "pipes": "8.0.0",
442+ "pirates-charm": "0.0.1",
443+ "pmock": "0.9.0",
444+ "point-free": "1.0.0",
445+ "pointed-list": "0.5.1",
446+ "polymorphic-vectors": "4.0.0",
447+ "posix-types": "6.0.0",
448+ "postgresql": "2.0.20",
449+ "precise": "6.0.0",
450+ "precise-datetime": "7.0.0",
451+ "prelude": "6.0.2",
452+ "prettier-printer": "3.0.0",
453+ "printf": "0.1.0",
454+ "priority-queue": "0.1.2",
455+ "profunctor": "6.0.1",
456+ "profunctor-lenses": "8.0.0",
457+ "protobuf": "4.4.0",
458+ "psa-utils": "8.0.0",
459+ "psci-support": "6.0.0",
460+ "punycode": "1.0.0",
461+ "qualified-do": "2.2.0",
462+ "quantities": "12.2.0",
463+ "quickcheck": "8.0.1",
464+ "quickcheck-combinators": "0.1.3",
465+ "quickcheck-laws": "7.0.0",
466+ "quickcheck-utf8": "0.0.0",
467+ "random": "6.0.0",
468+ "rationals": "6.0.0",
469+ "rdf": "0.1.0",
470+ "react": "11.0.0",
471+ "react-aria": "0.2.0",
472+ "react-basic": "17.0.0",
473+ "react-basic-classic": "3.0.0",
474+ "react-basic-dnd": "10.1.0",
475+ "react-basic-dom": "7.0.0",
476+ "react-basic-dom-beta": "0.1.1",
477+ "react-basic-emotion": "7.1.0",
478+ "react-basic-hooks": "8.2.0",
479+ "react-basic-storybook": "2.0.0",
480+ "react-dom": "8.0.0",
481+ "react-halo": "3.0.0",
482+ "react-icons": "1.1.5",
483+ "react-markdown": "0.1.0",
484+ "react-testing-library": "4.0.1",
485+ "react-virtuoso": "1.0.0",
486+ "reactix": "0.6.1",
487+ "read": "1.0.1",
488+ "recharts": "1.1.0",
489+ "record": "4.0.0",
490+ "record-extra": "5.0.1",
491+ "record-ptional-fields": "0.1.2",
492+ "record-studio": "1.0.4",
493+ "refs": "6.0.0",
494+ "remotedata": "5.0.1",
495+ "repr": "0.5.0",
496+ "resize-observer": "1.0.0",
497+ "resource": "2.0.1",
498+ "resourcet": "1.0.0",
499+ "result": "1.0.3",
500+ "return": "0.2.0",
501+ "ring-modules": "5.0.1",
502+ "rito": "0.3.4",
503+ "roman": "0.4.0",
504+ "rough-notation": "1.0.2",
505+ "routing": "11.0.0",
506+ "routing-duplex": "0.7.0",
507+ "run": "5.0.0",
508+ "safe-coerce": "2.0.0",
509+ "safely": "4.0.1",
510+ "school-of-music": "1.3.0",
511+ "selection-foldable": "0.2.0",
512+ "selective-functors": "1.0.1",
513+ "semirings": "7.0.0",
514+ "shuffle": "1.1.0",
515+ "signal": "13.0.0",
516+ "simple-emitter": "3.0.1",
517+ "simple-i18n": "2.0.1",
518+ "simple-json": "9.0.0",
519+ "simple-json-generics": "0.2.1",
520+ "simple-ulid": "3.0.0",
521+ "sized-matrices": "1.0.0",
522+ "sized-vectors": "5.0.2",
523+ "slug": "3.1.0",
524+ "small-ffi": "4.0.1",
525+ "soundfonts": "4.1.0",
526+ "sparse-matrices": "2.0.1",
527+ "sparse-polynomials": "3.0.1",
528+ "spec": "8.1.1",
529+ "spec-discovery": "8.4.0",
530+ "spec-mocha": "5.1.1",
531+ "spec-node": "0.0.3",
532+ "spec-quickcheck": "5.0.2",
533+ "spec-reporter-xunit": "0.7.1",
534+ "splitmix": "2.1.0",
535+ "ssrs": "1.0.0",
536+ "st": "6.2.0",
537+ "statistics": "0.3.2",
538+ "strictlypositiveint": "1.0.1",
539+ "string-parsers": "8.0.0",
540+ "strings": "6.0.1",
541+ "strings-extra": "4.0.0",
542+ "stringutils": "0.0.12",
543+ "substitute": "0.2.3",
544+ "supply": "0.2.0",
545+ "svg-parser": "3.0.0",
546+ "systemd-journald": "0.3.0",
547+ "tagged": "4.0.2",
548+ "tailrec": "6.1.0",
549+ "tanstack-query": "2.0.0",
550+ "tecton": "0.2.1",
551+ "tecton-halogen": "0.2.0",
552+ "test-unit": "17.0.0",
553+ "thermite": "6.3.1",
554+ "thermite-dom": "0.3.1",
555+ "these": "6.0.0",
556+ "threading": "0.0.3",
557+ "tidy": "0.11.1",
558+ "tidy-codegen": "4.0.1",
559+ "tldr": "0.0.0",
560+ "toestand": "0.9.0",
561+ "transformation-matrix": "1.0.1",
562+ "transformers": "6.1.0",
563+ "tree-rose": "4.0.2",
564+ "ts-bridge": "4.0.0",
565+ "tuples": "7.0.0",
566+ "two-or-more": "1.0.0",
567+ "type-equality": "4.0.1",
568+ "typedenv": "2.0.1",
569+ "typelevel": "6.0.0",
570+ "typelevel-lists": "2.1.0",
571+ "typelevel-peano": "1.0.1",
572+ "typelevel-prelude": "7.0.0",
573+ "typelevel-regex": "0.0.3",
574+ "typelevel-rows": "0.1.0",
575+ "typisch": "0.4.0",
576+ "uint": "7.0.0",
577+ "ulid": "3.0.1",
578+ "uncurried-transformers": "1.1.0",
579+ "undefined": "2.0.0",
580+ "undefined-is-not-a-problem": "1.1.0",
581+ "unfoldable": "6.0.0",
582+ "unicode": "6.0.0",
583+ "unique": "0.6.1",
584+ "unlift": "1.0.1",
585+ "unordered-collections": "3.1.0",
586+ "unsafe-coerce": "6.0.0",
587+ "unsafe-reference": "5.0.0",
588+ "untagged-to-tagged": "0.1.4",
589+ "untagged-union": "1.0.0",
590+ "uri": "9.0.0",
591+ "url-immutable": "1.0.0",
592+ "uuid": "9.0.0",
593+ "uuidv4": "1.0.0",
594+ "validation": "6.0.0",
595+ "variant": "8.0.0",
596+ "variant-encodings": "2.0.0",
597+ "vectorfield": "1.0.1",
598+ "vectors": "2.1.0",
599+ "versions": "7.0.0",
600+ "visx": "0.0.2",
601+ "vitest": "1.0.0",
602+ "web-clipboard": "6.0.0",
603+ "web-cssom": "2.0.0",
604+ "web-cssom-view": "0.1.0",
605+ "web-dom": "6.0.0",
606+ "web-dom-parser": "8.0.0",
607+ "web-dom-xpath": "3.0.0",
608+ "web-encoding": "3.0.0",
609+ "web-events": "4.0.0",
610+ "web-fetch": "4.0.1",
611+ "web-file": "4.0.0",
612+ "web-geometry": "0.1.0",
613+ "web-html": "4.1.0",
614+ "web-pointerevents": "2.0.0",
615+ "web-proletarian": "1.0.0",
616+ "web-promise": "3.2.0",
617+ "web-resize-observer": "2.1.0",
618+ "web-router": "1.0.0",
619+ "web-socket": "4.0.0",
620+ "web-storage": "5.0.0",
621+ "web-streams": "4.0.0",
622+ "web-touchevents": "4.0.0",
623+ "web-uievents": "5.0.0",
624+ "web-url": "2.0.0",
625+ "web-workers": "1.1.0",
626+ "web-xhr": "5.0.1",
627+ "webextension-polyfill": "0.1.0",
628+ "webgpu": "0.0.1",
629+ "which": "2.0.0",
630+ "whine-core": "0.0.28",
631+ "xterm": "1.0.0",
632+ "yoga-fetch": "1.0.1",
633+ "yoga-json": "5.1.0",
634+ "yoga-om": "0.1.0",
635+ "yoga-postgres": "6.0.0",
636+ "yoga-react-dom": "1.0.1",
637+ "yoga-subtlecrypto": "0.1.0",
638+ "yoga-tree": "1.0.0",
639+ "z3": "0.0.2",
640+ "zipperarray": "2.0.0"
641+ }
642+ },
643+ "extra_packages": {}
644+ },
645+ "packages": {
646+ "aff": {
647+ "type": "registry",
648+ "version": "8.0.0",
649+ "integrity": "sha256-9BRIrSdRoYybfiUmBqgKJ66cPqxYHb277bVWQMn/9sg=",
650+ "dependencies": [
651+ "control",
652+ "datetime",
653+ "effect",
654+ "either",
655+ "exceptions",
656+ "functions",
657+ "newtype",
658+ "parallel",
659+ "partial",
660+ "prelude",
661+ "st",
662+ "tailrec",
663+ "transformers",
664+ "unsafe-coerce"
665+ ]
666+ },
667+ "ansi": {
668+ "type": "registry",
669+ "version": "7.0.0",
670+ "integrity": "sha256-tOUaXJFzPSfBVAqLI8hc+Tz2M1rg16cXqyHaK/3SmFg=",
671+ "dependencies": [
672+ "foldable-traversable",
673+ "lists",
674+ "prelude"
675+ ]
676+ },
677+ "argonaut-codecs": {
678+ "type": "registry",
679+ "version": "9.1.0",
680+ "integrity": "sha256-K910SBrmYallESsm8pxJYThs7lig6hxX3M4PW33Cgew=",
681+ "dependencies": [
682+ "argonaut-core",
683+ "arrays",
684+ "bifunctors",
685+ "either",
686+ "foldable-traversable",
687+ "foreign-object",
688+ "identity",
689+ "integers",
690+ "lists",
691+ "maybe",
692+ "nonempty",
693+ "ordered-collections",
694+ "prelude",
695+ "record",
696+ "strings",
697+ "tuples"
698+ ]
699+ },
700+ "argonaut-core": {
701+ "type": "registry",
702+ "version": "7.0.0",
703+ "integrity": "sha256-gYZihtBIKthVuXXoiPphMookSf8M5aHyFYkcIWqlxTM=",
704+ "dependencies": [
705+ "arrays",
706+ "control",
707+ "either",
708+ "foreign-object",
709+ "functions",
710+ "gen",
711+ "maybe",
712+ "nonempty",
713+ "prelude",
714+ "strings",
715+ "tailrec"
716+ ]
717+ },
718+ "arraybuffer-types": {
719+ "type": "registry",
720+ "version": "3.0.2",
721+ "integrity": "sha256-p05cJnSkyeoB7VHzMyc2Eb1RwUaB7Nl0sQSqEGNEUD8=",
722+ "dependencies": []
723+ },
724+ "arrays": {
725+ "type": "registry",
726+ "version": "7.3.0",
727+ "integrity": "sha256-GD4z7LCi9wzi7FCQqbWhvs8paoUK9NO+HwgXZ+KP8Rk=",
728+ "dependencies": [
729+ "bifunctors",
730+ "control",
731+ "foldable-traversable",
732+ "functions",
733+ "maybe",
734+ "nonempty",
735+ "partial",
736+ "prelude",
737+ "safe-coerce",
738+ "st",
739+ "tailrec",
740+ "tuples",
741+ "unfoldable",
742+ "unsafe-coerce"
743+ ]
744+ },
745+ "avar": {
746+ "type": "registry",
747+ "version": "5.0.1",
748+ "integrity": "sha256-8V4SxF4TIWZ9Ik1P4lPzIRUAZeFBe8w5WA2VcCEKsIk=",
749+ "dependencies": [
750+ "aff",
751+ "effect",
752+ "either",
753+ "exceptions",
754+ "functions",
755+ "maybe",
756+ "prelude"
757+ ]
758+ },
759+ "bifunctors": {
760+ "type": "registry",
761+ "version": "6.0.0",
762+ "integrity": "sha256-tXhmlMiyVy6mbUreVZQt/2EGEsPr0T1PjJi+YCG5J7E=",
763+ "dependencies": [
764+ "const",
765+ "either",
766+ "newtype",
767+ "prelude",
768+ "tuples"
769+ ]
770+ },
771+ "catenable-lists": {
772+ "type": "registry",
773+ "version": "7.0.0",
774+ "integrity": "sha256-7+i/MHBLIRh604iCNT4ENWRWE/wuHIotER4kpdX9Ve0=",
775+ "dependencies": [
776+ "control",
777+ "foldable-traversable",
778+ "lists",
779+ "maybe",
780+ "prelude",
781+ "tuples",
782+ "unfoldable"
783+ ]
784+ },
785+ "const": {
786+ "type": "registry",
787+ "version": "6.0.0",
788+ "integrity": "sha256-S+m0lQsxnji0z1XRUmkn+3RFuWJ5CXWuIr1u3i8Bfoc=",
789+ "dependencies": [
790+ "invariant",
791+ "newtype",
792+ "prelude"
793+ ]
794+ },
795+ "contravariant": {
796+ "type": "registry",
797+ "version": "6.0.0",
798+ "integrity": "sha256-nuckEWqL80NaPmR/l9AUyrfycNh18XcvlZV9PAamwqc=",
799+ "dependencies": [
800+ "const",
801+ "either",
802+ "newtype",
803+ "prelude",
804+ "tuples"
805+ ]
806+ },
807+ "control": {
808+ "type": "registry",
809+ "version": "6.0.0",
810+ "integrity": "sha256-0vxyYh5FL+ilxgLo954w1LqCUC0RSIivNNlb9CaNUQg=",
811+ "dependencies": [
812+ "newtype",
813+ "prelude"
814+ ]
815+ },
816+ "datetime": {
817+ "type": "registry",
818+ "version": "6.1.0",
819+ "integrity": "sha256-tbv6eDXy6QOD7YSknxYSbsDF32OC2JrNbSBpzMs7Doc=",
820+ "dependencies": [
821+ "bifunctors",
822+ "control",
823+ "either",
824+ "enums",
825+ "foldable-traversable",
826+ "functions",
827+ "gen",
828+ "integers",
829+ "lists",
830+ "maybe",
831+ "newtype",
832+ "numbers",
833+ "ordered-collections",
834+ "partial",
835+ "prelude",
836+ "tuples"
837+ ]
838+ },
839+ "distributive": {
840+ "type": "registry",
841+ "version": "6.0.0",
842+ "integrity": "sha256-netyJK4B32PDYHD0tF2AenKgo3urzbI770ycM0pArAo=",
843+ "dependencies": [
844+ "identity",
845+ "newtype",
846+ "prelude",
847+ "tuples",
848+ "type-equality"
849+ ]
850+ },
851+ "effect": {
852+ "type": "registry",
853+ "version": "4.0.0",
854+ "integrity": "sha256-DdqU3bncRTjgMVPPRlAuGHVeajSPEcRaRhNuio7if6s=",
855+ "dependencies": [
856+ "prelude"
857+ ]
858+ },
859+ "either": {
860+ "type": "registry",
861+ "version": "6.1.0",
862+ "integrity": "sha256-tBHx3PgtH4GZOApZCDkcM7szRTYJinrUrVGWazQCUUg=",
863+ "dependencies": [
864+ "control",
865+ "invariant",
866+ "maybe",
867+ "prelude"
868+ ]
869+ },
870+ "enums": {
871+ "type": "registry",
872+ "version": "6.0.1",
873+ "integrity": "sha256-sdZOmLX5+5pASGpvVyT0vSD5BBYQjZiayjV5XiPutso=",
874+ "dependencies": [
875+ "control",
876+ "either",
877+ "gen",
878+ "maybe",
879+ "newtype",
880+ "nonempty",
881+ "partial",
882+ "prelude",
883+ "tuples",
884+ "unfoldable"
885+ ]
886+ },
887+ "exceptions": {
888+ "type": "registry",
889+ "version": "6.1.0",
890+ "integrity": "sha256-nRrr+N0wk0TUFOWLR7e1n1oxcXo/X345bQUtoY9lW6A=",
891+ "dependencies": [
892+ "effect",
893+ "either",
894+ "maybe",
895+ "prelude"
896+ ]
897+ },
898+ "exists": {
899+ "type": "registry",
900+ "version": "6.0.0",
901+ "integrity": "sha256-vtLbrWNaI+pzx/2fw2AQnCovoLtcosClIhjO26QKkh8=",
902+ "dependencies": [
903+ "unsafe-coerce"
904+ ]
905+ },
906+ "exitcodes": {
907+ "type": "registry",
908+ "version": "4.0.0",
909+ "integrity": "sha256-xBl4aFSEQ05Owp1ZvO6OxxvLK3LVzU35RSbj79SsePQ=",
910+ "dependencies": [
911+ "enums",
912+ "maybe",
913+ "prelude"
914+ ]
915+ },
916+ "foldable-traversable": {
917+ "type": "registry",
918+ "version": "6.0.0",
919+ "integrity": "sha256-NGGWyCio/xjce6fPP7y3wwg7CheqllID6aJudDxbWhA=",
920+ "dependencies": [
921+ "bifunctors",
922+ "const",
923+ "control",
924+ "either",
925+ "functors",
926+ "identity",
927+ "maybe",
928+ "newtype",
929+ "orders",
930+ "prelude",
931+ "tuples"
932+ ]
933+ },
934+ "foreign": {
935+ "type": "registry",
936+ "version": "7.0.0",
937+ "integrity": "sha256-jiDRMVQfovGsbbA/FzbzYf6iWk9i2b5gNrIjz+gFfsI=",
938+ "dependencies": [
939+ "either",
940+ "functions",
941+ "integers",
942+ "lists",
943+ "maybe",
944+ "prelude",
945+ "strings",
946+ "transformers",
947+ "unsafe-coerce"
948+ ]
949+ },
950+ "foreign-object": {
951+ "type": "registry",
952+ "version": "4.1.0",
953+ "integrity": "sha256-x/Q7r80z/vmHRKvPwhYmHP/DnJciPtsyGfRTMzayKIU=",
954+ "dependencies": [
955+ "arrays",
956+ "foldable-traversable",
957+ "functions",
958+ "gen",
959+ "lists",
960+ "maybe",
961+ "prelude",
962+ "st",
963+ "tailrec",
964+ "tuples",
965+ "typelevel-prelude",
966+ "unfoldable",
967+ "unsafe-coerce"
968+ ]
969+ },
970+ "fork": {
971+ "type": "registry",
972+ "version": "6.0.0",
973+ "integrity": "sha256-0keBVeZZg1eCZEy/En1CohVW829gQUqKtqBNIRa93/A=",
974+ "dependencies": [
975+ "aff",
976+ "prelude",
977+ "transformers"
978+ ]
979+ },
980+ "free": {
981+ "type": "registry",
982+ "version": "7.1.0",
983+ "integrity": "sha256-tUBInfUpRQEw4u94GWcYW7EYdmSdDHSRn88a+C0eltU=",
984+ "dependencies": [
985+ "catenable-lists",
986+ "control",
987+ "distributive",
988+ "either",
989+ "exists",
990+ "foldable-traversable",
991+ "invariant",
992+ "lazy",
993+ "maybe",
994+ "prelude",
995+ "tailrec",
996+ "transformers",
997+ "tuples",
998+ "unsafe-coerce"
999+ ]
1000+ },
1001+ "functions": {
1002+ "type": "registry",
1003+ "version": "6.0.0",
1004+ "integrity": "sha256-0jgtOr+SFO4UScKc40oA/9Vdcf2rLn3h3vZlY0KfqVo=",
1005+ "dependencies": [
1006+ "prelude"
1007+ ]
1008+ },
1009+ "functors": {
1010+ "type": "registry",
1011+ "version": "5.0.0",
1012+ "integrity": "sha256-W1o/4wcp6S3chodYL8uixlXK2mfr1L+SzM1R+whqUco=",
1013+ "dependencies": [
1014+ "bifunctors",
1015+ "const",
1016+ "contravariant",
1017+ "control",
1018+ "distributive",
1019+ "either",
1020+ "invariant",
1021+ "maybe",
1022+ "newtype",
1023+ "prelude",
1024+ "profunctor",
1025+ "tuples",
1026+ "unsafe-coerce"
1027+ ]
1028+ },
1029+ "gen": {
1030+ "type": "registry",
1031+ "version": "4.0.0",
1032+ "integrity": "sha256-kyOateeOtQa07vfTMYeSuCKdelgKE1R65fwKkZ10wsY=",
1033+ "dependencies": [
1034+ "either",
1035+ "foldable-traversable",
1036+ "identity",
1037+ "maybe",
1038+ "newtype",
1039+ "nonempty",
1040+ "prelude",
1041+ "tailrec",
1042+ "tuples",
1043+ "unfoldable"
1044+ ]
1045+ },
1046+ "identity": {
1047+ "type": "registry",
1048+ "version": "6.0.0",
1049+ "integrity": "sha256-RY/iXPpxpqvKHYfJeFVNI1J06kohB9rbtWYuha8t0LE=",
1050+ "dependencies": [
1051+ "control",
1052+ "invariant",
1053+ "newtype",
1054+ "prelude"
1055+ ]
1056+ },
1057+ "integers": {
1058+ "type": "registry",
1059+ "version": "6.0.0",
1060+ "integrity": "sha256-Y8yozC1uHRLcruobEyv5/bMKzE1BoKJ/olHv6o+bgm8=",
1061+ "dependencies": [
1062+ "maybe",
1063+ "numbers",
1064+ "prelude"
1065+ ]
1066+ },
1067+ "invariant": {
1068+ "type": "registry",
1069+ "version": "6.0.0",
1070+ "integrity": "sha256-HyoT1I5qIHRq8RSZji6zZDvqnpVjLw748utrKwZtqsw=",
1071+ "dependencies": [
1072+ "control",
1073+ "prelude"
1074+ ]
1075+ },
1076+ "js-bigints": {
1077+ "type": "registry",
1078+ "version": "2.2.1",
1079+ "integrity": "sha256-r1rE6Olv5b3JrP32lY2uKJ+eBRTsrVnC983K8VWwqe4=",
1080+ "dependencies": [
1081+ "integers",
1082+ "maybe",
1083+ "prelude"
1084+ ]
1085+ },
1086+ "js-date": {
1087+ "type": "registry",
1088+ "version": "8.0.0",
1089+ "integrity": "sha256-DNQrp4xYc8o80jtxo0aOkUeXGi6h0Xidkk2ZQ8Y4l5Y=",
1090+ "dependencies": [
1091+ "datetime",
1092+ "effect",
1093+ "enums",
1094+ "foreign",
1095+ "functions",
1096+ "integers",
1097+ "maybe",
1098+ "prelude"
1099+ ]
1100+ },
1101+ "lazy": {
1102+ "type": "registry",
1103+ "version": "6.0.0",
1104+ "integrity": "sha256-MHRC+1Pc+AjortBp4b/e1e6KpEpsDwaJBNBB7TOL+1I=",
1105+ "dependencies": [
1106+ "control",
1107+ "foldable-traversable",
1108+ "invariant",
1109+ "prelude"
1110+ ]
1111+ },
1112+ "lists": {
1113+ "type": "registry",
1114+ "version": "7.0.0",
1115+ "integrity": "sha256-/mGd7wLoU+wsTcqii7SSUByxsvwvjnu2PjwAD47yYb4=",
1116+ "dependencies": [
1117+ "bifunctors",
1118+ "control",
1119+ "foldable-traversable",
1120+ "lazy",
1121+ "maybe",
1122+ "newtype",
1123+ "nonempty",
1124+ "partial",
1125+ "prelude",
1126+ "tailrec",
1127+ "tuples",
1128+ "unfoldable"
1129+ ]
1130+ },
1131+ "maybe": {
1132+ "type": "registry",
1133+ "version": "6.0.0",
1134+ "integrity": "sha256-8X6XEgtZ5lqfkEuc1hWOofnL6mwhk8gSJTxwvbR/SbY=",
1135+ "dependencies": [
1136+ "control",
1137+ "invariant",
1138+ "newtype",
1139+ "prelude"
1140+ ]
1141+ },
1142+ "mmorph": {
1143+ "type": "registry",
1144+ "version": "7.0.0",
1145+ "integrity": "sha256-Cfltaq+tfYjuSoSBN/b8cSQZbvZTqIRs6ebQewbIkGs=",
1146+ "dependencies": [
1147+ "bifunctors",
1148+ "either",
1149+ "free",
1150+ "functors",
1151+ "identity",
1152+ "maybe",
1153+ "newtype",
1154+ "prelude",
1155+ "transformers",
1156+ "tuples"
1157+ ]
1158+ },
1159+ "newtype": {
1160+ "type": "registry",
1161+ "version": "5.0.0",
1162+ "integrity": "sha256-dt6w0cty4OS+Pjt9fsh3iU6ottqSU83mdAZkaEEvo6c=",
1163+ "dependencies": [
1164+ "prelude",
1165+ "safe-coerce"
1166+ ]
1167+ },
1168+ "node-buffer": {
1169+ "type": "registry",
1170+ "version": "9.0.0",
1171+ "integrity": "sha256-RdQjilmEHqsT4fwpCr8Mavw8KTafYrS3ZM6zeAAVAl8=",
1172+ "dependencies": [
1173+ "arraybuffer-types",
1174+ "effect",
1175+ "functions",
1176+ "maybe",
1177+ "nullable",
1178+ "partial",
1179+ "prelude",
1180+ "st",
1181+ "unsafe-coerce"
1182+ ]
1183+ },
1184+ "node-event-emitter": {
1185+ "type": "registry",
1186+ "version": "3.0.0",
1187+ "integrity": "sha256-wodx71NxJBPXOaawFn01V1ByYB2vT+I3RuV2giOVKMg=",
1188+ "dependencies": [
1189+ "effect",
1190+ "either",
1191+ "functions",
1192+ "maybe",
1193+ "nullable",
1194+ "prelude",
1195+ "unsafe-coerce"
1196+ ]
1197+ },
1198+ "node-fs": {
1199+ "type": "registry",
1200+ "version": "9.2.0",
1201+ "integrity": "sha256-fxioTSm9y47WuYs9F/7nxCh/RVDCl3Kr3Hg779J4SJA=",
1202+ "dependencies": [
1203+ "aff",
1204+ "datetime",
1205+ "effect",
1206+ "either",
1207+ "enums",
1208+ "exceptions",
1209+ "functions",
1210+ "integers",
1211+ "js-date",
1212+ "maybe",
1213+ "node-buffer",
1214+ "node-path",
1215+ "node-streams",
1216+ "nullable",
1217+ "partial",
1218+ "prelude",
1219+ "strings"
1220+ ]
1221+ },
1222+ "node-path": {
1223+ "type": "registry",
1224+ "version": "5.0.1",
1225+ "integrity": "sha256-j7n/SmpVz0FOMJl4XZop3ofJ+MeIPkMNqUEUKHEL6Us=",
1226+ "dependencies": [
1227+ "effect"
1228+ ]
1229+ },
1230+ "node-process": {
1231+ "type": "registry",
1232+ "version": "11.2.0",
1233+ "integrity": "sha256-onzKeNmaeYfN3HSDPqSFTrrP2Yl9tnVsfKKhnf2plxM=",
1234+ "dependencies": [
1235+ "effect",
1236+ "exceptions",
1237+ "foreign",
1238+ "foreign-object",
1239+ "maybe",
1240+ "node-event-emitter",
1241+ "node-streams",
1242+ "nullable",
1243+ "posix-types",
1244+ "prelude",
1245+ "strings"
1246+ ]
1247+ },
1248+ "node-streams": {
1249+ "type": "registry",
1250+ "version": "9.0.1",
1251+ "integrity": "sha256-yuVGm/R/tBr4Nphi+a1a984Z0fkmN9Q5wWtSmbmJTpA=",
1252+ "dependencies": [
1253+ "aff",
1254+ "arrays",
1255+ "effect",
1256+ "either",
1257+ "exceptions",
1258+ "maybe",
1259+ "node-buffer",
1260+ "node-event-emitter",
1261+ "nullable",
1262+ "prelude",
1263+ "refs",
1264+ "st",
1265+ "tailrec",
1266+ "unsafe-coerce"
1267+ ]
1268+ },
1269+ "nonempty": {
1270+ "type": "registry",
1271+ "version": "7.0.0",
1272+ "integrity": "sha256-Ctkq8/+KiGqCE53Y/LvibA/coy7ev9HtRZU+GYS7yfQ=",
1273+ "dependencies": [
1274+ "control",
1275+ "foldable-traversable",
1276+ "maybe",
1277+ "prelude",
1278+ "tuples",
1279+ "unfoldable"
1280+ ]
1281+ },
1282+ "now": {
1283+ "type": "registry",
1284+ "version": "6.0.0",
1285+ "integrity": "sha256-mTyG4s8tps3XIf0jjV/lME2/QlwMzrQly2wqfSSUM3o=",
1286+ "dependencies": [
1287+ "datetime",
1288+ "effect",
1289+ "prelude"
1290+ ]
1291+ },
1292+ "nullable": {
1293+ "type": "registry",
1294+ "version": "6.0.0",
1295+ "integrity": "sha256-CDAZk+L9Sc0GCFTkE8n+qdp4Ys8avvnkU+m2hVALt7M=",
1296+ "dependencies": [
1297+ "functions",
1298+ "maybe",
1299+ "prelude"
1300+ ]
1301+ },
1302+ "numbers": {
1303+ "type": "registry",
1304+ "version": "9.0.1",
1305+ "integrity": "sha256-ZydYckgwRAnRaFC7pu6fADhzdwX+UqHZrfJyet64zls=",
1306+ "dependencies": [
1307+ "functions",
1308+ "maybe",
1309+ "prelude"
1310+ ]
1311+ },
1312+ "open-memoize": {
1313+ "type": "registry",
1314+ "version": "6.2.0",
1315+ "integrity": "sha256-yJLuVYX8FocHIJ+6q7efH/Pj4S+e1Y57DZ5Dn7qf4ww=",
1316+ "dependencies": [
1317+ "either",
1318+ "integers",
1319+ "lazy",
1320+ "lists",
1321+ "maybe",
1322+ "partial",
1323+ "prelude",
1324+ "strings",
1325+ "tuples"
1326+ ]
1327+ },
1328+ "optparse": {
1329+ "type": "registry",
1330+ "version": "5.0.1",
1331+ "integrity": "sha256-2btDjHPRR0uujUQJuZAN9AzvVoXe7yG6IwnY5evERhQ=",
1332+ "dependencies": [
1333+ "arrays",
1334+ "bifunctors",
1335+ "control",
1336+ "effect",
1337+ "either",
1338+ "enums",
1339+ "exists",
1340+ "exitcodes",
1341+ "foldable-traversable",
1342+ "free",
1343+ "integers",
1344+ "lazy",
1345+ "lists",
1346+ "maybe",
1347+ "newtype",
1348+ "node-buffer",
1349+ "node-process",
1350+ "node-streams",
1351+ "nonempty",
1352+ "numbers",
1353+ "open-memoize",
1354+ "partial",
1355+ "prelude",
1356+ "strings",
1357+ "tailrec",
1358+ "transformers",
1359+ "tuples"
1360+ ]
1361+ },
1362+ "ordered-collections": {
1363+ "type": "registry",
1364+ "version": "3.2.0",
1365+ "integrity": "sha256-NaEXc2cz/7lJfxPWEja4XlZbGxuRqJwFKQJjsJf51kQ=",
1366+ "dependencies": [
1367+ "arrays",
1368+ "control",
1369+ "foldable-traversable",
1370+ "functions",
1371+ "gen",
1372+ "lists",
1373+ "maybe",
1374+ "newtype",
1375+ "partial",
1376+ "prelude",
1377+ "safe-coerce",
1378+ "tailrec",
1379+ "tuples",
1380+ "unfoldable"
1381+ ]
1382+ },
1383+ "orders": {
1384+ "type": "registry",
1385+ "version": "6.0.0",
1386+ "integrity": "sha256-nSMxZK7wxyDULkjZqvMyB71mVo6b0AyLLHosDVbv1XM=",
1387+ "dependencies": [
1388+ "newtype",
1389+ "prelude"
1390+ ]
1391+ },
1392+ "parallel": {
1393+ "type": "registry",
1394+ "version": "7.0.0",
1395+ "integrity": "sha256-bAGpVhrFz2IyHkA4MR7+tE/19FZ7dzYBdYPgK5svkqw=",
1396+ "dependencies": [
1397+ "control",
1398+ "effect",
1399+ "either",
1400+ "foldable-traversable",
1401+ "functors",
1402+ "maybe",
1403+ "newtype",
1404+ "prelude",
1405+ "profunctor",
1406+ "refs",
1407+ "transformers"
1408+ ]
1409+ },
1410+ "partial": {
1411+ "type": "registry",
1412+ "version": "4.0.0",
1413+ "integrity": "sha256-mdrlJBAgFMh79hNRW39uv7c+BwnnaOrAMmdh7+VhEhs=",
1414+ "dependencies": []
1415+ },
1416+ "pipes": {
1417+ "type": "registry",
1418+ "version": "8.0.0",
1419+ "integrity": "sha256-dtUNpG8BGVr7pu6mQZyAnUAftUHgNS7f0QH3Kw5UTpQ=",
1420+ "dependencies": [
1421+ "aff",
1422+ "control",
1423+ "effect",
1424+ "either",
1425+ "foldable-traversable",
1426+ "identity",
1427+ "lists",
1428+ "maybe",
1429+ "mmorph",
1430+ "newtype",
1431+ "prelude",
1432+ "tailrec",
1433+ "transformers",
1434+ "tuples"
1435+ ]
1436+ },
1437+ "posix-types": {
1438+ "type": "registry",
1439+ "version": "6.0.0",
1440+ "integrity": "sha256-Je5jG439F/SFO/IvVevZnWVxDIonrehlKuJkefP2lHE=",
1441+ "dependencies": [
1442+ "maybe",
1443+ "newtype",
1444+ "prelude"
1445+ ]
1446+ },
1447+ "prelude": {
1448+ "type": "registry",
1449+ "version": "6.0.2",
1450+ "integrity": "sha256-IqykrDRquGUD/LRSad7y75hZv3bUsGQ4knc8tdez8Qw=",
1451+ "dependencies": []
1452+ },
1453+ "profunctor": {
1454+ "type": "registry",
1455+ "version": "6.0.1",
1456+ "integrity": "sha256-Ow0mJC+PIIRq/a3mzCWY5vxuTgR/e+Ee68+mWeSRnWY=",
1457+ "dependencies": [
1458+ "control",
1459+ "distributive",
1460+ "either",
1461+ "exists",
1462+ "invariant",
1463+ "newtype",
1464+ "prelude",
1465+ "tuples"
1466+ ]
1467+ },
1468+ "record": {
1469+ "type": "registry",
1470+ "version": "4.0.0",
1471+ "integrity": "sha256-WQ8fqp4X1wTA70J4qUcPW4Z7DCwx6e5KJnT/EuTdWSc=",
1472+ "dependencies": [
1473+ "functions",
1474+ "prelude",
1475+ "unsafe-coerce"
1476+ ]
1477+ },
1478+ "refs": {
1479+ "type": "registry",
1480+ "version": "6.0.0",
1481+ "integrity": "sha256-KKD5G9dR2SauuDGULUJsxjqDOEi1Jqm+2Sq5U2mY8YU=",
1482+ "dependencies": [
1483+ "effect",
1484+ "prelude"
1485+ ]
1486+ },
1487+ "safe-coerce": {
1488+ "type": "registry",
1489+ "version": "2.0.0",
1490+ "integrity": "sha256-EJrxtKt5xC7TYjBZrSBO/J7Aw3DmtilYjt4olpAXWVc=",
1491+ "dependencies": [
1492+ "unsafe-coerce"
1493+ ]
1494+ },
1495+ "spec": {
1496+ "type": "registry",
1497+ "version": "8.1.1",
1498+ "integrity": "sha256-b6qjDb7lUJGLV+WEoywLu6BCXC4zGpfbN43mTL+vBeI=",
1499+ "dependencies": [
1500+ "aff",
1501+ "ansi",
1502+ "arrays",
1503+ "avar",
1504+ "bifunctors",
1505+ "control",
1506+ "datetime",
1507+ "effect",
1508+ "either",
1509+ "exceptions",
1510+ "foldable-traversable",
1511+ "fork",
1512+ "identity",
1513+ "integers",
1514+ "lists",
1515+ "maybe",
1516+ "newtype",
1517+ "now",
1518+ "ordered-collections",
1519+ "parallel",
1520+ "pipes",
1521+ "prelude",
1522+ "refs",
1523+ "strings",
1524+ "tailrec",
1525+ "transformers",
1526+ "tuples"
1527+ ]
1528+ },
1529+ "spec-discovery": {
1530+ "type": "registry",
1531+ "version": "8.4.0",
1532+ "integrity": "sha256-aFp8bllT/wrxQu8hMlDchQQY08dQAz+Xdq2hZi5z3yY=",
1533+ "dependencies": [
1534+ "aff",
1535+ "effect",
1536+ "foldable-traversable",
1537+ "prelude",
1538+ "spec",
1539+ "spec-node"
1540+ ]
1541+ },
1542+ "spec-node": {
1543+ "type": "registry",
1544+ "version": "0.0.3",
1545+ "integrity": "sha256-8/9+g0obbamV0YtqzmttbWs8HaWF7CEeW+eDtqzuAAo=",
1546+ "dependencies": [
1547+ "aff",
1548+ "argonaut-codecs",
1549+ "argonaut-core",
1550+ "arrays",
1551+ "control",
1552+ "datetime",
1553+ "effect",
1554+ "either",
1555+ "foldable-traversable",
1556+ "identity",
1557+ "integers",
1558+ "maybe",
1559+ "newtype",
1560+ "node-buffer",
1561+ "node-fs",
1562+ "node-process",
1563+ "now",
1564+ "numbers",
1565+ "optparse",
1566+ "ordered-collections",
1567+ "partial",
1568+ "prelude",
1569+ "spec",
1570+ "strings",
1571+ "tuples"
1572+ ]
1573+ },
1574+ "st": {
1575+ "type": "registry",
1576+ "version": "6.2.0",
1577+ "integrity": "sha256-WI4MEkkwUd4pnwZQ3G8VKWgX5t1RSNJludm5e9boaRo=",
1578+ "dependencies": [
1579+ "effect",
1580+ "partial",
1581+ "prelude",
1582+ "tailrec",
1583+ "unsafe-coerce"
1584+ ]
1585+ },
1586+ "strings": {
1587+ "type": "registry",
1588+ "version": "6.0.1",
1589+ "integrity": "sha256-FNto2hoNW5Da6W6crIk77YXMagBvOGHZE1kO7eZ1vLM=",
1590+ "dependencies": [
1591+ "arrays",
1592+ "control",
1593+ "either",
1594+ "enums",
1595+ "foldable-traversable",
1596+ "gen",
1597+ "integers",
1598+ "maybe",
1599+ "newtype",
1600+ "nonempty",
1601+ "partial",
1602+ "prelude",
1603+ "tailrec",
1604+ "tuples",
1605+ "unfoldable",
1606+ "unsafe-coerce"
1607+ ]
1608+ },
1609+ "strings-extra": {
1610+ "type": "registry",
1611+ "version": "4.0.0",
1612+ "integrity": "sha256-Wlsa9A4hg4PnZYa9WsE0e820xilquVwm33nn067qNIA=",
1613+ "dependencies": [
1614+ "arrays",
1615+ "foldable-traversable",
1616+ "prelude",
1617+ "strings",
1618+ "unicode"
1619+ ]
1620+ },
1621+ "tailrec": {
1622+ "type": "registry",
1623+ "version": "6.1.0",
1624+ "integrity": "sha256-xrorCfP0xV1wubs27idQCHQqdvSUuqmmL/am7Ji1wVU=",
1625+ "dependencies": [
1626+ "bifunctors",
1627+ "effect",
1628+ "either",
1629+ "identity",
1630+ "maybe",
1631+ "partial",
1632+ "prelude",
1633+ "refs"
1634+ ]
1635+ },
1636+ "transformers": {
1637+ "type": "registry",
1638+ "version": "6.1.0",
1639+ "integrity": "sha256-QJmgNT/y7ljPHSsXaW4zxF/982BFiQ90KNL1g/NtEOQ=",
1640+ "dependencies": [
1641+ "control",
1642+ "distributive",
1643+ "effect",
1644+ "either",
1645+ "exceptions",
1646+ "foldable-traversable",
1647+ "identity",
1648+ "lazy",
1649+ "maybe",
1650+ "newtype",
1651+ "prelude",
1652+ "st",
1653+ "tailrec",
1654+ "tuples",
1655+ "unfoldable"
1656+ ]
1657+ },
1658+ "tuples": {
1659+ "type": "registry",
1660+ "version": "7.0.0",
1661+ "integrity": "sha256-BKy7EfK8S1KeTCwyWqyW1wwcpSAQuh3IsczSVgS6fzY=",
1662+ "dependencies": [
1663+ "control",
1664+ "invariant",
1665+ "prelude"
1666+ ]
1667+ },
1668+ "type-equality": {
1669+ "type": "registry",
1670+ "version": "4.0.1",
1671+ "integrity": "sha256-BBqYOSnAKmayRvR5mtZoCf4SlYs2ipatD/+5nQx73aw=",
1672+ "dependencies": []
1673+ },
1674+ "typelevel-prelude": {
1675+ "type": "registry",
1676+ "version": "7.0.0",
1677+ "integrity": "sha256-+pHi14/40mTj/+lmCWqL0T7iXIXD1+NSg/KItyyoB0A=",
1678+ "dependencies": [
1679+ "prelude",
1680+ "type-equality"
1681+ ]
1682+ },
1683+ "unfoldable": {
1684+ "type": "registry",
1685+ "version": "6.0.0",
1686+ "integrity": "sha256-BK/6By1sKp/ztk+9CF3q43SV0QDTLVdsGqFerKHSmbg=",
1687+ "dependencies": [
1688+ "foldable-traversable",
1689+ "maybe",
1690+ "partial",
1691+ "prelude",
1692+ "tuples"
1693+ ]
1694+ },
1695+ "unicode": {
1696+ "type": "registry",
1697+ "version": "6.0.0",
1698+ "integrity": "sha256-5KugCNyYxscmZpnMbssOQA96XimuBN/bjHpdrtd5qaY=",
1699+ "dependencies": [
1700+ "arrays",
1701+ "enums",
1702+ "integers",
1703+ "maybe",
1704+ "partial",
1705+ "prelude",
1706+ "strings",
1707+ "unsafe-coerce"
1708+ ]
1709+ },
1710+ "unsafe-coerce": {
1711+ "type": "registry",
1712+ "version": "6.0.0",
1713+ "integrity": "sha256-0L1QsaY20OILjfU5TV72d3U/tSjhmL9hJ32WMp857Lk=",
1714+ "dependencies": []
1715+ },
1716+ "variant": {
1717+ "type": "registry",
1718+ "version": "8.0.0",
1719+ "integrity": "sha256-Ydrgl8liWEwYQOWW76PdZtg3vxKpoKgsnmFyTLgZkoU=",
1720+ "dependencies": [
1721+ "control",
1722+ "enums",
1723+ "foldable-traversable",
1724+ "lists",
1725+ "maybe",
1726+ "partial",
1727+ "prelude",
1728+ "type-equality",
1729+ "unsafe-coerce"
1730+ ]
1731+ },
1732+ "yoga-tree": {
1733+ "type": "registry",
1734+ "version": "1.0.0",
1735+ "integrity": "sha256-s8rIVEQkRi1VrMc92T9ceXcY0X6r5A4QqT6f7GgmDQI=",
1736+ "dependencies": [
1737+ "arrays",
1738+ "control",
1739+ "foldable-traversable",
1740+ "free",
1741+ "maybe",
1742+ "prelude",
1743+ "tailrec"
1744+ ]
1745+ }
1746+ }
1747+}
spago.yamlnew file+52
@@ -0,0 +1,52 @@
1+package:
2+ name: yoga-json
3+ dependencies:
4+ - arrays: ">=7.3.0 <8.0.0"
5+ - bifunctors: ">=6.0.0 <7.0.0"
6+ - control: ">=6.0.0 <7.0.0"
7+ - datetime: ">=6.1.0 <7.0.0"
8+ - effect: ">=4.0.0 <5.0.0"
9+ - either: ">=6.1.0 <7.0.0"
10+ - exceptions: ">=6.1.0 <7.0.0"
11+ - foldable-traversable: ">=6.0.0 <7.0.0"
12+ - foreign: ">=7.0.0 <8.0.0"
13+ - foreign-object: ">=4.1.0 <5.0.0"
14+ - free: ">=7.1.0 <8.0.0"
15+ - identity: ">=6.0.0 <7.0.0"
16+ - integers: ">=6.0.0 <7.0.0"
17+ - js-bigints: ">=2.2.1 <3.0.0"
18+ - js-date: ">=8.0.0 <9.0.0"
19+ - lists: ">=7.0.0 <8.0.0"
20+ - maybe: ">=6.0.0 <7.0.0"
21+ - newtype: ">=5.0.0 <6.0.0"
22+ - nullable: ">=6.0.0 <7.0.0"
23+ - numbers: ">=9.0.1 <10.0.0"
24+ - ordered-collections: ">=3.2.0 <4.0.0"
25+ - partial: ">=4.0.0 <5.0.0"
26+ - prelude: ">=6.0.2 <7.0.0"
27+ - record: ">=4.0.0 <5.0.0"
28+ - safe-coerce: ">=2.0.0 <3.0.0"
29+ - strings: ">=6.0.1 <7.0.0"
30+ - transformers: ">=6.1.0 <7.0.0"
31+ - tuples: ">=7.0.0 <8.0.0"
32+ - typelevel-prelude: ">=7.0.0 <8.0.0"
33+ - unsafe-coerce: ">=6.0.0 <7.0.0"
34+ - variant: ">=8.0.0 <9.0.0"
35+ - yoga-tree: ">=1.0.0 <2.0.0"
36+ test:
37+ main: Test.Main
38+ dependencies:
39+ - spec
40+ - spec-node
41+ - spec-discovery
42+ - strings-extra
43+
44+ publish:
45+ version: 5.2.2
46+ license: MIT
47+ location:
48+ githubOwner: rowtype-yoga
49+ githubRepo: purescript-yoga-json
50+workspace:
51+ packageSet:
52+ registry: 63.2.1
src/Yoga/JSON.js+10−9
@@ -1,18 +1,19 @@
11function reviver(key, value) {
2− if (key === 'big') {
3− return BigInt(value);
4− }
5− return value;
2+ if (key === "big") {
3+ return BigInt(value);
4+ }
5+ return value;
66}
77export const _parseJSON = (payload) => JSON.parse(payload, reviver);
88
99export const _undefined = undefined;
1010
1111function replacer(key, value) {
12− if (key === 'big') {
13− return value.toString();
14− }
15− return value;
12+ if (typeof value === "bigint") {
13+ return value.toString();
1614 }
17−
15+ return value;
16+}
17+
1818export const _unsafeStringify = (data) => JSON.stringify(data, replacer);
19+export const _unsafePrettyStringify = spaces => data => JSON.stringify(data, replacer, spaces);
src/Yoga/JSON.purs+162−65
@@ -4,6 +4,7 @@ module Yoga.JSON
44 , readJSON'
55 , readJSON_
66 , writeJSON
7+ , writePrettyJSON
78 , write
89 , read
910 , read'
@@ -11,7 +12,6 @@ module Yoga.JSON
1112 , parseJSON
1213 , undefined
1314 , unsafeStringify
14−
1515 , class ReadForeign
1616 , readImpl
1717 , class ReadForeignFields
@@ -21,27 +21,25 @@ module Yoga.JSON
2121 , class ReadTuple
2222 , readTupleImpl
2323 , tupleSize
24−
2524 , class WriteForeign
2625 , writeImpl
2726 , class WriteForeignFields
2827 , writeImplFields
2928 , class WriteForeignVariant
3029 , writeVariantImpl
31−
3230 ) where
3331
3432import Prelude
3533
3634import Control.Alt ((<|>))
3735import Control.Apply (lift2)
36+import Control.Comonad.Cofree as Cofree
3837import Control.Monad.Except (ExceptT(..), except, runExcept, throwError, withExcept)
3938import Data.Array as Array
4039import Data.Array.NonEmpty (NonEmptyArray, fromArray, toArray)
4140import Data.Bifunctor (lmap)
42−import Data.BigInt (BigInt)
43−import Data.BigInt as BigInt
4441import Data.DateTime (DateTime)
42+import Data.DateTime.Instant (Instant, instant, unInstant)
4543import Data.Either (Either(..), hush, note)
4644import Data.Foldable (class Foldable, foldl)
4745import Data.FoldableWithIndex (foldrWithIndex)
@@ -54,10 +52,15 @@ import Data.List.NonEmpty (NonEmptyList, singleton)
5452import Data.Map (Map)
5553import Data.Map as Map
5654import Data.Maybe (Maybe(..), fromMaybe, fromMaybe', maybe)
57−import Data.Newtype (class Newtype)
55+import Data.Newtype (class Newtype, unwrap, wrap)
5856import Data.Nullable (Nullable, toMaybe, toNullable)
5957import Data.Number as Number
58+import Data.Set (Set)
59+import Data.Set as Set
60+import Data.String.NonEmpty.Internal (NonEmptyString)
61+import Data.String.NonEmpty.Internal as NonEmptyString
6062import Data.Symbol (class IsSymbol, reflectSymbol)
63+import Data.Time.Duration (Days, Hours, Milliseconds, Minutes, Seconds)
6164import Data.Traversable (traverse)
6265import Data.Tuple (Tuple(..))
6366import Data.Variant (Variant, inj, on)
@@ -65,9 +68,11 @@ import Effect.Exception (message, try)
6568import Effect.Uncurried as EU
6669import Effect.Unsafe (unsafePerformEffect)
6770import Foreign (F, Foreign, ForeignError(..), MultipleErrors, fail, isNull, isUndefined, readArray, readBoolean, readChar, readInt, readNull, readNumber, readString, tagOf, unsafeFromForeign, unsafeReadTagged, unsafeToForeign)
68−import Foreign.Index (readProp)
71+import Foreign.Index (hasOwnProperty, readProp)
6972import Foreign.Object (Object)
7073import Foreign.Object as Object
74+import JS.BigInt (BigInt)
75+import JS.BigInt (fromInt, fromNumber, fromString, toString) as BigInt
7176import Partial.Unsafe (unsafeCrashWith)
7277import Prim.Row as Row
7378import Prim.RowList (class RowToList, Cons, Nil, RowList)
@@ -76,6 +81,8 @@ import Record.Builder (Builder)
7681import Record.Builder as Builder
7782import Type.Prelude (Proxy(..))
7883import Unsafe.Coerce (unsafeCoerce)
84+import Yoga.Tree (Tree)
85+import Yoga.Tree as Tree
7986
8087-- | An alias for the Either result of decoding
8188type E a = Either MultipleErrors a
@@ -83,7 +90,7 @@ type E a = Either MultipleErrors a
8390-- | Read a JSON string to a type `a` while returning a `MultipleErrors` if the
8491-- | parsing failed.
8592readJSON ∷
86− ∀ a.
93+ ∀ @a.
8794 ReadForeign a ⇒
8895 String →
8996 E a
@@ -91,7 +98,7 @@ readJSON = runExcept <<< (readImpl <=< parseJSON)
9198
9299-- | Read a JSON string to a type `a` using `F a`. Useful with record types.
93100readJSON' ∷
94− ∀ a.
101+ ∀ @a.
95102 ReadForeign a ⇒
96103 String →
97104 F a
@@ -100,7 +107,7 @@ readJSON' = readImpl <=< parseJSON
100107-- | Read a JSON string to a type `a` while returning `Nothing` if the parsing
101108-- | failed.
102109readJSON_ ∷
103− ∀ a.
110+ ∀ @a.
104111 ReadForeign a ⇒
105112 String →
106113 Maybe a
@@ -109,6 +116,9 @@ readJSON_ = hush <<< readJSON
109116-- | JSON.stringify
110117foreign import _unsafeStringify ∷ ∀ a. a → String
111118
119+-- | JSON.stringify with a number of spaces
120+foreign import _unsafePrettyStringify ∷ ∀ a. Int → a → String
121+
112122unsafeStringify ∷ ∀ a. a → String
113123unsafeStringify = _unsafeStringify
114124
@@ -120,6 +130,14 @@ writeJSON ∷
120130 String
121131writeJSON = _unsafeStringify <<< writeImpl
122132
133+writePrettyJSON ∷
134+ ∀ a.
135+ WriteForeign a ⇒
136+ Int →
137+ a →
138+ String
139+writePrettyJSON spaces = _unsafePrettyStringify spaces <<< writeImpl
140+
123141write ∷
124142 ∀ a.
125143 WriteForeign a ⇒
@@ -129,14 +147,14 @@ write = writeImpl
129147
130148-- | Read a Foreign value to a type
131149read ∷
132− ∀ a.
150+ ∀ @a.
133151 ReadForeign a ⇒
134152 Foreign →
135153 E a
136154read = runExcept <<< readImpl
137155
138156read' ∷
139− ∀ a.
157+ ∀ @a.
140158 ReadForeign a ⇒
141159 Foreign →
142160 F a
@@ -144,7 +162,7 @@ read' = readImpl
144162
145163-- | Read a Foreign value to a type, as a Maybe of type
146164read_ ∷
147− ∀ a.
165+ ∀ @a.
148166 ReadForeign a ⇒
149167 Foreign →
150168 Maybe a
@@ -194,24 +212,30 @@ instance ReadForeign BigInt where
194212 where
195213 tryInt f = readInt f <#> BigInt.fromInt
196214 tryNumber f = do
197− num <- readNumber f
215+ num ← readNumber f
198216 if Number.round num == num then
199217 BigInt.fromNumber num
200218 # note (err $ "Cannot convert Number " <> show num <> " to BigInt")
201219 # except
202− else
203− (Left $ err $ "Cannot convert decimal Number " <> show num <> " to BigInt")
204− # except
220+ else
221+ (Left $ err $ "Cannot convert decimal Number " <> show num <> " to BigInt")
222+ # except
205223 tryString f = do
206224 bi ← readString f
207225 BigInt.fromString bi
208− # note ( err $ "Cannot convert String " <> bi <> " to BigInt")
226+ # note (err $ "Cannot convert String " <> bi <> " to BigInt")
209227 # except
210228 err = pure <<< ForeignError
211229
212230instance ReadForeign String where
213231 readImpl = readString
214232
233+instance ReadForeign NonEmptyString where
234+ readImpl = readString >=>
235+ NonEmptyString.fromString
236+ >>> note (pure $ ForeignError "String must not be empty")
237+ >>> except
238+
215239instance ReadForeign Boolean where
216240 readImpl = readBoolean
217241
@@ -235,27 +259,27 @@ instance ReadForeign a ⇒ ReadForeign (Nullable a) where
235259
236260instance (ReadForeign a, ReadForeign b) ⇒ ReadForeign (Either a b) where
237261 readImpl f = do
238− { type: tpe, value } :: { type :: String, value :: Foreign } <- readImpl f
262+ { type: tpe, value } ∷ { type ∷ String, value ∷ Foreign } ← readImpl f
239263 case tpe of
240− "left" -> Left <$> readImpl value
241− "right" -> Right <$> readImpl value
242− _ -> except $ Left (pure $ ForeignError $ "Invalid Either tag " <> tpe)
264+ "left" → Left <$> readImpl value
265+ "right" → Right <$> readImpl value
266+ _ → except $ Left (pure $ ForeignError $ "Invalid Either tag " <> tpe)
243267
244268instance ReadForeign a ⇒ ReadForeign (Object.Object a) where
245269 readImpl = gatherErrors <<< Object.mapWithKey readProp <=< readObject'
246270 where
247− gatherErrors :: Object (F a) -> F (Object a)
271+ gatherErrors ∷ Object (F a) → F (Object a)
248272 gatherErrors = Object.toUnfoldable
249273 >>> Array.foldl fn (Right (Object.empty))
250274 >>> except
251275 where
252− fn :: _ -> _ -> (Either MultipleErrors (Object a))
276+ fn ∷ _ → _ → (Either MultipleErrors (Object a))
253277 fn acc (Tuple k v) = do
254278 case acc, runExcept v of
255− Left errs, Left errsNew -> Left (errs <> errsNew)
256− Left errs, Right _ -> Left errs
257− Right obj, Right value -> Right (Object.insert k value obj)
258− Right _, Left errs -> Left errs
279+ Left errs, Left errsNew → Left (errs <> errsNew)
280+ Left errs, Right _ → Left errs
281+ Right obj, Right value → Right (Object.insert k value obj)
282+ Right _, Left errs → Left errs
259283
260284 readProp key value = except $ lmap (map (ErrorAtProperty key))
261285 (readImpl value # runExcept)
@@ -336,10 +360,10 @@ instance
336360 ReadForeignFields (Cons name ty tail) from to where
337361 getFields _ obj = except
338362 case runExcept first, runExcept rest of
339− Right f, Right r -> Right (f <<< r)
340− Left e1, Left e2 -> Left (e1 <> e2)
341− Right _, Left es -> Left es
342− Left es, Right _ -> Left es
363+ Right f, Right r → Right (f <<< r)
364+ Left e1, Left e2 → Left (e1 <> e2)
365+ Right _, Left es → Left es
366+ Left es, Right _ → Left es
343367 where
344368 value = enrichErrorWithPropName (readImpl =<< readProp name obj)
345369 first = Builder.insert nameP <$> value
@@ -379,10 +403,13 @@ instance
379403 , ReadForeignVariant tail row
380404 ) ⇒
381405 ReadForeignVariant (Cons name ty tail) row where
382− readVariantImpl _ o = readVariantImpl (Proxy :: Proxy tail) o <|> ado
383− value :: ty <- readProp name o >>= readImpl
384− in inj namep value
406+ readVariantImpl _ o =
407+ if hasOwnProperty @String @Identity name o then rest <|> ado
408+ value ∷ ty ← readProp name o >>= readImpl
409+ in inj namep value
410+ else rest
385411 where
412+ rest = readVariantImpl (Proxy ∷ Proxy tail) o
386413 namep = Proxy ∷ Proxy name
387414 name = reflectSymbol namep
388415
@@ -402,6 +429,9 @@ instance WriteForeign Foreign where
402429instance WriteForeign String where
403430 writeImpl = unsafeToForeign
404431
432+instance WriteForeign NonEmptyString where
433+ writeImpl = unsafeToForeign
434+
405435instance WriteForeign Int where
406436 writeImpl = unsafeToForeign
407437
@@ -428,8 +458,8 @@ instance WriteForeign a ⇒ WriteForeign (Nullable a) where
428458
429459instance (WriteForeign a, WriteForeign b) ⇒ WriteForeign (Either a b) where
430460 writeImpl value = case value of
431− Left l -> writeImpl { type: "left", value: writeImpl l}
432− Right r -> writeImpl { type: "right", value: writeImpl r}
461+ Left l → writeImpl { type: "left", value: writeImpl l }
462+ Right r → writeImpl { type: "right", value: writeImpl r }
433463
434464instance WriteForeign a ⇒ WriteForeign (Object.Object a) where
435465 writeImpl = unsafeToForeign <<< Object.mapWithKey (const writeImpl)
@@ -532,23 +562,30 @@ instance writeForeignNEArray ∷ WriteForeign a ⇒ WriteForeign (NonEmptyArray
532562 writeImpl a = writeImpl <<< toArray $ a
533563
534564-- Map instances
535−instance (WriteForeign a) => WriteForeign (Map String a) where
565+instance (WriteForeign a) ⇒ WriteForeign (Map String a) where
536566 writeImpl = foldrWithIndex Object.insert Object.empty >>> writeImpl
537−else
538−instance (WriteForeign a) => WriteForeign (Map Int a) where
567+else instance (WriteForeign a) ⇒ WriteForeign (Map Int a) where
539568 writeImpl = foldrWithIndex (show >>> Object.insert) Object.empty >>> writeImpl
540−else
541−instance (Newtype nt key, WriteForeign (Map key value)) => WriteForeign (Map nt value) where
542− writeImpl = (unsafeCoerce :: (_ -> Map key value )) >>> writeImpl
543−
544−instance (ReadForeign a) => ReadForeign (Map String a) where
545− readImpl = (readImpl :: (_ -> _ (Object a))) >>> map (foldrWithIndex Map.insert Map.empty)
546−else
547−instance (ReadForeign a) => ReadForeign (Map Int a) where
548− readImpl = (readImpl :: (_ -> _ (Object a))) >>> map (foldrWithIndex (unsafeStringToInt >>> Map.insert) Map.empty)
549−else
550−instance (Newtype nt key, ReadForeign (Map key value)) => ReadForeign (Map nt value) where
551− readImpl = (readImpl :: (_ -> _ (Map key value))) >>> map (unsafeCoerce :: (Map key value -> Map nt value))
569+else instance (WriteForeign a) ⇒ WriteForeign (Map BigInt a) where
570+ writeImpl = foldrWithIndex (BigInt.toString >>> Object.insert) Object.empty >>> writeImpl
571+else instance (Newtype nt key, WriteForeign (Map key value)) ⇒ WriteForeign (Map nt value) where
572+ writeImpl = (unsafeCoerce ∷ (_ → Map key value)) >>> writeImpl
573+
574+instance (ReadForeign a) ⇒ ReadForeign (Map String a) where
575+ readImpl = (readImpl ∷ (_ → _ (Object a))) >>> map (foldrWithIndex Map.insert Map.empty)
576+else instance (ReadForeign a) ⇒ ReadForeign (Map Int a) where
577+ readImpl = (readImpl ∷ (_ → _ (Object a))) >>> map (foldrWithIndex (unsafeStringToInt >>> Map.insert) Map.empty)
578+else instance (ReadForeign a) ⇒ ReadForeign (Map BigInt a) where
579+ readImpl = (readImpl ∷ (_ → _ (Object a))) >>> map (foldrWithIndex (unsafeStringToBigInt >>> Map.insert) Map.empty)
580+else instance (Newtype nt key, ReadForeign (Map key value)) ⇒ ReadForeign (Map nt value) where
581+ readImpl = (readImpl ∷ (_ → _ (Map key value))) >>> map (unsafeCoerce ∷ (Map key value → Map nt value))
582+
583+-- Set instances
584+instance (WriteForeign a) ⇒ WriteForeign (Set a) where
585+ writeImpl set = writeImpl (Set.toUnfoldable set ∷ Array a)
586+
587+instance (Ord a, ReadForeign a) ⇒ ReadForeign (Set a) where
588+ readImpl f = Set.fromFoldable <$> (readImpl f ∷ F (Array a))
552589
553590-- Date instances
554591instance WriteForeign JSDate where
@@ -566,21 +603,81 @@ instance ReadForeign DateTime where
566603 >>> note (pure $ ForeignError "Invalid date time")
567604 >>> except
568605
569−unsafeStringToInt :: String → Int
570−unsafeStringToInt = Int.fromString >>>
571− (fromMaybe' \_ -> unsafeCrashWith "impossible")
606+instance WriteForeign Instant where
607+ writeImpl = unInstant >>> writeImpl
608+
609+instance ReadForeign Instant where
610+ readImpl f = do
611+ millis ← readImpl f
612+ case instant millis of
613+ Nothing → except $ Left (pure $ ForeignError "Invalid instant")
614+ Just ins → pure ins
615+
616+instance WriteForeign Milliseconds where
617+ writeImpl = unwrap >>> writeImpl
618+
619+instance ReadForeign Milliseconds where
620+ readImpl = readImpl >>> map wrap
621+
622+instance WriteForeign Seconds where
623+ writeImpl = unwrap >>> writeImpl
624+
625+instance ReadForeign Seconds where
626+ readImpl = readImpl >>> map wrap
627+
628+instance WriteForeign Minutes where
629+ writeImpl = unwrap >>> writeImpl
572630
573−sequenceCombining :: forall f a.
574− Monoid (f a) =>
575− Foldable f =>
576− Applicative f =>
577− f (F a) -> F (f a)
631+instance ReadForeign Minutes where
632+ readImpl = readImpl >>> map wrap
633+
634+instance WriteForeign Hours where
635+ writeImpl = unwrap >>> writeImpl
636+
637+instance ReadForeign Hours where
638+ readImpl = readImpl >>> map wrap
639+
640+instance WriteForeign Days where
641+ writeImpl = unwrap >>> writeImpl
642+
643+instance ReadForeign Days where
644+ readImpl = readImpl >>> map wrap
645+
646+unsafeStringToInt ∷ String → Int
647+unsafeStringToInt = Int.fromString >>>
648+ (fromMaybe' \_ → unsafeCrashWith "impossible")
649+
650+unsafeStringToBigInt ∷ String → BigInt
651+unsafeStringToBigInt = BigInt.fromString >>>
652+ (fromMaybe' \_ → unsafeCrashWith "impossible")
653+
654+sequenceCombining ∷
655+ ∀ f a.
656+ Monoid (f a) ⇒
657+ Foldable f ⇒
658+ Applicative f ⇒
659+ f (F a) →
660+ F (f a)
578661sequenceCombining = foldl fn (Right mempty) >>> except
579662 where
580− fn :: _ -> _ -> (Either MultipleErrors (f a))
663+ fn ∷ _ → _ → (Either MultipleErrors (f a))
581664 fn acc elem = do
582665 case acc, runExcept elem of
583− Left errs, Left errsNew -> Left (errs <> errsNew)
584− Left errs, Right _ -> Left errs
585− Right values, Right value -> Right (values <> pure value)
586− Right _, Left errs -> Left errs
666+ Left errs, Left errsNew → Left (errs <> errsNew)
667+ Left errs, Right _ → Left errs
668+ Right values, Right value → Right (values <> pure value)
669+ Right _, Left errs → Left errs
670+
671+instance WriteForeign a ⇒ WriteForeign (Tree a) where
672+ writeImpl ∷ Tree a → Foreign
673+ writeImpl t = write { value: Cofree.head t, children }
674+ where
675+ tail = Cofree.tail t
676+ children = if Array.null tail then Nothing else Just (writeImpl <$> tail)
677+
678+instance ReadForeign a ⇒ ReadForeign (Tree a) where
679+ readImpl f = do
680+ { value, children } ∷ { value ∷ a, children ∷ Maybe (Array Foreign) } ← readImpl f
681+ case children of
682+ Nothing → pure (Tree.leaf value)
683+ Just cs → traverse readImpl cs <#> Tree.mkTree value
src/Yoga/JSON/Derive.pursnew file+13
@@ -0,0 +1,13 @@
1+module Yoga.JSON.Derive where
2+
3+import Prelude
4+
5+import Foreign (Foreign, F)
6+import Safe.Coerce (class Coercible, coerce)
7+import Yoga.JSON (class ReadForeign, class WriteForeign, readImpl, writeImpl)
8+
9+writeVia ∷ ∀ @via a. (Coercible a via) ⇒ WriteForeign via ⇒ a → Foreign
10+writeVia = writeImpl <<< (coerce ∷ _ → via)
11+
12+readVia ∷ ∀ @via a. (Coercible a via) ⇒ ReadForeign via ⇒ Foreign → F a
13+readVia fgn = readImpl fgn # map (coerce ∷ via → _)
src/Yoga/JSON/Error.purs+14−7
@@ -3,23 +3,30 @@ module Yoga.JSON.Error where
33import Prelude
44
55import Foreign (ForeignError(..))
6+import Data.Semigroup.Foldable (intercalateMap)
7+import Data.Bifunctor (lmap)
8+import Yoga.JSON (E)
9+import Data.Either (Either)
610
7−toJSONPath :: ForeignError -> String
11+toJSONPath ∷ ForeignError → String
812toJSONPath fe = "$" <> path
913 where
1014 path = go fe
1115 go = case _ of
12− ForeignError _ -> ""
13− TypeMismatch _ _ -> ""
14− ErrorAtIndex i e -> "[" <> show i <> "]" <> go e
15− ErrorAtProperty _ (TypeMismatch _ "undefined") -> ""
16− ErrorAtProperty prop e -> "." <> prop <> go e
16+ ForeignError _ → ""
17+ TypeMismatch _ _ → ""
18+ ErrorAtIndex i e → "[" <> show i <> "]" <> go e
19+ ErrorAtProperty _ (TypeMismatch _ "undefined") → ""
20+ ErrorAtProperty prop e → "." <> prop <> go e
1721
18−renderHumanError :: ForeignError -> String
22+renderHumanError ∷ ForeignError → String
1923renderHumanError = errorToJSON >>> toHuman
2024 where
2125 toHuman { message, path } = message <> " at " <> path
2226
27+withStringErrors :: forall a. E a -> Either String a
28+withStringErrors = lmap (intercalateMap "\n" renderHumanError)
29+
2330errorToJSON ∷
2431 ForeignError →
2532 { message ∷ String
src/Yoga/JSON/Generics/EnumSumRep.purs+3−3
@@ -36,8 +36,8 @@ genericWriteForeignEnum options a = genericEnumWriteForeign options (GR.from a)
3636
3737-- | Generic Enum Sum Representations, with constructor names as strings
3838class GenericEnumSumRep rep where
39− genericEnumReadForeign ∷ Options -> Foreign → Foreign.F rep
40− genericEnumWriteForeign ∷ Options -> rep → Foreign
39+ genericEnumReadForeign ∷ Options → Foreign → Foreign.F rep
40+ genericEnumWriteForeign ∷ Options → rep → Foreign
4141
4242instance
4343 ( GenericEnumSumRep a
@@ -58,7 +58,7 @@ instance
5858 s ← JSON.readImpl f
5959 if s == options.toConstructorName name then pure $ GR.Constructor GR.NoArguments
6060 else fail <<< Foreign.ForeignError $
61− "Enum string " <> s <> " did not match expected string " <> name
61+ "Enum string " <> s <> " did not match expected string " <> options.toConstructorName name
6262 where
6363 name = reflectSymbol (Proxy ∷ Proxy name)
6464 genericEnumWriteForeign options (GR.Constructor GR.NoArguments) =
src/Yoga/JSON/Generics/UntaggedProductRep.purs+6−3
@@ -58,18 +58,21 @@ genericWriteForeignUntaggedProduct ∷
5858genericWriteForeignUntaggedProduct a =
5959 JSON.write (genericWriteForeignUntaggedProductRep [] (GR.from a))
6060
61−
6261-- | Generic Untagged Product Representations, as a heterogeneous fixed-length array
6362-- | You should consider using records instead in almost any usage.
6463class WriteGenericUntaggedProduct rep where
6564 genericWriteForeignUntaggedProductRep ∷ Array Foreign → rep → Array Foreign
6665
67−instance (WriteGenericUntaggedProduct a) ⇒
66+instance
67+ ( WriteGenericUntaggedProduct a
68+ ) ⇒
6869 WriteGenericUntaggedProduct (GR.Constructor name a) where
6970 genericWriteForeignUntaggedProductRep arr (GR.Constructor a) =
7071 genericWriteForeignUntaggedProductRep arr a
7172
72−instance (JSON.WriteForeign a) ⇒
73+instance
74+ ( JSON.WriteForeign a
75+ ) ⇒
7376 WriteGenericUntaggedProduct (GR.Argument a) where
7477 genericWriteForeignUntaggedProductRep arr (GR.Argument a) =
7578 Array.snoc arr (JSON.write a)
src/Yoga/JSON/Generics/UntaggedSumRep.purs+22−22
@@ -8,69 +8,69 @@ import Foreign (Foreign)
88import Foreign as Foreign
99import Yoga.JSON as JSON
1010
11−genericReadForeignUntaggedSum
12− :: forall a rep
13− . GR.Generic a rep
14− => ReadGenericUntaggedSumRep rep
15− => Foreign
16− -> Foreign.F a
11+genericReadForeignUntaggedSum ∷
12+ ∀ a rep.
13+ GR.Generic a rep ⇒
14+ ReadGenericUntaggedSumRep rep ⇒
15+ Foreign →
16+ Foreign.F a
1717genericReadForeignUntaggedSum f = GR.to <$> genericReadForeignUntaggedSumRep f
1818
1919-- | Generic Untagged Sum Representations
2020-- | Note that because the members are untagged, you should verify your members are not the same type
2121class ReadGenericUntaggedSumRep rep where
22− genericReadForeignUntaggedSumRep :: Foreign -> Foreign.F rep
22+ genericReadForeignUntaggedSumRep ∷ Foreign → Foreign.F rep
2323
2424instance
2525 ( ReadGenericUntaggedSumRep a
2626 , ReadGenericUntaggedSumRep b
27− ) =>
27+ ) ⇒
2828 ReadGenericUntaggedSumRep (GR.Sum a b) where
2929 genericReadForeignUntaggedSumRep f = GR.Inl <$> genericReadForeignUntaggedSumRep f
3030 <|> GR.Inr <$> genericReadForeignUntaggedSumRep f
3131
3232instance
3333 ( ReadGenericUntaggedSumRep a
34− ) =>
34+ ) ⇒
3535 ReadGenericUntaggedSumRep (GR.Constructor name a) where
3636 genericReadForeignUntaggedSumRep f = GR.Constructor <$> genericReadForeignUntaggedSumRep f
3737
3838instance
3939 ( JSON.ReadForeign a
40− ) =>
40+ ) ⇒
4141 ReadGenericUntaggedSumRep (GR.Argument a) where
4242 genericReadForeignUntaggedSumRep f = GR.Argument <$> JSON.readImpl f
4343
44−genericWriteForeignUntaggedSum
45− :: forall a rep
46− . GR.Generic a rep
47− => WriteGenericUntaggedSumRep rep
48− => a
49− -> Foreign
44+genericWriteForeignUntaggedSum ∷
45+ ∀ a rep.
46+ GR.Generic a rep ⇒
47+ WriteGenericUntaggedSumRep rep ⇒
48+ a →
49+ Foreign
5050genericWriteForeignUntaggedSum a = GR.from a # genericWriteForeignUntaggedSumRep
5151
5252-- | Generic Untagged Sum Representations
5353-- | Note that because the members are untagged, you should verify your members are not the same type
5454class WriteGenericUntaggedSumRep rep where
55− genericWriteForeignUntaggedSumRep :: rep -> Foreign
55+ genericWriteForeignUntaggedSumRep ∷ rep → Foreign
5656
5757instance
5858 ( WriteGenericUntaggedSumRep a
5959 , WriteGenericUntaggedSumRep b
60− ) =>
60+ ) ⇒
6161 WriteGenericUntaggedSumRep (GR.Sum a b) where
6262 genericWriteForeignUntaggedSumRep = case _ of
63− GR.Inl a -> genericWriteForeignUntaggedSumRep a
64− GR.Inr a -> genericWriteForeignUntaggedSumRep a
63+ GR.Inl a → genericWriteForeignUntaggedSumRep a
64+ GR.Inr a → genericWriteForeignUntaggedSumRep a
6565
6666instance
6767 ( WriteGenericUntaggedSumRep a
68− ) =>
68+ ) ⇒
6969 WriteGenericUntaggedSumRep (GR.Constructor name a) where
7070 genericWriteForeignUntaggedSumRep (GR.Constructor a) = genericWriteForeignUntaggedSumRep a
7171
7272instance
7373 ( JSON.WriteForeign a
74− ) =>
74+ ) ⇒
7575 WriteGenericUntaggedSumRep (GR.Argument a) where
7676 genericWriteForeignUntaggedSumRep (GR.Argument a) = JSON.write a
src/Yoga/JSON/Variant.purs+6−6
@@ -20,8 +20,8 @@ newtype TaggedVariant ∷ Symbol → Symbol → Row Type → Type
2020newtype TaggedVariant tt vt v = TaggedVariant (Variant v)
2121
2222instance Newtype (TaggedVariant tt vt v) (Variant v)
23−derive newtype instance (Show (Variant v)) => Show (TaggedVariant tt vt v)
24−derive newtype instance (Eq (Variant v)) => Eq (TaggedVariant tt vt v)
23+derive newtype instance (Show (Variant v)) ⇒ Show (TaggedVariant tt vt v)
24+derive newtype instance (Eq (Variant v)) ⇒ Eq (TaggedVariant tt vt v)
2525
2626instance
2727 ( RowToList row rl
@@ -104,7 +104,7 @@ instance
104104 readVariantImpl _ o = readVariantImpl (Proxy ∷ Proxy tail) o <|> do
105105 type_ ← readProp typeTag o >>= readImpl
106106 if type_ == name then do
107− value :: ty <- readProp valueTag o >>= readImpl
107+ value ∷ ty ← readProp valueTag o >>= readImpl
108108 pure $ TaggedVariant (inj namep value)
109109 else
110110 (fail <<< ForeignError $ "Did not match variant tag " <> name)
@@ -121,8 +121,8 @@ newtype UntaggedVariant ∷ Row Type → Type
121121newtype UntaggedVariant v = UntaggedVariant (Variant v)
122122
123123instance Newtype (UntaggedVariant v) (Variant v)
124−derive newtype instance (Show (Variant v)) => Show (UntaggedVariant v)
125−derive newtype instance (Eq (Variant v)) => Eq (UntaggedVariant v)
124+derive newtype instance (Show (Variant v)) ⇒ Show (UntaggedVariant v)
125+derive newtype instance (Eq (Variant v)) ⇒ Eq (UntaggedVariant v)
126126
127127instance
128128 ( RowToList row rl
@@ -190,7 +190,7 @@ instance
190190 ReadForeignUntaggedVariant (Cons name ty tail) row where
191191 readUntaggedVariantImpl _ o =
192192 readUntaggedVariantImpl (Proxy ∷ Proxy tail) o <|> ado
193− v <- readImpl o
193+ v ← readImpl o
194194 in UntaggedVariant (inj namep v)
195195
196196 where
test.dhalldeleted−15
@@ -1,15 +0,0 @@
1−let conf = ./spago.dhall
2−
3−in conf
4− // { sources = conf.sources # [ "test/**/*.purs" ]
5− , dependencies =
6− conf.dependencies
7− # [ "spec"
8− , "spec-discovery"
9− , "aff"
10− , "strings-extra"
11− , "newtype"
12− , "debug"
13− , "now"
14− ]
15− }
test/BasicsSpec.purs+144−50
@@ -3,32 +3,38 @@ module Test.BasicsSpec where
33import Prelude
44
55import Data.Array.NonEmpty as NEA
6−import Data.BigInt (BigInt)
7−import Data.Either (Either(..))
6+import Data.Either (Either(..), isLeft)
87import Data.Foldable (traverse_)
98import Data.JSDate as JSDate
109import Data.List as List
1110import Data.List.Lazy as LazyList
1211import Data.Map as Map
13−import Data.Maybe (Maybe(..), fromMaybe')
12+import Data.Maybe (Maybe(..), fromJust, fromMaybe')
1413import Data.Newtype (class Newtype, un)
1514import Data.Nullable as Nullable
15+import Data.Set as Set
16+import Data.String.NonEmpty (NonEmptyString, nes)
17+import Data.Time.Duration (Days(..), Hours(..), Milliseconds(..), Minutes(..), Seconds(..))
1618import Data.Tuple (Tuple(..))
1719import Data.Tuple.Nested ((/\))
1820import Data.Variant (Variant, inj)
1921import Effect.Class (liftEffect)
2022import Effect.Now (nowDateTime)
23+import Foreign (ForeignError(..))
2124import Foreign.Object as Object
22−import Partial.Unsafe (unsafeCrashWith)
25+import JS.BigInt (BigInt)
26+import JS.BigInt as BigInt
27+import Partial.Unsafe (unsafeCrashWith, unsafePartial)
2328import Test.Spec (Spec, describe, it)
2429import Test.Spec.Assertions (shouldEqual)
2530import Test.Util (roundtrips)
2631import Type.Proxy (Proxy(..))
2732import Yoga.JSON (class ReadForeign, class WriteForeign, readJSON, writeJSON)
2833import Yoga.JSON.Variant (TaggedVariant(..), UntaggedVariant(..))
34+import Yoga.Tree (Tree, mkLeaf, mkTree, showTree)
2935
30−spec :: Spec Unit
31−spec = describe "En- and decoding" $ do
36+spec ∷ Spec Unit
37+spec = describe "En- and decoding" do
3238
3339 describe "works on primitive types" do
3440 it "roundtrips Number" $ roundtrips 3.1414
@@ -40,71 +46,97 @@ spec = describe "En- and decoding" $ do
4046 it "roundtrips Maybe" do
4147 roundtrips (Just 3)
4248 -- just roundtrips Nothing doesn't work when rendering the JSON
43− roundtrips { empty: Nothing :: Maybe Int }
44− it "roundtrips Nullable" $ traverse_ roundtrips [Nullable.notNull 3, Nullable.null]
49+ roundtrips { empty: Nothing ∷ Maybe Int }
50+ it "roundtrips Nullable" $ traverse_ roundtrips [ Nullable.notNull 3, Nullable.null ]
4551 it "roundtrips Either" do
46− roundtrips ((Left 3) :: Either Int Int)
47− roundtrips ((Right 3) :: Either String Int)
48− writeJSON (Right 3 :: Either Int Int) `shouldEqual` """{"value":3,"type":"right"}"""
49− writeJSON (Left true :: Either Boolean Int) `shouldEqual` """{"value":true,"type":"left"}"""
50− it "roundtrips Tuple" $ do
52+ roundtrips ((Left 3) ∷ Either Int Int)
53+ roundtrips ((Right 3) ∷ Either String Int)
54+ writeJSON (Right 3 ∷ Either Int Int) `shouldEqual` """{"value":3,"type":"right"}"""
55+ writeJSON (Left true ∷ Either Boolean Int) `shouldEqual` """{"value":true,"type":"left"}"""
56+
57+ it "roundtrips Tuple" do
5158 roundtrips (Tuple 3 4)
5259 roundtrips ("4" /\ 8 /\ Just 4)
53− it "roundtrips Array" $ traverse_ roundtrips [["A", "B"],[]]
54− it "roundtrips LazyList" $ traverse_ roundtrips (LazyList.fromFoldable [["A", "B"],[]])
55− it "roundtrips List" $ traverse_ roundtrips (List.fromFoldable [["A", "B"],[]])
56− it "roundtrips NonEmptyArray" $ roundtrips (NEA.cons' "A" ["B"])
60+ it "roundtrips Array" $ traverse_ roundtrips [ [ "A", "B" ], [] ]
61+ it "roundtrips LazyList" $ traverse_ roundtrips (LazyList.fromFoldable [ [ "A", "B" ], [] ])
62+ it "roundtrips List" $ traverse_ roundtrips (List.fromFoldable [ [ "A", "B" ], [] ])
63+ it "roundtrips NonEmptyArray" $ roundtrips (NEA.cons' "A" [ "B" ])
5764 it "roundtrips Object" $ roundtrips (Object.fromHomogeneous { a: 12, b: 54 })
58− it "roundtrips String Map" $ roundtrips (Map.fromFoldable [("A" /\ 8),("C" /\ 7)])
59− it "roundtrips Int Map" $ roundtrips (Map.fromFoldable [(4 /\ "B"),(8 /\ "D")])
65+ it "roundtrips String Map" $ roundtrips (Map.fromFoldable [ ("A" /\ 8), ("C" /\ 7) ])
66+ it "roundtrips Int Map" $ roundtrips (Map.fromFoldable [ (4 /\ "B"), (8 /\ "D") ])
6067 it "roundtrips Map with String newtype keys"
61− $ roundtrips (Map.fromFoldable [(Stringy "A" /\ "B"),(Stringy "C" /\ "D")])
68+ $ roundtrips (Map.fromFoldable [ (Stringy "A" /\ "B"), (Stringy "C" /\ "D") ])
6269 it "roundtrips Map with Int newtype keys"
63− $ roundtrips (Map.fromFoldable [(Inty 4 /\ "B"),(Inty 8 /\ "D")])
70+ $ roundtrips (Map.fromFoldable [ (Inty 4 /\ "B"), (Inty 8 /\ "D") ])
71+ it "roundtrips Map with BigInt newtype keys"
72+ $ roundtrips (Map.fromFoldable [ (BigInty (BigInt.fromInt 5) /\ "B"), (BigInty big /\ "D") ])
73+ it "roundtrips Set String" $ roundtrips (Set.fromFoldable [ "A", "B", "C" ])
6474 it "roundtrips BigInt" do
6575 let
6676 inputStr = """{ "number":1, "big": 18014398509481982, "mediumBig": 1652955871799, "smallBig": 10 }"""
6777 expected = """{"smallBig":"10","number":1,"mediumBig":"1652955871799","big":"18014398509481982"}"""
68− parsed ∷ _ ({ number ∷ Int, mediumBig :: BigInt, big ∷ BigInt, smallBig ∷ BigInt })
78+
79+ parsed ∷ _ ({ number ∷ Int, mediumBig ∷ BigInt, big ∷ BigInt, smallBig ∷ BigInt })
6980 parsed = readJSON inputStr
7081 stringified = parsed <#> writeJSON
7182 stringified `shouldEqual` (Right expected)
72− -- [TODO] Comment in as soon as bug in big-integers is fixed
73− -- @sigma-andex: What bug? Can we link this???
74− -- it "roundtrips BigInt (2)" do
75− -- let
76− -- smallBig = BigInt.fromInt 10
77− -- big = unsafePartial $ fromJust $ BigInt.fromString "18014398509481982"
7883
79− -- expected = { big, smallBig }
80− -- json = spy "json" $ writeJSON expected
84+ it "roundtrips BigInt (2)" do
85+ let
86+ smallBig = BigInt.fromInt 10
87+
88+ expected = { big, smallBig }
89+ json = writeJSON expected
8190
82− -- parsed ∷ _ ({ big ∷ BigInt, smallBig ∷ BigInt })
83− -- parsed = readJSON json
84− -- (spy "parsed" parsed) `shouldEqual` (Right expected)
91+ parsed ∷ _ ({ big ∷ BigInt, smallBig ∷ BigInt })
92+ parsed = readJSON json
93+ parsed `shouldEqual` (Right expected)
8594
8695 describe "works with JSDate" do
8796 it "roundtrips" do
88− now <- JSDate.now # liftEffect
97+ now ← JSDate.now # liftEffect
8998 roundtrips now
90− someDate <- JSDate.parse "2022-01-01:00:00:00Z" # liftEffect
99+ someDate ← JSDate.parse "2022-01-01:00:00:00Z" # liftEffect
91100 let result = writeJSON someDate
92101 let expected = show "2022-01-01T00:00:00.000Z"
93102 result `shouldEqual` expected
94103
95104 describe "works with DateTime" do
96105 it "roundtrips" do
97− now <- nowDateTime # liftEffect
106+ now ← nowDateTime # liftEffect
98107 roundtrips now
99− someDate <- JSDate.parse "2022-01-01:00:00:00Z" <#> (JSDate.toDateTime >>> fromMaybe' \_ -> unsafeCrashWith "nope") # liftEffect
108+ someDate ← JSDate.parse "2022-01-01:00:00:00Z" <#> (JSDate.toDateTime >>> fromMaybe' \_ → unsafeCrashWith "nope") # liftEffect
100109 let result = writeJSON someDate
101110 let expected = show "2022-01-01T00:00:00.000Z"
102111 result `shouldEqual` expected
103112
113+ describe "works with Durations" do
114+ it "roundtrips" do
115+ let millis = Milliseconds 16.67
116+ roundtrips millis
117+ writeJSON millis `shouldEqual` "16.67"
118+
119+ let seconds = Seconds 60.0
120+ roundtrips seconds
121+ writeJSON seconds `shouldEqual` "60"
122+
123+ let minutes = Minutes 10.0
124+ roundtrips minutes
125+ writeJSON minutes `shouldEqual` "10"
126+
127+ let hours = Hours 24.0
128+ roundtrips hours
129+ writeJSON hours `shouldEqual` "24"
130+
131+ let days = Days 365.0
132+ roundtrips days
133+ writeJSON days `shouldEqual` "365"
134+
104135 describe "works on record types" do
105136 it "roundtrips" do
106137 roundtrips { a: 12, b: "54" }
107138 roundtrips { a: 12, b: { c: "54" } }
139+ roundtrips {}
108140
109141 describe "works on newtypes" do
110142 it "roundtrips" do
@@ -112,41 +144,90 @@ spec = describe "En- and decoding" $ do
112144
113145 describe "works on variant types" do
114146 it "roundtrips" do
115− roundtrips (inj (Proxy :: _ "erwin") "e" :: Variant ("erwin" :: String))
116− roundtrips (inj (Proxy :: _ "jackie") 7 :: Variant ExampleVariant)
147+ let input = inj (Proxy ∷ _ "a") {} ∷ Variant (a ∷ {}, b ∷ {})
148+ let asJSON = writeJSON input
149+ readJSON asJSON `shouldEqual` Right input
150+
151+ let input2 = inj (Proxy ∷ _ "b") {} ∷ Variant (a ∷ {}, b ∷ {})
152+ let asJSON2 = writeJSON input2
153+ readJSON asJSON2 `shouldEqual` Right input2
154+
155+ roundtrips (inj (Proxy ∷ _ "erwin") "e" ∷ Variant (erwin ∷ String))
156+ roundtrips (inj (Proxy ∷ _ "jackie") 7 ∷ Variant ExampleVariant)
157+
158+ it "does not select an absent optional branch" do
159+ let expected = inj (Proxy ∷ _ "a") 42 ∷ Variant (a ∷ Int, b ∷ Maybe Int)
160+ readJSON """{"a":42}""" `shouldEqual` Right expected
161+
162+ it "accepts an explicitly null optional branch" do
163+ let expected = inj (Proxy ∷ _ "b") Nothing ∷ Variant (a ∷ Int, b ∷ Maybe Int)
164+ readJSON """{"b":null}""" `shouldEqual` Right expected
165+
166+ it "rejects objects without a matching variant key" do
167+ traverse_
168+ (\json → isLeft (readJSON json ∷ _ (Variant (a ∷ {}, b ∷ {}))) `shouldEqual` true)
169+ [ "{}", """{"unknown":{}}""" ]
117170
118171 describe "works on tagged variant types" do
119172 it "roundtrips" do
120− roundtrips (TaggedVariant (erwin "e") :: TaggedVariant "super" "hans" (Erwin ()))
173+ roundtrips (TaggedVariant (erwin "e") ∷ TaggedVariant "super" "hans" (Erwin ()))
121174 let bareVariant = erwin "e"
122− let res = writeJSON (TaggedVariant bareVariant :: TaggedVariant "type" "value" ExampleVariant)
175+ let res = writeJSON (TaggedVariant bareVariant ∷ TaggedVariant "type" "value" ExampleVariant)
123176 let expected = """{"value":"e","type":"erwin"}"""
124177 res `shouldEqual` expected
125178 let
126− parsed :: _ (TaggedVariant "type" "value" ExampleVariant)
179+ parsed ∷ _ (TaggedVariant "type" "value" ExampleVariant)
127180 parsed = readJSON expected
128181 (un TaggedVariant <$> parsed) `shouldEqual` Right bareVariant
129182
130183 describe "works on untagged variant types" do
131184 it "roundtrips" do
132− roundtrips (UntaggedVariant (erwin "e") :: UntaggedVariant (Erwin ()))
185+ roundtrips (UntaggedVariant (erwin "e") ∷ UntaggedVariant (Erwin ()))
133186 let bareVariant = erwin "e"
134− let res = writeJSON (UntaggedVariant bareVariant :: UntaggedVariant ExampleVariant)
135− let expected = """"e""""
187+ let res = writeJSON (UntaggedVariant bareVariant ∷ UntaggedVariant ExampleVariant)
188+ let expected = "\"e\""
136189 res `shouldEqual` expected
137190 let
138− parsed :: _ (UntaggedVariant ExampleVariant)
191+ parsed ∷ _ (UntaggedVariant ExampleVariant)
139192 parsed = readJSON expected
140193 (un UntaggedVariant <$> parsed) `shouldEqual` Right bareVariant
141194
142−type ExampleVariant = ("erwin" :: String, "jackie" :: Int)
195+ describe "works on non empty strings" do
196+ it "roundtrips NonEmptyString" do
197+ roundtrips (nes (Proxy ∷ Proxy "Non-Empty"))
198+ it "fails to decode empty strings" do
199+ let (result ∷ (Either _ NonEmptyString)) = readJSON (show "")
200+ result `shouldEqual` Left (pure $ ForeignError "String must not be empty")
201+
202+ describe "works on trees" do
203+ it "roundtrips" do
204+ let t = mkTree "a" [ mkTree "b" [ mkLeaf "c", mkLeaf "d" ] ]
205+ roundtrips (ShowTree t)
206+
207+ it "encodes as expected" do
208+ let t = mkTree "a" [ mkTree "b" [ mkLeaf "c", mkLeaf "d" ] ]
209+ writeJSON (ShowTree t) `shouldEqual`
210+ """{"value":"a","children":[{"value":"b","children":[{"value":"c"},{"value":"d"}]}]}"""
211+
212+newtype ShowTree = ShowTree (Tree String)
213+
214+instance Show ShowTree where
215+ show (ShowTree t) = showTree t
216+
217+derive newtype instance WriteForeign ShowTree
218+derive newtype instance ReadForeign ShowTree
219+derive newtype instance Eq ShowTree
220+
221+type ExampleVariant = ("erwin" ∷ String, "jackie" ∷ Int)
143222type ExampleTaggedVariant t v = TaggedVariant t v ExampleVariant
144223
145−erwin ∷ ∀ a r. a → Variant ( erwin ∷ a | r )
146−erwin = inj (Proxy :: Proxy "erwin")
147−type Erwin r = (erwin :: String | r)
224+erwin ∷ ∀ a r. a → Variant (erwin ∷ a | r)
225+erwin = inj (Proxy ∷ Proxy "erwin")
226+
227+type Erwin r = (erwin ∷ String | r)
148228
149229newtype Stringy = Stringy String
230+
150231derive instance Newtype Stringy _
151232derive newtype instance Show Stringy
152233derive newtype instance Eq Stringy
@@ -155,9 +236,22 @@ derive newtype instance WriteForeign Stringy
155236derive newtype instance ReadForeign Stringy
156237
157238newtype Inty = Inty Int
239+
158240derive instance Newtype Inty _
159241derive newtype instance Show Inty
160242derive newtype instance Eq Inty
161243derive newtype instance Ord Inty
162244derive newtype instance WriteForeign Inty
163245derive newtype instance ReadForeign Inty
246+
247+newtype BigInty = BigInty BigInt
248+
249+derive instance Newtype BigInty _
250+derive newtype instance Show BigInty
251+derive newtype instance Eq BigInty
252+derive newtype instance Ord BigInty
253+derive newtype instance WriteForeign BigInty
254+derive newtype instance ReadForeign BigInty
255+
256+big ∷ BigInt
257+big = unsafePartial $ fromJust $ BigInt.fromString "18014398509481982"
test/ErrorsSpec.purs+11−12
@@ -3,26 +3,24 @@ module Test.ErrorsSpec where
33import Prelude
44
55import Data.Array as Array
6−import Data.Array.NonEmpty as NEA
76import Data.Bifunctor (lmap)
8−import Data.Either (Either(..), blush, either)
7+import Data.Either (Either(..), blush)
98import Data.Maybe (Maybe(..))
109import Foreign (ForeignError(..))
1110import Foreign.Object (Object)
12−import Foreign.Object as Object
1311import Test.Spec (Spec, describe, it)
1412import Test.Spec.Assertions (shouldEqual)
1513import Type.Proxy (Proxy(..))
1614import Yoga.JSON (class ReadForeign, E, readJSON)
1715import Yoga.JSON as JSON
18−import Yoga.JSON.Error (errorToJSON, renderHumanError, toJSONPath)
16+import Yoga.JSON.Error (renderHumanError, toJSONPath)
1917
2018spec ∷ Spec Unit
2119spec = describe "Errors" do
2220 describe "are returned at once" do
2321 it "returns multiple errors for object" do
2422 let
25− res :: E (Object Int)
23+ res ∷ E (Object Int)
2624 res = JSON.readJSON """{ "something": "no", "else": true }"""
2725 e1 = ErrorAtProperty "something" (TypeMismatch "Int" "String")
2826 e2 = ErrorAtProperty "else" (TypeMismatch "Int" "Boolean")
@@ -30,7 +28,7 @@ spec = describe "Errors" do
3028
3129 it "returns multiple errors for record" do
3230 let
33− res :: E { a :: Int, b :: String }
31+ res ∷ E { a ∷ Int, b ∷ String }
3432 res = JSON.readJSON """{ "b": true }"""
3533 e1 = ErrorAtProperty "a" (TypeMismatch "Int" "Undefined")
3634 e2 = ErrorAtProperty "b" (TypeMismatch "String" "Boolean")
@@ -38,7 +36,7 @@ spec = describe "Errors" do
3836
3937 it "returns multiple errors for array" do
4038 let
41− res :: E (Array Int)
39+ res ∷ E (Array Int)
4240 res = JSON.readJSON """[1,"a",2,true]"""
4341 e1 = ErrorAtIndex 1 (TypeMismatch "Int" "String")
4442 e2 = ErrorAtIndex 3 (TypeMismatch "Int" "Boolean")
@@ -47,27 +45,28 @@ spec = describe "Errors" do
4745 describe "produces human-friendly errors" do
4846 it "For some object" do
4947 let
50− res :: E (Object Int)
48+ res ∷ E (Object Int)
5149 res = JSON.readJSON """{ "something": "no", "else": true }"""
5250 e1 = "Must provide a value of type 'Int' instead of 'String' at $.something"
5351 e2 = "Must provide a value of type 'Int' instead of 'Boolean' at $.else"
5452 (res # lmap (map renderHumanError >>> Array.fromFoldable))
55− `shouldEqual` (Left [e1, e2])
53+ `shouldEqual` (Left [ e1, e2 ])
5654
5755 it "For deeply nested keys" do
5856 let
59− res :: E { a :: { b :: { c :: { d :: String }}}}
57+ res ∷ E { a ∷ { b ∷ { c ∷ { d ∷ String } } } }
6058 res = JSON.readJSON """{ "a": { "b": { "c": { }}}}"""
6159 e = "Must provide a value of type 'String' at $.a.b.c.d"
6260 (res # lmap (map renderHumanError >>> Array.fromFoldable))
63− `shouldEqual` (Left [e])
61+ `shouldEqual` (Left [ e ])
6462
6563 describe "have the correct JSON path" do
6664 it "empty json" do
6765 (getErrorPath (Proxy ∷ _ {}) "") `shouldEqual` Just [ "$" ]
6866 it "nested json json" do
6967 let
70− xo ="""
68+ xo =
69+ """
7170 { "deeply": { "nested": { "array":
7271 [ { "of": { "values": "hello" } }
7372 , 8
test/GenericsSpec.purs+53−23
@@ -14,18 +14,18 @@ import Yoga.JSON.Generics as GenericTaggedSum
1414import Yoga.JSON.Generics.EnumSumRep as Enum
1515
1616spec ∷ Spec Unit
17−spec = describe "Generics" $ do
17+spec = describe "Generics" do
1818
1919 describe "Enum" do
2020 describe "MyEnum = Enum1 | Enum2 | Enum3" do
2121 it "roundtrips" do
22− roundtrips (Enum1)
23− roundtrips (Enum3)
22+ roundtrips (Enum1)
23+ roundtrips (Enum3)
2424
2525 describe "works with custom constructor names" do
2626 it "roundtrips" do
27− roundtrips (SomeOtherEnum2)
28− writeJSON (SomeThirdEnum3) `shouldEqual` "\"some_third_enum_3\""
27+ roundtrips (SomeOtherEnum2)
28+ writeJSON (SomeThirdEnum3) `shouldEqual` "\"some_third_enum_3\""
2929
3030 describe "Untagged" do
3131
@@ -54,7 +54,6 @@ spec = describe "Generics" $ do
5454 writeJSON (ATaggedInt 1) `shouldEqual` """{"type":"ATaggedInt","value":1}"""
5555 writeJSON (ATaggedString "Abc") `shouldEqual` """{"type":"ATaggedString","value":"Abc"}"""
5656
57−
5857 describe "data HalfEnum = NotEnum Int | IsEnum" do
5958 it "roundtrips" do
6059 roundtrips (NotEnum 1)
@@ -65,55 +64,86 @@ spec = describe "Generics" $ do
6564 writeJSON (IsEnum) `shouldEqual` """{"kind":"is_enum"}"""
6665
6766data HalfEnum = NotEnum Int | IsEnum
67+
6868derive instance Generic HalfEnum _
6969derive instance Eq HalfEnum
70−instance Show HalfEnum where show = genericShow
71−halfEnumOptions :: GenericTaggedSum.Options
70+instance Show HalfEnum where
71+ show = genericShow
72+
73+halfEnumOptions ∷ GenericTaggedSum.Options
7274halfEnumOptions = { typeTag: "kind", valueTag: "data", toConstructorName: snakeCase }
73−instance ReadForeign HalfEnum where readImpl = genericReadForeignTaggedSum halfEnumOptions
74−instance WriteForeign HalfEnum where writeImpl = genericWriteForeignTaggedSum halfEnumOptions
75+
76+instance ReadForeign HalfEnum where
77+ readImpl = genericReadForeignTaggedSum halfEnumOptions
78+
79+instance WriteForeign HalfEnum where
80+ writeImpl = genericWriteForeignTaggedSum halfEnumOptions
7581
7682data MyEnum = Enum1 | Enum2 | Enum3
7783
7884derive instance Generic MyEnum _
7985derive instance Eq MyEnum
80−instance Show MyEnum where show = genericShow
86+instance Show MyEnum where
87+ show = genericShow
88+
8189instance ReadForeign MyEnum
82− where readImpl = genericReadForeignEnum Enum.defaultOptions
90+ where
91+ readImpl = genericReadForeignEnum Enum.defaultOptions
92+
8393instance WriteForeign MyEnum
84− where writeImpl = genericWriteForeignEnum Enum.defaultOptions
94+ where
95+ writeImpl = genericWriteForeignEnum Enum.defaultOptions
8596
8697data MyEnum2 = SomeEnum2 | SomeOtherEnum2 | SomeThirdEnum3
8798
8899derive instance Generic MyEnum2 _
89100derive instance Eq MyEnum2
90−instance Show MyEnum2 where show = genericShow
101+instance Show MyEnum2 where
102+ show = genericShow
103+
91104instance ReadForeign MyEnum2
92− where readImpl = genericReadForeignEnum { toConstructorName: snakeCase}
105+ where
106+ readImpl = genericReadForeignEnum { toConstructorName: snakeCase }
107+
93108instance WriteForeign MyEnum2
94− where writeImpl = genericWriteForeignEnum { toConstructorName: snakeCase}
109+ where
110+ writeImpl = genericWriteForeignEnum { toConstructorName: snakeCase }
95111
96112data IntOrString = AnInt Int | AString String
113+
97114derive instance Generic IntOrString _
98115derive instance Eq IntOrString
99−instance Show IntOrString where show = genericShow
100−instance ReadForeign IntOrString where readImpl = genericReadForeignUntaggedSum
101−instance WriteForeign IntOrString where writeImpl = genericWriteForeignUntaggedSum
116+instance Show IntOrString where
117+ show = genericShow
118+
119+instance ReadForeign IntOrString where
120+ readImpl = genericReadForeignUntaggedSum
121+
122+instance WriteForeign IntOrString where
123+ writeImpl = genericWriteForeignUntaggedSum
102124
103125data DoubleTrouble = IntAndString Int String
104126
105127derive instance Generic DoubleTrouble _
106128derive instance Eq DoubleTrouble
107−instance Show DoubleTrouble where show = genericShow
108−instance ReadForeign DoubleTrouble where readImpl = genericReadForeignUntaggedProduct
109−instance WriteForeign DoubleTrouble where writeImpl = genericWriteForeignUntaggedProduct
129+instance Show DoubleTrouble where
130+ show = genericShow
131+
132+instance ReadForeign DoubleTrouble where
133+ readImpl = genericReadForeignUntaggedProduct
134+
135+instance WriteForeign DoubleTrouble where
136+ writeImpl = genericWriteForeignUntaggedProduct
110137
111138data IntOrStringTagged = ATaggedInt Int | ATaggedString String
112139
113140derive instance Generic IntOrStringTagged _
114141derive instance Eq IntOrStringTagged
115−instance Show IntOrStringTagged where show = genericShow
142+instance Show IntOrStringTagged where
143+ show = genericShow
144+
116145instance ReadForeign IntOrStringTagged where
117146 readImpl = genericReadForeignTaggedSum defaultOptions
147+
118148instance WriteForeign IntOrStringTagged where
119149 writeImpl = genericWriteForeignTaggedSum defaultOptions
test/Main.purs+4−3
@@ -4,11 +4,12 @@ import Prelude
44
55import Effect (Effect)
66import Effect.Aff (launchAff_)
7+import Effect.Class (liftEffect)
78import Test.Spec.Discovery (discover)
89import Test.Spec.Reporter (consoleReporter)
9−import Test.Spec.Runner (runSpec)
10+import Test.Spec.Runner.Node (runSpecAndExitProcess)
1011
11−main :: Effect Unit
12+main ∷ Effect Unit
1213main = launchAff_ $
1314 discover """\..*Spec"""
14− >>= runSpec [consoleReporter]
15+ >>= runSpecAndExitProcess [ consoleReporter ] >>> liftEffect
test/WriteViaSpec.pursnew file+42
@@ -0,0 +1,42 @@
1+module Test.WriteViaSpec where
2+
3+import Prelude
4+
5+import Data.Either (Either(..))
6+import Test.Spec (Spec, describe, it)
7+import Test.Spec.Assertions (shouldEqual)
8+import Yoga.JSON (class ReadForeign, class WriteForeign)
9+import Yoga.JSON as JSON
10+import Yoga.JSON.Derive (readVia, writeVia)
11+
12+spec ∷ Spec Unit
13+spec = describe "En- and decoding with Coercibles" do
14+ let referenceJSON = """{"myString":"A","myInt":3}"""
15+ it "writing works" do
16+ let myRecord = MyRecord { myInt: MyInt 3, myString: MyString "A" }
17+ JSON.writeJSON myRecord `shouldEqual` referenceJSON
18+ it "reading works" do
19+ JSON.readJSON referenceJSON `shouldEqual` Right (MyRecord { myInt: MyInt 3, myString: MyString "A" })
20+
21+newtype MyInt = MyInt Int
22+newtype MyString = MyString String
23+
24+newtype MyRecord = MyRecord
25+ { myInt ∷ MyInt
26+ , myString ∷ MyString
27+ }
28+
29+instance WriteForeign MyRecord where
30+ writeImpl = writeVia @{ myInt ∷ Int, myString ∷ String }
31+
32+instance ReadForeign MyRecord where
33+ readImpl = readVia @{ myInt ∷ Int, myString ∷ String }
34+
35+-- Below instances are just necessary for the tests to compile
36+
37+instance Show MyRecord where
38+ show = JSON.writeJSON
39+
40+derive instance Eq MyRecord
41+derive instance Eq MyInt
42+derive instance Eq MyString