├── .gitignore
├── LICENSE
├── README.md
├── example
└── test.html
├── package-lock.json
├── package.json
├── rollup.config.js
├── scripts
├── build.js
└── dev.js
├── src
├── figToJSON.ts
├── index.ts
└── lib
│ └── kiwi
│ ├── bb.ts
│ ├── binary.ts
│ ├── index.ts
│ ├── js.ts
│ ├── schema.ts
│ └── utils.ts
├── tsconfig.json
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Boiao Ch
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Convert Figma .fig file to json data
2 |
3 | .....
4 |
--------------------------------------------------------------------------------
/example/test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Untitled
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
32 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "fig-to-json",
3 | "version": "1.0.4",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.16.7",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
10 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.16.7"
14 | }
15 | },
16 | "@babel/helper-validator-identifier": {
17 | "version": "7.19.1",
18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
19 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
20 | "dev": true
21 | },
22 | "@babel/highlight": {
23 | "version": "7.18.6",
24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
25 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
26 | "dev": true,
27 | "requires": {
28 | "@babel/helper-validator-identifier": "^7.18.6",
29 | "chalk": "^2.0.0",
30 | "js-tokens": "^4.0.0"
31 | }
32 | },
33 | "@rollup/plugin-json": {
34 | "version": "4.1.0",
35 | "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz",
36 | "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==",
37 | "dev": true,
38 | "requires": {
39 | "@rollup/pluginutils": "^3.0.8"
40 | }
41 | },
42 | "@rollup/plugin-node-resolve": {
43 | "version": "13.3.0",
44 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz",
45 | "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==",
46 | "dev": true,
47 | "requires": {
48 | "@rollup/pluginutils": "^3.1.0",
49 | "@types/resolve": "1.17.1",
50 | "deepmerge": "^4.2.2",
51 | "is-builtin-module": "^3.1.0",
52 | "is-module": "^1.0.0",
53 | "resolve": "^1.19.0"
54 | }
55 | },
56 | "@rollup/pluginutils": {
57 | "version": "3.1.0",
58 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
59 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
60 | "dev": true,
61 | "requires": {
62 | "@types/estree": "0.0.39",
63 | "estree-walker": "^1.0.1",
64 | "picomatch": "^2.2.2"
65 | }
66 | },
67 | "@types/estree": {
68 | "version": "0.0.39",
69 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
70 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
71 | "dev": true
72 | },
73 | "@types/node": {
74 | "version": "17.0.31",
75 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz",
76 | "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==",
77 | "dev": true
78 | },
79 | "@types/resolve": {
80 | "version": "1.17.1",
81 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
82 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
83 | "dev": true,
84 | "requires": {
85 | "@types/node": "*"
86 | }
87 | },
88 | "@types/uzip": {
89 | "version": "0.20201231.0",
90 | "resolved": "https://registry.npmjs.org/@types/uzip/-/uzip-0.20201231.0.tgz",
91 | "integrity": "sha512-h5QS4GArSRa0VqWC30rQ8q/WjDwmTrFFMOulFQUAEjhL9zUApefLnpF2Y7ZRNrfMqCjKnWGxs2AtYrN6/t699w=="
92 | },
93 | "@yarn-tool/resolve-package": {
94 | "version": "1.0.46",
95 | "resolved": "https://registry.npmjs.org/@yarn-tool/resolve-package/-/resolve-package-1.0.46.tgz",
96 | "integrity": "sha512-RJcBGTVywUqYGRtGkPSgJC/ozf0wK/xjUy66tXkbpL35U0o1oef4S0v23euxA/CiukqBWr2fRGtGY6FidESdTg==",
97 | "dev": true,
98 | "requires": {
99 | "pkg-dir": "< 6 >= 5",
100 | "tslib": "^2.3.1",
101 | "upath2": "^3.1.12"
102 | }
103 | },
104 | "acorn": {
105 | "version": "8.8.0",
106 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
107 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
108 | "dev": true
109 | },
110 | "ansi-styles": {
111 | "version": "3.2.1",
112 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
113 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
114 | "dev": true,
115 | "requires": {
116 | "color-convert": "^1.9.0"
117 | }
118 | },
119 | "buffer-from": {
120 | "version": "1.1.2",
121 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
122 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
123 | "dev": true
124 | },
125 | "builtin-modules": {
126 | "version": "3.3.0",
127 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
128 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
129 | "dev": true
130 | },
131 | "chalk": {
132 | "version": "2.4.2",
133 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
134 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
135 | "dev": true,
136 | "requires": {
137 | "ansi-styles": "^3.2.1",
138 | "escape-string-regexp": "^1.0.5",
139 | "supports-color": "^5.3.0"
140 | }
141 | },
142 | "color-convert": {
143 | "version": "1.9.3",
144 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
145 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
146 | "dev": true,
147 | "requires": {
148 | "color-name": "1.1.3"
149 | }
150 | },
151 | "color-name": {
152 | "version": "1.1.3",
153 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
154 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
155 | "dev": true
156 | },
157 | "commander": {
158 | "version": "2.20.3",
159 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
160 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
161 | "dev": true
162 | },
163 | "commondir": {
164 | "version": "1.0.1",
165 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
166 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
167 | "dev": true
168 | },
169 | "cross-spawn": {
170 | "version": "7.0.3",
171 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
172 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
173 | "dev": true,
174 | "requires": {
175 | "path-key": "^3.1.0",
176 | "shebang-command": "^2.0.0",
177 | "which": "^2.0.1"
178 | }
179 | },
180 | "deepmerge": {
181 | "version": "4.2.2",
182 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
183 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
184 | "dev": true
185 | },
186 | "escape-string-regexp": {
187 | "version": "1.0.5",
188 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
189 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
190 | "dev": true
191 | },
192 | "estree-walker": {
193 | "version": "1.0.1",
194 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
195 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
196 | "dev": true
197 | },
198 | "execa": {
199 | "version": "5.1.1",
200 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
201 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
202 | "dev": true,
203 | "requires": {
204 | "cross-spawn": "^7.0.3",
205 | "get-stream": "^6.0.0",
206 | "human-signals": "^2.1.0",
207 | "is-stream": "^2.0.0",
208 | "merge-stream": "^2.0.0",
209 | "npm-run-path": "^4.0.1",
210 | "onetime": "^5.1.2",
211 | "signal-exit": "^3.0.3",
212 | "strip-final-newline": "^2.0.0"
213 | }
214 | },
215 | "find-cache-dir": {
216 | "version": "3.3.2",
217 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
218 | "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
219 | "dev": true,
220 | "requires": {
221 | "commondir": "^1.0.1",
222 | "make-dir": "^3.0.2",
223 | "pkg-dir": "^4.1.0"
224 | },
225 | "dependencies": {
226 | "find-up": {
227 | "version": "4.1.0",
228 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
229 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
230 | "dev": true,
231 | "requires": {
232 | "locate-path": "^5.0.0",
233 | "path-exists": "^4.0.0"
234 | }
235 | },
236 | "locate-path": {
237 | "version": "5.0.0",
238 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
239 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
240 | "dev": true,
241 | "requires": {
242 | "p-locate": "^4.1.0"
243 | }
244 | },
245 | "p-limit": {
246 | "version": "2.3.0",
247 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
248 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
249 | "dev": true,
250 | "requires": {
251 | "p-try": "^2.0.0"
252 | }
253 | },
254 | "p-locate": {
255 | "version": "4.1.0",
256 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
257 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
258 | "dev": true,
259 | "requires": {
260 | "p-limit": "^2.2.0"
261 | }
262 | },
263 | "pkg-dir": {
264 | "version": "4.2.0",
265 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
266 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
267 | "dev": true,
268 | "requires": {
269 | "find-up": "^4.0.0"
270 | }
271 | }
272 | }
273 | },
274 | "find-up": {
275 | "version": "5.0.0",
276 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
277 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
278 | "dev": true,
279 | "requires": {
280 | "locate-path": "^6.0.0",
281 | "path-exists": "^4.0.0"
282 | }
283 | },
284 | "fs-extra": {
285 | "version": "10.1.0",
286 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
287 | "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
288 | "dev": true,
289 | "requires": {
290 | "graceful-fs": "^4.2.0",
291 | "jsonfile": "^6.0.1",
292 | "universalify": "^2.0.0"
293 | }
294 | },
295 | "fsevents": {
296 | "version": "2.3.2",
297 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
298 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
299 | "dev": true,
300 | "optional": true
301 | },
302 | "function-bind": {
303 | "version": "1.1.1",
304 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
305 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
306 | "dev": true
307 | },
308 | "get-stream": {
309 | "version": "6.0.1",
310 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
311 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
312 | "dev": true
313 | },
314 | "graceful-fs": {
315 | "version": "4.2.10",
316 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
317 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
318 | "dev": true
319 | },
320 | "has": {
321 | "version": "1.0.3",
322 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
323 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
324 | "dev": true,
325 | "requires": {
326 | "function-bind": "^1.1.1"
327 | }
328 | },
329 | "has-flag": {
330 | "version": "3.0.0",
331 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
332 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
333 | "dev": true
334 | },
335 | "human-signals": {
336 | "version": "2.1.0",
337 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
338 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
339 | "dev": true
340 | },
341 | "is-builtin-module": {
342 | "version": "3.1.0",
343 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz",
344 | "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==",
345 | "dev": true,
346 | "requires": {
347 | "builtin-modules": "^3.0.0"
348 | }
349 | },
350 | "is-core-module": {
351 | "version": "2.10.0",
352 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
353 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
354 | "dev": true,
355 | "requires": {
356 | "has": "^1.0.3"
357 | }
358 | },
359 | "is-module": {
360 | "version": "1.0.0",
361 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
362 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
363 | "dev": true
364 | },
365 | "is-stream": {
366 | "version": "2.0.1",
367 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
368 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
369 | "dev": true
370 | },
371 | "isexe": {
372 | "version": "2.0.0",
373 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
374 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
375 | "dev": true
376 | },
377 | "jest-worker": {
378 | "version": "26.6.2",
379 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
380 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
381 | "dev": true,
382 | "requires": {
383 | "@types/node": "*",
384 | "merge-stream": "^2.0.0",
385 | "supports-color": "^7.0.0"
386 | },
387 | "dependencies": {
388 | "has-flag": {
389 | "version": "4.0.0",
390 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
391 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
392 | "dev": true
393 | },
394 | "supports-color": {
395 | "version": "7.2.0",
396 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
397 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
398 | "dev": true,
399 | "requires": {
400 | "has-flag": "^4.0.0"
401 | }
402 | }
403 | }
404 | },
405 | "js-cleanup": {
406 | "version": "1.2.0",
407 | "resolved": "https://registry.npmjs.org/js-cleanup/-/js-cleanup-1.2.0.tgz",
408 | "integrity": "sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==",
409 | "dev": true,
410 | "requires": {
411 | "magic-string": "^0.25.7",
412 | "perf-regexes": "^1.0.1",
413 | "skip-regex": "^1.0.2"
414 | }
415 | },
416 | "js-tokens": {
417 | "version": "4.0.0",
418 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
419 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
420 | "dev": true
421 | },
422 | "jsonfile": {
423 | "version": "6.1.0",
424 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
425 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
426 | "dev": true,
427 | "requires": {
428 | "graceful-fs": "^4.1.6",
429 | "universalify": "^2.0.0"
430 | }
431 | },
432 | "locate-path": {
433 | "version": "6.0.0",
434 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
435 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
436 | "dev": true,
437 | "requires": {
438 | "p-locate": "^5.0.0"
439 | }
440 | },
441 | "lodash.sortby": {
442 | "version": "4.7.0",
443 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
444 | "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
445 | "dev": true
446 | },
447 | "magic-string": {
448 | "version": "0.25.9",
449 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
450 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
451 | "dev": true,
452 | "requires": {
453 | "sourcemap-codec": "^1.4.8"
454 | }
455 | },
456 | "make-dir": {
457 | "version": "3.1.0",
458 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
459 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
460 | "dev": true,
461 | "requires": {
462 | "semver": "^6.0.0"
463 | }
464 | },
465 | "merge-stream": {
466 | "version": "2.0.0",
467 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
468 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
469 | "dev": true
470 | },
471 | "mimic-fn": {
472 | "version": "2.1.0",
473 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
474 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
475 | "dev": true
476 | },
477 | "npm-run-path": {
478 | "version": "4.0.1",
479 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
480 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
481 | "dev": true,
482 | "requires": {
483 | "path-key": "^3.0.0"
484 | }
485 | },
486 | "onetime": {
487 | "version": "5.1.2",
488 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
489 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
490 | "dev": true,
491 | "requires": {
492 | "mimic-fn": "^2.1.0"
493 | }
494 | },
495 | "p-limit": {
496 | "version": "3.1.0",
497 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
498 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
499 | "dev": true,
500 | "requires": {
501 | "yocto-queue": "^0.1.0"
502 | }
503 | },
504 | "p-locate": {
505 | "version": "5.0.0",
506 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
507 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
508 | "dev": true,
509 | "requires": {
510 | "p-limit": "^3.0.2"
511 | }
512 | },
513 | "p-try": {
514 | "version": "2.2.0",
515 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
516 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
517 | "dev": true
518 | },
519 | "path-exists": {
520 | "version": "4.0.0",
521 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
522 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
523 | "dev": true
524 | },
525 | "path-is-network-drive": {
526 | "version": "1.0.19",
527 | "resolved": "https://registry.npmjs.org/path-is-network-drive/-/path-is-network-drive-1.0.19.tgz",
528 | "integrity": "sha512-M2sQesVy/gbJJvQ8lI/YYWURRngnMl4lA/XqBoCIUava31qK3AxNEe0EXtUQ2zGjJB4Y+I5zAlFvI1dHv5RXvQ==",
529 | "dev": true,
530 | "requires": {
531 | "tslib": "^2"
532 | }
533 | },
534 | "path-key": {
535 | "version": "3.1.1",
536 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
537 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
538 | "dev": true
539 | },
540 | "path-parse": {
541 | "version": "1.0.7",
542 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
543 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
544 | "dev": true
545 | },
546 | "path-strip-sep": {
547 | "version": "1.0.16",
548 | "resolved": "https://registry.npmjs.org/path-strip-sep/-/path-strip-sep-1.0.16.tgz",
549 | "integrity": "sha512-yfCFy88SSLx6sOLxh5bXhDyq54/0k1/pa+VYKolpkQOYzkJ+ngT+opxlNYQOpemBWrC6hFSWGpxo7a94Azd7Pg==",
550 | "dev": true,
551 | "requires": {
552 | "tslib": "^2"
553 | }
554 | },
555 | "perf-regexes": {
556 | "version": "1.0.1",
557 | "resolved": "https://registry.npmjs.org/perf-regexes/-/perf-regexes-1.0.1.tgz",
558 | "integrity": "sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==",
559 | "dev": true
560 | },
561 | "picomatch": {
562 | "version": "2.3.1",
563 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
564 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
565 | "dev": true
566 | },
567 | "pkg-dir": {
568 | "version": "5.0.0",
569 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
570 | "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
571 | "dev": true,
572 | "requires": {
573 | "find-up": "^5.0.0"
574 | }
575 | },
576 | "punycode": {
577 | "version": "2.1.1",
578 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
579 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
580 | "dev": true
581 | },
582 | "randombytes": {
583 | "version": "2.1.0",
584 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
585 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
586 | "dev": true,
587 | "requires": {
588 | "safe-buffer": "^5.1.0"
589 | }
590 | },
591 | "resolve": {
592 | "version": "1.22.0",
593 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
594 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
595 | "dev": true,
596 | "requires": {
597 | "is-core-module": "^2.8.1",
598 | "path-parse": "^1.0.7",
599 | "supports-preserve-symlinks-flag": "^1.0.0"
600 | }
601 | },
602 | "rollup": {
603 | "version": "2.72.1",
604 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.72.1.tgz",
605 | "integrity": "sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==",
606 | "dev": true,
607 | "requires": {
608 | "fsevents": "~2.3.2"
609 | }
610 | },
611 | "rollup-plugin-cleanup": {
612 | "version": "3.2.1",
613 | "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz",
614 | "integrity": "sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==",
615 | "dev": true,
616 | "requires": {
617 | "js-cleanup": "^1.2.0",
618 | "rollup-pluginutils": "^2.8.2"
619 | }
620 | },
621 | "rollup-plugin-terser": {
622 | "version": "7.0.2",
623 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
624 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
625 | "dev": true,
626 | "requires": {
627 | "@babel/code-frame": "^7.10.4",
628 | "jest-worker": "^26.2.1",
629 | "serialize-javascript": "^4.0.0",
630 | "terser": "^5.0.0"
631 | }
632 | },
633 | "rollup-plugin-typescript2": {
634 | "version": "0.31.2",
635 | "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.2.tgz",
636 | "integrity": "sha512-hRwEYR1C8xDGVVMFJQdEVnNAeWRvpaY97g5mp3IeLnzhNXzSVq78Ye/BJ9PAaUfN4DXa/uDnqerifMOaMFY54Q==",
637 | "dev": true,
638 | "requires": {
639 | "@rollup/pluginutils": "^4.1.2",
640 | "@yarn-tool/resolve-package": "^1.0.40",
641 | "find-cache-dir": "^3.3.2",
642 | "fs-extra": "^10.0.0",
643 | "resolve": "^1.20.0",
644 | "tslib": "^2.3.1"
645 | },
646 | "dependencies": {
647 | "@rollup/pluginutils": {
648 | "version": "4.2.1",
649 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
650 | "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
651 | "dev": true,
652 | "requires": {
653 | "estree-walker": "^2.0.1",
654 | "picomatch": "^2.2.2"
655 | }
656 | },
657 | "estree-walker": {
658 | "version": "2.0.2",
659 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
660 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
661 | "dev": true
662 | }
663 | }
664 | },
665 | "rollup-pluginutils": {
666 | "version": "2.8.2",
667 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
668 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
669 | "dev": true,
670 | "requires": {
671 | "estree-walker": "^0.6.1"
672 | },
673 | "dependencies": {
674 | "estree-walker": {
675 | "version": "0.6.1",
676 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
677 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
678 | "dev": true
679 | }
680 | }
681 | },
682 | "safe-buffer": {
683 | "version": "5.2.1",
684 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
685 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
686 | "dev": true
687 | },
688 | "semver": {
689 | "version": "6.3.0",
690 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
691 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
692 | "dev": true
693 | },
694 | "serialize-javascript": {
695 | "version": "4.0.0",
696 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
697 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
698 | "dev": true,
699 | "requires": {
700 | "randombytes": "^2.1.0"
701 | }
702 | },
703 | "shebang-command": {
704 | "version": "2.0.0",
705 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
706 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
707 | "dev": true,
708 | "requires": {
709 | "shebang-regex": "^3.0.0"
710 | }
711 | },
712 | "shebang-regex": {
713 | "version": "3.0.0",
714 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
715 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
716 | "dev": true
717 | },
718 | "signal-exit": {
719 | "version": "3.0.7",
720 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
721 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
722 | "dev": true
723 | },
724 | "skip-regex": {
725 | "version": "1.0.2",
726 | "resolved": "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz",
727 | "integrity": "sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==",
728 | "dev": true
729 | },
730 | "source-map": {
731 | "version": "0.8.0-beta.0",
732 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
733 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
734 | "dev": true,
735 | "requires": {
736 | "whatwg-url": "^7.0.0"
737 | }
738 | },
739 | "source-map-support": {
740 | "version": "0.5.21",
741 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
742 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
743 | "dev": true,
744 | "requires": {
745 | "buffer-from": "^1.0.0",
746 | "source-map": "^0.6.0"
747 | },
748 | "dependencies": {
749 | "source-map": {
750 | "version": "0.6.1",
751 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
752 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
753 | "dev": true
754 | }
755 | }
756 | },
757 | "sourcemap-codec": {
758 | "version": "1.4.8",
759 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
760 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
761 | "dev": true
762 | },
763 | "strip-final-newline": {
764 | "version": "2.0.0",
765 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
766 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
767 | "dev": true
768 | },
769 | "supports-color": {
770 | "version": "5.5.0",
771 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
772 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
773 | "dev": true,
774 | "requires": {
775 | "has-flag": "^3.0.0"
776 | }
777 | },
778 | "supports-preserve-symlinks-flag": {
779 | "version": "1.0.0",
780 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
781 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
782 | "dev": true
783 | },
784 | "terser": {
785 | "version": "5.13.1",
786 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz",
787 | "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==",
788 | "dev": true,
789 | "requires": {
790 | "acorn": "^8.5.0",
791 | "commander": "^2.20.0",
792 | "source-map": "~0.8.0-beta.0",
793 | "source-map-support": "~0.5.20"
794 | }
795 | },
796 | "tr46": {
797 | "version": "1.0.1",
798 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
799 | "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
800 | "dev": true,
801 | "requires": {
802 | "punycode": "^2.1.0"
803 | }
804 | },
805 | "tslib": {
806 | "version": "2.4.0",
807 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
808 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
809 | "dev": true
810 | },
811 | "typescript": {
812 | "version": "4.6.4",
813 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
814 | "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
815 | "dev": true
816 | },
817 | "universalify": {
818 | "version": "2.0.0",
819 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
820 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
821 | "dev": true
822 | },
823 | "upath2": {
824 | "version": "3.1.18",
825 | "resolved": "https://registry.npmjs.org/upath2/-/upath2-3.1.18.tgz",
826 | "integrity": "sha512-JGfwzvuMtkbI0kkt+TXM/Ig3WZ3rTuwC61dNdNn8TpaBGBDB7cnONpb++5v7j2DslXfNydNimoxibZAEhri3ZA==",
827 | "dev": true,
828 | "requires": {
829 | "@types/node": "*",
830 | "path-is-network-drive": "^1.0.19",
831 | "path-strip-sep": "^1.0.16",
832 | "tslib": "^2"
833 | }
834 | },
835 | "uzip": {
836 | "version": "0.20201231.0",
837 | "resolved": "https://registry.npmjs.org/uzip/-/uzip-0.20201231.0.tgz",
838 | "integrity": "sha512-OZeJfZP+R0z9D6TmBgLq2LHzSSptGMGDGigGiEe0pr8UBe/7fdflgHlHBNDASTXB5jnFuxHpNaJywSg8YFeGng=="
839 | },
840 | "webidl-conversions": {
841 | "version": "4.0.2",
842 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
843 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
844 | "dev": true
845 | },
846 | "whatwg-url": {
847 | "version": "7.1.0",
848 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
849 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
850 | "dev": true,
851 | "requires": {
852 | "lodash.sortby": "^4.7.0",
853 | "tr46": "^1.0.1",
854 | "webidl-conversions": "^4.0.2"
855 | }
856 | },
857 | "which": {
858 | "version": "2.0.2",
859 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
860 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
861 | "dev": true,
862 | "requires": {
863 | "isexe": "^2.0.0"
864 | }
865 | },
866 | "yocto-queue": {
867 | "version": "0.1.0",
868 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
869 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
870 | "dev": true
871 | }
872 | }
873 | }
874 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "fig-to-json",
3 | "version": "1.0.4",
4 | "description": "convert fig file to JSON format data",
5 | "main": "dist/FigToJSON.cjs.js",
6 | "module": "dist/FigtoJSON.esm-bundler.js",
7 | "browser": "dist/FigtoJSON.global.js",
8 | "scripts": {
9 | "build": "rm -rf dist && node scripts/build.js",
10 | "dev": "node scripts/dev.js"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "https://github.com/liaobinbin/fig-to-json.git"
15 | },
16 | "keywords": [
17 | "fig",
18 | "json",
19 | "file"
20 | ],
21 | "author": "Boiao Ch ",
22 | "license": "MIT",
23 | "dependencies": {
24 | "@types/uzip": "^0.20201231.0",
25 | "uzip": "^0.20201231.0"
26 | },
27 | "devDependencies": {
28 | "@rollup/plugin-json": "^4.1.0",
29 | "@rollup/plugin-node-resolve": "^13.3.0",
30 | "execa": "5.1.1",
31 | "rollup": "^2.72.1",
32 | "rollup-plugin-cleanup": "^3.2.1",
33 | "rollup-plugin-terser": "^7.0.2",
34 | "rollup-plugin-typescript2": "^0.31.2",
35 | "typescript": "^4.6.4"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | const path = require("path");
2 | const json = require("@rollup/plugin-json");
3 | const resolvePlugin = require("@rollup/plugin-node-resolve");
4 | const ts = require("rollup-plugin-typescript2");
5 | const cleanup = require("rollup-plugin-cleanup");
6 | const terser = require("rollup-plugin-terser");
7 | const resolve = path.resolve;
8 |
9 | const name = "FigToJSON";
10 |
11 | const outputConfig = {
12 | "esm-bundler": {
13 | file: resolve(`dist/${name}.esm-bundler.js`),
14 | format: "es",
15 | },
16 | cjs: {
17 | file: resolve(`dist/${name}.cjs.js`),
18 | format: "cjs",
19 | },
20 | global: {
21 | file: resolve(`dist/${name}.global.js`),
22 | format: "iife",
23 | },
24 | };
25 |
26 | const createConfig = (format, output) => {
27 | output.name = name;
28 | output.sourcemap = true;
29 |
30 | return {
31 | input: resolve(`src/index.ts`),
32 | output,
33 | plugins: [
34 | json(),
35 | ts({
36 | tsconfig: resolve(__dirname, "tsconfig.json"),
37 | }),
38 | resolvePlugin,
39 | cleanup(),
40 | terser.terser(),
41 | ],
42 | };
43 | };
44 |
45 | const formats = Object.keys(outputConfig);
46 |
47 | export default formats.map((format) => {
48 | return createConfig(format, outputConfig[format]);
49 | });
50 |
--------------------------------------------------------------------------------
/scripts/build.js:
--------------------------------------------------------------------------------
1 | const execa = require("execa");
2 |
3 | execa("rollup", ["-c"], {
4 | stdio: "inherit",
5 | });
6 |
--------------------------------------------------------------------------------
/scripts/dev.js:
--------------------------------------------------------------------------------
1 | const execa = require("execa");
2 |
3 | execa("rollup", ["-cw"], {
4 | stdio: "inherit",
5 | });
6 |
--------------------------------------------------------------------------------
/src/figToJSON.ts:
--------------------------------------------------------------------------------
1 | import { ByteBuffer, decodeBinarySchema, compileSchema } from "./lib/kiwi";
2 | import { inflateRaw } from "uzip";
3 |
4 | const transfer8to32 = function (
5 | fileByte: Uint8Array,
6 | start: number,
7 | cache: Uint8Array
8 | ) {
9 | cache[0] = fileByte[start + 0];
10 | cache[1] = fileByte[start + 1];
11 | cache[2] = fileByte[start + 2];
12 | cache[3] = fileByte[start + 3];
13 | };
14 |
15 | const int32 = new Int32Array(1);
16 | const uint8 = new Uint8Array(int32.buffer);
17 | const uint32 = new Uint32Array(int32.buffer);
18 |
19 | const calcEnd = function (fileByte: Uint8Array, start: number) {
20 | transfer8to32(fileByte, start, uint8);
21 | return uint32[0];
22 | };
23 |
24 | export const getFigJsonData = (fileBuffer: Buffer) => {
25 | const fileByte: Uint8Array = new Uint8Array(fileBuffer);
26 |
27 | // 8 bits for figma comment;
28 | let start = 8;
29 |
30 | calcEnd(fileByte, start);
31 |
32 | start += 4;
33 | const result = [];
34 | while (start < fileByte.length) {
35 | var end = calcEnd(fileByte, start);
36 | start += 4;
37 |
38 | let byteTemp = fileByte.slice(start, start + end);
39 |
40 | if (!(fileByte[start] == 137 && fileByte[start + 1] == 80)) {
41 | byteTemp = inflateRaw(byteTemp);
42 | }
43 |
44 | result.push(byteTemp);
45 | start += end;
46 | }
47 |
48 | const [schemaByte, dataByte] = result;
49 |
50 | const schemaBB = new ByteBuffer(schemaByte);
51 |
52 | const schema = decodeBinarySchema(schemaBB);
53 |
54 | const dataBB = new ByteBuffer(dataByte);
55 |
56 | const schemaHelper = compileSchema(schema);
57 |
58 | return schemaHelper[`decodeMessage`](dataBB);
59 | };
60 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | // import { decodeFigma } from "./decodeFig";
2 | import { getFigJsonData } from "./figToJSON";
3 |
4 | export { getFigJsonData };
5 |
--------------------------------------------------------------------------------
/src/lib/kiwi/bb.ts:
--------------------------------------------------------------------------------
1 | let int32 = new Int32Array(1);
2 | let float32 = new Float32Array(int32.buffer);
3 |
4 | export class ByteBuffer {
5 | private _data: Uint8Array;
6 | private _index: number;
7 | length: number;
8 |
9 | constructor(data?: Uint8Array) {
10 | if (data && !(data instanceof Uint8Array)) {
11 | throw new Error("Must initialize a ByteBuffer with a Uint8Array");
12 | }
13 | this._data = data || new Uint8Array(256);
14 | this._index = 0;
15 | this.length = data ? data.length : 0;
16 | }
17 |
18 | toUint8Array(): Uint8Array {
19 | return this._data.subarray(0, this.length);
20 | }
21 |
22 | readByte(): number {
23 | if (this._index + 1 > this._data.length) {
24 | throw new Error("Index out of bounds");
25 | }
26 | return this._data[this._index++];
27 | }
28 |
29 | readByteArray(): Uint8Array {
30 | let length = this.readVarUint();
31 | let start = this._index;
32 | let end = start + length;
33 | if (end > this._data.length) {
34 | throw new Error("Read array out of bounds");
35 | }
36 | this._index = end;
37 | // Copy into a new array instead of just creating another view.
38 | let result = new Uint8Array(length);
39 | result.set(this._data.subarray(start, end));
40 | return result;
41 | }
42 |
43 | readVarFloat(): number {
44 | let index = this._index;
45 | let data = this._data;
46 | let length = data.length;
47 |
48 | // Optimization: use a single byte to store zero
49 | if (index + 1 > length) {
50 | throw new Error("Index out of bounds");
51 | }
52 | let first = data[index];
53 | if (first === 0) {
54 | this._index = index + 1;
55 | return 0;
56 | }
57 |
58 | // Endian-independent 32-bit read
59 | if (index + 4 > length) {
60 | throw new Error("Index out of bounds");
61 | }
62 | let bits =
63 | first |
64 | (data[index + 1] << 8) |
65 | (data[index + 2] << 16) |
66 | (data[index + 3] << 24);
67 | this._index = index + 4;
68 |
69 | // Move the exponent back into place
70 | bits = (bits << 23) | (bits >>> 9);
71 |
72 | // Reinterpret as a floating-point number
73 | int32[0] = bits;
74 | return float32[0];
75 | }
76 |
77 | readVarUint(): number {
78 | let value = 0;
79 | let shift = 0;
80 | do {
81 | var byte = this.readByte();
82 | value |= (byte & 127) << shift;
83 | shift += 7;
84 | } while (byte & 128 && shift < 35);
85 | return value >>> 0;
86 | }
87 |
88 | readVarInt(): number {
89 | let value = this.readVarUint() | 0;
90 | return value & 1 ? ~(value >>> 1) : value >>> 1;
91 | }
92 |
93 | readString(): string {
94 | let result = "";
95 |
96 | while (true) {
97 | let codePoint;
98 |
99 | // Decode UTF-8
100 | let a = this.readByte();
101 | if (a < 0xc0) {
102 | codePoint = a;
103 | } else {
104 | let b = this.readByte();
105 | if (a < 0xe0) {
106 | codePoint = ((a & 0x1f) << 6) | (b & 0x3f);
107 | } else {
108 | let c = this.readByte();
109 | if (a < 0xf0) {
110 | codePoint = ((a & 0x0f) << 12) | ((b & 0x3f) << 6) | (c & 0x3f);
111 | } else {
112 | let d = this.readByte();
113 | codePoint =
114 | ((a & 0x07) << 18) |
115 | ((b & 0x3f) << 12) |
116 | ((c & 0x3f) << 6) |
117 | (d & 0x3f);
118 | }
119 | }
120 | }
121 |
122 | // Strings are null-terminated
123 | if (codePoint === 0) {
124 | break;
125 | }
126 |
127 | // Encode UTF-16
128 | if (codePoint < 0x10000) {
129 | result += String.fromCharCode(codePoint);
130 | } else {
131 | codePoint -= 0x10000;
132 | result += String.fromCharCode(
133 | (codePoint >> 10) + 0xd800,
134 | (codePoint & ((1 << 10) - 1)) + 0xdc00
135 | );
136 | }
137 | }
138 |
139 | return result;
140 | }
141 |
142 | private _growBy(amount: number): void {
143 | if (this.length + amount > this._data.length) {
144 | let data = new Uint8Array((this.length + amount) << 1);
145 | data.set(this._data);
146 | this._data = data;
147 | }
148 | this.length += amount;
149 | }
150 |
151 | writeByte(value: number): void {
152 | let index = this.length;
153 | this._growBy(1);
154 | this._data[index] = value;
155 | }
156 |
157 | writeByteArray(value: Uint8Array): void {
158 | this.writeVarUint(value.length);
159 | let index = this.length;
160 | this._growBy(value.length);
161 | this._data.set(value, index);
162 | }
163 |
164 | writeVarFloat(value: number): void {
165 | let index = this.length;
166 |
167 | // Reinterpret as an integer
168 | float32[0] = value;
169 | let bits = int32[0];
170 |
171 | // Move the exponent to the first 8 bits
172 | bits = (bits >>> 23) | (bits << 9);
173 |
174 | // Optimization: use a single byte to store zero and denormals (check for an exponent of 0)
175 | if ((bits & 255) === 0) {
176 | this.writeByte(0);
177 | return;
178 | }
179 |
180 | // Endian-independent 32-bit write
181 | this._growBy(4);
182 | let data = this._data;
183 | data[index] = bits;
184 | data[index + 1] = bits >> 8;
185 | data[index + 2] = bits >> 16;
186 | data[index + 3] = bits >> 24;
187 | }
188 |
189 | writeVarUint(value: number): void {
190 | do {
191 | let byte = value & 127;
192 | value >>>= 7;
193 | this.writeByte(value ? byte | 128 : byte);
194 | } while (value);
195 | }
196 |
197 | writeVarInt(value: number): void {
198 | this.writeVarUint((value << 1) ^ (value >> 31));
199 | }
200 |
201 | writeString(value: string): void {
202 | let codePoint;
203 |
204 | for (let i = 0; i < value.length; i++) {
205 | // Decode UTF-16
206 | let a = value.charCodeAt(i);
207 | if (i + 1 === value.length || a < 0xd800 || a >= 0xdc00) {
208 | codePoint = a;
209 | } else {
210 | let b = value.charCodeAt(++i);
211 | codePoint = (a << 10) + b + (0x10000 - (0xd800 << 10) - 0xdc00);
212 | }
213 |
214 | // Strings are null-terminated
215 | if (codePoint === 0) {
216 | throw new Error("Cannot encode a string containing the null character");
217 | }
218 |
219 | // Encode UTF-8
220 | if (codePoint < 0x80) {
221 | this.writeByte(codePoint);
222 | } else {
223 | if (codePoint < 0x800) {
224 | this.writeByte(((codePoint >> 6) & 0x1f) | 0xc0);
225 | } else {
226 | if (codePoint < 0x10000) {
227 | this.writeByte(((codePoint >> 12) & 0x0f) | 0xe0);
228 | } else {
229 | this.writeByte(((codePoint >> 18) & 0x07) | 0xf0);
230 | this.writeByte(((codePoint >> 12) & 0x3f) | 0x80);
231 | }
232 | this.writeByte(((codePoint >> 6) & 0x3f) | 0x80);
233 | }
234 | this.writeByte((codePoint & 0x3f) | 0x80);
235 | }
236 | }
237 |
238 | // Strings are null-terminated
239 | this.writeByte(0);
240 | }
241 | }
242 |
--------------------------------------------------------------------------------
/src/lib/kiwi/binary.ts:
--------------------------------------------------------------------------------
1 | import { ByteBuffer } from "./bb";
2 | import { Schema, Field, Definition, DefinitionKind } from "./schema";
3 |
4 | let types: (string | null)[] = [
5 | "bool",
6 | "byte",
7 | "int",
8 | "uint",
9 | "float",
10 | "string",
11 | ];
12 | let kinds: DefinitionKind[] = ["ENUM", "STRUCT", "MESSAGE"];
13 |
14 | export function decodeBinarySchema(buffer: Uint8Array | ByteBuffer): Schema {
15 | let bb = buffer instanceof ByteBuffer ? buffer : new ByteBuffer(buffer);
16 | let definitionCount = bb.readVarUint();
17 | let definitions: Definition[] = [];
18 |
19 | // Read in the schema
20 | for (let i = 0; i < definitionCount; i++) {
21 | let definitionName = bb.readString();
22 | let kind = bb.readByte();
23 | let fieldCount = bb.readVarUint();
24 | let fields: Field[] = [];
25 |
26 | for (let j = 0; j < fieldCount; j++) {
27 | let fieldName = bb.readString();
28 | let type = bb.readVarInt();
29 | let isArray = !!(bb.readByte() & 1);
30 | let value = bb.readVarUint();
31 |
32 | fields.push({
33 | name: fieldName,
34 | line: 0,
35 | column: 0,
36 | type: kinds[kind] === "ENUM" ? null : (type as any),
37 | isArray: isArray,
38 | isDeprecated: false,
39 | value: value,
40 | });
41 | }
42 |
43 | definitions.push({
44 | name: definitionName,
45 | line: 0,
46 | column: 0,
47 | kind: kinds[kind],
48 | fields: fields,
49 | });
50 | }
51 |
52 | // Bind type names afterwards
53 | for (let i = 0; i < definitionCount; i++) {
54 | let fields = definitions[i].fields;
55 | for (let j = 0; j < fields.length; j++) {
56 | let field = fields[j];
57 | let type = field.type as any as number | null;
58 |
59 | if (type !== null && type < 0) {
60 | if (~type >= types.length) {
61 | throw new Error("Invalid type " + type);
62 | }
63 | field.type = types[~type];
64 | } else {
65 | if (type !== null && type >= definitions.length) {
66 | throw new Error("Invalid type " + type);
67 | }
68 | field.type = type === null ? null : definitions[type].name;
69 | }
70 | }
71 | }
72 |
73 | return {
74 | package: null,
75 | definitions: definitions,
76 | };
77 | }
78 |
79 | export function encodeBinarySchema(schema: Schema): Uint8Array {
80 | let bb = new ByteBuffer();
81 | let definitions = schema.definitions;
82 | let definitionIndex: { [name: string]: number } = {};
83 |
84 | bb.writeVarUint(definitions.length);
85 |
86 | for (let i = 0; i < definitions.length; i++) {
87 | definitionIndex[definitions[i].name] = i;
88 | }
89 |
90 | for (let i = 0; i < definitions.length; i++) {
91 | let definition = definitions[i];
92 |
93 | bb.writeString(definition.name);
94 | bb.writeByte(kinds.indexOf(definition.kind));
95 | bb.writeVarUint(definition.fields.length);
96 |
97 | for (let j = 0; j < definition.fields.length; j++) {
98 | let field = definition.fields[j];
99 | let type = types.indexOf(field.type);
100 |
101 | bb.writeString(field.name);
102 | bb.writeVarInt(type === -1 ? definitionIndex[field.type!] : ~type);
103 | bb.writeByte(field.isArray ? 1 : 0);
104 | bb.writeVarUint(field.value);
105 | }
106 | }
107 |
108 | return bb.toUint8Array();
109 | }
110 |
--------------------------------------------------------------------------------
/src/lib/kiwi/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./bb";
2 | export * from "./binary";
3 | export * from "./js";
4 | export * from "./schema";
5 |
--------------------------------------------------------------------------------
/src/lib/kiwi/js.ts:
--------------------------------------------------------------------------------
1 | import { Schema, Definition } from "./schema";
2 | import { ByteBuffer } from "./bb";
3 | import { error, quote } from "./utils";
4 |
5 | function compileDecode(
6 | definition: Definition,
7 | definitions: { [name: string]: Definition }
8 | ): string {
9 | let lines: string[] = [];
10 | let indent = " ";
11 |
12 | lines.push("function(bb) {");
13 | lines.push(" var result = {};");
14 | lines.push(" if (!(bb instanceof this.ByteBuffer)) {");
15 | lines.push(" bb = new this.ByteBuffer(bb);");
16 | lines.push(" }");
17 | lines.push("");
18 |
19 | if (definition.kind === "MESSAGE") {
20 | lines.push(" while (true) {");
21 | lines.push(" switch (bb.readVarUint()) {");
22 | lines.push(" case 0:");
23 | lines.push(" return result;");
24 | lines.push("");
25 | indent = " ";
26 | }
27 |
28 | for (let i = 0; i < definition.fields.length; i++) {
29 | let field = definition.fields[i];
30 | let code: string;
31 |
32 | switch (field.type) {
33 | case "bool": {
34 | code = "!!bb.readByte()";
35 | break;
36 | }
37 |
38 | case "byte": {
39 | code = "bb.readByte()"; // only used if not array
40 | break;
41 | }
42 |
43 | case "int": {
44 | code = "bb.readVarInt()";
45 | break;
46 | }
47 |
48 | case "uint": {
49 | code = "bb.readVarUint()";
50 | break;
51 | }
52 |
53 | case "float": {
54 | code = "bb.readVarFloat()";
55 | break;
56 | }
57 |
58 | case "string": {
59 | code = "bb.readString()";
60 | break;
61 | }
62 |
63 | default: {
64 | let type = definitions[field.type!];
65 | if (!type) {
66 | error(
67 | "Invalid type " +
68 | quote(field.type!) +
69 | " for field " +
70 | quote(field.name),
71 | field.line,
72 | field.column
73 | );
74 | } else if (type.kind === "ENUM") {
75 | code = "this[" + quote(type.name) + "][bb.readVarUint()]";
76 | } else {
77 | code = "this[" + quote("decode" + type.name) + "](bb)";
78 | }
79 | }
80 | }
81 |
82 | if (definition.kind === "MESSAGE") {
83 | lines.push(" case " + field.value + ":");
84 | }
85 |
86 | if (field.isArray) {
87 | if (field.isDeprecated) {
88 | if (field.type === "byte") {
89 | lines.push(indent + "bb.readByteArray();");
90 | } else {
91 | lines.push(indent + "var length = bb.readVarUint();");
92 | lines.push(indent + "while (length-- > 0) " + code + ";");
93 | }
94 | } else {
95 | if (field.type === "byte") {
96 | lines.push(
97 | indent + "result[" + quote(field.name) + "] = bb.readByteArray();"
98 | );
99 | } else {
100 | lines.push(indent + "var length = bb.readVarUint();");
101 | lines.push(
102 | indent +
103 | "var values = result[" +
104 | quote(field.name) +
105 | "] = Array(length);"
106 | );
107 | lines.push(
108 | indent +
109 | "for (var i = 0; i < length; i++) values[i] = " +
110 | code +
111 | ";"
112 | );
113 | }
114 | }
115 | } else {
116 | if (field.isDeprecated) {
117 | lines.push(indent + code + ";");
118 | } else {
119 | lines.push(
120 | indent + "result[" + quote(field.name) + "] = " + code + ";"
121 | );
122 | }
123 | }
124 |
125 | if (definition.kind === "MESSAGE") {
126 | lines.push(" break;");
127 | lines.push("");
128 | }
129 | }
130 |
131 | if (definition.kind === "MESSAGE") {
132 | lines.push(" default:");
133 | lines.push(' throw new Error("Attempted to parse invalid message");');
134 | lines.push(" }");
135 | lines.push(" }");
136 | } else {
137 | lines.push(" return result;");
138 | }
139 |
140 | lines.push("}");
141 |
142 | return lines.join("\n");
143 | }
144 |
145 | function compileEncode(
146 | definition: Definition,
147 | definitions: { [name: string]: Definition }
148 | ): string {
149 | let lines: string[] = [];
150 |
151 | lines.push("function(message, bb) {");
152 | lines.push(" var isTopLevel = !bb;");
153 | lines.push(" if (isTopLevel) bb = new this.ByteBuffer();");
154 |
155 | for (let j = 0; j < definition.fields.length; j++) {
156 | let field = definition.fields[j];
157 | let code: string;
158 |
159 | if (field.isDeprecated) {
160 | continue;
161 | }
162 |
163 | switch (field.type) {
164 | case "bool": {
165 | code = "bb.writeByte(value);";
166 | break;
167 | }
168 |
169 | case "byte": {
170 | code = "bb.writeByte(value);"; // only used if not array
171 | break;
172 | }
173 |
174 | case "int": {
175 | code = "bb.writeVarInt(value);";
176 | break;
177 | }
178 |
179 | case "uint": {
180 | code = "bb.writeVarUint(value);";
181 | break;
182 | }
183 |
184 | case "float": {
185 | code = "bb.writeVarFloat(value);";
186 | break;
187 | }
188 |
189 | case "string": {
190 | code = "bb.writeString(value);";
191 | break;
192 | }
193 |
194 | default: {
195 | let type = definitions[field.type!];
196 | if (!type) {
197 | throw new Error(
198 | "Invalid type " +
199 | quote(field.type!) +
200 | " for field " +
201 | quote(field.name)
202 | );
203 | } else if (type.kind === "ENUM") {
204 | code =
205 | "var encoded = this[" +
206 | quote(type.name) +
207 | "][value]; " +
208 | 'if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + ' +
209 | quote(" for enum " + quote(type.name)) +
210 | "); " +
211 | "bb.writeVarUint(encoded);";
212 | } else {
213 | code = "this[" + quote("encode" + type.name) + "](value, bb);";
214 | }
215 | }
216 | }
217 |
218 | lines.push("");
219 | lines.push(" var value = message[" + quote(field.name) + "];");
220 | lines.push(" if (value != null) {"); // Comparing with null using "!=" also checks for undefined
221 |
222 | if (definition.kind === "MESSAGE") {
223 | lines.push(" bb.writeVarUint(" + field.value + ");");
224 | }
225 |
226 | if (field.isArray) {
227 | if (field.type === "byte") {
228 | lines.push(" bb.writeByteArray(value);");
229 | } else {
230 | lines.push(" var values = value, n = values.length;");
231 | lines.push(" bb.writeVarUint(n);");
232 | lines.push(" for (var i = 0; i < n; i++) {");
233 | lines.push(" value = values[i];");
234 | lines.push(" " + code);
235 | lines.push(" }");
236 | }
237 | } else {
238 | lines.push(" " + code);
239 | }
240 |
241 | if (definition.kind === "STRUCT") {
242 | lines.push(" } else {");
243 | lines.push(
244 | " throw new Error(" +
245 | quote("Missing required field " + quote(field.name)) +
246 | ");"
247 | );
248 | }
249 |
250 | lines.push(" }");
251 | }
252 |
253 | // A field id of zero is reserved to indicate the end of the message
254 | if (definition.kind === "MESSAGE") {
255 | lines.push(" bb.writeVarUint(0);");
256 | }
257 |
258 | lines.push("");
259 | lines.push(" if (isTopLevel) return bb.toUint8Array();");
260 | lines.push("}");
261 |
262 | return lines.join("\n");
263 | }
264 |
265 | export function compileSchemaJS(schema: Schema): string {
266 | let definitions: { [name: string]: Definition } = {};
267 | let name = schema.package;
268 | let js: string[] = [];
269 |
270 | if (name !== null) {
271 | js.push("var " + name + " = exports || " + name + " || {}, exports;");
272 | } else {
273 | js.push("var exports = exports || {};");
274 | name = "exports";
275 | }
276 |
277 | js.push(
278 | name +
279 | ".ByteBuffer = " +
280 | name +
281 | '.ByteBuffer || require("kiwi-schema").ByteBuffer;'
282 | );
283 |
284 | for (let i = 0; i < schema.definitions.length; i++) {
285 | let definition = schema.definitions[i];
286 | definitions[definition.name] = definition;
287 | }
288 |
289 | for (let i = 0; i < schema.definitions.length; i++) {
290 | let definition = schema.definitions[i];
291 |
292 | switch (definition.kind) {
293 | case "ENUM": {
294 | let value: any = {};
295 | for (let j = 0; j < definition.fields.length; j++) {
296 | let field = definition.fields[j];
297 | value[field.name] = field.value;
298 | value[field.value] = field.name;
299 | }
300 | js.push(
301 | name +
302 | "[" +
303 | quote(definition.name) +
304 | "] = " +
305 | JSON.stringify(value, null, 2) +
306 | ";"
307 | );
308 | break;
309 | }
310 |
311 | case "STRUCT":
312 | case "MESSAGE": {
313 | js.push("");
314 | js.push(
315 | name +
316 | "[" +
317 | quote("decode" + definition.name) +
318 | "] = " +
319 | compileDecode(definition, definitions) +
320 | ";"
321 | );
322 | js.push("");
323 | js.push(
324 | name +
325 | "[" +
326 | quote("encode" + definition.name) +
327 | "] = " +
328 | compileEncode(definition, definitions) +
329 | ";"
330 | );
331 | break;
332 | }
333 |
334 | default: {
335 | error(
336 | "Invalid definition kind " + quote(definition.kind),
337 | definition.line,
338 | definition.column
339 | );
340 | break;
341 | }
342 | }
343 | }
344 |
345 | js.push("");
346 | return js.join("\n");
347 | }
348 |
349 | export function compileSchema(schema: Schema): any {
350 | let result = {
351 | ByteBuffer: ByteBuffer,
352 | };
353 | new Function("exports", compileSchemaJS(schema))(result);
354 | return result;
355 | }
356 |
--------------------------------------------------------------------------------
/src/lib/kiwi/schema.ts:
--------------------------------------------------------------------------------
1 | export interface Schema {
2 | package: string | null;
3 | definitions: Definition[];
4 | }
5 |
6 | export type DefinitionKind = "ENUM" | "STRUCT" | "MESSAGE";
7 |
8 | export interface Definition {
9 | name: string;
10 | line: number;
11 | column: number;
12 | kind: DefinitionKind;
13 | fields: Field[];
14 | }
15 |
16 | export interface Field {
17 | name: string;
18 | line: number;
19 | column: number;
20 | type: string | null;
21 | isArray: boolean;
22 | isDeprecated: boolean;
23 | value: number;
24 | }
25 |
--------------------------------------------------------------------------------
/src/lib/kiwi/utils.ts:
--------------------------------------------------------------------------------
1 | export const getWordFromByteRange = function (
2 | byte: Uint8Array,
3 | start: number,
4 | end: number
5 | ) {
6 | let text = "";
7 | while (start < end) {
8 | start++;
9 | text += String.fromCharCode(byte[start]);
10 | }
11 | return text;
12 | };
13 |
14 | export const getOneWordFromByte = function (byte: Uint8Array, start: number) {
15 | let end = start;
16 | // if the letter equal space, that word end;
17 | while (byte[end] != 0) end++;
18 |
19 | for (var i = start; i < end; i++) {
20 | const char = byte[i];
21 | if (char > 127) throw "e";
22 | }
23 |
24 | return getWordFromByteRange(byte, start, end);
25 | };
26 |
27 | export function quote(text: string): string {
28 | return JSON.stringify(text);
29 | }
30 |
31 | export function error(text: string, line: number, column: number): never {
32 | var error = new Error(text);
33 | (error as any).line = line;
34 | (error as any).column = column;
35 | throw error;
36 | }
37 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 |
5 | /* Projects */
6 | // "incremental": true, /* Enable incremental compilation */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "ESNEXT" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | // "jsx": "preserve", /* Specify what JSX code is generated. */
17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 |
26 | /* Modules */
27 | "module": "ESNEXT" /* Specify what module code is generated. */,
28 | // "rootDir": "./", /* Specify the root folder within your source files. */
29 | "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
30 | "baseUrl": "./" /* Specify the base directory to resolve non-relative module names. */,
31 | "paths": {
32 | "@vue/*": ["packages/*/src"]
33 | } /* Specify a set of entries that re-map imports to additional lookup locations. */,
34 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
35 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
36 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
37 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
38 | // "resolveJsonModule": true, /* Enable importing .json files */
39 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */
40 |
41 | /* JavaScript Support */
42 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
43 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
44 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
45 |
46 | /* Emit */
47 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
48 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
49 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
50 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
51 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
52 | // "outDir": "./", /* Specify an output folder for all emitted files. */
53 | // "removeComments": true, /* Disable emitting comments. */
54 | // "noEmit": true, /* Disable emitting files from a compilation. */
55 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
56 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
57 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
58 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
59 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
60 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
61 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
62 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
63 | // "newLine": "crlf", /* Set the newline character for emitting files. */
64 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
65 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
66 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
67 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
68 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
69 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
70 |
71 | /* Interop Constraints */
72 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
73 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
74 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,
75 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
76 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
77 |
78 | /* Type Checking */
79 | "strict": false /* Enable all strict type-checking options. */,
80 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
81 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
82 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
83 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
84 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
85 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
86 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
87 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
88 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
89 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
90 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
91 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
92 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
93 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
94 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
95 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
96 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
97 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
98 |
99 | /* Completeness */
100 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
101 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.10.4":
6 | version "7.16.7"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
8 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
9 | dependencies:
10 | "@babel/highlight" "^7.16.7"
11 |
12 | "@babel/helper-validator-identifier@^7.16.7":
13 | version "7.16.7"
14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
15 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
16 |
17 | "@babel/highlight@^7.16.7":
18 | version "7.17.9"
19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
20 | integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
21 | dependencies:
22 | "@babel/helper-validator-identifier" "^7.16.7"
23 | chalk "^2.0.0"
24 | js-tokens "^4.0.0"
25 |
26 | "@rollup/plugin-json@^4.1.0":
27 | version "4.1.0"
28 | resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3"
29 | integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==
30 | dependencies:
31 | "@rollup/pluginutils" "^3.0.8"
32 |
33 | "@rollup/plugin-node-resolve@^13.3.0":
34 | version "13.3.0"
35 | resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c"
36 | integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==
37 | dependencies:
38 | "@rollup/pluginutils" "^3.1.0"
39 | "@types/resolve" "1.17.1"
40 | deepmerge "^4.2.2"
41 | is-builtin-module "^3.1.0"
42 | is-module "^1.0.0"
43 | resolve "^1.19.0"
44 |
45 | "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0":
46 | version "3.1.0"
47 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
48 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
49 | dependencies:
50 | "@types/estree" "0.0.39"
51 | estree-walker "^1.0.1"
52 | picomatch "^2.2.2"
53 |
54 | "@rollup/pluginutils@^4.1.2":
55 | version "4.2.1"
56 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d"
57 | integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==
58 | dependencies:
59 | estree-walker "^2.0.1"
60 | picomatch "^2.2.2"
61 |
62 | "@types/estree@0.0.39":
63 | version "0.0.39"
64 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
65 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
66 |
67 | "@types/node@*":
68 | version "17.0.31"
69 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d"
70 | integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==
71 |
72 | "@types/resolve@1.17.1":
73 | version "1.17.1"
74 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
75 | integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==
76 | dependencies:
77 | "@types/node" "*"
78 |
79 | "@yarn-tool/resolve-package@^1.0.40":
80 | version "1.0.46"
81 | resolved "https://registry.yarnpkg.com/@yarn-tool/resolve-package/-/resolve-package-1.0.46.tgz#db7354380e5ca7682294af59e5ab0f7fce640ac1"
82 | integrity sha512-RJcBGTVywUqYGRtGkPSgJC/ozf0wK/xjUy66tXkbpL35U0o1oef4S0v23euxA/CiukqBWr2fRGtGY6FidESdTg==
83 | dependencies:
84 | pkg-dir "< 6 >= 5"
85 | tslib "^2.3.1"
86 | upath2 "^3.1.12"
87 |
88 | acorn@^8.5.0:
89 | version "8.7.1"
90 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
91 | integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
92 |
93 | ansi-styles@^3.2.1:
94 | version "3.2.1"
95 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
96 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
97 | dependencies:
98 | color-convert "^1.9.0"
99 |
100 | buffer-from@^1.0.0:
101 | version "1.1.2"
102 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
103 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
104 |
105 | builtin-modules@^3.0.0:
106 | version "3.2.0"
107 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
108 | integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
109 |
110 | chalk@^2.0.0:
111 | version "2.4.2"
112 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
113 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
114 | dependencies:
115 | ansi-styles "^3.2.1"
116 | escape-string-regexp "^1.0.5"
117 | supports-color "^5.3.0"
118 |
119 | color-convert@^1.9.0:
120 | version "1.9.3"
121 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
122 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
123 | dependencies:
124 | color-name "1.1.3"
125 |
126 | color-name@1.1.3:
127 | version "1.1.3"
128 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
129 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
130 |
131 | commander@^2.20.0:
132 | version "2.20.3"
133 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
134 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
135 |
136 | commondir@^1.0.1:
137 | version "1.0.1"
138 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
139 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
140 |
141 | cross-spawn@^7.0.3:
142 | version "7.0.3"
143 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
144 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
145 | dependencies:
146 | path-key "^3.1.0"
147 | shebang-command "^2.0.0"
148 | which "^2.0.1"
149 |
150 | deepmerge@^4.2.2:
151 | version "4.2.2"
152 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
153 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
154 |
155 | escape-string-regexp@^1.0.5:
156 | version "1.0.5"
157 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
158 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
159 |
160 | estree-walker@^0.6.1:
161 | version "0.6.1"
162 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
163 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
164 |
165 | estree-walker@^1.0.1:
166 | version "1.0.1"
167 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
168 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
169 |
170 | estree-walker@^2.0.1:
171 | version "2.0.2"
172 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
173 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
174 |
175 | execa@5.1.1:
176 | version "5.1.1"
177 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
178 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
179 | dependencies:
180 | cross-spawn "^7.0.3"
181 | get-stream "^6.0.0"
182 | human-signals "^2.1.0"
183 | is-stream "^2.0.0"
184 | merge-stream "^2.0.0"
185 | npm-run-path "^4.0.1"
186 | onetime "^5.1.2"
187 | signal-exit "^3.0.3"
188 | strip-final-newline "^2.0.0"
189 |
190 | find-cache-dir@^3.3.2:
191 | version "3.3.2"
192 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
193 | integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
194 | dependencies:
195 | commondir "^1.0.1"
196 | make-dir "^3.0.2"
197 | pkg-dir "^4.1.0"
198 |
199 | find-up@^4.0.0:
200 | version "4.1.0"
201 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
202 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
203 | dependencies:
204 | locate-path "^5.0.0"
205 | path-exists "^4.0.0"
206 |
207 | find-up@^5.0.0:
208 | version "5.0.0"
209 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
210 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
211 | dependencies:
212 | locate-path "^6.0.0"
213 | path-exists "^4.0.0"
214 |
215 | fs-extra@^10.0.0:
216 | version "10.1.0"
217 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
218 | integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
219 | dependencies:
220 | graceful-fs "^4.2.0"
221 | jsonfile "^6.0.1"
222 | universalify "^2.0.0"
223 |
224 | fsevents@~2.3.2:
225 | version "2.3.2"
226 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
227 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
228 |
229 | function-bind@^1.1.1:
230 | version "1.1.1"
231 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
232 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
233 |
234 | get-stream@^6.0.0:
235 | version "6.0.1"
236 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
237 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
238 |
239 | graceful-fs@^4.1.6, graceful-fs@^4.2.0:
240 | version "4.2.10"
241 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
242 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
243 |
244 | has-flag@^3.0.0:
245 | version "3.0.0"
246 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
247 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
248 |
249 | has-flag@^4.0.0:
250 | version "4.0.0"
251 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
252 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
253 |
254 | has@^1.0.3:
255 | version "1.0.3"
256 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
257 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
258 | dependencies:
259 | function-bind "^1.1.1"
260 |
261 | human-signals@^2.1.0:
262 | version "2.1.0"
263 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
264 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
265 |
266 | is-builtin-module@^3.1.0:
267 | version "3.1.0"
268 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00"
269 | integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==
270 | dependencies:
271 | builtin-modules "^3.0.0"
272 |
273 | is-core-module@^2.8.1:
274 | version "2.9.0"
275 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69"
276 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==
277 | dependencies:
278 | has "^1.0.3"
279 |
280 | is-module@^1.0.0:
281 | version "1.0.0"
282 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
283 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
284 |
285 | is-stream@^2.0.0:
286 | version "2.0.1"
287 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
288 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
289 |
290 | isexe@^2.0.0:
291 | version "2.0.0"
292 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
293 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
294 |
295 | jest-worker@^26.2.1:
296 | version "26.6.2"
297 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
298 | integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
299 | dependencies:
300 | "@types/node" "*"
301 | merge-stream "^2.0.0"
302 | supports-color "^7.0.0"
303 |
304 | js-cleanup@^1.2.0:
305 | version "1.2.0"
306 | resolved "https://registry.yarnpkg.com/js-cleanup/-/js-cleanup-1.2.0.tgz#8dbc65954b1d38b255f1e8cf02cd17b3f7a053f9"
307 | integrity sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==
308 | dependencies:
309 | magic-string "^0.25.7"
310 | perf-regexes "^1.0.1"
311 | skip-regex "^1.0.2"
312 |
313 | js-tokens@^4.0.0:
314 | version "4.0.0"
315 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
316 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
317 |
318 | jsonfile@^6.0.1:
319 | version "6.1.0"
320 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
321 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
322 | dependencies:
323 | universalify "^2.0.0"
324 | optionalDependencies:
325 | graceful-fs "^4.1.6"
326 |
327 | locate-path@^5.0.0:
328 | version "5.0.0"
329 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
330 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
331 | dependencies:
332 | p-locate "^4.1.0"
333 |
334 | locate-path@^6.0.0:
335 | version "6.0.0"
336 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
337 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
338 | dependencies:
339 | p-locate "^5.0.0"
340 |
341 | lodash.sortby@^4.7.0:
342 | version "4.7.0"
343 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
344 | integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
345 |
346 | magic-string@^0.25.7:
347 | version "0.25.9"
348 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
349 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
350 | dependencies:
351 | sourcemap-codec "^1.4.8"
352 |
353 | make-dir@^3.0.2:
354 | version "3.1.0"
355 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
356 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
357 | dependencies:
358 | semver "^6.0.0"
359 |
360 | merge-stream@^2.0.0:
361 | version "2.0.0"
362 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
363 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
364 |
365 | mimic-fn@^2.1.0:
366 | version "2.1.0"
367 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
368 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
369 |
370 | npm-run-path@^4.0.1:
371 | version "4.0.1"
372 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
373 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
374 | dependencies:
375 | path-key "^3.0.0"
376 |
377 | onetime@^5.1.2:
378 | version "5.1.2"
379 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
380 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
381 | dependencies:
382 | mimic-fn "^2.1.0"
383 |
384 | p-limit@^2.2.0:
385 | version "2.3.0"
386 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
387 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
388 | dependencies:
389 | p-try "^2.0.0"
390 |
391 | p-limit@^3.0.2:
392 | version "3.1.0"
393 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
394 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
395 | dependencies:
396 | yocto-queue "^0.1.0"
397 |
398 | p-locate@^4.1.0:
399 | version "4.1.0"
400 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
401 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
402 | dependencies:
403 | p-limit "^2.2.0"
404 |
405 | p-locate@^5.0.0:
406 | version "5.0.0"
407 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
408 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
409 | dependencies:
410 | p-limit "^3.0.2"
411 |
412 | p-try@^2.0.0:
413 | version "2.2.0"
414 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
415 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
416 |
417 | path-exists@^4.0.0:
418 | version "4.0.0"
419 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
420 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
421 |
422 | path-is-network-drive@^1.0.13:
423 | version "1.0.13"
424 | resolved "https://registry.yarnpkg.com/path-is-network-drive/-/path-is-network-drive-1.0.13.tgz#c9aa0183eb72c328aa83f43def93ddcb9d7ec4d4"
425 | integrity sha512-Hg74mRN6mmXV+gTm3INjFK40ncAmC/Lo4qoQaSZ+GT3hZzlKdWQSqAjqyPeW0SvObP2W073WyYEBWY9d3wOm3A==
426 | dependencies:
427 | tslib "^2.3.1"
428 |
429 | path-key@^3.0.0, path-key@^3.1.0:
430 | version "3.1.1"
431 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
432 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
433 |
434 | path-parse@^1.0.7:
435 | version "1.0.7"
436 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
437 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
438 |
439 | path-strip-sep@^1.0.10:
440 | version "1.0.10"
441 | resolved "https://registry.yarnpkg.com/path-strip-sep/-/path-strip-sep-1.0.10.tgz#2be4e789406b298af8709ff79af716134b733b98"
442 | integrity sha512-JpCy+8LAJQQTO1bQsb/84s1g+/Stm3h39aOpPRBQ/paMUGVPPZChLTOTKHoaCkc/6sKuF7yVsnq5Pe1S6xQGcA==
443 | dependencies:
444 | tslib "^2.3.1"
445 |
446 | perf-regexes@^1.0.1:
447 | version "1.0.1"
448 | resolved "https://registry.yarnpkg.com/perf-regexes/-/perf-regexes-1.0.1.tgz#6da1d62f5a94bf9353a0451bccacf69068b75d0b"
449 | integrity sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==
450 |
451 | picomatch@^2.2.2:
452 | version "2.3.1"
453 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
454 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
455 |
456 | "pkg-dir@< 6 >= 5":
457 | version "5.0.0"
458 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
459 | integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==
460 | dependencies:
461 | find-up "^5.0.0"
462 |
463 | pkg-dir@^4.1.0:
464 | version "4.2.0"
465 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
466 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
467 | dependencies:
468 | find-up "^4.0.0"
469 |
470 | punycode@^2.1.0:
471 | version "2.1.1"
472 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
473 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
474 |
475 | randombytes@^2.1.0:
476 | version "2.1.0"
477 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
478 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
479 | dependencies:
480 | safe-buffer "^5.1.0"
481 |
482 | resolve@^1.19.0, resolve@^1.20.0:
483 | version "1.22.0"
484 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
485 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
486 | dependencies:
487 | is-core-module "^2.8.1"
488 | path-parse "^1.0.7"
489 | supports-preserve-symlinks-flag "^1.0.0"
490 |
491 | rollup-plugin-cleanup@^3.2.1:
492 | version "3.2.1"
493 | resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c"
494 | integrity sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==
495 | dependencies:
496 | js-cleanup "^1.2.0"
497 | rollup-pluginutils "^2.8.2"
498 |
499 | rollup-plugin-terser@^7.0.2:
500 | version "7.0.2"
501 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d"
502 | integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==
503 | dependencies:
504 | "@babel/code-frame" "^7.10.4"
505 | jest-worker "^26.2.1"
506 | serialize-javascript "^4.0.0"
507 | terser "^5.0.0"
508 |
509 | rollup-plugin-typescript2@^0.31.2:
510 | version "0.31.2"
511 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.2.tgz#463aa713a7e2bf85b92860094b9f7fb274c5a4d8"
512 | integrity sha512-hRwEYR1C8xDGVVMFJQdEVnNAeWRvpaY97g5mp3IeLnzhNXzSVq78Ye/BJ9PAaUfN4DXa/uDnqerifMOaMFY54Q==
513 | dependencies:
514 | "@rollup/pluginutils" "^4.1.2"
515 | "@yarn-tool/resolve-package" "^1.0.40"
516 | find-cache-dir "^3.3.2"
517 | fs-extra "^10.0.0"
518 | resolve "^1.20.0"
519 | tslib "^2.3.1"
520 |
521 | rollup-pluginutils@^2.8.2:
522 | version "2.8.2"
523 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
524 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
525 | dependencies:
526 | estree-walker "^0.6.1"
527 |
528 | rollup@^2.72.1:
529 | version "2.72.1"
530 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.72.1.tgz#861c94790537b10008f0ca0fbc60e631aabdd045"
531 | integrity sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==
532 | optionalDependencies:
533 | fsevents "~2.3.2"
534 |
535 | safe-buffer@^5.1.0:
536 | version "5.2.1"
537 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
538 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
539 |
540 | semver@^6.0.0:
541 | version "6.3.0"
542 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
543 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
544 |
545 | serialize-javascript@^4.0.0:
546 | version "4.0.0"
547 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
548 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
549 | dependencies:
550 | randombytes "^2.1.0"
551 |
552 | shebang-command@^2.0.0:
553 | version "2.0.0"
554 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
555 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
556 | dependencies:
557 | shebang-regex "^3.0.0"
558 |
559 | shebang-regex@^3.0.0:
560 | version "3.0.0"
561 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
562 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
563 |
564 | signal-exit@^3.0.3:
565 | version "3.0.7"
566 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
567 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
568 |
569 | skip-regex@^1.0.2:
570 | version "1.0.2"
571 | resolved "https://registry.yarnpkg.com/skip-regex/-/skip-regex-1.0.2.tgz#ac655d77e7c771ac2b9f37585fea37bff56ad65b"
572 | integrity sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==
573 |
574 | source-map-support@~0.5.20:
575 | version "0.5.21"
576 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
577 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
578 | dependencies:
579 | buffer-from "^1.0.0"
580 | source-map "^0.6.0"
581 |
582 | source-map@^0.6.0:
583 | version "0.6.1"
584 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
585 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
586 |
587 | source-map@~0.8.0-beta.0:
588 | version "0.8.0-beta.0"
589 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11"
590 | integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==
591 | dependencies:
592 | whatwg-url "^7.0.0"
593 |
594 | sourcemap-codec@^1.4.8:
595 | version "1.4.8"
596 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
597 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
598 |
599 | strip-final-newline@^2.0.0:
600 | version "2.0.0"
601 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
602 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
603 |
604 | supports-color@^5.3.0:
605 | version "5.5.0"
606 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
607 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
608 | dependencies:
609 | has-flag "^3.0.0"
610 |
611 | supports-color@^7.0.0:
612 | version "7.2.0"
613 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
614 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
615 | dependencies:
616 | has-flag "^4.0.0"
617 |
618 | supports-preserve-symlinks-flag@^1.0.0:
619 | version "1.0.0"
620 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
621 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
622 |
623 | terser@^5.0.0:
624 | version "5.13.1"
625 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799"
626 | integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==
627 | dependencies:
628 | acorn "^8.5.0"
629 | commander "^2.20.0"
630 | source-map "~0.8.0-beta.0"
631 | source-map-support "~0.5.20"
632 |
633 | tr46@^1.0.1:
634 | version "1.0.1"
635 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
636 | integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
637 | dependencies:
638 | punycode "^2.1.0"
639 |
640 | tslib@^2.3.1:
641 | version "2.4.0"
642 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
643 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
644 |
645 | typescript@^4.6.4:
646 | version "4.6.4"
647 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9"
648 | integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==
649 |
650 | universalify@^2.0.0:
651 | version "2.0.0"
652 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
653 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
654 |
655 | upath2@^3.1.12:
656 | version "3.1.12"
657 | resolved "https://registry.yarnpkg.com/upath2/-/upath2-3.1.12.tgz#441b3dfbadde21731017bd1b7beb169498efd0a9"
658 | integrity sha512-yC3eZeCyCXFWjy7Nu4pgjLhXNYjuzuUmJiRgSSw6TJp8Emc+E4951HGPJf+bldFC5SL7oBLeNbtm1fGzXn2gxw==
659 | dependencies:
660 | path-is-network-drive "^1.0.13"
661 | path-strip-sep "^1.0.10"
662 | tslib "^2.3.1"
663 |
664 | webidl-conversions@^4.0.2:
665 | version "4.0.2"
666 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
667 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
668 |
669 | whatwg-url@^7.0.0:
670 | version "7.1.0"
671 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
672 | integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
673 | dependencies:
674 | lodash.sortby "^4.7.0"
675 | tr46 "^1.0.1"
676 | webidl-conversions "^4.0.2"
677 |
678 | which@^2.0.1:
679 | version "2.0.2"
680 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
681 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
682 | dependencies:
683 | isexe "^2.0.0"
684 |
685 | yocto-queue@^0.1.0:
686 | version "0.1.0"
687 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
688 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
689 |
--------------------------------------------------------------------------------