From 09fc82e1aded65eae1b5af334e788578ee6b0d76 Mon Sep 17 00:00:00 2001 From: dom111 Date: Thu, 25 Aug 2022 21:32:34 +0100 Subject: [PATCH] Adding functional test. --- .github/workflows/build-on-push.yml | 15 +- Makefile | 19 +- README.md | 3 +- TODO.md | 11 +- build/sass.sh | 5 - docker-compose.yml | 2 +- index.html | 91 +- ...nal.ts => jest.config.functional.chrome.ts | 2 +- jest.config.functional.firefox.ts | 4 + package-lock.json | 2305 +++++++++-------- package.json | 11 +- src/lib/DAV/Collection.ts | 4 + src/lib/DAV/Entry.ts | 100 +- src/lib/DAV/Response.ts | 24 +- src/lib/UI/NativeDOM.ts | 7 +- src/lib/UI/NativeDOM/List.ts | 10 +- src/lib/UI/NativeDOM/List/Item.ts | 37 +- src/lib/UI/UI.ts | 2 +- src/lib/joinPath.ts | 7 +- src/webdav-min.js | 16 +- tests/functional/List.test.ts | 252 ++ tests/jest.ts-puppeteer.preset.chrome.ts | 1 + tests/jest.ts-puppeteer.preset.firefox.ts | 1 + tests/jest.ts-puppeteer.preset.ts | 15 + tests/lib/getProperties.ts | 38 + tests/lib/grantClipboardPermissions.ts | 57 + tests/lib/isReady.ts | 64 + tests/unit/DAV.test.ts | 106 +- tests/unit/DAV/Entry.test.ts | 6 +- tests/unit/DAV/Response.test.ts | 29 +- 30 files changed, 1855 insertions(+), 1389 deletions(-) delete mode 100644 build/sass.sh rename jest.config.functional.ts => jest.config.functional.chrome.ts (54%) create mode 100644 jest.config.functional.firefox.ts create mode 100644 tests/functional/List.test.ts create mode 100644 tests/jest.ts-puppeteer.preset.chrome.ts create mode 100644 tests/jest.ts-puppeteer.preset.firefox.ts create mode 100644 tests/jest.ts-puppeteer.preset.ts create mode 100644 tests/lib/getProperties.ts create mode 100644 tests/lib/grantClipboardPermissions.ts create mode 100644 tests/lib/isReady.ts diff --git a/.github/workflows/build-on-push.yml b/.github/workflows/build-on-push.yml index 3acffed..3932253 100644 --- a/.github/workflows/build-on-push.yml +++ b/.github/workflows/build-on-push.yml @@ -1,6 +1,12 @@ name: Build and test application on push to remote -on: [push] +on: + push: + branches: + - master + pull_request: + branches: + - master jobs: build: @@ -9,7 +15,6 @@ jobs: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: - node-version: 12 - - run: yarn install - - run: yarn build - - run: yarn test + node-version: 16 + - run: make build + - run: make test diff --git a/Makefile b/Makefile index 6324613..abb64ee 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,12 @@ SHELL = /bin/bash .PHONY: build -build: docker-compose.override.yml - docker-compose run --rm web npm run build +build: node_modules + npm run build .PHONY: test -test: docker-compose.override.yml - docker-compose run --rm test npm run test +test: node_modules + docker-compose run --rm -e BASE_URL=http://webdav test npm run test -docker-compose.override.yml: - @echo "version: '3'" > docker-compose.override.yml - @echo >> docker-compose.override.yml - @echo "services:" >> docker-compose.override.yml - @echo " web:" >> docker-compose.override.yml - @echo " user: `id -u`:`id -g`" >> docker-compose.override.yml - -dist/js/app.js: -dist/js/app.js: build \ No newline at end of file +node_modules: + npm install diff --git a/README.md b/README.md index a910cf3..1a80480 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ without the need for using a third party application. The application has since been rewritten to not rely on jQuery and use more modern methods and provide a single runtime file. Now that there's more separation between the interface code and the library code, I'd like to investigate using other frontend approaches to see which I prefer (and also to weigh up the differences between the currently available -frameworks). There's still work to do around code separation andhopefully this will be something I can continue to work +frameworks). There's still work to do around code separation and hopefully this will be something I can continue to work on (as time allows) I feel it's at least as stable as the previous version. ## Tested in: @@ -16,7 +16,6 @@ on (as time allows) I feel it's at least as stable as the previous version. - Chrome - Firefox - Edge -- IE11 (I may drop support for this to reduce the package size in the future - unless anyone REALY needs it?) ## Implementations diff --git a/TODO.md b/TODO.md index a1772cf..3bfd990 100644 --- a/TODO.md +++ b/TODO.md @@ -1,12 +1,11 @@ +- [x] Add more unit tests for the UI +- [x] Add end-to-end UI testing +- [x] Move to TypeScript +- [ ] Add drag and drop tests - [ ] Allow uploading of directories ([#48](https://github.com/dom111/webdav-js/issues/48)) - [ ] Add functionality for copying and moving files and directories - [ ] Add progress bar for file uploads -- [ ] Add more unit tests for the UI -- [ ] Add end-to-end UI testing (although it seems that drag and drop might be a problem) - [ ] Support keyboard navigation whilst overlay is visible -- [ ] Improve code in `item.js` - maybe split out the functionality into each action? -- [ ] Look into moving to TypeScript - [ ] ReactJS implementation - [ ] VueJS implementation -- [ ] Native Web Components implementation -- [ ] Angular implementation +- [ ] Maybe a refactor... diff --git a/build/sass.sh b/build/sass.sh deleted file mode 100644 index d6257b4..0000000 --- a/build/sass.sh +++ /dev/null @@ -1,5 +0,0 @@ -> assets/css/style.css; -for file in node_modules/{basiclightbox/src/styles/main.scss,prismjs/themes/prism.css} assets/scss/style.scss; do - echo '/* '$file' */' >> assets/css/style.css; - npm run --silent node-sass -- --output-style=expanded $file >> assets/css/style.css; -done \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 7068090..7d7450f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,4 +28,4 @@ services: # https://stackoverflow.com/a/53975412/3145856 # https://github.com/docker/compose/issues/5574 security_opt: - - seccomp:"./docker/test/chrome.json" + - seccomp:./docker/test/chrome.json diff --git a/index.html b/index.html index 2e5a034..a0bcba1 100644 --- a/index.html +++ b/index.html @@ -44,13 +44,41 @@ display: none; } + + + > + +
@@ -125,14 +128,14 @@

Information

cross-browser addition to the bookmarks of anyone that has to interact with WebDAV. It supports previewing of many common filetypes (syntax highlighting for code, previews for - images/videos/fonts), drag and drop file uplaods and history state + images/videos/fonts), drag and drop file uploads and history state (for back button navigation).

