├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── composer.json
├── composer.lock
├── js
├── .gitignore
├── build
│ └── bundle.js
├── package-lock.json
├── package.json
├── src
│ ├── .gitignore
│ ├── UrlManager.ts
│ ├── UrlRule.ts
│ ├── app.ts
│ ├── helpers.ts
│ ├── interfaces.ts
│ └── tsconfig.json
├── tests
│ ├── .gitignore
│ ├── test.ts
│ └── tsconfig.json
└── webpack.config.js
├── phpunit.xml
├── src
├── JsUrlManager.php
└── JsUrlManagerAsset.php
└── tests
├── JsUrlManagerTest.php
└── bootstrap.php
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | vendor/
3 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6 |
7 | ## Our Standards
8 |
9 | Examples of behavior that contributes to creating a positive environment include:
10 |
11 | * Using welcoming and inclusive language
12 | * Being respectful of differing viewpoints and experiences
13 | * Gracefully accepting constructive criticism
14 | * Focusing on what is best for the community
15 | * Showing empathy towards other community members
16 |
17 | Examples of unacceptable behavior by participants include:
18 |
19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances
20 | * Trolling, insulting/derogatory comments, and personal or political attacks
21 | * Public or private harassment
22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission
23 | * Other conduct which could reasonably be considered inappropriate in a professional setting
24 |
25 | ## Our Responsibilities
26 |
27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
28 |
29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
30 |
31 | ## Scope
32 |
33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
34 |
35 | ## Enforcement
36 |
37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at dmirogin@ya.ru. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
38 |
39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
40 |
41 | ## Attribution
42 |
43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
44 |
45 | [homepage]: http://contributor-covenant.org
46 | [version]: http://contributor-covenant.org/version/1/4/
47 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | 1. Clone project
2 | 2. Write code
3 | 3. Test
4 | ```
5 | npm run test
6 | ```
7 | ```
8 | ./vendor/bin/phpunit
9 | ```
10 | 4. Build js
11 | ```
12 | npm run build
13 | ```
14 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Dmitry Dorogin
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 | [](https://packagist.org/packages/dmirogin/yii2-js-urlmanager)
2 | [](https://packagist.org/packages/dmirogin/yii2-js-urlmanager)
3 | # Yii2 js UrlManager
4 |
5 | That extension provide a way to create urls from your frontend part.
6 |
7 | ### Instalation
8 | ```php
9 | composer require dmirogin/yii2-js-urlmanager
10 | ```
11 |
12 | 1. [How to use](#how-to-use)
13 | 2. [PHP options](#php-options)
14 | 3. [Contributing](#contributing)
15 | 4. [Roadmap](#roadmap)
16 |
17 | ### How to use
18 |
19 | 1. Add component to your application configuration
20 | ```php
21 | 'jsUrlManager' => [
22 | 'class' => \dmirogin\js\urlmanager\JsUrlManager::class,
23 | ],
24 | ```
25 | 2. Add component to bootstrap
26 | ```php
27 | 'bootstrap' => ['jsUrlManager'],
28 | ```
29 | 3. Now you can use window.UrlManager or just UrlManager in your frontend part
30 | ```js
31 | UrlManager.createUrl('foo/bar', {id: 10})
32 | ```
33 |
34 | if you want to change assets position, use this
35 | ```php
36 | 'assetManager' => [
37 | 'bundles' => [
38 | \dmirogin\js\urlmanager\JsUrlManagerAsset::class => [
39 | 'jsOptions' => [
40 | 'position' => \yii\web\View::POS_END,
41 | ],
42 | ],
43 | ],
44 | ],
45 | ```
46 | ### PHP options
47 |
48 | #### configurationStringPosition - integer
49 | Default value - \yii\web\View::POS_HEAD
50 |
51 | The location to register configuration Frontend UrlManager string
52 | ```php
53 | 'jsUrlManager' => [
54 | 'class' => \dmirogin\js\urlmanager\JsUrlManager::class,
55 | 'configurationStringPosition' => \yii\web\View::POS_END,
56 | ],
57 | ```
58 |
59 | #### configureThroughVariable - boolean
60 | Default value - false
61 |
62 | Setting configuration through document variable urlManagerConfiguration
63 | ```php
64 | 'jsUrlManager' => [
65 | 'class' => \dmirogin\js\urlmanager\JsUrlManager::class,
66 | 'configureThroughVariable' => true,
67 | ],
68 | ```
69 | ### Contributing
70 | 1. Clone project
71 | 2. Write code
72 | 3. Test
73 | ```
74 | npm run test
75 | ```
76 | ```
77 | ./vendor/bin/phpunit
78 | ```
79 | 4. Build js
80 | ```
81 | npm run build
82 | ```
83 |
84 | ### Roadmap
85 | * Disable or enable including rules in frontend
86 | * Creating absolute urls
87 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dmirogin/yii2-js-urlmanager",
3 | "description": "Yii2 javascript URL manager",
4 | "keywords": ["yii2", "assets", "urlManager"],
5 | "type": "yii2-extension",
6 | "license": "MIT",
7 | "support": {
8 | "issues": "https://github.com/dmirogin/yii2-js-urlmanager/issues",
9 | "source": "https://github.com/dmirogin/yii2-js-urlmanager"
10 | },
11 | "authors": [
12 | {
13 | "name": "Dmitry Dorogin",
14 | "email": "dmirogin@ya.ru"
15 | }
16 | ],
17 | "require": {
18 | "php": ">=5.5.0",
19 | "yiisoft/yii2": "2.*"
20 | },
21 | "require-dev": {
22 | "phpunit/phpunit": "*"
23 | },
24 | "autoload": {
25 | "psr-4": {
26 | "dmirogin\\js\\urlmanager\\": "src/"
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 | "This file is @generated automatically"
6 | ],
7 | "hash": "eb527a0205481c931ae48c431f1863fc",
8 | "content-hash": "314c4109bedf3f7492d54e72342ff52e",
9 | "packages": [
10 | {
11 | "name": "bower-asset/jquery",
12 | "version": "2.2.4",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/jquery/jquery-dist.git",
16 | "reference": "c0185ab7c75aab88762c5aae780b9d83b80eda72"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/c0185ab7c75aab88762c5aae780b9d83b80eda72",
21 | "reference": "c0185ab7c75aab88762c5aae780b9d83b80eda72",
22 | "shasum": ""
23 | },
24 | "type": "bower-asset-library",
25 | "extra": {
26 | "bower-asset-main": "dist/jquery.js",
27 | "bower-asset-ignore": [
28 | "package.json"
29 | ]
30 | },
31 | "license": [
32 | "MIT"
33 | ],
34 | "keywords": [
35 | "browser",
36 | "javascript",
37 | "jquery",
38 | "library"
39 | ]
40 | },
41 | {
42 | "name": "bower-asset/jquery.inputmask",
43 | "version": "3.3.4",
44 | "source": {
45 | "type": "git",
46 | "url": "https://github.com/RobinHerbots/Inputmask.git",
47 | "reference": "8a882bc471ba4077c4f8ecbe3d9d61c7558f3ef2"
48 | },
49 | "dist": {
50 | "type": "zip",
51 | "url": "https://api.github.com/repos/RobinHerbots/Inputmask/zipball/8a882bc471ba4077c4f8ecbe3d9d61c7558f3ef2",
52 | "reference": "8a882bc471ba4077c4f8ecbe3d9d61c7558f3ef2",
53 | "shasum": ""
54 | },
55 | "require": {
56 | "bower-asset/jquery": ">=1.7"
57 | },
58 | "type": "bower-asset-library",
59 | "extra": {
60 | "bower-asset-main": [
61 | "./dist/inputmask/inputmask.dependencyLib",
62 | "./dist/inputmask/inputmask",
63 | "./dist/inputmask/inputmask.extensions",
64 | "./dist/inputmask/inputmask.date.extensions",
65 | "./dist/inputmask/inputmask.numeric.extensions",
66 | "./dist/inputmask/inputmask.phone.extensions",
67 | "./dist/inputmask/inputmask.regex.extensions",
68 | "./dist/inputmask/jquery.inputmask"
69 | ],
70 | "bower-asset-ignore": [
71 | "**/*",
72 | "!dist/*",
73 | "!dist/inputmask/*",
74 | "!dist/min/*",
75 | "!dist/min/inputmask/*",
76 | "!extra/bindings/*",
77 | "!extra/dependencyLibs/*",
78 | "!extra/phone-codes/*"
79 | ]
80 | },
81 | "license": [
82 | "http://opensource.org/licenses/mit-license.php"
83 | ],
84 | "description": "jquery.inputmask is a jquery plugin which create an input mask.",
85 | "keywords": [
86 | "form",
87 | "input",
88 | "inputmask",
89 | "jquery",
90 | "mask",
91 | "plugins"
92 | ]
93 | },
94 | {
95 | "name": "bower-asset/punycode",
96 | "version": "v1.3.2",
97 | "source": {
98 | "type": "git",
99 | "url": "https://github.com/bestiejs/punycode.js.git",
100 | "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3"
101 | },
102 | "dist": {
103 | "type": "zip",
104 | "url": "https://api.github.com/repos/bestiejs/punycode.js/zipball/38c8d3131a82567bfef18da09f7f4db68c84f8a3",
105 | "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3",
106 | "shasum": ""
107 | },
108 | "type": "bower-asset-library",
109 | "extra": {
110 | "bower-asset-main": "punycode.js",
111 | "bower-asset-ignore": [
112 | "coverage",
113 | "tests",
114 | ".*",
115 | "component.json",
116 | "Gruntfile.js",
117 | "node_modules",
118 | "package.json"
119 | ]
120 | }
121 | },
122 | {
123 | "name": "bower-asset/yii2-pjax",
124 | "version": "v2.0.6",
125 | "source": {
126 | "type": "git",
127 | "url": "https://github.com/yiisoft/jquery-pjax.git",
128 | "reference": "60728da6ade5879e807a49ce59ef9a72039b8978"
129 | },
130 | "dist": {
131 | "type": "zip",
132 | "url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/60728da6ade5879e807a49ce59ef9a72039b8978",
133 | "reference": "60728da6ade5879e807a49ce59ef9a72039b8978",
134 | "shasum": ""
135 | },
136 | "require": {
137 | "bower-asset/jquery": ">=1.8"
138 | },
139 | "type": "bower-asset-library",
140 | "extra": {
141 | "bower-asset-main": "./jquery.pjax.js",
142 | "bower-asset-ignore": [
143 | ".travis.yml",
144 | "Gemfile",
145 | "Gemfile.lock",
146 | "CONTRIBUTING.md",
147 | "vendor/",
148 | "script/",
149 | "test/"
150 | ]
151 | },
152 | "license": [
153 | "MIT"
154 | ]
155 | },
156 | {
157 | "name": "cebe/markdown",
158 | "version": "1.1.1",
159 | "source": {
160 | "type": "git",
161 | "url": "https://github.com/cebe/markdown.git",
162 | "reference": "c30eb5e01fe021cc5bba2f9ee0eeef96d4931166"
163 | },
164 | "dist": {
165 | "type": "zip",
166 | "url": "https://api.github.com/repos/cebe/markdown/zipball/c30eb5e01fe021cc5bba2f9ee0eeef96d4931166",
167 | "reference": "c30eb5e01fe021cc5bba2f9ee0eeef96d4931166",
168 | "shasum": ""
169 | },
170 | "require": {
171 | "lib-pcre": "*",
172 | "php": ">=5.4.0"
173 | },
174 | "require-dev": {
175 | "cebe/indent": "*",
176 | "facebook/xhprof": "*@dev",
177 | "phpunit/phpunit": "4.1.*"
178 | },
179 | "bin": [
180 | "bin/markdown"
181 | ],
182 | "type": "library",
183 | "extra": {
184 | "branch-alias": {
185 | "dev-master": "1.1.x-dev"
186 | }
187 | },
188 | "autoload": {
189 | "psr-4": {
190 | "cebe\\markdown\\": ""
191 | }
192 | },
193 | "notification-url": "https://packagist.org/downloads/",
194 | "license": [
195 | "MIT"
196 | ],
197 | "authors": [
198 | {
199 | "name": "Carsten Brandt",
200 | "email": "mail@cebe.cc",
201 | "homepage": "http://cebe.cc/",
202 | "role": "Creator"
203 | }
204 | ],
205 | "description": "A super fast, highly extensible markdown parser for PHP",
206 | "homepage": "https://github.com/cebe/markdown#readme",
207 | "keywords": [
208 | "extensible",
209 | "fast",
210 | "gfm",
211 | "markdown",
212 | "markdown-extra"
213 | ],
214 | "time": "2016-09-14 20:40:20"
215 | },
216 | {
217 | "name": "ezyang/htmlpurifier",
218 | "version": "v4.8.0",
219 | "source": {
220 | "type": "git",
221 | "url": "https://github.com/ezyang/htmlpurifier.git",
222 | "reference": "d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2"
223 | },
224 | "dist": {
225 | "type": "zip",
226 | "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2",
227 | "reference": "d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2",
228 | "shasum": ""
229 | },
230 | "require": {
231 | "php": ">=5.2"
232 | },
233 | "type": "library",
234 | "autoload": {
235 | "psr-0": {
236 | "HTMLPurifier": "library/"
237 | },
238 | "files": [
239 | "library/HTMLPurifier.composer.php"
240 | ]
241 | },
242 | "notification-url": "https://packagist.org/downloads/",
243 | "license": [
244 | "LGPL"
245 | ],
246 | "authors": [
247 | {
248 | "name": "Edward Z. Yang",
249 | "email": "admin@htmlpurifier.org",
250 | "homepage": "http://ezyang.com"
251 | }
252 | ],
253 | "description": "Standards compliant HTML filter written in PHP",
254 | "homepage": "http://htmlpurifier.org/",
255 | "keywords": [
256 | "html"
257 | ],
258 | "time": "2016-07-16 12:58:58"
259 | },
260 | {
261 | "name": "yiisoft/yii2",
262 | "version": "2.0.11.2",
263 | "source": {
264 | "type": "git",
265 | "url": "https://github.com/yiisoft/yii2-framework.git",
266 | "reference": "ee996adec1dfd7babb67bd0c604f5bd6425fe5ab"
267 | },
268 | "dist": {
269 | "type": "zip",
270 | "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/ee996adec1dfd7babb67bd0c604f5bd6425fe5ab",
271 | "reference": "ee996adec1dfd7babb67bd0c604f5bd6425fe5ab",
272 | "shasum": ""
273 | },
274 | "require": {
275 | "bower-asset/jquery": "2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable",
276 | "bower-asset/jquery.inputmask": "~3.2.2 | ~3.3.3",
277 | "bower-asset/punycode": "1.3.*",
278 | "bower-asset/yii2-pjax": "~2.0.1",
279 | "cebe/markdown": "~1.0.0 | ~1.1.0",
280 | "ext-ctype": "*",
281 | "ext-mbstring": "*",
282 | "ezyang/htmlpurifier": "~4.6",
283 | "lib-pcre": "*",
284 | "php": ">=5.4.0",
285 | "yiisoft/yii2-composer": "~2.0.4"
286 | },
287 | "bin": [
288 | "yii"
289 | ],
290 | "type": "library",
291 | "extra": {
292 | "branch-alias": {
293 | "dev-master": "2.0.x-dev"
294 | }
295 | },
296 | "autoload": {
297 | "psr-4": {
298 | "yii\\": ""
299 | }
300 | },
301 | "notification-url": "https://packagist.org/downloads/",
302 | "license": [
303 | "BSD-3-Clause"
304 | ],
305 | "authors": [
306 | {
307 | "name": "Qiang Xue",
308 | "email": "qiang.xue@gmail.com",
309 | "homepage": "http://www.yiiframework.com/",
310 | "role": "Founder and project lead"
311 | },
312 | {
313 | "name": "Alexander Makarov",
314 | "email": "sam@rmcreative.ru",
315 | "homepage": "http://rmcreative.ru/",
316 | "role": "Core framework development"
317 | },
318 | {
319 | "name": "Maurizio Domba",
320 | "homepage": "http://mdomba.info/",
321 | "role": "Core framework development"
322 | },
323 | {
324 | "name": "Carsten Brandt",
325 | "email": "mail@cebe.cc",
326 | "homepage": "http://cebe.cc/",
327 | "role": "Core framework development"
328 | },
329 | {
330 | "name": "Timur Ruziev",
331 | "email": "resurtm@gmail.com",
332 | "homepage": "http://resurtm.com/",
333 | "role": "Core framework development"
334 | },
335 | {
336 | "name": "Paul Klimov",
337 | "email": "klimov.paul@gmail.com",
338 | "role": "Core framework development"
339 | },
340 | {
341 | "name": "Dmitry Naumenko",
342 | "email": "d.naumenko.a@gmail.com",
343 | "role": "Core framework development"
344 | },
345 | {
346 | "name": "Boudewijn Vahrmeijer",
347 | "email": "info@dynasource.eu",
348 | "homepage": "http://dynasource.eu",
349 | "role": "Core framework development"
350 | }
351 | ],
352 | "description": "Yii PHP Framework Version 2",
353 | "homepage": "http://www.yiiframework.com/",
354 | "keywords": [
355 | "framework",
356 | "yii2"
357 | ],
358 | "time": "2017-02-08 09:04:32"
359 | },
360 | {
361 | "name": "yiisoft/yii2-composer",
362 | "version": "2.0.5",
363 | "source": {
364 | "type": "git",
365 | "url": "https://github.com/yiisoft/yii2-composer.git",
366 | "reference": "3f4923c2bde6caf3f5b88cc22fdd5770f52f8df2"
367 | },
368 | "dist": {
369 | "type": "zip",
370 | "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/3f4923c2bde6caf3f5b88cc22fdd5770f52f8df2",
371 | "reference": "3f4923c2bde6caf3f5b88cc22fdd5770f52f8df2",
372 | "shasum": ""
373 | },
374 | "require": {
375 | "composer-plugin-api": "^1.0"
376 | },
377 | "require-dev": {
378 | "composer/composer": "^1.0"
379 | },
380 | "type": "composer-plugin",
381 | "extra": {
382 | "class": "yii\\composer\\Plugin",
383 | "branch-alias": {
384 | "dev-master": "2.0.x-dev"
385 | }
386 | },
387 | "autoload": {
388 | "psr-4": {
389 | "yii\\composer\\": ""
390 | }
391 | },
392 | "notification-url": "https://packagist.org/downloads/",
393 | "license": [
394 | "BSD-3-Clause"
395 | ],
396 | "authors": [
397 | {
398 | "name": "Qiang Xue",
399 | "email": "qiang.xue@gmail.com"
400 | }
401 | ],
402 | "description": "The composer plugin for Yii extension installer",
403 | "keywords": [
404 | "composer",
405 | "extension installer",
406 | "yii2"
407 | ],
408 | "time": "2016-12-20 13:26:02"
409 | }
410 | ],
411 | "packages-dev": [
412 | {
413 | "name": "doctrine/instantiator",
414 | "version": "1.0.5",
415 | "source": {
416 | "type": "git",
417 | "url": "https://github.com/doctrine/instantiator.git",
418 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
419 | },
420 | "dist": {
421 | "type": "zip",
422 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
423 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
424 | "shasum": ""
425 | },
426 | "require": {
427 | "php": ">=5.3,<8.0-DEV"
428 | },
429 | "require-dev": {
430 | "athletic/athletic": "~0.1.8",
431 | "ext-pdo": "*",
432 | "ext-phar": "*",
433 | "phpunit/phpunit": "~4.0",
434 | "squizlabs/php_codesniffer": "~2.0"
435 | },
436 | "type": "library",
437 | "extra": {
438 | "branch-alias": {
439 | "dev-master": "1.0.x-dev"
440 | }
441 | },
442 | "autoload": {
443 | "psr-4": {
444 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
445 | }
446 | },
447 | "notification-url": "https://packagist.org/downloads/",
448 | "license": [
449 | "MIT"
450 | ],
451 | "authors": [
452 | {
453 | "name": "Marco Pivetta",
454 | "email": "ocramius@gmail.com",
455 | "homepage": "http://ocramius.github.com/"
456 | }
457 | ],
458 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
459 | "homepage": "https://github.com/doctrine/instantiator",
460 | "keywords": [
461 | "constructor",
462 | "instantiate"
463 | ],
464 | "time": "2015-06-14 21:17:01"
465 | },
466 | {
467 | "name": "myclabs/deep-copy",
468 | "version": "1.6.0",
469 | "source": {
470 | "type": "git",
471 | "url": "https://github.com/myclabs/DeepCopy.git",
472 | "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe"
473 | },
474 | "dist": {
475 | "type": "zip",
476 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5a5a9fc8025a08d8919be87d6884d5a92520cefe",
477 | "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe",
478 | "shasum": ""
479 | },
480 | "require": {
481 | "php": ">=5.4.0"
482 | },
483 | "require-dev": {
484 | "doctrine/collections": "1.*",
485 | "phpunit/phpunit": "~4.1"
486 | },
487 | "type": "library",
488 | "autoload": {
489 | "psr-4": {
490 | "DeepCopy\\": "src/DeepCopy/"
491 | }
492 | },
493 | "notification-url": "https://packagist.org/downloads/",
494 | "license": [
495 | "MIT"
496 | ],
497 | "description": "Create deep copies (clones) of your objects",
498 | "homepage": "https://github.com/myclabs/DeepCopy",
499 | "keywords": [
500 | "clone",
501 | "copy",
502 | "duplicate",
503 | "object",
504 | "object graph"
505 | ],
506 | "time": "2017-01-26 22:05:40"
507 | },
508 | {
509 | "name": "phpdocumentor/reflection-common",
510 | "version": "1.0",
511 | "source": {
512 | "type": "git",
513 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
514 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
515 | },
516 | "dist": {
517 | "type": "zip",
518 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
519 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
520 | "shasum": ""
521 | },
522 | "require": {
523 | "php": ">=5.5"
524 | },
525 | "require-dev": {
526 | "phpunit/phpunit": "^4.6"
527 | },
528 | "type": "library",
529 | "extra": {
530 | "branch-alias": {
531 | "dev-master": "1.0.x-dev"
532 | }
533 | },
534 | "autoload": {
535 | "psr-4": {
536 | "phpDocumentor\\Reflection\\": [
537 | "src"
538 | ]
539 | }
540 | },
541 | "notification-url": "https://packagist.org/downloads/",
542 | "license": [
543 | "MIT"
544 | ],
545 | "authors": [
546 | {
547 | "name": "Jaap van Otterdijk",
548 | "email": "opensource@ijaap.nl"
549 | }
550 | ],
551 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
552 | "homepage": "http://www.phpdoc.org",
553 | "keywords": [
554 | "FQSEN",
555 | "phpDocumentor",
556 | "phpdoc",
557 | "reflection",
558 | "static analysis"
559 | ],
560 | "time": "2015-12-27 11:43:31"
561 | },
562 | {
563 | "name": "phpdocumentor/reflection-docblock",
564 | "version": "3.1.1",
565 | "source": {
566 | "type": "git",
567 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
568 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
569 | },
570 | "dist": {
571 | "type": "zip",
572 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
573 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
574 | "shasum": ""
575 | },
576 | "require": {
577 | "php": ">=5.5",
578 | "phpdocumentor/reflection-common": "^1.0@dev",
579 | "phpdocumentor/type-resolver": "^0.2.0",
580 | "webmozart/assert": "^1.0"
581 | },
582 | "require-dev": {
583 | "mockery/mockery": "^0.9.4",
584 | "phpunit/phpunit": "^4.4"
585 | },
586 | "type": "library",
587 | "autoload": {
588 | "psr-4": {
589 | "phpDocumentor\\Reflection\\": [
590 | "src/"
591 | ]
592 | }
593 | },
594 | "notification-url": "https://packagist.org/downloads/",
595 | "license": [
596 | "MIT"
597 | ],
598 | "authors": [
599 | {
600 | "name": "Mike van Riel",
601 | "email": "me@mikevanriel.com"
602 | }
603 | ],
604 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
605 | "time": "2016-09-30 07:12:33"
606 | },
607 | {
608 | "name": "phpdocumentor/type-resolver",
609 | "version": "0.2.1",
610 | "source": {
611 | "type": "git",
612 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
613 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
614 | },
615 | "dist": {
616 | "type": "zip",
617 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
618 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
619 | "shasum": ""
620 | },
621 | "require": {
622 | "php": ">=5.5",
623 | "phpdocumentor/reflection-common": "^1.0"
624 | },
625 | "require-dev": {
626 | "mockery/mockery": "^0.9.4",
627 | "phpunit/phpunit": "^5.2||^4.8.24"
628 | },
629 | "type": "library",
630 | "extra": {
631 | "branch-alias": {
632 | "dev-master": "1.0.x-dev"
633 | }
634 | },
635 | "autoload": {
636 | "psr-4": {
637 | "phpDocumentor\\Reflection\\": [
638 | "src/"
639 | ]
640 | }
641 | },
642 | "notification-url": "https://packagist.org/downloads/",
643 | "license": [
644 | "MIT"
645 | ],
646 | "authors": [
647 | {
648 | "name": "Mike van Riel",
649 | "email": "me@mikevanriel.com"
650 | }
651 | ],
652 | "time": "2016-11-25 06:54:22"
653 | },
654 | {
655 | "name": "phpspec/prophecy",
656 | "version": "v1.7.0",
657 | "source": {
658 | "type": "git",
659 | "url": "https://github.com/phpspec/prophecy.git",
660 | "reference": "93d39f1f7f9326d746203c7c056f300f7f126073"
661 | },
662 | "dist": {
663 | "type": "zip",
664 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073",
665 | "reference": "93d39f1f7f9326d746203c7c056f300f7f126073",
666 | "shasum": ""
667 | },
668 | "require": {
669 | "doctrine/instantiator": "^1.0.2",
670 | "php": "^5.3|^7.0",
671 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
672 | "sebastian/comparator": "^1.1|^2.0",
673 | "sebastian/recursion-context": "^1.0|^2.0|^3.0"
674 | },
675 | "require-dev": {
676 | "phpspec/phpspec": "^2.5|^3.2",
677 | "phpunit/phpunit": "^4.8 || ^5.6.5"
678 | },
679 | "type": "library",
680 | "extra": {
681 | "branch-alias": {
682 | "dev-master": "1.6.x-dev"
683 | }
684 | },
685 | "autoload": {
686 | "psr-0": {
687 | "Prophecy\\": "src/"
688 | }
689 | },
690 | "notification-url": "https://packagist.org/downloads/",
691 | "license": [
692 | "MIT"
693 | ],
694 | "authors": [
695 | {
696 | "name": "Konstantin Kudryashov",
697 | "email": "ever.zet@gmail.com",
698 | "homepage": "http://everzet.com"
699 | },
700 | {
701 | "name": "Marcello Duarte",
702 | "email": "marcello.duarte@gmail.com"
703 | }
704 | ],
705 | "description": "Highly opinionated mocking framework for PHP 5.3+",
706 | "homepage": "https://github.com/phpspec/prophecy",
707 | "keywords": [
708 | "Double",
709 | "Dummy",
710 | "fake",
711 | "mock",
712 | "spy",
713 | "stub"
714 | ],
715 | "time": "2017-03-02 20:05:34"
716 | },
717 | {
718 | "name": "phpunit/php-code-coverage",
719 | "version": "4.0.7",
720 | "source": {
721 | "type": "git",
722 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
723 | "reference": "09e2277d14ea467e5a984010f501343ef29ffc69"
724 | },
725 | "dist": {
726 | "type": "zip",
727 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/09e2277d14ea467e5a984010f501343ef29ffc69",
728 | "reference": "09e2277d14ea467e5a984010f501343ef29ffc69",
729 | "shasum": ""
730 | },
731 | "require": {
732 | "ext-dom": "*",
733 | "ext-xmlwriter": "*",
734 | "php": "^5.6 || ^7.0",
735 | "phpunit/php-file-iterator": "^1.3",
736 | "phpunit/php-text-template": "^1.2",
737 | "phpunit/php-token-stream": "^1.4.2 || ^2.0",
738 | "sebastian/code-unit-reverse-lookup": "^1.0",
739 | "sebastian/environment": "^1.3.2 || ^2.0",
740 | "sebastian/version": "^1.0 || ^2.0"
741 | },
742 | "require-dev": {
743 | "ext-xdebug": "^2.1.4",
744 | "phpunit/phpunit": "^5.7"
745 | },
746 | "suggest": {
747 | "ext-xdebug": "^2.5.1"
748 | },
749 | "type": "library",
750 | "extra": {
751 | "branch-alias": {
752 | "dev-master": "4.0.x-dev"
753 | }
754 | },
755 | "autoload": {
756 | "classmap": [
757 | "src/"
758 | ]
759 | },
760 | "notification-url": "https://packagist.org/downloads/",
761 | "license": [
762 | "BSD-3-Clause"
763 | ],
764 | "authors": [
765 | {
766 | "name": "Sebastian Bergmann",
767 | "email": "sb@sebastian-bergmann.de",
768 | "role": "lead"
769 | }
770 | ],
771 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
772 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
773 | "keywords": [
774 | "coverage",
775 | "testing",
776 | "xunit"
777 | ],
778 | "time": "2017-03-01 09:12:17"
779 | },
780 | {
781 | "name": "phpunit/php-file-iterator",
782 | "version": "1.4.2",
783 | "source": {
784 | "type": "git",
785 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
786 | "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
787 | },
788 | "dist": {
789 | "type": "zip",
790 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
791 | "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
792 | "shasum": ""
793 | },
794 | "require": {
795 | "php": ">=5.3.3"
796 | },
797 | "type": "library",
798 | "extra": {
799 | "branch-alias": {
800 | "dev-master": "1.4.x-dev"
801 | }
802 | },
803 | "autoload": {
804 | "classmap": [
805 | "src/"
806 | ]
807 | },
808 | "notification-url": "https://packagist.org/downloads/",
809 | "license": [
810 | "BSD-3-Clause"
811 | ],
812 | "authors": [
813 | {
814 | "name": "Sebastian Bergmann",
815 | "email": "sb@sebastian-bergmann.de",
816 | "role": "lead"
817 | }
818 | ],
819 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
820 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
821 | "keywords": [
822 | "filesystem",
823 | "iterator"
824 | ],
825 | "time": "2016-10-03 07:40:28"
826 | },
827 | {
828 | "name": "phpunit/php-text-template",
829 | "version": "1.2.1",
830 | "source": {
831 | "type": "git",
832 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
833 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
834 | },
835 | "dist": {
836 | "type": "zip",
837 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
838 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
839 | "shasum": ""
840 | },
841 | "require": {
842 | "php": ">=5.3.3"
843 | },
844 | "type": "library",
845 | "autoload": {
846 | "classmap": [
847 | "src/"
848 | ]
849 | },
850 | "notification-url": "https://packagist.org/downloads/",
851 | "license": [
852 | "BSD-3-Clause"
853 | ],
854 | "authors": [
855 | {
856 | "name": "Sebastian Bergmann",
857 | "email": "sebastian@phpunit.de",
858 | "role": "lead"
859 | }
860 | ],
861 | "description": "Simple template engine.",
862 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
863 | "keywords": [
864 | "template"
865 | ],
866 | "time": "2015-06-21 13:50:34"
867 | },
868 | {
869 | "name": "phpunit/php-timer",
870 | "version": "1.0.9",
871 | "source": {
872 | "type": "git",
873 | "url": "https://github.com/sebastianbergmann/php-timer.git",
874 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
875 | },
876 | "dist": {
877 | "type": "zip",
878 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
879 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
880 | "shasum": ""
881 | },
882 | "require": {
883 | "php": "^5.3.3 || ^7.0"
884 | },
885 | "require-dev": {
886 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
887 | },
888 | "type": "library",
889 | "extra": {
890 | "branch-alias": {
891 | "dev-master": "1.0-dev"
892 | }
893 | },
894 | "autoload": {
895 | "classmap": [
896 | "src/"
897 | ]
898 | },
899 | "notification-url": "https://packagist.org/downloads/",
900 | "license": [
901 | "BSD-3-Clause"
902 | ],
903 | "authors": [
904 | {
905 | "name": "Sebastian Bergmann",
906 | "email": "sb@sebastian-bergmann.de",
907 | "role": "lead"
908 | }
909 | ],
910 | "description": "Utility class for timing",
911 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
912 | "keywords": [
913 | "timer"
914 | ],
915 | "time": "2017-02-26 11:10:40"
916 | },
917 | {
918 | "name": "phpunit/php-token-stream",
919 | "version": "1.4.11",
920 | "source": {
921 | "type": "git",
922 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
923 | "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7"
924 | },
925 | "dist": {
926 | "type": "zip",
927 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7",
928 | "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7",
929 | "shasum": ""
930 | },
931 | "require": {
932 | "ext-tokenizer": "*",
933 | "php": ">=5.3.3"
934 | },
935 | "require-dev": {
936 | "phpunit/phpunit": "~4.2"
937 | },
938 | "type": "library",
939 | "extra": {
940 | "branch-alias": {
941 | "dev-master": "1.4-dev"
942 | }
943 | },
944 | "autoload": {
945 | "classmap": [
946 | "src/"
947 | ]
948 | },
949 | "notification-url": "https://packagist.org/downloads/",
950 | "license": [
951 | "BSD-3-Clause"
952 | ],
953 | "authors": [
954 | {
955 | "name": "Sebastian Bergmann",
956 | "email": "sebastian@phpunit.de"
957 | }
958 | ],
959 | "description": "Wrapper around PHP's tokenizer extension.",
960 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
961 | "keywords": [
962 | "tokenizer"
963 | ],
964 | "time": "2017-02-27 10:12:30"
965 | },
966 | {
967 | "name": "phpunit/phpunit",
968 | "version": "5.7.15",
969 | "source": {
970 | "type": "git",
971 | "url": "https://github.com/sebastianbergmann/phpunit.git",
972 | "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5"
973 | },
974 | "dist": {
975 | "type": "zip",
976 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b99112aecc01f62acf3d81a3f59646700a1849e5",
977 | "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5",
978 | "shasum": ""
979 | },
980 | "require": {
981 | "ext-dom": "*",
982 | "ext-json": "*",
983 | "ext-libxml": "*",
984 | "ext-mbstring": "*",
985 | "ext-xml": "*",
986 | "myclabs/deep-copy": "~1.3",
987 | "php": "^5.6 || ^7.0",
988 | "phpspec/prophecy": "^1.6.2",
989 | "phpunit/php-code-coverage": "^4.0.4",
990 | "phpunit/php-file-iterator": "~1.4",
991 | "phpunit/php-text-template": "~1.2",
992 | "phpunit/php-timer": "^1.0.6",
993 | "phpunit/phpunit-mock-objects": "^3.2",
994 | "sebastian/comparator": "^1.2.4",
995 | "sebastian/diff": "~1.2",
996 | "sebastian/environment": "^1.3.4 || ^2.0",
997 | "sebastian/exporter": "~2.0",
998 | "sebastian/global-state": "^1.1",
999 | "sebastian/object-enumerator": "~2.0",
1000 | "sebastian/resource-operations": "~1.0",
1001 | "sebastian/version": "~1.0.3|~2.0",
1002 | "symfony/yaml": "~2.1|~3.0"
1003 | },
1004 | "conflict": {
1005 | "phpdocumentor/reflection-docblock": "3.0.2"
1006 | },
1007 | "require-dev": {
1008 | "ext-pdo": "*"
1009 | },
1010 | "suggest": {
1011 | "ext-xdebug": "*",
1012 | "phpunit/php-invoker": "~1.1"
1013 | },
1014 | "bin": [
1015 | "phpunit"
1016 | ],
1017 | "type": "library",
1018 | "extra": {
1019 | "branch-alias": {
1020 | "dev-master": "5.7.x-dev"
1021 | }
1022 | },
1023 | "autoload": {
1024 | "classmap": [
1025 | "src/"
1026 | ]
1027 | },
1028 | "notification-url": "https://packagist.org/downloads/",
1029 | "license": [
1030 | "BSD-3-Clause"
1031 | ],
1032 | "authors": [
1033 | {
1034 | "name": "Sebastian Bergmann",
1035 | "email": "sebastian@phpunit.de",
1036 | "role": "lead"
1037 | }
1038 | ],
1039 | "description": "The PHP Unit Testing framework.",
1040 | "homepage": "https://phpunit.de/",
1041 | "keywords": [
1042 | "phpunit",
1043 | "testing",
1044 | "xunit"
1045 | ],
1046 | "time": "2017-03-02 15:22:43"
1047 | },
1048 | {
1049 | "name": "phpunit/phpunit-mock-objects",
1050 | "version": "3.4.3",
1051 | "source": {
1052 | "type": "git",
1053 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1054 | "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24"
1055 | },
1056 | "dist": {
1057 | "type": "zip",
1058 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24",
1059 | "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24",
1060 | "shasum": ""
1061 | },
1062 | "require": {
1063 | "doctrine/instantiator": "^1.0.2",
1064 | "php": "^5.6 || ^7.0",
1065 | "phpunit/php-text-template": "^1.2",
1066 | "sebastian/exporter": "^1.2 || ^2.0"
1067 | },
1068 | "conflict": {
1069 | "phpunit/phpunit": "<5.4.0"
1070 | },
1071 | "require-dev": {
1072 | "phpunit/phpunit": "^5.4"
1073 | },
1074 | "suggest": {
1075 | "ext-soap": "*"
1076 | },
1077 | "type": "library",
1078 | "extra": {
1079 | "branch-alias": {
1080 | "dev-master": "3.2.x-dev"
1081 | }
1082 | },
1083 | "autoload": {
1084 | "classmap": [
1085 | "src/"
1086 | ]
1087 | },
1088 | "notification-url": "https://packagist.org/downloads/",
1089 | "license": [
1090 | "BSD-3-Clause"
1091 | ],
1092 | "authors": [
1093 | {
1094 | "name": "Sebastian Bergmann",
1095 | "email": "sb@sebastian-bergmann.de",
1096 | "role": "lead"
1097 | }
1098 | ],
1099 | "description": "Mock Object library for PHPUnit",
1100 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1101 | "keywords": [
1102 | "mock",
1103 | "xunit"
1104 | ],
1105 | "time": "2016-12-08 20:27:08"
1106 | },
1107 | {
1108 | "name": "sebastian/code-unit-reverse-lookup",
1109 | "version": "1.0.0",
1110 | "source": {
1111 | "type": "git",
1112 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1113 | "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe"
1114 | },
1115 | "dist": {
1116 | "type": "zip",
1117 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe",
1118 | "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe",
1119 | "shasum": ""
1120 | },
1121 | "require": {
1122 | "php": ">=5.6"
1123 | },
1124 | "require-dev": {
1125 | "phpunit/phpunit": "~5"
1126 | },
1127 | "type": "library",
1128 | "extra": {
1129 | "branch-alias": {
1130 | "dev-master": "1.0.x-dev"
1131 | }
1132 | },
1133 | "autoload": {
1134 | "classmap": [
1135 | "src/"
1136 | ]
1137 | },
1138 | "notification-url": "https://packagist.org/downloads/",
1139 | "license": [
1140 | "BSD-3-Clause"
1141 | ],
1142 | "authors": [
1143 | {
1144 | "name": "Sebastian Bergmann",
1145 | "email": "sebastian@phpunit.de"
1146 | }
1147 | ],
1148 | "description": "Looks up which function or method a line of code belongs to",
1149 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1150 | "time": "2016-02-13 06:45:14"
1151 | },
1152 | {
1153 | "name": "sebastian/comparator",
1154 | "version": "1.2.4",
1155 | "source": {
1156 | "type": "git",
1157 | "url": "https://github.com/sebastianbergmann/comparator.git",
1158 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
1159 | },
1160 | "dist": {
1161 | "type": "zip",
1162 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
1163 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
1164 | "shasum": ""
1165 | },
1166 | "require": {
1167 | "php": ">=5.3.3",
1168 | "sebastian/diff": "~1.2",
1169 | "sebastian/exporter": "~1.2 || ~2.0"
1170 | },
1171 | "require-dev": {
1172 | "phpunit/phpunit": "~4.4"
1173 | },
1174 | "type": "library",
1175 | "extra": {
1176 | "branch-alias": {
1177 | "dev-master": "1.2.x-dev"
1178 | }
1179 | },
1180 | "autoload": {
1181 | "classmap": [
1182 | "src/"
1183 | ]
1184 | },
1185 | "notification-url": "https://packagist.org/downloads/",
1186 | "license": [
1187 | "BSD-3-Clause"
1188 | ],
1189 | "authors": [
1190 | {
1191 | "name": "Jeff Welch",
1192 | "email": "whatthejeff@gmail.com"
1193 | },
1194 | {
1195 | "name": "Volker Dusch",
1196 | "email": "github@wallbash.com"
1197 | },
1198 | {
1199 | "name": "Bernhard Schussek",
1200 | "email": "bschussek@2bepublished.at"
1201 | },
1202 | {
1203 | "name": "Sebastian Bergmann",
1204 | "email": "sebastian@phpunit.de"
1205 | }
1206 | ],
1207 | "description": "Provides the functionality to compare PHP values for equality",
1208 | "homepage": "http://www.github.com/sebastianbergmann/comparator",
1209 | "keywords": [
1210 | "comparator",
1211 | "compare",
1212 | "equality"
1213 | ],
1214 | "time": "2017-01-29 09:50:25"
1215 | },
1216 | {
1217 | "name": "sebastian/diff",
1218 | "version": "1.4.1",
1219 | "source": {
1220 | "type": "git",
1221 | "url": "https://github.com/sebastianbergmann/diff.git",
1222 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
1223 | },
1224 | "dist": {
1225 | "type": "zip",
1226 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
1227 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
1228 | "shasum": ""
1229 | },
1230 | "require": {
1231 | "php": ">=5.3.3"
1232 | },
1233 | "require-dev": {
1234 | "phpunit/phpunit": "~4.8"
1235 | },
1236 | "type": "library",
1237 | "extra": {
1238 | "branch-alias": {
1239 | "dev-master": "1.4-dev"
1240 | }
1241 | },
1242 | "autoload": {
1243 | "classmap": [
1244 | "src/"
1245 | ]
1246 | },
1247 | "notification-url": "https://packagist.org/downloads/",
1248 | "license": [
1249 | "BSD-3-Clause"
1250 | ],
1251 | "authors": [
1252 | {
1253 | "name": "Kore Nordmann",
1254 | "email": "mail@kore-nordmann.de"
1255 | },
1256 | {
1257 | "name": "Sebastian Bergmann",
1258 | "email": "sebastian@phpunit.de"
1259 | }
1260 | ],
1261 | "description": "Diff implementation",
1262 | "homepage": "https://github.com/sebastianbergmann/diff",
1263 | "keywords": [
1264 | "diff"
1265 | ],
1266 | "time": "2015-12-08 07:14:41"
1267 | },
1268 | {
1269 | "name": "sebastian/environment",
1270 | "version": "2.0.0",
1271 | "source": {
1272 | "type": "git",
1273 | "url": "https://github.com/sebastianbergmann/environment.git",
1274 | "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
1275 | },
1276 | "dist": {
1277 | "type": "zip",
1278 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1279 | "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1280 | "shasum": ""
1281 | },
1282 | "require": {
1283 | "php": "^5.6 || ^7.0"
1284 | },
1285 | "require-dev": {
1286 | "phpunit/phpunit": "^5.0"
1287 | },
1288 | "type": "library",
1289 | "extra": {
1290 | "branch-alias": {
1291 | "dev-master": "2.0.x-dev"
1292 | }
1293 | },
1294 | "autoload": {
1295 | "classmap": [
1296 | "src/"
1297 | ]
1298 | },
1299 | "notification-url": "https://packagist.org/downloads/",
1300 | "license": [
1301 | "BSD-3-Clause"
1302 | ],
1303 | "authors": [
1304 | {
1305 | "name": "Sebastian Bergmann",
1306 | "email": "sebastian@phpunit.de"
1307 | }
1308 | ],
1309 | "description": "Provides functionality to handle HHVM/PHP environments",
1310 | "homepage": "http://www.github.com/sebastianbergmann/environment",
1311 | "keywords": [
1312 | "Xdebug",
1313 | "environment",
1314 | "hhvm"
1315 | ],
1316 | "time": "2016-11-26 07:53:53"
1317 | },
1318 | {
1319 | "name": "sebastian/exporter",
1320 | "version": "2.0.0",
1321 | "source": {
1322 | "type": "git",
1323 | "url": "https://github.com/sebastianbergmann/exporter.git",
1324 | "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
1325 | },
1326 | "dist": {
1327 | "type": "zip",
1328 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1329 | "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1330 | "shasum": ""
1331 | },
1332 | "require": {
1333 | "php": ">=5.3.3",
1334 | "sebastian/recursion-context": "~2.0"
1335 | },
1336 | "require-dev": {
1337 | "ext-mbstring": "*",
1338 | "phpunit/phpunit": "~4.4"
1339 | },
1340 | "type": "library",
1341 | "extra": {
1342 | "branch-alias": {
1343 | "dev-master": "2.0.x-dev"
1344 | }
1345 | },
1346 | "autoload": {
1347 | "classmap": [
1348 | "src/"
1349 | ]
1350 | },
1351 | "notification-url": "https://packagist.org/downloads/",
1352 | "license": [
1353 | "BSD-3-Clause"
1354 | ],
1355 | "authors": [
1356 | {
1357 | "name": "Jeff Welch",
1358 | "email": "whatthejeff@gmail.com"
1359 | },
1360 | {
1361 | "name": "Volker Dusch",
1362 | "email": "github@wallbash.com"
1363 | },
1364 | {
1365 | "name": "Bernhard Schussek",
1366 | "email": "bschussek@2bepublished.at"
1367 | },
1368 | {
1369 | "name": "Sebastian Bergmann",
1370 | "email": "sebastian@phpunit.de"
1371 | },
1372 | {
1373 | "name": "Adam Harvey",
1374 | "email": "aharvey@php.net"
1375 | }
1376 | ],
1377 | "description": "Provides the functionality to export PHP variables for visualization",
1378 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
1379 | "keywords": [
1380 | "export",
1381 | "exporter"
1382 | ],
1383 | "time": "2016-11-19 08:54:04"
1384 | },
1385 | {
1386 | "name": "sebastian/global-state",
1387 | "version": "1.1.1",
1388 | "source": {
1389 | "type": "git",
1390 | "url": "https://github.com/sebastianbergmann/global-state.git",
1391 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
1392 | },
1393 | "dist": {
1394 | "type": "zip",
1395 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
1396 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
1397 | "shasum": ""
1398 | },
1399 | "require": {
1400 | "php": ">=5.3.3"
1401 | },
1402 | "require-dev": {
1403 | "phpunit/phpunit": "~4.2"
1404 | },
1405 | "suggest": {
1406 | "ext-uopz": "*"
1407 | },
1408 | "type": "library",
1409 | "extra": {
1410 | "branch-alias": {
1411 | "dev-master": "1.0-dev"
1412 | }
1413 | },
1414 | "autoload": {
1415 | "classmap": [
1416 | "src/"
1417 | ]
1418 | },
1419 | "notification-url": "https://packagist.org/downloads/",
1420 | "license": [
1421 | "BSD-3-Clause"
1422 | ],
1423 | "authors": [
1424 | {
1425 | "name": "Sebastian Bergmann",
1426 | "email": "sebastian@phpunit.de"
1427 | }
1428 | ],
1429 | "description": "Snapshotting of global state",
1430 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
1431 | "keywords": [
1432 | "global state"
1433 | ],
1434 | "time": "2015-10-12 03:26:01"
1435 | },
1436 | {
1437 | "name": "sebastian/object-enumerator",
1438 | "version": "2.0.1",
1439 | "source": {
1440 | "type": "git",
1441 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1442 | "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
1443 | },
1444 | "dist": {
1445 | "type": "zip",
1446 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
1447 | "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
1448 | "shasum": ""
1449 | },
1450 | "require": {
1451 | "php": ">=5.6",
1452 | "sebastian/recursion-context": "~2.0"
1453 | },
1454 | "require-dev": {
1455 | "phpunit/phpunit": "~5"
1456 | },
1457 | "type": "library",
1458 | "extra": {
1459 | "branch-alias": {
1460 | "dev-master": "2.0.x-dev"
1461 | }
1462 | },
1463 | "autoload": {
1464 | "classmap": [
1465 | "src/"
1466 | ]
1467 | },
1468 | "notification-url": "https://packagist.org/downloads/",
1469 | "license": [
1470 | "BSD-3-Clause"
1471 | ],
1472 | "authors": [
1473 | {
1474 | "name": "Sebastian Bergmann",
1475 | "email": "sebastian@phpunit.de"
1476 | }
1477 | ],
1478 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1479 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1480 | "time": "2017-02-18 15:18:39"
1481 | },
1482 | {
1483 | "name": "sebastian/recursion-context",
1484 | "version": "2.0.0",
1485 | "source": {
1486 | "type": "git",
1487 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
1488 | "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
1489 | },
1490 | "dist": {
1491 | "type": "zip",
1492 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1493 | "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1494 | "shasum": ""
1495 | },
1496 | "require": {
1497 | "php": ">=5.3.3"
1498 | },
1499 | "require-dev": {
1500 | "phpunit/phpunit": "~4.4"
1501 | },
1502 | "type": "library",
1503 | "extra": {
1504 | "branch-alias": {
1505 | "dev-master": "2.0.x-dev"
1506 | }
1507 | },
1508 | "autoload": {
1509 | "classmap": [
1510 | "src/"
1511 | ]
1512 | },
1513 | "notification-url": "https://packagist.org/downloads/",
1514 | "license": [
1515 | "BSD-3-Clause"
1516 | ],
1517 | "authors": [
1518 | {
1519 | "name": "Jeff Welch",
1520 | "email": "whatthejeff@gmail.com"
1521 | },
1522 | {
1523 | "name": "Sebastian Bergmann",
1524 | "email": "sebastian@phpunit.de"
1525 | },
1526 | {
1527 | "name": "Adam Harvey",
1528 | "email": "aharvey@php.net"
1529 | }
1530 | ],
1531 | "description": "Provides functionality to recursively process PHP variables",
1532 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1533 | "time": "2016-11-19 07:33:16"
1534 | },
1535 | {
1536 | "name": "sebastian/resource-operations",
1537 | "version": "1.0.0",
1538 | "source": {
1539 | "type": "git",
1540 | "url": "https://github.com/sebastianbergmann/resource-operations.git",
1541 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
1542 | },
1543 | "dist": {
1544 | "type": "zip",
1545 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1546 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1547 | "shasum": ""
1548 | },
1549 | "require": {
1550 | "php": ">=5.6.0"
1551 | },
1552 | "type": "library",
1553 | "extra": {
1554 | "branch-alias": {
1555 | "dev-master": "1.0.x-dev"
1556 | }
1557 | },
1558 | "autoload": {
1559 | "classmap": [
1560 | "src/"
1561 | ]
1562 | },
1563 | "notification-url": "https://packagist.org/downloads/",
1564 | "license": [
1565 | "BSD-3-Clause"
1566 | ],
1567 | "authors": [
1568 | {
1569 | "name": "Sebastian Bergmann",
1570 | "email": "sebastian@phpunit.de"
1571 | }
1572 | ],
1573 | "description": "Provides a list of PHP built-in functions that operate on resources",
1574 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1575 | "time": "2015-07-28 20:34:47"
1576 | },
1577 | {
1578 | "name": "sebastian/version",
1579 | "version": "2.0.1",
1580 | "source": {
1581 | "type": "git",
1582 | "url": "https://github.com/sebastianbergmann/version.git",
1583 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1584 | },
1585 | "dist": {
1586 | "type": "zip",
1587 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1588 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1589 | "shasum": ""
1590 | },
1591 | "require": {
1592 | "php": ">=5.6"
1593 | },
1594 | "type": "library",
1595 | "extra": {
1596 | "branch-alias": {
1597 | "dev-master": "2.0.x-dev"
1598 | }
1599 | },
1600 | "autoload": {
1601 | "classmap": [
1602 | "src/"
1603 | ]
1604 | },
1605 | "notification-url": "https://packagist.org/downloads/",
1606 | "license": [
1607 | "BSD-3-Clause"
1608 | ],
1609 | "authors": [
1610 | {
1611 | "name": "Sebastian Bergmann",
1612 | "email": "sebastian@phpunit.de",
1613 | "role": "lead"
1614 | }
1615 | ],
1616 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1617 | "homepage": "https://github.com/sebastianbergmann/version",
1618 | "time": "2016-10-03 07:35:21"
1619 | },
1620 | {
1621 | "name": "symfony/yaml",
1622 | "version": "v3.2.4",
1623 | "source": {
1624 | "type": "git",
1625 | "url": "https://github.com/symfony/yaml.git",
1626 | "reference": "9724c684646fcb5387d579b4bfaa63ee0b0c64c8"
1627 | },
1628 | "dist": {
1629 | "type": "zip",
1630 | "url": "https://api.github.com/repos/symfony/yaml/zipball/9724c684646fcb5387d579b4bfaa63ee0b0c64c8",
1631 | "reference": "9724c684646fcb5387d579b4bfaa63ee0b0c64c8",
1632 | "shasum": ""
1633 | },
1634 | "require": {
1635 | "php": ">=5.5.9"
1636 | },
1637 | "require-dev": {
1638 | "symfony/console": "~2.8|~3.0"
1639 | },
1640 | "suggest": {
1641 | "symfony/console": "For validating YAML files using the lint command"
1642 | },
1643 | "type": "library",
1644 | "extra": {
1645 | "branch-alias": {
1646 | "dev-master": "3.2-dev"
1647 | }
1648 | },
1649 | "autoload": {
1650 | "psr-4": {
1651 | "Symfony\\Component\\Yaml\\": ""
1652 | },
1653 | "exclude-from-classmap": [
1654 | "/Tests/"
1655 | ]
1656 | },
1657 | "notification-url": "https://packagist.org/downloads/",
1658 | "license": [
1659 | "MIT"
1660 | ],
1661 | "authors": [
1662 | {
1663 | "name": "Fabien Potencier",
1664 | "email": "fabien@symfony.com"
1665 | },
1666 | {
1667 | "name": "Symfony Community",
1668 | "homepage": "https://symfony.com/contributors"
1669 | }
1670 | ],
1671 | "description": "Symfony Yaml Component",
1672 | "homepage": "https://symfony.com",
1673 | "time": "2017-02-16 22:46:52"
1674 | },
1675 | {
1676 | "name": "webmozart/assert",
1677 | "version": "1.2.0",
1678 | "source": {
1679 | "type": "git",
1680 | "url": "https://github.com/webmozart/assert.git",
1681 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f"
1682 | },
1683 | "dist": {
1684 | "type": "zip",
1685 | "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f",
1686 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f",
1687 | "shasum": ""
1688 | },
1689 | "require": {
1690 | "php": "^5.3.3 || ^7.0"
1691 | },
1692 | "require-dev": {
1693 | "phpunit/phpunit": "^4.6",
1694 | "sebastian/version": "^1.0.1"
1695 | },
1696 | "type": "library",
1697 | "extra": {
1698 | "branch-alias": {
1699 | "dev-master": "1.3-dev"
1700 | }
1701 | },
1702 | "autoload": {
1703 | "psr-4": {
1704 | "Webmozart\\Assert\\": "src/"
1705 | }
1706 | },
1707 | "notification-url": "https://packagist.org/downloads/",
1708 | "license": [
1709 | "MIT"
1710 | ],
1711 | "authors": [
1712 | {
1713 | "name": "Bernhard Schussek",
1714 | "email": "bschussek@gmail.com"
1715 | }
1716 | ],
1717 | "description": "Assertions to validate method input/output with nice error messages.",
1718 | "keywords": [
1719 | "assert",
1720 | "check",
1721 | "validate"
1722 | ],
1723 | "time": "2016-11-23 20:04:58"
1724 | }
1725 | ],
1726 | "aliases": [],
1727 | "minimum-stability": "stable",
1728 | "stability-flags": [],
1729 | "prefer-stable": false,
1730 | "prefer-lowest": false,
1731 | "platform": {
1732 | "php": ">=5.4.0"
1733 | },
1734 | "platform-dev": []
1735 | }
1736 |
--------------------------------------------------------------------------------
/js/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/js/build/bundle.js:
--------------------------------------------------------------------------------
1 | !function(e){function t(i){if(r[i])return r[i].exports;var n=r[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,i){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,r){"use strict";function i(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function n(e){return Object.keys(e).map(function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])}).join("&")}function u(e){return 0===Object.keys(e).length}function o(e){return e.replace(/^\/|\/$/g,"")}function s(e){return e=o(e),e=e.replace(/\/\//g,"/")}Object.defineProperty(t,"__esModule",{value:!0}),t.escapeRegexp=i,t.buildQueryString=n,t.isEmptyObject=u,t.trimSlashes=o,t.stripSlashes=s},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(2);window.UrlManager=new i.default,void 0!==document.urlManagerConfiguration&&window.UrlManager.configure(document.urlManagerConfiguration)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(3),n=r(0),u=function(){function e(){this.enablePrettyUrl=!1,this.showScriptName=!0,this.suffix="",this.prefix=""}return e.prototype.configure=function(e){void 0!==e.enablePrettyUrl&&(this.enablePrettyUrl=e.enablePrettyUrl),void 0!==e.showScriptName&&(this.showScriptName=e.showScriptName),e.suffix&&(this.suffix=e.suffix),void 0!==e.prefix&&(this.prefix=e.prefix),this.buildRules(e.rules)},e.prototype.buildRules=function(e){for(var t=[],r=0,n=e;r]+)?>/g;void 0!==t["#"]&&(u=t["#"],delete t["#"]);var a=i({},t),f="/"+o,l=!0,c=0;do{if(r=s.exec(this.name)){var p=r[0],h=r[1],d=r[2];if(!this.validateGroup(d,t[h])){l=!1;break}f=this.replaceGroup(f,p,t[h]),delete a[h],c++}}while(r);return l||(f="/"+this.route),o&&(f+=this.suffix),n.isEmptyObject(t)||c&&l?!n.isEmptyObject(a)&&c&&(f+="?"+n.buildQueryString(a)):f+="?"+n.buildQueryString(t),u&&(f+="#"+u),f},e.prototype.validateGroup=function(e,t){return new RegExp(e).test(t)},e.prototype.replaceGroup=function(e,t,r){return e.replace(new RegExp(n.escapeRegexp(t)),r)},e}();t.default=u}]);
--------------------------------------------------------------------------------
/js/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "requires": true,
3 | "lockfileVersion": 1,
4 | "dependencies": {
5 | "@jridgewell/gen-mapping": {
6 | "version": "0.3.5",
7 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
8 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
9 | "dev": true,
10 | "requires": {
11 | "@jridgewell/set-array": "^1.2.1",
12 | "@jridgewell/sourcemap-codec": "^1.4.10",
13 | "@jridgewell/trace-mapping": "^0.3.24"
14 | }
15 | },
16 | "@jridgewell/resolve-uri": {
17 | "version": "3.1.2",
18 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
19 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
20 | "dev": true
21 | },
22 | "@jridgewell/set-array": {
23 | "version": "1.2.1",
24 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
25 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
26 | "dev": true
27 | },
28 | "@jridgewell/source-map": {
29 | "version": "0.3.6",
30 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
31 | "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
32 | "dev": true,
33 | "requires": {
34 | "@jridgewell/gen-mapping": "^0.3.5",
35 | "@jridgewell/trace-mapping": "^0.3.25"
36 | }
37 | },
38 | "@jridgewell/sourcemap-codec": {
39 | "version": "1.4.15",
40 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
41 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
42 | "dev": true
43 | },
44 | "@jridgewell/trace-mapping": {
45 | "version": "0.3.25",
46 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
47 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
48 | "dev": true,
49 | "requires": {
50 | "@jridgewell/resolve-uri": "^3.1.0",
51 | "@jridgewell/sourcemap-codec": "^1.4.14"
52 | }
53 | },
54 | "@mapbox/node-pre-gyp": {
55 | "version": "1.0.11",
56 | "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
57 | "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
58 | "dev": true,
59 | "requires": {
60 | "detect-libc": "^2.0.0",
61 | "https-proxy-agent": "^5.0.0",
62 | "make-dir": "^3.1.0",
63 | "node-fetch": "^2.6.7",
64 | "nopt": "^5.0.0",
65 | "npmlog": "^5.0.1",
66 | "rimraf": "^3.0.2",
67 | "semver": "^7.3.5",
68 | "tar": "^6.1.11"
69 | },
70 | "dependencies": {
71 | "semver": {
72 | "version": "7.6.0",
73 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
74 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
75 | "dev": true,
76 | "requires": {
77 | "lru-cache": "^6.0.0"
78 | }
79 | }
80 | }
81 | },
82 | "@nodelib/fs.scandir": {
83 | "version": "2.1.5",
84 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
85 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
86 | "dev": true,
87 | "requires": {
88 | "@nodelib/fs.stat": "2.0.5",
89 | "run-parallel": "^1.1.9"
90 | }
91 | },
92 | "@nodelib/fs.stat": {
93 | "version": "2.0.5",
94 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
95 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
96 | "dev": true
97 | },
98 | "@nodelib/fs.walk": {
99 | "version": "1.2.8",
100 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
101 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
102 | "dev": true,
103 | "requires": {
104 | "@nodelib/fs.scandir": "2.1.5",
105 | "fastq": "^1.6.0"
106 | }
107 | },
108 | "@rollup/pluginutils": {
109 | "version": "4.2.1",
110 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
111 | "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
112 | "dev": true,
113 | "requires": {
114 | "estree-walker": "^2.0.1",
115 | "picomatch": "^2.2.2"
116 | },
117 | "dependencies": {
118 | "picomatch": {
119 | "version": "2.3.1",
120 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
121 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
122 | "dev": true
123 | }
124 | }
125 | },
126 | "@sindresorhus/merge-streams": {
127 | "version": "2.3.0",
128 | "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
129 | "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==",
130 | "dev": true
131 | },
132 | "@types/eslint": {
133 | "version": "8.56.6",
134 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz",
135 | "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==",
136 | "dev": true,
137 | "requires": {
138 | "@types/estree": "*",
139 | "@types/json-schema": "*"
140 | }
141 | },
142 | "@types/eslint-scope": {
143 | "version": "3.7.7",
144 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
145 | "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
146 | "dev": true,
147 | "requires": {
148 | "@types/eslint": "*",
149 | "@types/estree": "*"
150 | }
151 | },
152 | "@types/estree": {
153 | "version": "1.0.5",
154 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
155 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
156 | "dev": true
157 | },
158 | "@types/json-schema": {
159 | "version": "7.0.15",
160 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
161 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
162 | "dev": true
163 | },
164 | "@types/node": {
165 | "version": "20.11.30",
166 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz",
167 | "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==",
168 | "dev": true,
169 | "requires": {
170 | "undici-types": "~5.26.4"
171 | }
172 | },
173 | "@vercel/nft": {
174 | "version": "0.26.4",
175 | "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.26.4.tgz",
176 | "integrity": "sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==",
177 | "dev": true,
178 | "requires": {
179 | "@mapbox/node-pre-gyp": "^1.0.5",
180 | "@rollup/pluginutils": "^4.0.0",
181 | "acorn": "^8.6.0",
182 | "acorn-import-attributes": "^1.9.2",
183 | "async-sema": "^3.1.1",
184 | "bindings": "^1.4.0",
185 | "estree-walker": "2.0.2",
186 | "glob": "^7.1.3",
187 | "graceful-fs": "^4.2.9",
188 | "micromatch": "^4.0.2",
189 | "node-gyp-build": "^4.2.2",
190 | "resolve-from": "^5.0.0"
191 | }
192 | },
193 | "@webassemblyjs/ast": {
194 | "version": "1.12.1",
195 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
196 | "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
197 | "dev": true,
198 | "requires": {
199 | "@webassemblyjs/helper-numbers": "1.11.6",
200 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
201 | }
202 | },
203 | "@webassemblyjs/floating-point-hex-parser": {
204 | "version": "1.11.6",
205 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
206 | "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
207 | "dev": true
208 | },
209 | "@webassemblyjs/helper-api-error": {
210 | "version": "1.11.6",
211 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
212 | "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
213 | "dev": true
214 | },
215 | "@webassemblyjs/helper-buffer": {
216 | "version": "1.12.1",
217 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
218 | "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
219 | "dev": true
220 | },
221 | "@webassemblyjs/helper-numbers": {
222 | "version": "1.11.6",
223 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
224 | "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
225 | "dev": true,
226 | "requires": {
227 | "@webassemblyjs/floating-point-hex-parser": "1.11.6",
228 | "@webassemblyjs/helper-api-error": "1.11.6",
229 | "@xtuc/long": "4.2.2"
230 | }
231 | },
232 | "@webassemblyjs/helper-wasm-bytecode": {
233 | "version": "1.11.6",
234 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
235 | "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
236 | "dev": true
237 | },
238 | "@webassemblyjs/helper-wasm-section": {
239 | "version": "1.12.1",
240 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
241 | "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
242 | "dev": true,
243 | "requires": {
244 | "@webassemblyjs/ast": "1.12.1",
245 | "@webassemblyjs/helper-buffer": "1.12.1",
246 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
247 | "@webassemblyjs/wasm-gen": "1.12.1"
248 | }
249 | },
250 | "@webassemblyjs/ieee754": {
251 | "version": "1.11.6",
252 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
253 | "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
254 | "dev": true,
255 | "requires": {
256 | "@xtuc/ieee754": "^1.2.0"
257 | }
258 | },
259 | "@webassemblyjs/leb128": {
260 | "version": "1.11.6",
261 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
262 | "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
263 | "dev": true,
264 | "requires": {
265 | "@xtuc/long": "4.2.2"
266 | }
267 | },
268 | "@webassemblyjs/utf8": {
269 | "version": "1.11.6",
270 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
271 | "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
272 | "dev": true
273 | },
274 | "@webassemblyjs/wasm-edit": {
275 | "version": "1.12.1",
276 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
277 | "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
278 | "dev": true,
279 | "requires": {
280 | "@webassemblyjs/ast": "1.12.1",
281 | "@webassemblyjs/helper-buffer": "1.12.1",
282 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
283 | "@webassemblyjs/helper-wasm-section": "1.12.1",
284 | "@webassemblyjs/wasm-gen": "1.12.1",
285 | "@webassemblyjs/wasm-opt": "1.12.1",
286 | "@webassemblyjs/wasm-parser": "1.12.1",
287 | "@webassemblyjs/wast-printer": "1.12.1"
288 | }
289 | },
290 | "@webassemblyjs/wasm-gen": {
291 | "version": "1.12.1",
292 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
293 | "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
294 | "dev": true,
295 | "requires": {
296 | "@webassemblyjs/ast": "1.12.1",
297 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
298 | "@webassemblyjs/ieee754": "1.11.6",
299 | "@webassemblyjs/leb128": "1.11.6",
300 | "@webassemblyjs/utf8": "1.11.6"
301 | }
302 | },
303 | "@webassemblyjs/wasm-opt": {
304 | "version": "1.12.1",
305 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
306 | "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
307 | "dev": true,
308 | "requires": {
309 | "@webassemblyjs/ast": "1.12.1",
310 | "@webassemblyjs/helper-buffer": "1.12.1",
311 | "@webassemblyjs/wasm-gen": "1.12.1",
312 | "@webassemblyjs/wasm-parser": "1.12.1"
313 | }
314 | },
315 | "@webassemblyjs/wasm-parser": {
316 | "version": "1.12.1",
317 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
318 | "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
319 | "dev": true,
320 | "requires": {
321 | "@webassemblyjs/ast": "1.12.1",
322 | "@webassemblyjs/helper-api-error": "1.11.6",
323 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
324 | "@webassemblyjs/ieee754": "1.11.6",
325 | "@webassemblyjs/leb128": "1.11.6",
326 | "@webassemblyjs/utf8": "1.11.6"
327 | }
328 | },
329 | "@webassemblyjs/wast-printer": {
330 | "version": "1.12.1",
331 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
332 | "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
333 | "dev": true,
334 | "requires": {
335 | "@webassemblyjs/ast": "1.12.1",
336 | "@xtuc/long": "4.2.2"
337 | }
338 | },
339 | "@xtuc/ieee754": {
340 | "version": "1.2.0",
341 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
342 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
343 | "dev": true
344 | },
345 | "@xtuc/long": {
346 | "version": "4.2.2",
347 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
348 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
349 | "dev": true
350 | },
351 | "abbrev": {
352 | "version": "1.1.1",
353 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
354 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
355 | "dev": true
356 | },
357 | "acorn": {
358 | "version": "8.11.3",
359 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
360 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
361 | "dev": true
362 | },
363 | "acorn-import-assertions": {
364 | "version": "1.9.0",
365 | "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
366 | "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
367 | "dev": true
368 | },
369 | "acorn-import-attributes": {
370 | "version": "1.9.4",
371 | "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.4.tgz",
372 | "integrity": "sha512-dNIX/5UEnZvVL94dV2scl4VIooK36D8AteP4xiz7cPKhDbhLhSuWkzG580g+Q7TXJklp+Z21SiaK7/HpLO84Qg==",
373 | "dev": true
374 | },
375 | "acorn-walk": {
376 | "version": "8.3.2",
377 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
378 | "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
379 | "dev": true
380 | },
381 | "agent-base": {
382 | "version": "6.0.2",
383 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
384 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
385 | "dev": true,
386 | "requires": {
387 | "debug": "4"
388 | }
389 | },
390 | "ajv": {
391 | "version": "6.12.6",
392 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
393 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
394 | "dev": true,
395 | "requires": {
396 | "fast-deep-equal": "^3.1.1",
397 | "fast-json-stable-stringify": "^2.0.0",
398 | "json-schema-traverse": "^0.4.1",
399 | "uri-js": "^4.2.2"
400 | }
401 | },
402 | "ajv-keywords": {
403 | "version": "3.5.2",
404 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
405 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
406 | "dev": true
407 | },
408 | "ansi-regex": {
409 | "version": "5.0.1",
410 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
411 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
412 | "dev": true
413 | },
414 | "ansi-styles": {
415 | "version": "6.2.1",
416 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
417 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
418 | "dev": true
419 | },
420 | "aproba": {
421 | "version": "2.0.0",
422 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
423 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
424 | "dev": true
425 | },
426 | "are-we-there-yet": {
427 | "version": "2.0.0",
428 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
429 | "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
430 | "dev": true,
431 | "requires": {
432 | "delegates": "^1.0.0",
433 | "readable-stream": "^3.6.0"
434 | },
435 | "dependencies": {
436 | "readable-stream": {
437 | "version": "3.6.2",
438 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
439 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
440 | "dev": true,
441 | "requires": {
442 | "inherits": "^2.0.3",
443 | "string_decoder": "^1.1.1",
444 | "util-deprecate": "^1.0.1"
445 | }
446 | }
447 | }
448 | },
449 | "argparse": {
450 | "version": "1.0.10",
451 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
452 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
453 | "dev": true,
454 | "requires": {
455 | "sprintf-js": "~1.0.2"
456 | }
457 | },
458 | "array-find-index": {
459 | "version": "1.0.2",
460 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
461 | "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
462 | "dev": true
463 | },
464 | "arrgv": {
465 | "version": "1.0.2",
466 | "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz",
467 | "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==",
468 | "dev": true
469 | },
470 | "arrify": {
471 | "version": "3.0.0",
472 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz",
473 | "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==",
474 | "dev": true
475 | },
476 | "async-sema": {
477 | "version": "3.1.1",
478 | "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz",
479 | "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==",
480 | "dev": true
481 | },
482 | "ava": {
483 | "version": "6.1.2",
484 | "resolved": "https://registry.npmjs.org/ava/-/ava-6.1.2.tgz",
485 | "integrity": "sha512-WcpxJ8yZ7mk9ABTinD0IAjcemovSeVGjuuwZx0JS9johREWFeLTl8UP6wd7l6nmnrWqkKZdwaD71a/ocH4qPKw==",
486 | "dev": true,
487 | "requires": {
488 | "@vercel/nft": "^0.26.2",
489 | "acorn": "^8.11.3",
490 | "acorn-walk": "^8.3.2",
491 | "ansi-styles": "^6.2.1",
492 | "arrgv": "^1.0.2",
493 | "arrify": "^3.0.0",
494 | "callsites": "^4.1.0",
495 | "cbor": "^9.0.1",
496 | "chalk": "^5.3.0",
497 | "chunkd": "^2.0.1",
498 | "ci-info": "^4.0.0",
499 | "ci-parallel-vars": "^1.0.1",
500 | "cli-truncate": "^4.0.0",
501 | "code-excerpt": "^4.0.0",
502 | "common-path-prefix": "^3.0.0",
503 | "concordance": "^5.0.4",
504 | "currently-unhandled": "^0.4.1",
505 | "debug": "^4.3.4",
506 | "emittery": "^1.0.1",
507 | "figures": "^6.0.1",
508 | "globby": "^14.0.0",
509 | "ignore-by-default": "^2.1.0",
510 | "indent-string": "^5.0.0",
511 | "is-plain-object": "^5.0.0",
512 | "is-promise": "^4.0.0",
513 | "matcher": "^5.0.0",
514 | "memoize": "^10.0.0",
515 | "ms": "^2.1.3",
516 | "p-map": "^7.0.1",
517 | "package-config": "^5.0.0",
518 | "picomatch": "^3.0.1",
519 | "plur": "^5.1.0",
520 | "pretty-ms": "^9.0.0",
521 | "resolve-cwd": "^3.0.0",
522 | "stack-utils": "^2.0.6",
523 | "strip-ansi": "^7.1.0",
524 | "supertap": "^3.0.1",
525 | "temp-dir": "^3.0.0",
526 | "write-file-atomic": "^5.0.1",
527 | "yargs": "^17.7.2"
528 | }
529 | },
530 | "balanced-match": {
531 | "version": "1.0.2",
532 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
533 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
534 | "dev": true
535 | },
536 | "big.js": {
537 | "version": "5.2.2",
538 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
539 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
540 | "dev": true
541 | },
542 | "bindings": {
543 | "version": "1.5.0",
544 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
545 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
546 | "dev": true,
547 | "requires": {
548 | "file-uri-to-path": "1.0.0"
549 | }
550 | },
551 | "blueimp-md5": {
552 | "version": "2.19.0",
553 | "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
554 | "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==",
555 | "dev": true
556 | },
557 | "brace-expansion": {
558 | "version": "1.1.11",
559 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
560 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
561 | "dev": true,
562 | "requires": {
563 | "balanced-match": "^1.0.0",
564 | "concat-map": "0.0.1"
565 | }
566 | },
567 | "braces": {
568 | "version": "3.0.2",
569 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
570 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
571 | "dev": true,
572 | "requires": {
573 | "fill-range": "^7.0.1"
574 | }
575 | },
576 | "browserslist": {
577 | "version": "4.23.0",
578 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
579 | "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
580 | "dev": true,
581 | "requires": {
582 | "caniuse-lite": "^1.0.30001587",
583 | "electron-to-chromium": "^1.4.668",
584 | "node-releases": "^2.0.14",
585 | "update-browserslist-db": "^1.0.13"
586 | }
587 | },
588 | "buffer-from": {
589 | "version": "1.1.2",
590 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
591 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
592 | "dev": true
593 | },
594 | "callsites": {
595 | "version": "4.1.0",
596 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.1.0.tgz",
597 | "integrity": "sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==",
598 | "dev": true
599 | },
600 | "caniuse-lite": {
601 | "version": "1.0.30001600",
602 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz",
603 | "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==",
604 | "dev": true
605 | },
606 | "cbor": {
607 | "version": "9.0.2",
608 | "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz",
609 | "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==",
610 | "dev": true,
611 | "requires": {
612 | "nofilter": "^3.1.0"
613 | }
614 | },
615 | "chalk": {
616 | "version": "5.3.0",
617 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
618 | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
619 | "dev": true
620 | },
621 | "chownr": {
622 | "version": "2.0.0",
623 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
624 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
625 | "dev": true
626 | },
627 | "chrome-trace-event": {
628 | "version": "1.0.3",
629 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
630 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
631 | "dev": true
632 | },
633 | "chunkd": {
634 | "version": "2.0.1",
635 | "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz",
636 | "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==",
637 | "dev": true
638 | },
639 | "ci-info": {
640 | "version": "4.0.0",
641 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz",
642 | "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==",
643 | "dev": true
644 | },
645 | "ci-parallel-vars": {
646 | "version": "1.0.1",
647 | "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz",
648 | "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==",
649 | "dev": true
650 | },
651 | "cli-truncate": {
652 | "version": "4.0.0",
653 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
654 | "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==",
655 | "dev": true,
656 | "requires": {
657 | "slice-ansi": "^5.0.0",
658 | "string-width": "^7.0.0"
659 | },
660 | "dependencies": {
661 | "emoji-regex": {
662 | "version": "10.3.0",
663 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
664 | "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
665 | "dev": true
666 | },
667 | "string-width": {
668 | "version": "7.1.0",
669 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz",
670 | "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==",
671 | "dev": true,
672 | "requires": {
673 | "emoji-regex": "^10.3.0",
674 | "get-east-asian-width": "^1.0.0",
675 | "strip-ansi": "^7.1.0"
676 | }
677 | }
678 | }
679 | },
680 | "cliui": {
681 | "version": "8.0.1",
682 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
683 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
684 | "dev": true,
685 | "requires": {
686 | "string-width": "^4.2.0",
687 | "strip-ansi": "^6.0.1",
688 | "wrap-ansi": "^7.0.0"
689 | },
690 | "dependencies": {
691 | "strip-ansi": {
692 | "version": "6.0.1",
693 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
694 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
695 | "dev": true,
696 | "requires": {
697 | "ansi-regex": "^5.0.1"
698 | }
699 | }
700 | }
701 | },
702 | "code-excerpt": {
703 | "version": "4.0.0",
704 | "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz",
705 | "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==",
706 | "dev": true,
707 | "requires": {
708 | "convert-to-spaces": "^2.0.1"
709 | }
710 | },
711 | "color-convert": {
712 | "version": "2.0.1",
713 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
714 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
715 | "dev": true,
716 | "requires": {
717 | "color-name": "~1.1.4"
718 | }
719 | },
720 | "color-name": {
721 | "version": "1.1.4",
722 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
723 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
724 | "dev": true
725 | },
726 | "color-support": {
727 | "version": "1.1.3",
728 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
729 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
730 | "dev": true
731 | },
732 | "colors": {
733 | "version": "1.4.0",
734 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
735 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
736 | "dev": true
737 | },
738 | "commander": {
739 | "version": "2.20.3",
740 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
741 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
742 | "dev": true
743 | },
744 | "common-path-prefix": {
745 | "version": "3.0.0",
746 | "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
747 | "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
748 | "dev": true
749 | },
750 | "concat-map": {
751 | "version": "0.0.1",
752 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
753 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
754 | "dev": true
755 | },
756 | "concordance": {
757 | "version": "5.0.4",
758 | "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz",
759 | "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==",
760 | "dev": true,
761 | "requires": {
762 | "date-time": "^3.1.0",
763 | "esutils": "^2.0.3",
764 | "fast-diff": "^1.2.0",
765 | "js-string-escape": "^1.0.1",
766 | "lodash": "^4.17.15",
767 | "md5-hex": "^3.0.1",
768 | "semver": "^7.3.2",
769 | "well-known-symbols": "^2.0.0"
770 | },
771 | "dependencies": {
772 | "semver": {
773 | "version": "7.6.0",
774 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
775 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
776 | "dev": true,
777 | "requires": {
778 | "lru-cache": "^6.0.0"
779 | }
780 | }
781 | }
782 | },
783 | "console-control-strings": {
784 | "version": "1.1.0",
785 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
786 | "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
787 | "dev": true
788 | },
789 | "convert-to-spaces": {
790 | "version": "2.0.1",
791 | "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz",
792 | "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==",
793 | "dev": true
794 | },
795 | "core-util-is": {
796 | "version": "1.0.3",
797 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
798 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
799 | "dev": true
800 | },
801 | "currently-unhandled": {
802 | "version": "0.4.1",
803 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
804 | "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==",
805 | "dev": true,
806 | "requires": {
807 | "array-find-index": "^1.0.1"
808 | }
809 | },
810 | "date-time": {
811 | "version": "3.1.0",
812 | "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz",
813 | "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==",
814 | "dev": true,
815 | "requires": {
816 | "time-zone": "^1.0.0"
817 | }
818 | },
819 | "debug": {
820 | "version": "4.3.4",
821 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
822 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
823 | "dev": true,
824 | "requires": {
825 | "ms": "2.1.2"
826 | },
827 | "dependencies": {
828 | "ms": {
829 | "version": "2.1.2",
830 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
831 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
832 | "dev": true
833 | }
834 | }
835 | },
836 | "delegates": {
837 | "version": "1.0.0",
838 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
839 | "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
840 | "dev": true
841 | },
842 | "detect-libc": {
843 | "version": "2.0.3",
844 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
845 | "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
846 | "dev": true
847 | },
848 | "electron-to-chromium": {
849 | "version": "1.4.717",
850 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.717.tgz",
851 | "integrity": "sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==",
852 | "dev": true
853 | },
854 | "emittery": {
855 | "version": "1.0.3",
856 | "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.0.3.tgz",
857 | "integrity": "sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==",
858 | "dev": true
859 | },
860 | "emoji-regex": {
861 | "version": "8.0.0",
862 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
863 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
864 | "dev": true
865 | },
866 | "emojis-list": {
867 | "version": "3.0.0",
868 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
869 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
870 | "dev": true
871 | },
872 | "enhanced-resolve": {
873 | "version": "3.4.1",
874 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
875 | "integrity": "sha512-ZaAux1rigq1e2nQrztHn4h2ugvpzZxs64qneNah+8Mh/K0CRqJFJc+UoXnUsq+1yX+DmQFPPdVqboKAJ89e0Iw==",
876 | "dev": true,
877 | "requires": {
878 | "graceful-fs": "^4.1.2",
879 | "memory-fs": "^0.4.0",
880 | "object-assign": "^4.0.1",
881 | "tapable": "^0.2.7"
882 | }
883 | },
884 | "errno": {
885 | "version": "0.1.8",
886 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
887 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
888 | "dev": true,
889 | "requires": {
890 | "prr": "~1.0.1"
891 | }
892 | },
893 | "es-module-lexer": {
894 | "version": "1.5.0",
895 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz",
896 | "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==",
897 | "dev": true
898 | },
899 | "escalade": {
900 | "version": "3.1.2",
901 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
902 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
903 | "dev": true
904 | },
905 | "escape-string-regexp": {
906 | "version": "5.0.0",
907 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
908 | "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
909 | "dev": true
910 | },
911 | "eslint-scope": {
912 | "version": "5.1.1",
913 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
914 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
915 | "dev": true,
916 | "requires": {
917 | "esrecurse": "^4.3.0",
918 | "estraverse": "^4.1.1"
919 | }
920 | },
921 | "esprima": {
922 | "version": "4.0.1",
923 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
924 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
925 | "dev": true
926 | },
927 | "esrecurse": {
928 | "version": "4.3.0",
929 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
930 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
931 | "dev": true,
932 | "requires": {
933 | "estraverse": "^5.2.0"
934 | },
935 | "dependencies": {
936 | "estraverse": {
937 | "version": "5.3.0",
938 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
939 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
940 | "dev": true
941 | }
942 | }
943 | },
944 | "estraverse": {
945 | "version": "4.3.0",
946 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
947 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
948 | "dev": true
949 | },
950 | "estree-walker": {
951 | "version": "2.0.2",
952 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
953 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
954 | "dev": true
955 | },
956 | "esutils": {
957 | "version": "2.0.3",
958 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
959 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
960 | "dev": true
961 | },
962 | "events": {
963 | "version": "3.3.0",
964 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
965 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
966 | "dev": true
967 | },
968 | "fast-deep-equal": {
969 | "version": "3.1.3",
970 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
971 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
972 | "dev": true
973 | },
974 | "fast-diff": {
975 | "version": "1.3.0",
976 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
977 | "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
978 | "dev": true
979 | },
980 | "fast-glob": {
981 | "version": "3.3.2",
982 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
983 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
984 | "dev": true,
985 | "requires": {
986 | "@nodelib/fs.stat": "^2.0.2",
987 | "@nodelib/fs.walk": "^1.2.3",
988 | "glob-parent": "^5.1.2",
989 | "merge2": "^1.3.0",
990 | "micromatch": "^4.0.4"
991 | }
992 | },
993 | "fast-json-stable-stringify": {
994 | "version": "2.1.0",
995 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
996 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
997 | "dev": true
998 | },
999 | "fastq": {
1000 | "version": "1.17.1",
1001 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
1002 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
1003 | "dev": true,
1004 | "requires": {
1005 | "reusify": "^1.0.4"
1006 | }
1007 | },
1008 | "figures": {
1009 | "version": "6.1.0",
1010 | "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
1011 | "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
1012 | "dev": true,
1013 | "requires": {
1014 | "is-unicode-supported": "^2.0.0"
1015 | }
1016 | },
1017 | "file-uri-to-path": {
1018 | "version": "1.0.0",
1019 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
1020 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
1021 | "dev": true
1022 | },
1023 | "fill-range": {
1024 | "version": "7.0.1",
1025 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1026 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1027 | "dev": true,
1028 | "requires": {
1029 | "to-regex-range": "^5.0.1"
1030 | }
1031 | },
1032 | "find-up-simple": {
1033 | "version": "1.0.0",
1034 | "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz",
1035 | "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==",
1036 | "dev": true
1037 | },
1038 | "fs-minipass": {
1039 | "version": "2.1.0",
1040 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
1041 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
1042 | "dev": true,
1043 | "requires": {
1044 | "minipass": "^3.0.0"
1045 | },
1046 | "dependencies": {
1047 | "minipass": {
1048 | "version": "3.3.6",
1049 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
1050 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
1051 | "dev": true,
1052 | "requires": {
1053 | "yallist": "^4.0.0"
1054 | }
1055 | }
1056 | }
1057 | },
1058 | "fs.realpath": {
1059 | "version": "1.0.0",
1060 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1061 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1062 | "dev": true
1063 | },
1064 | "gauge": {
1065 | "version": "3.0.2",
1066 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
1067 | "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
1068 | "dev": true,
1069 | "requires": {
1070 | "aproba": "^1.0.3 || ^2.0.0",
1071 | "color-support": "^1.1.2",
1072 | "console-control-strings": "^1.0.0",
1073 | "has-unicode": "^2.0.1",
1074 | "object-assign": "^4.1.1",
1075 | "signal-exit": "^3.0.0",
1076 | "string-width": "^4.2.3",
1077 | "strip-ansi": "^6.0.1",
1078 | "wide-align": "^1.1.2"
1079 | },
1080 | "dependencies": {
1081 | "strip-ansi": {
1082 | "version": "6.0.1",
1083 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1084 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1085 | "dev": true,
1086 | "requires": {
1087 | "ansi-regex": "^5.0.1"
1088 | }
1089 | }
1090 | }
1091 | },
1092 | "get-caller-file": {
1093 | "version": "2.0.5",
1094 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1095 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1096 | "dev": true
1097 | },
1098 | "get-east-asian-width": {
1099 | "version": "1.2.0",
1100 | "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz",
1101 | "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==",
1102 | "dev": true
1103 | },
1104 | "glob": {
1105 | "version": "7.2.3",
1106 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1107 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1108 | "dev": true,
1109 | "requires": {
1110 | "fs.realpath": "^1.0.0",
1111 | "inflight": "^1.0.4",
1112 | "inherits": "2",
1113 | "minimatch": "^3.1.1",
1114 | "once": "^1.3.0",
1115 | "path-is-absolute": "^1.0.0"
1116 | }
1117 | },
1118 | "glob-parent": {
1119 | "version": "5.1.2",
1120 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1121 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1122 | "dev": true,
1123 | "requires": {
1124 | "is-glob": "^4.0.1"
1125 | }
1126 | },
1127 | "glob-to-regexp": {
1128 | "version": "0.4.1",
1129 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
1130 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
1131 | "dev": true
1132 | },
1133 | "globby": {
1134 | "version": "14.0.1",
1135 | "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz",
1136 | "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==",
1137 | "dev": true,
1138 | "requires": {
1139 | "@sindresorhus/merge-streams": "^2.1.0",
1140 | "fast-glob": "^3.3.2",
1141 | "ignore": "^5.2.4",
1142 | "path-type": "^5.0.0",
1143 | "slash": "^5.1.0",
1144 | "unicorn-magic": "^0.1.0"
1145 | }
1146 | },
1147 | "graceful-fs": {
1148 | "version": "4.2.11",
1149 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
1150 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
1151 | "dev": true
1152 | },
1153 | "has-flag": {
1154 | "version": "4.0.0",
1155 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1156 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1157 | "dev": true
1158 | },
1159 | "has-unicode": {
1160 | "version": "2.0.1",
1161 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
1162 | "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
1163 | "dev": true
1164 | },
1165 | "https-proxy-agent": {
1166 | "version": "5.0.1",
1167 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
1168 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
1169 | "dev": true,
1170 | "requires": {
1171 | "agent-base": "6",
1172 | "debug": "4"
1173 | }
1174 | },
1175 | "ignore": {
1176 | "version": "5.3.1",
1177 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
1178 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
1179 | "dev": true
1180 | },
1181 | "ignore-by-default": {
1182 | "version": "2.1.0",
1183 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz",
1184 | "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==",
1185 | "dev": true
1186 | },
1187 | "imurmurhash": {
1188 | "version": "0.1.4",
1189 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1190 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
1191 | "dev": true
1192 | },
1193 | "indent-string": {
1194 | "version": "5.0.0",
1195 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
1196 | "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
1197 | "dev": true
1198 | },
1199 | "inflight": {
1200 | "version": "1.0.6",
1201 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1202 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1203 | "dev": true,
1204 | "requires": {
1205 | "once": "^1.3.0",
1206 | "wrappy": "1"
1207 | }
1208 | },
1209 | "inherits": {
1210 | "version": "2.0.4",
1211 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1212 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1213 | "dev": true
1214 | },
1215 | "irregular-plurals": {
1216 | "version": "3.5.0",
1217 | "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz",
1218 | "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==",
1219 | "dev": true
1220 | },
1221 | "is-extglob": {
1222 | "version": "2.1.1",
1223 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1224 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1225 | "dev": true
1226 | },
1227 | "is-fullwidth-code-point": {
1228 | "version": "3.0.0",
1229 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1230 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1231 | "dev": true
1232 | },
1233 | "is-glob": {
1234 | "version": "4.0.3",
1235 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1236 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1237 | "dev": true,
1238 | "requires": {
1239 | "is-extglob": "^2.1.1"
1240 | }
1241 | },
1242 | "is-number": {
1243 | "version": "7.0.0",
1244 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1245 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1246 | "dev": true
1247 | },
1248 | "is-plain-object": {
1249 | "version": "5.0.0",
1250 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
1251 | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
1252 | "dev": true
1253 | },
1254 | "is-promise": {
1255 | "version": "4.0.0",
1256 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
1257 | "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
1258 | "dev": true
1259 | },
1260 | "is-unicode-supported": {
1261 | "version": "2.0.0",
1262 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz",
1263 | "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==",
1264 | "dev": true
1265 | },
1266 | "isarray": {
1267 | "version": "1.0.0",
1268 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1269 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
1270 | "dev": true
1271 | },
1272 | "jest-worker": {
1273 | "version": "27.5.1",
1274 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
1275 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
1276 | "dev": true,
1277 | "requires": {
1278 | "@types/node": "*",
1279 | "merge-stream": "^2.0.0",
1280 | "supports-color": "^8.0.0"
1281 | }
1282 | },
1283 | "js-string-escape": {
1284 | "version": "1.0.1",
1285 | "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz",
1286 | "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==",
1287 | "dev": true
1288 | },
1289 | "js-yaml": {
1290 | "version": "3.14.1",
1291 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
1292 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
1293 | "dev": true,
1294 | "requires": {
1295 | "argparse": "^1.0.7",
1296 | "esprima": "^4.0.0"
1297 | }
1298 | },
1299 | "json-parse-even-better-errors": {
1300 | "version": "2.3.1",
1301 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
1302 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
1303 | "dev": true
1304 | },
1305 | "json-schema-traverse": {
1306 | "version": "0.4.1",
1307 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1308 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1309 | "dev": true
1310 | },
1311 | "load-json-file": {
1312 | "version": "7.0.1",
1313 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz",
1314 | "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==",
1315 | "dev": true
1316 | },
1317 | "loader-runner": {
1318 | "version": "4.3.0",
1319 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
1320 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
1321 | "dev": true
1322 | },
1323 | "loader-utils": {
1324 | "version": "1.4.2",
1325 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
1326 | "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
1327 | "dev": true,
1328 | "requires": {
1329 | "big.js": "^5.2.2",
1330 | "emojis-list": "^3.0.0",
1331 | "json5": "^1.0.1"
1332 | },
1333 | "dependencies": {
1334 | "json5": {
1335 | "version": "1.0.2",
1336 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
1337 | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
1338 | "dev": true,
1339 | "requires": {
1340 | "minimist": "^1.2.0"
1341 | }
1342 | }
1343 | }
1344 | },
1345 | "lodash": {
1346 | "version": "4.17.21",
1347 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1348 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1349 | "dev": true
1350 | },
1351 | "lru-cache": {
1352 | "version": "6.0.0",
1353 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1354 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1355 | "dev": true,
1356 | "requires": {
1357 | "yallist": "^4.0.0"
1358 | }
1359 | },
1360 | "make-dir": {
1361 | "version": "3.1.0",
1362 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
1363 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
1364 | "dev": true,
1365 | "requires": {
1366 | "semver": "^6.0.0"
1367 | },
1368 | "dependencies": {
1369 | "semver": {
1370 | "version": "6.3.1",
1371 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1372 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1373 | "dev": true
1374 | }
1375 | }
1376 | },
1377 | "matcher": {
1378 | "version": "5.0.0",
1379 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-5.0.0.tgz",
1380 | "integrity": "sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==",
1381 | "dev": true,
1382 | "requires": {
1383 | "escape-string-regexp": "^5.0.0"
1384 | }
1385 | },
1386 | "md5-hex": {
1387 | "version": "3.0.1",
1388 | "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz",
1389 | "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==",
1390 | "dev": true,
1391 | "requires": {
1392 | "blueimp-md5": "^2.10.0"
1393 | }
1394 | },
1395 | "memoize": {
1396 | "version": "10.0.0",
1397 | "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.0.0.tgz",
1398 | "integrity": "sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==",
1399 | "dev": true,
1400 | "requires": {
1401 | "mimic-function": "^5.0.0"
1402 | }
1403 | },
1404 | "memory-fs": {
1405 | "version": "0.4.1",
1406 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
1407 | "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
1408 | "dev": true,
1409 | "requires": {
1410 | "errno": "^0.1.3",
1411 | "readable-stream": "^2.0.1"
1412 | }
1413 | },
1414 | "merge-stream": {
1415 | "version": "2.0.0",
1416 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1417 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1418 | "dev": true
1419 | },
1420 | "merge2": {
1421 | "version": "1.4.1",
1422 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1423 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1424 | "dev": true
1425 | },
1426 | "micromatch": {
1427 | "version": "4.0.5",
1428 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
1429 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
1430 | "dev": true,
1431 | "requires": {
1432 | "braces": "^3.0.2",
1433 | "picomatch": "^2.3.1"
1434 | },
1435 | "dependencies": {
1436 | "picomatch": {
1437 | "version": "2.3.1",
1438 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1439 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1440 | "dev": true
1441 | }
1442 | }
1443 | },
1444 | "mime-db": {
1445 | "version": "1.52.0",
1446 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1447 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1448 | "dev": true
1449 | },
1450 | "mime-types": {
1451 | "version": "2.1.35",
1452 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1453 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1454 | "dev": true,
1455 | "requires": {
1456 | "mime-db": "1.52.0"
1457 | }
1458 | },
1459 | "mimic-function": {
1460 | "version": "5.0.1",
1461 | "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
1462 | "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
1463 | "dev": true
1464 | },
1465 | "minimatch": {
1466 | "version": "3.1.2",
1467 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1468 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1469 | "dev": true,
1470 | "requires": {
1471 | "brace-expansion": "^1.1.7"
1472 | }
1473 | },
1474 | "minimist": {
1475 | "version": "1.2.8",
1476 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
1477 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
1478 | "dev": true
1479 | },
1480 | "minipass": {
1481 | "version": "5.0.0",
1482 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
1483 | "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
1484 | "dev": true
1485 | },
1486 | "minizlib": {
1487 | "version": "2.1.2",
1488 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
1489 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
1490 | "dev": true,
1491 | "requires": {
1492 | "minipass": "^3.0.0",
1493 | "yallist": "^4.0.0"
1494 | },
1495 | "dependencies": {
1496 | "minipass": {
1497 | "version": "3.3.6",
1498 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
1499 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
1500 | "dev": true,
1501 | "requires": {
1502 | "yallist": "^4.0.0"
1503 | }
1504 | }
1505 | }
1506 | },
1507 | "mkdirp": {
1508 | "version": "1.0.4",
1509 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
1510 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
1511 | "dev": true
1512 | },
1513 | "ms": {
1514 | "version": "2.1.3",
1515 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1516 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1517 | "dev": true
1518 | },
1519 | "neo-async": {
1520 | "version": "2.6.2",
1521 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
1522 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
1523 | "dev": true
1524 | },
1525 | "node-fetch": {
1526 | "version": "2.7.0",
1527 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
1528 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
1529 | "dev": true,
1530 | "requires": {
1531 | "whatwg-url": "^5.0.0"
1532 | }
1533 | },
1534 | "node-gyp-build": {
1535 | "version": "4.8.0",
1536 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz",
1537 | "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==",
1538 | "dev": true
1539 | },
1540 | "node-releases": {
1541 | "version": "2.0.14",
1542 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
1543 | "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
1544 | "dev": true
1545 | },
1546 | "nofilter": {
1547 | "version": "3.1.0",
1548 | "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz",
1549 | "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==",
1550 | "dev": true
1551 | },
1552 | "nopt": {
1553 | "version": "5.0.0",
1554 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
1555 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
1556 | "dev": true,
1557 | "requires": {
1558 | "abbrev": "1"
1559 | }
1560 | },
1561 | "npmlog": {
1562 | "version": "5.0.1",
1563 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
1564 | "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
1565 | "dev": true,
1566 | "requires": {
1567 | "are-we-there-yet": "^2.0.0",
1568 | "console-control-strings": "^1.1.0",
1569 | "gauge": "^3.0.0",
1570 | "set-blocking": "^2.0.0"
1571 | }
1572 | },
1573 | "object-assign": {
1574 | "version": "4.1.1",
1575 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1576 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1577 | "dev": true
1578 | },
1579 | "once": {
1580 | "version": "1.4.0",
1581 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1582 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1583 | "dev": true,
1584 | "requires": {
1585 | "wrappy": "1"
1586 | }
1587 | },
1588 | "p-map": {
1589 | "version": "7.0.1",
1590 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.1.tgz",
1591 | "integrity": "sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==",
1592 | "dev": true
1593 | },
1594 | "package-config": {
1595 | "version": "5.0.0",
1596 | "resolved": "https://registry.npmjs.org/package-config/-/package-config-5.0.0.tgz",
1597 | "integrity": "sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==",
1598 | "dev": true,
1599 | "requires": {
1600 | "find-up-simple": "^1.0.0",
1601 | "load-json-file": "^7.0.1"
1602 | }
1603 | },
1604 | "parse-ms": {
1605 | "version": "4.0.0",
1606 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
1607 | "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
1608 | "dev": true
1609 | },
1610 | "path-is-absolute": {
1611 | "version": "1.0.1",
1612 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1613 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1614 | "dev": true
1615 | },
1616 | "path-type": {
1617 | "version": "5.0.0",
1618 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
1619 | "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
1620 | "dev": true
1621 | },
1622 | "picocolors": {
1623 | "version": "1.0.0",
1624 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1625 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1626 | "dev": true
1627 | },
1628 | "picomatch": {
1629 | "version": "3.0.1",
1630 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz",
1631 | "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==",
1632 | "dev": true
1633 | },
1634 | "plur": {
1635 | "version": "5.1.0",
1636 | "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz",
1637 | "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==",
1638 | "dev": true,
1639 | "requires": {
1640 | "irregular-plurals": "^3.3.0"
1641 | }
1642 | },
1643 | "pretty-ms": {
1644 | "version": "9.0.0",
1645 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz",
1646 | "integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==",
1647 | "dev": true,
1648 | "requires": {
1649 | "parse-ms": "^4.0.0"
1650 | }
1651 | },
1652 | "process-nextick-args": {
1653 | "version": "2.0.1",
1654 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1655 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
1656 | "dev": true
1657 | },
1658 | "prr": {
1659 | "version": "1.0.1",
1660 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
1661 | "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
1662 | "dev": true
1663 | },
1664 | "punycode": {
1665 | "version": "2.3.1",
1666 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
1667 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
1668 | "dev": true
1669 | },
1670 | "queue-microtask": {
1671 | "version": "1.2.3",
1672 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1673 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1674 | "dev": true
1675 | },
1676 | "randombytes": {
1677 | "version": "2.1.0",
1678 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
1679 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
1680 | "dev": true,
1681 | "requires": {
1682 | "safe-buffer": "^5.1.0"
1683 | }
1684 | },
1685 | "readable-stream": {
1686 | "version": "2.3.8",
1687 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
1688 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
1689 | "dev": true,
1690 | "requires": {
1691 | "core-util-is": "~1.0.0",
1692 | "inherits": "~2.0.3",
1693 | "isarray": "~1.0.0",
1694 | "process-nextick-args": "~2.0.0",
1695 | "safe-buffer": "~5.1.1",
1696 | "string_decoder": "~1.1.1",
1697 | "util-deprecate": "~1.0.1"
1698 | }
1699 | },
1700 | "require-directory": {
1701 | "version": "2.1.1",
1702 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
1703 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
1704 | "dev": true
1705 | },
1706 | "resolve-cwd": {
1707 | "version": "3.0.0",
1708 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
1709 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
1710 | "dev": true,
1711 | "requires": {
1712 | "resolve-from": "^5.0.0"
1713 | }
1714 | },
1715 | "resolve-from": {
1716 | "version": "5.0.0",
1717 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
1718 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
1719 | "dev": true
1720 | },
1721 | "reusify": {
1722 | "version": "1.0.4",
1723 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1724 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1725 | "dev": true
1726 | },
1727 | "rimraf": {
1728 | "version": "3.0.2",
1729 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1730 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1731 | "dev": true,
1732 | "requires": {
1733 | "glob": "^7.1.3"
1734 | }
1735 | },
1736 | "run-parallel": {
1737 | "version": "1.2.0",
1738 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1739 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1740 | "dev": true,
1741 | "requires": {
1742 | "queue-microtask": "^1.2.2"
1743 | }
1744 | },
1745 | "safe-buffer": {
1746 | "version": "5.1.2",
1747 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1748 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1749 | "dev": true
1750 | },
1751 | "schema-utils": {
1752 | "version": "3.3.0",
1753 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
1754 | "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
1755 | "dev": true,
1756 | "requires": {
1757 | "@types/json-schema": "^7.0.8",
1758 | "ajv": "^6.12.5",
1759 | "ajv-keywords": "^3.5.2"
1760 | }
1761 | },
1762 | "semver": {
1763 | "version": "5.7.2",
1764 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1765 | "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1766 | "dev": true
1767 | },
1768 | "serialize-error": {
1769 | "version": "7.0.1",
1770 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
1771 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
1772 | "dev": true,
1773 | "requires": {
1774 | "type-fest": "^0.13.1"
1775 | }
1776 | },
1777 | "serialize-javascript": {
1778 | "version": "6.0.2",
1779 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
1780 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
1781 | "dev": true,
1782 | "requires": {
1783 | "randombytes": "^2.1.0"
1784 | }
1785 | },
1786 | "set-blocking": {
1787 | "version": "2.0.0",
1788 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
1789 | "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
1790 | "dev": true
1791 | },
1792 | "signal-exit": {
1793 | "version": "3.0.7",
1794 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1795 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
1796 | "dev": true
1797 | },
1798 | "slash": {
1799 | "version": "5.1.0",
1800 | "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
1801 | "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
1802 | "dev": true
1803 | },
1804 | "slice-ansi": {
1805 | "version": "5.0.0",
1806 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
1807 | "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
1808 | "dev": true,
1809 | "requires": {
1810 | "ansi-styles": "^6.0.0",
1811 | "is-fullwidth-code-point": "^4.0.0"
1812 | },
1813 | "dependencies": {
1814 | "is-fullwidth-code-point": {
1815 | "version": "4.0.0",
1816 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
1817 | "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
1818 | "dev": true
1819 | }
1820 | }
1821 | },
1822 | "source-map": {
1823 | "version": "0.6.1",
1824 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1825 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1826 | "dev": true
1827 | },
1828 | "source-map-support": {
1829 | "version": "0.5.21",
1830 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
1831 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
1832 | "dev": true,
1833 | "requires": {
1834 | "buffer-from": "^1.0.0",
1835 | "source-map": "^0.6.0"
1836 | }
1837 | },
1838 | "sprintf-js": {
1839 | "version": "1.0.3",
1840 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1841 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
1842 | "dev": true
1843 | },
1844 | "stack-utils": {
1845 | "version": "2.0.6",
1846 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
1847 | "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
1848 | "dev": true,
1849 | "requires": {
1850 | "escape-string-regexp": "^2.0.0"
1851 | },
1852 | "dependencies": {
1853 | "escape-string-regexp": {
1854 | "version": "2.0.0",
1855 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
1856 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
1857 | "dev": true
1858 | }
1859 | }
1860 | },
1861 | "string-width": {
1862 | "version": "4.2.3",
1863 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1864 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1865 | "dev": true,
1866 | "requires": {
1867 | "emoji-regex": "^8.0.0",
1868 | "is-fullwidth-code-point": "^3.0.0",
1869 | "strip-ansi": "^6.0.1"
1870 | },
1871 | "dependencies": {
1872 | "strip-ansi": {
1873 | "version": "6.0.1",
1874 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1875 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1876 | "dev": true,
1877 | "requires": {
1878 | "ansi-regex": "^5.0.1"
1879 | }
1880 | }
1881 | }
1882 | },
1883 | "string_decoder": {
1884 | "version": "1.1.1",
1885 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1886 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1887 | "dev": true,
1888 | "requires": {
1889 | "safe-buffer": "~5.1.0"
1890 | }
1891 | },
1892 | "strip-ansi": {
1893 | "version": "7.1.0",
1894 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
1895 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
1896 | "dev": true,
1897 | "requires": {
1898 | "ansi-regex": "^6.0.1"
1899 | },
1900 | "dependencies": {
1901 | "ansi-regex": {
1902 | "version": "6.0.1",
1903 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
1904 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
1905 | "dev": true
1906 | }
1907 | }
1908 | },
1909 | "supertap": {
1910 | "version": "3.0.1",
1911 | "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz",
1912 | "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==",
1913 | "dev": true,
1914 | "requires": {
1915 | "indent-string": "^5.0.0",
1916 | "js-yaml": "^3.14.1",
1917 | "serialize-error": "^7.0.1",
1918 | "strip-ansi": "^7.0.1"
1919 | }
1920 | },
1921 | "supports-color": {
1922 | "version": "8.1.1",
1923 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
1924 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
1925 | "dev": true,
1926 | "requires": {
1927 | "has-flag": "^4.0.0"
1928 | }
1929 | },
1930 | "tapable": {
1931 | "version": "0.2.9",
1932 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz",
1933 | "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==",
1934 | "dev": true
1935 | },
1936 | "tar": {
1937 | "version": "6.2.1",
1938 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
1939 | "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
1940 | "dev": true,
1941 | "requires": {
1942 | "chownr": "^2.0.0",
1943 | "fs-minipass": "^2.0.0",
1944 | "minipass": "^5.0.0",
1945 | "minizlib": "^2.1.1",
1946 | "mkdirp": "^1.0.3",
1947 | "yallist": "^4.0.0"
1948 | }
1949 | },
1950 | "temp-dir": {
1951 | "version": "3.0.0",
1952 | "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz",
1953 | "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==",
1954 | "dev": true
1955 | },
1956 | "terser": {
1957 | "version": "5.29.2",
1958 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz",
1959 | "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==",
1960 | "dev": true,
1961 | "requires": {
1962 | "@jridgewell/source-map": "^0.3.3",
1963 | "acorn": "^8.8.2",
1964 | "commander": "^2.20.0",
1965 | "source-map-support": "~0.5.20"
1966 | }
1967 | },
1968 | "terser-webpack-plugin": {
1969 | "version": "5.3.10",
1970 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
1971 | "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
1972 | "dev": true,
1973 | "requires": {
1974 | "@jridgewell/trace-mapping": "^0.3.20",
1975 | "jest-worker": "^27.4.5",
1976 | "schema-utils": "^3.1.1",
1977 | "serialize-javascript": "^6.0.1",
1978 | "terser": "^5.26.0"
1979 | }
1980 | },
1981 | "time-zone": {
1982 | "version": "1.0.0",
1983 | "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz",
1984 | "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==",
1985 | "dev": true
1986 | },
1987 | "to-regex-range": {
1988 | "version": "5.0.1",
1989 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1990 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1991 | "dev": true,
1992 | "requires": {
1993 | "is-number": "^7.0.0"
1994 | }
1995 | },
1996 | "tr46": {
1997 | "version": "0.0.3",
1998 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
1999 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
2000 | "dev": true
2001 | },
2002 | "ts-loader": {
2003 | "version": "2.2.2",
2004 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.2.2.tgz",
2005 | "integrity": "sha512-HiusedxruMeHN1/BzpijS/rXSdup2P/IopamX235tLS3OuPU+eSXNyN3YgbHKzYEe71YkUhnm7X+VY4oOAGLtg==",
2006 | "dev": true,
2007 | "requires": {
2008 | "colors": "^1.0.3",
2009 | "enhanced-resolve": "^3.0.0",
2010 | "loader-utils": "^1.0.2",
2011 | "semver": "^5.0.1"
2012 | }
2013 | },
2014 | "type-fest": {
2015 | "version": "0.13.1",
2016 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
2017 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
2018 | "dev": true
2019 | },
2020 | "typescript": {
2021 | "version": "2.3.4",
2022 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz",
2023 | "integrity": "sha512-+3YA3hpUsl9lWPPsPQshiyXvU9EgJhvMoG2V74b6D2BddGePqRbQWNztTvpoUjlpf+3TUIL14C4Cad4QNvOVfQ==",
2024 | "dev": true
2025 | },
2026 | "undici-types": {
2027 | "version": "5.26.5",
2028 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
2029 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
2030 | "dev": true
2031 | },
2032 | "unicorn-magic": {
2033 | "version": "0.1.0",
2034 | "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
2035 | "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
2036 | "dev": true
2037 | },
2038 | "update-browserslist-db": {
2039 | "version": "1.0.13",
2040 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
2041 | "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
2042 | "dev": true,
2043 | "requires": {
2044 | "escalade": "^3.1.1",
2045 | "picocolors": "^1.0.0"
2046 | }
2047 | },
2048 | "uri-js": {
2049 | "version": "4.4.1",
2050 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2051 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2052 | "dev": true,
2053 | "requires": {
2054 | "punycode": "^2.1.0"
2055 | }
2056 | },
2057 | "util-deprecate": {
2058 | "version": "1.0.2",
2059 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2060 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2061 | "dev": true
2062 | },
2063 | "watchpack": {
2064 | "version": "2.4.1",
2065 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
2066 | "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
2067 | "dev": true,
2068 | "requires": {
2069 | "glob-to-regexp": "^0.4.1",
2070 | "graceful-fs": "^4.1.2"
2071 | }
2072 | },
2073 | "webidl-conversions": {
2074 | "version": "3.0.1",
2075 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
2076 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
2077 | "dev": true
2078 | },
2079 | "webpack": {
2080 | "version": "5.91.0",
2081 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz",
2082 | "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==",
2083 | "dev": true,
2084 | "requires": {
2085 | "@types/eslint-scope": "^3.7.3",
2086 | "@types/estree": "^1.0.5",
2087 | "@webassemblyjs/ast": "^1.12.1",
2088 | "@webassemblyjs/wasm-edit": "^1.12.1",
2089 | "@webassemblyjs/wasm-parser": "^1.12.1",
2090 | "acorn": "^8.7.1",
2091 | "acorn-import-assertions": "^1.9.0",
2092 | "browserslist": "^4.21.10",
2093 | "chrome-trace-event": "^1.0.2",
2094 | "enhanced-resolve": "^5.16.0",
2095 | "es-module-lexer": "^1.2.1",
2096 | "eslint-scope": "5.1.1",
2097 | "events": "^3.2.0",
2098 | "glob-to-regexp": "^0.4.1",
2099 | "graceful-fs": "^4.2.11",
2100 | "json-parse-even-better-errors": "^2.3.1",
2101 | "loader-runner": "^4.2.0",
2102 | "mime-types": "^2.1.27",
2103 | "neo-async": "^2.6.2",
2104 | "schema-utils": "^3.2.0",
2105 | "tapable": "^2.1.1",
2106 | "terser-webpack-plugin": "^5.3.10",
2107 | "watchpack": "^2.4.1",
2108 | "webpack-sources": "^3.2.3"
2109 | },
2110 | "dependencies": {
2111 | "enhanced-resolve": {
2112 | "version": "5.16.0",
2113 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz",
2114 | "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==",
2115 | "dev": true,
2116 | "requires": {
2117 | "graceful-fs": "^4.2.4",
2118 | "tapable": "^2.2.0"
2119 | }
2120 | },
2121 | "tapable": {
2122 | "version": "2.2.1",
2123 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
2124 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
2125 | "dev": true
2126 | }
2127 | }
2128 | },
2129 | "webpack-sources": {
2130 | "version": "3.2.3",
2131 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
2132 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
2133 | "dev": true
2134 | },
2135 | "well-known-symbols": {
2136 | "version": "2.0.0",
2137 | "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz",
2138 | "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==",
2139 | "dev": true
2140 | },
2141 | "whatwg-url": {
2142 | "version": "5.0.0",
2143 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
2144 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
2145 | "dev": true,
2146 | "requires": {
2147 | "tr46": "~0.0.3",
2148 | "webidl-conversions": "^3.0.0"
2149 | }
2150 | },
2151 | "wide-align": {
2152 | "version": "1.1.5",
2153 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
2154 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
2155 | "dev": true,
2156 | "requires": {
2157 | "string-width": "^1.0.2 || 2 || 3 || 4"
2158 | }
2159 | },
2160 | "wrap-ansi": {
2161 | "version": "7.0.0",
2162 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2163 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2164 | "dev": true,
2165 | "requires": {
2166 | "ansi-styles": "^4.0.0",
2167 | "string-width": "^4.1.0",
2168 | "strip-ansi": "^6.0.0"
2169 | },
2170 | "dependencies": {
2171 | "ansi-styles": {
2172 | "version": "4.3.0",
2173 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2174 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2175 | "dev": true,
2176 | "requires": {
2177 | "color-convert": "^2.0.1"
2178 | }
2179 | },
2180 | "strip-ansi": {
2181 | "version": "6.0.1",
2182 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2183 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2184 | "dev": true,
2185 | "requires": {
2186 | "ansi-regex": "^5.0.1"
2187 | }
2188 | }
2189 | }
2190 | },
2191 | "wrappy": {
2192 | "version": "1.0.2",
2193 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2194 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2195 | "dev": true
2196 | },
2197 | "write-file-atomic": {
2198 | "version": "5.0.1",
2199 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
2200 | "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
2201 | "dev": true,
2202 | "requires": {
2203 | "imurmurhash": "^0.1.4",
2204 | "signal-exit": "^4.0.1"
2205 | },
2206 | "dependencies": {
2207 | "signal-exit": {
2208 | "version": "4.1.0",
2209 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2210 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2211 | "dev": true
2212 | }
2213 | }
2214 | },
2215 | "y18n": {
2216 | "version": "5.0.8",
2217 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
2218 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
2219 | "dev": true
2220 | },
2221 | "yallist": {
2222 | "version": "4.0.0",
2223 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
2224 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
2225 | "dev": true
2226 | },
2227 | "yargs": {
2228 | "version": "17.7.2",
2229 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
2230 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
2231 | "dev": true,
2232 | "requires": {
2233 | "cliui": "^8.0.1",
2234 | "escalade": "^3.1.1",
2235 | "get-caller-file": "^2.0.5",
2236 | "require-directory": "^2.1.1",
2237 | "string-width": "^4.2.3",
2238 | "y18n": "^5.0.5",
2239 | "yargs-parser": "^21.1.1"
2240 | }
2241 | },
2242 | "yargs-parser": {
2243 | "version": "21.1.1",
2244 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
2245 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
2246 | "dev": true
2247 | }
2248 | }
2249 | }
2250 |
--------------------------------------------------------------------------------
/js/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "devDependencies": {
3 | "ava": "~6.1.2",
4 | "ts-loader": "~2.2.0",
5 | "typescript": "~2.3.4",
6 | "webpack": "~5.91.0"
7 | },
8 | "scripts": {
9 | "watch": "webpack --watch",
10 | "build": "webpack",
11 | "test": "tsc -p ./src && tsc -p ./tests && ava tests/"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/js/src/.gitignore:
--------------------------------------------------------------------------------
1 | *.js
2 | *.js.map
--------------------------------------------------------------------------------
/js/src/UrlManager.ts:
--------------------------------------------------------------------------------
1 | import UrlRule from './UrlRule';
2 | import {IUrlParams, IUrlManagerConfig, IRule} from './interfaces';
3 | import * as helper from './helpers';
4 |
5 | /**
6 | * urlManager allow create URLs based php configuration urlManager component
7 | */
8 | export default class UrlManager {
9 | /**
10 | * Allow to create human-friendly URLs
11 | */
12 | private enablePrettyUrl: boolean = false;
13 | /**
14 | * Add enttry script name in the URL
15 | * This property is used only if enablePrettyUrl is true
16 | * @type {boolean}
17 | */
18 | private showScriptName: boolean = true;
19 | /**
20 | * The rules for creating URLs
21 | */
22 | private rules: UrlRule[];
23 | /**
24 | * Suffix for url
25 | * @type {string}
26 | */
27 | private suffix: string = '';
28 | /**
29 | * Prefix for url, depends on enablePrettyUrl and showScriptName settings
30 | * Can contain something looks like '/index.php'
31 | * Or baseUrl, if application document root is in subdirectories
32 | * @type {string}
33 | */
34 | private prefix: string = '';
35 |
36 | public configure(config: IUrlManagerConfig) {
37 | if (config.enablePrettyUrl !== undefined) {
38 | this.enablePrettyUrl = config.enablePrettyUrl;
39 | }
40 | if (config.showScriptName !== undefined) {
41 | this.showScriptName = config.showScriptName;
42 | }
43 | if (config.suffix) {
44 | this.suffix = config.suffix;
45 | }
46 | if (config.prefix !== undefined) {
47 | this.prefix = config.prefix;
48 | }
49 | this.buildRules(config.rules);
50 | }
51 |
52 | /**
53 | * Create urlRule objects
54 | * @param rules The rules declaration
55 | */
56 | private buildRules(rules: IRule[]) : void {
57 | let result: UrlRule[] = [];
58 |
59 | for (let rule of rules) {
60 | if (!rule.suffix) {
61 | rule.suffix = this.suffix;
62 | }
63 | result.push(new UrlRule(rule));
64 | }
65 |
66 | this.rules = result;
67 | };
68 |
69 | /**
70 | * Creates a URL using the given route and query parameters.
71 | * @param route The route
72 | * @param urlParams The query parameters
73 | * @returns {string}
74 | */
75 | public createUrl(route: string, urlParams: IUrlParams = {}) : string {
76 | let result: string;
77 |
78 | if (this.enablePrettyUrl) {
79 | let prettyResultUrl = this.createPrettyUrl(route, urlParams);
80 | if (prettyResultUrl) {
81 | result = prettyResultUrl;
82 | } else if (!prettyResultUrl) {
83 | result = '/' + helper.stripSlashes(route) + this.suffix;
84 | if (!helper.isEmptyObject(urlParams)) {
85 | result += '?' + helper.buildQueryString(urlParams);
86 | }
87 | }
88 | } else {
89 | result = UrlManager.createQueryUrl(route, urlParams);
90 | }
91 |
92 | if (this.prefix) {
93 | result = this.prefix + result;
94 | }
95 |
96 | return result;
97 | }
98 |
99 | /**
100 | * Create pretty url
101 | * @param route
102 | * @param urlParams
103 | * @returns {string|null}
104 | */
105 | private createPrettyUrl(route: string, urlParams: IUrlParams = {}) : string {
106 | for (let rule of this.rules) {
107 | let compiledRule = rule.createUrl(route, urlParams);
108 | if (compiledRule !== false) {
109 | return compiledRule;
110 | }
111 | }
112 |
113 | return null;
114 | }
115 |
116 | /**
117 | * Create url that consisted of query params
118 | * @param route
119 | * @param urlParams
120 | * @returns {string}
121 | */
122 | private static createQueryUrl(route: string, urlParams: IUrlParams = {}) : string {
123 | return '?r=' + encodeURIComponent(helper.stripSlashes(route)) + '&' + helper.buildQueryString(urlParams);
124 | }
125 | }
--------------------------------------------------------------------------------
/js/src/UrlRule.ts:
--------------------------------------------------------------------------------
1 | import {IUrlParams, IRule} from './interfaces';
2 | import * as helper from './helpers';
3 |
4 | /**
5 | * UrlRule is a rule for generating URLs
6 | */
7 | export default class UrlRule {
8 | /**
9 | * The name of this url
10 | */
11 | private name: string;
12 | /**
13 | * The route to the controller action
14 | */
15 | private route: string;
16 | private suffix: string = '';
17 |
18 | constructor(params: IRule) {
19 | this.name = params.name;
20 | this.route = helper.stripSlashes(params.route);
21 | if (params.suffix) {
22 | this.suffix = params.suffix;
23 | }
24 | };
25 |
26 | /**
27 | * Create url
28 | * @param route The route
29 | * @param urlParams The parameters
30 | * @returns {boolean | string} URL or false if this rule can't be created
31 | */
32 | createUrl(route, urlParams: IUrlParams = {}) : boolean | string {
33 | if (helper.stripSlashes(route) !== this.route) {
34 | return false;
35 | }
36 |
37 | let trimmedSlashesName = helper.trimSlashes(this.name);
38 | let regexpGroups = /<([\w._-]+):?([^>]+)?>/g;
39 | let matches;
40 |
41 | let hash: string;
42 | if (urlParams['#'] !== undefined) {
43 | hash = urlParams['#'];
44 | delete urlParams['#'];
45 | }
46 |
47 | let remainingParams = {...urlParams};
48 | let resultRule = '/' + trimmedSlashesName;
49 | let validRule = true;
50 |
51 | let replacedGroups = 0;
52 | do {
53 | matches = regexpGroups.exec(this.name);
54 | if (matches) {
55 | let [group, groupKey, groupRegexpString] = matches;
56 |
57 | if (!this.validateGroup(groupRegexpString, urlParams[groupKey])) {
58 | // Suppose it is invalid url unless group passed test
59 | validRule = false;
60 | break;
61 | }
62 |
63 | resultRule = this.replaceGroup(resultRule, group, urlParams[groupKey]);
64 | delete remainingParams[groupKey];
65 | replacedGroups++;
66 | }
67 | } while (matches);
68 |
69 | if (!validRule) {
70 | resultRule = '/' + this.route;
71 | }
72 |
73 | if (trimmedSlashesName) {
74 | // Add suffix if it isn't a slash
75 | resultRule += this.suffix;
76 | }
77 |
78 | if (!helper.isEmptyObject(urlParams) && (!replacedGroups || !validRule)) {
79 | resultRule += '?' + helper.buildQueryString(urlParams);
80 | } else if (!helper.isEmptyObject(remainingParams) && replacedGroups) {
81 | resultRule += '?' + helper.buildQueryString(remainingParams);
82 | }
83 |
84 | if (hash) {
85 | resultRule += '#' + hash;
86 | }
87 |
88 | return resultRule;
89 | }
90 |
91 | /**
92 | * Validate regex group by value that passed in params
93 | * @param groupRegexpString
94 | * @param groupValue
95 | * @returns {boolean}
96 | */
97 | private validateGroup(groupRegexpString: string, groupValue: string) : boolean {
98 | let groupRegexp = new RegExp(groupRegexpString);
99 | return groupRegexp.test(groupValue);
100 | }
101 |
102 | /**
103 | * Replace group in result string by value that passed in params
104 | * @param string
105 | * @param group
106 | * @param value
107 | * @returns {string}
108 | */
109 | private replaceGroup(string: string, group: string, value: string) : string {
110 | return string.replace(new RegExp(helper.escapeRegexp(group)), value);
111 | }
112 | }
--------------------------------------------------------------------------------
/js/src/app.ts:
--------------------------------------------------------------------------------
1 | import UrlManager from './UrlManager';
2 |
3 | (window).UrlManager = new UrlManager();
4 | if ((document).urlManagerConfiguration !== undefined) {
5 | (window).UrlManager.configure((document).urlManagerConfiguration);
6 | }
--------------------------------------------------------------------------------
/js/src/helpers.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Escape string to use in regular expression
3 | * @param string
4 | * @returns {string}
5 | */
6 | export function escapeRegexp (string : string) : string {
7 | return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
8 | }
9 |
10 | /**
11 | * Build a query string from object
12 | * @param object
13 | * @returns {string}
14 | */
15 | export function buildQueryString (object : Object) : string {
16 | return Object.keys(object)
17 | .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(object[key]))
18 | .join('&');
19 | }
20 |
21 | /**
22 | * Check that the object is empty
23 | * @param object
24 | * @returns {boolean}
25 | */
26 | export function isEmptyObject (object : Object) : boolean {
27 | return Object.keys(object).length === 0;
28 | }
29 |
30 | /**
31 | * Trim slashes
32 | * @param string
33 | * @returns {string}
34 | */
35 | export function trimSlashes(string : string) : string {
36 | return string.replace(/^\/|\/$/g, '');
37 | }
38 |
39 | /**
40 | * Avoid of unneeded slashes
41 | * @param string
42 | * @returns {string}
43 | */
44 | export function stripSlashes(string : string) : string {
45 | // Trimming slashes
46 | string = trimSlashes(string);
47 | // Delete repetitive slashes
48 | string = string.replace(/\/\//g, '/');
49 |
50 | return string;
51 | }
--------------------------------------------------------------------------------
/js/src/interfaces.ts:
--------------------------------------------------------------------------------
1 | export interface IUrlParams
2 | {
3 | [index: string]: number | string;
4 | }
5 | export interface IRule
6 | {
7 | name: string;
8 | route: string;
9 | suffix?: string;
10 | }
11 | export interface IUrlManagerConfig {
12 | enablePrettyUrl?: boolean;
13 | showScriptName?: boolean;
14 | rules: IRule[],
15 | suffix?: string,
16 | prefix?: string,
17 | }
--------------------------------------------------------------------------------
/js/src/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es5",
5 | "sourceMap": true
6 | }
7 | }
--------------------------------------------------------------------------------
/js/tests/.gitignore:
--------------------------------------------------------------------------------
1 | *.js
2 | *.js.map
--------------------------------------------------------------------------------
/js/tests/test.ts:
--------------------------------------------------------------------------------
1 | import test from 'ava';
2 | import UrlManager from '../src/UrlManager';
3 |
4 | let urlManager = new UrlManager();
5 | urlManager.configure({
6 | enablePrettyUrl: true,
7 | showScriptName: false,
8 | rules: [
9 | {
10 | name: '/',
11 | route: '/site/index'
12 | },
13 | {
14 | name: '/foo//bar/',
15 | route: '/foo/bar'
16 | }
17 | ]
18 | });
19 |
20 | test('it should create correct url which is contained parameters', t => {
21 | t.is('/foo/10/bar/first', urlManager.createUrl('foo/bar', {
22 | id : 10,
23 | type : "first"
24 | }));
25 | t.is('/foo/10/bar/first', urlManager.createUrl('/foo/bar', {
26 | id : 10,
27 | type : "first"
28 | }));
29 | });
30 |
31 | test('it should create correct url without parameters', t => {
32 | t.is('/', urlManager.createUrl('/site/index'));
33 | });
34 |
35 | test('it should create correct url with query string if parameters were passed', t => {
36 | t.is('/?foo=bar¶m2=value2', urlManager.createUrl('/site/index', {
37 | 'foo' : 'bar',
38 | 'param2' : 'value2'
39 | }));
40 |
41 | t.is('/foo/bar?id=7¶m2=value2', urlManager.createUrl('/foo/bar', {
42 | 'id' : 7,
43 | 'param2' : 'value2'
44 | }));
45 |
46 | t.is('/foo/bar?id=7&type=third', urlManager.createUrl('/foo/bar', {
47 | 'id' : 7,
48 | 'type' : 'third'
49 | }));
50 |
51 | t.is('/foo/7/bar/second?queryParam=value', urlManager.createUrl('/foo/bar', {
52 | 'id' : 7,
53 | 'type' : 'second',
54 | 'queryParam' : 'value'
55 | }));
56 | });
57 |
58 | test('it should create url if route doesn\'t found', t => {
59 | t.is('/undefined-url/foo/bar', urlManager.createUrl('/undefined-url/foo/bar'));
60 |
61 | t.is('/undefined-url/foo/bar?param1=value1¶m2=value2', urlManager.createUrl('/undefined-url/foo/bar', {
62 | 'param1' : 'value1',
63 | 'param2' : 'value2'
64 | }));
65 | });
66 |
67 | test('it should create url with hash, if param that passed has name "#"', t => {
68 | t.is('/?foo=bar¶m2=value2#hash', urlManager.createUrl('/site/index', {
69 | 'foo' : 'bar',
70 | 'param2' : 'value2',
71 | '#' : 'hash'
72 | }));
73 |
74 | t.is('/foo/bar?id=7¶m2=value2#hash', urlManager.createUrl('/foo/bar', {
75 | 'id' : 7,
76 | 'param2' : 'value2',
77 | '#' : 'hash'
78 | }));
79 |
80 | t.is('/foo/bar?id=7&type=third#hash', urlManager.createUrl('/foo/bar', {
81 | 'id' : 7,
82 | 'type' : 'third',
83 | '#' : 'hash'
84 | }));
85 |
86 | t.is('/foo/7/bar/second#hash', urlManager.createUrl('/foo/bar', {
87 | 'id' : 7,
88 | 'type' : 'second',
89 | '#' : 'hash'
90 | }));
91 |
92 | t.is('/foo/7/bar/second?queryParam=value#hash', urlManager.createUrl('/foo/bar', {
93 | 'id' : 7,
94 | 'type' : 'second',
95 | 'queryParam' : 'value',
96 | '#' : 'hash'
97 | }));
98 | });
99 |
100 | test('it should create url if showScriptName is true', t => {
101 | urlManager.configure({
102 | enablePrettyUrl: true,
103 | showScriptName: true,
104 | prefix : '/index.php',
105 | rules: [
106 | {
107 | name: '/foo//bar/',
108 | route: '/foo/bar'
109 | }
110 | ]
111 | });
112 | t.is('/index.php/foo/10/bar/first', urlManager.createUrl('/foo/bar', {
113 | 'id' : 10,
114 | 'type' : 'first'
115 | }));
116 | });
117 |
118 | test('it should create url if enablePrettyUrl is false', t => {
119 | urlManager.configure({
120 | enablePrettyUrl: false,
121 | suffix: '.html',
122 | rules: [
123 | {
124 | name: '/foo//bar/',
125 | route: '/foo/bar'
126 | }
127 | ]
128 | });
129 | t.is('/index.php?r=foo%2Fbar&id=10&type=first', urlManager.createUrl('/foo/bar', {
130 | 'id' : 10,
131 | 'type' : 'first'
132 | }));
133 | });
134 | test('it should create url if suffix passed', t => {
135 | urlManager.configure({
136 | enablePrettyUrl: true,
137 | showScriptName: false,
138 | suffix : '.html',
139 | prefix : '',
140 | rules: [
141 | {
142 | name: '/',
143 | route: '/site/index'
144 | },
145 | {
146 | name: '/create',
147 | route: '/site/create'
148 | },
149 | {
150 | name: '/foo//bar/',
151 | route: '/foo/bar',
152 | suffix: '/'
153 | }
154 | ]
155 | });
156 | t.is('/', urlManager.createUrl('/site/index'));
157 | t.is('/create.html', urlManager.createUrl('/site/create'));
158 | t.is('/foo/10/bar/first/', urlManager.createUrl('/foo/bar', {
159 | id: 10,
160 | type: 'first'
161 | }));
162 | t.is('/foo/bar/?id=10&type=third', urlManager.createUrl('/foo/bar', {
163 | id: 10,
164 | type: 'third'
165 | }));
166 | });
--------------------------------------------------------------------------------
/js/tests/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es2015"
5 | }
6 | }
--------------------------------------------------------------------------------
/js/webpack.config.js:
--------------------------------------------------------------------------------
1 | const webpack = require('webpack');
2 | const path = require('path');
3 | module.exports = {
4 | entry: './src/app.ts',
5 | output: {
6 | filename: './build/bundle.js'
7 | },
8 | devtool: 'source-map',
9 | resolve: {
10 | extensions: ['.webpack.js', '.web.js', '.ts', '.js']
11 | },
12 | plugins: [
13 | new webpack.optimize.UglifyJsPlugin({
14 | compress: { warnings: false }
15 | })
16 | ],
17 | module: {
18 | loaders: [
19 | {
20 | test: /\.ts$/,
21 | loader: 'ts-loader',
22 | options: {
23 | configFileName : './src/tsconfig.json'
24 | }
25 | }
26 | ]
27 | }
28 | };
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 | tests
15 |
16 |
17 |
18 |
19 | src/
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/JsUrlManager.php:
--------------------------------------------------------------------------------
1 |
21 | */
22 | class JsUrlManager extends BaseObject implements BootstrapInterface
23 | {
24 | /**
25 | * The location to register configuration Frontend UrlManager string
26 | * @var int
27 | */
28 | public $configurationStringPosition = View::POS_HEAD;
29 |
30 | /**
31 | * Set configuration to document.urlManagerConfiguration
32 | * @var bool
33 | */
34 | public $configureThroughVariable = false;
35 |
36 | /**
37 | * Initialize configuration on AJAX requests
38 | * @var bool
39 | */
40 | public $configureOnAjaxRequests = true;
41 |
42 | /**
43 | * @var UrlManager
44 | */
45 | private $urlManager;
46 |
47 | /**
48 | * @inheritdoc
49 | */
50 | public function bootstrap($app)
51 | {
52 | $this->setUrlManager($app->urlManager);
53 | $configuration = $this->defineConfiguration();
54 | $enableConfiguration = !$app->request instanceof \yii\web\Request || !$app->request->getIsAjax() || $this->configureOnAjaxRequests;
55 | if ($enableConfiguration && $this->configureThroughVariable) {
56 | $this->configureFrontendUrlManagerThroughVariable($configuration);
57 | } elseif ($enableConfiguration) {
58 | $this->configureFrontendUrlManager($configuration);
59 | }
60 |
61 | self::registerAssets();
62 | }
63 |
64 | /**
65 | * Register necessary assets
66 | */
67 | public static function registerAssets()
68 | {
69 | JsUrlManagerAsset::register(Yii::$app->view);
70 | }
71 |
72 | /**
73 | * Define configuration based on yii\web\UrlManager's configuration
74 | * @return array
75 | */
76 | public function defineConfiguration()
77 | {
78 | return [
79 | 'enablePrettyUrl' => $this->urlManager->enablePrettyUrl,
80 | 'showScriptName' => $this->urlManager->showScriptName,
81 | 'suffix' => $this->urlManager->suffix,
82 | 'rules' => $this->getRules(),
83 | 'prefix' => $this->getPrefix(),
84 | ];
85 | }
86 |
87 | /**
88 | * Get rules
89 | */
90 | public function getRules()
91 | {
92 | $rules = [];
93 | foreach ($this->urlManager->rules as $name => $rule) {
94 | if ($rule instanceof UrlRule) {
95 | $rules[] = [
96 | 'name' => $rule->name,
97 | 'route' => $rule->route,
98 | 'suffix' => $rule->suffix
99 | ];
100 | } else if (is_string($rule)) {
101 | $rules[] = [
102 | 'name' => $name,
103 | 'route' => $rule
104 | ];
105 | }
106 | }
107 |
108 | return $rules;
109 | }
110 |
111 | /**
112 | * Get url's prefix
113 | * @return string
114 | */
115 | public function getPrefix()
116 | {
117 | return $this->urlManager->showScriptName || !$this->urlManager->enablePrettyUrl ?
118 | $this->urlManager->getScriptUrl() : $this->urlManager->getBaseUrl();
119 | }
120 |
121 | /**
122 | * @return UrlManager
123 | */
124 | public function getUrlManager()
125 | {
126 | return $this->urlManager;
127 | }
128 |
129 | /**
130 | * @param UrlManager $urlManager
131 | */
132 | public function setUrlManager(UrlManager $urlManager)
133 | {
134 | $this->urlManager = $urlManager;
135 | }
136 |
137 | /**
138 | * Register js string that configure frontend UrlManager
139 | * @param array $configuration
140 | */
141 | protected function configureFrontendUrlManager(array $configuration)
142 | {
143 | Yii::$app->view->registerJs(
144 | 'UrlManager.configure(' . $this->prepareForFrontend($configuration) . ');',
145 | $this->configurationStringPosition
146 | );
147 | }
148 |
149 | /**
150 | * Register js string that configure frontend UrlManager
151 | * @param array $configuration
152 | */
153 | protected function configureFrontendUrlManagerThroughVariable(array $configuration)
154 | {
155 | Yii::$app->view->registerJs(
156 | 'document.urlManagerConfiguration = ' . $this->prepareForFrontend($configuration) . ';',
157 | $this->configurationStringPosition
158 | );
159 | }
160 |
161 | /**
162 | * Prepare any data to frontend
163 | * @param mixed $value
164 | * @return string
165 | */
166 | private function prepareForFrontend($value) {
167 | return (string) new JsExpression(Json::encode($value));
168 | }
169 | }
170 |
--------------------------------------------------------------------------------
/src/JsUrlManagerAsset.php:
--------------------------------------------------------------------------------
1 | View::POS_HEAD
12 | ];
13 |
14 | public $sourcePath = '@vendor/dmirogin/yii2-js-urlmanager/js/build/';
15 |
16 | public $js = [
17 | 'bundle.js',
18 | ];
19 | }
--------------------------------------------------------------------------------
/tests/JsUrlManagerTest.php:
--------------------------------------------------------------------------------
1 | \yii\web\UrlManager::class,
16 | 'enablePrettyUrl' => true,
17 | 'showScriptName' => false,
18 | 'suffix' => '.html',
19 | 'rules' => [
20 | '/' => '/site/index',
21 | '/add/' => '/site/add',
22 | [
23 | 'pattern' => '/foo//bar//',
24 | 'route' => '/foo/bar',
25 | 'suffix' => '/'
26 | ],
27 | [
28 | 'class' => \yii\web\GroupUrlRule::class,
29 | 'prefix' => 'admin',
30 | 'rules' => [
31 | 'login' => 'user/login',
32 | 'logout' => 'user/logout',
33 | 'dashboard' => 'default/dashboard',
34 | ],
35 | ]
36 | ],
37 | ];
38 |
39 | protected function mockWebApplication()
40 | {
41 | return new Application([
42 | 'id' => 'testing',
43 | 'basePath' => dirname(__DIR__),
44 | 'components' => [
45 | 'urlManager' => $this->urlManagerConfiguration,
46 | ]
47 | ]);
48 | }
49 |
50 | /**
51 | * @return \yii\web\UrlManager
52 | */
53 | protected function mockUrlManager()
54 | {
55 | /** @var \yii\web\UrlManager $urlManager */
56 | $urlManager = Yii::createObject($this->urlManagerConfiguration);
57 |
58 | return $urlManager;
59 | }
60 |
61 | /**
62 | * @covers JsUrlManager::getUrlManager()
63 | * @covers JsUrlManager::setUrlManager()
64 | */
65 | public function testSetUrlManager()
66 | {
67 | $urlManager = $this->mockUrlManager();
68 |
69 | /** @var JsUrlManager $jsUrlManager */
70 | $jsUrlManager = Yii::createObject(JsUrlManager::class);
71 |
72 | $this->assertInstanceOf(JsUrlManager::class, $jsUrlManager);
73 | $this->assertNull($jsUrlManager->getUrlManager());
74 |
75 | $jsUrlManager->setUrlManager($urlManager);
76 |
77 | $this->assertInstanceOf(UrlManager::class, $jsUrlManager->getUrlManager());
78 | }
79 |
80 | /**
81 | * @covers JsUrlManager::getRules()
82 | * @depends testSetUrlManager
83 | */
84 | public function testGetRules()
85 | {
86 | $urlManager = $this->mockUrlManager();
87 |
88 | /** @var \dmirogin\js\urlmanager\JsUrlManager $jsUrlManager */
89 | $jsUrlManager = Yii::createObject(\dmirogin\js\urlmanager\JsUrlManager::class);
90 | $jsUrlManager->setUrlManager($urlManager);
91 |
92 | $this->assertEquals([
93 | [
94 | 'name' => '/',
95 | 'route' => 'site/index',
96 | 'suffix' => null
97 | ],
98 | [
99 | 'name' => '/add/',
100 | 'route' => 'site/add',
101 | 'suffix' => null
102 | ],
103 | [
104 | 'name' => '/foo//bar//',
105 | 'route' => 'foo/bar',
106 | 'suffix' => '/'
107 | ]
108 | ], $jsUrlManager->getRules());
109 | }
110 |
111 | /**
112 | * @covers JsUrlManager::getPrefix()
113 | * @depends testSetUrlManager
114 | */
115 | public function testGetPrefix()
116 | {
117 | $urlManager = $this->mockUrlManager();
118 |
119 | /** @var JsUrlManager $jsUrlManager */
120 | $jsUrlManager = Yii::createObject(JsUrlManager::class);
121 | $jsUrlManager->setUrlManager($urlManager);
122 |
123 | $urlManager->showScriptName = true;
124 | $urlManager->enablePrettyUrl = true;
125 |
126 | $this->assertEquals($urlManager->getScriptUrl(), $jsUrlManager->getPrefix());
127 |
128 | $urlManager->showScriptName = false;
129 | $urlManager->enablePrettyUrl = false;
130 |
131 | $this->assertEquals($urlManager->getScriptUrl(), $jsUrlManager->getPrefix());
132 |
133 | $urlManager->showScriptName = false;
134 | $urlManager->enablePrettyUrl = true;
135 |
136 | $this->assertEquals($urlManager->getBaseUrl(), $jsUrlManager->getPrefix());
137 | }
138 |
139 | /**
140 | * @covers JsUrlManager::defineConfiguration()
141 | * @depends testSetUrlManager
142 | * @depends testGetRules
143 | * @depends testGetPrefix
144 | */
145 | public function testDefineConfiguration()
146 | {
147 | $urlManager = $this->mockUrlManager();
148 |
149 | /** @var JsUrlManager $jsUrlManager */
150 | $jsUrlManager = Yii::createObject(JsUrlManager::class);
151 | $jsUrlManager->setUrlManager($urlManager);
152 |
153 | $this->assertEquals([
154 | 'enablePrettyUrl' => true,
155 | 'showScriptName' => false,
156 | 'suffix' => '.html',
157 | 'rules' => $jsUrlManager->getRules(),
158 | 'prefix' => $jsUrlManager->getPrefix(),
159 | ], $jsUrlManager->defineConfiguration());
160 | }
161 |
162 | /**
163 | * @covers JsUrlManager::bootstrap()
164 | * @depends testGetRules
165 | * @depends testGetPrefix
166 | * @depends testSetUrlManager
167 | * @depends testDefineConfiguration
168 | */
169 | public function testBootstrap()
170 | {
171 | $app = $this->mockWebApplication();
172 |
173 | $configureRequest = function($isAjax) use ($app) {
174 | $request = $this->createMock(Request::class);
175 |
176 | $request->expects($this->any())
177 | ->method('getIsAjax')
178 | ->willReturn($isAjax);
179 |
180 | $app->set('request', $request);
181 | };
182 |
183 | $configureViewWithRegisterJs = function($js, $pos = View::POS_BEGIN) use ($app) {
184 | $view = $this->createMock(View::class);
185 |
186 | $view->expects($this->once())
187 | ->method('registerJs')
188 | ->with($js, $pos);
189 |
190 | $app->set('view', $view);
191 | };
192 |
193 | /** @var JsUrlManager $jsUrlManager */
194 | $jsUrlManager = Yii::createObject(JsUrlManager::class);
195 | $jsUrlManager->setUrlManager($app->urlManager);
196 | $jsUrlManager->configurationStringPosition = View::POS_BEGIN;
197 |
198 | // Disable AJAX mode
199 | $jsUrlManager->configureOnAjaxRequests = false;
200 | $configureRequest(false);
201 |
202 | $configureViewWithRegisterJs('document.urlManagerConfiguration = ' . new JsExpression(Json::encode($jsUrlManager->defineConfiguration())) . ';');
203 | $jsUrlManager->configureThroughVariable = true;
204 | $jsUrlManager->bootstrap($app);
205 |
206 | $configureViewWithRegisterJs('UrlManager.configure(' . new JsExpression(Json::encode($jsUrlManager->defineConfiguration())) . ');');
207 | $jsUrlManager->configureThroughVariable = false;
208 | $jsUrlManager->bootstrap($app);
209 |
210 | // enable AJAX mode
211 | $jsUrlManager->configureOnAjaxRequests = true;
212 | $configureRequest(true);
213 |
214 | $configureViewWithRegisterJs('document.urlManagerConfiguration = ' . new JsExpression(Json::encode($jsUrlManager->defineConfiguration())) . ';');
215 | $jsUrlManager->configureThroughVariable = true;
216 | $jsUrlManager->bootstrap($app);
217 |
218 | $configureViewWithRegisterJs('UrlManager.configure(' . new JsExpression(Json::encode($jsUrlManager->defineConfiguration())) . ');');
219 | $jsUrlManager->configureThroughVariable = false;
220 | $jsUrlManager->bootstrap($app);
221 |
222 | // disable bootstrapping using AJAX requests
223 | $jsUrlManager->configureOnAjaxRequests = false;
224 | $jsUrlManager->configureThroughVariable = true;
225 | $jsUrlManager->bootstrap($app);
226 | $jsUrlManager->configureThroughVariable = false;
227 | $jsUrlManager->bootstrap($app);
228 | }
229 | }
230 |
--------------------------------------------------------------------------------
/tests/bootstrap.php:
--------------------------------------------------------------------------------
1 | 'unit',
10 | 'basePath' => __DIR__,
11 | ]);
--------------------------------------------------------------------------------