Whilst this started out as a very simple bookmarklet with some basic styling (and it's still not much more than that!), I'd like to - continue improve it somewhat, adding in new features and using it as - a testbed for front-end framework experience. I'd like to + continue to improve it somewhat, adding in new features and using it + as a testbed for front-end framework experience. I'd like to investigate more thorough testing using it too, ideally performing full end-to-end testing for all the features currently implemented.

@@ -202,29 +205,5 @@

Use it

event.preventDefault(); }); - diff --git a/jest.config.functional.ts b/jest.config.functional.chrome.ts similarity index 54% rename from jest.config.functional.ts rename to jest.config.functional.chrome.ts index 0054d20..4932b9d 100644 --- a/jest.config.functional.ts +++ b/jest.config.functional.chrome.ts @@ -1,4 +1,4 @@ export default { testMatch: ['**/tests/functional/**/*.ts'], - preset: './tests/jest.ts-puppeteer.preset.ts', + preset: './tests/jest.ts-puppeteer.preset.chrome.ts', }; diff --git a/jest.config.functional.firefox.ts b/jest.config.functional.firefox.ts new file mode 100644 index 0000000..22f252c --- /dev/null +++ b/jest.config.functional.firefox.ts @@ -0,0 +1,4 @@ +export default { + testMatch: ['**/tests/functional/**/*.ts'], + preset: './tests/jest.ts-puppeteer.preset.firefox.ts', +}; diff --git a/package-lock.json b/package-lock.json index f6dbd5b..084a6e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,42 +44,42 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", + "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.13.tgz", + "integrity": "sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.13", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.13", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.13", + "@babel/types": "^7.18.13", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -95,37 +95,42 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", + "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.13", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -136,145 +141,151 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -320,13 +331,13 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -335,7 +346,7 @@ "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -354,9 +365,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -513,12 +524,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -528,33 +539,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", + "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.13", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.13", + "@babel/types": "^7.18.13", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -563,12 +574,13 @@ } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", + "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -581,31 +593,47 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, "engines": { - "node": ">= 12" + "node": ">=12" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" - }, + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" } }, "node_modules/@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", "dev": true }, "node_modules/@hapi/topo": { @@ -896,34 +924,52 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", - "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==", - "dev": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -1010,27 +1056,27 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true }, "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, "node_modules/@types/babel__core": { @@ -1066,9 +1112,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", - "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", + "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -1118,9 +1164,9 @@ } }, "node_modules/@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, "dependencies": { "jest-matcher-utils": "^27.0.0", @@ -1128,9 +1174,9 @@ } }, "node_modules/@types/jest-environment-puppeteer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/jest-environment-puppeteer/-/jest-environment-puppeteer-5.0.1.tgz", - "integrity": "sha512-QVf/EQEJihbOjJdmQ9Mq5jDAIba93Rh/32l41HC2O0jOMjT8Syvrr5acBArf6BN+RdkIKtAUkTadIY7j89eD+A==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/jest-environment-puppeteer/-/jest-environment-puppeteer-5.0.2.tgz", + "integrity": "sha512-YCdegQnDou6aIK8wqygDDctHgJZtlXd03fI9Bgbqkdu66EFKnImmt7auiR9OkxkSSiqS9smn0joX2pGpVs7ErA==", "dev": true, "dependencies": { "@jest/types": ">=24 <=27", @@ -1139,15 +1185,15 @@ } }, "node_modules/@types/node": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.29.tgz", - "integrity": "sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA==", + "version": "18.7.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz", + "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==", "dev": true }, "node_modules/@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", + "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", "dev": true }, "node_modules/@types/puppeteer": { @@ -1198,9 +1244,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "bin": { "acorn": "bin/acorn" }, @@ -1320,7 +1366,7 @@ "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1337,7 +1383,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "node_modules/axios": { @@ -1522,9 +1568,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "funding": [ { @@ -1537,11 +1583,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" @@ -1599,7 +1644,7 @@ "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "peer": true, "engines": { @@ -1630,9 +1675,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001334", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001334.tgz", - "integrity": "sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==", + "version": "1.0.30001383", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001383.tgz", + "integrity": "sha512-swMpEoTp5vDoGBZsYZX7L7nXHe6dsHxi9o6/LKf/f0LukVtnrxly5GVb/fWdCDTqi/yw6Km6tiJ0pmBacm0gbg==", "dev": true, "funding": [ { @@ -1704,9 +1749,9 @@ "peer": true }, "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, "node_modules/cjs-module-lexer": { @@ -1729,7 +1774,7 @@ "node_modules/clone-deep": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "integrity": "sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==", "dev": true, "dependencies": { "for-own": "^0.1.3", @@ -1745,7 +1790,7 @@ "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", @@ -1787,14 +1832,18 @@ } }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/convert-source-map": { @@ -1863,7 +1912,7 @@ "node_modules/cwd": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", + "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", "dev": true, "dependencies": { "find-pkg": "^0.1.2", @@ -1887,41 +1936,6 @@ "node": ">=10" } }, - "node_modules/data-urls/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1940,15 +1954,15 @@ } }, "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", + "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", "dev": true }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "node_modules/deep-is": { @@ -1969,7 +1983,7 @@ "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -1985,9 +1999,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==", "dev": true, "peer": true }, @@ -2042,9 +2056,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.124", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.124.tgz", - "integrity": "sha512-VhaE9VUYU6d2eIb+4xf83CATD+T+3bTzvxvlADkQE+c2hisiw3sZmvEDtsW704+Zky9WZGhBuQXijDVqSriQLA==", + "version": "1.4.230", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.230.tgz", + "integrity": "sha512-3pwjAK0qHSDN9+YAF4fJknsSruP7mpjdWzUSruIJD/JCH77pEh0SorEyb3xVaKkfwk2tzjOt2D8scJ0KAdfXLA==", "dev": true }, "node_modules/emittery": { @@ -2085,9 +2099,9 @@ } }, "node_modules/esbuild": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", - "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -2096,32 +2110,33 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.38", - "esbuild-android-arm64": "0.14.38", - "esbuild-darwin-64": "0.14.38", - "esbuild-darwin-arm64": "0.14.38", - "esbuild-freebsd-64": "0.14.38", - "esbuild-freebsd-arm64": "0.14.38", - "esbuild-linux-32": "0.14.38", - "esbuild-linux-64": "0.14.38", - "esbuild-linux-arm": "0.14.38", - "esbuild-linux-arm64": "0.14.38", - "esbuild-linux-mips64le": "0.14.38", - "esbuild-linux-ppc64le": "0.14.38", - "esbuild-linux-riscv64": "0.14.38", - "esbuild-linux-s390x": "0.14.38", - "esbuild-netbsd-64": "0.14.38", - "esbuild-openbsd-64": "0.14.38", - "esbuild-sunos-64": "0.14.38", - "esbuild-windows-32": "0.14.38", - "esbuild-windows-64": "0.14.38", - "esbuild-windows-arm64": "0.14.38" + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" } }, "node_modules/esbuild-android-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", - "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", "cpu": [ "x64" ], @@ -2134,9 +2149,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", - "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", "cpu": [ "arm64" ], @@ -2149,9 +2164,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", - "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", "cpu": [ "x64" ], @@ -2164,9 +2179,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", - "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", "cpu": [ "arm64" ], @@ -2179,9 +2194,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", - "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", "cpu": [ "x64" ], @@ -2194,9 +2209,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", - "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", "cpu": [ "arm64" ], @@ -2209,9 +2224,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", - "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", "cpu": [ "ia32" ], @@ -2224,9 +2239,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", - "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", "cpu": [ "x64" ], @@ -2239,9 +2254,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", - "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", "cpu": [ "arm" ], @@ -2254,9 +2269,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", - "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", "cpu": [ "arm64" ], @@ -2269,9 +2284,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", - "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", "cpu": [ "mips64el" ], @@ -2284,9 +2299,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", - "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", "cpu": [ "ppc64" ], @@ -2299,9 +2314,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", - "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", "cpu": [ "riscv64" ], @@ -2314,9 +2329,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", - "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", "cpu": [ "s390x" ], @@ -2329,9 +2344,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", - "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", "cpu": [ "x64" ], @@ -2344,9 +2359,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", - "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", "cpu": [ "x64" ], @@ -2372,19 +2387,20 @@ } }, "node_modules/esbuild-sass-plugin": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.2.6.tgz", - "integrity": "sha512-WVREJhOS6UlZNoS2FhkOA5980VVKjS6ocUK7YFghJt/94rWDNXxPI+XfkOKlSMbJF/n5wAotr37P8/9KhgkgPQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.3.2.tgz", + "integrity": "sha512-bNIV241S0vpy+F9U9oMbmlAD+GDzKLJp2+Z9rSRP8Rq8Nwmxh9roI0s3iB9d6Eii1A5WYgCK7HZeWPokw2rhSw==", "dev": true, "dependencies": { "esbuild": "^0.14.13", + "resolve": "^1.22.1", "sass": "^1.49.0" } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", - "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", "cpu": [ "x64" ], @@ -2397,9 +2413,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", - "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", "cpu": [ "ia32" ], @@ -2412,9 +2428,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", - "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", "cpu": [ "x64" ], @@ -2427,9 +2443,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", - "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", "cpu": [ "arm64" ], @@ -2538,7 +2554,7 @@ "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -2547,7 +2563,7 @@ "node_modules/expand-tilde": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "integrity": "sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==", "dev": true, "dependencies": { "os-homedir": "^1.0.1" @@ -2572,9 +2588,9 @@ } }, "node_modules/expect-puppeteer": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-6.1.0.tgz", - "integrity": "sha512-5yk64xOe+yTRLeZTg1uuGYmUw5bMsI/YX7Q9tXsovYFBq8bvagJH4XMYLQ7/nU+1dJawLH0KJehuJULD33oU+w==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-6.1.1.tgz", + "integrity": "sha512-cnQF96qdoEcOD63j5NQMc0RtW9WRMW/WHKXEKsuDQ2tszhVH3qC7zkXXS4D0LTt9qCB3DEExioqylsQXvqPrUw==", "dev": true }, "node_modules/extract-zip": { @@ -2638,7 +2654,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "node_modules/fastq": { @@ -2661,7 +2677,7 @@ "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "peer": true, "dependencies": { @@ -2682,7 +2698,7 @@ "node_modules/find-file-up": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", - "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", + "integrity": "sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==", "dev": true, "dependencies": { "fs-exists-sync": "^0.1.0", @@ -2695,7 +2711,7 @@ "node_modules/find-pkg": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", - "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", + "integrity": "sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==", "dev": true, "dependencies": { "find-file-up": "^0.1.2" @@ -2718,15 +2734,6 @@ "find-process": "bin/find-process.js" } }, - "node_modules/find-process/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -2741,9 +2748,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "dev": true, "funding": [ { @@ -2763,7 +2770,7 @@ "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2772,7 +2779,7 @@ "node_modules/for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", "dev": true, "dependencies": { "for-in": "^1.0.1" @@ -2805,7 +2812,7 @@ "node_modules/fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2824,18 +2831,10 @@ "node": ">=12" } }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/fsevents": { @@ -2898,15 +2897,15 @@ } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -2931,7 +2930,7 @@ "node_modules/global-modules": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "integrity": "sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==", "dev": true, "dependencies": { "global-prefix": "^0.1.4", @@ -2944,7 +2943,7 @@ "node_modules/global-prefix": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "integrity": "sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==", "dev": true, "dependencies": { "homedir-polyfill": "^1.0.0", @@ -3129,9 +3128,9 @@ } }, "node_modules/immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", "dev": true }, "node_modules/import-local": { @@ -3156,7 +3155,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" @@ -3165,7 +3164,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", @@ -3187,7 +3186,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "node_modules/is-binary-path": { @@ -3209,9 +3208,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -3223,7 +3222,7 @@ "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3232,7 +3231,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { "node": ">=0.10.0" } @@ -3307,13 +3306,13 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "node_modules/is-windows": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "integrity": "sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3322,13 +3321,13 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3388,9 +3387,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -3547,9 +3546,9 @@ } }, "node_modules/jest-dev-server": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-6.0.3.tgz", - "integrity": "sha512-joKPQQWSaBMsNNdCWvwCQvhD6ox4IH+5H5pecbRRSxiRi2BfVCGGOWQ4/MGwV1NJ9z9XEq1qy5JLYTJlv9RVzA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-6.1.1.tgz", + "integrity": "sha512-z5LnaGDvlIkdMv/rppSO4+rq+GyQKf1xI9oiBxf9/2EBeN2hxRaWiMvaLNDnHPZj2PAhBXsycrKslDDoZO2Xtw==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -3558,7 +3557,7 @@ "prompts": "^2.4.2", "spawnd": "^6.0.2", "tree-kill": "^1.2.2", - "wait-on": "^6.0.0" + "wait-on": "^6.0.1" } }, "node_modules/jest-diff": { @@ -3640,14 +3639,14 @@ } }, "node_modules/jest-environment-puppeteer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-6.0.3.tgz", - "integrity": "sha512-oZE/W8swhDSZpZ+Vm1C2JyoKECsvqcFOlaf3/+G0AtizZfGNkRILdi1U7k9MHLOqGEB5sfFWXG0vpJ8bTNP1dQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-6.1.1.tgz", + "integrity": "sha512-Ces37g8Gdj7QaVxszeoXlvmsZxcEJN9EPUdJt8fGMLA+6ARVFKyVmFgP9xVeGyjTvzsXdtIiJdeOKMLMeD8r2A==", "dev": true, "dependencies": { "chalk": "^4.1.2", "cwd": "^0.10.0", - "jest-dev-server": "^6.0.3", + "jest-dev-server": "^6.1.1", "jest-environment-node": "^27.4.4", "merge-deep": "^3.0.3" } @@ -3794,13 +3793,13 @@ } }, "node_modules/jest-puppeteer": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jest-puppeteer/-/jest-puppeteer-6.1.0.tgz", - "integrity": "sha512-mPNV3pKkGlwyq+7UyuDLjm8Ev4zJmkzH46jCwsOy+vsr0t+TvfPcwtVR4x+NIP2lPgYnjIlSPsnRjgkP9y95mQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/jest-puppeteer/-/jest-puppeteer-6.1.1.tgz", + "integrity": "sha512-cBOszleUpyipDMNYmcmH3x+687x03ZvOVz7W8X5y5TgD+j4MK+BcumwGdE1YwVS21kPLjJUu1pIdEzEDuFEBfA==", "dev": true, "dependencies": { - "expect-puppeteer": "^6.1.0", - "jest-environment-puppeteer": "^6.0.3" + "expect-puppeteer": "^6.1.1", + "jest-environment-puppeteer": "^6.1.1" }, "peerDependencies": { "puppeteer": ">= 1.5.0" @@ -4147,41 +4146,6 @@ } } }, - "node_modules/jsdom/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -4223,18 +4187,10 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -4255,7 +4211,7 @@ "node_modules/lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4273,7 +4229,7 @@ "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "dependencies": { "prelude-ls": "~1.1.2", @@ -4310,14 +4266,9 @@ "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4368,25 +4319,19 @@ "terser": "^5.10.0" } }, - "node_modules/melba-toast/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } + "node_modules/melba-toast/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/melba-toast/node_modules/terser": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.0.tgz", - "integrity": "sha512-sgQ99P+fRBM1jAYzN9RTnD/xEWx/7LZgYTCRgmYriSq1wxxqiQPJgXkkLBBuwySDWJ2PP0PnVQyuf4xLUuH4Ng==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dependencies": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" }, "bin": { @@ -4487,7 +4432,7 @@ "node_modules/mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", "dev": true, "dependencies": { "for-in": "^0.1.3", @@ -4500,7 +4445,7 @@ "node_modules/mixin-object/node_modules/for-in": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4522,7 +4467,7 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node_modules/node-fetch": { @@ -4549,21 +4494,21 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, "peer": true }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, "peer": true }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "peer": true, "dependencies": { @@ -4574,13 +4519,13 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node_modules/node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node_modules/normalize-path": { @@ -4605,15 +4550,15 @@ } }, "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", "dev": true }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" @@ -4654,7 +4599,7 @@ "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4717,7 +4662,7 @@ "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4741,7 +4686,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4773,7 +4718,7 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true, "peer": true }, @@ -4818,16 +4763,16 @@ "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -4866,9 +4811,9 @@ } }, "node_modules/prismjs": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", - "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", "engines": { "node": ">=6" } @@ -4904,9 +4849,9 @@ "peer": true }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "node_modules/pump": { @@ -4924,39 +4869,39 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, "engines": { "node": ">=6" } }, "node_modules/puppeteer": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", - "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.2.0.tgz", + "integrity": "sha512-7Au6iC98rS6WEAD110V4Bxd0iIbqoFtzz9XzkG1BSofidS1VAJ881E1+GFR7Xn2Yea0hbj8n0ErzRyseMp1Ctg==", "dev": true, "hasInstallScript": true, "peer": true, "dependencies": { "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.981744", + "devtools-protocol": "0.0.1019158", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.5.0" + "ws": "8.8.1" }, "engines": { - "node": ">=10.18.1" + "node": ">=14.1.0" } }, "node_modules/puppeteer/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "dev": true, "peer": true, "engines": { @@ -4975,6 +4920,12 @@ } } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5030,19 +4981,25 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5068,7 +5025,7 @@ "node_modules/resolve-dir": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "integrity": "sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==", "dev": true, "dependencies": { "expand-tilde": "^1.2.2", @@ -5143,9 +5100,9 @@ } }, "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -5164,9 +5121,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz", - "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==", + "version": "1.54.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz", + "integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -5204,7 +5161,7 @@ "node_modules/shallow-clone": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "integrity": "sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==", "dev": true, "dependencies": { "is-extendable": "^0.1.1", @@ -5219,7 +5176,7 @@ "node_modules/shallow-clone/node_modules/kind-of": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "integrity": "sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==", "dev": true, "dependencies": { "is-buffer": "^1.0.2" @@ -5231,7 +5188,7 @@ "node_modules/shallow-clone/node_modules/lazy-cache": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "integrity": "sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5318,7 +5275,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/stack-utils": { @@ -5522,9 +5479,9 @@ } }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "dependencies": { "commander": "^2.20.0", @@ -5538,6 +5495,12 @@ "node": ">=6.0.0" } }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -5561,7 +5524,7 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true, "peer": true }, @@ -5574,7 +5537,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" @@ -5592,25 +5555,39 @@ } }, "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" } }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, "dependencies": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/tree-kill": { @@ -5623,9 +5600,9 @@ } }, "node_modules/ts-jest": { - "version": "27.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", - "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -5681,12 +5658,12 @@ } }, "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "dependencies": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -5697,7 +5674,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { @@ -5741,7 +5718,7 @@ "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "dependencies": { "prelude-ls": "~1.1.2" @@ -5781,9 +5758,9 @@ } }, "node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, "peer": true, "bin": { @@ -5806,18 +5783,53 @@ } }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "peer": true }, @@ -5842,9 +5854,9 @@ } }, "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -5900,9 +5912,13 @@ } }, "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } }, "node_modules/whatwg-encoding": { "version": "1.0.5", @@ -5925,13 +5941,17 @@ "dev": true }, "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/which": { @@ -5978,7 +5998,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/write-file-atomic": { @@ -5994,9 +6014,9 @@ } }, "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "engines": { "node": ">=8.3.0" @@ -6071,7 +6091,7 @@ "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "peer": true, "dependencies": { @@ -6101,36 +6121,36 @@ } }, "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", + "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", "dev": true }, "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.13.tgz", + "integrity": "sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.13", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.13", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.13", + "@babel/types": "^7.18.13", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -6139,143 +6159,151 @@ } }, "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", + "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.13", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } } } }, "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true }, "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true }, "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -6312,19 +6340,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "supports-color": { @@ -6339,9 +6367,9 @@ } }, "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -6453,50 +6481,51 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", + "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.13", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.13", + "@babel/types": "^7.18.13", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", + "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -6506,25 +6535,37 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true - }, "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "requires": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } } }, + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "optional": true + }, "@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", "dev": true }, "@hapi/topo": { @@ -6757,28 +6798,45 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" }, "@jridgewell/set-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", - "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -6853,27 +6911,27 @@ "dev": true }, "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true }, "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true }, "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, "@types/babel__core": { @@ -6909,9 +6967,9 @@ } }, "@types/babel__traverse": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", - "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", + "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -6961,9 +7019,9 @@ } }, "@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, "requires": { "jest-matcher-utils": "^27.0.0", @@ -6971,9 +7029,9 @@ } }, "@types/jest-environment-puppeteer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/jest-environment-puppeteer/-/jest-environment-puppeteer-5.0.1.tgz", - "integrity": "sha512-QVf/EQEJihbOjJdmQ9Mq5jDAIba93Rh/32l41HC2O0jOMjT8Syvrr5acBArf6BN+RdkIKtAUkTadIY7j89eD+A==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/jest-environment-puppeteer/-/jest-environment-puppeteer-5.0.2.tgz", + "integrity": "sha512-YCdegQnDou6aIK8wqygDDctHgJZtlXd03fI9Bgbqkdu66EFKnImmt7auiR9OkxkSSiqS9smn0joX2pGpVs7ErA==", "dev": true, "requires": { "@jest/types": ">=24 <=27", @@ -6982,15 +7040,15 @@ } }, "@types/node": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.29.tgz", - "integrity": "sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA==", + "version": "18.7.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz", + "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==", "dev": true }, "@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", + "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", "dev": true }, "@types/puppeteer": { @@ -7041,9 +7099,9 @@ "dev": true }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" }, "acorn-globals": { "version": "6.0.0", @@ -7129,7 +7187,7 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true }, "array-union": { @@ -7140,7 +7198,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "axios": { @@ -7284,16 +7342,15 @@ "dev": true }, "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" } }, "bs-logger": { @@ -7328,7 +7385,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "peer": true }, @@ -7350,9 +7407,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001334", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001334.tgz", - "integrity": "sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==", + "version": "1.0.30001383", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001383.tgz", + "integrity": "sha512-swMpEoTp5vDoGBZsYZX7L7nXHe6dsHxi9o6/LKf/f0LukVtnrxly5GVb/fWdCDTqi/yw6Km6tiJ0pmBacm0gbg==", "dev": true }, "chalk": { @@ -7394,9 +7451,9 @@ "peer": true }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, "cjs-module-lexer": { @@ -7419,7 +7476,7 @@ "clone-deep": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "integrity": "sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==", "dev": true, "requires": { "for-own": "^0.1.3", @@ -7432,7 +7489,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { @@ -7464,14 +7521,15 @@ } }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "convert-source-map": { @@ -7536,7 +7594,7 @@ "cwd": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", + "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", "dev": true, "requires": { "find-pkg": "^0.1.2", @@ -7552,34 +7610,6 @@ "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.0.0" - }, - "dependencies": { - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } } }, "debug": { @@ -7592,15 +7622,15 @@ } }, "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", + "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", "dev": true }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "deep-is": { @@ -7618,7 +7648,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "detect-newline": { @@ -7628,9 +7658,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==", "dev": true, "peer": true }, @@ -7672,9 +7702,9 @@ } }, "electron-to-chromium": { - "version": "1.4.124", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.124.tgz", - "integrity": "sha512-VhaE9VUYU6d2eIb+4xf83CATD+T+3bTzvxvlADkQE+c2hisiw3sZmvEDtsW704+Zky9WZGhBuQXijDVqSriQLA==", + "version": "1.4.230", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.230.tgz", + "integrity": "sha512-3pwjAK0qHSDN9+YAF4fJknsSruP7mpjdWzUSruIJD/JCH77pEh0SorEyb3xVaKkfwk2tzjOt2D8scJ0KAdfXLA==", "dev": true }, "emittery": { @@ -7709,126 +7739,127 @@ } }, "esbuild": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", - "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", - "requires": { - "esbuild-android-64": "0.14.38", - "esbuild-android-arm64": "0.14.38", - "esbuild-darwin-64": "0.14.38", - "esbuild-darwin-arm64": "0.14.38", - "esbuild-freebsd-64": "0.14.38", - "esbuild-freebsd-arm64": "0.14.38", - "esbuild-linux-32": "0.14.38", - "esbuild-linux-64": "0.14.38", - "esbuild-linux-arm": "0.14.38", - "esbuild-linux-arm64": "0.14.38", - "esbuild-linux-mips64le": "0.14.38", - "esbuild-linux-ppc64le": "0.14.38", - "esbuild-linux-riscv64": "0.14.38", - "esbuild-linux-s390x": "0.14.38", - "esbuild-netbsd-64": "0.14.38", - "esbuild-openbsd-64": "0.14.38", - "esbuild-sunos-64": "0.14.38", - "esbuild-windows-32": "0.14.38", - "esbuild-windows-64": "0.14.38", - "esbuild-windows-arm64": "0.14.38" + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" } }, "esbuild-android-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", - "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", "optional": true }, "esbuild-android-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", - "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", - "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", - "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", - "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", - "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", - "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", - "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", - "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", - "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", - "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", - "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", - "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", - "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", - "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", - "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", "optional": true }, "esbuild-plugin-copy": { @@ -7842,37 +7873,38 @@ } }, "esbuild-sass-plugin": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.2.6.tgz", - "integrity": "sha512-WVREJhOS6UlZNoS2FhkOA5980VVKjS6ocUK7YFghJt/94rWDNXxPI+XfkOKlSMbJF/n5wAotr37P8/9KhgkgPQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.3.2.tgz", + "integrity": "sha512-bNIV241S0vpy+F9U9oMbmlAD+GDzKLJp2+Z9rSRP8Rq8Nwmxh9roI0s3iB9d6Eii1A5WYgCK7HZeWPokw2rhSw==", "dev": true, "requires": { "esbuild": "^0.14.13", + "resolve": "^1.22.1", "sass": "^1.49.0" } }, "esbuild-sunos-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", - "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", - "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", - "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.38", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", - "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", "optional": true }, "escalade": { @@ -7938,13 +7970,13 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "expand-tilde": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "integrity": "sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==", "dev": true, "requires": { "os-homedir": "^1.0.1" @@ -7963,9 +7995,9 @@ } }, "expect-puppeteer": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-6.1.0.tgz", - "integrity": "sha512-5yk64xOe+yTRLeZTg1uuGYmUw5bMsI/YX7Q9tXsovYFBq8bvagJH4XMYLQ7/nU+1dJawLH0KJehuJULD33oU+w==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-6.1.1.tgz", + "integrity": "sha512-cnQF96qdoEcOD63j5NQMc0RtW9WRMW/WHKXEKsuDQ2tszhVH3qC7zkXXS4D0LTt9qCB3DEExioqylsQXvqPrUw==", "dev": true }, "extract-zip": { @@ -8014,7 +8046,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fastq": { @@ -8037,7 +8069,7 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "peer": true, "requires": { @@ -8055,7 +8087,7 @@ "find-file-up": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", - "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", + "integrity": "sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==", "dev": true, "requires": { "fs-exists-sync": "^0.1.0", @@ -8065,7 +8097,7 @@ "find-pkg": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", - "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", + "integrity": "sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==", "dev": true, "requires": { "find-file-up": "^0.1.2" @@ -8080,14 +8112,6 @@ "chalk": "^4.0.0", "commander": "^5.1.0", "debug": "^4.1.1" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - } } }, "find-up": { @@ -8101,21 +8125,21 @@ } }, "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "dev": true }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", "dev": true, "requires": { "for-in": "^1.0.1" @@ -8142,7 +8166,7 @@ "fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", "dev": true }, "fs-extra": { @@ -8153,19 +8177,12 @@ "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - } } }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { @@ -8206,15 +8223,15 @@ "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -8230,7 +8247,7 @@ "global-modules": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "integrity": "sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==", "dev": true, "requires": { "global-prefix": "^0.1.4", @@ -8240,7 +8257,7 @@ "global-prefix": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "integrity": "sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==", "dev": true, "requires": { "homedir-polyfill": "^1.0.0", @@ -8371,9 +8388,9 @@ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" }, "immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", "dev": true }, "import-local": { @@ -8389,13 +8406,13 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -8417,7 +8434,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-binary-path": { @@ -8436,9 +8453,9 @@ "dev": true }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { "has": "^1.0.3" @@ -8447,13 +8464,13 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -8504,25 +8521,25 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-windows": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "integrity": "sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==", "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "istanbul-lib-coverage": { @@ -8567,9 +8584,9 @@ } }, "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -8678,9 +8695,9 @@ } }, "jest-dev-server": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-6.0.3.tgz", - "integrity": "sha512-joKPQQWSaBMsNNdCWvwCQvhD6ox4IH+5H5pecbRRSxiRi2BfVCGGOWQ4/MGwV1NJ9z9XEq1qy5JLYTJlv9RVzA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-6.1.1.tgz", + "integrity": "sha512-z5LnaGDvlIkdMv/rppSO4+rq+GyQKf1xI9oiBxf9/2EBeN2hxRaWiMvaLNDnHPZj2PAhBXsycrKslDDoZO2Xtw==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -8689,7 +8706,7 @@ "prompts": "^2.4.2", "spawnd": "^6.0.2", "tree-kill": "^1.2.2", - "wait-on": "^6.0.0" + "wait-on": "^6.0.1" } }, "jest-diff": { @@ -8756,14 +8773,14 @@ } }, "jest-environment-puppeteer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-6.0.3.tgz", - "integrity": "sha512-oZE/W8swhDSZpZ+Vm1C2JyoKECsvqcFOlaf3/+G0AtizZfGNkRILdi1U7k9MHLOqGEB5sfFWXG0vpJ8bTNP1dQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-6.1.1.tgz", + "integrity": "sha512-Ces37g8Gdj7QaVxszeoXlvmsZxcEJN9EPUdJt8fGMLA+6ARVFKyVmFgP9xVeGyjTvzsXdtIiJdeOKMLMeD8r2A==", "dev": true, "requires": { "chalk": "^4.1.2", "cwd": "^0.10.0", - "jest-dev-server": "^6.0.3", + "jest-dev-server": "^6.1.1", "jest-environment-node": "^27.4.4", "merge-deep": "^3.0.3" } @@ -8877,13 +8894,13 @@ "requires": {} }, "jest-puppeteer": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jest-puppeteer/-/jest-puppeteer-6.1.0.tgz", - "integrity": "sha512-mPNV3pKkGlwyq+7UyuDLjm8Ev4zJmkzH46jCwsOy+vsr0t+TvfPcwtVR4x+NIP2lPgYnjIlSPsnRjgkP9y95mQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/jest-puppeteer/-/jest-puppeteer-6.1.1.tgz", + "integrity": "sha512-cBOszleUpyipDMNYmcmH3x+687x03ZvOVz7W8X5y5TgD+j4MK+BcumwGdE1YwVS21kPLjJUu1pIdEzEDuFEBfA==", "dev": true, "requires": { - "expect-puppeteer": "^6.1.0", - "jest-environment-puppeteer": "^6.0.3" + "expect-puppeteer": "^6.1.1", + "jest-environment-puppeteer": "^6.1.1" } }, "jest-regex-util": { @@ -9166,34 +9183,6 @@ "whatwg-url": "^8.5.0", "ws": "^7.4.6", "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } } }, "jsesc": { @@ -9221,19 +9210,12 @@ "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - } } }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -9248,7 +9230,7 @@ "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", "dev": true }, "leven": { @@ -9260,7 +9242,7 @@ "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -9291,14 +9273,9 @@ "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -9340,22 +9317,19 @@ "terser": "^5.10.0" }, "dependencies": { - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "requires": { - "whatwg-url": "^7.0.0" - } + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "terser": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.0.tgz", - "integrity": "sha512-sgQ99P+fRBM1jAYzN9RTnD/xEWx/7LZgYTCRgmYriSq1wxxqiQPJgXkkLBBuwySDWJ2PP0PnVQyuf4xLUuH4Ng==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "requires": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" } } @@ -9431,7 +9405,7 @@ "mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", "dev": true, "requires": { "for-in": "^0.1.3", @@ -9441,7 +9415,7 @@ "for-in": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==", "dev": true } } @@ -9462,7 +9436,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node-fetch": { @@ -9478,21 +9452,21 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, "peer": true }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, "peer": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "peer": true, "requires": { @@ -9505,13 +9479,13 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "normalize-path": { @@ -9530,15 +9504,15 @@ } }, "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -9570,7 +9544,7 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true }, "p-limit": { @@ -9612,7 +9586,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true }, "parse5": { @@ -9630,7 +9604,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { @@ -9653,7 +9627,7 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true, "peer": true }, @@ -9686,13 +9660,13 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true }, "pretty-format": { @@ -9715,9 +9689,9 @@ } }, "prismjs": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", - "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==" + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" }, "progress": { "version": "2.0.3", @@ -9744,9 +9718,9 @@ "peer": true }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "pump": { @@ -9763,39 +9737,45 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "puppeteer": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", - "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.2.0.tgz", + "integrity": "sha512-7Au6iC98rS6WEAD110V4Bxd0iIbqoFtzz9XzkG1BSofidS1VAJ881E1+GFR7Xn2Yea0hbj8n0ErzRyseMp1Ctg==", "dev": true, "peer": true, "requires": { "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.981744", + "devtools-protocol": "0.0.1019158", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.5.0" + "ws": "8.8.1" }, "dependencies": { "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "dev": true, "peer": true, "requires": {} } } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -9831,16 +9811,22 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -9857,7 +9843,7 @@ "resolve-dir": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "integrity": "sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==", "dev": true, "requires": { "expand-tilde": "^1.2.2", @@ -9899,9 +9885,9 @@ } }, "rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", "dev": true, "requires": { "tslib": "^2.1.0" @@ -9920,9 +9906,9 @@ "dev": true }, "sass": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz", - "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==", + "version": "1.54.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz", + "integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -9948,7 +9934,7 @@ "shallow-clone": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "integrity": "sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==", "dev": true, "requires": { "is-extendable": "^0.1.1", @@ -9960,7 +9946,7 @@ "kind-of": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "integrity": "sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==", "dev": true, "requires": { "is-buffer": "^1.0.2" @@ -9969,7 +9955,7 @@ "lazy-cache": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "integrity": "sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==", "dev": true } } @@ -10040,7 +10026,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "stack-utils": { @@ -10187,14 +10173,22 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, "test-exclude": { @@ -10217,7 +10211,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true, "peer": true }, @@ -10230,7 +10224,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-regex-range": { @@ -10242,22 +10236,32 @@ } }, "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } } }, "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, "requires": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" } }, "tree-kill": { @@ -10267,9 +10271,9 @@ "dev": true }, "ts-jest": { - "version": "27.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", - "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, "requires": { "bs-logger": "0.x", @@ -10294,12 +10298,12 @@ } }, "ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "requires": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -10310,7 +10314,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "dependencies": { @@ -10331,7 +10335,7 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -10359,9 +10363,9 @@ } }, "typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, "peer": true }, @@ -10377,15 +10381,34 @@ } }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "peer": true }, @@ -10407,9 +10430,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -10455,9 +10478,10 @@ } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true }, "whatwg-encoding": { "version": "1.0.5", @@ -10480,13 +10504,14 @@ "dev": true }, "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" } }, "which": { @@ -10518,7 +10543,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write-file-atomic": { @@ -10534,9 +10559,9 @@ } }, "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "requires": {} }, @@ -10588,7 +10613,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "peer": true, "requires": { diff --git a/package.json b/package.json index 4c15ef7..1f064af 100644 --- a/package.json +++ b/package.json @@ -15,16 +15,19 @@ "scripts": { "build": "npm run build:esbuild && npm run build:prettier:write && npm run build:examples", "build:esbuild": "node ./esbuild.js", - "build:esbuild:watch": "node ./esbuild.js", - "build:examples:branch": "bash build/examples-branch.sh", + "build:esbuild:watch": "node ./esbuild.js watch", "build:examples": "bash build/examples.sh", + "build:examples:branch": "bash build/examples-branch.sh", "build:prettier:check": "prettier -c .", "build:prettier:write": "prettier -w .", "build:watch": "npm run build:esbuild:watch", "terser": "terser", "test": "npm run test:unit && npm run test:functional", - "test:functional": "jest -c jest.config.functional.ts", - "test:unit": "jest -c jest.config.unit.ts" + "test:functional": "npm run test:functional:chrome && npm run test:functional:firefox", + "test:functional:chrome": "jest -c jest.config.functional.chrome.ts", + "test:functional:firefox": "jest -c jest.config.functional.firefox.ts", + "test:unit": "jest -c jest.config.unit.ts", + "watch": "npm run build:watch" }, "devDependencies": { "@types/expect-puppeteer": "^4.4.7", diff --git a/src/lib/DAV/Collection.ts b/src/lib/DAV/Collection.ts index d71a10d..4800011 100644 --- a/src/lib/DAV/Collection.ts +++ b/src/lib/DAV/Collection.ts @@ -95,6 +95,10 @@ export default class Collection extends EventObject { return; } + if (entry.directory && !destinationFullPath.endsWith('/')) { + destinationFullPath += '/'; + } + const newEntry = new Entry({ directory: entry.directory, fullPath: destinationFullPath, diff --git a/src/lib/DAV/Entry.ts b/src/lib/DAV/Entry.ts index 8174399..148995e 100644 --- a/src/lib/DAV/Entry.ts +++ b/src/lib/DAV/Entry.ts @@ -1,6 +1,6 @@ +import Collection from './Collection'; import EventObject from '../EventObject'; import joinPath from '../joinPath'; -import Collection from './Collection'; type EntryArgs = { directory?: boolean; @@ -16,22 +16,22 @@ type EntryArgs = { }; export default class Entry extends EventObject { - #del; - #directory; - #displaySize; - #extension; - #fullPath; - #mimeType; - #modified; - #name; - #path; - #placeholder; - #rename; - #size; - #title; - #type; - - collection; + #del: boolean; + #directory: boolean; + #displaySize: string; + #extension: string; + #fullPath: string; + #mimeType: string; + #modified: Date; + #name: string; + #path: string; + #placeholder: boolean; + #rename: boolean; + #size: number; + #title: string; + #type: string; + + collection: Collection | null; constructor({ directory = false, @@ -47,9 +47,12 @@ export default class Entry extends EventObject { }: EntryArgs) { super(); + const [path, name] = this.getFilename(fullPath); + + this.#path = path; + this.#name = name; this.#directory = directory; this.#fullPath = fullPath; - [this.#path, this.#name] = this.getFilename(); this.#title = title; this.#modified = modified; this.#size = size; @@ -60,7 +63,7 @@ export default class Entry extends EventObject { this.collection = collection; } - createParentEntry() { + createParentEntry(): Entry { return this.update({ fullPath: this.path, title: '←', @@ -69,14 +72,14 @@ export default class Entry extends EventObject { }); } - getFilename(path = this.#fullPath) { - path = joinPath(path).split(/\//); - const file = path.pop(); + getFilename(path: string): [string, string] { + const pathParts = joinPath(path).split(/\//), + file = pathParts.pop(); - return [joinPath(...path), file]; + return [joinPath(...pathParts), file]; } - update(properties: EntryArgs = {}) { + update(properties: EntryArgs = {}): Entry { return new Entry({ ...{ directory: this.directory, @@ -92,35 +95,40 @@ export default class Entry extends EventObject { }); } - get del() { + get del(): boolean { return this.#del; } - get directory() { + get directory(): boolean { return this.#directory; } - get displaySize() { + get displaySize(): string { if (this.directory) { return ''; } if (!this.#displaySize) { this.#displaySize = ['bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'].reduce( - (size, label) => - typeof size === 'string' - ? size - : size < 1024 - ? `${size.toFixed(2 * (label === 'bytes' ? 0 : 1))} ${label}` - : size / 1024, + (size: string | number, label) => { + if (typeof size === 'string') { + return size; + } + + if (size < 1024) { + return `${size.toFixed(2 * (label === 'bytes' ? 0 : 1))} ${label}`; + } + + return size / 1024; + }, this.#size - ); + ) as string; } return this.#displaySize; } - get extension() { + get extension(): string { if (this.directory) { return ''; } @@ -132,45 +140,45 @@ export default class Entry extends EventObject { return this.#extension; } - get fullPath() { + get fullPath(): string { return this.#fullPath; } - get mimeType() { + get mimeType(): string { return this.#mimeType; } - get modified() { + get modified(): Date { return this.#modified; } - get name() { + get name(): string { return this.#name; } - get path() { + get path(): string { return this.#path; } - get placeholder() { + get placeholder(): boolean { return this.#placeholder; } - set placeholder(value) { + set placeholder(value: boolean) { this.#placeholder = value; this.trigger('entry:update', this); } - get rename() { + get rename(): boolean { return this.#rename; } - get size() { + get size(): number { return this.#size; } - get title() { + get title(): string { if (!this.#title) { this.#title = decodeURIComponent(this.#name); } @@ -178,7 +186,7 @@ export default class Entry extends EventObject { return this.#title; } - get type() { + get type(): string { if (!this.#type) { let type; diff --git a/src/lib/DAV/Response.ts b/src/lib/DAV/Response.ts index 5c23ba1..923fd02 100644 --- a/src/lib/DAV/Response.ts +++ b/src/lib/DAV/Response.ts @@ -5,15 +5,15 @@ export default class Response { #document; #parser; - #getTag = (doc, tag) => doc.querySelector(tag); + #getTag = (doc: Element, tag: string) => doc.getElementsByTagName(tag)[0]; - #getTagContent = (doc, tag) => { + #getTagContent = (doc: Element, tag) => { const node = this.#getTag(doc, tag); return node ? node.textContent : ''; }; - constructor(rawDocument, parser = new DOMParser()) { + constructor(rawDocument: string, parser: DOMParser = new DOMParser()) { this.#parser = parser; this.#document = parser.parseFromString(rawDocument, 'application/xml'); } @@ -21,7 +21,9 @@ export default class Response { collection({ sortDirectoriesFirst = false } = {}) { if (!this.#collection) { this.#collection = new Collection( - this.responseToPrimitives(this.#document.querySelectorAll('response')), + this.responseToPrimitives( + this.#document.getElementsByTagName('D:response') + ), { sortDirectoriesFirst, } @@ -31,13 +33,15 @@ export default class Response { return this.#collection; } - responseToPrimitives(responses) { + responseToPrimitives(responses: HTMLCollection) { return Array.from(responses).map((response) => ({ - directory: !!this.#getTag(response, 'collection'), - fullPath: this.#getTagContent(response, 'href'), - modified: Date.parse(this.#getTagContent(response, 'getlastmodified')), - size: parseInt(this.#getTagContent(response, 'getcontentlength'), 10), - mimeType: this.#getTagContent(response, 'getcontenttype'), + directory: !!this.#getTag(response, 'D:collection'), + fullPath: this.#getTagContent(response, 'D:href'), + modified: Date.parse( + this.#getTagContent(response, 'lp1:getlastmodified') + ), + size: parseInt(this.#getTagContent(response, 'lp1:getcontentlength'), 10), + mimeType: this.#getTagContent(response, 'D:getcontenttype'), })); } } diff --git a/src/lib/UI/NativeDOM.ts b/src/lib/UI/NativeDOM.ts index b61e2b5..d050210 100644 --- a/src/lib/UI/NativeDOM.ts +++ b/src/lib/UI/NativeDOM.ts @@ -114,11 +114,14 @@ export default class NativeDOM extends UI { }`, '' ); - if (entry.path === destinationPath) { + + if (entry.path === destinationPath || entry.directory) { return new Melba({ content: `'${ entry.title - }' successfully renamed to '${decodeURIComponent(destinationFile)}'.`, + }' successfully renamed to '${decodeURIComponent( + destinationFile || destinationPath + )}'.`, type: 'success', hide: 5, }); diff --git a/src/lib/UI/NativeDOM/List.ts b/src/lib/UI/NativeDOM/List.ts index 9c65a65..259de55 100644 --- a/src/lib/UI/NativeDOM/List.ts +++ b/src/lib/UI/NativeDOM/List.ts @@ -30,8 +30,7 @@ export default class List extends Element { }); const arrowHandler = (event) => { - if (![38, 40].includes(event.which)) { - // if (! ['ArrowUp', 'ArrowDown'].includes(event.key)) { + if (!['ArrowUp', 'ArrowDown'].includes(event.key)) { return; } @@ -45,11 +44,10 @@ export default class List extends Element { ? current.nextSibling : this.element.querySelector('li:first-child'), previous = current ? current.previousSibling : null; - if (event.which === 38 && previous) { - // if (event.key === 'ArrowUp' && previous) { + + if (event.key === 'ArrowUp' && previous) { previous.focus(); - } else if (event.which === 40 && next) { - // else if (event.key === 'ArrowDown' && next) { + } else if (event.key === 'ArrowDown' && next) { next.focus(); } }; diff --git a/src/lib/UI/NativeDOM/List/Item.ts b/src/lib/UI/NativeDOM/List/Item.ts index 393f766..7f18253 100644 --- a/src/lib/UI/NativeDOM/List/Item.ts +++ b/src/lib/UI/NativeDOM/List/Item.ts @@ -41,7 +41,7 @@ export default class Item extends Element { }); constructor(entry, base64Encoder = btoa) { - super(`
  • + super(`
  • ${entry.title} ${entry.displaySize} @@ -117,22 +117,14 @@ export default class Item extends Element { }); element.addEventListener('keydown', (event) => { - if ([113, 46, 13].includes(event.which)) { - // if (['F2', 'Delete', 'Enter'].includes(event.key)) { + if (['F2', 'Delete', 'Enter'].includes(event.key)) { event.preventDefault(); - if (event.which === 113) { - // if (event.key === 'F2') { - if (this.#entry.rename) { - this.rename(); - } - } else if (event.which === 46) { - // else if (event.key === 'Delete') { - if (this.#entry.del) { - this.del(); - } - } else if (event.which === 13 && !this.#entry.directory) { - // else if (event.key === 'Enter' && ! this.#entry.directory) { + if (event.key === 'F2' && this.#entry.rename) { + this.rename(); + } else if (event.key === 'Delete' && this.#entry.del) { + this.del(); + } else if (event.key === 'Enter' && !this.#entry.directory) { if (event.shiftKey) { return this.download(); } @@ -182,15 +174,14 @@ export default class Item extends Element { this.loading(); if (entry.directory) { - return this.trigger('go', entry.fullPath, { - failure: () => this.loading(false), - }); + return this.trigger('go', entry.fullPath, false, () => + this.loading(false) + ); } const launchLightbox = (lightboxContent, onShow = null) => { const escapeListener = (event) => { - if (event.which === 27) { - // if (event.key === 'Escape') { + if (event.key === 'Escape') { lightbox.close(); } }, @@ -289,14 +280,12 @@ export default class Item extends Element { save(); }, keyDownListener = (event) => { - if (event.which === 13) { - // if (event.key === 'Enter') { + if (event.key === 'Enter') { event.stopPropagation(); event.preventDefault(); save(); - } else if (event.which === 27) { - // else if (event.key === 'Escape') { + } else if (event.key === 'Escape') { revert(); } }, diff --git a/src/lib/UI/UI.ts b/src/lib/UI/UI.ts index c7dd16b..7cf74fd 100644 --- a/src/lib/UI/UI.ts +++ b/src/lib/UI/UI.ts @@ -38,7 +38,7 @@ export default class UI extends EventObject { }; } - get dav() { + get dav(): DAV { return this.#dav; } diff --git a/src/lib/joinPath.ts b/src/lib/joinPath.ts index 639a527..a22da51 100644 --- a/src/lib/joinPath.ts +++ b/src/lib/joinPath.ts @@ -1,10 +1,9 @@ -export const trimSlashes = (piece) => piece.replace(/^\/+|\/+$/g, ''); +export const trimSlashes = (piece: string) => piece.replace(/^\/+|\/+$/g, ''); -export const joinPath = (...pieces) => { - return `/${pieces +export const joinPath = (...pieces: string[]) => + `/${pieces .map(trimSlashes) .filter((piece) => piece) .join('/')}`; -}; export default joinPath; diff --git a/src/webdav-min.js b/src/webdav-min.js index 47547e4..03a08bb 100644 --- a/src/webdav-min.js +++ b/src/webdav-min.js @@ -1,10 +1,10 @@ -(()=>{var Gt=Object.create;var dt=Object.defineProperty,Wt=Object.defineProperties,Vt=Object.getOwnPropertyDescriptor,Zt=Object.getOwnPropertyDescriptors,Xt=Object.getOwnPropertyNames,xt=Object.getOwnPropertySymbols,Yt=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty,Kt=Object.prototype.propertyIsEnumerable;var At=(r,t,e)=>t in r?dt(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,N=(r,t)=>{for(var e in t||(t={}))Ft.call(t,e)&&At(r,e,t[e]);if(xt)for(var e of xt(t))Kt.call(t,e)&&At(r,e,t[e]);return r},tt=(r,t)=>Wt(r,Zt(t));var ve=(r=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(r,{get:(t,e)=>(typeof require!="undefined"?require:t)[e]}):r)(function(r){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var ft=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var Jt=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Xt(t))!Ft.call(r,n)&&n!==e&&dt(r,n,{get:()=>t[n],enumerable:!(i=Vt(t,n))||i.enumerable});return r};var pt=(r,t,e)=>(e=r!=null?Gt(Yt(r)):{},Jt(t||!r||!r.__esModule?dt(e,"default",{value:r,enumerable:!0}):e,r));var Lt=(r,t,e)=>{if(!t.has(r))throw TypeError("Cannot "+e)};var u=(r,t,e)=>(Lt(r,t,"read from private field"),e?e.call(r):t.get(r)),b=(r,t,e)=>{if(t.has(r))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(r):t.set(r,e)},E=(r,t,e,i)=>(Lt(r,t,"write to private field"),i?i.call(r,e):t.set(r,e),e),gt=(r,t,e,i)=>({set _(n){E(r,t,n,e)},get _(){return u(r,t,i)}});var $=(r,t,e)=>new Promise((i,n)=>{var s=p=>{try{f(e.next(p))}catch(x){n(x)}},l=p=>{try{f(e.throw(p))}catch(x){n(x)}},f=p=>p.done?i(p.value):Promise.resolve(p.value).then(s,l);f((e=e.apply(r,t)).next())});var _t=ft((Dt,bt)=>{(function(r){typeof Dt=="object"&&typeof bt<"u"?bt.exports=r():typeof define=="function"&&define.amd?define([],r):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).basicLightbox=r()})(function(){return function r(t,e,i){function n(f,p){if(!e[f]){if(!t[f]){var x=typeof ve=="function"&&ve;if(!p&&x)return x(f,!0);if(s)return s(f,!0);var L=new Error("Cannot find module '"+f+"'");throw L.code="MODULE_NOT_FOUND",L}var v=e[f]={exports:{}};t[f][0].call(v.exports,function(A){return n(t[f][1][A]||A)},v,v.exports,r,t,e,i)}return e[f].exports}for(var s=typeof ve=="function"&&ve,l=0;l1&&arguments[1]!==void 0&&arguments[1],p=document.createElement("div");return p.innerHTML=l.trim(),f===!0?p.children:p.firstChild},n=function(l,f){var p=l.children;return p.length===1&&p[0].tagName===f},s=function(l){return(l=l||document.querySelector(".basicLightbox"))!=null&&l.ownerDocument.body.contains(l)===!0};e.visible=s,e.create=function(l,f){var p=function(v,A){var w=i(` +(()=>{var Nt=Object.create;var dt=Object.defineProperty,Gt=Object.defineProperties,Wt=Object.getOwnPropertyDescriptor,Vt=Object.getOwnPropertyDescriptors,Zt=Object.getOwnPropertyNames,Et=Object.getOwnPropertySymbols,Xt=Object.getPrototypeOf,At=Object.prototype.hasOwnProperty,Yt=Object.prototype.propertyIsEnumerable;var xt=(r,t,e)=>t in r?dt(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,N=(r,t)=>{for(var e in t||(t={}))At.call(t,e)&&xt(r,e,t[e]);if(Et)for(var e of Et(t))Yt.call(t,e)&&xt(r,e,t[e]);return r},tt=(r,t)=>Gt(r,Vt(t));var ye=(r=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(r,{get:(t,e)=>(typeof require!="undefined"?require:t)[e]}):r)(function(r){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var ft=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var Kt=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Zt(t))!At.call(r,i)&&i!==e&&dt(r,i,{get:()=>t[i],enumerable:!(n=Wt(t,i))||n.enumerable});return r};var pt=(r,t,e)=>(e=r!=null?Nt(Xt(r)):{},Kt(t||!r||!r.__esModule?dt(e,"default",{value:r,enumerable:!0}):e,r));var Ft=(r,t,e)=>{if(!t.has(r))throw TypeError("Cannot "+e)};var u=(r,t,e)=>(Ft(r,t,"read from private field"),e?e.call(r):t.get(r)),b=(r,t,e)=>{if(t.has(r))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(r):t.set(r,e)},E=(r,t,e,n)=>(Ft(r,t,"write to private field"),n?n.call(r,e):t.set(r,e),e);var $=(r,t,e)=>new Promise((n,i)=>{var s=p=>{try{f(e.next(p))}catch(x){i(x)}},l=p=>{try{f(e.throw(p))}catch(x){i(x)}},f=p=>p.done?n(p.value):Promise.resolve(p.value).then(s,l);f((e=e.apply(r,t)).next())});var St=ft((Dt,vt)=>{(function(r){typeof Dt=="object"&&typeof vt<"u"?vt.exports=r():typeof define=="function"&&define.amd?define([],r):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).basicLightbox=r()})(function(){return function r(t,e,n){function i(f,p){if(!e[f]){if(!t[f]){var x=typeof ye=="function"&&ye;if(!p&&x)return x(f,!0);if(s)return s(f,!0);var L=new Error("Cannot find module '"+f+"'");throw L.code="MODULE_NOT_FOUND",L}var v=e[f]={exports:{}};t[f][0].call(v.exports,function(A){return i(t[f][1][A]||A)},v,v.exports,r,t,e,n)}return e[f].exports}for(var s=typeof ye=="function"&&ye,l=0;l1&&arguments[1]!==void 0&&arguments[1],p=document.createElement("div");return p.innerHTML=l.trim(),f===!0?p.children:p.firstChild},i=function(l,f){var p=l.children;return p.length===1&&p[0].tagName===f},s=function(l){return(l=l||document.querySelector(".basicLightbox"))!=null&&l.ownerDocument.body.contains(l)===!0};e.visible=s,e.create=function(l,f){var p=function(v,A){var w=n(`
    - `)),P=w.querySelector(".basicLightbox__placeholder");v.forEach(function(d){return P.appendChild(d)});var o=n(P,"IMG"),a=n(P,"VIDEO"),c=n(P,"IFRAME");return o===!0&&w.classList.add("basicLightbox--img"),a===!0&&w.classList.add("basicLightbox--video"),c===!0&&w.classList.add("basicLightbox--iframe"),w}(l=function(v){var A=typeof v=="string",w=v instanceof HTMLElement==1;if(A===!1&&w===!1)throw new Error("Content must be a DOM element/node or string");return A===!0?Array.from(i(v,!0)):v.tagName==="TEMPLATE"?[v.content.cloneNode(!0)]:Array.from(v.children)}(l),f=function(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if((v=Object.assign({},v)).closable==null&&(v.closable=!0),v.className==null&&(v.className=""),v.onShow==null&&(v.onShow=function(){}),v.onClose==null&&(v.onClose=function(){}),typeof v.closable!="boolean")throw new Error("Property `closable` must be a boolean");if(typeof v.className!="string")throw new Error("Property `className` must be a string");if(typeof v.onShow!="function")throw new Error("Property `onShow` must be a function");if(typeof v.onClose!="function")throw new Error("Property `onClose` must be a function");return v}(f)),x=function(v){return f.onClose(L)!==!1&&function(A,w){return A.classList.remove("basicLightbox--visible"),setTimeout(function(){return s(A)===!1||A.parentElement.removeChild(A),w()},410),!0}(p,function(){if(typeof v=="function")return v(L)})};f.closable===!0&&p.addEventListener("click",function(v){v.target===p&&x()});var L={element:function(){return p},visible:function(){return s(p)},show:function(v){return f.onShow(L)!==!1&&function(A,w){return document.body.appendChild(A),setTimeout(function(){requestAnimationFrame(function(){return A.classList.add("basicLightbox--visible"),w()})},10),!0}(p,function(){if(typeof v=="function")return v(L)})},close:x};return L}},{}]},{},[1])(1)})});var Ot=ft((Pr,rt)=>{var lr=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var g=function(r){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,e=0,i={},n={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function o(a){return a instanceof s?new s(a.type,o(a.content),a.alias):Array.isArray(a)?a.map(o):a.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document&&1<2)return document.currentScript;try{throw new Error}catch(d){var o=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(d.stack)||[])[1];if(o){var a=document.getElementsByTagName("script");for(var c in a)if(a[c].src==o)return a[c]}return null}},isActive:function(o,a,c){for(var d="no-"+a;o;){var h=o.classList;if(h.contains(a))return!0;if(h.contains(d))return!1;o=o.parentElement}return!!c}},languages:{plain:i,plaintext:i,text:i,txt:i,extend:function(o,a){var c=n.util.clone(n.languages[o]);for(var d in a)c[d]=a[d];return c},insertBefore:function(o,a,c,d){d=d||n.languages;var h=d[o],y={};for(var F in h)if(h.hasOwnProperty(F)){if(F==a)for(var m in c)c.hasOwnProperty(m)&&(y[m]=c[m]);c.hasOwnProperty(F)||(y[F]=h[F])}var T=d[o];return d[o]=y,n.languages.DFS(n.languages,function(k,z){z===T&&k!=o&&(this[k]=y)}),y},DFS:function o(a,c,d,h){h=h||{};var y=n.util.objId;for(var F in a)if(a.hasOwnProperty(F)){c.call(a,F,a[F],d||F);var m=a[F],T=n.util.type(m);T==="Object"&&!h[y(m)]?(h[y(m)]=!0,o(m,c,null,h)):T==="Array"&&!h[y(m)]&&(h[y(m)]=!0,o(m,c,F,h))}}},plugins:{},highlightAll:function(o,a){n.highlightAllUnder(document,o,a)},highlightAllUnder:function(o,a,c){var d={callback:c,container:o,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};n.hooks.run("before-highlightall",d),d.elements=Array.prototype.slice.apply(d.container.querySelectorAll(d.selector)),n.hooks.run("before-all-elements-highlight",d);for(var h=0,y;y=d.elements[h++];)n.highlightElement(y,a===!0,d.callback)},highlightElement:function(o,a,c){var d=n.util.getLanguage(o),h=n.languages[d];n.util.setLanguage(o,d);var y=o.parentElement;y&&y.nodeName.toLowerCase()==="pre"&&n.util.setLanguage(y,d);var F=o.textContent,m={element:o,language:d,grammar:h,code:F};function T(z){m.highlightedCode=z,n.hooks.run("before-insert",m),m.element.innerHTML=m.highlightedCode,n.hooks.run("after-highlight",m),n.hooks.run("complete",m),c&&c.call(m.element)}if(n.hooks.run("before-sanity-check",m),y=m.element.parentElement,y&&y.nodeName.toLowerCase()==="pre"&&!y.hasAttribute("tabindex")&&y.setAttribute("tabindex","0"),!m.code){n.hooks.run("complete",m),c&&c.call(m.element);return}if(n.hooks.run("before-highlight",m),!m.grammar){T(n.util.encode(m.code));return}if(a&&r.Worker){var k=new Worker(n.filename);k.onmessage=function(z){T(z.data)},k.postMessage(JSON.stringify({language:m.language,code:m.code,immediateClose:!0}))}else T(n.highlight(m.code,m.grammar,m.language))},highlight:function(o,a,c){var d={code:o,grammar:a,language:c};if(n.hooks.run("before-tokenize",d),!d.grammar)throw new Error('The language "'+d.language+'" has no grammar.');return d.tokens=n.tokenize(d.code,d.grammar),n.hooks.run("after-tokenize",d),s.stringify(n.util.encode(d.tokens),d.language)},tokenize:function(o,a){var c=a.rest;if(c){for(var d in c)a[d]=c[d];delete a.rest}var h=new p;return x(h,h.head,o),f(o,h,a,h.head,0),v(h)},hooks:{all:{},add:function(o,a){var c=n.hooks.all;c[o]=c[o]||[],c[o].push(a)},run:function(o,a){var c=n.hooks.all[o];if(!(!c||!c.length))for(var d=0,h;h=c[d++];)h(a)}},Token:s};r.Prism=n;function s(o,a,c,d){this.type=o,this.content=a,this.alias=c,this.length=(d||"").length|0}s.stringify=function o(a,c){if(typeof a=="string")return a;if(Array.isArray(a)){var d="";return a.forEach(function(T){d+=o(T,c)}),d}var h={type:a.type,content:o(a.content,c),tag:"span",classes:["token",a.type],attributes:{},language:c},y=a.alias;y&&(Array.isArray(y)?Array.prototype.push.apply(h.classes,y):h.classes.push(y)),n.hooks.run("wrap",h);var F="";for(var m in h.attributes)F+=" "+m+'="'+(h.attributes[m]||"").replace(/"/g,""")+'"';return"<"+h.tag+' class="'+h.classes.join(" ")+'"'+F+">"+h.content+""};function l(o,a,c,d){o.lastIndex=a;var h=o.exec(c);if(h&&d&&h[1]){var y=h[1].length;h.index+=y,h[0]=h[0].slice(y)}return h}function f(o,a,c,d,h,y){for(var F in c)if(!(!c.hasOwnProperty(F)||!c[F])){var m=c[F];m=Array.isArray(m)?m:[m];for(var T=0;T=y.reach);I+=S.value.length,S=S.next){var V=S.value;if(a.length>o.length)return;if(!(V instanceof s)){var Ke=1,M;if(Xe){if(M=l(me,I,o,ge),!M||M.index>=o.length)break;var Je=M.index,Ht=M.index+M[0].length,Z=I;for(Z+=S.value.length;Je>=Z;)S=S.next,Z+=S.value.length;if(Z-=S.value.length,I=Z,S.value instanceof s)continue;for(var ye=S;ye!==a.tail&&(Zy.reach&&(y.reach=ct);var et=S.prev;ut&&(et=x(a,et,ut),I+=ut.length),L(a,et,Ke);var Nt=new s(F,z?n.tokenize(Qe,z):Qe,Ye,Qe);if(S=x(a,et,Nt),Et&&x(a,S,Et),Ke>1){var ht={cause:F+","+T,reach:ct};f(o,a,c,S.prev,I,ht),y&&ht.reach>y.reach&&(y.reach=ht.reach)}}}}}}function p(){var o={value:null,prev:null,next:null},a={value:null,prev:o,next:null};o.next=a,this.head=o,this.tail=a,this.length=0}function x(o,a,c){var d=a.next,h={value:c,prev:a,next:d};return a.next=h,d.prev=h,o.length++,h}function L(o,a,c){for(var d=a.next,h=0;h/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};g.languages.markup.tag.inside["attr-value"].inside.entity=g.languages.markup.entity;g.languages.markup.doctype.inside["internal-subset"].inside=g.languages.markup;g.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&/,"&"))});Object.defineProperty(g.languages.markup.tag,"addInlined",{value:function(t,e){var i={};i["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:g.languages[e]},i.cdata=/^$/i;var n={"included-cdata":{pattern://i,inside:i}};n["language-"+e]={pattern:/[\s\S]+/,inside:g.languages[e]};var s={};s[t]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return t}),"i"),lookbehind:!0,greedy:!0,inside:n},g.languages.insertBefore("markup","cdata",s)}});Object.defineProperty(g.languages.markup.tag,"addAttribute",{value:function(r,t){g.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:g.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});g.languages.html=g.languages.markup;g.languages.mathml=g.languages.markup;g.languages.svg=g.languages.markup;g.languages.xml=g.languages.extend("markup",{});g.languages.ssml=g.languages.xml;g.languages.atom=g.languages.xml;g.languages.rss=g.languages.xml;(function(r){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var e=r.languages.markup;e&&(e.tag.addInlined("style","css"),e.tag.addAttribute("style","css"))})(g);g.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};g.languages.javascript=g.languages.extend("clike",{"class-name":[g.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});g.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;g.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:g.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:g.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:g.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:g.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:g.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});g.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:g.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});g.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});g.languages.markup&&(g.languages.markup.tag.addInlined("script","javascript"),g.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));g.languages.js=g.languages.javascript;(function(){if(typeof g>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var r="Loading\u2026",t=function(A,w){return"\u2716 Error "+A+" while fetching file: "+w},e="\u2716 Error: File does not exist or is empty",i={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},n="data-src-status",s="loading",l="loaded",f="failed",p="pre[data-src]:not(["+n+'="'+l+'"]):not(['+n+'="'+s+'"])';function x(A,w,P){var o=new XMLHttpRequest;o.open("GET",A,!0),o.onreadystatechange=function(){o.readyState==4&&(o.status<400&&o.responseText?w(o.responseText):o.status>=400?P(t(o.status,o.statusText)):P(e))},o.send(null)}function L(A){var w=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(A||"");if(w){var P=Number(w[1]),o=w[2],a=w[3];return o?a?[P,Number(a)]:[P,void 0]:[P,P]}}g.hooks.add("before-highlightall",function(A){A.selector+=", "+p}),g.hooks.add("before-sanity-check",function(A){var w=A.element;if(w.matches(p)){A.code="",w.setAttribute(n,s);var P=w.appendChild(document.createElement("CODE"));P.textContent=r;var o=w.getAttribute("data-src"),a=A.language;if(a==="none"){var c=(/\.(\w+)$/.exec(o)||[,"none"])[1];a=i[c]||c}g.util.setLanguage(P,a),g.util.setLanguage(w,a);var d=g.plugins.autoloader;d&&d.loadLanguages(a),x(o,function(h){w.setAttribute(n,l);var y=L(w.getAttribute("data-range"));if(y){var F=h.split(/\r\n?|\n/g),m=y[0],T=y[1]==null?F.length:y[1];m<0&&(m+=F.length),m=Math.max(0,Math.min(m-1,F.length)),T<0&&(T+=F.length),T=Math.max(0,Math.min(T,F.length)),h=F.slice(m,T).join(` -`),w.hasAttribute("data-start")||w.setAttribute("data-start",String(m+1))}P.textContent=h,g.highlightElement(P)},function(h){w.setAttribute(n,f),P.textContent=h})}}),g.plugins.fileHighlight={highlight:function(w){for(var P=(w||document).querySelectorAll(p),o=0,a;a=P[o++];)g.highlightElement(a)}};var v=!1;g.fileHighlight=function(){v||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),v=!0),g.plugins.fileHighlight.highlight.apply(this,arguments)}})()});var Ut=ft(G=>{"use strict";var nt=G&&G.__assign||function(){return nt=Object.assign||function(r){for(var t,e=1,i=arguments.length;e0&&e.hide()}),this.element.classList.remove(this.toastShowClass),this.element.classList.add(this.toastHideClass),this.trigger("hide"),this.animation){var i=function(){return e.remove()},n=function(){l||(e.element.addEventListener("transitionend",function(){return i()}),l=!0)},s=function(){e.show(),e.element.removeEventListener("transitionstart",function(){return n()}),e.element.removeEventListener("transitionend",function(){return i()}),e.element.removeEventListener("mouseover",function(){return s()}),e.element.addEventListener("mouseout",function(){return e.hide()})},l=!1;this.element.addEventListener("mouseover",function(){return s()}),this.element.addEventListener("transitionstart",function(){return n()});return}this.remove()}},r.prototype.remove=function(){this.element.parentNode===this.container&&(this.container.removeChild(this.element),this.trigger("remove"))},r.prototype.buildClose=function(t){var e=this,i=document.createElement("button");return i.setAttribute("title",t),i.appendChild(document.createTextNode(t)),i.addEventListener("click",function(){return e.hide()}),i},r.prototype.getContainer=function(t){var e=t.containerClass,i=t.containerElement,n=t.root,s=n.querySelector("".concat(i,".").concat(e));if(s)return s;var l=document.createElement(i);return l.classList.add(e),n.appendChild(l),l},r.prototype.on=function(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e)},r.prototype.off=function(t,e){if(e===void 0&&(e=null),!e){this.events[t]=[];return}var i=this.events[t].indexOf(e);i===-1&&this.events[t].splice(i,1)},r.prototype.trigger=function(t){for(var e=this,i=[],n=1;n-1});var Pt,$t;function be(r){if(typeof r!="string"&&(r=String(r)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(r)||r==="")throw new TypeError('Invalid character in header field name: "'+r+'"');return r.toLowerCase()}function yt(r){return typeof r!="string"&&(r=String(r)),r}function vt(r){var t={next:function(){var e=r.shift();return{done:e===void 0,value:e}}};return B.iterable&&(t[Symbol.iterator]=function(){return t}),t}function C(r){this.map={},r instanceof C?r.forEach(function(t,e){this.append(e,t)},this):Array.isArray(r)?r.forEach(function(t){this.append(t[0],t[1])},this):r&&Object.getOwnPropertyNames(r).forEach(function(t){this.append(t,r[t])},this)}C.prototype.append=function(r,t){r=be(r),t=yt(t);var e=this.map[r];this.map[r]=e?e+", "+t:t};C.prototype.delete=function(r){delete this.map[be(r)]};C.prototype.get=function(r){return r=be(r),this.has(r)?this.map[r]:null};C.prototype.has=function(r){return this.map.hasOwnProperty(be(r))};C.prototype.set=function(r,t){this.map[be(r)]=yt(t)};C.prototype.forEach=function(r,t){for(var e in this.map)this.map.hasOwnProperty(e)&&r.call(t,this.map[e],e,this)};C.prototype.keys=function(){var r=[];return this.forEach(function(t,e){r.push(e)}),vt(r)};C.prototype.values=function(){var r=[];return this.forEach(function(t){r.push(t)}),vt(r)};C.prototype.entries=function(){var r=[];return this.forEach(function(t,e){r.push([e,t])}),vt(r)};B.iterable&&(C.prototype[Symbol.iterator]=C.prototype.entries);function mt(r){if(r.bodyUsed)return Promise.reject(new TypeError("Already read"));r.bodyUsed=!0}function kt(r){return new Promise(function(t,e){r.onload=function(){t(r.result)},r.onerror=function(){e(r.error)}})}function er(r){var t=new FileReader,e=kt(t);return t.readAsArrayBuffer(r),e}function tr(r){var t=new FileReader,e=kt(t);return t.readAsText(r),e}function rr(r){for(var t=new Uint8Array(r),e=new Array(t.length),i=0;i-1?t:r}function ee(r,t){if(!(this instanceof ee))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t=t||{};var e=t.body;if(r instanceof ee){if(r.bodyUsed)throw new TypeError("Already read");this.url=r.url,this.credentials=r.credentials,t.headers||(this.headers=new C(r.headers)),this.method=r.method,this.mode=r.mode,this.signal=r.signal,!e&&r._bodyInit!=null&&(e=r._bodyInit,r.bodyUsed=!0)}else this.url=String(r);if(this.credentials=t.credentials||this.credentials||"same-origin",(t.headers||!this.headers)&&(this.headers=new C(t.headers)),this.method=nr(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&e)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(e),(this.method==="GET"||this.method==="HEAD")&&(t.cache==="no-store"||t.cache==="no-cache")){var i=/([?&])_=[^&]*/;if(i.test(this.url))this.url=this.url.replace(i,"$1_="+new Date().getTime());else{var n=/\?/;this.url+=(n.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}ee.prototype.clone=function(){return new ee(this,{body:this._bodyInit})};function sr(r){var t=new FormData;return r.trim().split("&").forEach(function(e){if(e){var i=e.split("="),n=i.shift().replace(/\+/g," "),s=i.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(s))}}),t}function ar(r){var t=new C,e=r.replace(/\r?\n[\t ]+/g," ");return e.split("\r").map(function(i){return i.indexOf(` -`)===0?i.substr(1,i.length):i}).forEach(function(i){var n=i.split(":"),s=n.shift().trim();if(s){var l=n.join(":").trim();t.append(s,l)}}),t}Ct.call(ee.prototype);function H(r,t){if(!(this instanceof H))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t||(t={}),this.type="default",this.status=t.status===void 0?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText===void 0?"":""+t.statusText,this.headers=new C(t.headers),this.url=t.url||"",this._initBody(r)}Ct.call(H.prototype);H.prototype.clone=function(){return new H(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new C(this.headers),url:this.url})};H.error=function(){var r=new H(null,{status:0,statusText:""});return r.type="error",r};var or=[301,302,303,307,308];H.redirect=function(r,t){if(or.indexOf(t)===-1)throw new RangeError("Invalid status code");return new H(null,{status:t,headers:{location:r}})};var Q=D.DOMException;try{new Q}catch{Q=function(t,e){this.message=t,this.name=e;var i=Error(t);this.stack=i.stack},Q.prototype=Object.create(Error.prototype),Q.prototype.constructor=Q}function St(r,t){return new Promise(function(e,i){var n=new ee(r,t);if(n.signal&&n.signal.aborted)return i(new Q("Aborted","AbortError"));var s=new XMLHttpRequest;function l(){s.abort()}s.onload=function(){var p={status:s.status,statusText:s.statusText,headers:ar(s.getAllResponseHeaders()||"")};p.url="responseURL"in s?s.responseURL:p.headers.get("X-Request-URL");var x="response"in s?s.response:s.responseText;setTimeout(function(){e(new H(x,p))},0)},s.onerror=function(){setTimeout(function(){i(new TypeError("Network request failed"))},0)},s.ontimeout=function(){setTimeout(function(){i(new TypeError("Network request failed"))},0)},s.onabort=function(){setTimeout(function(){i(new Q("Aborted","AbortError"))},0)};function f(p){try{return p===""&&D.location.href?D.location.href:p}catch{return p}}s.open(n.method,f(n.url),!0),n.credentials==="include"?s.withCredentials=!0:n.credentials==="omit"&&(s.withCredentials=!1),"responseType"in s&&(B.blob?s.responseType="blob":B.arrayBuffer&&n.headers.get("Content-Type")&&n.headers.get("Content-Type").indexOf("application/octet-stream")!==-1&&(s.responseType="arraybuffer")),t&&typeof t.headers=="object"&&!(t.headers instanceof C)?Object.getOwnPropertyNames(t.headers).forEach(function(p){s.setRequestHeader(p,yt(t.headers[p]))}):n.headers.forEach(function(p,x){s.setRequestHeader(x,p)}),n.signal&&(n.signal.addEventListener("abort",l),s.onreadystatechange=function(){s.readyState===4&&n.signal.removeEventListener("abort",l)}),s.send(typeof n._bodyInit>"u"?null:n._bodyInit)})}St.polyfill=!0;D.fetch||(D.fetch=St,D.Headers=C,D.Request=ee,D.Response=H);var te={},O=class{hasEvent(t){return t in te}on(t,e){this.hasEvent(t)||(te[t]=[]),te[t].push(e)}off(t,e=null){if(!!this.hasEvent(t)){if(e===null)return te[t]=[];te[t]=te[t].filter(i=>i!==e)}}trigger(t,...e){if(this.hasEvent(t)){let i=!1;te[t].forEach(n=>{i||n(...e)===!1&&(i=!0)})}}};var we,U=class extends O{constructor(e=null){super();b(this,we,void 0);e!==null&&E(this,we,this.createNodeFromString(e))}get element(){return u(this,we)}createNodesFromString(e){let i=document.createElement("div"),n=document.createDocumentFragment();i.innerHTML=e;for(let s of i.childNodes)n.appendChild(s);return n}createNodeFromString(e){return this.createNodesFromString(e).firstChild}emptyNode(){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild)}};we=new WeakMap;var qt=pt(_t());var Bt=pt(Ot());var ur=r=>r.replace(/^\/+|\/+$/g,""),cr=(...r)=>`/${r.map(ur).filter(t=>t).join("/")}`,_=cr;var it,q,xe,Ee=class extends U{constructor(e,i=btoa){super(`
  • + `)),k=w.querySelector(".basicLightbox__placeholder");v.forEach(function(d){return k.appendChild(d)});var o=i(k,"IMG"),a=i(k,"VIDEO"),c=i(k,"IFRAME");return o===!0&&w.classList.add("basicLightbox--img"),a===!0&&w.classList.add("basicLightbox--video"),c===!0&&w.classList.add("basicLightbox--iframe"),w}(l=function(v){var A=typeof v=="string",w=v instanceof HTMLElement==1;if(A===!1&&w===!1)throw new Error("Content must be a DOM element/node or string");return A===!0?Array.from(n(v,!0)):v.tagName==="TEMPLATE"?[v.content.cloneNode(!0)]:Array.from(v.children)}(l),f=function(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if((v=Object.assign({},v)).closable==null&&(v.closable=!0),v.className==null&&(v.className=""),v.onShow==null&&(v.onShow=function(){}),v.onClose==null&&(v.onClose=function(){}),typeof v.closable!="boolean")throw new Error("Property `closable` must be a boolean");if(typeof v.className!="string")throw new Error("Property `className` must be a string");if(typeof v.onShow!="function")throw new Error("Property `onShow` must be a function");if(typeof v.onClose!="function")throw new Error("Property `onClose` must be a function");return v}(f)),x=function(v){return f.onClose(L)!==!1&&function(A,w){return A.classList.remove("basicLightbox--visible"),setTimeout(function(){return s(A)===!1||A.parentElement.removeChild(A),w()},410),!0}(p,function(){if(typeof v=="function")return v(L)})};f.closable===!0&&p.addEventListener("click",function(v){v.target===p&&x()});var L={element:function(){return p},visible:function(){return s(p)},show:function(v){return f.onShow(L)!==!1&&function(A,w){return document.body.appendChild(A),setTimeout(function(){requestAnimationFrame(function(){return A.classList.add("basicLightbox--visible"),w()})},10),!0}(p,function(){if(typeof v=="function")return v(L)})},close:x};return L}},{}]},{},[1])(1)})});var _t=ft((Lr,rt)=>{var or=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var g=function(r){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,e=0,n={},i={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function o(a){return a instanceof s?new s(a.type,o(a.content),a.alias):Array.isArray(a)?a.map(o):a.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document&&1<2)return document.currentScript;try{throw new Error}catch(d){var o=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(d.stack)||[])[1];if(o){var a=document.getElementsByTagName("script");for(var c in a)if(a[c].src==o)return a[c]}return null}},isActive:function(o,a,c){for(var d="no-"+a;o;){var h=o.classList;if(h.contains(a))return!0;if(h.contains(d))return!1;o=o.parentElement}return!!c}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(o,a){var c=i.util.clone(i.languages[o]);for(var d in a)c[d]=a[d];return c},insertBefore:function(o,a,c,d){d=d||i.languages;var h=d[o],y={};for(var F in h)if(h.hasOwnProperty(F)){if(F==a)for(var m in c)c.hasOwnProperty(m)&&(y[m]=c[m]);c.hasOwnProperty(F)||(y[F]=h[F])}var T=d[o];return d[o]=y,i.languages.DFS(i.languages,function(P,z){z===T&&P!=o&&(this[P]=y)}),y},DFS:function o(a,c,d,h){h=h||{};var y=i.util.objId;for(var F in a)if(a.hasOwnProperty(F)){c.call(a,F,a[F],d||F);var m=a[F],T=i.util.type(m);T==="Object"&&!h[y(m)]?(h[y(m)]=!0,o(m,c,null,h)):T==="Array"&&!h[y(m)]&&(h[y(m)]=!0,o(m,c,F,h))}}},plugins:{},highlightAll:function(o,a){i.highlightAllUnder(document,o,a)},highlightAllUnder:function(o,a,c){var d={callback:c,container:o,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};i.hooks.run("before-highlightall",d),d.elements=Array.prototype.slice.apply(d.container.querySelectorAll(d.selector)),i.hooks.run("before-all-elements-highlight",d);for(var h=0,y;y=d.elements[h++];)i.highlightElement(y,a===!0,d.callback)},highlightElement:function(o,a,c){var d=i.util.getLanguage(o),h=i.languages[d];i.util.setLanguage(o,d);var y=o.parentElement;y&&y.nodeName.toLowerCase()==="pre"&&i.util.setLanguage(y,d);var F=o.textContent,m={element:o,language:d,grammar:h,code:F};function T(z){m.highlightedCode=z,i.hooks.run("before-insert",m),m.element.innerHTML=m.highlightedCode,i.hooks.run("after-highlight",m),i.hooks.run("complete",m),c&&c.call(m.element)}if(i.hooks.run("before-sanity-check",m),y=m.element.parentElement,y&&y.nodeName.toLowerCase()==="pre"&&!y.hasAttribute("tabindex")&&y.setAttribute("tabindex","0"),!m.code){i.hooks.run("complete",m),c&&c.call(m.element);return}if(i.hooks.run("before-highlight",m),!m.grammar){T(i.util.encode(m.code));return}if(a&&r.Worker){var P=new Worker(i.filename);P.onmessage=function(z){T(z.data)},P.postMessage(JSON.stringify({language:m.language,code:m.code,immediateClose:!0}))}else T(i.highlight(m.code,m.grammar,m.language))},highlight:function(o,a,c){var d={code:o,grammar:a,language:c};if(i.hooks.run("before-tokenize",d),!d.grammar)throw new Error('The language "'+d.language+'" has no grammar.');return d.tokens=i.tokenize(d.code,d.grammar),i.hooks.run("after-tokenize",d),s.stringify(i.util.encode(d.tokens),d.language)},tokenize:function(o,a){var c=a.rest;if(c){for(var d in c)a[d]=c[d];delete a.rest}var h=new p;return x(h,h.head,o),f(o,h,a,h.head,0),v(h)},hooks:{all:{},add:function(o,a){var c=i.hooks.all;c[o]=c[o]||[],c[o].push(a)},run:function(o,a){var c=i.hooks.all[o];if(!(!c||!c.length))for(var d=0,h;h=c[d++];)h(a)}},Token:s};r.Prism=i;function s(o,a,c,d){this.type=o,this.content=a,this.alias=c,this.length=(d||"").length|0}s.stringify=function o(a,c){if(typeof a=="string")return a;if(Array.isArray(a)){var d="";return a.forEach(function(T){d+=o(T,c)}),d}var h={type:a.type,content:o(a.content,c),tag:"span",classes:["token",a.type],attributes:{},language:c},y=a.alias;y&&(Array.isArray(y)?Array.prototype.push.apply(h.classes,y):h.classes.push(y)),i.hooks.run("wrap",h);var F="";for(var m in h.attributes)F+=" "+m+'="'+(h.attributes[m]||"").replace(/"/g,""")+'"';return"<"+h.tag+' class="'+h.classes.join(" ")+'"'+F+">"+h.content+""};function l(o,a,c,d){o.lastIndex=a;var h=o.exec(c);if(h&&d&&h[1]){var y=h[1].length;h.index+=y,h[0]=h[0].slice(y)}return h}function f(o,a,c,d,h,y){for(var F in c)if(!(!c.hasOwnProperty(F)||!c[F])){var m=c[F];m=Array.isArray(m)?m:[m];for(var T=0;T=y.reach);q+=D.value.length,D=D.next){var V=D.value;if(a.length>o.length)return;if(!(V instanceof s)){var Ke=1,M;if(Xe){if(M=l(ge,q,o,pe),!M||M.index>=o.length)break;var Je=M.index,zt=M.index+M[0].length,Z=q;for(Z+=D.value.length;Je>=Z;)D=D.next,Z+=D.value.length;if(Z-=D.value.length,q=Z,D.value instanceof s)continue;for(var me=D;me!==a.tail&&(Zy.reach&&(y.reach=ct);var et=D.prev;ut&&(et=x(a,et,ut),q+=ut.length),L(a,et,Ke);var Ht=new s(F,z?i.tokenize(Qe,z):Qe,Ye,Qe);if(D=x(a,et,Ht),wt&&x(a,D,wt),Ke>1){var ht={cause:F+","+T,reach:ct};f(o,a,c,D.prev,q,ht),y&&ht.reach>y.reach&&(y.reach=ht.reach)}}}}}}function p(){var o={value:null,prev:null,next:null},a={value:null,prev:o,next:null};o.next=a,this.head=o,this.tail=a,this.length=0}function x(o,a,c){var d=a.next,h={value:c,prev:a,next:d};return a.next=h,d.prev=h,o.length++,h}function L(o,a,c){for(var d=a.next,h=0;h/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};g.languages.markup.tag.inside["attr-value"].inside.entity=g.languages.markup.entity;g.languages.markup.doctype.inside["internal-subset"].inside=g.languages.markup;g.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&/,"&"))});Object.defineProperty(g.languages.markup.tag,"addInlined",{value:function(t,e){var n={};n["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:g.languages[e]},n.cdata=/^$/i;var i={"included-cdata":{pattern://i,inside:n}};i["language-"+e]={pattern:/[\s\S]+/,inside:g.languages[e]};var s={};s[t]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return t}),"i"),lookbehind:!0,greedy:!0,inside:i},g.languages.insertBefore("markup","cdata",s)}});Object.defineProperty(g.languages.markup.tag,"addAttribute",{value:function(r,t){g.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:g.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});g.languages.html=g.languages.markup;g.languages.mathml=g.languages.markup;g.languages.svg=g.languages.markup;g.languages.xml=g.languages.extend("markup",{});g.languages.ssml=g.languages.xml;g.languages.atom=g.languages.xml;g.languages.rss=g.languages.xml;(function(r){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var e=r.languages.markup;e&&(e.tag.addInlined("style","css"),e.tag.addAttribute("style","css"))})(g);g.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};g.languages.javascript=g.languages.extend("clike",{"class-name":[g.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});g.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;g.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:g.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:g.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:g.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:g.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:g.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});g.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:g.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});g.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});g.languages.markup&&(g.languages.markup.tag.addInlined("script","javascript"),g.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));g.languages.js=g.languages.javascript;(function(){if(typeof g>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var r="Loading\u2026",t=function(A,w){return"\u2716 Error "+A+" while fetching file: "+w},e="\u2716 Error: File does not exist or is empty",n={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},i="data-src-status",s="loading",l="loaded",f="failed",p="pre[data-src]:not(["+i+'="'+l+'"]):not(['+i+'="'+s+'"])';function x(A,w,k){var o=new XMLHttpRequest;o.open("GET",A,!0),o.onreadystatechange=function(){o.readyState==4&&(o.status<400&&o.responseText?w(o.responseText):o.status>=400?k(t(o.status,o.statusText)):k(e))},o.send(null)}function L(A){var w=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(A||"");if(w){var k=Number(w[1]),o=w[2],a=w[3];return o?a?[k,Number(a)]:[k,void 0]:[k,k]}}g.hooks.add("before-highlightall",function(A){A.selector+=", "+p}),g.hooks.add("before-sanity-check",function(A){var w=A.element;if(w.matches(p)){A.code="",w.setAttribute(i,s);var k=w.appendChild(document.createElement("CODE"));k.textContent=r;var o=w.getAttribute("data-src"),a=A.language;if(a==="none"){var c=(/\.(\w+)$/.exec(o)||[,"none"])[1];a=n[c]||c}g.util.setLanguage(k,a),g.util.setLanguage(w,a);var d=g.plugins.autoloader;d&&d.loadLanguages(a),x(o,function(h){w.setAttribute(i,l);var y=L(w.getAttribute("data-range"));if(y){var F=h.split(/\r\n?|\n/g),m=y[0],T=y[1]==null?F.length:y[1];m<0&&(m+=F.length),m=Math.max(0,Math.min(m-1,F.length)),T<0&&(T+=F.length),T=Math.max(0,Math.min(T,F.length)),h=F.slice(m,T).join(` +`),w.hasAttribute("data-start")||w.setAttribute("data-start",String(m+1))}k.textContent=h,g.highlightElement(k)},function(h){w.setAttribute(i,f),k.textContent=h})}}),g.plugins.fileHighlight={highlight:function(w){for(var k=(w||document).querySelectorAll(p),o=0,a;a=k[o++];)g.highlightElement(a)}};var v=!1;g.fileHighlight=function(){v||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),v=!0),g.plugins.fileHighlight.highlight.apply(this,arguments)}})()});var Mt=ft(G=>{"use strict";var it=G&&G.__assign||function(){return it=Object.assign||function(r){for(var t,e=1,n=arguments.length;e0&&e.hide()}),this.element.classList.remove(this.toastShowClass),this.element.classList.add(this.toastHideClass),this.trigger("hide"),this.animation){var n=function(){return e.remove()},i=function(){l||(e.element.addEventListener("transitionend",function(){return n()}),l=!0)},s=function(){e.show(),e.element.removeEventListener("transitionstart",function(){return i()}),e.element.removeEventListener("transitionend",function(){return n()}),e.element.removeEventListener("mouseover",function(){return s()}),e.element.addEventListener("mouseout",function(){return e.hide()})},l=!1;this.element.addEventListener("mouseover",function(){return s()}),this.element.addEventListener("transitionstart",function(){return i()});return}this.remove()}},r.prototype.remove=function(){this.element.parentNode===this.container&&(this.container.removeChild(this.element),this.trigger("remove"))},r.prototype.buildClose=function(t){var e=this,n=document.createElement("button");return n.setAttribute("title",t),n.appendChild(document.createTextNode(t)),n.addEventListener("click",function(){return e.hide()}),n},r.prototype.getContainer=function(t){var e=t.containerClass,n=t.containerElement,i=t.root,s=i.querySelector("".concat(n,".").concat(e));if(s)return s;var l=document.createElement(n);return l.classList.add(e),i.appendChild(l),l},r.prototype.on=function(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e)},r.prototype.off=function(t,e){if(e===void 0&&(e=null),!e){this.events[t]=[];return}var n=this.events[t].indexOf(e);n===-1&&this.events[t].splice(n,1)},r.prototype.trigger=function(t){for(var e=this,n=[],i=1;i-1});var Lt,Tt;function ve(r){if(typeof r!="string"&&(r=String(r)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(r)||r==="")throw new TypeError('Invalid character in header field name: "'+r+'"');return r.toLowerCase()}function mt(r){return typeof r!="string"&&(r=String(r)),r}function yt(r){var t={next:function(){var e=r.shift();return{done:e===void 0,value:e}}};return I.iterable&&(t[Symbol.iterator]=function(){return t}),t}function C(r){this.map={},r instanceof C?r.forEach(function(t,e){this.append(e,t)},this):Array.isArray(r)?r.forEach(function(t){this.append(t[0],t[1])},this):r&&Object.getOwnPropertyNames(r).forEach(function(t){this.append(t,r[t])},this)}C.prototype.append=function(r,t){r=ve(r),t=mt(t);var e=this.map[r];this.map[r]=e?e+", "+t:t};C.prototype.delete=function(r){delete this.map[ve(r)]};C.prototype.get=function(r){return r=ve(r),this.has(r)?this.map[r]:null};C.prototype.has=function(r){return this.map.hasOwnProperty(ve(r))};C.prototype.set=function(r,t){this.map[ve(r)]=mt(t)};C.prototype.forEach=function(r,t){for(var e in this.map)this.map.hasOwnProperty(e)&&r.call(t,this.map[e],e,this)};C.prototype.keys=function(){var r=[];return this.forEach(function(t,e){r.push(e)}),yt(r)};C.prototype.values=function(){var r=[];return this.forEach(function(t){r.push(t)}),yt(r)};C.prototype.entries=function(){var r=[];return this.forEach(function(t,e){r.push([e,t])}),yt(r)};I.iterable&&(C.prototype[Symbol.iterator]=C.prototype.entries);function gt(r){if(r.bodyUsed)return Promise.reject(new TypeError("Already read"));r.bodyUsed=!0}function $t(r){return new Promise(function(t,e){r.onload=function(){t(r.result)},r.onerror=function(){e(r.error)}})}function Qt(r){var t=new FileReader,e=$t(t);return t.readAsArrayBuffer(r),e}function er(r){var t=new FileReader,e=$t(t);return t.readAsText(r),e}function tr(r){for(var t=new Uint8Array(r),e=new Array(t.length),n=0;n-1?t:r}function ee(r,t){if(!(this instanceof ee))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t=t||{};var e=t.body;if(r instanceof ee){if(r.bodyUsed)throw new TypeError("Already read");this.url=r.url,this.credentials=r.credentials,t.headers||(this.headers=new C(r.headers)),this.method=r.method,this.mode=r.mode,this.signal=r.signal,!e&&r._bodyInit!=null&&(e=r._bodyInit,r.bodyUsed=!0)}else this.url=String(r);if(this.credentials=t.credentials||this.credentials||"same-origin",(t.headers||!this.headers)&&(this.headers=new C(t.headers)),this.method=nr(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&e)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(e),(this.method==="GET"||this.method==="HEAD")&&(t.cache==="no-store"||t.cache==="no-cache")){var n=/([?&])_=[^&]*/;if(n.test(this.url))this.url=this.url.replace(n,"$1_="+new Date().getTime());else{var i=/\?/;this.url+=(i.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}ee.prototype.clone=function(){return new ee(this,{body:this._bodyInit})};function ir(r){var t=new FormData;return r.trim().split("&").forEach(function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),s=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(s))}}),t}function sr(r){var t=new C,e=r.replace(/\r?\n[\t ]+/g," ");return e.split("\r").map(function(n){return n.indexOf(` +`)===0?n.substr(1,n.length):n}).forEach(function(n){var i=n.split(":"),s=i.shift().trim();if(s){var l=i.join(":").trim();t.append(s,l)}}),t}Pt.call(ee.prototype);function H(r,t){if(!(this instanceof H))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');t||(t={}),this.type="default",this.status=t.status===void 0?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText===void 0?"":""+t.statusText,this.headers=new C(t.headers),this.url=t.url||"",this._initBody(r)}Pt.call(H.prototype);H.prototype.clone=function(){return new H(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new C(this.headers),url:this.url})};H.error=function(){var r=new H(null,{status:0,statusText:""});return r.type="error",r};var ar=[301,302,303,307,308];H.redirect=function(r,t){if(ar.indexOf(t)===-1)throw new RangeError("Invalid status code");return new H(null,{status:t,headers:{location:r}})};var Q=S.DOMException;try{new Q}catch{Q=function(t,e){this.message=t,this.name=e;var n=Error(t);this.stack=n.stack},Q.prototype=Object.create(Error.prototype),Q.prototype.constructor=Q}function Ct(r,t){return new Promise(function(e,n){var i=new ee(r,t);if(i.signal&&i.signal.aborted)return n(new Q("Aborted","AbortError"));var s=new XMLHttpRequest;function l(){s.abort()}s.onload=function(){var p={status:s.status,statusText:s.statusText,headers:sr(s.getAllResponseHeaders()||"")};p.url="responseURL"in s?s.responseURL:p.headers.get("X-Request-URL");var x="response"in s?s.response:s.responseText;setTimeout(function(){e(new H(x,p))},0)},s.onerror=function(){setTimeout(function(){n(new TypeError("Network request failed"))},0)},s.ontimeout=function(){setTimeout(function(){n(new TypeError("Network request failed"))},0)},s.onabort=function(){setTimeout(function(){n(new Q("Aborted","AbortError"))},0)};function f(p){try{return p===""&&S.location.href?S.location.href:p}catch{return p}}s.open(i.method,f(i.url),!0),i.credentials==="include"?s.withCredentials=!0:i.credentials==="omit"&&(s.withCredentials=!1),"responseType"in s&&(I.blob?s.responseType="blob":I.arrayBuffer&&i.headers.get("Content-Type")&&i.headers.get("Content-Type").indexOf("application/octet-stream")!==-1&&(s.responseType="arraybuffer")),t&&typeof t.headers=="object"&&!(t.headers instanceof C)?Object.getOwnPropertyNames(t.headers).forEach(function(p){s.setRequestHeader(p,mt(t.headers[p]))}):i.headers.forEach(function(p,x){s.setRequestHeader(x,p)}),i.signal&&(i.signal.addEventListener("abort",l),s.onreadystatechange=function(){s.readyState===4&&i.signal.removeEventListener("abort",l)}),s.send(typeof i._bodyInit>"u"?null:i._bodyInit)})}Ct.polyfill=!0;S.fetch||(S.fetch=Ct,S.Headers=C,S.Request=ee,S.Response=H);var te={},O=class{hasEvent(t){return t in te}on(t,e){this.hasEvent(t)||(te[t]=[]),te[t].push(e)}off(t,e=null){if(!!this.hasEvent(t)){if(e===null)return te[t]=[];te[t]=te[t].filter(n=>n!==e)}}trigger(t,...e){if(this.hasEvent(t)){let n=!1;te[t].forEach(i=>{n||i(...e)===!1&&(n=!0)})}}};var be,U=class extends O{constructor(e=null){super();b(this,be,void 0);e!==null&&E(this,be,this.createNodeFromString(e))}get element(){return u(this,be)}createNodesFromString(e){let n=document.createElement("div"),i=document.createDocumentFragment();n.innerHTML=e;for(let s of n.childNodes)i.appendChild(s);return i}createNodeFromString(e){return this.createNodesFromString(e).firstChild}emptyNode(){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild)}};be=new WeakMap;var Ot=pt(St());var Bt=pt(_t());var lr=r=>r.replace(/^\/+|\/+$/g,""),ur=(...r)=>`/${r.map(lr).filter(t=>t).join("/")}`,_=ur;var nt,B,Ee,we=class extends U{constructor(e,n=btoa){super(`
  • ${e.title} ${e.displaySize} @@ -13,17 +13,17 @@ -
  • `);b(this,it,void 0);b(this,q,void 0);b(this,xe,Object.freeze({video:e=>``,audio:e=>``,image:e=>`${e.title}`,font:e=>{let i={eot:"embedded-opentype",otf:"opentype",ttf:"truetype"},n=e.name.replace(/^.+\.([^.]+)$/,"$1").toLowerCase(),s=e.fullPath.replace(/\W+/g,"_"),l=`The quick brown fox jumps over the lazy dog. 0123456789
    - Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz`;return` +`);b(this,nt,void 0);b(this,B,void 0);b(this,Ee,Object.freeze({video:e=>``,audio:e=>``,image:e=>`${e.title}`,font:e=>{let n={eot:"embedded-opentype",otf:"opentype",ttf:"truetype"},i=e.name.replace(/^.+\.([^.]+)$/,"$1").toLowerCase(),s=e.fullPath.replace(/\W+/g,"_"),l=`The quick brown fox jumps over the lazy dog. 0123456789
    + Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz`;return`

    ${e.title}

    ${l}

    ${l}

    ${l}

    -

    ${l}

    `},text:(e,i)=>`
    ${i.replace(/[<>]/g,n=>({"<":"<",">":">"})[n])}
    `,pdf:e=>``}));E(this,it,i),E(this,q,e),this.element.classList.add(e.directory?"directory":"file",e.type?e.type:"unknown"),e.placeholder&&this.element.classList.add("loading"),e.del||this.element.querySelector(".delete").setAttribute("hidden",""),e.rename||this.element.querySelector(".rename").setAttribute("hidden",""),this.bindEvents()}bindEvents(e=this.element){this.on("entry:update",i=>{i===u(this,q)&&this.update()}),this.on("move:failed",i=>{i===u(this,q).fullPath&&this.loading(!1)}),this.on("delete:failed",i=>{i===u(this,q).fullPath&&this.loading(!1)}),e.addEventListener("click",()=>this.open()),e.querySelector("[download]").addEventListener("click",i=>i.stopPropagation()),e.querySelector(".delete").addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),this.del()}),e.querySelector(".rename").addEventListener("click",i=>{i.stopPropagation(),i.preventDefault(),this.rename()}),e.addEventListener("keydown",i=>{if([113,46,13].includes(i.which)){if(i.preventDefault(),i.which===113)u(this,q).rename&&this.rename();else if(i.which===46)u(this,q).del&&this.del();else if(i.which===13&&!u(this,q).directory){if(i.shiftKey)return this.download();this.open()}}})}del(){let e=u(this,q);if(!e.del)throw new TypeError(`'${e.name}' is read only.`);if(this.loading(),!confirm(`Are you sure you want to delete '${e.title}?'`))return this.loading(!1);this.trigger("delete",e.fullPath,e)}download(){u(this,q).directory||this.element.querySelector("[download]").click()}loading(e=!0){if(e)return this.element.classList.add("loading");this.element.classList.remove("loading")}open(){let e=u(this,q);if(this.loading(),e.directory)return this.trigger("go",e.fullPath,{failure:()=>this.loading(!1)});let i=(n,s=null)=>{let l=p=>{p.which===27&&f.close()},f=qt.create(n,{className:e.type,onShow:()=>{this.loading(!1),document.addEventListener("keydown",l),s&&s(f)},onClose:()=>document.removeEventListener("keydown",l)});f.show()};["video","audio","image","font","pdf"].includes(e.type)?this.trigger("check",e.fullPath,()=>{i(u(this,xe)[e.type](e))},()=>this.loading(!1)):(this.trigger("get",e.fullPath,n=>{if(!n)return this.loading(!1);if(e.type!=="text")return this.download();i(u(this,xe).text(e,n),s=>Bt.default.highlightAllUnder(s.element()))}),this.loading(!1)),event.preventDefault()}rename(){let e=u(this,q);if(!e.rename)throw new TypeError(`'${e.name}' cannot be renamed.`);let i=this.element,n=i.querySelector(".title"),s=i.querySelector("input"),l=()=>{n.innerText=s.value,s.style.setProperty("width",`${n.scrollWidth}px`)},f=()=>{if(s.value!==e.title)return this.loading(),p(),this.trigger("move",e.fullPath,_(e.path,s.value),e);x()},p=()=>{s.removeEventListener("blur",L),s.removeEventListener("keydown",v),s.removeEventListener("input",A)},x=()=>(n.classList.remove("invisible"),s.classList.add("hidden"),s.value=e.title,l(),p(),i.focus()),L=()=>{f()},v=w=>{w.which===13?(w.stopPropagation(),w.preventDefault(),f()):w.which===27&&x()},A=()=>l();n.classList.add("invisible"),s.classList.remove("hidden"),s.value=e.title,l(),s.removeAttribute("readonly"),s.addEventListener("blur",L),s.addEventListener("keydown",v),s.addEventListener("input",A),s.focus()}update(){u(this,q).placeholder&&this.element.classList.contains("placeholder")&&this.element.classList.remove("placeholder")}};it=new WeakMap,q=new WeakMap,xe=new WeakMap;var It=(()=>{try{return document.querySelector(":focus-within"),!0}catch(r){return!1}})();var re,Fe,Ae=class extends U{constructor(){super('
      ');b(this,re,void 0);b(this,Fe,void 0);this.bindEvents()}bindEvents(){this.on("list:update:request",()=>this.loading()),this.on("list:update:success",i=>this.update(i)),this.on("list:update:failed",()=>this.loading(!1)),this.on("collection:update",i=>{i===u(this,re)&&this.update()}),this.on("entry:update",i=>{i.collection===u(this,re)&&this.update()});let e=i=>{if(![38,40].includes(i.which))return;i.preventDefault(),i.stopPropagation();let n=this.element.querySelector(`li:focus${It?", li:focus-within":""}`),s=n?n.nextSibling:this.element.querySelector("li:first-child"),l=n?n.previousSibling:null;i.which===38&&l?l.focus():i.which===40&&s&&s.focus()};document.addEventListener("keydown",e),this.element.addEventListener("keydown",e)}loading(e=!0){if(e)return this.element.classList.add("loading");this.element.classList.remove("loading")}update(e=u(this,re)){this.emptyNode(),E(this,Fe,e.map(i=>new Ee(i))),[...u(this,Fe).map(i=>i.element)].forEach(i=>this.element.appendChild(i)),this.loading(!1),E(this,re,e)}};re=new WeakMap,Fe=new WeakMap;var Le=class extends U{constructor(){let t="
      ";super(t);let e=new Ae;this.element.appendChild(e.element)}};var Pe=class extends U{constructor(){let t=`
      +

      ${l}

      `},text:(e,n)=>`
      ${n.replace(/[<>]/g,i=>({"<":"<",">":">"})[i])}
      `,pdf:e=>``}));E(this,nt,n),E(this,B,e),this.element.classList.add(e.directory?"directory":"file",e.type?e.type:"unknown"),e.placeholder&&this.element.classList.add("loading"),e.del||this.element.querySelector(".delete").setAttribute("hidden",""),e.rename||this.element.querySelector(".rename").setAttribute("hidden",""),this.bindEvents()}bindEvents(e=this.element){this.on("entry:update",n=>{n===u(this,B)&&this.update()}),this.on("move:failed",n=>{n===u(this,B).fullPath&&this.loading(!1)}),this.on("delete:failed",n=>{n===u(this,B).fullPath&&this.loading(!1)}),e.addEventListener("click",()=>this.open()),e.querySelector("[download]").addEventListener("click",n=>n.stopPropagation()),e.querySelector(".delete").addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),this.del()}),e.querySelector(".rename").addEventListener("click",n=>{n.stopPropagation(),n.preventDefault(),this.rename()}),e.addEventListener("keydown",n=>{if(["F2","Delete","Enter"].includes(n.key)){if(n.preventDefault(),n.key==="F2"&&u(this,B).rename)this.rename();else if(n.key==="Delete"&&u(this,B).del)this.del();else if(n.key==="Enter"&&!u(this,B).directory){if(n.shiftKey)return this.download();this.open()}}})}del(){let e=u(this,B);if(!e.del)throw new TypeError(`'${e.name}' is read only.`);if(this.loading(),!confirm(`Are you sure you want to delete '${e.title}?'`))return this.loading(!1);this.trigger("delete",e.fullPath,e)}download(){u(this,B).directory||this.element.querySelector("[download]").click()}loading(e=!0){if(e)return this.element.classList.add("loading");this.element.classList.remove("loading")}open(){let e=u(this,B);if(this.loading(),e.directory)return this.trigger("go",e.fullPath,!1,()=>this.loading(!1));let n=(i,s=null)=>{let l=p=>{p.key==="Escape"&&f.close()},f=Ot.create(i,{className:e.type,onShow:()=>{this.loading(!1),document.addEventListener("keydown",l),s&&s(f)},onClose:()=>document.removeEventListener("keydown",l)});f.show()};["video","audio","image","font","pdf"].includes(e.type)?this.trigger("check",e.fullPath,()=>{n(u(this,Ee)[e.type](e))},()=>this.loading(!1)):(this.trigger("get",e.fullPath,i=>{if(!i)return this.loading(!1);if(e.type!=="text")return this.download();n(u(this,Ee).text(e,i),s=>Bt.default.highlightAllUnder(s.element()))}),this.loading(!1)),event.preventDefault()}rename(){let e=u(this,B);if(!e.rename)throw new TypeError(`'${e.name}' cannot be renamed.`);let n=this.element,i=n.querySelector(".title"),s=n.querySelector("input"),l=()=>{i.innerText=s.value,s.style.setProperty("width",`${i.scrollWidth}px`)},f=()=>{if(s.value!==e.title)return this.loading(),p(),this.trigger("move",e.fullPath,_(e.path,s.value),e);x()},p=()=>{s.removeEventListener("blur",L),s.removeEventListener("keydown",v),s.removeEventListener("input",A)},x=()=>(i.classList.remove("invisible"),s.classList.add("hidden"),s.value=e.title,l(),p(),n.focus()),L=()=>{f()},v=w=>{w.key==="Enter"?(w.stopPropagation(),w.preventDefault(),f()):w.key==="Escape"&&x()},A=()=>l();i.classList.add("invisible"),s.classList.remove("hidden"),s.value=e.title,l(),s.removeAttribute("readonly"),s.addEventListener("blur",L),s.addEventListener("keydown",v),s.addEventListener("input",A),s.focus()}update(){u(this,B).placeholder&&this.element.classList.contains("placeholder")&&this.element.classList.remove("placeholder")}};nt=new WeakMap,B=new WeakMap,Ee=new WeakMap;var It=(()=>{try{return document.querySelector(":focus-within"),!0}catch(r){return!1}})();var re,Ae,xe=class extends U{constructor(){super('
        ');b(this,re,void 0);b(this,Ae,void 0);this.bindEvents()}bindEvents(){this.on("list:update:request",()=>this.loading()),this.on("list:update:success",n=>this.update(n)),this.on("list:update:failed",()=>this.loading(!1)),this.on("collection:update",n=>{n===u(this,re)&&this.update()}),this.on("entry:update",n=>{n.collection===u(this,re)&&this.update()});let e=n=>{if(!["ArrowUp","ArrowDown"].includes(n.key))return;n.preventDefault(),n.stopPropagation();let i=this.element.querySelector(`li:focus${It?", li:focus-within":""}`),s=i?i.nextSibling:this.element.querySelector("li:first-child"),l=i?i.previousSibling:null;n.key==="ArrowUp"&&l?l.focus():n.key==="ArrowDown"&&s&&s.focus()};document.addEventListener("keydown",e),this.element.addEventListener("keydown",e)}loading(e=!0){if(e)return this.element.classList.add("loading");this.element.classList.remove("loading")}update(e=u(this,re)){this.emptyNode(),E(this,Ae,e.map(n=>new we(n))),[...u(this,Ae).map(n=>n.element)].forEach(n=>this.element.appendChild(n)),this.loading(!1),E(this,re,e)}};re=new WeakMap,Ae=new WeakMap;var Fe=class extends U{constructor(){let t="
        ";super(t);let e=new xe;this.element.appendChild(e.element)}};var Le=class extends U{constructor(){let t=``;super(t),this.bindEvents()}bindEvents(t=this.element){t.querySelector('input[type="file"]').addEventListener("change",e=>$(this,null,function*(){for(let i of e.target.files)this.trigger("upload",location.pathname,i);t.value=null})),t.querySelector(".create-directory").addEventListener("click",e=>$(this,null,function*(){e.preventDefault();let i=prompt("","Directory name");!i||this.trigger("create-directory",`${_(location.pathname,i)}/`,i,location.pathname)}))}};var oe=pt(Ut());var dr={PROPFIND:{headers:{Depth:1}}},X=(r,t,e,i)=>fetch(t,tt(N(N({},dr[r]||null),e),{method:r})).then(n=>{if(!n.ok){i.trigger("error",{method:r,url:t,response:n});return}return n}),Te=class extends O{GET(t,e={}){return X("GET",t,e,this)}HEAD(t,e={}){return X("HEAD",t,e,this)}PUT(t,e={}){return X("PUT",t,e,this)}PROPFIND(t,e={}){return X("PROPFIND",t,e,this)}DELETE(t,e={}){return X("DELETE",t,e,this)}MKCOL(t,e={}){return X("MKCOL",t,e,this)}COPY(t,e={}){return X("COPY",t,e,this)}MOVE(t,e={}){return X("MOVE",t,e,this)}};var $e,ke,le,ue,ce,ie,Ce,he,Se,de,De,fe,ne,Y,wt=class extends O{constructor({directory:e=!1,fullPath:i,title:n="",modified:s,size:l=0,mimeType:f="",del:p=!0,rename:x=!0,placeholder:L=!1,collection:v=null}){super();b(this,$e,void 0);b(this,ke,void 0);b(this,le,void 0);b(this,ue,void 0);b(this,ce,void 0);b(this,ie,void 0);b(this,Ce,void 0);b(this,he,void 0);b(this,Se,void 0);b(this,de,void 0);b(this,De,void 0);b(this,fe,void 0);b(this,ne,void 0);b(this,Y,void 0);E(this,ke,e),E(this,ce,i),[gt(this,Se)._,gt(this,he)._]=this.getFilename(),E(this,ne,n),E(this,Ce,s),E(this,fe,l),E(this,ie,f),E(this,$e,p),E(this,De,x),E(this,de,L),this.collection=v}createParentEntry(){return this.update({fullPath:this.path,title:"←",del:!1,rename:!1})}getFilename(e=u(this,ce)){e=_(e).split(/\//);let i=e.pop();return[_(...e),i]}update(e={}){return new wt(N({directory:this.directory,fullPath:this.fullPath,modified:this.modified,size:this.size,mimeType:this.mimeType,del:this.del,rename:this.rename,collection:this.collection},e))}get del(){return u(this,$e)}get directory(){return u(this,ke)}get displaySize(){return this.directory?"":(u(this,le)||E(this,le,["bytes","KiB","MiB","GiB","TiB","PiB"].reduce((e,i)=>typeof e=="string"?e:e<1024?`${e.toFixed(2*(i==="bytes"?0:1))} ${i}`:e/1024,u(this,fe))),u(this,le))}get extension(){return this.directory?"":(u(this,ue)||E(this,ue,this.name.split(".").pop()),u(this,ue))}get fullPath(){return u(this,ce)}get mimeType(){return u(this,ie)}get modified(){return u(this,Ce)}get name(){return u(this,he)}get path(){return u(this,Se)}get placeholder(){return u(this,de)}set placeholder(e){E(this,de,e),this.trigger("entry:update",this)}get rename(){return u(this,De)}get size(){return u(this,fe)}get title(){return u(this,ne)||E(this,ne,decodeURIComponent(u(this,he))),u(this,ne)}get type(){if(!u(this,Y)){let e,i={text:/\.(?:te?xt|i?nfo|php|cgi|faq|ini|htaccess|log|md|sql|sfv|conf|sh|pl|pm|py|rb|(?:s?c|sa)ss|js|java|coffee|[sx]?html?|xml)$/i,image:/\.(?:jpe?g|gif|a?png|svg)$/i,video:/\.(?:mp(?:e?g)?4|mov|avi|webm|ogv|mkv)$/i,audio:/\.(?:mp3|wav|ogg|flac|mka)$/i,font:/\.(?:woff2?|eot|[ot]tf)$/i,pdf:/\.pdf/i};for(let[n,s]of Object.entries(i))if(this.name.match(s))return E(this,Y,n);if(u(this,ie)&&(e=u(this,ie).split("/").shift()))return E(this,Y,e);E(this,Y,"unknown")}return u(this,Y)}},K=wt;$e=new WeakMap,ke=new WeakMap,le=new WeakMap,ue=new WeakMap,ce=new WeakMap,ie=new WeakMap,Ce=new WeakMap,he=new WeakMap,Se=new WeakMap,de=new WeakMap,De=new WeakMap,fe=new WeakMap,ne=new WeakMap,Y=new WeakMap;var se,R,Oe,qe,st,at,_e=class extends O{constructor(e,{sortDirectoriesFirst:i=!1}={}){super();b(this,se,void 0);b(this,R,void 0);b(this,Oe,void 0);b(this,qe,()=>u(this,R).sort((e,i)=>u(this,Oe)&&u(this,at).call(this,e,i)||u(this,st).call(this,e,i)));b(this,st,(e,i)=>e.fullPathi.directory-e.directory);E(this,Oe,i),E(this,R,e.map(s=>new K(tt(N({},s),{collection:this}))));let n=u(this,R).shift();E(this,se,_(n.fullPath)),n.fullPath!=="/"&&u(this,R).unshift(n.createParentEntry()),u(this,qe).call(this),this.bindEvents()}bindEvents(){this.on("upload:request",(e,i)=>{_(e)===u(this,se)&&this.add(new K({fullPath:_(e,i.name),modified:i.lastModifiedDate,size:i.size,mimeType:i.type,placeholder:!0}))}),this.on("upload:success",(e,i)=>{let[n]=this.filter(s=>s.fullPath===_(e,i.name));n&&(n.placeholder=!1)}),this.on("upload:failed",(e,i)=>{let[n]=this.filter(s=>s.fullPath===_(e,i.name));n&&this.remove(n)}),this.on("delete:success",e=>{let[i]=this.filter(n=>n.fullPath===e);i&&this.remove(i)}),this.on("move:success",(e,i)=>{let[n]=this.filter(l=>l.fullPath===e);if(!n)return;let s=new K({directory:n.directory,fullPath:i,modified:n.modified,size:n.size,mimeType:n.mimeType,del:n.del});if(this.remove(n),n.path===s.path)return this.add(s);this.trigger("cache:invalidate",s.path)}),this.on("mkcol:success",(e,i,n)=>{_(n)===u(this,se)&&this.add(new K({directory:!0,fullPath:e,modified:new Date}))})}add(e){return e.collection=this,u(this,R).push(e),u(this,qe).call(this),this.trigger("collection:update",this),this}remove(e){return E(this,R,u(this,R).filter(i=>i!==e)),this.trigger("collection:update",this),this}map(e){return u(this,R).map(e)}filter(e){return u(this,R).filter(e)}get path(){return u(this,se)}};se=new WeakMap,R=new WeakMap,Oe=new WeakMap,qe=new WeakMap,st=new WeakMap,at=new WeakMap;var pe,Ie,ot,Re,ae,Be=class{constructor(t,e=new DOMParser){b(this,pe,void 0);b(this,Ie,void 0);b(this,ot,void 0);b(this,Re,(t,e)=>t.querySelector(e));b(this,ae,(t,e)=>{let i=u(this,Re).call(this,t,e);return i?i.textContent:""});E(this,ot,e),E(this,Ie,e.parseFromString(t,"application/xml"))}collection({sortDirectoriesFirst:t=!1}={}){return u(this,pe)||E(this,pe,new _e(this.responseToPrimitives(u(this,Ie).querySelectorAll("response")),{sortDirectoriesFirst:t})),u(this,pe)}responseToPrimitives(t){return Array.from(t).map(e=>({directory:!!u(this,Re).call(this,e,"collection"),fullPath:u(this,ae).call(this,e,"href"),modified:Date.parse(u(this,ae).call(this,e,"getlastmodified")),size:parseInt(u(this,ae).call(this,e,"getcontentlength"),10),mimeType:u(this,ae).call(this,e,"getcontenttype")}))}};pe=new WeakMap,Ie=new WeakMap,ot=new WeakMap,Re=new WeakMap,ae=new WeakMap;var Me,J,j,Ue,ze,W,je=class extends O{constructor({bypassCheck:e,sortDirectoriesFirst:i},n=new Map,s=new Te){super();b(this,Me,void 0);b(this,J,void 0);b(this,j,void 0);b(this,Ue,void 0);b(this,ze,e=>{let i=`${location.protocol}//${location.hostname}${location.port?`:${location.port}`:""}`,n=new RegExp(`^${i}`);if(!e.match(n)){if(e.match(/^http/))throw new TypeError(`Invalid destination host: '${e}'.`);return`${i}${e}`}return e});b(this,W,(e,i,...n)=>(this.trigger(`${i}:request`,...n),e().then(s=>s?(this.trigger(`${i}:success`,...n),s):(this.trigger(`${i}:failed`,...n),s)).catch(()=>{this.trigger(`${i}:failed`,...n)})));E(this,Me,e),E(this,Ue,i),E(this,J,n),E(this,j,s),this.bindEvents()}bindEvents(){this.on("cache:invalidate",e=>{u(this,J).has(e)&&u(this,J).delete(e)})}check(e){return $(this,null,function*(){return u(this,Me)?{ok:!0,status:200}:u(this,j).HEAD(e)})}copy(e,i,n=null){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).COPY(e,{headers:{Destination:u(this,ze).call(this,i)}}),"copy",e,i,n)})}del(e,i=null){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).DELETE(e),"delete",e,i)})}get(e){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).GET(e),"get",e)})}list(e,i=!1){return $(this,null,function*(){if(e.match(/\/$/)||(e=`${e}/`),!i){let p=yield u(this,J).get(e);if(p)return p}let n=yield this.check(e);if(!n||!n.ok&&n.status!==405)return;let s=yield u(this,j).PROPFIND(e),l=new Be(yield s.text()),f=l.collection({sortDirectoriesFirst:u(this,Ue)});return u(this,J).set(e,f),f})}mkcol(e,i="",n=""){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).MKCOL(e),"mkcol",e,i,n)})}move(e,i,n=null){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).MOVE(e,{headers:{Destination:u(this,ze).call(this,i)}}),"move",e,i,n)})}upload(e,i){return $(this,null,function*(){let n=_(e,i.name);return u(this,W).call(this,()=>u(this,j).PUT(n,{headers:{"Content-Type":i.type},body:i}),"upload",e,i)})}};Me=new WeakMap,J=new WeakMap,j=new WeakMap,Ue=new WeakMap,ze=new WeakMap,W=new WeakMap;var He=class extends Error{};var Ge,We,Ve,Ne=class extends O{constructor(e,i={},n=new je({bypassCheck:(s=>(s=i.bypassCheck)!=null?s:!1)(),sortDirectoriesFirst:(l=>(l=i.sortDirectoriesFirst)!=null?l:!1)()})){super();b(this,Ge,void 0);b(this,We,void 0);b(this,Ve,void 0);if(!(e instanceof HTMLElement))throw new TypeError(`Invalid container element: '${e}'.`);E(this,Ge,e),E(this,We,n),E(this,Ve,i)}get options(){return N({},u(this,Ve))}get dav(){return u(this,We)}get container(){return u(this,Ge)}render(){throw new He("'render' must be implemented in the child class.")}};Ge=new WeakMap,We=new WeakMap,Ve=new WeakMap;var Ze=class extends Ne{render(t=new Le,e=new Pe){this.container.appendChild(t.element),this.container.appendChild(e.element),this.bindEvents(),this.trigger("go")}bindEvents(t=this.container){let e=s=>{let l=document.createElement("span");return l.setAttribute(`on${s}`,""),typeof l[`on${s}`]=="function"},i=e("touchstart"),n=e("dragstart")&&e("drop");i&&this.container.classList.add("is-touch"),n||this.container.classList.add("no-drag-drop"),window.addEventListener("popstate",()=>{this.trigger("go")}),n&&(["dragenter","dragover"].forEach(s=>{t.addEventListener(s,l=>{l.preventDefault(),l.stopPropagation(),t.classList.add("active")})}),["dragleave","drop"].forEach(s=>{t.addEventListener(s,l=>{l.preventDefault(),l.stopPropagation(),t.classList.remove("active")})}),t.addEventListener("drop",s=>$(this,null,function*(){let{files:l}=s.dataTransfer;for(let f of l)this.trigger("upload",location.pathname,f)}))),this.on("error",({method:s,url:l,response:f})=>{new oe.default({content:`${s} ${l} failed: ${f.statusText} (${f.status})`,type:"error"})}),this.on("upload",(s,l)=>$(this,null,function*(){let f=yield this.dav.list(s),[p]=f.filter(x=>x.name===l.name);if(p&&!confirm(`A file called '${p.title}' already exists, would you like to overwrite it?`))return!1;yield this.dav.upload(s,l)})),this.on("upload:success",(s,l)=>$(this,null,function*(){new oe.default({content:`'${l.name}' has been successfully uploaded.`,type:"success",hide:5})})),this.on("move",(s,l,f)=>$(this,null,function*(){yield this.dav.move(s,l,f)})),this.on("move:success",(s,l,f)=>{let[,p,x]=l.match(/^(.*)\/([^/]+\/?)$/),L=p&&p.replace(`${location.protocol}//${location.hostname}${location.port?`:${location.port}`:""}`,"");if(f.path===L)return new oe.default({content:`'${f.title}' successfully renamed to '${decodeURIComponent(x)}'.`,type:"success",hide:5});new oe.default({content:`'${f.title}' successfully moved to '${decodeURIComponent(L)}'.`,type:"success",hide:5})}),this.on("delete",(s,l)=>$(this,null,function*(){yield this.dav.del(s,l)})),this.on("delete:success",(s,l)=>{new oe.default({content:`'${l.title}' has been deleted.`,type:"success",hide:5})}),this.on("get",(s,l)=>$(this,null,function*(){let f=yield this.dav.get(s);l(f&&(yield f.text()))})),this.on("check",(s,l,f)=>$(this,null,function*(){let p=yield this.dav.check(s);if(p&&p.ok&&l){l(p);return}f&&f()})),this.on("create-directory",(s,l,f)=>$(this,null,function*(){yield this.dav.mkcol(s,l,f)})),this.on("mkcol:success",(s,l)=>{new oe.default({content:`'${l}' has been created.`,type:"success",hide:5})}),this.on("go",(...p)=>$(this,[...p],function*(s=location.pathname,l=!1,f=null){let x=location.pathname;this.trigger("list:update:request",s);let L=yield this.dav.list(s,l);if(!L){this.trigger("list:update:failed"),f&&f();return}this.trigger("list:update:success",L),s!==x&&history.pushState(history.state,s,s),document.title=`${decodeURIComponent(s)} | WebDAV`}))}};var zt=new Ze(document.body,{bypassCheck:!!document.querySelector("[data-disable-check]"),sortDirectoriesFirst:!!document.querySelector("[data-sort-directories-first]")});document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>zt.render()):zt.render();})(); +
        `;super(t),this.bindEvents()}bindEvents(t=this.element){t.querySelector('input[type="file"]').addEventListener("change",e=>$(this,null,function*(){for(let n of e.target.files)this.trigger("upload",location.pathname,n);t.value=null})),t.querySelector(".create-directory").addEventListener("click",e=>$(this,null,function*(){e.preventDefault();let n=prompt("","Directory name");!n||this.trigger("create-directory",`${_(location.pathname,n)}/`,n,location.pathname)}))}};var oe=pt(Mt());var hr={PROPFIND:{headers:{Depth:1}}},X=(r,t,e,n)=>fetch(t,tt(N(N({},hr[r]||null),e),{method:r})).then(i=>{if(!i.ok){n.trigger("error",{method:r,url:t,response:i});return}return i}),ke=class extends O{GET(t,e={}){return X("GET",t,e,this)}HEAD(t,e={}){return X("HEAD",t,e,this)}PUT(t,e={}){return X("PUT",t,e,this)}PROPFIND(t,e={}){return X("PROPFIND",t,e,this)}DELETE(t,e={}){return X("DELETE",t,e,this)}MKCOL(t,e={}){return X("MKCOL",t,e,this)}COPY(t,e={}){return X("COPY",t,e,this)}MOVE(t,e={}){return X("MOVE",t,e,this)}};var Te,$e,le,ue,Pe,ne,Ce,ce,De,he,Se,de,ie,Y,bt=class extends O{constructor({directory:e=!1,fullPath:n,title:i="",modified:s,size:l=0,mimeType:f="",del:p=!0,rename:x=!0,placeholder:L=!1,collection:v=null}){super();b(this,Te,void 0);b(this,$e,void 0);b(this,le,void 0);b(this,ue,void 0);b(this,Pe,void 0);b(this,ne,void 0);b(this,Ce,void 0);b(this,ce,void 0);b(this,De,void 0);b(this,he,void 0);b(this,Se,void 0);b(this,de,void 0);b(this,ie,void 0);b(this,Y,void 0);let[A,w]=this.getFilename(n);E(this,De,A),E(this,ce,w),E(this,$e,e),E(this,Pe,n),E(this,ie,i),E(this,Ce,s),E(this,de,l),E(this,ne,f),E(this,Te,p),E(this,Se,x),E(this,he,L),this.collection=v}createParentEntry(){return this.update({fullPath:this.path,title:"←",del:!1,rename:!1})}getFilename(e){let n=_(e).split(/\//),i=n.pop();return[_(...n),i]}update(e={}){return new bt(N({directory:this.directory,fullPath:this.fullPath,modified:this.modified,size:this.size,mimeType:this.mimeType,del:this.del,rename:this.rename,collection:this.collection},e))}get del(){return u(this,Te)}get directory(){return u(this,$e)}get displaySize(){return this.directory?"":(u(this,le)||E(this,le,["bytes","KiB","MiB","GiB","TiB","PiB"].reduce((e,n)=>typeof e=="string"?e:e<1024?`${e.toFixed(2*(n==="bytes"?0:1))} ${n}`:e/1024,u(this,de))),u(this,le))}get extension(){return this.directory?"":(u(this,ue)||E(this,ue,this.name.split(".").pop()),u(this,ue))}get fullPath(){return u(this,Pe)}get mimeType(){return u(this,ne)}get modified(){return u(this,Ce)}get name(){return u(this,ce)}get path(){return u(this,De)}get placeholder(){return u(this,he)}set placeholder(e){E(this,he,e),this.trigger("entry:update",this)}get rename(){return u(this,Se)}get size(){return u(this,de)}get title(){return u(this,ie)||E(this,ie,decodeURIComponent(u(this,ce))),u(this,ie)}get type(){if(!u(this,Y)){let e,n={text:/\.(?:te?xt|i?nfo|php|cgi|faq|ini|htaccess|log|md|sql|sfv|conf|sh|pl|pm|py|rb|(?:s?c|sa)ss|js|java|coffee|[sx]?html?|xml)$/i,image:/\.(?:jpe?g|gif|a?png|svg)$/i,video:/\.(?:mp(?:e?g)?4|mov|avi|webm|ogv|mkv)$/i,audio:/\.(?:mp3|wav|ogg|flac|mka)$/i,font:/\.(?:woff2?|eot|[ot]tf)$/i,pdf:/\.pdf/i};for(let[i,s]of Object.entries(n))if(this.name.match(s))return E(this,Y,i);if(u(this,ne)&&(e=u(this,ne).split("/").shift()))return E(this,Y,e);E(this,Y,"unknown")}return u(this,Y)}},K=bt;Te=new WeakMap,$e=new WeakMap,le=new WeakMap,ue=new WeakMap,Pe=new WeakMap,ne=new WeakMap,Ce=new WeakMap,ce=new WeakMap,De=new WeakMap,he=new WeakMap,Se=new WeakMap,de=new WeakMap,ie=new WeakMap,Y=new WeakMap;var se,R,Oe,Be,st,at,_e=class extends O{constructor(e,{sortDirectoriesFirst:n=!1}={}){super();b(this,se,void 0);b(this,R,void 0);b(this,Oe,void 0);b(this,Be,()=>u(this,R).sort((e,n)=>u(this,Oe)&&u(this,at).call(this,e,n)||u(this,st).call(this,e,n)));b(this,st,(e,n)=>e.fullPathn.directory-e.directory);E(this,Oe,n),E(this,R,e.map(s=>new K(tt(N({},s),{collection:this}))));let i=u(this,R).shift();E(this,se,_(i.fullPath)),i.fullPath!=="/"&&u(this,R).unshift(i.createParentEntry()),u(this,Be).call(this),this.bindEvents()}bindEvents(){this.on("upload:request",(e,n)=>{_(e)===u(this,se)&&this.add(new K({fullPath:_(e,n.name),modified:n.lastModifiedDate,size:n.size,mimeType:n.type,placeholder:!0}))}),this.on("upload:success",(e,n)=>{let[i]=this.filter(s=>s.fullPath===_(e,n.name));i&&(i.placeholder=!1)}),this.on("upload:failed",(e,n)=>{let[i]=this.filter(s=>s.fullPath===_(e,n.name));i&&this.remove(i)}),this.on("delete:success",e=>{let[n]=this.filter(i=>i.fullPath===e);n&&this.remove(n)}),this.on("move:success",(e,n)=>{let[i]=this.filter(l=>l.fullPath===e);if(!i)return;i.directory&&!n.endsWith("/")&&(n+="/");let s=new K({directory:i.directory,fullPath:n,modified:i.modified,size:i.size,mimeType:i.mimeType,del:i.del});if(this.remove(i),i.path===s.path)return this.add(s);this.trigger("cache:invalidate",s.path)}),this.on("mkcol:success",(e,n,i)=>{_(i)===u(this,se)&&this.add(new K({directory:!0,fullPath:e,modified:new Date}))})}add(e){return e.collection=this,u(this,R).push(e),u(this,Be).call(this),this.trigger("collection:update",this),this}remove(e){return E(this,R,u(this,R).filter(n=>n!==e)),this.trigger("collection:update",this),this}map(e){return u(this,R).map(e)}filter(e){return u(this,R).filter(e)}get path(){return u(this,se)}};se=new WeakMap,R=new WeakMap,Oe=new WeakMap,Be=new WeakMap,st=new WeakMap,at=new WeakMap;var fe,qe,ot,Re,ae,Ie=class{constructor(t,e=new DOMParser){b(this,fe,void 0);b(this,qe,void 0);b(this,ot,void 0);b(this,Re,(t,e)=>t.getElementsByTagName(e)[0]);b(this,ae,(t,e)=>{let n=u(this,Re).call(this,t,e);return n?n.textContent:""});E(this,ot,e),E(this,qe,e.parseFromString(t,"application/xml"))}collection({sortDirectoriesFirst:t=!1}={}){return u(this,fe)||E(this,fe,new _e(this.responseToPrimitives(u(this,qe).getElementsByTagName("D:response")),{sortDirectoriesFirst:t})),u(this,fe)}responseToPrimitives(t){return Array.from(t).map(e=>({directory:!!u(this,Re).call(this,e,"D:collection"),fullPath:u(this,ae).call(this,e,"D:href"),modified:Date.parse(u(this,ae).call(this,e,"lp1:getlastmodified")),size:parseInt(u(this,ae).call(this,e,"lp1:getcontentlength"),10),mimeType:u(this,ae).call(this,e,"D:getcontenttype")}))}};fe=new WeakMap,qe=new WeakMap,ot=new WeakMap,Re=new WeakMap,ae=new WeakMap;var Me,J,j,Ue,ze,W,je=class extends O{constructor({bypassCheck:e,sortDirectoriesFirst:n},i=new Map,s=new ke){super();b(this,Me,void 0);b(this,J,void 0);b(this,j,void 0);b(this,Ue,void 0);b(this,ze,e=>{let n=`${location.protocol}//${location.hostname}${location.port?`:${location.port}`:""}`,i=new RegExp(`^${n}`);if(!e.match(i)){if(e.match(/^http/))throw new TypeError(`Invalid destination host: '${e}'.`);return`${n}${e}`}return e});b(this,W,(e,n,...i)=>(this.trigger(`${n}:request`,...i),e().then(s=>s?(this.trigger(`${n}:success`,...i),s):(this.trigger(`${n}:failed`,...i),s)).catch(()=>{this.trigger(`${n}:failed`,...i)})));E(this,Me,e),E(this,Ue,n),E(this,J,i),E(this,j,s),this.bindEvents()}bindEvents(){this.on("cache:invalidate",e=>{u(this,J).has(e)&&u(this,J).delete(e)})}check(e){return $(this,null,function*(){return u(this,Me)?{ok:!0,status:200}:u(this,j).HEAD(e)})}copy(e,n,i=null){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).COPY(e,{headers:{Destination:u(this,ze).call(this,n)}}),"copy",e,n,i)})}del(e,n=null){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).DELETE(e),"delete",e,n)})}get(e){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).GET(e),"get",e)})}list(e,n=!1){return $(this,null,function*(){if(e.match(/\/$/)||(e=`${e}/`),!n){let p=yield u(this,J).get(e);if(p)return p}let i=yield this.check(e);if(!i||!i.ok&&i.status!==405)return;let s=yield u(this,j).PROPFIND(e),l=new Ie(yield s.text()),f=l.collection({sortDirectoriesFirst:u(this,Ue)});return u(this,J).set(e,f),f})}mkcol(e,n="",i=""){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).MKCOL(e),"mkcol",e,n,i)})}move(e,n,i=null){return $(this,null,function*(){return u(this,W).call(this,()=>u(this,j).MOVE(e,{headers:{Destination:u(this,ze).call(this,n)}}),"move",e,n,i)})}upload(e,n){return $(this,null,function*(){let i=_(e,n.name);return u(this,W).call(this,()=>u(this,j).PUT(i,{headers:{"Content-Type":n.type},body:n}),"upload",e,n)})}};Me=new WeakMap,J=new WeakMap,j=new WeakMap,Ue=new WeakMap,ze=new WeakMap,W=new WeakMap;var He=class extends Error{};var Ge,We,Ve,Ne=class extends O{constructor(e,n={},i=new je({bypassCheck:(s=>(s=n.bypassCheck)!=null?s:!1)(),sortDirectoriesFirst:(l=>(l=n.sortDirectoriesFirst)!=null?l:!1)()})){super();b(this,Ge,void 0);b(this,We,void 0);b(this,Ve,void 0);if(!(e instanceof HTMLElement))throw new TypeError(`Invalid container element: '${e}'.`);E(this,Ge,e),E(this,We,i),E(this,Ve,n)}get options(){return N({},u(this,Ve))}get dav(){return u(this,We)}get container(){return u(this,Ge)}render(){throw new He("'render' must be implemented in the child class.")}};Ge=new WeakMap,We=new WeakMap,Ve=new WeakMap;var Ze=class extends Ne{render(t=new Fe,e=new Le){this.container.appendChild(t.element),this.container.appendChild(e.element),this.bindEvents(),this.trigger("go")}bindEvents(t=this.container){let e=s=>{let l=document.createElement("span");return l.setAttribute(`on${s}`,""),typeof l[`on${s}`]=="function"},n=e("touchstart"),i=e("dragstart")&&e("drop");n&&this.container.classList.add("is-touch"),i||this.container.classList.add("no-drag-drop"),window.addEventListener("popstate",()=>{this.trigger("go")}),i&&(["dragenter","dragover"].forEach(s=>{t.addEventListener(s,l=>{l.preventDefault(),l.stopPropagation(),t.classList.add("active")})}),["dragleave","drop"].forEach(s=>{t.addEventListener(s,l=>{l.preventDefault(),l.stopPropagation(),t.classList.remove("active")})}),t.addEventListener("drop",s=>$(this,null,function*(){let{files:l}=s.dataTransfer;for(let f of l)this.trigger("upload",location.pathname,f)}))),this.on("error",({method:s,url:l,response:f})=>{new oe.default({content:`${s} ${l} failed: ${f.statusText} (${f.status})`,type:"error"})}),this.on("upload",(s,l)=>$(this,null,function*(){let f=yield this.dav.list(s),[p]=f.filter(x=>x.name===l.name);if(p&&!confirm(`A file called '${p.title}' already exists, would you like to overwrite it?`))return!1;yield this.dav.upload(s,l)})),this.on("upload:success",(s,l)=>$(this,null,function*(){new oe.default({content:`'${l.name}' has been successfully uploaded.`,type:"success",hide:5})})),this.on("move",(s,l,f)=>$(this,null,function*(){yield this.dav.move(s,l,f)})),this.on("move:success",(s,l,f)=>{let[,p,x]=l.match(/^(.*)\/([^/]+\/?)$/),L=p&&p.replace(`${location.protocol}//${location.hostname}${location.port?`:${location.port}`:""}`,"");if(f.path===L||f.directory)return new oe.default({content:`'${f.title}' successfully renamed to '${decodeURIComponent(x||L)}'.`,type:"success",hide:5});new oe.default({content:`'${f.title}' successfully moved to '${decodeURIComponent(L)}'.`,type:"success",hide:5})}),this.on("delete",(s,l)=>$(this,null,function*(){yield this.dav.del(s,l)})),this.on("delete:success",(s,l)=>{new oe.default({content:`'${l.title}' has been deleted.`,type:"success",hide:5})}),this.on("get",(s,l)=>$(this,null,function*(){let f=yield this.dav.get(s);l(f&&(yield f.text()))})),this.on("check",(s,l,f)=>$(this,null,function*(){let p=yield this.dav.check(s);if(p&&p.ok&&l){l(p);return}f&&f()})),this.on("create-directory",(s,l,f)=>$(this,null,function*(){yield this.dav.mkcol(s,l,f)})),this.on("mkcol:success",(s,l)=>{new oe.default({content:`'${l}' has been created.`,type:"success",hide:5})}),this.on("go",(...p)=>$(this,[...p],function*(s=location.pathname,l=!1,f=null){let x=location.pathname;this.trigger("list:update:request",s);let L=yield this.dav.list(s,l);if(!L){this.trigger("list:update:failed"),f&&f();return}this.trigger("list:update:success",L),s!==x&&history.pushState(history.state,s,s),document.title=`${decodeURIComponent(s)} | WebDAV`}))}};var Ut=new Ze(document.body,{bypassCheck:!!document.querySelector("[data-disable-check]"),sortDirectoriesFirst:!!document.querySelector("[data-sort-directories-first]")});document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>Ut.render()):Ut.render();})(); /** * Prism: Lightweight, robust, elegant syntax highlighting * diff --git a/tests/functional/List.test.ts b/tests/functional/List.test.ts new file mode 100644 index 0000000..cee7e13 --- /dev/null +++ b/tests/functional/List.test.ts @@ -0,0 +1,252 @@ +import { + isLightboxClosed, + isPageReady, + isLightboxShown, + expectToastShown, + isElementGone, + isElementThere, +} from '../lib/isReady'; +import { ElementHandle } from 'puppeteer'; +import * as fs from 'fs'; + +const BASE_URL = process.env.BASE_URL ?? 'http://localhost:8080/', + DESTINATION_FONT_FILE = '/tmp/BlackAndWhitePicture-Regular.ttf'; + +describe('WebDAV.js', () => { + describe('List', () => { + it('should be possible to preview items', async () => { + // Wait for page JS to replace page contents + await isPageReady(page, BASE_URL); + + await ( + [ + [ + '[data-full-path="/0.jpg"]', + async (lightbox: ElementHandle) => { + await expect(await lightbox.$('img')).toBeTruthy(); + }, + ], + [ + '[data-full-path="/BlackAndWhitePicture-Regular.ttf"]', + async (lightbox: ElementHandle) => { + await expect(await lightbox.$('img')).toBeFalsy(); + await expect(await lightbox.$$('style')).toHaveLength(1); + await expect(await lightbox.$$('h1')).toHaveLength(1); + await expect(await lightbox.$$('p')).toHaveLength(4); + }, + ], + [ + '[data-full-path="/dummy.pdf"]', + async (lightbox: ElementHandle) => { + await expect(await lightbox.$('iframe')).toBeTruthy(); + }, + ], + [ + '[data-full-path="/style.css"]', + async (lightbox: ElementHandle) => { + await expect(await lightbox.$('pre.language-css')).toBeTruthy(); + }, + ], + [ + '[data-full-path="/video.mp4"]', + async (lightbox: ElementHandle) => { + await expect(await lightbox.$('video[autoplay]')).toBeTruthy(); + }, + ], + ] as [string, (lightbox: ElementHandle) => Promise][] + ).reduce( + async ( + previous: Promise, + [selector, expectation] + ): Promise => { + await previous; + + await page.click(selector); + + await expectation(await isLightboxShown(page)); + + await isLightboxClosed(page); + + await page.waitForTimeout(500); + }, + Promise.resolve(null) + ); + }); + + it('should be possible to navigate directories', async () => { + await isPageReady(page, BASE_URL); + + await expect(await page.$$('main ul li')).toHaveLength(23); + + await page.click('[data-full-path="/source.js/"]'); + + await page.waitForTimeout(200); + + await expect(await page.$$('main ul li')).toHaveLength(1); + + await expect(await page.$('[data-full-path="/"]')).toBeTruthy(); + + await page.click('[data-full-path="/"]'); + + await page.waitForTimeout(200); + + await expect(await page.$$('main ul li')).toHaveLength(23); + }); + + it('should be possible to create a new navigable directory, rename it and delete it', async () => { + await isPageReady(page, BASE_URL); + + page.once( + 'dialog', + async (dialog) => await dialog.accept('new-directory') + ); + + await page.click('.create-directory'); + + await isElementThere(page, '[data-full-path="/new-directory/"]'); + + await expectToastShown( + page, + `'new-directory' has been created.`, + 'success' + ); + + await page.click('[data-full-path="/new-directory/"] .rename'); + + await page.waitForFunction(() => + document.activeElement.matches( + '[data-full-path="/new-directory/"] input[type="text"]' + ) + ); + + await page.keyboard.down('Control'); + await page.keyboard.press('Backspace'); + await page.keyboard.up('Control'); + + await page.type( + '[data-full-path="/new-directory/"] input[type="text"]', + 'folder' + ); + + await page.keyboard.press('Enter'); + + await expectToastShown( + page, + `'new-directory' successfully renamed to 'new-folder'.`, + 'success' + ); + + await isElementThere(page, '[data-full-path="/new-folder/"]'); + + page.once('dialog', async (dialog) => await dialog.accept()); + + await page.click('[data-full-path="/new-folder/"] .delete'); + + await isElementGone(page, '[data-full-path="/new-folder/"]'); + + await expectToastShown(page, `'new-folder' has been deleted.`, 'success'); + }); + + it('should show expected errors', async () => { + await isPageReady(page, BASE_URL); + + await page.click('[data-full-path="/inaccessible-dir/"]'); + + await expectToastShown( + page, + 'HEAD /inaccessible-dir/ failed: Forbidden (403)', + 'error' + ); + + await page.click('[data-full-path="/inaccessible-file"]'); + + await expectToastShown( + page, + 'GET /inaccessible-file failed: Forbidden (403)', + 'error' + ); + + await page.click('[data-full-path="/inaccessible-image.jpg"]'); + + await expectToastShown( + page, + 'HEAD /inaccessible-image.jpg failed: Forbidden (403)', + 'error' + ); + + await page.click('[data-full-path="/inaccessible-text-file.txt"]'); + + await expectToastShown( + page, + 'GET /inaccessible-text-file.txt failed: Forbidden (403)', + 'error' + ); + }); + + it('should be possible to download a file', async () => { + await isPageReady(page, BASE_URL); + + await expect(() => fs.accessSync(DESTINATION_FONT_FILE)).toThrow(); + + await page + .target() + .createCDPSession() + .then((client) => + client.send('Page.setDownloadBehavior', { + behavior: 'allow', + downloadPath: '/tmp', + }) + ); + + await page.click( + '[data-full-path="/BlackAndWhitePicture-Regular.ttf"] [download]' + ); + + // wait for the file to download + await page.waitForTimeout(400); + + await expect(() => fs.accessSync(DESTINATION_FONT_FILE)).not.toThrow(); + + fs.rmSync(DESTINATION_FONT_FILE); + }); + + it('should be possible to upload a file', async () => { + await isPageReady(page, BASE_URL); + + const elementHandle = (await page.$( + 'input[type=file]' + )) as ElementHandle; + + await elementHandle.uploadFile('./package.json'); + + await expectToastShown( + page, + `'package.json' has been successfully uploaded.`, + 'success' + ); + + await page.click('[data-full-path="/package.json"]'); + + await page.once('dialog', async (dialog) => await dialog.accept()); + + await page.click('[data-full-path="/package.json"] .delete'); + + await isElementGone(page, '[data-full-path="/package.json"]'); + + await expectToastShown( + page, + `'package.json' has been deleted.`, + 'success' + ); + }); + }); + + beforeAll(async () => { + try { + fs.accessSync(DESTINATION_FONT_FILE); + fs.rmSync(DESTINATION_FONT_FILE); + } catch (e) { + // we don't need to do anything here + } + }); +}); diff --git a/tests/jest.ts-puppeteer.preset.chrome.ts b/tests/jest.ts-puppeteer.preset.chrome.ts new file mode 100644 index 0000000..592ccc1 --- /dev/null +++ b/tests/jest.ts-puppeteer.preset.chrome.ts @@ -0,0 +1 @@ +module.exports = require('./jest.ts-puppeteer.preset')('chrome'); diff --git a/tests/jest.ts-puppeteer.preset.firefox.ts b/tests/jest.ts-puppeteer.preset.firefox.ts new file mode 100644 index 0000000..ae744ae --- /dev/null +++ b/tests/jest.ts-puppeteer.preset.firefox.ts @@ -0,0 +1 @@ +module.exports = require('./jest.ts-puppeteer.preset')('firefox'); diff --git a/tests/jest.ts-puppeteer.preset.ts b/tests/jest.ts-puppeteer.preset.ts new file mode 100644 index 0000000..590568a --- /dev/null +++ b/tests/jest.ts-puppeteer.preset.ts @@ -0,0 +1,15 @@ +const { jsWithTs } = require('ts-jest/presets'); +const jestPuppeteerPreset = require('jest-puppeteer/jest-preset.js'); + +const combined = { + ...jsWithTs, + ...jestPuppeteerPreset, +}; + +module.exports = (product) => ({ + ...combined, + launch: { + ...(combined.launch ?? {}), + product, + }, +}); diff --git a/tests/lib/getProperties.ts b/tests/lib/getProperties.ts new file mode 100644 index 0000000..d3880e0 --- /dev/null +++ b/tests/lib/getProperties.ts @@ -0,0 +1,38 @@ +import { ElementHandle } from 'puppeteer'; + +export const getRawProperty = async < + T extends HTMLElement = HTMLElement, + K extends keyof T = keyof T +>( + element: Promise> | ElementHandle, + property: K +): Promise => + await (await (await element)?.getProperty(property as string))?.jsonValue(); + +export const getRawProperties = async < + T extends HTMLElement = HTMLElement, + K extends keyof T = keyof T +>( + element: Promise> | ElementHandle, + ...properties: K[] +) => + Promise.all(properties.map((property) => getRawProperty(element, property))); + +export const getRawPropertyFromMany = async < + T extends HTMLElement = HTMLElement, + K extends keyof T = keyof T +>( + elements: Promise[]> | ElementHandle[], + property: K +): Promise => + Promise.all( + (await elements).map( + async (element): Promise => + (['innerText', 'innerHTML'] as K[]).includes(property) + ? await element?.evaluate<[string]>( + (element: T, property: string) => element[property], + property as string + ) + : getRawProperty(element, property) + ) + ); diff --git a/tests/lib/grantClipboardPermissions.ts b/tests/lib/grantClipboardPermissions.ts new file mode 100644 index 0000000..6a9b017 --- /dev/null +++ b/tests/lib/grantClipboardPermissions.ts @@ -0,0 +1,57 @@ +import { Page } from 'puppeteer'; + +export const grantRawPermissions = async ( + page: Page, + permissions: string[] +) => { + const context = await page.browserContext(), + url = new URL(page.url()); + + // @ts-ignore + await context._connection.send('Browser.grantPermissions', { + origin: url.origin, + // @ts-ignore + browserContextId: context._id, + permissions: permissions, + }); + + await page.reload(); +}; + +// https://github.com/puppeteer/puppeteer/issues/3241#issuecomment-751489962: +// > When I try to grant clipboard-write permissions in headless mode it changes it to 'denied' instead (if I don't call it is it 'prompt'): +// > +// > context.overridePermissions(url.origin, ['clipboard-write']) +// > +// > const page = await context.newPage() +// > await page.goto(url.origin) +// > const state = await page.evaluate(async () => { +// > return (await navigator.permissions.query({name: 'clipboard-write'})).state; +// > }); +// > console.log(state) // denied +// > +// > macOS: 10.15.7 +// > puppeteer: 5.4.1 +// +// I'm not an expert in this regard, but at least when limiting the scope of this discussion to clipboard-write and clipboard-read, it seems to me that there is a bug/mistake in the overridePermissions() method. As per its documentation: +// +// > An array of permissions to grant. All permissions that are not listed here will be automatically denied. +// +// So, if you specify either clipboard-write and clipboard-read as permissions then both will be mapped to clipboardReadWrite which is the only permission that will be granted. By looking at the Chrome DevTools Protocol (which overridePermissions() uses to override permissions) I found that there are actually two permissions related to the clipboard: clipboardSanitizedWrite and clipboardReadWrite. When I mimicked overridePermissions()'s CDP call manually using 'clipboardSanitizedWrite' as permissions I was able to use navigator.clipboard.writeText and your snipped returned "granted" (instead of "denied"). More specifically, the following snippet should work: +// +// await context._connection.send('Browser.grantPermissions', { +// origin: url.origin, +// browserContextId: this._id || undefined, +// permissions: ['clipboardReadWrite', 'clipboardSanitizedWrite'], +// }); +// +// const page = await context.newPage() +// await page.goto(url.origin) +// const state = await page.evaluate(async () => { +// return (await navigator.permissions.query({name: 'clipboard-write'})).state; +// }); +// console.log(state) // granted +// +// It's not pretty and should probably be fixed in overridePermissions(), but it gets the job done. +export const grantClipboardPermissions = (page: Page) => + grantRawPermissions(page, ['clipboardReadWrite', 'clipboardSanitizedWrite']); diff --git a/tests/lib/isReady.ts b/tests/lib/isReady.ts new file mode 100644 index 0000000..e1638eb --- /dev/null +++ b/tests/lib/isReady.ts @@ -0,0 +1,64 @@ +import { Page } from 'puppeteer'; + +export const isPageReady = async (page: Page, url: string) => { + await page.goto(url); + + await isElementThere(page, 'main ul li'); +}; + +export const isElementThere = async (page: Page, selector: string) => + await page.waitForFunction( + (selector) => !!document.querySelector(selector), + {}, + selector + ); + +export const isElementGone = async (page: Page, selector: string) => + await page.waitForFunction( + (selector) => !document.querySelector(selector), + {}, + selector + ); + +export const isLightboxShown = async (page: Page) => { + await isElementThere(page, '.basicLightbox--visible'); + + return page.$('.basicLightbox--visible'); +}; + +export const isLightboxClosed = async (page: Page) => { + const lightbox = await isLightboxShown(page); + + // Click on the overlay to close the lightbox + await lightbox.click({ + offset: { + x: 10, + y: 10, + }, + }); + + await isElementGone(page, '.basicLightbox--visible'); +}; + +export const expectToastShown = async ( + page: Page, + text: string, + type: string +) => { + await page.waitForTimeout(100); + + const toast = await page.$('.toast__container .toast'); + + await expect( + await toast.evaluate((toast) => toast.childNodes[1].textContent) + ).toEqual(text); + + await expect( + await toast.evaluate( + (toast, type: string) => toast.classList.contains(`toast--${type}`), + type + ) + ).toBeTruthy(); + + await toast.evaluate((toast) => toast.remove()); +}; diff --git a/tests/unit/DAV.test.ts b/tests/unit/DAV.test.ts index 3231d7b..5b38855 100644 --- a/tests/unit/DAV.test.ts +++ b/tests/unit/DAV.test.ts @@ -1,42 +1,60 @@ import Collection from '../../src/lib/DAV/Collection'; import DAV from '../../src/lib/DAV'; +import { DOMParser } from '@xmldom/xmldom'; import HTTP from '../../src/lib/HTTP'; -// @ts-ignore -const MockHttp = jest.createMockFromModule('../../src/lib/HTTP').default; - describe('DAV', () => { - // @ts-ignore - console.log((MockHttp as HTTP).GET('', {})); - - const getSpies = (SpyHTTPReturns = {}, SpyCacheReturns = {}) => { - const SpyHTTP = jasmine.createSpyObj('HTTP', [ - 'GET', - 'HEAD', - 'PUT', - 'PROPFIND', - 'DELETE', - 'MKCOL', - 'COPY', - 'MOVE', - ]), - SpyCache = jasmine.createSpyObj('Cache', ['delete', 'get', 'has', 'set']); + const getSpies = ( + SpyHTTPReturns = {}, + SpyCacheReturns = {} + ): [HTTP, Map] => { + const SpyHTTP = new HTTP(), + SpyCache = new Map(); + [ - [SpyHTTP, SpyHTTPReturns], - [SpyCache, SpyCacheReturns], - ].forEach(([object, returnValues]) => - Object.entries(returnValues).forEach( - ([method, returnValue]) => - (object[method] = object[method].and.returnValue(returnValue)) - ) + 'GET', + 'HEAD', + 'PUT', + 'PROPFIND', + 'DELETE', + 'MKCOL', + 'COPY', + 'MOVE', + ].forEach( + (methodName) => + (SpyHTTP[methodName] = jest.fn( + () => + new Promise((resolve) => + resolve(SpyHTTPReturns[methodName] ?? null) + ) + )) + ); + + ['delete', 'get', 'has', 'set'].forEach( + (methodName) => + (SpyCache[methodName] = jest.fn( + () => SpyCacheReturns[methodName] ?? null + )) ); return [SpyHTTP, SpyCache]; }; + if (typeof window === 'undefined') { + global.location = { + ...global.location, + protocol: 'http:', + host: 'localhost', + hostname: 'localhost', + }; + + global.DOMParser = DOMParser; + } + it('should fire a HEAD request on check', () => { const [SpyHTTP, SpyCache] = getSpies(), dav = new DAV({}, SpyCache, SpyHTTP); + dav.check('/checkHeadRequest'); expect(SpyHTTP.HEAD).toHaveBeenCalledWith('/checkHeadRequest'); }); @@ -44,6 +62,7 @@ describe('DAV', () => { it('should fire a COPY request on copy', () => { const [SpyHTTP, SpyCache] = getSpies(), dav = new DAV({}, SpyCache, SpyHTTP); + dav.copy('/copySource', '/copyDestination'); expect(SpyHTTP.COPY).toHaveBeenCalledWith('/copySource', { headers: { @@ -57,6 +76,7 @@ describe('DAV', () => { it('should fire a DELETE request on del', () => { const [SpyHTTP, SpyCache] = getSpies(), dav = new DAV({}, SpyCache, SpyHTTP); + dav.del('/checkDeleteRequest'); expect(SpyHTTP.DELETE).toHaveBeenCalledWith('/checkDeleteRequest'); }); @@ -64,6 +84,7 @@ describe('DAV', () => { it('should fire a GET request on get', () => { const [SpyHTTP, SpyCache] = getSpies(), dav = new DAV({}, SpyCache, SpyHTTP); + dav.get('/checkGetRequest'); expect(SpyHTTP.GET).toHaveBeenCalledWith('/checkGetRequest'); }); @@ -85,6 +106,7 @@ describe('DAV', () => { ), dav = new DAV({}, SpyCache, SpyHTTP), collection = await dav.list('/checkPropfindRequest'); + expect(SpyCache.get).toHaveBeenCalledWith('/checkPropfindRequest/'); expect(SpyHTTP.HEAD).toHaveBeenCalledWith('/checkPropfindRequest/'); expect(SpyHTTP.PROPFIND).toHaveBeenCalledWith('/checkPropfindRequest/'); @@ -98,6 +120,8 @@ describe('DAV', () => { it('should fire an MKCOL request on mkcol', () => { const [SpyHTTP, SpyCache] = getSpies(), dav = new DAV({}, SpyCache, SpyHTTP); + 0; + dav.mkcol('/checkMkcolRequest'); expect(SpyHTTP.MKCOL).toHaveBeenCalledWith('/checkMkcolRequest'); }); @@ -105,6 +129,7 @@ describe('DAV', () => { it('should fire a MOVE request on move', () => { const [SpyHTTP, SpyCache] = getSpies(), dav = new DAV({}, SpyCache, SpyHTTP); + dav.move('/moveSource', '/moveDestination'); expect(SpyHTTP.MOVE).toHaveBeenCalledWith('/moveSource', { @@ -116,20 +141,22 @@ describe('DAV', () => { }); }); - it('should fire a PUT request on upload', () => { - const [SpyHTTP, SpyCache] = getSpies(), - dav = new DAV({}, SpyCache, SpyHTTP), - file = new File([''], 'uploadTest', { - type: 'text/plain', - }); - dav.upload('/path/', file); - expect(SpyHTTP.PUT).toHaveBeenCalledWith('/path/uploadTest', { - headers: { - 'Content-Type': file.type, - }, - body: file, - }); - }); + test.todo('should fire a PUT request on upload - functional only'); + // it('should fire a PUT request on upload', () => { + // const [SpyHTTP, SpyCache] = getSpies(), + // dav = new DAV({}, SpyCache, SpyHTTP), + // file = new File([''], 'uploadTest', { + // type: 'text/plain', + // }); + // + // dav.upload('/path/', file); + // expect(SpyHTTP.PUT).toHaveBeenCalledWith('/path/uploadTest', { + // headers: { + // 'Content-Type': file.type, + // }, + // body: file, + // }); + // }); it('should not fire a HEAD request on list when `bypassCheck` is set', async () => { const [SpyHTTP, SpyCache] = getSpies( @@ -153,6 +180,7 @@ describe('DAV', () => { SpyCache, SpyHTTP ); + await dav.list('/checkPropfindRequest'); expect(SpyHTTP.HEAD).not.toHaveBeenCalledWith('/checkPropfindRequest/'); diff --git a/tests/unit/DAV/Entry.test.ts b/tests/unit/DAV/Entry.test.ts index 183fdd2..3b7010b 100644 --- a/tests/unit/DAV/Entry.test.ts +++ b/tests/unit/DAV/Entry.test.ts @@ -7,14 +7,12 @@ describe('Entry', () => { modified: new Date(), }), file = new Entry({ - directory: false, fullPath: '/path/to/file.txt', modified: new Date(), size: 54321, mimeType: 'text/plain', }), atFile = new Entry({ - directory: false, fullPath: '/%40', modified: new Date(), size: 54321, @@ -26,6 +24,10 @@ describe('Entry', () => { expect(directory.name).toBe('to'); }); + it('should return an empty size for directories', () => { + expect(directory.directory).toBe(true); + }); + it('should return an empty size for directories', () => { expect(directory.displaySize).toBe(''); }); diff --git a/tests/unit/DAV/Response.test.ts b/tests/unit/DAV/Response.test.ts index 4644874..6665c35 100644 --- a/tests/unit/DAV/Response.test.ts +++ b/tests/unit/DAV/Response.test.ts @@ -2,18 +2,19 @@ import Collection from '../../../src/lib/DAV/Collection'; import Response from '../../../src/lib/DAV/Response'; describe('Response', () => { - const responseText = `/path/to/2019-11-07T10:40:00ZThu, 07 Nov 2019 10:40:00 GMT"23-596bf4994c6f6"httpd/unix-directoryHTTP/1.1 200 OK/path/to/file2019-11-07T10:39:54Z0Thu, 07 Nov 2019 10:39:54 GMT"0-596bf4936570f"FHTTP/1.1 200 OK/path/to/directory/2019-11-07T10:40:00ZThu, 07 Nov 2019 10:40:00 GMT"6-596bf4994c6f6"httpd/unix-directoryHTTP/1.1 200 OK`, - response = new Response(responseText); - it('should return a valid Collection object that contains the expected entries', () => { - const collection = response.collection(), - entries = collection.map((entry) => entry), - [, directory, file] = entries; - expect(collection).toBeInstanceOf(Collection); - expect(collection.path).toBe('/path/to'); - expect(entries.length).toBe(3); - expect(directory.directory).toBeTruthy(); - expect(directory.title).toBe('directory'); - expect(file.directory).toBeFalsy(); - expect(file.title).toBe('file'); - }); + test.todo('No DOMParser implementation in Node'); + // const responseText = `/path/to/2019-11-07T10:40:00ZThu, 07 Nov 2019 10:40:00 GMT"23-596bf4994c6f6"httpd/unix-directoryHTTP/1.1 200 OK/path/to/file2019-11-07T10:39:54Z0Thu, 07 Nov 2019 10:39:54 GMT"0-596bf4936570f"FHTTP/1.1 200 OK/path/to/directory/2019-11-07T10:40:00ZThu, 07 Nov 2019 10:40:00 GMT"6-596bf4994c6f6"httpd/unix-directoryHTTP/1.1 200 OK`, + // response = new Response(responseText); + // it('should return a valid Collection object that contains the expected entries', () => { + // const collection = response.collection(), + // entries = collection.map((entry) => entry), + // [, directory, file] = entries; + // expect(collection).toBeInstanceOf(Collection); + // expect(collection.path).toBe('/path/to'); + // expect(entries.length).toBe(3); + // expect(directory.directory).toBeTruthy(); + // expect(directory.title).toBe('directory'); + // expect(file.directory).toBeFalsy(); + // expect(file.title).toBe('file'); + // }); });