diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index b7dd67f25e..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: 'to triage' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** - -Please fill the following code example: - -Socket.IO server version: `x.y.z` - -*Server* - -```js -import { Server } from "socket.io"; - -const io = new Server(3000, {}); - -io.on("connection", (socket) => { - console.log(`connect ${socket.id}`); - - socket.on("disconnect", () => { - console.log(`disconnect ${socket.id}`); - }); -}); -``` - -Socket.IO client version: `x.y.z` - -*Client* - -```js -import { io } from "socket.io-client"; - -const socket = io("ws://localhost:3000/", {}); - -socket.on("connect", () => { - console.log(`connect ${socket.id}`); -}); - -socket.on("disconnect", () => { - console.log("disconnect"); -}); -``` - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Platform:** - - Device: [e.g. Samsung S8] - - OS: [e.g. Android 9.2] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index fe32cb2997..0000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask a Question - url: https://github.com/socketio/socket.io/discussions/new?category=q-a - about: Ask the community for help diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 36014cde56..0000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: 'enhancement' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 43871bd2fe..0000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,18 +0,0 @@ - -### The kind of change this PR does introduce - -* [x] a bug fix -* [ ] a new feature -* [ ] an update to the documentation -* [ ] a code change that improves performance -* [ ] other - -### Current behavior - - -### New behavior - - -### Other information (e.g. related issues) - - diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 67fd5aac7a..0000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: CI - -on: - push: - pull_request: - schedule: - - cron: '0 0 * * 0' - -jobs: - test-node: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [12, 14, 16] - - steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 - with: - node-version: ${{ matrix.node-version }} - - run: npm ci - - run: npm test - env: - CI: true - - build-examples: - runs-on: ubuntu-latest - timeout-minutes: 10 - - strategy: - fail-fast: false - matrix: - example: - - custom-parsers - - typescript - - webpack-build - - webpack-build-server - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Use Node.js 20 - uses: actions/setup-node@v3 - with: - node-version: 20 - - - name: Build ${{ matrix.example }} - run: | - cd examples/${{ matrix.example }} - npm install - npm run build diff --git a/.gitignore b/.gitignore index 339440ff84..1c8f4f45ab 100644 --- a/.gitignore +++ b/.gitignore @@ -5,10 +5,4 @@ lib-cov *.csv *.dat *.out -*.pid -benchmarks/*.png -node_modules -coverage -.idea -.nyc_output -dist/ +*.pid \ No newline at end of file diff --git a/.replit b/.replit deleted file mode 100644 index d409ef8a56..0000000000 --- a/.replit +++ /dev/null @@ -1,2 +0,0 @@ -language = "nodejs" -run = "npm start" \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index cb8a168293..0000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,478 +0,0 @@ -## [4.4.1](https://github.com/socketio/socket.io/compare/4.4.0...4.4.1) (2022-01-06) - - -### Bug Fixes - -* **types:** make `RemoteSocket.data` type safe ([#4234](https://github.com/socketio/socket.io/issues/4234)) ([770ee59](https://github.com/socketio/socket.io/commit/770ee5949fb47c2556876c622f06c862573657d6)) -* **types:** pass `SocketData` type to custom namespaces ([#4233](https://github.com/socketio/socket.io/issues/4233)) ([f2b8de7](https://github.com/socketio/socket.io/commit/f2b8de71919e1b4d3e57f15a459972c1d1064787)) - - - -# [4.4.0](https://github.com/socketio/socket.io/compare/4.3.2...4.4.0) (2021-11-18) - - -### Bug Fixes - -* only set 'connected' to true after middleware execution ([02b0f73](https://github.com/socketio/socket.io/commit/02b0f73e2c64b09c72c5fbf7dc5f059557bdbe50)) - - -### Features - -* add an implementation based on uWebSockets.js ([c0d8c5a](https://github.com/socketio/socket.io/commit/c0d8c5ab234d0d2bef0d0dec472973cc9662f647)) -* add timeout feature ([f0ed42f](https://github.com/socketio/socket.io/commit/f0ed42f18cabef20ad976aeec37077b6bf3837a5)) -* add type information to `socket.data` ([#4159](https://github.com/socketio/socket.io/issues/4159)) ([fe8730c](https://github.com/socketio/socket.io/commit/fe8730ca0f15bc92d5de81cf934c89c76d6af329)) - - - -## [4.3.2](https://github.com/socketio/socket.io/compare/4.3.1...4.3.2) (2021-11-08) - - -### Bug Fixes - -* fix race condition in dynamic namespaces ([#4137](https://github.com/socketio/socket.io/issues/4137)) ([9d86397](https://github.com/socketio/socket.io/commit/9d86397243bcbb5775a29d96e5ef03e17148a8e7)) - - -## [4.3.1](https://github.com/socketio/socket.io/compare/4.3.0...4.3.1) (2021-10-16) - - -### Bug Fixes - -* fix server attachment ([#4127](https://github.com/socketio/socket.io/issues/4127)) ([0ef2a4d](https://github.com/socketio/socket.io/commit/0ef2a4d02c9350aff163df9cb61aece89c4dac0f)) - - -# [4.3.0](https://github.com/socketio/socket.io/compare/4.2.0...4.3.0) (2021-10-14) - - -### Bug Fixes - -* **typings:** add name field to cookie option ([#4099](https://github.com/socketio/socket.io/issues/4099)) ([033c5d3](https://github.com/socketio/socket.io/commit/033c5d399a2b985afad32c1e4b0c16d764e248cd)) -* send volatile packets with binary attachments ([dc81fcf](https://github.com/socketio/socket.io/commit/dc81fcf461cfdbb5b34b1a5a96b84373754047d5)) - - -### Features - -* serve ESM bundle ([60edecb](https://github.com/socketio/socket.io/commit/60edecb3bd33801803cdcba0aefbafa381a2abb3)) - - -# [4.2.0](https://github.com/socketio/socket.io/compare/4.1.3...4.2.0) (2021-08-30) - - -### Bug Fixes - -* **typings:** allow async listener in typed events ([ccfd8ca](https://github.com/socketio/socket.io/commit/ccfd8caba6d38b7ba6c5114bd8179346ed07671c)) - - -### Features - -* ignore the query string when serving client JavaScript ([#4024](https://github.com/socketio/socket.io/issues/4024)) ([24fee27](https://github.com/socketio/socket.io/commit/24fee27ba36485308f8e995879c10931532c814e)) - - -## [4.1.3](https://github.com/socketio/socket.io/compare/4.1.2...4.1.3) (2021-07-10) - - -### Bug Fixes - -* fix io.except() method ([94e27cd](https://github.com/socketio/socket.io/commit/94e27cd072c8a4eeb9636f6ffbb7a21d382f36b0)) -* remove x-sourcemap header ([a4dffc6](https://github.com/socketio/socket.io/commit/a4dffc6527f412d51a786ae5bf2e9080fe1ca63c)) - - -## [4.1.2](https://github.com/socketio/socket.io/compare/4.1.1...4.1.2) (2021-05-17) - - -### Bug Fixes - -* **typings:** ensure compatibility with TypeScript 3.x ([0cb6ac9](https://github.com/socketio/socket.io/commit/0cb6ac95b49a27483b6f1b6402fa54b35f82e36f)) -* ensure compatibility with previous versions of the adapter ([a2cf248](https://github.com/socketio/socket.io/commit/a2cf2486c366cb62293101c10520c57f6984a3fc)) - - -## [4.1.1](https://github.com/socketio/socket.io/compare/4.1.0...4.1.1) (2021-05-11) - - -### Bug Fixes - -* **typings:** properly type server-side events ([b84ed1e](https://github.com/socketio/socket.io/commit/b84ed1e41c9053792caf58974c5de9395bfd509f)) -* **typings:** properly type the adapter attribute ([891b187](https://github.com/socketio/socket.io/commit/891b1870e92d1ec38910f03bb839817e2d6be65a)) - - -# [4.1.0](https://github.com/socketio/socket.io/compare/4.0.2...4.1.0) (2021-05-11) - - -### Features - -* add support for inter-server communication ([93cce05](https://github.com/socketio/socket.io/commit/93cce05fb3faf91f21fa71212275c776aa161107)) -* notify upon namespace creation ([499c892](https://github.com/socketio/socket.io/commit/499c89250d2db1ab7725ab2b74840e188c267c46)) -* add a "connection_error" event ([7096e98](https://github.com/socketio/engine.io/commit/7096e98a02295a62c8ea2aa56461d4875887092d), from `engine.io`) -* add the "initial_headers" and "headers" events ([2527543](https://github.com/socketio/engine.io/commit/252754353a0e88eb036ebb3082e9d6a9a5f497db), from `engine.io`) - - -### Performance Improvements - -* add support for the "wsPreEncoded" writing option ([dc381b7](https://github.com/socketio/socket.io/commit/dc381b72c6b2f8172001dedd84116122e4cc95b3)) - - -## [4.0.2](https://github.com/socketio/socket.io/compare/4.0.1...4.0.2) (2021-05-06) - - -### Bug Fixes - -* **typings:** make "engine" attribute public ([b81ce4c](https://github.com/socketio/socket.io/commit/b81ce4c9d0b00666361498e2ba5e0d007d5860b8)) -* properly export the Socket class ([d65b6ee](https://github.com/socketio/socket.io/commit/d65b6ee84c8e91deb61c3c1385eb19afa196a909)) - - -## [4.0.1](https://github.com/socketio/socket.io/compare/4.0.0...4.0.1) (2021-03-31) - - -### Bug Fixes - -* **typings:** add fallback to untyped event listener ([#3834](https://github.com/socketio/socket.io/issues/3834)) ([a11152f](https://github.com/socketio/socket.io/commit/a11152f42b281df83409313962f60f230239c79e)) -* **typings:** update return type from emit ([#3843](https://github.com/socketio/socket.io/issues/3843)) ([1a72ae4](https://github.com/socketio/socket.io/commit/1a72ae4fe27a14cf60916f991a2c94da91d9e54a)) - - -# [4.0.0](https://github.com/socketio/socket.io/compare/3.1.2...4.0.0) (2021-03-10) - - -### Bug Fixes - -* make io.to(...) immutable ([ac9e8ca](https://github.com/socketio/socket.io/commit/ac9e8ca6c71e00d4af45ee03f590fe56f3951186)) - - -### Features - -* add some utility methods ([b25495c](https://github.com/socketio/socket.io/commit/b25495c069031674da08e19aed68922c7c7a0e28)) -* add support for typed events ([#3822](https://github.com/socketio/socket.io/issues/3822)) ([0107510](https://github.com/socketio/socket.io/commit/0107510ba8a0f148c78029d8be8919b350feb633)) -* allow to exclude specific rooms when broadcasting ([#3789](https://github.com/socketio/socket.io/issues/3789)) ([7de2e87](https://github.com/socketio/socket.io/commit/7de2e87e888d849eb2dfc5e362af4c9e86044701)) -* allow to pass an array to io.to(...) ([085d1de](https://github.com/socketio/socket.io/commit/085d1de9df909651de8b313cc6f9f253374b702e)) - - -## [3.1.2](https://github.com/socketio/socket.io/compare/3.1.1...3.1.2) (2021-02-26) - - -### Bug Fixes - -* ignore packets received after disconnection ([494c64e](https://github.com/socketio/socket.io/commit/494c64e44f645cbd24c645f1186d203789e84af0)) - - -## [3.1.1](https://github.com/socketio/socket.io/compare/3.1.0...3.1.1) (2021-02-03) - - -### Bug Fixes - -* properly parse the CONNECT packet in v2 compatibility mode ([6f4bd7f](https://github.com/socketio/socket.io/commit/6f4bd7f8e7c41a075a8014565330a77c38b03a8d)) -* **typings:** add return types and general-case overload signatures ([#3776](https://github.com/socketio/socket.io/issues/3776)) ([9e8f288](https://github.com/socketio/socket.io/commit/9e8f288ca9f14f91064b8d3cce5946f7d23d407c)) -* **typings:** update the types of "query", "auth" and "headers" ([4f2e9a7](https://github.com/socketio/socket.io/commit/4f2e9a716d9835b550c8fd9a9b429ebf069c2895)) - - -# [3.1.0](https://github.com/socketio/socket.io/compare/3.0.5...3.1.0) (2021-01-15) - - -### Features - -* confirm a weak but matching ETag ([#3485](https://github.com/socketio/socket.io/issues/3485)) ([161091d](https://github.com/socketio/socket.io/commit/161091dd4c9e1b1610ac3d45d964195e63d92b94)) -* **esm:** export the Namespace and Socket class ([#3699](https://github.com/socketio/socket.io/issues/3699)) ([233650c](https://github.com/socketio/socket.io/commit/233650c22209708b5fccc4349c38d2fa1b465d8f)) -* add support for Socket.IO v2 clients ([9925746](https://github.com/socketio/socket.io/commit/9925746c8ee3a6522bd640b5d586c83f04f2f1ba)) -* add room events ([155fa63](https://github.com/socketio/socket.io-adapter/commit/155fa6333a504036e99a33667dc0397f6aede25e)) - - -### Bug Fixes - -* allow integers as event names ([1c220dd](https://github.com/socketio/socket.io-parser/commit/1c220ddbf45ea4b44bc8dbf6f9ae245f672ba1b9)) - - -## [3.0.5](https://github.com/socketio/socket.io/compare/3.0.4...3.0.5) (2021-01-05) - - -### Bug Fixes - -* properly clear timeout on connection failure ([170b739](https://github.com/socketio/socket.io/commit/170b739f147cb6c92b423729b877e242e376927d)) - - -### Reverts - -* restore the socket middleware functionality ([bf54327](https://github.com/socketio/socket.io/commit/bf5432742158e4d5ba2722cff4a614967dffa5b9)) - - -## [3.0.4](https://github.com/socketio/socket.io/compare/3.0.3...3.0.4) (2020-12-07) - - -## [3.0.3](https://github.com/socketio/socket.io/compare/3.0.2...3.0.3) (2020-11-19) - - -## [3.0.2](https://github.com/socketio/socket.io/compare/3.0.1...3.0.2) (2020-11-17) - - -### Bug Fixes - -* merge Engine.IO options ([43705d7](https://github.com/socketio/socket.io/commit/43705d7a9149833afc69edc937ea7f8c9aabfeef)) - - -## [3.0.1](https://github.com/socketio/socket.io/compare/3.0.0...3.0.1) (2020-11-09) - - -### Bug Fixes - -* export ServerOptions and Namespace types ([#3684](https://github.com/socketio/socket.io/issues/3684)) ([f62f180](https://github.com/socketio/socket.io/commit/f62f180edafdd56d8a8a277e092bc66df0c5f07f)) -* **typings:** update the signature of the emit method ([50671d9](https://github.com/socketio/socket.io/commit/50671d984a81535a6a15c704546ca7465e2ea295)) - - -# [3.0.0](https://github.com/socketio/socket.io/compare/2.3.0...3.0.0) (2020-11-05) - -### Bug Fixes - -* close clients with no namespace ([91cd255](https://github.com/socketio/socket.io/commit/91cd255ba76ff6a780c62740f9f5cd3a76f5d7c7)) - -### Features - -* emit an Error object upon middleware error ([54bf4a4](https://github.com/socketio/socket.io/commit/54bf4a44e9e896dfb64764ee7bd4e8823eb7dc7b)) -* serve msgpack bundle ([aa7574f](https://github.com/socketio/socket.io/commit/aa7574f88471aa30ae472a5cddf1000a8baa70fd)) -* add support for catch-all listeners ([5c73733](https://github.com/socketio/socket.io/commit/5c737339858d59eab4b5ee2dd6feff0e82c4fe5a)) -* make Socket#join() and Socket#leave() synchronous ([129c641](https://github.com/socketio/socket.io/commit/129c6417bd818bc8b4e1b831644323876e627c13)) -* remove prod dependency to socket.io-client ([7603da7](https://github.com/socketio/socket.io/commit/7603da71a535481e3fc60e38b013abf78516d322)) -* move binary detection back to the parser ([669592d](https://github.com/socketio/socket.io/commit/669592d120409a5cf00f128070dee6d22259ba4f)) -* add ES6 module export ([8b6b100](https://github.com/socketio/socket.io/commit/8b6b100c284ccce7d85e55659e3397f533916847)) -* do not reuse the Engine.IO id ([2875d2c](https://github.com/socketio/socket.io/commit/2875d2cfdfa463e64cb520099749f543bbc4eb15)) -* remove Server#set() method ([029f478](https://github.com/socketio/socket.io/commit/029f478992f59b1eb5226453db46363a570eea46)) -* remove Socket#rooms object ([1507b41](https://github.com/socketio/socket.io/commit/1507b416d584381554d1ed23c9aaf3b650540071)) -* remove the 'origins' option ([a8c0600](https://github.com/socketio/socket.io/commit/a8c06006098b512ba1b8b8df82777349db486f41)) -* remove the implicit connection to the default namespace ([3289f7e](https://github.com/socketio/socket.io/commit/3289f7ec376e9ec88c2f90e2735c8ca8d01c0e97)) -* throw upon reserved event names ([4bd5b23](https://github.com/socketio/socket.io/commit/4bd5b2339a66a5a675e20f689fff2e70ff12d236)) - -### BREAKING CHANGES - -* the Socket#use() method is removed (see [5c73733](https://github.com/socketio/socket.io/commit/5c737339858d59eab4b5ee2dd6feff0e82c4fe5a)) - -* Socket#join() and Socket#leave() do not accept a callback argument anymore. - -Before: - -```js -socket.join("room1", () => { - io.to("room1").emit("hello"); -}); -``` - -After: - -```js -socket.join("room1"); -io.to("room1").emit("hello"); -// or await socket.join("room1"); for custom adapters -``` - -* the "connected" map is renamed to "sockets" -* the Socket#binary() method is removed, as this use case is now covered by the ability to provide your own parser. -* the 'origins' option is removed - -Before: - -```js -new Server(3000, { - origins: ["https://example.com/"] -}); -``` - -The 'origins' option was used in the allowRequest method, in order to -determine whether the request should pass or not. And the Engine.IO -server would implicitly add the necessary Access-Control-Allow-xxx -headers. - -After: - -```js -new Server(3000, { - cors: { - origin: "https://example.com/", - methods: ["GET", "POST"], - allowedHeaders: ["content-type"] - } -}); -``` - -The already existing 'allowRequest' option can be used for validation: - -```js -new Server(3000, { - allowRequest: (req, callback) => { - callback(null, req.headers.referer.startsWith("https://example.com/")); - } -}); -``` - -* Socket#rooms is now a Set instead of an object - -* Namespace#connected is now a Map instead of an object - -* there is no more implicit connection to the default namespace: - -```js -// client-side -const socket = io("/admin"); - -// server-side -io.on("connect", socket => { - // not triggered anymore -}) - -io.use((socket, next) => { - // not triggered anymore -}); - -io.of("/admin").use((socket, next) => { - // triggered -}); -``` - -* the Server#set() method was removed - -This method was kept for backward-compatibility with pre-1.0 versions. - - -# [3.0.0-rc4](https://github.com/socketio/socket.io/compare/3.0.0-rc3...3.0.0-rc4) (2020-10-30) - - -### Features - -* emit an Error object upon middleware error ([54bf4a4](https://github.com/socketio/socket.io/commit/54bf4a44e9e896dfb64764ee7bd4e8823eb7dc7b)) -* serve msgpack bundle ([aa7574f](https://github.com/socketio/socket.io/commit/aa7574f88471aa30ae472a5cddf1000a8baa70fd)) - - - -# [3.0.0-rc3](https://github.com/socketio/socket.io/compare/3.0.0-rc2...3.0.0-rc3) (2020-10-26) - - -### Features - -* add support for catch-all listeners ([5c73733](https://github.com/socketio/socket.io/commit/5c737339858d59eab4b5ee2dd6feff0e82c4fe5a)) -* make Socket#join() and Socket#leave() synchronous ([129c641](https://github.com/socketio/socket.io/commit/129c6417bd818bc8b4e1b831644323876e627c13)) -* remove prod dependency to socket.io-client ([7603da7](https://github.com/socketio/socket.io/commit/7603da71a535481e3fc60e38b013abf78516d322)) - - -### BREAKING CHANGES - -* the Socket#use() method is removed (see [5c73733](https://github.com/socketio/socket.io/commit/5c737339858d59eab4b5ee2dd6feff0e82c4fe5a)) - -* Socket#join() and Socket#leave() do not accept a callback argument anymore. - -Before: - -```js -socket.join("room1", () => { - io.to("room1").emit("hello"); -}); -``` - -After: - -```js -socket.join("room1"); -io.to("room1").emit("hello"); -// or await socket.join("room1"); for custom adapters -``` - - - -# [3.0.0-rc2](https://github.com/socketio/socket.io/compare/3.0.0-rc1...3.0.0-rc2) (2020-10-15) - - -### Bug Fixes - -* close clients with no namespace ([91cd255](https://github.com/socketio/socket.io/commit/91cd255ba76ff6a780c62740f9f5cd3a76f5d7c7)) - - -### Code Refactoring - -* remove duplicate _sockets map ([8a5db7f](https://github.com/socketio/socket.io/commit/8a5db7fa36a075da75cde43cd4fb6382b7659953)) - - -### Features - -* move binary detection back to the parser ([669592d](https://github.com/socketio/socket.io/commit/669592d120409a5cf00f128070dee6d22259ba4f)) - - -### BREAKING CHANGES - -* the "connected" map is renamed to "sockets" -* the Socket#binary() method is removed, as this use case is now covered by the ability to provide your own parser. - - - -# [3.0.0-rc1](https://github.com/socketio/socket.io/compare/2.3.0...3.0.0-rc1) (2020-10-13) - - -### Features - -* add ES6 module export ([8b6b100](https://github.com/socketio/socket.io/commit/8b6b100c284ccce7d85e55659e3397f533916847)) -* do not reuse the Engine.IO id ([2875d2c](https://github.com/socketio/socket.io/commit/2875d2cfdfa463e64cb520099749f543bbc4eb15)) -* remove Server#set() method ([029f478](https://github.com/socketio/socket.io/commit/029f478992f59b1eb5226453db46363a570eea46)) -* remove Socket#rooms object ([1507b41](https://github.com/socketio/socket.io/commit/1507b416d584381554d1ed23c9aaf3b650540071)) -* remove the 'origins' option ([a8c0600](https://github.com/socketio/socket.io/commit/a8c06006098b512ba1b8b8df82777349db486f41)) -* remove the implicit connection to the default namespace ([3289f7e](https://github.com/socketio/socket.io/commit/3289f7ec376e9ec88c2f90e2735c8ca8d01c0e97)) -* throw upon reserved event names ([4bd5b23](https://github.com/socketio/socket.io/commit/4bd5b2339a66a5a675e20f689fff2e70ff12d236)) - - -### BREAKING CHANGES - -* the 'origins' option is removed - -Before: - -```js -new Server(3000, { - origins: ["https://example.com/"] -}); -``` - -The 'origins' option was used in the allowRequest method, in order to -determine whether the request should pass or not. And the Engine.IO -server would implicitly add the necessary Access-Control-Allow-xxx -headers. - -After: - -```js -new Server(3000, { - cors: { - origin: "https://example.com/", - methods: ["GET", "POST"], - allowedHeaders: ["content-type"] - } -}); -``` - -The already existing 'allowRequest' option can be used for validation: - -```js -new Server(3000, { - allowRequest: (req, callback) => { - callback(null, req.headers.referer.startsWith("https://example.com/")); - } -}); -``` - -* Socket#rooms is now a Set instead of an object - -* Namespace#connected is now a Map instead of an object - -* there is no more implicit connection to the default namespace: - -```js -// client-side -const socket = io("/admin"); - -// server-side -io.on("connect", socket => { - // not triggered anymore -}) - -io.use((socket, next) => { - // not triggered anymore -}); - -io.of("/admin").use((socket, next) => { - // triggered -}); -``` - -* the Server#set() method was removed - -This method was kept for backward-compatibility with pre-1.0 versions. - diff --git a/History.md b/History.md new file mode 100644 index 0000000000..abd0f26e0a --- /dev/null +++ b/History.md @@ -0,0 +1,242 @@ + +0.6.18 / 2011-05-16 +=================== + + * Updated client with multiple fixes. + * Fixed returning 'ws' for location even when the client connects via 'wss'. + +0.6.17 / 2011-03-30 +================== + + * Fixed the 'possible EventEmitter memory leak detected' bug for the XHR transport + * Reconnection support added to chat example. [3rd-Eden] + +0.6.16 / 2011-03-04 +=================== + + * Fixed cross domain xhr-polling in Safari [tifroz] + +0.6.15 / 2011-02-23 +=================== + + * Fixed memory leak in WebSocket transport [belorion] + +0.6.14 / 2011-02-18 +=================== + + * Fixed logging scope issue [shripad] + +0.6.13 / 2011-02-18 +=================== + + * Fixed references to listener when logging + +0.6.12 / 2011-02-18 +=================== + + * Fixed noDelay missing file descriptor problem + +0.6.11 / 2011-02-15 +=================== + + * Fixed; Make sure to not execute any other connection operations after WebSocket + write error. + * Added more error logging + +0.6.10 / 2011-02-09 +=================== + + * Added SSL chat example (`make example-ssl`) + * Fixed; possible write errors when a connection error event fires + +0.6.9 / 2011-02-06 +================== + + * 0.3 compatibility + * Updated socket.io client to 0.6.2 + * Fixed Flash inline policy serving for Firefox 4 + * Updated expresso + * Added comments and version number to socket.io/index + +0.6.8 / 2011-01-10 +================== + + * Fixed issue with terminating connection twice + +0.6.7 / 2011-01-09 +================== + + * Fixed situation where the connection drops but the client can still autoreconnect + through a different socket. In this case we still want to clear the FD but not + call onDisconnect immediately. + +0.6.6 / 2011-01-09 +================== + + * Note for Flash socket and inline policy on Firefox + * Destroy the fds on disconnect + * Restored 20 secs of polling so that node doesn't timeout the connections + +0.6.5 / 2011-01-09 +================== + + * Make sure not to trigger multiple timeouts when closing + * Important fix for polling transports. + +0.6.4 / 2011-01-05 +================== + + * Don't destroy the connection in _onClose. Destroying it will prevent the buffers from being flushed and will result in corrupted responses for the xhr-polling transport. + * Added try/catch block around JSON.parse and return an empty object literal if JSON parsing fails. + * Added missing .connect() to example + +0.6.3 / 2010-12-23 +================== + + * Changed polling default duration to 50 seconds + * might > will Adjusted to 85 column limit + * Support for resources that include slashes. Thanks @schamane + * Lazy loading of transports. Thanks @technoweenie Fixed README transports list + * OpenSSL clarifications (thanks @bmnds) + * Support for HAProxy load balancing (thanks Brian McKelvey) Backported Parser from 0.7 + * Fixed HTTP API in example (was outdated). Thanks deedubs + * 0.3 compatibility (thanks Arnout) + * `client.broadcast` now 300% faster Cleaned up chat example + * fixed bad pluralization. + * cleaned up grammar, missing punctuation, etc. + * Restored global `netserver` for flashsocket Now supporting `flashPolicyServer` option (thanks Arnout) Tests passing with and without sudo/root user Fixed noDelay/timeout/utf-8 for draft 76 (accidental typo) + * Close the netServer when the main http server closes, this way the event loop does not keep running. NOTE: this is patch for node 0.2.X, this is not required for node 0.3.X + * Fallback to try{}catch handling for node < 0.2.4 , node 0.3.X seems to capture the errors correctly using the error event. + * Added the flash policy server, it's enabled by default but can be turned off if needed. Socket.io will automatically fallback to serving the policy file inline if server is disabled or unable to start up. + * Make sure to only write to open transports (thanks JohnDav) + * _open is still false, so destroy the connection immediately upon websocket error + * Make sure .connection is not null on 'end' + * Proper fix for invalid websocket key + +0.6.1 / 2010-11-08 + + * Restored flash policy server, but with these changes: + - It's contingent on the listener flashPolicyServer option + - It's started by default if socket.io is started with root access + - It correctly closes the netserver upon all the dependent http servers being closed + - The handler for the inline request is still there regardless. This is important in the following circumstances, and has no performance hit + - The port 843 is filtered + - Flash at some point enables us to skip 843 checking altogether + - Tests compatibility + * Fixed connection timeout, noDelay and socket encoding for draft 76 (had been accidentally moved into the `else` block) + * Some stylistic fixes + +0.6.0 / 2010-11-01 +================== + + * Make sure to only write to open transports (thanks JohnDav) + * _open is still false, so destroy the connection immediately upon websocket error + * Make sure to disconnect directly onClose if the client is not handshaked and he can't possibly reconnect + * Make sure to end and destroy connection onDisconnect (for timeouts) + * Added missing .listen() call to example. Fixes #80. Thanks @machee + * Invalid transport test completed + * Initial stab at trying to detect invalid transport responses + * Make sure to provide a default for `log` if no log key was provided (internal) + * Removed unnecessary file extension verification when serving the client + * Removed unnecessary Client check upon connection + * Added support for /socket.io/WebSocketMain.swf + * Added test for /socket.io/WebSocketMain.swf + * Client serving ETag testing + * Added htmlfile transport tests + * Added extra byte to IE iframe bytes padding + * Invalid session id test + * end() before destroy()ing the socket for non-WebSocket or non-valid Upgrade requests + * Added test for non-socket.io requests + * Simplified index.js tests + * Moved listener tests into listener.js + * Make sure to call .end() when listening on connection 'end' event + * Make sure the file descriptor is destroyed on disconnection + * Fix for websocket client tracking test + * Inline (same port) flash socket policy request. + * If the server is not run with root privileges, then the flashsocket + transport will instead listen to all new connections on the main port + for policy requests. Flash policy requests happen to both port 843 and + the destination port: + http://www.lightsphere.com/dev/articles/flash_socket_policy.html + + * [websocket test] Fix sending message to client upon connecting + * [websocket test] Fix for connection and handshake test + * [client files serving] Leverage end() write() call + * [client serving] Make sure to not do a useless file lookup when file is cached + * Finished json encoding test + * Look for the heartbeat in the decoded message + * Refactored websocket transports tests to match polling/multipart helpers + * Added coverage testing to Makefile + * Added heartbeat test to multipart + * Added buffered messages test for multipart + * Added assertions for `connected` property for all the tests + * Multipart clients tracking test + * Multipart client>server message sending test + * Make sure to only close the client stream when the roundtrip is complete + * Multipart connection and handshake tests: + - Implemented HTTP client on top of net.Stream with multipart boundary parsing for testing + - Test for connection / server>client message sending + * Removed unnecessary check for this.connection (since we now access the socket through req.connection for all transports) + * Test for `duration` parameter + * Added `make example` to Makefile + * Added clients tracking test for long polling + * Added message buffering test for long polling + * Improve this.request/this.response/this.connection + * Add 'end' listener onConnect, applies to all transports + * Improved error handling onConnect + * Remove legacy `flush` calls + * Removed unnecessary closeTimeout clearing in jsonp polling + * Make sure to close on disconnect if _open = true + * Clear disconnection timeout on disconnection (double check) + * Make sure to clear closeTimeout for polling transports on close. + * Replaced empty with null in log option + * Comma first style for client serving tests + * Long polling integration tests + * Test for heartbeat message + * Added heartbeat timeout test + * Support for listener#log false + * Corrected onConnect signature to support a request and a socket, or a request and a response. + * Removed error checking for non-upgradeable sockets, since they'll be destroyed, and error handling is done onConnect + * Added tests for websocket client tracking + * Added tests for websocket message buffering + * Make sure disconnect timeout is cleared on websocket re-connect + * Updated the flash socket with error detection, and readystate detection. + * This is needed because when a error occures we close down the connection, + * and the stream will become unwriteable. + * Also changed to a single write instead of multiple writes. + * Moved error handling to onConnect to avoid messing with the http.Server global error handlers + * Do special error handling for websocket + * Clearing heartbeat interval upon closing the connection + * Added error listeners, if theses errors are not correcly caught, they will leak memory. + * This caused http://speedo.no.de/ to go up from 1mb per connection after a ECONNECTRESET message + * Added encode=UTF-8 in jsonp-polling.js and xhr-polling.js since UTF-8 is the default encoding for http.ServerResponse.write + * Replaced string.length with Buffer.byteLength in jsonp-polling.js, listener.js and xhr-polling.js because content-length header requires number of bytes and not the number of symbols in string + * Fix COR headers/requests for different ports on Safari. + * Clearing the references to request, response and connection upon disconnect. + * Every require is blocking and requiring the sys module over and over and over again just makes no sense + it hurt performance.. Not to mention.. that it's already included. + * Socket.IO-node now serves the client out of the box for easier implementation + * Memory caching and ETag support for static files + * Tests + * Simplified demo even further thanks to new static file serving + * Failing to pass an origin header would throw an exception and crash the server. Added some handling. + * .connected renamed to ._open, and adopted proper `connected` (fixes #41) + * example/client updated to latest socket.io client + * Better checking of WebSocket connections + * Better handling of SSL location (thanks @jdub) + * Fix for cross-domain websocket (fixes #42) + * Removed clients/clientsIndex and only using the index (fixes #28) + * Fixed WebSocket location header for ws/wss (Thanks @jdub, Fixes #40) + * Cross domain issues with xhr-polling addressed. Thanks Niko Kaiser (@nicokaiser) + * Added origin verification for incoming data. + * Make sure pathname is set (thanks steadicat & swarmation team) + * Fix for accessing routes that being with the namespace but are not a connection attempt. Thanks @steadicat from swarmation + * JSONP-polling support + * Graceful closing of connection for invalid websocket clients + * Make it possible to just require 'socket.io' + * Make sure to abort the connect() method upon bad upgrade / origin verification + * Support for automatic JSON encoding/decoding + * Simplified chat example to take advantage of JSON encoding/decoding + * Removed fs sync call from example + * Better `how to use` + * Make sure to send content-type text/plain to `ok` POST responses + diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 6ce8c5ca1a..0000000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2018 Automattic - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..1182db2b10 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +test: + ./support/expresso/bin/expresso -I lib $(TESTFLAGS) tests/*.js + +test-cov: + @TESTFLAGS=--cov $(MAKE) test + +example: + node ./example/server.js + +example-ssl: + node ./example/server-ssl.js + +.PHONY: example diff --git a/README.md b/README.md new file mode 100644 index 0000000000..53e1cd0adf --- /dev/null +++ b/README.md @@ -0,0 +1,233 @@ +Socket.IO Server: Sockets for the rest of us +============================================ + +The `Socket.IO` server provides seamless support for a variety of transports intended for realtime communication. + +- WebSocket +- WebSocket over Flash (+ XML security policy support) +- XHR Polling +- XHR Multipart Streaming +- Forever Iframe +- JSONP Polling (for cross domain) + +## Requirements + +- Node v0.1.103+ with `crypto` module support (make sure you have OpenSSL + headers when installing Node to get it) +- The [Socket.IO client](http://github.com/LearnBoost/Socket.IO), to connect from the browser + +## How to use + +To run the demo, execute the following: + + git clone git://github.com/LearnBoost/Socket.IO-node.git socket.io + cd socket.io/example/ + sudo node server.js + +and point your browser to `http://localhost:8080`. In addition to `8080`, if the transport `flashsocket` is enabled, a server will be initialized to listen for requests on port `843`. + +### Implementing it on your project + +`Socket.IO` is designed not to take over an entire port or Node `http.Server` instance. This means that if you choose to have your HTTP server listen on port `80`, `socket.io` can intercept requests directed to it, and normal requests will still be served. + +By default, the server will intercept requests that contain `socket.io` in the path / resource part of the URI. You can change this as shown in the available options below. + +On the server, install socket.io with NPM: + + npm install socket.io + +Then: + + var http = require('http'), + io = require('socket.io'), + + server = http.createServer(function(req, res){ + // your normal server code + res.writeHead(200, {'Content-Type': 'text/html'}); + res.end('

Hello world

'); + }); + + server.listen(80); + + // socket.io, I choose you + var socket = io.listen(server); + + socket.on('connection', function(client){ + // new client is here! + client.on('message', function(){ … }) + client.on('disconnect', function(){ … }) + }); + +On the client: + + + + +The [client-side](http://github.com/learnboost/socket.io) files are served automatically by `Socket.IO-node`. + +## Documentation + +### Listener + + io.listen(, [options]) + +Returns: a `Listener` instance + +Public Properties: + +- *server* + + An instance of _process.http.Server_. + +- *options* + + The passed-in options, combined with the defaults. + +- *clients* + + An object of clients, indexed by session ID. + +Methods: + +- *addListener(event, λ)* + + Adds a listener for the specified event. Optionally, you can pass it as an option to `io.listen`, prefixed by `on`. For example: `onClientConnect: function(){}` + +- *removeListener(event, λ)* + + Removes a listener from the listener array for the specified event. + +- *broadcast(message, [except])* + + Broadcasts a message to all clients. Optionally, you can pass a single session ID or array of session IDs to avoid broadcasting to, as the second argument. + +Options: + +- *resource* + + socket.io + + The resource is what allows the `socket.io` server to identify incoming connections from `socket.io` clients. Make sure they're in sync. + +- *flashPolicyServer* + + true + + Create a Flash Policy file server on port `843` (this is restricted port and you will need to have root permission). If you disable the FlashPolicy file server, Socket.IO will automatically fall back to serving the policy file inline. + + +- *transports* + + ['websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling', + 'jsonp-polling'] + + A list of the accepted transports. + +- *transportOptions* + + An object of options to pass to each transport. For example `{ websocket: { closeTimeout: 8000 }}` + +- *log* + + ƒ(){ sys.log } + + The logging function. Defaults to outputting to `stdout` through `sys.log` + +Events: + +- *clientConnect(client)* + + Fired when a client is connected. Receives the Client instance as parameter. + +- *clientMessage(message, client)* + + Fired when a message from a client is received. Receives the message and Client instance as parameters. + +- *clientDisconnect(client)* + + Fired when a client is disconnected. Receives the Client instance as a parameter. + +Important note: `this` in the event listener refers to the `Listener` instance. + +### Client + + Client(listener, req, res) + +Public Properties: + +- *listener* + + The `Listener` instance to which this client belongs. + +- *connected* + + Whether the client is connected. + +- *connections* + + Number of times the client has connected. + +Methods: + +- *send(message)* + + Sends a message to the client. + +- *broadcast(message)* + + Sends a message to all other clients. Equivalent to Listener::broadcast(message, client.sessionId). + +## Protocol + +One of the design goals is that you should be able to implement whatever protocol you desire without `Socket.IO` getting in the way. `Socket.IO` has a minimal, unobtrusive protocol layer, consisting of two parts: + +* Connection handshake + + This is required to simulate a full duplex socket with transports such as XHR Polling or Server-sent Events (which is a "one-way socket"). The basic idea is that the first message received from the server will be a JSON object that contains a session ID used for further communications exchanged between the client and server. + + The concept of session also naturally benefits a full-duplex WebSocket, in the event of an accidental disconnection and a quick reconnection. Messages that the server intends to deliver to the client are cached temporarily until reconnection. + + The implementation of reconnection logic (potentially with retries) is left for the user. By default, transports that are keep-alive or open all the time (like WebSocket) have a timeout of 0 if a disconnection is detected. + +* Message batching + + Messages are buffered in order to optimize resources. In the event of the server trying to send multiple messages while a client is temporarily disconnected (eg: xhr polling), the messages are stacked and then encoded in a lightweight way, and sent to the client whenever it becomes available. + +Despite this extra layer, the messages are delivered unaltered to the various event listeners. You can `JSON.stringify()` objects, send XML, or even plain text. + +## Credits + +- Guillermo Rauch <guillermo@learnboost.com> ([Guille](http://github.com/guille)) + +- Arnout Kazemier ([3rd-Eden](http://github.com/3rd-Eden)) + +## License + +(The MIT License) + +Copyright (c) 2010 LearnBoost <dev@learnboost.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Readme.md b/Readme.md deleted file mode 100644 index 2551a736db..0000000000 --- a/Readme.md +++ /dev/null @@ -1,269 +0,0 @@ -# socket.io -[![Run on Repl.it](https://repl.it/badge/github/socketio/socket.io)](https://replit.com/@socketio/socketio-minimal-example) -[![Backers on Open Collective](https://opencollective.com/socketio/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/socketio/sponsors/badge.svg)](#sponsors) -[![Build Status](https://github.com/socketio/socket.io/workflows/CI/badge.svg)](https://github.com/socketio/socket.io/actions) -[![NPM version](https://badge.fury.io/js/socket.io.svg)](https://www.npmjs.com/package/socket.io) -![Downloads](https://img.shields.io/npm/dm/socket.io.svg?style=flat) -[![](https://slackin-socketio.now.sh/badge.svg)](https://slackin-socketio.now.sh) - -## Features - -Socket.IO enables real-time bidirectional event-based communication. It consists of: - -- a Node.js server (this repository) -- a [Javascript client library](https://github.com/socketio/socket.io-client) for the browser (or a Node.js client) - -Some implementations in other languages are also available: - -- [Java](https://github.com/socketio/socket.io-client-java) -- [C++](https://github.com/socketio/socket.io-client-cpp) -- [Swift](https://github.com/socketio/socket.io-client-swift) -- [Dart](https://github.com/rikulo/socket.io-client-dart) -- [Python](https://github.com/miguelgrinberg/python-socketio) -- [.NET](https://github.com/doghappy/socket.io-client-csharp) - -Its main features are: - -#### Reliability - -Connections are established even in the presence of: - - proxies and load balancers. - - personal firewall and antivirus software. - -For this purpose, it relies on [Engine.IO](https://github.com/socketio/engine.io), which first establishes a long-polling connection, then tries to upgrade to better transports that are "tested" on the side, like WebSocket. Please see the [Goals](https://github.com/socketio/engine.io#goals) section for more information. - -#### Auto-reconnection support - -Unless instructed otherwise a disconnected client will try to reconnect forever, until the server is available again. Please see the available reconnection options [here](https://socket.io/docs/v3/client-api/#new-Manager-url-options). - -#### Disconnection detection - -A heartbeat mechanism is implemented at the Engine.IO level, allowing both the server and the client to know when the other one is not responding anymore. - -That functionality is achieved with timers set on both the server and the client, with timeout values (the `pingInterval` and `pingTimeout` parameters) shared during the connection handshake. Those timers require any subsequent client calls to be directed to the same server, hence the `sticky-session` requirement when using multiples nodes. - -#### Binary support - -Any serializable data structures can be emitted, including: - -- [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) and [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) in the browser -- [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) and [Buffer](https://nodejs.org/api/buffer.html) in Node.js - -#### Simple and convenient API - -Sample code: - -```js -io.on('connection', socket => { - socket.emit('request', /* … */); // emit an event to the socket - io.emit('broadcast', /* … */); // emit an event to all connected sockets - socket.on('reply', () => { /* … */ }); // listen to the event -}); -``` - -#### Cross-browser - -Browser support is tested in Sauce Labs: - -[![Sauce Test Status](https://saucelabs.com/browser-matrix/socket.svg)](https://saucelabs.com/u/socket) - -#### Multiplexing support - -In order to create separation of concerns within your application (for example per module, or based on permissions), Socket.IO allows you to create several `Namespaces`, which will act as separate communication channels but will share the same underlying connection. - -#### Room support - -Within each `Namespace`, you can define arbitrary channels, called `Rooms`, that sockets can join and leave. You can then broadcast to any given room, reaching every socket that has joined it. - -This is a useful feature to send notifications to a group of users, or to a given user connected on several devices for example. - - -**Note:** Socket.IO is not a WebSocket implementation. Although Socket.IO indeed uses WebSocket as a transport when possible, it adds some metadata to each packet: the packet type, the namespace and the ack id when a message acknowledgement is needed. That is why a WebSocket client will not be able to successfully connect to a Socket.IO server, and a Socket.IO client will not be able to connect to a WebSocket server (like `ws://echo.websocket.org`) either. Please see the protocol specification [here](https://github.com/socketio/socket.io-protocol). - -## Installation - -```bash -// with npm -npm install socket.io - -// with yarn -yarn add socket.io -``` - -## How to use - -The following example attaches socket.io to a plain Node.JS -HTTP server listening on port `3000`. - -```js -const server = require('http').createServer(); -const io = require('socket.io')(server); -io.on('connection', client => { - client.on('event', data => { /* … */ }); - client.on('disconnect', () => { /* … */ }); -}); -server.listen(3000); -``` - -### Standalone - -```js -const io = require('socket.io')(); -io.on('connection', client => { ... }); -io.listen(3000); -``` - -### Module syntax - -```js -import { Server } from "socket.io"; -const io = new Server(server); -io.listen(3000); -``` - -### In conjunction with Express - -Starting with **3.0**, express applications have become request handler -functions that you pass to `http` or `http` `Server` instances. You need -to pass the `Server` to `socket.io`, and not the express application -function. Also make sure to call `.listen` on the `server`, not the `app`. - -```js -const app = require('express')(); -const server = require('http').createServer(app); -const io = require('socket.io')(server); -io.on('connection', () => { /* … */ }); -server.listen(3000); -``` - -### In conjunction with Koa - -Like Express.JS, Koa works by exposing an application as a request -handler function, but only by calling the `callback` method. - -```js -const app = require('koa')(); -const server = require('http').createServer(app.callback()); -const io = require('socket.io')(server); -io.on('connection', () => { /* … */ }); -server.listen(3000); -``` - -### In conjunction with Fastify - -To integrate Socket.io in your Fastify application you just need to -register `fastify-socket.io` plugin. It will create a `decorator` -called `io`. - -```js -const app = require('fastify')(); -app.register(require('fastify-socket.io')); -app.io.on('connection', () => { /* … */ }); -app.listen(3000); -``` - -## Documentation - -Please see the documentation [here](https://socket.io/docs/). - -The source code of the website can be found [here](https://github.com/socketio/socket.io-website). Contributions are welcome! - -## Debug / logging - -Socket.IO is powered by [debug](https://github.com/visionmedia/debug). -In order to see all the debug output, run your app with the environment variable -`DEBUG` including the desired scope. - -To see the output from all of Socket.IO's debugging scopes you can use: - -``` -DEBUG=socket.io* node myapp -``` - -## Testing - -``` -npm test -``` -This runs the `gulp` task `test`. By default the test will be run with the source code in `lib` directory. - -Set the environmental variable `TEST_VERSION` to `compat` to test the transpiled es5-compat version of the code. - -The `gulp` task `test` will always transpile the source code into es5 and export to `dist` first before running the test. - - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/socketio#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/socketio#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## License - -[MIT](LICENSE) diff --git a/client-dist/socket.io.esm.min.js b/client-dist/socket.io.esm.min.js deleted file mode 100644 index 2093c219a6..0000000000 --- a/client-dist/socket.io.esm.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Socket.IO v4.4.1 - * (c) 2014-2022 Guillermo Rauch - * Released under the MIT License. - */ -var t=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,e=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],s=function(s){var n=s,r=s.indexOf("["),i=s.indexOf("]");-1!=r&&-1!=i&&(s=s.substring(0,r)+s.substring(r,i).replace(/:/g,";")+s.substring(i,s.length));for(var o,a,h=t.exec(s||""),c={},p=14;p--;)c[e[p]]=h[p]||"";return-1!=r&&-1!=i&&(c.source=n,c.host=c.host.substring(1,c.host.length-1).replace(/;/g,":"),c.authority=c.authority.replace("[","").replace("]","").replace(/;/g,":"),c.ipv6uri=!0),c.pathNames=function(t,e){var s=/\/{2,9}/g,n=e.replace(s,"/").split("/");"/"!=e.substr(0,1)&&0!==e.length||n.splice(0,1);"/"==e.substr(e.length-1,1)&&n.splice(n.length-1,1);return n}(0,c.path),c.queryKey=(o=c.query,a={},o.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,s){e&&(a[e]=s)})),a),c};var n={exports:{}};try{n.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){n.exports=!1}var r=n.exports,i="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function o(t){const e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||r))return new XMLHttpRequest}catch(t){}if(!e)try{return new(i[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function a(t,...e){return e.reduce(((e,s)=>(t.hasOwnProperty(s)&&(e[s]=t[s]),e)),{})}const h=setTimeout,c=clearTimeout;function p(t,e){e.useNativeTimers?(t.setTimeoutFn=h.bind(i),t.clearTimeoutFn=c.bind(i)):(t.setTimeoutFn=setTimeout.bind(i),t.clearTimeoutFn=clearTimeout.bind(i))}var u=l;function l(t){if(t)return function(t){for(var e in l.prototype)t[e]=l.prototype[e];return t}(t)}l.prototype.on=l.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},l.prototype.once=function(t,e){function s(){this.off(t,s),e.apply(this,arguments)}return s.fn=e,this.on(t,s),this},l.prototype.off=l.prototype.removeListener=l.prototype.removeAllListeners=l.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r=0;r{f[d[t]]=t}));const y={type:"error",data:"parser error"},m="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),g="function"==typeof ArrayBuffer,b=({type:t,data:e},s,n)=>{return m&&e instanceof Blob?s?n(e):v(e,n):g&&(e instanceof ArrayBuffer||(r=e,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(r):r&&r.buffer instanceof ArrayBuffer))?s?n(e):v(new Blob([e]),n):n(d[t]+(e||""));var r},v=(t,e)=>{const s=new FileReader;return s.onload=function(){const t=s.result.split(",")[1];e("b"+t)},s.readAsDataURL(t)};for(var k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",w="undefined"==typeof Uint8Array?[]:new Uint8Array(256),E=0;E{if("string"!=typeof t)return{type:"message",data:R(t,e)};const s=t.charAt(0);if("b"===s)return{type:"message",data:C(t.substring(1),e)};return f[s]?t.length>1?{type:f[s],data:t.substring(1)}:{type:f[s]}:y},C=(t,e)=>{if(_){const s=function(t){var e,s,n,r,i,o=.75*t.length,a=t.length,h=0;"="===t[t.length-1]&&(o--,"="===t[t.length-2]&&o--);var c=new ArrayBuffer(o),p=new Uint8Array(c);for(e=0;e>4,p[h++]=(15&n)<<4|r>>2,p[h++]=(3&r)<<6|63&i;return c}(t);return R(s,e)}return{base64:!0,data:t}},R=(t,e)=>"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t,T=String.fromCharCode(30);class B extends u{constructor(t){super(),this.writable=!1,p(this,t),this.opts=t,this.query=t.query,this.readyState="",this.socket=t.socket}onError(t,e){const s=new Error(t);return s.type="TransportError",s.description=e,super.emit("error",s),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(t){"open"===this.readyState&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(t){const e=A(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emit("packet",t)}onClose(){this.readyState="closed",super.emit("close")}}var N,O="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),x={},S=0,L=0;function q(t){var e="";do{e=O[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function P(){var t=q(+new Date);return t!==N?(S=0,N=t):t+"."+q(S++)}for(;L<64;L++)x[O[L]]=L;P.encode=q,P.decode=function(t){var e=0;for(L=0;L{this.readyState="paused",t()};if(this.polling||!this.writable){let t=0;this.polling&&(t++,this.once("pollComplete",(function(){--t||e()}))),this.writable||(t++,this.once("drain",(function(){--t||e()})))}else e()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(t){((t,e)=>{const s=t.split(T),n=[];for(let t=0;t{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose(),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const t=()=>{this.write([{type:"close"}])};"open"===this.readyState?t():this.once("open",t)}write(t){this.writable=!1,((t,e)=>{const s=t.length,n=new Array(s);let r=0;t.forEach(((t,i)=>{b(t,!1,(t=>{n[i]=t,++r===s&&e(n.join(T))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let t=this.query||{};const e=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=j()),this.supportsBinary||t.sid||(t.b64=1),this.opts.port&&("https"===e&&443!==Number(this.opts.port)||"http"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=D.encode(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}}function F(){}const M=null!=new o({xdomain:!1}).responseType;class U extends u{constructor(t,e){super(),p(this,e),this.opts=e,this.method=e.method||"GET",this.uri=t,this.async=!1!==e.async,this.data=void 0!==e.data?e.data:null,this.create()}create(){const t=a(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;const e=this.xhr=new o(t);try{e.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){e.setDisableHeaderCheck&&e.setDisableHeaderCheck(!0);for(let t in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(t)&&e.setRequestHeader(t,this.opts.extraHeaders[t])}}catch(t){}if("POST"===this.method)try{e.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{e.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in e&&(e.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(e.timeout=this.opts.requestTimeout),e.onreadystatechange=()=>{4===e.readyState&&(200===e.status||1223===e.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof e.status?e.status:0)}),0))},e.send(this.data)}catch(t){return void this.setTimeoutFn((()=>{this.onError(t)}),0)}"undefined"!=typeof document&&(this.index=U.requestsCount++,U.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(t){this.emit("data",t),this.onSuccess()}onError(t){this.emit("error",t),this.cleanup(!0)}cleanup(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=F,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete U.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;null!==t&&this.onData(t)}abort(){this.cleanup()}}if(U.requestsCount=0,U.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",V);else if("function"==typeof addEventListener){addEventListener("onpagehide"in i?"pagehide":"unload",V,!1)}function V(){for(let t in U.requests)U.requests.hasOwnProperty(t)&&U.requests[t].abort()}const H="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),K=i.WebSocket||i.MozWebSocket,Y="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class z extends B{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),e=this.opts.protocols,s=Y?{}:a(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=Y?new K(t,e,s):e?new K(t,e):new K(t)}catch(t){return this.emit("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e{try{this.ws.send(t)}catch(t){}n&&H((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let t=this.query||{};const e=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===e&&443!==Number(this.opts.port)||"ws"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=j()),this.supportsBinary||(t.b64=1);const n=D.encode(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!(!K||"__initialize"in K&&this.name===z.prototype.name)}}const W={websocket:z,polling:class extends I{constructor(t){if(super(t),"undefined"!=typeof location){const e="https:"===location.protocol;let s=location.port;s||(s=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||s!==t.port,this.xs=t.secure!==e}const e=t&&t.forceBase64;this.supportsBinary=M&&!e}request(t={}){return Object.assign(t,{xd:this.xd,xs:this.xs},this.opts),new U(this.uri(),t)}doWrite(t,e){const s=this.request({method:"POST",data:t});s.on("success",e),s.on("error",(t=>{this.onError("xhr post error",t)}))}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(t=>{this.onError("xhr poll error",t)})),this.pollXhr=t}}};class $ extends u{constructor(t,e={}){super(),t&&"object"==typeof t&&(e=t,t=null),t?(t=s(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=s(e.host).host),p(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=e.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},e),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=D.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const e=function(t){const e={};for(let s in t)t.hasOwnProperty(s)&&(e[s]=t[s]);return e}(this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);const s=Object.assign({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new W[t](s)}open(){let t;if(this.opts.rememberUpgrade&&$.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(t){let e=this.createTransport(t),s=!1;$.priorWebsocketSuccess=!1;const n=()=>{s||(e.send([{type:"ping",data:"probe"}]),e.once("packet",(t=>{if(!s)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",e),!e)return;$.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{s||"closed"!==this.readyState&&(c(),this.setTransport(e),e.send([{type:"upgrade"}]),this.emitReserved("upgrade",e),e=null,this.upgrading=!1,this.flush())}))}else{const t=new Error("probe error");t.transport=e.name,this.emitReserved("upgradeError",t)}})))};function r(){s||(s=!0,c(),e.close(),e=null)}const i=t=>{const s=new Error("probe error: "+t);s.transport=e.name,r(),this.emitReserved("upgradeError",s)};function o(){i("transport closed")}function a(){i("socket closed")}function h(t){e&&t.name!==e.name&&r()}const c=()=>{e.removeListener("open",n),e.removeListener("error",i),e.removeListener("close",o),this.off("close",a),this.off("upgrading",h)};e.once("open",n),e.once("error",i),e.once("close",o),this.once("close",a),this.once("upgrading",h),e.open()}onOpen(){if(this.readyState="open",$.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let t=0;const e=this.upgrades.length;for(;t{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(t,e,s){return this.sendPacket("message",t,e,s),this}send(t,e,s){return this.sendPacket("message",t,e,s),this}sendPacket(t,e,s,n){if("function"==typeof e&&(n=e,e=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const r={type:t,data:e,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),n&&this.once("flush",n),this.flush()}close(){const t=()=>{this.onClose("forced close"),this.transport.close()},e=()=>{this.off("upgrade",e),this.off("upgradeError",e),t()},s=()=>{this.once("upgrade",e),this.once("upgradeError",e)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():t()})):this.upgrading?s():t()),this}onError(t){$.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const e=[];let s=0;const n=t.length;for(;s"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||G&&t instanceof Blob||Q&&t instanceof File}function tt(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,s=t.length;e0;case ot.ACK:case ot.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class ht{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=nt(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var ct=Object.freeze({__proto__:null,protocol:5,get PacketType(){return ot},Encoder:class{encode(t){return t.type!==ot.EVENT&&t.type!==ot.ACK||!tt(t)?[this.encodeAsString(t)]:(t.type=t.type===ot.EVENT?ot.BINARY_EVENT:ot.BINARY_ACK,this.encodeAsBinary(t))}encodeAsString(t){let e=""+t.type;return t.type!==ot.BINARY_EVENT&&t.type!==ot.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data)),e}encodeAsBinary(t){const e=et(t),s=this.encodeAsString(e.packet),n=e.buffers;return n.unshift(s),n}},Decoder:at});function pt(t,e,s){return t.on(e,s),function(){t.off(e,s)}}const ut=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class lt extends u{constructor(t,e,s){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=e,s&&s.auth&&(this.auth=s.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const t=this.io;this.subs=[pt(t,"open",this.onopen.bind(this)),pt(t,"packet",this.onpacket.bind(this)),pt(t,"error",this.onerror.bind(this)),pt(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...e){if(ut.hasOwnProperty(t))throw new Error('"'+t+'" is a reserved event name');e.unshift(t);const s={type:ot.EVENT,data:e,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof e[e.length-1]){const t=this.ids++,n=e.pop();this._registerAckCallback(t,n),s.id=t}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!n||!this.connected)||(this.connected?this.packet(s):this.sendBuffer.push(s)),this.flags={},this}_registerAckCallback(t,e){const s=this.flags.timeout;if(void 0===s)return void(this.acks[t]=e);const n=this.io.setTimeoutFn((()=>{delete this.acks[t];for(let e=0;e{this.io.clearTimeoutFn(n),e.apply(this,[null,...t])}}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){"function"==typeof this.auth?this.auth((t=>{this.packet({type:ot.CONNECT,data:t})})):this.packet({type:ot.CONNECT,data:this.auth})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",t)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case ot.CONNECT:if(t.data&&t.data.sid){const e=t.data.sid;this.onconnect(e)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ot.EVENT:case ot.BINARY_EVENT:this.onevent(t);break;case ot.ACK:case ot.BINARY_ACK:this.onack(t);break;case ot.DISCONNECT:this.ondisconnect();break;case ot.CONNECT_ERROR:this.destroy();const e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}onevent(t){const e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const s of e)s.apply(this,t)}super.emit.apply(this,t)}ack(t){const e=this;let s=!1;return function(...n){s||(s=!0,e.packet({type:ot.ACK,id:t,data:n}))}}onack(t){const e=this.acks[t.id];"function"==typeof e&&(e.apply(this,t.data),delete this.acks[t.id])}onconnect(t){this.id=t,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>this.packet(t))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ot.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let s=0;s0&&t.jitter<=1?t.jitter:0,this.attempts=0}ft.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),s=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-s:t+s}return 0|Math.min(t,this.max)},ft.prototype.reset=function(){this.attempts=0},ft.prototype.setMin=function(t){this.ms=t},ft.prototype.setMax=function(t){this.max=t},ft.prototype.setJitter=function(t){this.jitter=t};class yt extends u{constructor(t,e){var s;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(e=t,t=void 0),(e=e||{}).path=e.path||"/socket.io",this.opts=e,p(this,e),this.reconnection(!1!==e.reconnection),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=e.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new dt({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this._readyState="closed",this.uri=t;const n=e.parser||ct;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==e.autoConnect,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}randomizationFactor(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}reconnectionDelayMax(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new $(this.uri,this.opts);const e=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=pt(e,"open",(function(){s.onopen(),t&&t()})),r=pt(e,"error",(e=>{s.cleanup(),s._readyState="closed",this.emitReserved("error",e),t?t(e):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const t=this._timeout;0===t&&n();const s=this.setTimeoutFn((()=>{n(),e.close(),e.emit("error",new Error("timeout"))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(r),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(pt(t,"ping",this.onping.bind(this)),pt(t,"data",this.ondata.bind(this)),pt(t,"error",this.onerror.bind(this)),pt(t,"close",this.onclose.bind(this)),pt(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){this.decoder.add(t)}ondecoded(t){this.emitReserved("packet",t)}onerror(t){this.emitReserved("error",t)}socket(t,e){let s=this.nsps[t];return s||(s=new lt(this,t,e),this.nsps[t]=s),s}_destroy(t){const e=Object.keys(this.nsps);for(const t of e){if(this.nsps[t].active)return}this._close()}_packet(t){const e=this.encoder.encode(t);for(let s=0;st())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const e=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn((()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((e=>{e?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",e)):t.onreconnect()})))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const mt={};function gt(t,e){"object"==typeof t&&(e=t,t=void 0);const n=function(t,e="",n){let r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=s(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(t,(e=e||{}).path||"/socket.io"),r=n.source,i=n.id,o=n.path,a=mt[i]&&o in mt[i].nsps;let h;return e.forceNew||e["force new connection"]||!1===e.multiplex||a?h=new yt(r,e):(mt[i]||(mt[i]=new yt(r,e)),h=mt[i]),n.query&&!e.query&&(e.query=n.queryKey),h.socket(n.path,e)}Object.assign(gt,{Manager:yt,Socket:lt,io:gt,connect:gt});export{yt as Manager,lt as Socket,gt as connect,gt as default,gt as io,it as protocol}; -//# sourceMappingURL=socket.io.esm.min.js.map diff --git a/client-dist/socket.io.esm.min.js.map b/client-dist/socket.io.esm.min.js.map deleted file mode 100644 index 1d6c6a8381..0000000000 --- a/client-dist/socket.io.esm.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"socket.io.esm.min.js","sources":["../node_modules/parseuri/index.js","../node_modules/has-cors/index.js","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/@socket.io/component-emitter/index.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-client/node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/index.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/yeast/index.js","../node_modules/parseqs/index.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/engine.io-client/build/esm/index.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../build/esm/on.js","../build/esm/socket.js","../node_modules/backo2/index.js","../build/esm/manager.js","../build/esm/index.js","../build/esm/url.js"],"sourcesContent":["/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","export default (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import globalThis from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose();\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport parseqs from \"parseqs\";\nimport yeast from \"yeast\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emit(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, desc) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, desc);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n constructor() {\n super();\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n }\n catch (e) {\n return false;\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n *\n * @public\n */\n constructor(io, nsp, opts) {\n super();\n this.connected = false;\n this.disconnected = true;\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @public\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for connect()\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * @return self\n * @public\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @return self\n * @public\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @private\n */\n onclose(reason) {\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emitReserved(\"disconnect\", reason);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n this.onevent(packet);\n break;\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n this.onack(packet);\n break;\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.disconnected = false;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => this.packet(packet));\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually.\n *\n * @return self\n * @public\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for disconnect()\n *\n * @return self\n * @public\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n * @public\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @returns self\n * @public\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * ```\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n * ```\n *\n * @returns self\n * @public\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @param listener\n * @public\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @param listener\n * @public\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @param listener\n * @public\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n *\n * @public\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n}\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","import { Socket as Engine, installTimerFunctions, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport Backoff from \"backo2\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n this.decoder.add(data);\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n this.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(http://github.com/uri,%20opts.path%20||%20/%22/socket.io/");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import parseuri from \"parseuri\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(http://github.com/uri,%20path%20=%20/%22/%22,%20loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parseuri(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n"],"names":["re","parts","parseuri","str","src","b","indexOf","e","substring","replace","length","query","data","m","exec","uri","i","source","host","authority","ipv6uri","pathNames","obj","path","regx","names","split","substr","splice","queryKey","$0","$1","$2","hasCorsModule","XMLHttpRequest","err","self","window","Function","opts","xdomain","hasCORS","globalThis","concat","join","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","Emitter","key","prototype","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","emit","args","Array","len","slice","emitReserved","listeners","hasListeners","PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","ERROR_PACKET","type","withNativeBlob","Blob","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","readAsDataURL","chars","lookup","Uint8Array","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Transport","constructor","super","writable","readyState","socket","onError","msg","desc","Error","description","open","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","packet","onPacket","prev","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","yeast_1","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","Polling","polling","name","poll","pause","onPause","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","count","encodePayload","doWrite","schema","secure","port","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","parseqs","hostname","empty","hasXHR2","responseType","Request","method","async","undefined","xd","xscheme","xs","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","document","index","requestsCount","requests","onSuccess","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","forceBase64","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","onmessage","ev","onerror","lastPacket","transports","websocket","location","isSSL","protocol","request","assign","req","pollXhr","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","createTransport","o","clone","EIO","priorWebsocketSuccess","shift","setTransport","onDrain","probe","failed","onTransportOpen","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","onHandshake","JSON","parse","resetPingTimeout","sendPacket","code","filterUpgrades","options","compress","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","j","withNativeFile","File","isBinary","hasBinary","toJSON","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","Decoder","add","decodeString","BINARY_EVENT","BINARY_ACK","reconstructor","BinaryReconstructor","takeBinaryData","start","buf","nsp","next","c","payload","tryParse","isPayloadValid","static","CONNECT","DISCONNECT","CONNECT_ERROR","EVENT","ACK","destroy","finishedReconstruction","reconPack","binData","encodeAsString","encodeAsBinary","stringify","deconstruction","unshift","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","disconnected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","subEvents","subs","onpacket","active","_readyState","ack","pop","_registerAckCallback","isTransportWritable","engine","volatile","timer","_packet","onconnect","onevent","onack","ondisconnect","message","emitEvent","_anyListeners","listener","sent","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","backo2","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","Encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","delay","onreconnect","attempt","cache","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/client-dist/socket.io.js b/client-dist/socket.io.js deleted file mode 100644 index ff721339ba..0000000000 --- a/client-dist/socket.io.js +++ /dev/null @@ -1,4240 +0,0 @@ -/*! - * Socket.IO v4.4.1 - * (c) 2014-2022 Guillermo Rauch - * Released under the MIT License. - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.io = factory()); -})(this, (function () { 'use strict'; - - function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); - return true; - } catch (e) { - return false; - } - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; - } - - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - - return _assertThisInitialized(self); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), - result; - - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - - return _possibleConstructorReturn(this, result); - }; - } - - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - - return object; - } - - function _get(target, property, receiver) { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - - if (desc.get) { - return desc.get.call(receiver); - } - - return desc.value; - }; - } - - return _get(target, property, receiver || target); - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - - return arr2; - } - - function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - - if (!it) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - - var F = function () {}; - - return { - s: F, - n: function () { - if (i >= o.length) return { - done: true - }; - return { - done: false, - value: o[i++] - }; - }, - e: function (e) { - throw e; - }, - f: F - }; - } - - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - var normalCompletion = true, - didErr = false, - err; - return { - s: function () { - it = it.call(o); - }, - n: function () { - var step = it.next(); - normalCompletion = step.done; - return step; - }, - e: function (e) { - didErr = true; - err = e; - }, - f: function () { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } - }; - } - - /** - * Parses an URI - * - * @author Steven Levithan (MIT license) - * @api private - */ - var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; - var parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor']; - - var parseuri = function parseuri(str) { - var src = str, - b = str.indexOf('['), - e = str.indexOf(']'); - - if (b != -1 && e != -1) { - str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length); - } - - var m = re.exec(str || ''), - uri = {}, - i = 14; - - while (i--) { - uri[parts[i]] = m[i] || ''; - } - - if (b != -1 && e != -1) { - uri.source = src; - uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':'); - uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':'); - uri.ipv6uri = true; - } - - uri.pathNames = pathNames(uri, uri['path']); - uri.queryKey = queryKey(uri, uri['query']); - return uri; - }; - - function pathNames(obj, path) { - var regx = /\/{2,9}/g, - names = path.replace(regx, "/").split("/"); - - if (path.substr(0, 1) == '/' || path.length === 0) { - names.splice(0, 1); - } - - if (path.substr(path.length - 1, 1) == '/') { - names.splice(names.length - 1, 1); - } - - return names; - } - - function queryKey(uri, query) { - var data = {}; - query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) { - if ($1) { - data[$1] = $2; - } - }); - return data; - } - - /** - * URL parser. - * - * @param uri - url - * @param path - the request path of the connection - * @param loc - An object meant to mimic window.location. - * Defaults to window.location. - * @public - */ - - function url(http://github.com/uri) { - var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; - var loc = arguments.length > 2 ? arguments[2] : undefined; - var obj = uri; // default to window.location - - loc = loc || typeof location !== "undefined" && location; - if (null == uri) uri = loc.protocol + "//" + loc.host; // relative path support - - if (typeof uri === "string") { - if ("/" === uri.charAt(0)) { - if ("/" === uri.charAt(1)) { - uri = loc.protocol + uri; - } else { - uri = loc.host + uri; - } - } - - if (!/^(https?|wss?):\/\//.test(uri)) { - if ("undefined" !== typeof loc) { - uri = loc.protocol + "//" + uri; - } else { - uri = "https://" + uri; - } - } // parse - - - obj = parseuri(uri); - } // make sure we treat `localhost:80` and `localhost` equally - - - if (!obj.port) { - if (/^(http|ws)$/.test(obj.protocol)) { - obj.port = "80"; - } else if (/^(http|ws)s$/.test(obj.protocol)) { - obj.port = "443"; - } - } - - obj.path = obj.path || "/"; - var ipv6 = obj.host.indexOf(":") !== -1; - var host = ipv6 ? "[" + obj.host + "]" : obj.host; // define unique id - - obj.id = obj.protocol + "://" + host + ":" + obj.port + path; // define href - - obj.href = obj.protocol + "://" + host + (loc && loc.port === obj.port ? "" : ":" + obj.port); - return obj; - } - - var hasCors = {exports: {}}; - - /** - * Module exports. - * - * Logic borrowed from Modernizr: - * - * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js - */ - - try { - hasCors.exports = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest(); - } catch (err) { - // if XMLHttp support is disabled in IE then it will throw - // when trying to create - hasCors.exports = false; - } - - var hasCORS = hasCors.exports; - - var globalThis = (function () { - if (typeof self !== "undefined") { - return self; - } else if (typeof window !== "undefined") { - return window; - } else { - return Function("return this")(); - } - })(); - - // browser shim for xmlhttprequest module - function XMLHttpRequest$1 (opts) { - var xdomain = opts.xdomain; // XMLHttpRequest can be disabled on IE - - try { - if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { - return new XMLHttpRequest(); - } - } catch (e) {} - - if (!xdomain) { - try { - return new globalThis[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP"); - } catch (e) {} - } - } - - function pick(obj) { - for (var _len = arguments.length, attr = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - attr[_key - 1] = arguments[_key]; - } - - return attr.reduce(function (acc, k) { - if (obj.hasOwnProperty(k)) { - acc[k] = obj[k]; - } - - return acc; - }, {}); - } // Keep a reference to the real timeout functions so they can be used when overridden - - var NATIVE_SET_TIMEOUT = setTimeout; - var NATIVE_CLEAR_TIMEOUT = clearTimeout; - function installTimerFunctions(obj, opts) { - if (opts.useNativeTimers) { - obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis); - obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis); - } else { - obj.setTimeoutFn = setTimeout.bind(globalThis); - obj.clearTimeoutFn = clearTimeout.bind(globalThis); - } - } - - /** - * Expose `Emitter`. - */ - - var Emitter_1 = Emitter; - /** - * Initialize a new `Emitter`. - * - * @api public - */ - - function Emitter(obj) { - if (obj) return mixin(obj); - } - /** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - - - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - - return obj; - } - /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - - Emitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) { - this._callbacks = this._callbacks || {}; - (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn); - return this; - }; - /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - - Emitter.prototype.once = function (event, fn) { - function on() { - this.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; - }; - /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - - Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) { - this._callbacks = this._callbacks || {}; // all - - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } // specific event - - - var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; // remove all handlers - - if (1 == arguments.length) { - delete this._callbacks['$' + event]; - return this; - } // remove specific handler - - - var cb; - - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } // Remove event specific arrays for event types that no - // one is subscribed for to avoid memory leak. - - - if (callbacks.length === 0) { - delete this._callbacks['$' + event]; - } - - return this; - }; - /** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - - - Emitter.prototype.emit = function (event) { - this._callbacks = this._callbacks || {}; - var args = new Array(arguments.length - 1), - callbacks = this._callbacks['$' + event]; - - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - - if (callbacks) { - callbacks = callbacks.slice(0); - - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; - }; // alias used for reserved events (protected method) - - - Emitter.prototype.emitReserved = Emitter.prototype.emit; - /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - - Emitter.prototype.listeners = function (event) { - this._callbacks = this._callbacks || {}; - return this._callbacks['$' + event] || []; - }; - /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - - - Emitter.prototype.hasListeners = function (event) { - return !!this.listeners(event).length; - }; - - var PACKET_TYPES = Object.create(null); // no Map = no polyfill - - PACKET_TYPES["open"] = "0"; - PACKET_TYPES["close"] = "1"; - PACKET_TYPES["ping"] = "2"; - PACKET_TYPES["pong"] = "3"; - PACKET_TYPES["message"] = "4"; - PACKET_TYPES["upgrade"] = "5"; - PACKET_TYPES["noop"] = "6"; - var PACKET_TYPES_REVERSE = Object.create(null); - Object.keys(PACKET_TYPES).forEach(function (key) { - PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key; - }); - var ERROR_PACKET = { - type: "error", - data: "parser error" - }; - - var withNativeBlob$1 = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]"; - var withNativeArrayBuffer$2 = typeof ArrayBuffer === "function"; // ArrayBuffer.isView method is not defined in IE10 - - var isView$1 = function isView(obj) { - return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer; - }; - - var encodePacket = function encodePacket(_ref, supportsBinary, callback) { - var type = _ref.type, - data = _ref.data; - - if (withNativeBlob$1 && data instanceof Blob) { - if (supportsBinary) { - return callback(data); - } else { - return encodeBlobAsBase64(data, callback); - } - } else if (withNativeArrayBuffer$2 && (data instanceof ArrayBuffer || isView$1(data))) { - if (supportsBinary) { - return callback(data); - } else { - return encodeBlobAsBase64(new Blob([data]), callback); - } - } // plain string - - - return callback(PACKET_TYPES[type] + (data || "")); - }; - - var encodeBlobAsBase64 = function encodeBlobAsBase64(data, callback) { - var fileReader = new FileReader(); - - fileReader.onload = function () { - var content = fileReader.result.split(",")[1]; - callback("b" + content); - }; - - return fileReader.readAsDataURL(data); - }; - - /* - * base64-arraybuffer 1.0.1 - * Copyright (c) 2021 Niklas von Hertzen - * Released under MIT License - */ - var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index. - - var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); - - for (var i$1 = 0; i$1 < chars.length; i$1++) { - lookup$1[chars.charCodeAt(i$1)] = i$1; - } - - var decode$1 = function decode(base64) { - var bufferLength = base64.length * 0.75, - len = base64.length, - i, - p = 0, - encoded1, - encoded2, - encoded3, - encoded4; - - if (base64[base64.length - 1] === '=') { - bufferLength--; - - if (base64[base64.length - 2] === '=') { - bufferLength--; - } - } - - var arraybuffer = new ArrayBuffer(bufferLength), - bytes = new Uint8Array(arraybuffer); - - for (i = 0; i < len; i += 4) { - encoded1 = lookup$1[base64.charCodeAt(i)]; - encoded2 = lookup$1[base64.charCodeAt(i + 1)]; - encoded3 = lookup$1[base64.charCodeAt(i + 2)]; - encoded4 = lookup$1[base64.charCodeAt(i + 3)]; - bytes[p++] = encoded1 << 2 | encoded2 >> 4; - bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; - bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; - } - - return arraybuffer; - }; - - var withNativeArrayBuffer$1 = typeof ArrayBuffer === "function"; - - var decodePacket = function decodePacket(encodedPacket, binaryType) { - if (typeof encodedPacket !== "string") { - return { - type: "message", - data: mapBinary(encodedPacket, binaryType) - }; - } - - var type = encodedPacket.charAt(0); - - if (type === "b") { - return { - type: "message", - data: decodeBase64Packet(encodedPacket.substring(1), binaryType) - }; - } - - var packetType = PACKET_TYPES_REVERSE[type]; - - if (!packetType) { - return ERROR_PACKET; - } - - return encodedPacket.length > 1 ? { - type: PACKET_TYPES_REVERSE[type], - data: encodedPacket.substring(1) - } : { - type: PACKET_TYPES_REVERSE[type] - }; - }; - - var decodeBase64Packet = function decodeBase64Packet(data, binaryType) { - if (withNativeArrayBuffer$1) { - var decoded = decode$1(data); - return mapBinary(decoded, binaryType); - } else { - return { - base64: true, - data: data - }; // fallback for old browsers - } - }; - - var mapBinary = function mapBinary(data, binaryType) { - switch (binaryType) { - case "blob": - return data instanceof ArrayBuffer ? new Blob([data]) : data; - - case "arraybuffer": - default: - return data; - // assuming the data is already an ArrayBuffer - } - }; - - var SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text - - var encodePayload = function encodePayload(packets, callback) { - // some packets may be added to the array while encoding, so the initial length must be saved - var length = packets.length; - var encodedPackets = new Array(length); - var count = 0; - packets.forEach(function (packet, i) { - // force base64 encoding for binary packets - encodePacket(packet, false, function (encodedPacket) { - encodedPackets[i] = encodedPacket; - - if (++count === length) { - callback(encodedPackets.join(SEPARATOR)); - } - }); - }); - }; - - var decodePayload = function decodePayload(encodedPayload, binaryType) { - var encodedPackets = encodedPayload.split(SEPARATOR); - var packets = []; - - for (var i = 0; i < encodedPackets.length; i++) { - var decodedPacket = decodePacket(encodedPackets[i], binaryType); - packets.push(decodedPacket); - - if (decodedPacket.type === "error") { - break; - } - } - - return packets; - }; - - var protocol$1 = 4; - - var Transport = /*#__PURE__*/function (_Emitter) { - _inherits(Transport, _Emitter); - - var _super = _createSuper(Transport); - - /** - * Transport abstract constructor. - * - * @param {Object} options. - * @api private - */ - function Transport(opts) { - var _this; - - _classCallCheck(this, Transport); - - _this = _super.call(this); - _this.writable = false; - installTimerFunctions(_assertThisInitialized(_this), opts); - _this.opts = opts; - _this.query = opts.query; - _this.readyState = ""; - _this.socket = opts.socket; - return _this; - } - /** - * Emits an error. - * - * @param {String} str - * @return {Transport} for chaining - * @api protected - */ - - - _createClass(Transport, [{ - key: "onError", - value: function onError(msg, desc) { - var err = new Error(msg); // @ts-ignore - - err.type = "TransportError"; // @ts-ignore - - err.description = desc; - - _get(_getPrototypeOf(Transport.prototype), "emit", this).call(this, "error", err); - - return this; - } - /** - * Opens the transport. - * - * @api public - */ - - }, { - key: "open", - value: function open() { - if ("closed" === this.readyState || "" === this.readyState) { - this.readyState = "opening"; - this.doOpen(); - } - - return this; - } - /** - * Closes the transport. - * - * @api public - */ - - }, { - key: "close", - value: function close() { - if ("opening" === this.readyState || "open" === this.readyState) { - this.doClose(); - this.onClose(); - } - - return this; - } - /** - * Sends multiple packets. - * - * @param {Array} packets - * @api public - */ - - }, { - key: "send", - value: function send(packets) { - if ("open" === this.readyState) { - this.write(packets); - } - } - /** - * Called upon open - * - * @api protected - */ - - }, { - key: "onOpen", - value: function onOpen() { - this.readyState = "open"; - this.writable = true; - - _get(_getPrototypeOf(Transport.prototype), "emit", this).call(this, "open"); - } - /** - * Called with data. - * - * @param {String} data - * @api protected - */ - - }, { - key: "onData", - value: function onData(data) { - var packet = decodePacket(data, this.socket.binaryType); - this.onPacket(packet); - } - /** - * Called with a decoded packet. - * - * @api protected - */ - - }, { - key: "onPacket", - value: function onPacket(packet) { - _get(_getPrototypeOf(Transport.prototype), "emit", this).call(this, "packet", packet); - } - /** - * Called upon close. - * - * @api protected - */ - - }, { - key: "onClose", - value: function onClose() { - this.readyState = "closed"; - - _get(_getPrototypeOf(Transport.prototype), "emit", this).call(this, "close"); - } - }]); - - return Transport; - }(Emitter_1); - - var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), - length = 64, - map = {}, - seed = 0, - i = 0, - prev; - /** - * Return a string representing the specified number. - * - * @param {Number} num The number to convert. - * @returns {String} The string representation of the number. - * @api public - */ - - function encode(num) { - var encoded = ''; - - do { - encoded = alphabet[num % length] + encoded; - num = Math.floor(num / length); - } while (num > 0); - - return encoded; - } - /** - * Return the integer value specified by the given string. - * - * @param {String} str The string to convert. - * @returns {Number} The integer value represented by the string. - * @api public - */ - - - function decode(str) { - var decoded = 0; - - for (i = 0; i < str.length; i++) { - decoded = decoded * length + map[str.charAt(i)]; - } - - return decoded; - } - /** - * Yeast: A tiny growing id generator. - * - * @returns {String} A unique id. - * @api public - */ - - - function yeast() { - var now = encode(+new Date()); - if (now !== prev) return seed = 0, prev = now; - return now + '.' + encode(seed++); - } // - // Map each character to its index. - // - - - for (; i < length; i++) { - map[alphabet[i]] = i; - } // - // Expose the `yeast`, `encode` and `decode` functions. - // - - - yeast.encode = encode; - yeast.decode = decode; - var yeast_1 = yeast; - - var parseqs = {}; - - /** - * Compiles a querystring - * Returns string representation of the object - * - * @param {Object} - * @api private - */ - - parseqs.encode = function (obj) { - var str = ''; - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (str.length) str += '&'; - str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); - } - } - - return str; - }; - /** - * Parses a simple querystring into an object - * - * @param {String} qs - * @api private - */ - - - parseqs.decode = function (qs) { - var qry = {}; - var pairs = qs.split('&'); - - for (var i = 0, l = pairs.length; i < l; i++) { - var pair = pairs[i].split('='); - qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); - } - - return qry; - }; - - var Polling = /*#__PURE__*/function (_Transport) { - _inherits(Polling, _Transport); - - var _super = _createSuper(Polling); - - function Polling() { - var _this; - - _classCallCheck(this, Polling); - - _this = _super.apply(this, arguments); - _this.polling = false; - return _this; - } - /** - * Transport name. - */ - - - _createClass(Polling, [{ - key: "name", - get: function get() { - return "polling"; - } - /** - * Opens the socket (triggers polling). We write a PING message to determine - * when the transport is open. - * - * @api private - */ - - }, { - key: "doOpen", - value: function doOpen() { - this.poll(); - } - /** - * Pauses polling. - * - * @param {Function} callback upon buffers are flushed and transport is paused - * @api private - */ - - }, { - key: "pause", - value: function pause(onPause) { - var _this2 = this; - - this.readyState = "pausing"; - - var pause = function pause() { - _this2.readyState = "paused"; - onPause(); - }; - - if (this.polling || !this.writable) { - var total = 0; - - if (this.polling) { - total++; - this.once("pollComplete", function () { - --total || pause(); - }); - } - - if (!this.writable) { - total++; - this.once("drain", function () { - --total || pause(); - }); - } - } else { - pause(); - } - } - /** - * Starts polling cycle. - * - * @api public - */ - - }, { - key: "poll", - value: function poll() { - this.polling = true; - this.doPoll(); - this.emit("poll"); - } - /** - * Overloads onData to detect payloads. - * - * @api private - */ - - }, { - key: "onData", - value: function onData(data) { - var _this3 = this; - - var callback = function callback(packet) { - // if its the first message we consider the transport open - if ("opening" === _this3.readyState && packet.type === "open") { - _this3.onOpen(); - } // if its a close packet, we close the ongoing requests - - - if ("close" === packet.type) { - _this3.onClose(); - - return false; - } // otherwise bypass onData and handle the message - - - _this3.onPacket(packet); - }; // decode payload - - - decodePayload(data, this.socket.binaryType).forEach(callback); // if an event did not trigger closing - - if ("closed" !== this.readyState) { - // if we got data we're not polling - this.polling = false; - this.emit("pollComplete"); - - if ("open" === this.readyState) { - this.poll(); - } - } - } - /** - * For polling, send a close packet. - * - * @api private - */ - - }, { - key: "doClose", - value: function doClose() { - var _this4 = this; - - var close = function close() { - _this4.write([{ - type: "close" - }]); - }; - - if ("open" === this.readyState) { - close(); - } else { - // in case we're trying to close while - // handshaking is in progress (GH-164) - this.once("open", close); - } - } - /** - * Writes a packets payload. - * - * @param {Array} data packets - * @param {Function} drain callback - * @api private - */ - - }, { - key: "write", - value: function write(packets) { - var _this5 = this; - - this.writable = false; - encodePayload(packets, function (data) { - _this5.doWrite(data, function () { - _this5.writable = true; - - _this5.emit("drain"); - }); - }); - } - /** - * Generates uri for connection. - * - * @api private - */ - - }, { - key: "uri", - value: function uri() { - var query = this.query || {}; - var schema = this.opts.secure ? "https" : "http"; - var port = ""; // cache busting is forced - - if (false !== this.opts.timestampRequests) { - query[this.opts.timestampParam] = yeast_1(); - } - - if (!this.supportsBinary && !query.sid) { - query.b64 = 1; - } // avoid port if default for schema - - - if (this.opts.port && ("https" === schema && Number(this.opts.port) !== 443 || "http" === schema && Number(this.opts.port) !== 80)) { - port = ":" + this.opts.port; - } - - var encodedQuery = parseqs.encode(query); - var ipv6 = this.opts.hostname.indexOf(":") !== -1; - return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); - } - }]); - - return Polling; - }(Transport); - - /** - * Empty function - */ - - function empty() {} - - var hasXHR2 = function () { - var xhr = new XMLHttpRequest$1({ - xdomain: false - }); - return null != xhr.responseType; - }(); - - var XHR = /*#__PURE__*/function (_Polling) { - _inherits(XHR, _Polling); - - var _super = _createSuper(XHR); - - /** - * XHR Polling constructor. - * - * @param {Object} opts - * @api public - */ - function XHR(opts) { - var _this; - - _classCallCheck(this, XHR); - - _this = _super.call(this, opts); - - if (typeof location !== "undefined") { - var isSSL = "https:" === location.protocol; - var port = location.port; // some user agents have empty `location.port` - - if (!port) { - port = isSSL ? "443" : "80"; - } - - _this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port; - _this.xs = opts.secure !== isSSL; - } - /** - * XHR supports binary - */ - - - var forceBase64 = opts && opts.forceBase64; - _this.supportsBinary = hasXHR2 && !forceBase64; - return _this; - } - /** - * Creates a request. - * - * @param {String} method - * @api private - */ - - - _createClass(XHR, [{ - key: "request", - value: function request() { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - _extends(opts, { - xd: this.xd, - xs: this.xs - }, this.opts); - - return new Request(this.uri(), opts); - } - /** - * Sends data. - * - * @param {String} data to send. - * @param {Function} called upon flush. - * @api private - */ - - }, { - key: "doWrite", - value: function doWrite(data, fn) { - var _this2 = this; - - var req = this.request({ - method: "POST", - data: data - }); - req.on("success", fn); - req.on("error", function (err) { - _this2.onError("xhr post error", err); - }); - } - /** - * Starts a poll cycle. - * - * @api private - */ - - }, { - key: "doPoll", - value: function doPoll() { - var _this3 = this; - - var req = this.request(); - req.on("data", this.onData.bind(this)); - req.on("error", function (err) { - _this3.onError("xhr poll error", err); - }); - this.pollXhr = req; - } - }]); - - return XHR; - }(Polling); - var Request = /*#__PURE__*/function (_Emitter) { - _inherits(Request, _Emitter); - - var _super2 = _createSuper(Request); - - /** - * Request constructor - * - * @param {Object} options - * @api public - */ - function Request(uri, opts) { - var _this4; - - _classCallCheck(this, Request); - - _this4 = _super2.call(this); - installTimerFunctions(_assertThisInitialized(_this4), opts); - _this4.opts = opts; - _this4.method = opts.method || "GET"; - _this4.uri = uri; - _this4.async = false !== opts.async; - _this4.data = undefined !== opts.data ? opts.data : null; - - _this4.create(); - - return _this4; - } - /** - * Creates the XHR object and sends the request. - * - * @api private - */ - - - _createClass(Request, [{ - key: "create", - value: function create() { - var _this5 = this; - - var opts = pick(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref"); - opts.xdomain = !!this.opts.xd; - opts.xscheme = !!this.opts.xs; - var xhr = this.xhr = new XMLHttpRequest$1(opts); - - try { - xhr.open(this.method, this.uri, this.async); - - try { - if (this.opts.extraHeaders) { - xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true); - - for (var i in this.opts.extraHeaders) { - if (this.opts.extraHeaders.hasOwnProperty(i)) { - xhr.setRequestHeader(i, this.opts.extraHeaders[i]); - } - } - } - } catch (e) {} - - if ("POST" === this.method) { - try { - xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8"); - } catch (e) {} - } - - try { - xhr.setRequestHeader("Accept", "*/*"); - } catch (e) {} // ie6 check - - - if ("withCredentials" in xhr) { - xhr.withCredentials = this.opts.withCredentials; - } - - if (this.opts.requestTimeout) { - xhr.timeout = this.opts.requestTimeout; - } - - xhr.onreadystatechange = function () { - if (4 !== xhr.readyState) return; - - if (200 === xhr.status || 1223 === xhr.status) { - _this5.onLoad(); - } else { - // make sure the `error` event handler that's user-set - // does not throw in the same tick and gets caught here - _this5.setTimeoutFn(function () { - _this5.onError(typeof xhr.status === "number" ? xhr.status : 0); - }, 0); - } - }; - - xhr.send(this.data); - } catch (e) { - // Need to defer since .create() is called directly from the constructor - // and thus the 'error' event can only be only bound *after* this exception - // occurs. Therefore, also, we cannot throw here at all. - this.setTimeoutFn(function () { - _this5.onError(e); - }, 0); - return; - } - - if (typeof document !== "undefined") { - this.index = Request.requestsCount++; - Request.requests[this.index] = this; - } - } - /** - * Called upon successful response. - * - * @api private - */ - - }, { - key: "onSuccess", - value: function onSuccess() { - this.emit("success"); - this.cleanup(); - } - /** - * Called if we have data. - * - * @api private - */ - - }, { - key: "onData", - value: function onData(data) { - this.emit("data", data); - this.onSuccess(); - } - /** - * Called upon error. - * - * @api private - */ - - }, { - key: "onError", - value: function onError(err) { - this.emit("error", err); - this.cleanup(true); - } - /** - * Cleans up house. - * - * @api private - */ - - }, { - key: "cleanup", - value: function cleanup(fromError) { - if ("undefined" === typeof this.xhr || null === this.xhr) { - return; - } - - this.xhr.onreadystatechange = empty; - - if (fromError) { - try { - this.xhr.abort(); - } catch (e) {} - } - - if (typeof document !== "undefined") { - delete Request.requests[this.index]; - } - - this.xhr = null; - } - /** - * Called upon load. - * - * @api private - */ - - }, { - key: "onLoad", - value: function onLoad() { - var data = this.xhr.responseText; - - if (data !== null) { - this.onData(data); - } - } - /** - * Aborts the request. - * - * @api public - */ - - }, { - key: "abort", - value: function abort() { - this.cleanup(); - } - }]); - - return Request; - }(Emitter_1); - Request.requestsCount = 0; - Request.requests = {}; - /** - * Aborts pending requests when unloading the window. This is needed to prevent - * memory leaks (e.g. when using IE) and to ensure that no spurious error is - * emitted. - */ - - if (typeof document !== "undefined") { - // @ts-ignore - if (typeof attachEvent === "function") { - // @ts-ignore - attachEvent("onunload", unloadHandler); - } else if (typeof addEventListener === "function") { - var terminationEvent = "onpagehide" in globalThis ? "pagehide" : "unload"; - addEventListener(terminationEvent, unloadHandler, false); - } - } - - function unloadHandler() { - for (var i in Request.requests) { - if (Request.requests.hasOwnProperty(i)) { - Request.requests[i].abort(); - } - } - } - - var nextTick = function () { - var isPromiseAvailable = typeof Promise === "function" && typeof Promise.resolve === "function"; - - if (isPromiseAvailable) { - return function (cb) { - return Promise.resolve().then(cb); - }; - } else { - return function (cb, setTimeoutFn) { - return setTimeoutFn(cb, 0); - }; - } - }(); - var WebSocket = globalThis.WebSocket || globalThis.MozWebSocket; - var usingBrowserWebSocket = true; - var defaultBinaryType = "arraybuffer"; - - var isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative"; - var WS = /*#__PURE__*/function (_Transport) { - _inherits(WS, _Transport); - - var _super = _createSuper(WS); - - /** - * WebSocket transport constructor. - * - * @api {Object} connection options - * @api public - */ - function WS(opts) { - var _this; - - _classCallCheck(this, WS); - - _this = _super.call(this, opts); - _this.supportsBinary = !opts.forceBase64; - return _this; - } - /** - * Transport name. - * - * @api public - */ - - - _createClass(WS, [{ - key: "name", - get: function get() { - return "websocket"; - } - /** - * Opens socket. - * - * @api private - */ - - }, { - key: "doOpen", - value: function doOpen() { - if (!this.check()) { - // let probe timeout - return; - } - - var uri = this.uri(); - var protocols = this.opts.protocols; // React Native only supports the 'headers' option, and will print a warning if anything else is passed - - var opts = isReactNative ? {} : pick(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity"); - - if (this.opts.extraHeaders) { - opts.headers = this.opts.extraHeaders; - } - - try { - this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts); - } catch (err) { - return this.emit("error", err); - } - - this.ws.binaryType = this.socket.binaryType || defaultBinaryType; - this.addEventListeners(); - } - /** - * Adds event listeners to the socket - * - * @api private - */ - - }, { - key: "addEventListeners", - value: function addEventListeners() { - var _this2 = this; - - this.ws.onopen = function () { - if (_this2.opts.autoUnref) { - _this2.ws._socket.unref(); - } - - _this2.onOpen(); - }; - - this.ws.onclose = this.onClose.bind(this); - - this.ws.onmessage = function (ev) { - return _this2.onData(ev.data); - }; - - this.ws.onerror = function (e) { - return _this2.onError("websocket error", e); - }; - } - /** - * Writes data to socket. - * - * @param {Array} array of packets. - * @api private - */ - - }, { - key: "write", - value: function write(packets) { - var _this3 = this; - - this.writable = false; // encodePacket efficient as it uses WS framing - // no need for encodePayload - - var _loop = function _loop(i) { - var packet = packets[i]; - var lastPacket = i === packets.length - 1; - encodePacket(packet, _this3.supportsBinary, function (data) { - // always create a new object (GH-437) - var opts = {}; - // have a chance of informing us about it yet, in that case send will - // throw an error - - - try { - if (usingBrowserWebSocket) { - // TypeError is thrown when passing the second argument on Safari - _this3.ws.send(data); - } - } catch (e) {} - - if (lastPacket) { - // fake drain - // defer to next tick to allow Socket to clear writeBuffer - nextTick(function () { - _this3.writable = true; - - _this3.emit("drain"); - }, _this3.setTimeoutFn); - } - }); - }; - - for (var i = 0; i < packets.length; i++) { - _loop(i); - } - } - /** - * Closes socket. - * - * @api private - */ - - }, { - key: "doClose", - value: function doClose() { - if (typeof this.ws !== "undefined") { - this.ws.close(); - this.ws = null; - } - } - /** - * Generates uri for connection. - * - * @api private - */ - - }, { - key: "uri", - value: function uri() { - var query = this.query || {}; - var schema = this.opts.secure ? "wss" : "ws"; - var port = ""; // avoid port if default for schema - - if (this.opts.port && ("wss" === schema && Number(this.opts.port) !== 443 || "ws" === schema && Number(this.opts.port) !== 80)) { - port = ":" + this.opts.port; - } // append timestamp to URI - - - if (this.opts.timestampRequests) { - query[this.opts.timestampParam] = yeast_1(); - } // communicate binary support capabilities - - - if (!this.supportsBinary) { - query.b64 = 1; - } - - var encodedQuery = parseqs.encode(query); - var ipv6 = this.opts.hostname.indexOf(":") !== -1; - return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); - } - /** - * Feature detection for WebSocket. - * - * @return {Boolean} whether this transport is available. - * @api public - */ - - }, { - key: "check", - value: function check() { - return !!WebSocket && !("__initialize" in WebSocket && this.name === WS.prototype.name); - } - }]); - - return WS; - }(Transport); - - var transports = { - websocket: WS, - polling: XHR - }; - - var Socket$1 = /*#__PURE__*/function (_Emitter) { - _inherits(Socket, _Emitter); - - var _super = _createSuper(Socket); - - /** - * Socket constructor. - * - * @param {String|Object} uri or options - * @param {Object} opts - options - * @api public - */ - function Socket(uri) { - var _this; - - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, Socket); - - _this = _super.call(this); - - if (uri && "object" === _typeof(uri)) { - opts = uri; - uri = null; - } - - if (uri) { - uri = parseuri(uri); - opts.hostname = uri.host; - opts.secure = uri.protocol === "https" || uri.protocol === "wss"; - opts.port = uri.port; - if (uri.query) opts.query = uri.query; - } else if (opts.host) { - opts.hostname = parseuri(opts.host).host; - } - - installTimerFunctions(_assertThisInitialized(_this), opts); - _this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol; - - if (opts.hostname && !opts.port) { - // if no port is specified manually, use the protocol default - opts.port = _this.secure ? "443" : "80"; - } - - _this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost"); - _this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : _this.secure ? "443" : "80"); - _this.transports = opts.transports || ["polling", "websocket"]; - _this.readyState = ""; - _this.writeBuffer = []; - _this.prevBufferLen = 0; - _this.opts = _extends({ - path: "/engine.io", - agent: false, - withCredentials: false, - upgrade: true, - timestampParam: "t", - rememberUpgrade: false, - rejectUnauthorized: true, - perMessageDeflate: { - threshold: 1024 - }, - transportOptions: {}, - closeOnBeforeunload: true - }, opts); - _this.opts.path = _this.opts.path.replace(/\/$/, "") + "/"; - - if (typeof _this.opts.query === "string") { - _this.opts.query = parseqs.decode(_this.opts.query); - } // set on handshake - - - _this.id = null; - _this.upgrades = null; - _this.pingInterval = null; - _this.pingTimeout = null; // set on heartbeat - - _this.pingTimeoutTimer = null; - - if (typeof addEventListener === "function") { - if (_this.opts.closeOnBeforeunload) { - // Firefox closes the connection when the "beforeunload" event is emitted but not Chrome. This event listener - // ensures every browser behaves the same (no "disconnect" event at the Socket.IO level when the page is - // closed/reloaded) - addEventListener("beforeunload", function () { - if (_this.transport) { - // silently close the transport - _this.transport.removeAllListeners(); - - _this.transport.close(); - } - }, false); - } - - if (_this.hostname !== "localhost") { - _this.offlineEventListener = function () { - _this.onClose("transport close"); - }; - - addEventListener("offline", _this.offlineEventListener, false); - } - } - - _this.open(); - - return _this; - } - /** - * Creates transport of the given type. - * - * @param {String} transport name - * @return {Transport} - * @api private - */ - - - _createClass(Socket, [{ - key: "createTransport", - value: function createTransport(name) { - var query = clone(this.opts.query); // append engine.io protocol identifier - - query.EIO = protocol$1; // transport name - - query.transport = name; // session id if we already have one - - if (this.id) query.sid = this.id; - - var opts = _extends({}, this.opts.transportOptions[name], this.opts, { - query: query, - socket: this, - hostname: this.hostname, - secure: this.secure, - port: this.port - }); - - return new transports[name](opts); - } - /** - * Initializes transport to use and starts probe. - * - * @api private - */ - - }, { - key: "open", - value: function open() { - var _this2 = this; - - var transport; - - if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) { - transport = "websocket"; - } else if (0 === this.transports.length) { - // Emit error on next tick so it can be listened to - this.setTimeoutFn(function () { - _this2.emitReserved("error", "No transports available"); - }, 0); - return; - } else { - transport = this.transports[0]; - } - - this.readyState = "opening"; // Retry with the next transport if the transport is disabled (jsonp: false) - - try { - transport = this.createTransport(transport); - } catch (e) { - this.transports.shift(); - this.open(); - return; - } - - transport.open(); - this.setTransport(transport); - } - /** - * Sets the current transport. Disables the existing one (if any). - * - * @api private - */ - - }, { - key: "setTransport", - value: function setTransport(transport) { - var _this3 = this; - - if (this.transport) { - this.transport.removeAllListeners(); - } // set up transport - - - this.transport = transport; // set up transport listeners - - transport.on("drain", this.onDrain.bind(this)).on("packet", this.onPacket.bind(this)).on("error", this.onError.bind(this)).on("close", function () { - _this3.onClose("transport close"); - }); - } - /** - * Probes a transport. - * - * @param {String} transport name - * @api private - */ - - }, { - key: "probe", - value: function probe(name) { - var _this4 = this; - - var transport = this.createTransport(name); - var failed = false; - Socket.priorWebsocketSuccess = false; - - var onTransportOpen = function onTransportOpen() { - if (failed) return; - transport.send([{ - type: "ping", - data: "probe" - }]); - transport.once("packet", function (msg) { - if (failed) return; - - if ("pong" === msg.type && "probe" === msg.data) { - _this4.upgrading = true; - - _this4.emitReserved("upgrading", transport); - - if (!transport) return; - Socket.priorWebsocketSuccess = "websocket" === transport.name; - - _this4.transport.pause(function () { - if (failed) return; - if ("closed" === _this4.readyState) return; - cleanup(); - - _this4.setTransport(transport); - - transport.send([{ - type: "upgrade" - }]); - - _this4.emitReserved("upgrade", transport); - - transport = null; - _this4.upgrading = false; - - _this4.flush(); - }); - } else { - var err = new Error("probe error"); // @ts-ignore - - err.transport = transport.name; - - _this4.emitReserved("upgradeError", err); - } - }); - }; - - function freezeTransport() { - if (failed) return; // Any callback called by transport should be ignored since now - - failed = true; - cleanup(); - transport.close(); - transport = null; - } // Handle any error that happens while probing - - - var onerror = function onerror(err) { - var error = new Error("probe error: " + err); // @ts-ignore - - error.transport = transport.name; - freezeTransport(); - - _this4.emitReserved("upgradeError", error); - }; - - function onTransportClose() { - onerror("transport closed"); - } // When the socket is closed while we're probing - - - function onclose() { - onerror("socket closed"); - } // When the socket is upgraded while we're probing - - - function onupgrade(to) { - if (transport && to.name !== transport.name) { - freezeTransport(); - } - } // Remove all listeners on the transport and on self - - - var cleanup = function cleanup() { - transport.removeListener("open", onTransportOpen); - transport.removeListener("error", onerror); - transport.removeListener("close", onTransportClose); - - _this4.off("close", onclose); - - _this4.off("upgrading", onupgrade); - }; - - transport.once("open", onTransportOpen); - transport.once("error", onerror); - transport.once("close", onTransportClose); - this.once("close", onclose); - this.once("upgrading", onupgrade); - transport.open(); - } - /** - * Called when connection is deemed open. - * - * @api private - */ - - }, { - key: "onOpen", - value: function onOpen() { - this.readyState = "open"; - Socket.priorWebsocketSuccess = "websocket" === this.transport.name; - this.emitReserved("open"); - this.flush(); // we check for `readyState` in case an `open` - // listener already closed the socket - - if ("open" === this.readyState && this.opts.upgrade && this.transport.pause) { - var i = 0; - var l = this.upgrades.length; - - for (; i < l; i++) { - this.probe(this.upgrades[i]); - } - } - } - /** - * Handles a packet. - * - * @api private - */ - - }, { - key: "onPacket", - value: function onPacket(packet) { - if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { - this.emitReserved("packet", packet); // Socket is live - any packet counts - - this.emitReserved("heartbeat"); - - switch (packet.type) { - case "open": - this.onHandshake(JSON.parse(packet.data)); - break; - - case "ping": - this.resetPingTimeout(); - this.sendPacket("pong"); - this.emitReserved("ping"); - this.emitReserved("pong"); - break; - - case "error": - var err = new Error("server error"); // @ts-ignore - - err.code = packet.data; - this.onError(err); - break; - - case "message": - this.emitReserved("data", packet.data); - this.emitReserved("message", packet.data); - break; - } - } - } - /** - * Called upon handshake completion. - * - * @param {Object} data - handshake obj - * @api private - */ - - }, { - key: "onHandshake", - value: function onHandshake(data) { - this.emitReserved("handshake", data); - this.id = data.sid; - this.transport.query.sid = data.sid; - this.upgrades = this.filterUpgrades(data.upgrades); - this.pingInterval = data.pingInterval; - this.pingTimeout = data.pingTimeout; - this.onOpen(); // In case open handler closes socket - - if ("closed" === this.readyState) return; - this.resetPingTimeout(); - } - /** - * Sets and resets ping timeout timer based on server pings. - * - * @api private - */ - - }, { - key: "resetPingTimeout", - value: function resetPingTimeout() { - var _this5 = this; - - this.clearTimeoutFn(this.pingTimeoutTimer); - this.pingTimeoutTimer = this.setTimeoutFn(function () { - _this5.onClose("ping timeout"); - }, this.pingInterval + this.pingTimeout); - - if (this.opts.autoUnref) { - this.pingTimeoutTimer.unref(); - } - } - /** - * Called on `drain` event - * - * @api private - */ - - }, { - key: "onDrain", - value: function onDrain() { - this.writeBuffer.splice(0, this.prevBufferLen); // setting prevBufferLen = 0 is very important - // for example, when upgrading, upgrade packet is sent over, - // and a nonzero prevBufferLen could cause problems on `drain` - - this.prevBufferLen = 0; - - if (0 === this.writeBuffer.length) { - this.emitReserved("drain"); - } else { - this.flush(); - } - } - /** - * Flush write buffers. - * - * @api private - */ - - }, { - key: "flush", - value: function flush() { - if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) { - this.transport.send(this.writeBuffer); // keep track of current length of writeBuffer - // splice writeBuffer and callbackBuffer on `drain` - - this.prevBufferLen = this.writeBuffer.length; - this.emitReserved("flush"); - } - } - /** - * Sends a message. - * - * @param {String} message. - * @param {Function} callback function. - * @param {Object} options. - * @return {Socket} for chaining. - * @api public - */ - - }, { - key: "write", - value: function write(msg, options, fn) { - this.sendPacket("message", msg, options, fn); - return this; - } - }, { - key: "send", - value: function send(msg, options, fn) { - this.sendPacket("message", msg, options, fn); - return this; - } - /** - * Sends a packet. - * - * @param {String} packet type. - * @param {String} data. - * @param {Object} options. - * @param {Function} callback function. - * @api private - */ - - }, { - key: "sendPacket", - value: function sendPacket(type, data, options, fn) { - if ("function" === typeof data) { - fn = data; - data = undefined; - } - - if ("function" === typeof options) { - fn = options; - options = null; - } - - if ("closing" === this.readyState || "closed" === this.readyState) { - return; - } - - options = options || {}; - options.compress = false !== options.compress; - var packet = { - type: type, - data: data, - options: options - }; - this.emitReserved("packetCreate", packet); - this.writeBuffer.push(packet); - if (fn) this.once("flush", fn); - this.flush(); - } - /** - * Closes the connection. - * - * @api public - */ - - }, { - key: "close", - value: function close() { - var _this6 = this; - - var close = function close() { - _this6.onClose("forced close"); - - _this6.transport.close(); - }; - - var cleanupAndClose = function cleanupAndClose() { - _this6.off("upgrade", cleanupAndClose); - - _this6.off("upgradeError", cleanupAndClose); - - close(); - }; - - var waitForUpgrade = function waitForUpgrade() { - // wait for upgrade to finish since we can't send packets while pausing a transport - _this6.once("upgrade", cleanupAndClose); - - _this6.once("upgradeError", cleanupAndClose); - }; - - if ("opening" === this.readyState || "open" === this.readyState) { - this.readyState = "closing"; - - if (this.writeBuffer.length) { - this.once("drain", function () { - if (_this6.upgrading) { - waitForUpgrade(); - } else { - close(); - } - }); - } else if (this.upgrading) { - waitForUpgrade(); - } else { - close(); - } - } - - return this; - } - /** - * Called upon transport error - * - * @api private - */ - - }, { - key: "onError", - value: function onError(err) { - Socket.priorWebsocketSuccess = false; - this.emitReserved("error", err); - this.onClose("transport error", err); - } - /** - * Called upon transport close. - * - * @api private - */ - - }, { - key: "onClose", - value: function onClose(reason, desc) { - if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { - // clear timers - this.clearTimeoutFn(this.pingTimeoutTimer); // stop event from firing again for transport - - this.transport.removeAllListeners("close"); // ensure transport won't stay open - - this.transport.close(); // ignore further transport communication - - this.transport.removeAllListeners(); - - if (typeof removeEventListener === "function") { - removeEventListener("offline", this.offlineEventListener, false); - } // set ready state - - - this.readyState = "closed"; // clear session id - - this.id = null; // emit close event - - this.emitReserved("close", reason, desc); // clean buffers after, so users can still - // grab the buffers on `close` event - - this.writeBuffer = []; - this.prevBufferLen = 0; - } - } - /** - * Filters upgrades, returning only those matching client transports. - * - * @param {Array} server upgrades - * @api private - * - */ - - }, { - key: "filterUpgrades", - value: function filterUpgrades(upgrades) { - var filteredUpgrades = []; - var i = 0; - var j = upgrades.length; - - for (; i < j; i++) { - if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]); - } - - return filteredUpgrades; - } - }]); - - return Socket; - }(Emitter_1); - Socket$1.protocol = protocol$1; - - function clone(obj) { - var o = {}; - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - o[i] = obj[i]; - } - } - - return o; - } - - var withNativeArrayBuffer = typeof ArrayBuffer === "function"; - - var isView = function isView(obj) { - return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer; - }; - - var toString = Object.prototype.toString; - var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && toString.call(Blob) === "[object BlobConstructor]"; - var withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString.call(File) === "[object FileConstructor]"; - /** - * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File. - * - * @private - */ - - function isBinary(obj) { - return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File; - } - function hasBinary(obj, toJSON) { - if (!obj || _typeof(obj) !== "object") { - return false; - } - - if (Array.isArray(obj)) { - for (var i = 0, l = obj.length; i < l; i++) { - if (hasBinary(obj[i])) { - return true; - } - } - - return false; - } - - if (isBinary(obj)) { - return true; - } - - if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 1) { - return hasBinary(obj.toJSON(), true); - } - - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) { - return true; - } - } - - return false; - } - - /** - * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder. - * - * @param {Object} packet - socket.io event packet - * @return {Object} with deconstructed packet and list of buffers - * @public - */ - - function deconstructPacket(packet) { - var buffers = []; - var packetData = packet.data; - var pack = packet; - pack.data = _deconstructPacket(packetData, buffers); - pack.attachments = buffers.length; // number of binary 'attachments' - - return { - packet: pack, - buffers: buffers - }; - } - - function _deconstructPacket(data, buffers) { - if (!data) return data; - - if (isBinary(data)) { - var placeholder = { - _placeholder: true, - num: buffers.length - }; - buffers.push(data); - return placeholder; - } else if (Array.isArray(data)) { - var newData = new Array(data.length); - - for (var i = 0; i < data.length; i++) { - newData[i] = _deconstructPacket(data[i], buffers); - } - - return newData; - } else if (_typeof(data) === "object" && !(data instanceof Date)) { - var _newData = {}; - - for (var key in data) { - if (data.hasOwnProperty(key)) { - _newData[key] = _deconstructPacket(data[key], buffers); - } - } - - return _newData; - } - - return data; - } - /** - * Reconstructs a binary packet from its placeholder packet and buffers - * - * @param {Object} packet - event packet with placeholders - * @param {Array} buffers - binary buffers to put in placeholder positions - * @return {Object} reconstructed packet - * @public - */ - - - function reconstructPacket(packet, buffers) { - packet.data = _reconstructPacket(packet.data, buffers); - packet.attachments = undefined; // no longer useful - - return packet; - } - - function _reconstructPacket(data, buffers) { - if (!data) return data; - - if (data && data._placeholder) { - return buffers[data.num]; // appropriate buffer (should be natural order anyway) - } else if (Array.isArray(data)) { - for (var i = 0; i < data.length; i++) { - data[i] = _reconstructPacket(data[i], buffers); - } - } else if (_typeof(data) === "object") { - for (var key in data) { - if (data.hasOwnProperty(key)) { - data[key] = _reconstructPacket(data[key], buffers); - } - } - } - - return data; - } - - /** - * Protocol version. - * - * @public - */ - - var protocol = 5; - var PacketType; - - (function (PacketType) { - PacketType[PacketType["CONNECT"] = 0] = "CONNECT"; - PacketType[PacketType["DISCONNECT"] = 1] = "DISCONNECT"; - PacketType[PacketType["EVENT"] = 2] = "EVENT"; - PacketType[PacketType["ACK"] = 3] = "ACK"; - PacketType[PacketType["CONNECT_ERROR"] = 4] = "CONNECT_ERROR"; - PacketType[PacketType["BINARY_EVENT"] = 5] = "BINARY_EVENT"; - PacketType[PacketType["BINARY_ACK"] = 6] = "BINARY_ACK"; - })(PacketType || (PacketType = {})); - /** - * A socket.io Encoder instance - */ - - - var Encoder = /*#__PURE__*/function () { - function Encoder() { - _classCallCheck(this, Encoder); - } - - _createClass(Encoder, [{ - key: "encode", - value: - /** - * Encode a packet as a single string if non-binary, or as a - * buffer sequence, depending on packet type. - * - * @param {Object} obj - packet object - */ - function encode(obj) { - if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) { - if (hasBinary(obj)) { - obj.type = obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK; - return this.encodeAsBinary(obj); - } - } - - return [this.encodeAsString(obj)]; - } - /** - * Encode packet as string. - */ - - }, { - key: "encodeAsString", - value: function encodeAsString(obj) { - // first is type - var str = "" + obj.type; // attachments if we have them - - if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) { - str += obj.attachments + "-"; - } // if we have a namespace other than `/` - // we append it followed by a comma `,` - - - if (obj.nsp && "/" !== obj.nsp) { - str += obj.nsp + ","; - } // immediately followed by the id - - - if (null != obj.id) { - str += obj.id; - } // json data - - - if (null != obj.data) { - str += JSON.stringify(obj.data); - } - - return str; - } - /** - * Encode packet as 'buffer sequence' by removing blobs, and - * deconstructing packet into object with placeholders and - * a list of buffers. - */ - - }, { - key: "encodeAsBinary", - value: function encodeAsBinary(obj) { - var deconstruction = deconstructPacket(obj); - var pack = this.encodeAsString(deconstruction.packet); - var buffers = deconstruction.buffers; - buffers.unshift(pack); // add packet info to beginning of data list - - return buffers; // write all the buffers - } - }]); - - return Encoder; - }(); - /** - * A socket.io Decoder instance - * - * @return {Object} decoder - */ - - var Decoder = /*#__PURE__*/function (_Emitter) { - _inherits(Decoder, _Emitter); - - var _super = _createSuper(Decoder); - - function Decoder() { - _classCallCheck(this, Decoder); - - return _super.call(this); - } - /** - * Decodes an encoded packet string into packet JSON. - * - * @param {String} obj - encoded packet - */ - - - _createClass(Decoder, [{ - key: "add", - value: function add(obj) { - var packet; - - if (typeof obj === "string") { - packet = this.decodeString(obj); - - if (packet.type === PacketType.BINARY_EVENT || packet.type === PacketType.BINARY_ACK) { - // binary packet's json - this.reconstructor = new BinaryReconstructor(packet); // no attachments, labeled binary but no binary data to follow - - if (packet.attachments === 0) { - _get(_getPrototypeOf(Decoder.prototype), "emitReserved", this).call(this, "decoded", packet); - } - } else { - // non-binary full packet - _get(_getPrototypeOf(Decoder.prototype), "emitReserved", this).call(this, "decoded", packet); - } - } else if (isBinary(obj) || obj.base64) { - // raw binary data - if (!this.reconstructor) { - throw new Error("got binary data when not reconstructing a packet"); - } else { - packet = this.reconstructor.takeBinaryData(obj); - - if (packet) { - // received final buffer - this.reconstructor = null; - - _get(_getPrototypeOf(Decoder.prototype), "emitReserved", this).call(this, "decoded", packet); - } - } - } else { - throw new Error("Unknown type: " + obj); - } - } - /** - * Decode a packet String (JSON data) - * - * @param {String} str - * @return {Object} packet - */ - - }, { - key: "decodeString", - value: function decodeString(str) { - var i = 0; // look up type - - var p = { - type: Number(str.charAt(0)) - }; - - if (PacketType[p.type] === undefined) { - throw new Error("unknown packet type " + p.type); - } // look up attachments if type binary - - - if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) { - var start = i + 1; - - while (str.charAt(++i) !== "-" && i != str.length) {} - - var buf = str.substring(start, i); - - if (buf != Number(buf) || str.charAt(i) !== "-") { - throw new Error("Illegal attachments"); - } - - p.attachments = Number(buf); - } // look up namespace (if any) - - - if ("/" === str.charAt(i + 1)) { - var _start = i + 1; - - while (++i) { - var c = str.charAt(i); - if ("," === c) break; - if (i === str.length) break; - } - - p.nsp = str.substring(_start, i); - } else { - p.nsp = "/"; - } // look up id - - - var next = str.charAt(i + 1); - - if ("" !== next && Number(next) == next) { - var _start2 = i + 1; - - while (++i) { - var _c = str.charAt(i); - - if (null == _c || Number(_c) != _c) { - --i; - break; - } - - if (i === str.length) break; - } - - p.id = Number(str.substring(_start2, i + 1)); - } // look up json data - - - if (str.charAt(++i)) { - var payload = tryParse(str.substr(i)); - - if (Decoder.isPayloadValid(p.type, payload)) { - p.data = payload; - } else { - throw new Error("invalid payload"); - } - } - - return p; - } - }, { - key: "destroy", - value: - /** - * Deallocates a parser's resources - */ - function destroy() { - if (this.reconstructor) { - this.reconstructor.finishedReconstruction(); - } - } - }], [{ - key: "isPayloadValid", - value: function isPayloadValid(type, payload) { - switch (type) { - case PacketType.CONNECT: - return _typeof(payload) === "object"; - - case PacketType.DISCONNECT: - return payload === undefined; - - case PacketType.CONNECT_ERROR: - return typeof payload === "string" || _typeof(payload) === "object"; - - case PacketType.EVENT: - case PacketType.BINARY_EVENT: - return Array.isArray(payload) && payload.length > 0; - - case PacketType.ACK: - case PacketType.BINARY_ACK: - return Array.isArray(payload); - } - } - }]); - - return Decoder; - }(Emitter_1); - - function tryParse(str) { - try { - return JSON.parse(str); - } catch (e) { - return false; - } - } - /** - * A manager of a binary event's 'buffer sequence'. Should - * be constructed whenever a packet of type BINARY_EVENT is - * decoded. - * - * @param {Object} packet - * @return {BinaryReconstructor} initialized reconstructor - */ - - - var BinaryReconstructor = /*#__PURE__*/function () { - function BinaryReconstructor(packet) { - _classCallCheck(this, BinaryReconstructor); - - this.packet = packet; - this.buffers = []; - this.reconPack = packet; - } - /** - * Method to be called when binary data received from connection - * after a BINARY_EVENT packet. - * - * @param {Buffer | ArrayBuffer} binData - the raw binary data received - * @return {null | Object} returns null if more binary data is expected or - * a reconstructed packet object if all buffers have been received. - */ - - - _createClass(BinaryReconstructor, [{ - key: "takeBinaryData", - value: function takeBinaryData(binData) { - this.buffers.push(binData); - - if (this.buffers.length === this.reconPack.attachments) { - // done with buffer list - var packet = reconstructPacket(this.reconPack, this.buffers); - this.finishedReconstruction(); - return packet; - } - - return null; - } - /** - * Cleans up binary packet reconstruction variables. - */ - - }, { - key: "finishedReconstruction", - value: function finishedReconstruction() { - this.reconPack = null; - this.buffers = []; - } - }]); - - return BinaryReconstructor; - }(); - - var parser = /*#__PURE__*/Object.freeze({ - __proto__: null, - protocol: protocol, - get PacketType () { return PacketType; }, - Encoder: Encoder, - Decoder: Decoder - }); - - function on(obj, ev, fn) { - obj.on(ev, fn); - return function subDestroy() { - obj.off(ev, fn); - }; - } - - /** - * Internal events. - * These events can't be emitted by the user. - */ - - var RESERVED_EVENTS = Object.freeze({ - connect: 1, - connect_error: 1, - disconnect: 1, - disconnecting: 1, - // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener - newListener: 1, - removeListener: 1 - }); - var Socket = /*#__PURE__*/function (_Emitter) { - _inherits(Socket, _Emitter); - - var _super = _createSuper(Socket); - - /** - * `Socket` constructor. - * - * @public - */ - function Socket(io, nsp, opts) { - var _this; - - _classCallCheck(this, Socket); - - _this = _super.call(this); - _this.connected = false; - _this.disconnected = true; - _this.receiveBuffer = []; - _this.sendBuffer = []; - _this.ids = 0; - _this.acks = {}; - _this.flags = {}; - _this.io = io; - _this.nsp = nsp; - - if (opts && opts.auth) { - _this.auth = opts.auth; - } - - if (_this.io._autoConnect) _this.open(); - return _this; - } - /** - * Subscribe to open, close and packet events - * - * @private - */ - - - _createClass(Socket, [{ - key: "subEvents", - value: function subEvents() { - if (this.subs) return; - var io = this.io; - this.subs = [on(io, "open", this.onopen.bind(this)), on(io, "packet", this.onpacket.bind(this)), on(io, "error", this.onerror.bind(this)), on(io, "close", this.onclose.bind(this))]; - } - /** - * Whether the Socket will try to reconnect when its Manager connects or reconnects - */ - - }, { - key: "active", - get: function get() { - return !!this.subs; - } - /** - * "Opens" the socket. - * - * @public - */ - - }, { - key: "connect", - value: function connect() { - if (this.connected) return this; - this.subEvents(); - if (!this.io["_reconnecting"]) this.io.open(); // ensure open - - if ("open" === this.io._readyState) this.onopen(); - return this; - } - /** - * Alias for connect() - */ - - }, { - key: "open", - value: function open() { - return this.connect(); - } - /** - * Sends a `message` event. - * - * @return self - * @public - */ - - }, { - key: "send", - value: function send() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - args.unshift("message"); - this.emit.apply(this, args); - return this; - } - /** - * Override `emit`. - * If the event is in `events`, it's emitted normally. - * - * @return self - * @public - */ - - }, { - key: "emit", - value: function emit(ev) { - if (RESERVED_EVENTS.hasOwnProperty(ev)) { - throw new Error('"' + ev + '" is a reserved event name'); - } - - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - - args.unshift(ev); - var packet = { - type: PacketType.EVENT, - data: args - }; - packet.options = {}; - packet.options.compress = this.flags.compress !== false; // event ack callback - - if ("function" === typeof args[args.length - 1]) { - var id = this.ids++; - var ack = args.pop(); - - this._registerAckCallback(id, ack); - - packet.id = id; - } - - var isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable; - var discardPacket = this.flags["volatile"] && (!isTransportWritable || !this.connected); - - if (discardPacket) ; else if (this.connected) { - this.packet(packet); - } else { - this.sendBuffer.push(packet); - } - - this.flags = {}; - return this; - } - /** - * @private - */ - - }, { - key: "_registerAckCallback", - value: function _registerAckCallback(id, ack) { - var _this2 = this; - - var timeout = this.flags.timeout; - - if (timeout === undefined) { - this.acks[id] = ack; - return; - } // @ts-ignore - - - var timer = this.io.setTimeoutFn(function () { - delete _this2.acks[id]; - - for (var i = 0; i < _this2.sendBuffer.length; i++) { - if (_this2.sendBuffer[i].id === id) { - _this2.sendBuffer.splice(i, 1); - } - } - - ack.call(_this2, new Error("operation has timed out")); - }, timeout); - - this.acks[id] = function () { - // @ts-ignore - _this2.io.clearTimeoutFn(timer); - - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - ack.apply(_this2, [null].concat(args)); - }; - } - /** - * Sends a packet. - * - * @param packet - * @private - */ - - }, { - key: "packet", - value: function packet(_packet) { - _packet.nsp = this.nsp; - - this.io._packet(_packet); - } - /** - * Called upon engine `open`. - * - * @private - */ - - }, { - key: "onopen", - value: function onopen() { - var _this3 = this; - - if (typeof this.auth == "function") { - this.auth(function (data) { - _this3.packet({ - type: PacketType.CONNECT, - data: data - }); - }); - } else { - this.packet({ - type: PacketType.CONNECT, - data: this.auth - }); - } - } - /** - * Called upon engine or manager `error`. - * - * @param err - * @private - */ - - }, { - key: "onerror", - value: function onerror(err) { - if (!this.connected) { - this.emitReserved("connect_error", err); - } - } - /** - * Called upon engine `close`. - * - * @param reason - * @private - */ - - }, { - key: "onclose", - value: function onclose(reason) { - this.connected = false; - this.disconnected = true; - delete this.id; - this.emitReserved("disconnect", reason); - } - /** - * Called with socket packet. - * - * @param packet - * @private - */ - - }, { - key: "onpacket", - value: function onpacket(packet) { - var sameNamespace = packet.nsp === this.nsp; - if (!sameNamespace) return; - - switch (packet.type) { - case PacketType.CONNECT: - if (packet.data && packet.data.sid) { - var id = packet.data.sid; - this.onconnect(id); - } else { - this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)")); - } - - break; - - case PacketType.EVENT: - this.onevent(packet); - break; - - case PacketType.BINARY_EVENT: - this.onevent(packet); - break; - - case PacketType.ACK: - this.onack(packet); - break; - - case PacketType.BINARY_ACK: - this.onack(packet); - break; - - case PacketType.DISCONNECT: - this.ondisconnect(); - break; - - case PacketType.CONNECT_ERROR: - this.destroy(); - var err = new Error(packet.data.message); // @ts-ignore - - err.data = packet.data.data; - this.emitReserved("connect_error", err); - break; - } - } - /** - * Called upon a server event. - * - * @param packet - * @private - */ - - }, { - key: "onevent", - value: function onevent(packet) { - var args = packet.data || []; - - if (null != packet.id) { - args.push(this.ack(packet.id)); - } - - if (this.connected) { - this.emitEvent(args); - } else { - this.receiveBuffer.push(Object.freeze(args)); - } - } - }, { - key: "emitEvent", - value: function emitEvent(args) { - if (this._anyListeners && this._anyListeners.length) { - var listeners = this._anyListeners.slice(); - - var _iterator = _createForOfIteratorHelper(listeners), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var listener = _step.value; - listener.apply(this, args); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - - _get(_getPrototypeOf(Socket.prototype), "emit", this).apply(this, args); - } - /** - * Produces an ack callback to emit with an event. - * - * @private - */ - - }, { - key: "ack", - value: function ack(id) { - var self = this; - var sent = false; - return function () { - // prevent double callbacks - if (sent) return; - sent = true; - - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - self.packet({ - type: PacketType.ACK, - id: id, - data: args - }); - }; - } - /** - * Called upon a server acknowlegement. - * - * @param packet - * @private - */ - - }, { - key: "onack", - value: function onack(packet) { - var ack = this.acks[packet.id]; - - if ("function" === typeof ack) { - ack.apply(this, packet.data); - delete this.acks[packet.id]; - } - } - /** - * Called upon server connect. - * - * @private - */ - - }, { - key: "onconnect", - value: function onconnect(id) { - this.id = id; - this.connected = true; - this.disconnected = false; - this.emitBuffered(); - this.emitReserved("connect"); - } - /** - * Emit buffered events (received and emitted). - * - * @private - */ - - }, { - key: "emitBuffered", - value: function emitBuffered() { - var _this4 = this; - - this.receiveBuffer.forEach(function (args) { - return _this4.emitEvent(args); - }); - this.receiveBuffer = []; - this.sendBuffer.forEach(function (packet) { - return _this4.packet(packet); - }); - this.sendBuffer = []; - } - /** - * Called upon server disconnect. - * - * @private - */ - - }, { - key: "ondisconnect", - value: function ondisconnect() { - this.destroy(); - this.onclose("io server disconnect"); - } - /** - * Called upon forced client/server side disconnections, - * this method ensures the manager stops tracking us and - * that reconnections don't get triggered for this. - * - * @private - */ - - }, { - key: "destroy", - value: function destroy() { - if (this.subs) { - // clean subscriptions to avoid reconnections - this.subs.forEach(function (subDestroy) { - return subDestroy(); - }); - this.subs = undefined; - } - - this.io["_destroy"](this); - } - /** - * Disconnects the socket manually. - * - * @return self - * @public - */ - - }, { - key: "disconnect", - value: function disconnect() { - if (this.connected) { - this.packet({ - type: PacketType.DISCONNECT - }); - } // remove socket from pool - - - this.destroy(); - - if (this.connected) { - // fire events - this.onclose("io client disconnect"); - } - - return this; - } - /** - * Alias for disconnect() - * - * @return self - * @public - */ - - }, { - key: "close", - value: function close() { - return this.disconnect(); - } - /** - * Sets the compress flag. - * - * @param compress - if `true`, compresses the sending data - * @return self - * @public - */ - - }, { - key: "compress", - value: function compress(_compress) { - this.flags.compress = _compress; - return this; - } - /** - * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not - * ready to send messages. - * - * @returns self - * @public - */ - - }, { - key: "volatile", - get: function get() { - this.flags["volatile"] = true; - return this; - } - /** - * Sets a modifier for a subsequent event emission that the callback will be called with an error when the - * given number of milliseconds have elapsed without an acknowledgement from the server: - * - * ``` - * socket.timeout(5000).emit("my-event", (err) => { - * if (err) { - * // the server did not acknowledge the event in the given delay - * } - * }); - * ``` - * - * @returns self - * @public - */ - - }, { - key: "timeout", - value: function timeout(_timeout) { - this.flags.timeout = _timeout; - return this; - } - /** - * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the - * callback. - * - * @param listener - * @public - */ - - }, { - key: "onAny", - value: function onAny(listener) { - this._anyListeners = this._anyListeners || []; - - this._anyListeners.push(listener); - - return this; - } - /** - * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the - * callback. The listener is added to the beginning of the listeners array. - * - * @param listener - * @public - */ - - }, { - key: "prependAny", - value: function prependAny(listener) { - this._anyListeners = this._anyListeners || []; - - this._anyListeners.unshift(listener); - - return this; - } - /** - * Removes the listener that will be fired when any event is emitted. - * - * @param listener - * @public - */ - - }, { - key: "offAny", - value: function offAny(listener) { - if (!this._anyListeners) { - return this; - } - - if (listener) { - var listeners = this._anyListeners; - - for (var i = 0; i < listeners.length; i++) { - if (listener === listeners[i]) { - listeners.splice(i, 1); - return this; - } - } - } else { - this._anyListeners = []; - } - - return this; - } - /** - * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, - * e.g. to remove listeners. - * - * @public - */ - - }, { - key: "listenersAny", - value: function listenersAny() { - return this._anyListeners || []; - } - }]); - - return Socket; - }(Emitter_1); - - /** - * Expose `Backoff`. - */ - - var backo2 = Backoff; - /** - * Initialize backoff timer with `opts`. - * - * - `min` initial timeout in milliseconds [100] - * - `max` max timeout [10000] - * - `jitter` [0] - * - `factor` [2] - * - * @param {Object} opts - * @api public - */ - - function Backoff(opts) { - opts = opts || {}; - this.ms = opts.min || 100; - this.max = opts.max || 10000; - this.factor = opts.factor || 2; - this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0; - this.attempts = 0; - } - /** - * Return the backoff duration. - * - * @return {Number} - * @api public - */ - - - Backoff.prototype.duration = function () { - var ms = this.ms * Math.pow(this.factor, this.attempts++); - - if (this.jitter) { - var rand = Math.random(); - var deviation = Math.floor(rand * this.jitter * ms); - ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation; - } - - return Math.min(ms, this.max) | 0; - }; - /** - * Reset the number of attempts. - * - * @api public - */ - - - Backoff.prototype.reset = function () { - this.attempts = 0; - }; - /** - * Set the minimum duration - * - * @api public - */ - - - Backoff.prototype.setMin = function (min) { - this.ms = min; - }; - /** - * Set the maximum duration - * - * @api public - */ - - - Backoff.prototype.setMax = function (max) { - this.max = max; - }; - /** - * Set the jitter - * - * @api public - */ - - - Backoff.prototype.setJitter = function (jitter) { - this.jitter = jitter; - }; - - var Manager = /*#__PURE__*/function (_Emitter) { - _inherits(Manager, _Emitter); - - var _super = _createSuper(Manager); - - function Manager(uri, opts) { - var _this; - - _classCallCheck(this, Manager); - - var _a; - - _this = _super.call(this); - _this.nsps = {}; - _this.subs = []; - - if (uri && "object" === _typeof(uri)) { - opts = uri; - uri = undefined; - } - - opts = opts || {}; - opts.path = opts.path || "/socket.io"; - _this.opts = opts; - installTimerFunctions(_assertThisInitialized(_this), opts); - - _this.reconnection(opts.reconnection !== false); - - _this.reconnectionAttempts(opts.reconnectionAttempts || Infinity); - - _this.reconnectionDelay(opts.reconnectionDelay || 1000); - - _this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000); - - _this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5); - - _this.backoff = new backo2({ - min: _this.reconnectionDelay(), - max: _this.reconnectionDelayMax(), - jitter: _this.randomizationFactor() - }); - - _this.timeout(null == opts.timeout ? 20000 : opts.timeout); - - _this._readyState = "closed"; - _this.uri = uri; - - var _parser = opts.parser || parser; - - _this.encoder = new _parser.Encoder(); - _this.decoder = new _parser.Decoder(); - _this._autoConnect = opts.autoConnect !== false; - if (_this._autoConnect) _this.open(); - return _this; - } - - _createClass(Manager, [{ - key: "reconnection", - value: function reconnection(v) { - if (!arguments.length) return this._reconnection; - this._reconnection = !!v; - return this; - } - }, { - key: "reconnectionAttempts", - value: function reconnectionAttempts(v) { - if (v === undefined) return this._reconnectionAttempts; - this._reconnectionAttempts = v; - return this; - } - }, { - key: "reconnectionDelay", - value: function reconnectionDelay(v) { - var _a; - - if (v === undefined) return this._reconnectionDelay; - this._reconnectionDelay = v; - (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v); - return this; - } - }, { - key: "randomizationFactor", - value: function randomizationFactor(v) { - var _a; - - if (v === undefined) return this._randomizationFactor; - this._randomizationFactor = v; - (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v); - return this; - } - }, { - key: "reconnectionDelayMax", - value: function reconnectionDelayMax(v) { - var _a; - - if (v === undefined) return this._reconnectionDelayMax; - this._reconnectionDelayMax = v; - (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v); - return this; - } - }, { - key: "timeout", - value: function timeout(v) { - if (!arguments.length) return this._timeout; - this._timeout = v; - return this; - } - /** - * Starts trying to reconnect if reconnection is enabled and we have not - * started reconnecting yet - * - * @private - */ - - }, { - key: "maybeReconnectOnOpen", - value: function maybeReconnectOnOpen() { - // Only try to reconnect if it's the first time we're connecting - if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) { - // keeps reconnection from firing twice for the same reconnection loop - this.reconnect(); - } - } - /** - * Sets the current transport `socket`. - * - * @param {Function} fn - optional, callback - * @return self - * @public - */ - - }, { - key: "open", - value: function open(fn) { - var _this2 = this; - - if (~this._readyState.indexOf("open")) return this; - this.engine = new Socket$1(this.uri, this.opts); - var socket = this.engine; - var self = this; - this._readyState = "opening"; - this.skipReconnect = false; // emit `open` - - var openSubDestroy = on(socket, "open", function () { - self.onopen(); - fn && fn(); - }); // emit `error` - - var errorSub = on(socket, "error", function (err) { - self.cleanup(); - self._readyState = "closed"; - - _this2.emitReserved("error", err); - - if (fn) { - fn(err); - } else { - // Only do this if there is no fn to handle the error - self.maybeReconnectOnOpen(); - } - }); - - if (false !== this._timeout) { - var timeout = this._timeout; - - if (timeout === 0) { - openSubDestroy(); // prevents a race condition with the 'open' event - } // set timer - - - var timer = this.setTimeoutFn(function () { - openSubDestroy(); - socket.close(); // @ts-ignore - - socket.emit("error", new Error("timeout")); - }, timeout); - - if (this.opts.autoUnref) { - timer.unref(); - } - - this.subs.push(function subDestroy() { - clearTimeout(timer); - }); - } - - this.subs.push(openSubDestroy); - this.subs.push(errorSub); - return this; - } - /** - * Alias for open() - * - * @return self - * @public - */ - - }, { - key: "connect", - value: function connect(fn) { - return this.open(fn); - } - /** - * Called upon transport open. - * - * @private - */ - - }, { - key: "onopen", - value: function onopen() { - // clear old subs - this.cleanup(); // mark as open - - this._readyState = "open"; - this.emitReserved("open"); // add new subs - - var socket = this.engine; - this.subs.push(on(socket, "ping", this.onping.bind(this)), on(socket, "data", this.ondata.bind(this)), on(socket, "error", this.onerror.bind(this)), on(socket, "close", this.onclose.bind(this)), on(this.decoder, "decoded", this.ondecoded.bind(this))); - } - /** - * Called upon a ping. - * - * @private - */ - - }, { - key: "onping", - value: function onping() { - this.emitReserved("ping"); - } - /** - * Called with data. - * - * @private - */ - - }, { - key: "ondata", - value: function ondata(data) { - this.decoder.add(data); - } - /** - * Called when parser fully decodes a packet. - * - * @private - */ - - }, { - key: "ondecoded", - value: function ondecoded(packet) { - this.emitReserved("packet", packet); - } - /** - * Called upon socket error. - * - * @private - */ - - }, { - key: "onerror", - value: function onerror(err) { - this.emitReserved("error", err); - } - /** - * Creates a new socket for the given `nsp`. - * - * @return {Socket} - * @public - */ - - }, { - key: "socket", - value: function socket(nsp, opts) { - var socket = this.nsps[nsp]; - - if (!socket) { - socket = new Socket(this, nsp, opts); - this.nsps[nsp] = socket; - } - - return socket; - } - /** - * Called upon a socket close. - * - * @param socket - * @private - */ - - }, { - key: "_destroy", - value: function _destroy(socket) { - var nsps = Object.keys(this.nsps); - - for (var _i = 0, _nsps = nsps; _i < _nsps.length; _i++) { - var nsp = _nsps[_i]; - var _socket = this.nsps[nsp]; - - if (_socket.active) { - return; - } - } - - this._close(); - } - /** - * Writes a packet. - * - * @param packet - * @private - */ - - }, { - key: "_packet", - value: function _packet(packet) { - var encodedPackets = this.encoder.encode(packet); - - for (var i = 0; i < encodedPackets.length; i++) { - this.engine.write(encodedPackets[i], packet.options); - } - } - /** - * Clean up transport subscriptions and packet buffer. - * - * @private - */ - - }, { - key: "cleanup", - value: function cleanup() { - this.subs.forEach(function (subDestroy) { - return subDestroy(); - }); - this.subs.length = 0; - this.decoder.destroy(); - } - /** - * Close the current socket. - * - * @private - */ - - }, { - key: "_close", - value: function _close() { - this.skipReconnect = true; - this._reconnecting = false; - this.onclose("forced close"); - if (this.engine) this.engine.close(); - } - /** - * Alias for close() - * - * @private - */ - - }, { - key: "disconnect", - value: function disconnect() { - return this._close(); - } - /** - * Called upon engine close. - * - * @private - */ - - }, { - key: "onclose", - value: function onclose(reason) { - this.cleanup(); - this.backoff.reset(); - this._readyState = "closed"; - this.emitReserved("close", reason); - - if (this._reconnection && !this.skipReconnect) { - this.reconnect(); - } - } - /** - * Attempt a reconnection. - * - * @private - */ - - }, { - key: "reconnect", - value: function reconnect() { - var _this3 = this; - - if (this._reconnecting || this.skipReconnect) return this; - var self = this; - - if (this.backoff.attempts >= this._reconnectionAttempts) { - this.backoff.reset(); - this.emitReserved("reconnect_failed"); - this._reconnecting = false; - } else { - var delay = this.backoff.duration(); - this._reconnecting = true; - var timer = this.setTimeoutFn(function () { - if (self.skipReconnect) return; - - _this3.emitReserved("reconnect_attempt", self.backoff.attempts); // check again for the case socket closed in above events - - - if (self.skipReconnect) return; - self.open(function (err) { - if (err) { - self._reconnecting = false; - self.reconnect(); - - _this3.emitReserved("reconnect_error", err); - } else { - self.onreconnect(); - } - }); - }, delay); - - if (this.opts.autoUnref) { - timer.unref(); - } - - this.subs.push(function subDestroy() { - clearTimeout(timer); - }); - } - } - /** - * Called upon successful reconnect. - * - * @private - */ - - }, { - key: "onreconnect", - value: function onreconnect() { - var attempt = this.backoff.attempts; - this._reconnecting = false; - this.backoff.reset(); - this.emitReserved("reconnect", attempt); - } - }]); - - return Manager; - }(Emitter_1); - - /** - * Managers cache. - */ - - var cache = {}; - - function lookup(uri, opts) { - if (_typeof(uri) === "object") { - opts = uri; - uri = undefined; - } - - opts = opts || {}; - var parsed = url(http://github.com/uri,%20opts.path%20||%20%22/socket.io"); - var source = parsed.source; - var id = parsed.id; - var path = parsed.path; - var sameNamespace = cache[id] && path in cache[id]["nsps"]; - var newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace; - var io; - - if (newConnection) { - io = new Manager(source, opts); - } else { - if (!cache[id]) { - cache[id] = new Manager(source, opts); - } - - io = cache[id]; - } - - if (parsed.query && !opts.query) { - opts.query = parsed.queryKey; - } - - return io.socket(parsed.path, opts); - } // so that "lookup" can be used both as a function (e.g. `io(...)`) and as a - // namespace (e.g. `io.connect(...)`), for backward compatibility - - - _extends(lookup, { - Manager: Manager, - Socket: Socket, - io: lookup, - connect: lookup - }); - - return lookup; - -})); -//# sourceMappingURL=socket.io.js.map diff --git a/client-dist/socket.io.js.map b/client-dist/socket.io.js.map deleted file mode 100644 index 74962b125b..0000000000 --- a/client-dist/socket.io.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"socket.io.js","sources":["../node_modules/parseuri/index.js","../build/esm/url.js","../node_modules/has-cors/index.js","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/@socket.io/component-emitter/index.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-client/node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/index.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/yeast/index.js","../node_modules/parseqs/index.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../build/esm/on.js","../build/esm/socket.js","../node_modules/backo2/index.js","../build/esm/manager.js","../build/esm/index.js"],"sourcesContent":["/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","import parseuri from \"parseuri\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(http://github.com/uri,%20path%20=%20/%22/%22,%20loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parseuri(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","export default (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import globalThis from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose();\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport parseqs from \"parseqs\";\nimport yeast from \"yeast\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emit(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, desc) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, desc);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n constructor() {\n super();\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n }\n catch (e) {\n return false;\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n *\n * @public\n */\n constructor(io, nsp, opts) {\n super();\n this.connected = false;\n this.disconnected = true;\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @public\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for connect()\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * @return self\n * @public\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @return self\n * @public\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @private\n */\n onclose(reason) {\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emitReserved(\"disconnect\", reason);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n this.onevent(packet);\n break;\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n this.onack(packet);\n break;\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.disconnected = false;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => this.packet(packet));\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually.\n *\n * @return self\n * @public\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for disconnect()\n *\n * @return self\n * @public\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n * @public\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @returns self\n * @public\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * ```\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n * ```\n *\n * @returns self\n * @public\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @param listener\n * @public\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @param listener\n * @public\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @param listener\n * @public\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n *\n * @public\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n}\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","import { Socket as Engine, installTimerFunctions, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport Backoff from \"backo2\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n this.decoder.add(data);\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n this.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(http://github.com/uri,%20opts.path%20||%20/%22/socket.io/");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n"],"names":["re","parts","parseuri","str","src","b","indexOf","e","substring","replace","length","m","exec","uri","i","source","host","authority","ipv6uri","pathNames","queryKey","obj","path","regx","names","split","substr","splice","query","data","$0","$1","$2","url","loc","location","protocol","charAt","test","port","ipv6","id","href","hasCorsModule","XMLHttpRequest","err","self","window","Function","opts","xdomain","hasCORS","globalThis","concat","join","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","Emitter","mixin","key","prototype","on","addEventListener","event","fn","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","callbacks","cb","emit","args","Array","slice","len","emitReserved","listeners","hasListeners","PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","ERROR_PACKET","type","withNativeBlob","Blob","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","buffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","readAsDataURL","lookup","decode","decodePacket","encodedPacket","binaryType","mapBinary","decodeBase64Packet","packetType","decoded","base64","SEPARATOR","String","fromCharCode","encodePayload","packets","encodedPackets","count","packet","decodePayload","encodedPayload","decodedPacket","Transport","writable","readyState","socket","msg","desc","Error","description","doOpen","doClose","onClose","write","onPacket","alphabet","map","seed","prev","encode","num","encoded","Math","floor","yeast","now","Date","yeast_1","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","Polling","polling","poll","onPause","pause","total","doPoll","onOpen","close","doWrite","schema","secure","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","parseqs","hostname","empty","hasXHR2","xhr","responseType","XHR","isSSL","xd","xs","forceBase64","Request","req","request","method","onError","onData","pollXhr","async","undefined","xscheme","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","onSuccess","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","isPromiseAvailable","Promise","resolve","then","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","onmessage","ev","onerror","lastPacket","name","transports","websocket","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","clone","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","parse","resetPingTimeout","sendPacket","code","filterUpgrades","options","compress","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","j","o","withNativeFile","File","isBinary","hasBinary","toJSON","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","Encoder","EVENT","ACK","BINARY_EVENT","BINARY_ACK","encodeAsBinary","encodeAsString","nsp","stringify","deconstruction","unshift","Decoder","decodeString","reconstructor","BinaryReconstructor","takeBinaryData","p","start","buf","c","next","payload","tryParse","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","reconPack","binData","subDestroy","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","disconnected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","subs","onpacket","subEvents","_readyState","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","timer","_packet","sameNamespace","onconnect","onevent","onack","ondisconnect","destroy","message","emitEvent","_anyListeners","listener","sent","emitBuffered","backo2","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","add","active","_close","delay","onreconnect","attempt","cache","parsed","newConnection","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/client-dist/socket.io.min.js b/client-dist/socket.io.min.js deleted file mode 100644 index 8560bedd3b..0000000000 --- a/client-dist/socket.io.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Socket.IO v4.4.1 - * (c) 2014-2022 Guillermo Rauch - * Released under the MIT License. - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,i=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}var d=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,y=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],v=function(t){var e=t,n=t.indexOf("["),r=t.indexOf("]");-1!=n&&-1!=r&&(t=t.substring(0,n)+t.substring(n,r).replace(/:/g,";")+t.substring(r,t.length));for(var o,i,s=d.exec(t||""),a={},c=14;c--;)a[y[c]]=s[c]||"";return-1!=n&&-1!=r&&(a.source=e,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(t,e){var n=/\/{2,9}/g,r=e.replace(n,"/").split("/");"/"!=e.substr(0,1)&&0!==e.length||r.splice(0,1);"/"==e.substr(e.length-1,1)&&r.splice(r.length-1,1);return r}(0,a.path),a.queryKey=(o=a.query,i={},o.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,n){e&&(i[e]=n)})),i),a};var m={exports:{}};try{m.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){m.exports=!1}var g=m.exports,k="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function b(t){var e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||g))return new XMLHttpRequest}catch(t){}if(!e)try{return new(k[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function w(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r1?{type:O[n],data:t.substring(1)}:{type:O[n]}:S},M=function(t,e){if(I){var n=function(t){var e,n,r,o,i,s=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var u=new ArrayBuffer(s),h=new Uint8Array(u);for(e=0;e>4,h[c++]=(15&r)<<4|o>>2,h[c++]=(3&o)<<6|63&i;return u}(t);return U(n,e)}return{base64:!0,data:t}},U=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},V=String.fromCharCode(30),H=function(t){i(o,t);var n=h(o);function o(t){var r;return e(this,o),(r=n.call(this)).writable=!1,A(c(r),t),r.opts=t,r.query=t.query,r.readyState="",r.socket=t.socket,r}return r(o,[{key:"onError",value:function(t,e){var n=new Error(t);return n.type="TransportError",n.description=e,f(s(o.prototype),"emit",this).call(this,"error",n),this}},{key:"open",value:function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}},{key:"close",value:function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}},{key:"send",value:function(t){"open"===this.readyState&&this.write(t)}},{key:"onOpen",value:function(){this.readyState="open",this.writable=!0,f(s(o.prototype),"emit",this).call(this,"open")}},{key:"onData",value:function(t){var e=F(t,this.socket.binaryType);this.onPacket(e)}},{key:"onPacket",value:function(t){f(s(o.prototype),"emit",this).call(this,"packet",t)}},{key:"onClose",value:function(){this.readyState="closed",f(s(o.prototype),"emit",this).call(this,"close")}}]),o}(R),K="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Y={},z=0,$=0;function W(t){var e="";do{e=K[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function J(){var t=W(+new Date);return t!==D?(z=0,D=t):t+"."+W(z++)}for(;$<64;$++)Y[K[$]]=$;J.encode=W,J.decode=function(t){var e=0;for($=0;$0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,xs:this.xs},this.opts),new nt(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this,r=this.request({method:"POST",data:t});r.on("success",e),r.on("error",(function(t){n.onError("xhr post error",t)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e){t.onError("xhr poll error",e)})),this.pollXhr=e}}]),s}(Q),nt=function(t){i(o,t);var n=h(o);function o(t,r){var i;return e(this,o),A(c(i=n.call(this)),r),i.opts=r,i.method=r.method||"GET",i.uri=t,i.async=!1!==r.async,i.data=void 0!==r.data?r.data:null,i.create(),i}return r(o,[{key:"create",value:function(){var t=this,e=w(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var n=this.xhr=new b(e);try{n.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var r in n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(r)&&n.setRequestHeader(r,this.opts.extraHeaders[r])}catch(t){}if("POST"===this.method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=function(){4===n.readyState&&(200===n.status||1223===n.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=o.requestsCount++,o.requests[this.index]=this)}},{key:"onSuccess",value:function(){this.emit("success"),this.cleanup()}},{key:"onData",value:function(t){this.emit("data",t),this.onSuccess()}},{key:"onError",value:function(t){this.emit("error",t),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Z,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete o.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&this.onData(t)}},{key:"abort",value:function(){this.cleanup()}}]),o}(R);if(nt.requestsCount=0,nt.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",rt);else if("function"==typeof addEventListener){addEventListener("onpagehide"in k?"pagehide":"unload",rt,!1)}function rt(){for(var t in nt.requests)nt.requests.hasOwnProperty(t)&&nt.requests[t].abort()}var ot="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},it=k.WebSocket||k.MozWebSocket,st="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),at=function(t){i(o,t);var n=h(o);function o(t){var r;return e(this,o),(r=n.call(this,t)).supportsBinary=!t.forceBase64,r}return r(o,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,n=st?{}:w(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=st?new it(t,e,n):e?new it(t,e):new it(t)}catch(t){return this.emit("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],o=n===t.length-1;x(r,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}o&&ot((function(){e.writable=!0,e.emit("drain")}),e.setTimeoutFn)}))},r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return e(this,a),r=s.call(this),n&&"object"===t(n)&&(i=n,n=null),n?(n=v(n),i.hostname=n.host,i.secure="https"===n.protocol||"wss"===n.protocol,i.port=n.port,n.query&&(i.query=n.query)):i.host&&(i.hostname=v(i.host).host),A(c(r),i),r.secure=null!=i.secure?i.secure:"undefined"!=typeof location&&"https:"===location.protocol,i.hostname&&!i.port&&(i.port=r.secure?"443":"80"),r.hostname=i.hostname||("undefined"!=typeof location?location.hostname:"localhost"),r.port=i.port||("undefined"!=typeof location&&location.port?location.port:r.secure?"443":"80"),r.transports=i.transports||["polling","websocket"],r.readyState="",r.writeBuffer=[],r.prevBufferLen=0,r.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},i),r.opts.path=r.opts.path.replace(/\/$/,"")+"/","string"==typeof r.opts.query&&(r.opts.query=G.decode(r.opts.query)),r.id=null,r.upgrades=null,r.pingInterval=null,r.pingTimeout=null,r.pingTimeoutTimer=null,"function"==typeof addEventListener&&(r.opts.closeOnBeforeunload&&addEventListener("beforeunload",(function(){r.transport&&(r.transport.removeAllListeners(),r.transport.close())}),!1),"localhost"!==r.hostname&&(r.offlineEventListener=function(){r.onClose("transport close")},addEventListener("offline",r.offlineEventListener,!1))),r.open(),r}return r(a,[{key:"createTransport",value:function(t){var e=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}(this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var n=o({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new ct[t](n)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(){e.onClose("transport close")}))}},{key:"probe",value:function(t){var e=this,n=this.createTransport(t),r=!1;a.priorWebsocketSuccess=!1;var o=function(){r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",(function(t){if(!r)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",n),!n)return;a.priorWebsocketSuccess="websocket"===n.name,e.transport.pause((function(){r||"closed"!==e.readyState&&(f(),e.setTransport(n),n.send([{type:"upgrade"}]),e.emitReserved("upgrade",n),n=null,e.upgrading=!1,e.flush())}))}else{var o=new Error("probe error");o.transport=n.name,e.emitReserved("upgradeError",o)}})))};function i(){r||(r=!0,f(),n.close(),n=null)}var s=function(t){var r=new Error("probe error: "+t);r.transport=n.name,i(),e.emitReserved("upgradeError",r)};function c(){s("transport closed")}function u(){s("socket closed")}function h(t){n&&t.name!==n.name&&i()}var f=function(){n.removeListener("open",o),n.removeListener("error",s),n.removeListener("close",c),e.off("close",u),e.off("upgrading",h)};n.once("open",o),n.once("error",s),n.once("close",c),this.once("close",u),this.once("upgrading",h),n.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t0;case bt.ACK:case bt.BINARY_ACK:return Array.isArray(n)}}}]),a}(R);var Et=function(){function t(n){e(this,t),this.packet=n,this.buffers=[],this.reconPack=n}return r(t,[{key:"takeBinaryData",value:function(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){var e=gt(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}},{key:"finishedReconstruction",value:function(){this.reconPack=null,this.buffers=[]}}]),t}(),At=Object.freeze({__proto__:null,protocol:5,get PacketType(){return bt},Encoder:wt,Decoder:_t});function Rt(t,e,n){return t.on(e,n),function(){t.off(e,n)}}var Tt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),Ct=function(t){i(o,t);var n=h(o);function o(t,r,i){var s;return e(this,o),(s=n.call(this)).connected=!1,s.disconnected=!0,s.receiveBuffer=[],s.sendBuffer=[],s.ids=0,s.acks={},s.flags={},s.io=t,s.nsp=r,i&&i.auth&&(s.auth=i.auth),s.io._autoConnect&&s.open(),s}return r(o,[{key:"subEvents",value:function(){if(!this.subs){var t=this.io;this.subs=[Rt(t,"open",this.onopen.bind(this)),Rt(t,"packet",this.onpacket.bind(this)),Rt(t,"error",this.onerror.bind(this)),Rt(t,"close",this.onclose.bind(this))]}}},{key:"active",get:function(){return!!this.subs}},{key:"connect",value:function(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}},{key:"open",value:function(){return this.connect()}},{key:"send",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),r=1;r0&&t.jitter<=1?t.jitter:0,this.attempts=0}St.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},St.prototype.reset=function(){this.attempts=0},St.prototype.setMin=function(t){this.ms=t},St.prototype.setMax=function(t){this.max=t},St.prototype.setJitter=function(t){this.jitter=t};var Bt=function(n){i(s,n);var o=h(s);function s(n,r){var i,a;e(this,s),(i=o.call(this)).nsps={},i.subs=[],n&&"object"===t(n)&&(r=n,n=void 0),(r=r||{}).path=r.path||"/socket.io",i.opts=r,A(c(i),r),i.reconnection(!1!==r.reconnection),i.reconnectionAttempts(r.reconnectionAttempts||1/0),i.reconnectionDelay(r.reconnectionDelay||1e3),i.reconnectionDelayMax(r.reconnectionDelayMax||5e3),i.randomizationFactor(null!==(a=r.randomizationFactor)&&void 0!==a?a:.5),i.backoff=new Ot({min:i.reconnectionDelay(),max:i.reconnectionDelayMax(),jitter:i.randomizationFactor()}),i.timeout(null==r.timeout?2e4:r.timeout),i._readyState="closed",i.uri=n;var u=r.parser||At;return i.encoder=new u.Encoder,i.decoder=new u.Decoder,i._autoConnect=!1!==r.autoConnect,i._autoConnect&&i.open(),i}return r(s,[{key:"reconnection",value:function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}},{key:"reconnectionAttempts",value:function(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}},{key:"reconnectionDelay",value:function(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}},{key:"randomizationFactor",value:function(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}},{key:"reconnectionDelayMax",value:function(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}},{key:"timeout",value:function(t){return arguments.length?(this._timeout=t,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(t){var e=this;if(~this._readyState.indexOf("open"))return this;this.engine=new ut(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var o=Rt(n,"open",(function(){r.onopen(),t&&t()})),i=Rt(n,"error",(function(n){r.cleanup(),r._readyState="closed",e.emitReserved("error",n),t?t(n):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){var s=this._timeout;0===s&&o();var a=this.setTimeoutFn((function(){o(),n.close(),n.emit("error",new Error("timeout"))}),s);this.opts.autoUnref&&a.unref(),this.subs.push((function(){clearTimeout(a)}))}return this.subs.push(o),this.subs.push(i),this}},{key:"connect",value:function(t){return this.open(t)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var t=this.engine;this.subs.push(Rt(t,"ping",this.onping.bind(this)),Rt(t,"data",this.ondata.bind(this)),Rt(t,"error",this.onerror.bind(this)),Rt(t,"close",this.onclose.bind(this)),Rt(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(t){this.decoder.add(t)}},{key:"ondecoded",value:function(t){this.emitReserved("packet",t)}},{key:"onerror",value:function(t){this.emitReserved("error",t)}},{key:"socket",value:function(t,e){var n=this.nsps[t];return n||(n=new Ct(this,t,e),this.nsps[t]=n),n}},{key:"_destroy",value:function(t){for(var e=0,n=Object.keys(this.nsps);e=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var r=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),t.emitReserved("reconnect_error",n)):e.onreconnect()})))}),n);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}]),s}(R),Nt={};function xt(e,n){"object"===t(e)&&(n=e,e=void 0);var r,o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=v(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var o=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+o+":"+r.port+e,r.href=r.protocol+"://"+o+(n&&n.port===r.port?"":":"+r.port),r}(e,(n=n||{}).path||"/socket.io"),i=o.source,s=o.id,a=o.path,c=Nt[s]&&a in Nt[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||c?r=new Bt(i,n):(Nt[s]||(Nt[s]=new Bt(i,n)),r=Nt[s]),o.query&&!n.query&&(n.query=o.queryKey),r.socket(o.path,n)}return o(xt,{Manager:Bt,Socket:Ct,io:xt,connect:xt}),xt})); -//# sourceMappingURL=socket.io.min.js.map diff --git a/client-dist/socket.io.min.js.map b/client-dist/socket.io.min.js.map deleted file mode 100644 index 15870f1ab3..0000000000 --- a/client-dist/socket.io.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"socket.io.min.js","sources":["../node_modules/parseuri/index.js","../node_modules/has-cors/index.js","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/@socket.io/component-emitter/index.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-client/node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/yeast/index.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/index.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/parseqs/index.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../build/esm/on.js","../build/esm/socket.js","../node_modules/backo2/index.js","../build/esm/manager.js","../build/esm/index.js","../build/esm/url.js"],"sourcesContent":["/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","export default (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import globalThis from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose();\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport parseqs from \"parseqs\";\nimport yeast from \"yeast\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emit(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, desc) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, desc);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n constructor() {\n super();\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n }\n catch (e) {\n return false;\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n *\n * @public\n */\n constructor(io, nsp, opts) {\n super();\n this.connected = false;\n this.disconnected = true;\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @public\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for connect()\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * @return self\n * @public\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @return self\n * @public\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @private\n */\n onclose(reason) {\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emitReserved(\"disconnect\", reason);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n this.onevent(packet);\n break;\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n this.onack(packet);\n break;\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.disconnected = false;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => this.packet(packet));\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually.\n *\n * @return self\n * @public\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for disconnect()\n *\n * @return self\n * @public\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n * @public\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @returns self\n * @public\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * ```\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n * ```\n *\n * @returns self\n * @public\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @param listener\n * @public\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @param listener\n * @public\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @param listener\n * @public\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n *\n * @public\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n}\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","import { Socket as Engine, installTimerFunctions, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport Backoff from \"backo2\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n this.decoder.add(data);\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n this.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(http://github.com/uri,%20opts.path%20||%20/%22/socket.io/");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import parseuri from \"parseuri\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(http://github.com/uri,%20path%20=%20/%22/%22,%20loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parseuri(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n"],"names":["re","parts","parseuri","str","src","b","indexOf","e","substring","replace","length","query","data","m","exec","uri","i","source","host","authority","ipv6uri","pathNames","obj","path","regx","names","split","substr","splice","queryKey","$0","$1","$2","hasCorsModule","XMLHttpRequest","err","self","window","Function","opts","xdomain","hasCORS","globalThis","concat","join","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","Emitter","key","prototype","mixin","on","addEventListener","event","fn","_callbacks","this","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","emit","args","Array","len","slice","emitReserved","listeners","hasListeners","PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","ERROR_PACKET","type","withNativeBlob","Blob","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","readAsDataURL","chars","lookup","Uint8Array","charCodeAt","prev","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Transport","writable","readyState","socket","msg","desc","Error","description","doOpen","doClose","onClose","packets","write","packet","onPacket","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","yeast_1","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","Polling","polling","poll","onPause","pause","_this2","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","_this3","onOpen","close","_this4","count","encodePayload","_this5","doWrite","schema","secure","port","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","parseqs","hostname","empty","hasXHR2","responseType","XHR","location","isSSL","protocol","xd","xs","forceBase64","Request","req","request","method","onError","onData","pollXhr","async","undefined","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","onSuccess","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","onmessage","ev","onerror","lastPacket","name","transports","websocket","Socket","_this","writeBuffer","prevBufferLen","_extends","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","o","clone","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","parse","resetPingTimeout","sendPacket","code","filterUpgrades","options","compress","_this6","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","j","withNativeFile","File","isBinary","hasBinary","toJSON","_typeof","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","Encoder","EVENT","ACK","encodeAsString","BINARY_EVENT","BINARY_ACK","encodeAsBinary","nsp","stringify","deconstruction","unshift","Decoder","decodeString","reconstructor","BinaryReconstructor","takeBinaryData","start","buf","next","c","payload","tryParse","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","reconPack","binData","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","disconnected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","subs","onpacket","subEvents","_readyState","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","timer","_packet","onconnect","onevent","onack","ondisconnect","destroy","message","emitEvent","_anyListeners","sent","emitBuffered","subDestroy","listener","backo2","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","add","active","_close","delay","onreconnect","attempt","cache","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/client-dist/socket.io.msgpack.min.js b/client-dist/socket.io.msgpack.min.js deleted file mode 100644 index c6550f52c8..0000000000 --- a/client-dist/socket.io.msgpack.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Socket.IO v4.4.1 - * (c) 2014-2022 Guillermo Rauch - * Released under the MIT License. - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(t,e){return e.forEach((function(e){Object.keys(e).forEach((function(n){if("default"!==n&&!(n in t)){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}))})),Object.freeze(t)}function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}var y=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,v=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],g=function(t){var e=t,n=t.indexOf("["),r=t.indexOf("]");-1!=n&&-1!=r&&(t=t.substring(0,n)+t.substring(n,r).replace(/:/g,";")+t.substring(r,t.length));for(var i,o,s=y.exec(t||""),a={},c=14;c--;)a[v[c]]=s[c]||"";return-1!=n&&-1!=r&&(a.source=e,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(t,e){var n=/\/{2,9}/g,r=e.replace(n,"/").split("/");"/"!=e.substr(0,1)&&0!==e.length||r.splice(0,1);"/"==e.substr(e.length-1,1)&&r.splice(r.length-1,1);return r}(0,a.path),a.queryKey=(i=a.query,o={},i.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,n){e&&(o[e]=n)})),o),a};var m={exports:{}};try{m.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){m.exports=!1}var _=m.exports,b="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function k(t){var e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||_))return new XMLHttpRequest}catch(t){}if(!e)try{return new(b[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function w(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r1?{type:A[n],data:t.substring(1)}:{type:A[n]}:x},F=function(t,e){if(I){var n=function(t){var e,n,r,i,o,s=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var h=new ArrayBuffer(s),u=new Uint8Array(h);for(e=0;e>4,u[c++]=(15&r)<<4|i>>2,u[c++]=(3&i)<<6|63&o;return h}(t);return H(n,e)}return{base64:!0,data:t}},H=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},$=String.fromCharCode(30),z=function(t){s(r,t);var e=f(r);function r(t){var i;return n(this,r),(i=e.call(this)).writable=!1,O(h(i),t),i.opts=t,i.query=t.query,i.readyState="",i.socket=t.socket,i}return i(r,[{key:"onError",value:function(t,e){var n=new Error(t);return n.type="TransportError",n.description=e,p(a(r.prototype),"emit",this).call(this,"error",n),this}},{key:"open",value:function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}},{key:"close",value:function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}},{key:"send",value:function(t){"open"===this.readyState&&this.write(t)}},{key:"onOpen",value:function(){this.readyState="open",this.writable=!0,p(a(r.prototype),"emit",this).call(this,"open")}},{key:"onData",value:function(t){var e=M(t,this.socket.binaryType);this.onPacket(e)}},{key:"onPacket",value:function(t){p(a(r.prototype),"emit",this).call(this,"packet",t)}},{key:"onClose",value:function(){this.readyState="closed",p(a(r.prototype),"emit",this).call(this,"close")}}]),r}(T),V="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),W={},X=0,K=0;function J(t){var e="";do{e=V[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function Y(){var t=J(+new Date);return t!==D?(X=0,D=t):t+"."+J(X++)}for(;K<64;K++)W[V[K]]=K;Y.encode=J,Y.decode=function(t){var e=0;for(K=0;K0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,xs:this.xs},this.opts),new rt(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this,r=this.request({method:"POST",data:t});r.on("success",e),r.on("error",(function(t){n.onError("xhr post error",t)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e){t.onError("xhr poll error",e)})),this.pollXhr=e}}]),r}(Z),rt=function(t){s(r,t);var e=f(r);function r(t,i){var o;return n(this,r),O(h(o=e.call(this)),i),o.opts=i,o.method=i.method||"GET",o.uri=t,o.async=!1!==i.async,o.data=void 0!==i.data?i.data:null,o.create(),o}return i(r,[{key:"create",value:function(){var t=this,e=w(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var n=this.xhr=new k(e);try{n.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var i in n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(i)&&n.setRequestHeader(i,this.opts.extraHeaders[i])}catch(t){}if("POST"===this.method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=function(){4===n.readyState&&(200===n.status||1223===n.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=r.requestsCount++,r.requests[this.index]=this)}},{key:"onSuccess",value:function(){this.emit("success"),this.cleanup()}},{key:"onData",value:function(t){this.emit("data",t),this.onSuccess()}},{key:"onError",value:function(t){this.emit("error",t),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=tt,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete r.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&this.onData(t)}},{key:"abort",value:function(){this.cleanup()}}]),r}(T);if(rt.requestsCount=0,rt.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",it);else if("function"==typeof addEventListener){addEventListener("onpagehide"in b?"pagehide":"unload",it,!1)}function it(){for(var t in rt.requests)rt.requests.hasOwnProperty(t)&&rt.requests[t].abort()}var ot="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},st=b.WebSocket||b.MozWebSocket,at="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ct=function(t){s(r,t);var e=f(r);function r(t){var i;return n(this,r),(i=e.call(this,t)).supportsBinary=!t.forceBase64,i}return i(r,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,n=at?{}:w(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=at?new st(t,e,n):e?new st(t,e):new st(t)}catch(t){return this.emit("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],i=n===t.length-1;B(r,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}i&&ot((function(){e.writable=!0,e.emit("drain")}),e.setTimeoutFn)}))},r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return n(this,a),i=r.call(this),t&&"object"===e(t)&&(s=t,t=null),t?(t=g(t),s.hostname=t.host,s.secure="https"===t.protocol||"wss"===t.protocol,s.port=t.port,t.query&&(s.query=t.query)):s.host&&(s.hostname=g(s.host).host),O(h(i),s),i.secure=null!=s.secure?s.secure:"undefined"!=typeof location&&"https:"===location.protocol,s.hostname&&!s.port&&(s.port=i.secure?"443":"80"),i.hostname=s.hostname||("undefined"!=typeof location?location.hostname:"localhost"),i.port=s.port||("undefined"!=typeof location&&location.port?location.port:i.secure?"443":"80"),i.transports=s.transports||["polling","websocket"],i.readyState="",i.writeBuffer=[],i.prevBufferLen=0,i.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},s),i.opts.path=i.opts.path.replace(/\/$/,"")+"/","string"==typeof i.opts.query&&(i.opts.query=Q.decode(i.opts.query)),i.id=null,i.upgrades=null,i.pingInterval=null,i.pingTimeout=null,i.pingTimeoutTimer=null,"function"==typeof addEventListener&&(i.opts.closeOnBeforeunload&&addEventListener("beforeunload",(function(){i.transport&&(i.transport.removeAllListeners(),i.transport.close())}),!1),"localhost"!==i.hostname&&(i.offlineEventListener=function(){i.onClose("transport close")},addEventListener("offline",i.offlineEventListener,!1))),i.open(),i}return i(a,[{key:"createTransport",value:function(t){var e=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}(this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var n=o({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new ht[t](n)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(){e.onClose("transport close")}))}},{key:"probe",value:function(t){var e=this,n=this.createTransport(t),r=!1;a.priorWebsocketSuccess=!1;var i=function(){r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",(function(t){if(!r)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",n),!n)return;a.priorWebsocketSuccess="websocket"===n.name,e.transport.pause((function(){r||"closed"!==e.readyState&&(f(),e.setTransport(n),n.send([{type:"upgrade"}]),e.emitReserved("upgrade",n),n=null,e.upgrading=!1,e.flush())}))}else{var i=new Error("probe error");i.transport=n.name,e.emitReserved("upgradeError",i)}})))};function o(){r||(r=!0,f(),n.close(),n=null)}var s=function(t){var r=new Error("probe error: "+t);r.transport=n.name,o(),e.emitReserved("upgradeError",r)};function c(){s("transport closed")}function h(){s("socket closed")}function u(t){n&&t.name!==n.name&&o()}var f=function(){n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",c),e.off("close",h),e.off("upgrading",u)};n.once("open",i),n.once("error",s),n.once("close",c),this.once("close",h),this.once("upgrading",u),n.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t>6),t.setUint8(e++,128|63&r)):r<55296||r>=57344?(t.setUint8(e++,224|r>>12),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r)):(i++,r=65536+((1023&r)<<10|1023&n.charCodeAt(i)),t.setUint8(e++,240|r>>18),t.setUint8(e++,128|r>>12&63),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r))}function dt(t,n,r){var i=e(r),o=0,s=0,a=0,c=0,h=0,u=0;if("string"===i){if(h=function(t){for(var e=0,n=0,r=0,i=t.length;r=57344?n+=3:(r++,n+=4);return n}(r),h<32)t.push(160|h),u=1;else if(h<256)t.push(217,h),u=2;else if(h<65536)t.push(218,h>>8,h),u=3;else{if(!(h<4294967296))throw new Error("String too long");t.push(219,h>>24,h>>16,h>>8,h),u=5}return n.push({_str:r,_length:h,_offset:t.length}),u+h}if("number"===i)return Math.floor(r)===r&&isFinite(r)?r>=0?r<128?(t.push(r),1):r<256?(t.push(204,r),2):r<65536?(t.push(205,r>>8,r),3):r<4294967296?(t.push(206,r>>24,r>>16,r>>8,r),5):(a=r/Math.pow(2,32)>>0,c=r>>>0,t.push(207,a>>24,a>>16,a>>8,a,c>>24,c>>16,c>>8,c),9):r>=-32?(t.push(r),1):r>=-128?(t.push(208,r),2):r>=-32768?(t.push(209,r>>8,r),3):r>=-2147483648?(t.push(210,r>>24,r>>16,r>>8,r),5):(a=Math.floor(r/Math.pow(2,32)),c=r>>>0,t.push(211,a>>24,a>>16,a>>8,a,c>>24,c>>16,c>>8,c),9):(t.push(203),n.push({_float:r,_length:8,_offset:t.length}),9);if("object"===i){if(null===r)return t.push(192),1;if(Array.isArray(r)){if((h=r.length)<16)t.push(144|h),u=1;else if(h<65536)t.push(220,h>>8,h),u=3;else{if(!(h<4294967296))throw new Error("Array too large");t.push(221,h>>24,h>>16,h>>8,h),u=5}for(o=0;o>>0,t.push(215,0,a>>24,a>>16,a>>8,a,c>>24,c>>16,c>>8,c),10}if(r instanceof ArrayBuffer){if((h=r.byteLength)<256)t.push(196,h),u=2;else if(h<65536)t.push(197,h>>8,h),u=3;else{if(!(h<4294967296))throw new Error("Buffer too large");t.push(198,h>>24,h>>16,h>>8,h),u=5}return n.push({_bin:r,_length:h,_offset:t.length}),u+h}if("function"==typeof r.toJSON)return dt(t,n,r.toJSON());var p=[],l="",d=Object.keys(r);for(o=0,s=d.length;o>8,h),u=3;else{if(!(h<4294967296))throw new Error("Object too large");t.push(223,h>>24,h>>16,h>>8,h),u=5}for(o=0;o0&&(c=n[0]._offset);for(var h,u=0,f=0,p=0,l=e.length;p=65536?(i-=65536,r+=String.fromCharCode(55296+(i>>>10),56320+(1023&i))):r+=String.fromCharCode(i)}else r+=String.fromCharCode((15&a)<<12|(63&t.getUint8(++o))<<6|(63&t.getUint8(++o))<<0);else r+=String.fromCharCode((31&a)<<6|63&t.getUint8(++o));else r+=String.fromCharCode(a)}return r}(this._view,this._offset,t);return this._offset+=t,e},vt.prototype._bin=function(t){var e=this._buffer.slice(this._offset,this._offset+t);return this._offset+=t,e},vt.prototype._parse=function(){var t,e=this._view.getUint8(this._offset++),n=0,r=0,i=0,o=0;if(e<192)return e<128?e:e<144?this._map(15&e):e<160?this._array(15&e):this._str(31&e);if(e>223)return-1*(255-e+1);switch(e){case 192:return null;case 194:return!1;case 195:return!0;case 196:return n=this._view.getUint8(this._offset),this._offset+=1,this._bin(n);case 197:return n=this._view.getUint16(this._offset),this._offset+=2,this._bin(n);case 198:return n=this._view.getUint32(this._offset),this._offset+=4,this._bin(n);case 199:return n=this._view.getUint8(this._offset),r=this._view.getInt8(this._offset+1),this._offset+=2,[r,this._bin(n)];case 200:return n=this._view.getUint16(this._offset),r=this._view.getInt8(this._offset+2),this._offset+=3,[r,this._bin(n)];case 201:return n=this._view.getUint32(this._offset),r=this._view.getInt8(this._offset+4),this._offset+=5,[r,this._bin(n)];case 202:return t=this._view.getFloat32(this._offset),this._offset+=4,t;case 203:return t=this._view.getFloat64(this._offset),this._offset+=8,t;case 204:return t=this._view.getUint8(this._offset),this._offset+=1,t;case 205:return t=this._view.getUint16(this._offset),this._offset+=2,t;case 206:return t=this._view.getUint32(this._offset),this._offset+=4,t;case 207:return i=this._view.getUint32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,i+o;case 208:return t=this._view.getInt8(this._offset),this._offset+=1,t;case 209:return t=this._view.getInt16(this._offset),this._offset+=2,t;case 210:return t=this._view.getInt32(this._offset),this._offset+=4,t;case 211:return i=this._view.getInt32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,i+o;case 212:return r=this._view.getInt8(this._offset),this._offset+=1,0===r?void(this._offset+=1):[r,this._bin(1)];case 213:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(2)];case 214:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(4)];case 215:return r=this._view.getInt8(this._offset),this._offset+=1,0===r?(i=this._view.getInt32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,new Date(i+o)):[r,this._bin(8)];case 216:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(16)];case 217:return n=this._view.getUint8(this._offset),this._offset+=1,this._str(n);case 218:return n=this._view.getUint16(this._offset),this._offset+=2,this._str(n);case 219:return n=this._view.getUint32(this._offset),this._offset+=4,this._str(n);case 220:return n=this._view.getUint16(this._offset),this._offset+=2,this._array(n);case 221:return n=this._view.getUint32(this._offset),this._offset+=4,this._array(n);case 222:return n=this._view.getUint16(this._offset),this._offset+=2,this._map(n);case 223:return n=this._view.getUint32(this._offset),this._offset+=4,this._map(n)}throw new Error("Could not parse")};var gt=function(t){var e=new vt(t),n=e._parse();if(e._offset!==t.byteLength)throw new Error(t.byteLength-e._offset+" trailing bytes");return n};pt.encode=yt,pt.decode=gt;var mt,_t={exports:{}};!function(t){function e(t){if(t)return function(t){for(var n in e.prototype)t[n]=e.prototype[n];return t}(t)}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},e.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i=Et.CONNECT&&t.type<=Et.CONNECT_ERROR))throw new Error("invalid packet type");if(!Ot(t.nsp))throw new Error("invalid namespace");if(!function(t){switch(t.type){case Et.CONNECT:return void 0===t.data||Tt(t.data);case Et.DISCONNECT:return void 0===t.data;case Et.CONNECT_ERROR:return Ot(t.data)||Tt(t.data);default:return Array.isArray(t.data)}}(t))throw new Error("invalid payload");if(!(void 0===t.id||Ct(t.id)))throw new Error("invalid packet id")},Rt.prototype.destroy=function(){};var At=ft.Encoder=St,xt=ft.Decoder=Rt,Ut=Object.freeze(t({__proto__:null,default:ft,protocol:wt,get PacketType(){return mt},Encoder:At,Decoder:xt},[ft]));function Lt(t,e,n){return t.on(e,n),function(){t.off(e,n)}}var Bt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),jt=function(t){s(r,t);var e=f(r);function r(t,i,o){var s;return n(this,r),(s=e.call(this)).connected=!1,s.disconnected=!0,s.receiveBuffer=[],s.sendBuffer=[],s.ids=0,s.acks={},s.flags={},s.io=t,s.nsp=i,o&&o.auth&&(s.auth=o.auth),s.io._autoConnect&&s.open(),s}return i(r,[{key:"subEvents",value:function(){if(!this.subs){var t=this.io;this.subs=[Lt(t,"open",this.onopen.bind(this)),Lt(t,"packet",this.onpacket.bind(this)),Lt(t,"error",this.onerror.bind(this)),Lt(t,"close",this.onclose.bind(this))]}}},{key:"active",get:function(){return!!this.subs}},{key:"connect",value:function(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}},{key:"open",value:function(){return this.connect()}},{key:"send",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),r=1;r0&&t.jitter<=1?t.jitter:0,this.attempts=0}Pt.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},Pt.prototype.reset=function(){this.attempts=0},Pt.prototype.setMin=function(t){this.ms=t},Pt.prototype.setMax=function(t){this.max=t},Pt.prototype.setJitter=function(t){this.jitter=t};var qt=function(t){s(o,t);var r=f(o);function o(t,i){var s,a;n(this,o),(s=r.call(this)).nsps={},s.subs=[],t&&"object"===e(t)&&(i=t,t=void 0),(i=i||{}).path=i.path||"/socket.io",s.opts=i,O(h(s),i),s.reconnection(!1!==i.reconnection),s.reconnectionAttempts(i.reconnectionAttempts||1/0),s.reconnectionDelay(i.reconnectionDelay||1e3),s.reconnectionDelayMax(i.reconnectionDelayMax||5e3),s.randomizationFactor(null!==(a=i.randomizationFactor)&&void 0!==a?a:.5),s.backoff=new Nt({min:s.reconnectionDelay(),max:s.reconnectionDelayMax(),jitter:s.randomizationFactor()}),s.timeout(null==i.timeout?2e4:i.timeout),s._readyState="closed",s.uri=t;var c=i.parser||Ut;return s.encoder=new c.Encoder,s.decoder=new c.Decoder,s._autoConnect=!1!==i.autoConnect,s._autoConnect&&s.open(),s}return i(o,[{key:"reconnection",value:function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}},{key:"reconnectionAttempts",value:function(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}},{key:"reconnectionDelay",value:function(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}},{key:"randomizationFactor",value:function(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}},{key:"reconnectionDelayMax",value:function(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}},{key:"timeout",value:function(t){return arguments.length?(this._timeout=t,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(t){var e=this;if(~this._readyState.indexOf("open"))return this;this.engine=new ut(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var i=Lt(n,"open",(function(){r.onopen(),t&&t()})),o=Lt(n,"error",(function(n){r.cleanup(),r._readyState="closed",e.emitReserved("error",n),t?t(n):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){var s=this._timeout;0===s&&i();var a=this.setTimeoutFn((function(){i(),n.close(),n.emit("error",new Error("timeout"))}),s);this.opts.autoUnref&&a.unref(),this.subs.push((function(){clearTimeout(a)}))}return this.subs.push(i),this.subs.push(o),this}},{key:"connect",value:function(t){return this.open(t)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var t=this.engine;this.subs.push(Lt(t,"ping",this.onping.bind(this)),Lt(t,"data",this.ondata.bind(this)),Lt(t,"error",this.onerror.bind(this)),Lt(t,"close",this.onclose.bind(this)),Lt(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(t){this.decoder.add(t)}},{key:"ondecoded",value:function(t){this.emitReserved("packet",t)}},{key:"onerror",value:function(t){this.emitReserved("error",t)}},{key:"socket",value:function(t,e){var n=this.nsps[t];return n||(n=new jt(this,t,e),this.nsps[t]=n),n}},{key:"_destroy",value:function(t){for(var e=0,n=Object.keys(this.nsps);e=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var r=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),t.emitReserved("reconnect_error",n)):e.onreconnect()})))}),n);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}]),o}(T),Dt={};function It(t,n){"object"===e(t)&&(n=t,t=void 0);var r,i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=g(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(t,(n=n||{}).path||"/socket.io"),o=i.source,s=i.id,a=i.path,c=Dt[s]&&a in Dt[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||c?r=new qt(o,n):(Dt[s]||(Dt[s]=new qt(o,n)),r=Dt[s]),i.query&&!n.query&&(n.query=i.queryKey),r.socket(i.path,n)}return o(It,{Manager:qt,Socket:jt,io:It,connect:It}),It})); -//# sourceMappingURL=socket.io.msgpack.min.js.map diff --git a/client-dist/socket.io.msgpack.min.js.map b/client-dist/socket.io.msgpack.min.js.map deleted file mode 100644 index 6779db2c27..0000000000 --- a/client-dist/socket.io.msgpack.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"socket.io.msgpack.min.js","sources":["../node_modules/parseuri/index.js","../node_modules/has-cors/index.js","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/@socket.io/component-emitter/index.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-client/node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/yeast/index.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/index.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/parseqs/index.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/notepack.io/browser/encode.js","../node_modules/notepack.io/browser/decode.js","../node_modules/notepack.io/lib/index.js","../node_modules/component-emitter/index.js","../node_modules/socket.io-msgpack-parser/index.js","../build/esm/on.js","../build/esm/socket.js","../node_modules/backo2/index.js","../build/esm/manager.js","../build/esm/index.js","../build/esm/url.js"],"sourcesContent":["/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","export default (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import globalThis from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose();\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport parseqs from \"parseqs\";\nimport yeast from \"yeast\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emit(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, desc) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, desc);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n","'use strict';\n\nfunction utf8Write(view, offset, str) {\n var c = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n view.setUint8(offset++, c);\n }\n else if (c < 0x800) {\n view.setUint8(offset++, 0xc0 | (c >> 6));\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n else if (c < 0xd800 || c >= 0xe000) {\n view.setUint8(offset++, 0xe0 | (c >> 12));\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n else {\n i++;\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n view.setUint8(offset++, 0xf0 | (c >> 18));\n view.setUint8(offset++, 0x80 | (c >> 12) & 0x3f);\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n }\n}\n\nfunction utf8Length(str) {\n var c = 0, length = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n\nfunction _encode(bytes, defers, value) {\n var type = typeof value, i = 0, l = 0, hi = 0, lo = 0, length = 0, size = 0;\n\n if (type === 'string') {\n length = utf8Length(value);\n\n // fixstr\n if (length < 0x20) {\n bytes.push(length | 0xa0);\n size = 1;\n }\n // str 8\n else if (length < 0x100) {\n bytes.push(0xd9, length);\n size = 2;\n }\n // str 16\n else if (length < 0x10000) {\n bytes.push(0xda, length >> 8, length);\n size = 3;\n }\n // str 32\n else if (length < 0x100000000) {\n bytes.push(0xdb, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('String too long');\n }\n defers.push({ _str: value, _length: length, _offset: bytes.length });\n return size + length;\n }\n if (type === 'number') {\n // TODO: encode to float 32?\n\n // float 64\n if (Math.floor(value) !== value || !isFinite(value)) {\n bytes.push(0xcb);\n defers.push({ _float: value, _length: 8, _offset: bytes.length });\n return 9;\n }\n\n if (value >= 0) {\n // positive fixnum\n if (value < 0x80) {\n bytes.push(value);\n return 1;\n }\n // uint 8\n if (value < 0x100) {\n bytes.push(0xcc, value);\n return 2;\n }\n // uint 16\n if (value < 0x10000) {\n bytes.push(0xcd, value >> 8, value);\n return 3;\n }\n // uint 32\n if (value < 0x100000000) {\n bytes.push(0xce, value >> 24, value >> 16, value >> 8, value);\n return 5;\n }\n // uint 64\n hi = (value / Math.pow(2, 32)) >> 0;\n lo = value >>> 0;\n bytes.push(0xcf, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 9;\n } else {\n // negative fixnum\n if (value >= -0x20) {\n bytes.push(value);\n return 1;\n }\n // int 8\n if (value >= -0x80) {\n bytes.push(0xd0, value);\n return 2;\n }\n // int 16\n if (value >= -0x8000) {\n bytes.push(0xd1, value >> 8, value);\n return 3;\n }\n // int 32\n if (value >= -0x80000000) {\n bytes.push(0xd2, value >> 24, value >> 16, value >> 8, value);\n return 5;\n }\n // int 64\n hi = Math.floor(value / Math.pow(2, 32));\n lo = value >>> 0;\n bytes.push(0xd3, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 9;\n }\n }\n if (type === 'object') {\n // nil\n if (value === null) {\n bytes.push(0xc0);\n return 1;\n }\n\n if (Array.isArray(value)) {\n length = value.length;\n\n // fixarray\n if (length < 0x10) {\n bytes.push(length | 0x90);\n size = 1;\n }\n // array 16\n else if (length < 0x10000) {\n bytes.push(0xdc, length >> 8, length);\n size = 3;\n }\n // array 32\n else if (length < 0x100000000) {\n bytes.push(0xdd, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Array too large');\n }\n for (i = 0; i < length; i++) {\n size += _encode(bytes, defers, value[i]);\n }\n return size;\n }\n\n // fixext 8 / Date\n if (value instanceof Date) {\n var time = value.getTime();\n hi = Math.floor(time / Math.pow(2, 32));\n lo = time >>> 0;\n bytes.push(0xd7, 0, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 10;\n }\n\n if (value instanceof ArrayBuffer) {\n length = value.byteLength;\n\n // bin 8\n if (length < 0x100) {\n bytes.push(0xc4, length);\n size = 2;\n } else\n // bin 16\n if (length < 0x10000) {\n bytes.push(0xc5, length >> 8, length);\n size = 3;\n } else\n // bin 32\n if (length < 0x100000000) {\n bytes.push(0xc6, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Buffer too large');\n }\n defers.push({ _bin: value, _length: length, _offset: bytes.length });\n return size + length;\n }\n\n if (typeof value.toJSON === 'function') {\n return _encode(bytes, defers, value.toJSON());\n }\n\n var keys = [], key = '';\n\n var allKeys = Object.keys(value);\n for (i = 0, l = allKeys.length; i < l; i++) {\n key = allKeys[i];\n if (typeof value[key] !== 'function') {\n keys.push(key);\n }\n }\n length = keys.length;\n\n // fixmap\n if (length < 0x10) {\n bytes.push(length | 0x80);\n size = 1;\n }\n // map 16\n else if (length < 0x10000) {\n bytes.push(0xde, length >> 8, length);\n size = 3;\n }\n // map 32\n else if (length < 0x100000000) {\n bytes.push(0xdf, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Object too large');\n }\n\n for (i = 0; i < length; i++) {\n key = keys[i];\n size += _encode(bytes, defers, key);\n size += _encode(bytes, defers, value[key]);\n }\n return size;\n }\n // false/true\n if (type === 'boolean') {\n bytes.push(value ? 0xc3 : 0xc2);\n return 1;\n }\n // fixext 1 / undefined\n if (type === 'undefined') {\n bytes.push(0xd4, 0, 0);\n return 3;\n }\n throw new Error('Could not encode');\n}\n\nfunction encode(value) {\n var bytes = [];\n var defers = [];\n var size = _encode(bytes, defers, value);\n var buf = new ArrayBuffer(size);\n var view = new DataView(buf);\n\n var deferIndex = 0;\n var deferWritten = 0;\n var nextOffset = -1;\n if (defers.length > 0) {\n nextOffset = defers[0]._offset;\n }\n\n var defer, deferLength = 0, offset = 0;\n for (var i = 0, l = bytes.length; i < l; i++) {\n view.setUint8(deferWritten + i, bytes[i]);\n if (i + 1 !== nextOffset) { continue; }\n defer = defers[deferIndex];\n deferLength = defer._length;\n offset = deferWritten + nextOffset;\n if (defer._bin) {\n var bin = new Uint8Array(defer._bin);\n for (var j = 0; j < deferLength; j++) {\n view.setUint8(offset + j, bin[j]);\n }\n } else if (defer._str) {\n utf8Write(view, offset, defer._str);\n } else if (defer._float !== undefined) {\n view.setFloat64(offset, defer._float);\n }\n deferIndex++;\n deferWritten += deferLength;\n if (defers[deferIndex]) {\n nextOffset = defers[deferIndex]._offset;\n }\n }\n return buf;\n}\n\nmodule.exports = encode;\n","'use strict';\n\nfunction Decoder(buffer) {\n this._offset = 0;\n if (buffer instanceof ArrayBuffer) {\n this._buffer = buffer;\n this._view = new DataView(this._buffer);\n } else if (ArrayBuffer.isView(buffer)) {\n this._buffer = buffer.buffer;\n this._view = new DataView(this._buffer, buffer.byteOffset, buffer.byteLength);\n } else {\n throw new Error('Invalid argument');\n }\n}\n\nfunction utf8Read(view, offset, length) {\n var string = '', chr = 0;\n for (var i = offset, end = offset + length; i < end; i++) {\n var byte = view.getUint8(i);\n if ((byte & 0x80) === 0x00) {\n string += String.fromCharCode(byte);\n continue;\n }\n if ((byte & 0xe0) === 0xc0) {\n string += String.fromCharCode(\n ((byte & 0x1f) << 6) |\n (view.getUint8(++i) & 0x3f)\n );\n continue;\n }\n if ((byte & 0xf0) === 0xe0) {\n string += String.fromCharCode(\n ((byte & 0x0f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0)\n );\n continue;\n }\n if ((byte & 0xf8) === 0xf0) {\n chr = ((byte & 0x07) << 18) |\n ((view.getUint8(++i) & 0x3f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0);\n if (chr >= 0x010000) { // surrogate pair\n chr -= 0x010000;\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\n } else {\n string += String.fromCharCode(chr);\n }\n continue;\n }\n throw new Error('Invalid byte ' + byte.toString(16));\n }\n return string;\n}\n\nDecoder.prototype._array = function (length) {\n var value = new Array(length);\n for (var i = 0; i < length; i++) {\n value[i] = this._parse();\n }\n return value;\n};\n\nDecoder.prototype._map = function (length) {\n var key = '', value = {};\n for (var i = 0; i < length; i++) {\n key = this._parse();\n value[key] = this._parse();\n }\n return value;\n};\n\nDecoder.prototype._str = function (length) {\n var value = utf8Read(this._view, this._offset, length);\n this._offset += length;\n return value;\n};\n\nDecoder.prototype._bin = function (length) {\n var value = this._buffer.slice(this._offset, this._offset + length);\n this._offset += length;\n return value;\n};\n\nDecoder.prototype._parse = function () {\n var prefix = this._view.getUint8(this._offset++);\n var value, length = 0, type = 0, hi = 0, lo = 0;\n\n if (prefix < 0xc0) {\n // positive fixint\n if (prefix < 0x80) {\n return prefix;\n }\n // fixmap\n if (prefix < 0x90) {\n return this._map(prefix & 0x0f);\n }\n // fixarray\n if (prefix < 0xa0) {\n return this._array(prefix & 0x0f);\n }\n // fixstr\n return this._str(prefix & 0x1f);\n }\n\n // negative fixint\n if (prefix > 0xdf) {\n return (0xff - prefix + 1) * -1;\n }\n\n switch (prefix) {\n // nil\n case 0xc0:\n return null;\n // false\n case 0xc2:\n return false;\n // true\n case 0xc3:\n return true;\n\n // bin\n case 0xc4:\n length = this._view.getUint8(this._offset);\n this._offset += 1;\n return this._bin(length);\n case 0xc5:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._bin(length);\n case 0xc6:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._bin(length);\n\n // ext\n case 0xc7:\n length = this._view.getUint8(this._offset);\n type = this._view.getInt8(this._offset + 1);\n this._offset += 2;\n return [type, this._bin(length)];\n case 0xc8:\n length = this._view.getUint16(this._offset);\n type = this._view.getInt8(this._offset + 2);\n this._offset += 3;\n return [type, this._bin(length)];\n case 0xc9:\n length = this._view.getUint32(this._offset);\n type = this._view.getInt8(this._offset + 4);\n this._offset += 5;\n return [type, this._bin(length)];\n\n // float\n case 0xca:\n value = this._view.getFloat32(this._offset);\n this._offset += 4;\n return value;\n case 0xcb:\n value = this._view.getFloat64(this._offset);\n this._offset += 8;\n return value;\n\n // uint\n case 0xcc:\n value = this._view.getUint8(this._offset);\n this._offset += 1;\n return value;\n case 0xcd:\n value = this._view.getUint16(this._offset);\n this._offset += 2;\n return value;\n case 0xce:\n value = this._view.getUint32(this._offset);\n this._offset += 4;\n return value;\n case 0xcf:\n hi = this._view.getUint32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return hi + lo;\n\n // int\n case 0xd0:\n value = this._view.getInt8(this._offset);\n this._offset += 1;\n return value;\n case 0xd1:\n value = this._view.getInt16(this._offset);\n this._offset += 2;\n return value;\n case 0xd2:\n value = this._view.getInt32(this._offset);\n this._offset += 4;\n return value;\n case 0xd3:\n hi = this._view.getInt32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return hi + lo;\n\n // fixext\n case 0xd4:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n if (type === 0x00) {\n this._offset += 1;\n return void 0;\n }\n return [type, this._bin(1)];\n case 0xd5:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(2)];\n case 0xd6:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(4)];\n case 0xd7:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n if (type === 0x00) {\n hi = this._view.getInt32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return new Date(hi + lo);\n }\n return [type, this._bin(8)];\n case 0xd8:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(16)];\n\n // str\n case 0xd9:\n length = this._view.getUint8(this._offset);\n this._offset += 1;\n return this._str(length);\n case 0xda:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._str(length);\n case 0xdb:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._str(length);\n\n // array\n case 0xdc:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._array(length);\n case 0xdd:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._array(length);\n\n // map\n case 0xde:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._map(length);\n case 0xdf:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._map(length);\n }\n\n throw new Error('Could not parse');\n};\n\nfunction decode(buffer) {\n var decoder = new Decoder(buffer);\n var value = decoder._parse();\n if (decoder._offset !== buffer.byteLength) {\n throw new Error((buffer.byteLength - decoder._offset) + ' trailing bytes');\n }\n return value;\n}\n\nmodule.exports = decode;\n","exports.encode = require('./encode');\nexports.decode = require('./decode');\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","var msgpack = require(\"notepack.io\");\nvar Emitter = require(\"component-emitter\");\n\nexports.protocol = 5;\n\n/**\n * Packet types (see https://github.com/socketio/socket.io-protocol)\n */\n\nvar PacketType = (exports.PacketType = {\n CONNECT: 0,\n DISCONNECT: 1,\n EVENT: 2,\n ACK: 3,\n CONNECT_ERROR: 4,\n});\n\nvar isInteger =\n Number.isInteger ||\n function (value) {\n return (\n typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value\n );\n };\n\nvar isString = function (value) {\n return typeof value === \"string\";\n};\n\nvar isObject = function (value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n};\n\nfunction Encoder() {}\n\nEncoder.prototype.encode = function (packet) {\n return [msgpack.encode(packet)];\n};\n\nfunction Decoder() {}\n\nEmitter(Decoder.prototype);\n\nDecoder.prototype.add = function (obj) {\n var decoded = msgpack.decode(obj);\n this.checkPacket(decoded);\n this.emit(\"decoded\", decoded);\n};\n\nfunction isDataValid(decoded) {\n switch (decoded.type) {\n case PacketType.CONNECT:\n return decoded.data === undefined || isObject(decoded.data);\n case PacketType.DISCONNECT:\n return decoded.data === undefined;\n case PacketType.CONNECT_ERROR:\n return isString(decoded.data) || isObject(decoded.data);\n default:\n return Array.isArray(decoded.data);\n }\n}\n\nDecoder.prototype.checkPacket = function (decoded) {\n var isTypeValid =\n isInteger(decoded.type) &&\n decoded.type >= PacketType.CONNECT &&\n decoded.type <= PacketType.CONNECT_ERROR;\n if (!isTypeValid) {\n throw new Error(\"invalid packet type\");\n }\n\n if (!isString(decoded.nsp)) {\n throw new Error(\"invalid namespace\");\n }\n\n if (!isDataValid(decoded)) {\n throw new Error(\"invalid payload\");\n }\n\n var isAckValid = decoded.id === undefined || isInteger(decoded.id);\n if (!isAckValid) {\n throw new Error(\"invalid packet id\");\n }\n};\n\nDecoder.prototype.destroy = function () {};\n\nexports.Encoder = Encoder;\nexports.Decoder = Decoder;\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n *\n * @public\n */\n constructor(io, nsp, opts) {\n super();\n this.connected = false;\n this.disconnected = true;\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @public\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for connect()\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * @return self\n * @public\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @return self\n * @public\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @private\n */\n onclose(reason) {\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emitReserved(\"disconnect\", reason);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n this.onevent(packet);\n break;\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n this.onack(packet);\n break;\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.disconnected = false;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => this.packet(packet));\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually.\n *\n * @return self\n * @public\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for disconnect()\n *\n * @return self\n * @public\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n * @public\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @returns self\n * @public\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * ```\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n * ```\n *\n * @returns self\n * @public\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @param listener\n * @public\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @param listener\n * @public\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @param listener\n * @public\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n *\n * @public\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n}\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","import { Socket as Engine, installTimerFunctions, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport Backoff from \"backo2\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n this.decoder.add(data);\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n this.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(http://github.com/uri,%20opts.path%20||%20/%22/socket.io/");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import parseuri from \"parseuri\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(http://github.com/uri,%20path%20=%20/%22/%22,%20loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parseuri(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n"],"names":["re","parts","parseuri","str","src","b","indexOf","e","substring","replace","length","query","data","m","exec","uri","i","source","host","authority","ipv6uri","pathNames","obj","path","regx","names","split","substr","splice","queryKey","$0","$1","$2","hasCorsModule","XMLHttpRequest","err","self","window","Function","opts","xdomain","hasCORS","globalThis","concat","join","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","Emitter","key","prototype","mixin","on","addEventListener","event","fn","_callbacks","this","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","emit","args","Array","len","slice","emitReserved","listeners","hasListeners","PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","ERROR_PACKET","type","withNativeBlob","Blob","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","readAsDataURL","chars","lookup","Uint8Array","charCodeAt","prev","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Transport","writable","readyState","socket","msg","desc","Error","description","doOpen","doClose","onClose","packets","write","packet","onPacket","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","yeast_1","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","Polling","polling","poll","onPause","pause","_this2","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","_this3","onOpen","close","_this4","count","encodePayload","_this5","doWrite","schema","secure","port","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","parseqs","hostname","empty","hasXHR2","responseType","XHR","location","isSSL","protocol","xd","xs","forceBase64","Request","req","request","method","onError","onData","pollXhr","async","undefined","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","onSuccess","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","onmessage","ev","onerror","lastPacket","name","transports","websocket","Socket","_this","writeBuffer","prevBufferLen","_extends","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","o","clone","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","parse","resetPingTimeout","sendPacket","code","filterUpgrades","options","compress","_this6","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","j","utf8Write","view","offset","c","setUint8","_encode","defers","value","hi","lo","size","utf8Length","_str","_length","_offset","isFinite","pow","_float","isArray","time","getTime","byteLength","_bin","toJSON","allKeys","encode_1","buf","DataView","deferIndex","deferWritten","nextOffset","defer","deferLength","bin","setFloat64","Decoder","_buffer","_view","byteOffset","_array","_parse","_map","string","chr","end","byte","getUint8","utf8Read","prefix","getUint16","getUint32","getInt8","getFloat32","getFloat64","getInt16","getInt32","decode_1","decoder","require$$0","require$$1","module","msgpack","PacketType","PacketType_1","CONNECT","DISCONNECT","EVENT","ACK","CONNECT_ERROR","isInteger","isString","isObject","Encoder","add","checkPacket","nsp","isDataValid","destroy","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","disconnected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","subs","onpacket","subEvents","_readyState","unshift","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","timer","_packet","onconnect","BINARY_EVENT","onevent","BINARY_ACK","onack","ondisconnect","message","emitEvent","_anyListeners","sent","emitBuffered","subDestroy","listener","backo2","Backoff","ms","min","max","factor","jitter","attempts","duration","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","_a","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","active","_close","delay","onreconnect","attempt","cache","_typeof","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 4a4cef50fe..0000000000 --- a/docs/README.md +++ /dev/null @@ -1,2 +0,0 @@ - -The documentation has been moved to the website [here](https://socket.io/docs/). diff --git a/example/cert.crt b/example/cert.crt new file mode 100644 index 0000000000..5883cd4496 --- /dev/null +++ b/example/cert.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDXTCCAkWgAwIBAgIJAMUSOvlaeyQHMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQwHhcNMTAxMTE2MDkzMjQ5WhcNMTMxMTE1MDkzMjQ5WjBF +MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 +ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEVwfPQQp4X +wtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+1FAE0c5o +exPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404WthquTqg +S7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy25IyBK3QJ +c+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWAQsqW+COL +0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABo1AwTjAdBgNVHQ4EFgQUDnV4d6mD +tOnluLoCjkUHTX/n4agwHwYDVR0jBBgwFoAUDnV4d6mDtOnluLoCjkUHTX/n4agw +DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAFwV4MQfTo+qMv9JMiyno +IEiqfOz4RgtmBqRnXUffcjS2dhc7/z+FPZnM79Kej8eLHoVfxCyWRHFlzm93vEdv +wxOCrD13EDOi08OOZfxWyIlCa6Bg8cMAKqQzd2OvQOWqlRWBTThBJIhWflU33izX +Qn5GdmYqhfpc+9ZHHGhvXNydtRQkdxVK2dZNzLBvBlLlRmtoClU7xm3A+/5dddeP +AQHEPtyFlUw49VYtZ3ru6KqPms7MKvcRhYLsy9rwSfuuniMlx4d0bDR7TOkw0QQS +A0N8MGQRQpzl4mw4jLzyM5d5QtuGBh2P6hPGa0YQxtI3RPT/p6ENzzBiAKXiSfzo +xw== +-----END CERTIFICATE----- diff --git a/example/chat-ssl.html b/example/chat-ssl.html new file mode 100644 index 0000000000..b997bbaeaf --- /dev/null +++ b/example/chat-ssl.html @@ -0,0 +1,61 @@ + + + + socket.io client test + + + + + + + + +

Sample chat client

+

Connecting...

+
+ +
+ + + + + diff --git a/example/chat.html b/example/chat.html new file mode 100644 index 0000000000..94104c4ff1 --- /dev/null +++ b/example/chat.html @@ -0,0 +1,69 @@ + + + + socket.io client test + + + + + + + + +

Sample chat client

+

Connecting...

+
+ +
+ + + + + diff --git a/example/json.js b/example/json.js new file mode 100644 index 0000000000..0dff7ccdb2 --- /dev/null +++ b/example/json.js @@ -0,0 +1,18 @@ +if(!this.JSON){JSON=function(){function f(n){return n<10?'0'+n:n;} +Date.prototype.toJSON=function(){return this.getUTCFullYear()+'-'+ +f(this.getUTCMonth()+1)+'-'+ +f(this.getUTCDate())+'T'+ +f(this.getUTCHours())+':'+ +f(this.getUTCMinutes())+':'+ +f(this.getUTCSeconds())+'Z';};var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};function stringify(value,whitelist){var a,i,k,l,r=/["\\\x00-\x1f\x7f-\x9f]/g,v;switch(typeof value){case'string':return r.test(value)?'"'+value.replace(r,function(a){var c=m[a];if(c){return c;} +c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+ +(c%16).toString(16);})+'"':'"'+value+'"';case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';} +if(typeof value.toJSON==='function'){return stringify(value.toJSON());} +a=[];if(typeof value.length==='number'&&!(value.propertyIsEnumerable('length'))){l=value.length;for(i=0;iWelcome. Try the SSL Chat example.'); + res.end(); + break; + + case '/json.js': + case '/chat-ssl.html': + fs.readFile(__dirname + path, function(err, data){ + if (err) return send404(res); + res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'}) + res.write(data, 'utf8'); + res.end(); + }); + break; + + default: send404(res); + } +}), + +send404 = function(res){ + res.writeHead(404); + res.write('404'); + res.end(); +}; + +server.listen(443); + +// socket.io, I choose you +// simplest chat application evar +var io = io.listen(server) + , buffer = []; + +io.on('connection', function(client){ + client.send({ buffer: buffer }); + client.broadcast({ announcement: client.sessionId + ' connected' }); + + client.on('message', function(message){ + var msg = { message: [client.sessionId, message] }; + buffer.push(msg); + if (buffer.length > 15) buffer.shift(); + client.broadcast(msg); + }); + + client.on('disconnect', function(){ + client.broadcast({ announcement: client.sessionId + ' disconnected' }); + }); +}); diff --git a/example/server.js b/example/server.js new file mode 100644 index 0000000000..7f10e7f346 --- /dev/null +++ b/example/server.js @@ -0,0 +1,63 @@ +/** + * Important note: this application is not suitable for benchmarks! + */ + +var http = require('http') + , url = require('url') + , fs = require('fs') + , io = require('../') + , sys = require(process.binding('natives').util ? 'util' : 'sys') + , server; + +server = http.createServer(function(req, res){ + // your normal server code + var path = url.parse(req.url).pathname; + switch (path){ + case '/': + res.writeHead(200, {'Content-Type': 'text/html'}); + res.write('

Welcome. Try the chat example.

'); + res.end(); + break; + + case '/json.js': + case '/chat.html': + fs.readFile(__dirname + path, function(err, data){ + if (err) return send404(res); + res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'}) + res.write(data, 'utf8'); + res.end(); + }); + break; + + default: send404(res); + } +}), + +send404 = function(res){ + res.writeHead(404); + res.write('404'); + res.end(); +}; + +server.listen(8080); + +// socket.io, I choose you +// simplest chat application evar +var io = io.listen(server) + , buffer = []; + +io.on('connection', function(client){ + client.send({ buffer: buffer }); + client.broadcast({ announcement: client.sessionId + ' connected' }); + + client.on('message', function(message){ + var msg = { message: [client.sessionId, message] }; + buffer.push(msg); + if (buffer.length > 15) buffer.shift(); + client.broadcast(msg); + }); + + client.on('disconnect', function(){ + client.broadcast({ announcement: client.sessionId + ' disconnected' }); + }); +}); diff --git a/examples/.gitignore b/examples/.gitignore deleted file mode 100644 index d8b83df9cd..0000000000 --- a/examples/.gitignore +++ /dev/null @@ -1 +0,0 @@ -package-lock.json diff --git a/examples/angular-todomvc/.browserslistrc b/examples/angular-todomvc/.browserslistrc deleted file mode 100644 index 427441dc93..0000000000 --- a/examples/angular-todomvc/.browserslistrc +++ /dev/null @@ -1,17 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR -not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/examples/angular-todomvc/.editorconfig b/examples/angular-todomvc/.editorconfig deleted file mode 100644 index 59d9a3a3e7..0000000000 --- a/examples/angular-todomvc/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/examples/angular-todomvc/.gitignore b/examples/angular-todomvc/.gitignore deleted file mode 100644 index 86d943a9b2..0000000000 --- a/examples/angular-todomvc/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp -/out-tsc -# Only exists if Bazel was run -/bazel-out - -# dependencies -/node_modules - -# profiling files -chrome-profiler-events*.json -speed-measure-plugin*.json - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -yarn-error.log -testem.log -/typings - -# System Files -.DS_Store -Thumbs.db diff --git a/examples/angular-todomvc/README.md b/examples/angular-todomvc/README.md deleted file mode 100644 index 6a764a92af..0000000000 --- a/examples/angular-todomvc/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Angular TodoMVC + Socket.IO - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.0.4. - -Inspired from the [TodoMVC](http://todomvc.com/) [angular example](https://github.com/tastejs/todomvc/tree/master/examples/angular2). - -![demo](assets/demo.gif) - -## Development server - -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. - -## Socket.IO server - -Run `npm run start:server` to start the Socket.IO server. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/examples/angular-todomvc/angular.json b/examples/angular-todomvc/angular.json deleted file mode 100644 index 1f7b865cc8..0000000000 --- a/examples/angular-todomvc/angular.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "angular-todomvc": { - "projectType": "application", - "schematics": { - "@schematics/angular:application": { - "strict": true - } - }, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/angular-todomvc", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "aot": true, - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ] - } - } - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "options": { - "browserTarget": "angular-todomvc:build" - }, - "configurations": { - "production": { - "browserTarget": "angular-todomvc:build:production" - } - } - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "angular-todomvc:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], - "scripts": [] - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "tsconfig.app.json", - "tsconfig.spec.json", - "e2e/tsconfig.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - }, - "e2e": { - "builder": "@angular-devkit/build-angular:protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "angular-todomvc:serve" - }, - "configurations": { - "production": { - "devServerTarget": "angular-todomvc:serve:production" - } - } - } - } - } - }, - "defaultProject": "angular-todomvc" -} diff --git a/examples/angular-todomvc/assets/demo.gif b/examples/angular-todomvc/assets/demo.gif deleted file mode 100644 index 1042efc741..0000000000 Binary files a/examples/angular-todomvc/assets/demo.gif and /dev/null differ diff --git a/examples/angular-todomvc/e2e/protractor.conf.js b/examples/angular-todomvc/e2e/protractor.conf.js deleted file mode 100644 index 361e7f0cdf..0000000000 --- a/examples/angular-todomvc/e2e/protractor.conf.js +++ /dev/null @@ -1,37 +0,0 @@ -// @ts-check -// Protractor configuration file, see link for more information -// https://github.com/angular/protractor/blob/master/lib/config.ts - -const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter'); - -/** - * @type { import("protractor").Config } - */ -exports.config = { - allScriptsTimeout: 11000, - specs: [ - './src/**/*.e2e-spec.ts' - ], - capabilities: { - browserName: 'chrome' - }, - directConnect: true, - SELENIUM_PROMISE_MANAGER: false, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {} - }, - onPrepare() { - require('ts-node').register({ - project: require('path').join(__dirname, './tsconfig.json') - }); - jasmine.getEnv().addReporter(new SpecReporter({ - spec: { - displayStacktrace: StacktraceOption.PRETTY - } - })); - } -}; \ No newline at end of file diff --git a/examples/angular-todomvc/e2e/src/app.e2e-spec.ts b/examples/angular-todomvc/e2e/src/app.e2e-spec.ts deleted file mode 100644 index 40cd66b3fc..0000000000 --- a/examples/angular-todomvc/e2e/src/app.e2e-spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { AppPage } from './app.po'; -import { browser, logging } from 'protractor'; - -describe('workspace-project App', () => { - let page: AppPage; - - beforeEach(() => { - page = new AppPage(); - }); - - it('should display welcome message', async () => { - await page.navigateTo(); - expect(await page.getTitleText()).toEqual('angular-todomvc app is running!'); - }); - - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - } as logging.Entry)); - }); -}); diff --git a/examples/angular-todomvc/e2e/src/app.po.ts b/examples/angular-todomvc/e2e/src/app.po.ts deleted file mode 100644 index c9c85ab9a2..0000000000 --- a/examples/angular-todomvc/e2e/src/app.po.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { browser, by, element } from 'protractor'; - -export class AppPage { - async navigateTo(): Promise { - return browser.get(browser.baseUrl); - } - - async getTitleText(): Promise { - return element(by.css('app-root .content span')).getText(); - } -} diff --git a/examples/angular-todomvc/e2e/tsconfig.json b/examples/angular-todomvc/e2e/tsconfig.json deleted file mode 100644 index 0782539c04..0000000000 --- a/examples/angular-todomvc/e2e/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/e2e", - "module": "commonjs", - "target": "es2018", - "types": [ - "jasmine", - "node" - ] - } -} diff --git a/examples/angular-todomvc/karma.conf.js b/examples/angular-todomvc/karma.conf.js deleted file mode 100644 index 8c36c2d963..0000000000 --- a/examples/angular-todomvc/karma.conf.js +++ /dev/null @@ -1,44 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/angular-todomvc'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/examples/angular-todomvc/package.json b/examples/angular-todomvc/package.json deleted file mode 100644 index b2d5ea1b93..0000000000 --- a/examples/angular-todomvc/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "angular-todomvc", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e", - "start:server": "ts-node -O '{\"module\":\"commonjs\"}' server.ts" - }, - "private": true, - "dependencies": { - "@angular/animations": "~11.0.4", - "@angular/common": "~11.0.4", - "@angular/compiler": "~11.0.4", - "@angular/core": "~11.0.4", - "@angular/forms": "~11.0.4", - "@angular/platform-browser": "~11.0.4", - "@angular/platform-browser-dynamic": "~11.0.4", - "@angular/router": "~11.0.4", - "rxjs": "~6.6.0", - "socket.io": "^4.0.0", - "socket.io-client": "^4.0.0", - "tslib": "^2.0.0", - "zone.js": "~0.10.2" - }, - "devDependencies": { - "@angular-devkit/build-angular": "~0.1100.4", - "@angular/cli": "~11.0.4", - "@angular/compiler-cli": "~11.0.4", - "@types/jasmine": "~3.6.0", - "@types/node": "^12.11.1", - "codelyzer": "^6.0.0", - "jasmine-core": "~3.6.0", - "jasmine-spec-reporter": "~5.0.0", - "karma": "~5.1.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.0.3", - "karma-jasmine": "~4.0.0", - "karma-jasmine-html-reporter": "^1.5.0", - "protractor": "~7.0.0", - "ts-node": "~8.3.0", - "tslint": "~6.1.0", - "typescript": "~4.0.2" - } -} diff --git a/examples/angular-todomvc/server.ts b/examples/angular-todomvc/server.ts deleted file mode 100644 index 0f3301b370..0000000000 --- a/examples/angular-todomvc/server.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Server } from "socket.io"; - -const io = new Server(8080, { - cors: { - origin: "http://localhost:4200/", - methods: ["GET", "POST"] - } -}); - -interface Todo { - completed: boolean; - editing: boolean; - title: string; -} - -let todos: Array = []; - -io.on("connect", (socket) => { - socket.emit("todos", todos); - - // note: we could also create a CRUD (create/read/update/delete) service for the todo list - socket.on("update-store", (updatedTodos) => { - // store it locally - todos = updatedTodos; - // broadcast to everyone but the sender - socket.broadcast.emit("todos", todos); - }); -}); diff --git a/examples/angular-todomvc/src/app/app.component.html b/examples/angular-todomvc/src/app/app.component.html deleted file mode 100644 index 644aa7089b..0000000000 --- a/examples/angular-todomvc/src/app/app.component.html +++ /dev/null @@ -1,23 +0,0 @@ -
-
-

todos

- -
-
- -
    -
  • -
    - - - -
    - -
  • -
-
-
- {{todoStore.getRemaining().length}} {{todoStore.getRemaining().length == 1 ? 'item' : 'items'}} left - -
-
diff --git a/examples/angular-todomvc/src/app/app.component.spec.ts b/examples/angular-todomvc/src/app/app.component.spec.ts deleted file mode 100644 index d2e3a2bc4d..0000000000 --- a/examples/angular-todomvc/src/app/app.component.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { AppComponent } from './app.component'; - -describe('AppComponent', () => { - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - AppComponent - ], - }).compileComponents(); - }); - - it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app).toBeTruthy(); - }); - - it(`should have as title 'angular-todomvc'`, () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app.title).toEqual('angular-todomvc'); - }); - - it('should render title', () => { - const fixture = TestBed.createComponent(AppComponent); - fixture.detectChanges(); - const compiled = fixture.nativeElement; - expect(compiled.querySelector('.content span').textContent).toContain('angular-todomvc app is running!'); - }); -}); diff --git a/examples/angular-todomvc/src/app/app.component.ts b/examples/angular-todomvc/src/app/app.component.ts deleted file mode 100644 index 5e89b4e9d2..0000000000 --- a/examples/angular-todomvc/src/app/app.component.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Component } from '@angular/core'; -import { RemoteTodoStore, Todo } from './store'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent { - todoStore: RemoteTodoStore; - newTodoText = ''; - - constructor(todoStore: RemoteTodoStore) { - this.todoStore = todoStore; - } - - stopEditing(todo: Todo, editedTitle: string) { - todo.title = editedTitle; - todo.editing = false; - } - - cancelEditingTodo(todo: Todo) { - todo.editing = false; - } - - updateEditingTodo(todo: Todo, editedTitle: string) { - editedTitle = editedTitle.trim(); - todo.editing = false; - - if (editedTitle.length === 0) { - return this.todoStore.remove(todo); - } - - todo.title = editedTitle; - } - - editTodo(todo: Todo) { - todo.editing = true; - } - - removeCompleted() { - this.todoStore.removeCompleted(); - } - - toggleCompletion(todo: Todo) { - this.todoStore.toggleCompletion(todo); - } - - remove(todo: Todo){ - this.todoStore.remove(todo); - } - - addTodo() { - if (this.newTodoText.trim().length) { - this.todoStore.add(this.newTodoText); - this.newTodoText = ''; - } - } -} diff --git a/examples/angular-todomvc/src/app/app.module.ts b/examples/angular-todomvc/src/app/app.module.ts deleted file mode 100644 index 126aef1fa6..0000000000 --- a/examples/angular-todomvc/src/app/app.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { NgModule } from '@angular/core'; - -import { AppComponent } from './app.component'; -import { RemoteTodoStore } from './store'; -import { FormsModule } from "@angular/forms"; - -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ - BrowserModule, - FormsModule - ], - providers: [RemoteTodoStore], - bootstrap: [AppComponent] -}) -export class AppModule { } diff --git a/examples/angular-todomvc/src/app/store.ts b/examples/angular-todomvc/src/app/store.ts deleted file mode 100644 index df2d5bf0bd..0000000000 --- a/examples/angular-todomvc/src/app/store.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { io, Socket } from "socket.io-client"; - -export class Todo { - completed: boolean; - editing: boolean; - - private _title: String = ""; - get title() { - return this._title; - } - set title(value: String) { - this._title = value.trim(); - } - - constructor(title: String) { - this.completed = false; - this.editing = false; - this.title = title.trim(); - } -} - -export class TodoStore { - todos: Array; - - constructor() { - let persistedTodos = JSON.parse(localStorage.getItem('angular2-todos') || '[]'); - // Normalize back into classes - this.todos = persistedTodos.map( (todo: {_title: String, completed: boolean}) => { - let ret = new Todo(todo._title); - ret.completed = todo.completed; - return ret; - }); - } - - protected updateStore() { - localStorage.setItem('angular2-todos', JSON.stringify(this.todos)); - } - - private getWithCompleted(completed: boolean) { - return this.todos.filter((todo: Todo) => todo.completed === completed); - } - - allCompleted() { - return this.todos.length === this.getCompleted().length; - } - - setAllTo(completed: boolean) { - this.todos.forEach((t: Todo) => t.completed = completed); - this.updateStore(); - } - - removeCompleted() { - this.todos = this.getWithCompleted(false); - this.updateStore(); - } - - getRemaining() { - return this.getWithCompleted(false); - } - - getCompleted() { - return this.getWithCompleted(true); - } - - toggleCompletion(todo: Todo) { - todo.completed = !todo.completed; - this.updateStore(); - } - - remove(todo: Todo) { - this.todos.splice(this.todos.indexOf(todo), 1); - this.updateStore(); - } - - add(title: String) { - this.todos.push(new Todo(title)); - this.updateStore(); - } -} - -export class RemoteTodoStore extends TodoStore { - private socket: Socket; - - constructor() { - super(); - this.socket = io("http://localhost:8080/"); - this.socket.on("todos", (updatedTodos: Array) => { - this.todos = updatedTodos; - }); - } - - protected updateStore() { - this.socket.emit("update-store", this.todos.map(({ title, editing, completed }) => ({ title, editing, completed }))); - } -} diff --git a/examples/angular-todomvc/src/assets/.gitkeep b/examples/angular-todomvc/src/assets/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/examples/angular-todomvc/src/environments/environment.prod.ts b/examples/angular-todomvc/src/environments/environment.prod.ts deleted file mode 100644 index 3612073bc3..0000000000 --- a/examples/angular-todomvc/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/examples/angular-todomvc/src/environments/environment.ts b/examples/angular-todomvc/src/environments/environment.ts deleted file mode 100644 index 7b4f817adb..0000000000 --- a/examples/angular-todomvc/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/examples/angular-todomvc/src/favicon.ico b/examples/angular-todomvc/src/favicon.ico deleted file mode 100644 index 997406ad22..0000000000 Binary files a/examples/angular-todomvc/src/favicon.ico and /dev/null differ diff --git a/examples/angular-todomvc/src/index.html b/examples/angular-todomvc/src/index.html deleted file mode 100644 index 6b9657c4fd..0000000000 --- a/examples/angular-todomvc/src/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - Angular Todo MVC - - - - - - - - diff --git a/examples/angular-todomvc/src/main.ts b/examples/angular-todomvc/src/main.ts deleted file mode 100644 index c7b673cf44..0000000000 --- a/examples/angular-todomvc/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/examples/angular-todomvc/src/polyfills.ts b/examples/angular-todomvc/src/polyfills.ts deleted file mode 100644 index 9b8f300ef6..0000000000 --- a/examples/angular-todomvc/src/polyfills.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js/dist/zone'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/examples/angular-todomvc/src/styles.css b/examples/angular-todomvc/src/styles.css deleted file mode 100644 index dcc6df18f7..0000000000 --- a/examples/angular-todomvc/src/styles.css +++ /dev/null @@ -1,381 +0,0 @@ -/* imported from node_modules/todomvc-app-css/index.css */ -html, -body { - margin: 0; - padding: 0; -} - -button { - margin: 0; - padding: 0; - border: 0; - background: none; - font-size: 100%; - vertical-align: baseline; - font-family: inherit; - font-weight: inherit; - color: inherit; - -webkit-appearance: none; - appearance: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -body { - font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; - line-height: 1.4em; - background: #f5f5f5; - color: #111111; - min-width: 230px; - max-width: 550px; - margin: 0 auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 300; -} - -:focus { - outline: 0; -} - -.hidden { - display: none; -} - -.todoapp { - background: #fff; - margin: 130px 0 40px 0; - position: relative; - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), - 0 25px 50px 0 rgba(0, 0, 0, 0.1); -} - -.todoapp input::-webkit-input-placeholder { - font-style: italic; - font-weight: 300; - color: rgba(0, 0, 0, 0.4); -} - -.todoapp input::-moz-placeholder { - font-style: italic; - font-weight: 300; - color: rgba(0, 0, 0, 0.4); -} - -.todoapp input::input-placeholder { - font-style: italic; - font-weight: 300; - color: rgba(0, 0, 0, 0.4); -} - -.todoapp h1 { - position: absolute; - top: -140px; - width: 100%; - font-size: 80px; - font-weight: 200; - text-align: center; - color: #b83f45; - -webkit-text-rendering: optimizeLegibility; - -moz-text-rendering: optimizeLegibility; - text-rendering: optimizeLegibility; -} - -.new-todo, -.edit { - position: relative; - margin: 0; - width: 100%; - font-size: 24px; - font-family: inherit; - font-weight: inherit; - line-height: 1.4em; - color: inherit; - padding: 6px; - border: 1px solid #999; - box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); - box-sizing: border-box; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.new-todo { - padding: 16px 16px 16px 60px; - border: none; - background: rgba(0, 0, 0, 0.003); - box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03); -} - -.main { - position: relative; - z-index: 2; - border-top: 1px solid #e6e6e6; -} - -.toggle-all { - width: 1px; - height: 1px; - border: none; /* Mobile Safari */ - opacity: 0; - position: absolute; - right: 100%; - bottom: 100%; -} - -.toggle-all + label { - width: 60px; - height: 34px; - font-size: 0; - position: absolute; - top: -52px; - left: -13px; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); -} - -.toggle-all + label:before { - content: '❯'; - font-size: 22px; - color: #e6e6e6; - padding: 10px 27px 10px 27px; -} - -.toggle-all:checked + label:before { - color: #737373; -} - -.todo-list { - margin: 0; - padding: 0; - list-style: none; -} - -.todo-list li { - position: relative; - font-size: 24px; - border-bottom: 1px solid #ededed; -} - -.todo-list li:last-child { - border-bottom: none; -} - -.todo-list li.editing { - border-bottom: none; - padding: 0; -} - -.todo-list li.editing .edit { - display: block; - width: calc(100% - 43px); - padding: 12px 16px; - margin: 0 0 0 43px; -} - -.todo-list li.editing .view { - display: none; -} - -.todo-list li .toggle { - text-align: center; - width: 40px; - /* auto, since non-WebKit browsers doesn't support input styling */ - height: auto; - position: absolute; - top: 0; - bottom: 0; - margin: auto 0; - border: none; /* Mobile Safari */ - -webkit-appearance: none; - appearance: none; -} - -.todo-list li .toggle { - opacity: 0; -} - -.todo-list li .toggle + label { - /* - Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 - IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ - */ - background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E'); - background-repeat: no-repeat; - background-position: center left; -} - -.todo-list li .toggle:checked + label { - background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E'); -} - -.todo-list li label { - word-break: break-all; - padding: 15px 15px 15px 60px; - display: block; - line-height: 1.2; - transition: color 0.4s; - font-weight: 400; - color: #4d4d4d; -} - -.todo-list li.completed label { - color: #cdcdcd; - text-decoration: line-through; -} - -.todo-list li .destroy { - display: none; - position: absolute; - top: 0; - right: 10px; - bottom: 0; - width: 40px; - height: 40px; - margin: auto 0; - font-size: 30px; - color: #cc9a9a; - margin-bottom: 11px; - transition: color 0.2s ease-out; -} - -.todo-list li .destroy:hover { - color: #af5b5e; -} - -.todo-list li .destroy:after { - content: '×'; -} - -.todo-list li:hover .destroy { - display: block; -} - -.todo-list li .edit { - display: none; -} - -.todo-list li.editing:last-child { - margin-bottom: -1px; -} - -.footer { - padding: 10px 15px; - height: 20px; - text-align: center; - font-size: 15px; - border-top: 1px solid #e6e6e6; -} - -.footer:before { - content: ''; - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 50px; - overflow: hidden; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), - 0 8px 0 -3px #f6f6f6, - 0 9px 1px -3px rgba(0, 0, 0, 0.2), - 0 16px 0 -6px #f6f6f6, - 0 17px 2px -6px rgba(0, 0, 0, 0.2); -} - -.todo-count { - float: left; - text-align: left; -} - -.todo-count strong { - font-weight: 300; -} - -.filters { - margin: 0; - padding: 0; - list-style: none; - position: absolute; - right: 0; - left: 0; -} - -.filters li { - display: inline; -} - -.filters li a { - color: inherit; - margin: 3px; - padding: 3px 7px; - text-decoration: none; - border: 1px solid transparent; - border-radius: 3px; -} - -.filters li a:hover { - border-color: rgba(175, 47, 47, 0.1); -} - -.filters li a.selected { - border-color: rgba(175, 47, 47, 0.2); -} - -.clear-completed, -html .clear-completed:active { - float: right; - position: relative; - line-height: 20px; - text-decoration: none; - cursor: pointer; -} - -.clear-completed:hover { - text-decoration: underline; -} - -.info { - margin: 65px auto 0; - color: #4d4d4d; - font-size: 11px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-align: center; -} - -.info p { - line-height: 1; -} - -.info a { - color: inherit; - text-decoration: none; - font-weight: 400; -} - -.info a:hover { - text-decoration: underline; -} - -/* - Hack to remove background from Mobile Safari. - Can't use it globally since it destroys checkboxes in Firefox -*/ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .toggle-all, - .todo-list li .toggle { - background: none; - } - - .todo-list li .toggle { - height: 40px; - } -} - -@media (max-width: 430px) { - .footer { - height: 50px; - } - - .filters { - bottom: 10px; - } -} diff --git a/examples/angular-todomvc/src/test.ts b/examples/angular-todomvc/src/test.ts deleted file mode 100644 index 50193eb0f2..0000000000 --- a/examples/angular-todomvc/src/test.ts +++ /dev/null @@ -1,25 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - keys(): string[]; - (id: string): T; - }; -}; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/examples/angular-todomvc/tsconfig.app.json b/examples/angular-todomvc/tsconfig.app.json deleted file mode 100644 index 82d91dc4a4..0000000000 --- a/examples/angular-todomvc/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/examples/angular-todomvc/tsconfig.json b/examples/angular-todomvc/tsconfig.json deleted file mode 100644 index d3c1011aa5..0000000000 --- a/examples/angular-todomvc/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2015", - "module": "es2020", - "lib": [ - "es2018", - "dom" - ] - }, - "angularCompilerOptions": { - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/examples/angular-todomvc/tsconfig.spec.json b/examples/angular-todomvc/tsconfig.spec.json deleted file mode 100644 index 092345b02e..0000000000 --- a/examples/angular-todomvc/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/examples/angular-todomvc/tslint.json b/examples/angular-todomvc/tslint.json deleted file mode 100644 index 277c8eba02..0000000000 --- a/examples/angular-todomvc/tslint.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "extends": "tslint:recommended", - "rulesDirectory": [ - "codelyzer" - ], - "rules": { - "align": { - "options": [ - "parameters", - "statements" - ] - }, - "array-type": false, - "arrow-return-shorthand": true, - "curly": true, - "deprecation": { - "severity": "warning" - }, - "eofline": true, - "import-blacklist": [ - true, - "rxjs/Rx" - ], - "import-spacing": true, - "indent": { - "options": [ - "spaces" - ] - }, - "max-classes-per-file": false, - "max-line-length": [ - true, - 140 - ], - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-empty": false, - "no-inferrable-types": [ - true, - "ignore-params" - ], - "no-non-null-assertion": true, - "no-redundant-jsdoc": true, - "no-switch-case-fall-through": true, - "no-var-requires": false, - "object-literal-key-quotes": [ - true, - "as-needed" - ], - "quotemark": [ - true, - "single" - ], - "semicolon": { - "options": [ - "always" - ] - }, - "space-before-function-paren": { - "options": { - "anonymous": "never", - "asyncArrow": "always", - "constructor": "never", - "method": "never", - "named": "never" - } - }, - "typedef": [ - true, - "call-signature" - ], - "typedef-whitespace": { - "options": [ - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ] - }, - "variable-name": { - "options": [ - "ban-keywords", - "check-format", - "allow-pascal-case" - ] - }, - "whitespace": { - "options": [ - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type", - "check-typecast" - ] - }, - "component-class-suffix": true, - "contextual-lifecycle": true, - "directive-class-suffix": true, - "no-conflicting-lifecycle": true, - "no-host-metadata-property": true, - "no-input-rename": true, - "no-inputs-metadata-property": true, - "no-output-native": true, - "no-output-on-prefix": true, - "no-output-rename": true, - "no-outputs-metadata-property": true, - "template-banana-in-box": true, - "template-no-negated-async": true, - "use-lifecycle-interface": true, - "use-pipe-transform-interface": true, - "directive-selector": [ - true, - "attribute", - "app", - "camelCase" - ], - "component-selector": [ - true, - "element", - "app", - "kebab-case" - ] - } -} diff --git a/examples/basic-crud-application/README.md b/examples/basic-crud-application/README.md deleted file mode 100644 index 2291439198..0000000000 --- a/examples/basic-crud-application/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Basic CRUD application with Socket.IO - -Please read the related [guide](https://socket.io/get-started/basic-crud-application/). - -## Running the frontend - -``` -cd angular-client -npm install -npm start -``` - -### Running the server - -``` -cd server -npm install -npm start -``` diff --git a/examples/basic-crud-application/angular-client/.browserslistrc b/examples/basic-crud-application/angular-client/.browserslistrc deleted file mode 100644 index 427441dc93..0000000000 --- a/examples/basic-crud-application/angular-client/.browserslistrc +++ /dev/null @@ -1,17 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR -not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/examples/basic-crud-application/angular-client/.editorconfig b/examples/basic-crud-application/angular-client/.editorconfig deleted file mode 100644 index 59d9a3a3e7..0000000000 --- a/examples/basic-crud-application/angular-client/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/examples/basic-crud-application/angular-client/.gitignore b/examples/basic-crud-application/angular-client/.gitignore deleted file mode 100644 index 86d943a9b2..0000000000 --- a/examples/basic-crud-application/angular-client/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp -/out-tsc -# Only exists if Bazel was run -/bazel-out - -# dependencies -/node_modules - -# profiling files -chrome-profiler-events*.json -speed-measure-plugin*.json - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -yarn-error.log -testem.log -/typings - -# System Files -.DS_Store -Thumbs.db diff --git a/examples/basic-crud-application/angular-client/README.md b/examples/basic-crud-application/angular-client/README.md deleted file mode 100644 index 672257d34e..0000000000 --- a/examples/basic-crud-application/angular-client/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Angular TodoMVC + Socket.IO - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.0.4. - -Inspired from the [TodoMVC](http://todomvc.com/) [angular example](https://github.com/tastejs/todomvc/tree/master/examples/angular2). - -![demo](assets/demo.gif) - -## Development server - -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/examples/basic-crud-application/angular-client/angular.json b/examples/basic-crud-application/angular-client/angular.json deleted file mode 100644 index 1f7b865cc8..0000000000 --- a/examples/basic-crud-application/angular-client/angular.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "angular-todomvc": { - "projectType": "application", - "schematics": { - "@schematics/angular:application": { - "strict": true - } - }, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/angular-todomvc", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "aot": true, - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ] - } - } - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "options": { - "browserTarget": "angular-todomvc:build" - }, - "configurations": { - "production": { - "browserTarget": "angular-todomvc:build:production" - } - } - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "angular-todomvc:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], - "scripts": [] - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "tsconfig.app.json", - "tsconfig.spec.json", - "e2e/tsconfig.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - }, - "e2e": { - "builder": "@angular-devkit/build-angular:protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "angular-todomvc:serve" - }, - "configurations": { - "production": { - "devServerTarget": "angular-todomvc:serve:production" - } - } - } - } - } - }, - "defaultProject": "angular-todomvc" -} diff --git a/examples/basic-crud-application/angular-client/assets/demo.gif b/examples/basic-crud-application/angular-client/assets/demo.gif deleted file mode 100644 index 1042efc741..0000000000 Binary files a/examples/basic-crud-application/angular-client/assets/demo.gif and /dev/null differ diff --git a/examples/basic-crud-application/angular-client/e2e/protractor.conf.js b/examples/basic-crud-application/angular-client/e2e/protractor.conf.js deleted file mode 100644 index 361e7f0cdf..0000000000 --- a/examples/basic-crud-application/angular-client/e2e/protractor.conf.js +++ /dev/null @@ -1,37 +0,0 @@ -// @ts-check -// Protractor configuration file, see link for more information -// https://github.com/angular/protractor/blob/master/lib/config.ts - -const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter'); - -/** - * @type { import("protractor").Config } - */ -exports.config = { - allScriptsTimeout: 11000, - specs: [ - './src/**/*.e2e-spec.ts' - ], - capabilities: { - browserName: 'chrome' - }, - directConnect: true, - SELENIUM_PROMISE_MANAGER: false, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {} - }, - onPrepare() { - require('ts-node').register({ - project: require('path').join(__dirname, './tsconfig.json') - }); - jasmine.getEnv().addReporter(new SpecReporter({ - spec: { - displayStacktrace: StacktraceOption.PRETTY - } - })); - } -}; \ No newline at end of file diff --git a/examples/basic-crud-application/angular-client/e2e/src/app.e2e-spec.ts b/examples/basic-crud-application/angular-client/e2e/src/app.e2e-spec.ts deleted file mode 100644 index 40cd66b3fc..0000000000 --- a/examples/basic-crud-application/angular-client/e2e/src/app.e2e-spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { AppPage } from './app.po'; -import { browser, logging } from 'protractor'; - -describe('workspace-project App', () => { - let page: AppPage; - - beforeEach(() => { - page = new AppPage(); - }); - - it('should display welcome message', async () => { - await page.navigateTo(); - expect(await page.getTitleText()).toEqual('angular-todomvc app is running!'); - }); - - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - } as logging.Entry)); - }); -}); diff --git a/examples/basic-crud-application/angular-client/e2e/src/app.po.ts b/examples/basic-crud-application/angular-client/e2e/src/app.po.ts deleted file mode 100644 index c9c85ab9a2..0000000000 --- a/examples/basic-crud-application/angular-client/e2e/src/app.po.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { browser, by, element } from 'protractor'; - -export class AppPage { - async navigateTo(): Promise { - return browser.get(browser.baseUrl); - } - - async getTitleText(): Promise { - return element(by.css('app-root .content span')).getText(); - } -} diff --git a/examples/basic-crud-application/angular-client/e2e/tsconfig.json b/examples/basic-crud-application/angular-client/e2e/tsconfig.json deleted file mode 100644 index 0782539c04..0000000000 --- a/examples/basic-crud-application/angular-client/e2e/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/e2e", - "module": "commonjs", - "target": "es2018", - "types": [ - "jasmine", - "node" - ] - } -} diff --git a/examples/basic-crud-application/angular-client/karma.conf.js b/examples/basic-crud-application/angular-client/karma.conf.js deleted file mode 100644 index 8c36c2d963..0000000000 --- a/examples/basic-crud-application/angular-client/karma.conf.js +++ /dev/null @@ -1,44 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/angular-todomvc'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/examples/basic-crud-application/angular-client/package.json b/examples/basic-crud-application/angular-client/package.json deleted file mode 100644 index 6df6cd2b1d..0000000000 --- a/examples/basic-crud-application/angular-client/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "angular-todomvc", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e" - }, - "private": true, - "dependencies": { - "@angular/animations": "~11.0.4", - "@angular/common": "~11.0.4", - "@angular/compiler": "~11.0.4", - "@angular/core": "~11.0.4", - "@angular/forms": "~11.0.4", - "@angular/platform-browser": "~11.0.4", - "@angular/platform-browser-dynamic": "~11.0.4", - "@angular/router": "~11.0.4", - "rxjs": "~6.6.0", - "socket.io-client": "^4.0.0", - "tslib": "^2.0.0", - "zone.js": "~0.10.2" - }, - "devDependencies": { - "@angular-devkit/build-angular": "~0.1100.4", - "@angular/cli": "~11.0.4", - "@angular/compiler-cli": "~11.0.4", - "@types/jasmine": "~3.6.0", - "@types/node": "^12.11.1", - "codelyzer": "^6.0.0", - "jasmine-core": "~3.6.0", - "jasmine-spec-reporter": "~5.0.0", - "karma": "~5.1.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.0.3", - "karma-jasmine": "~4.0.0", - "karma-jasmine-html-reporter": "^1.5.0", - "protractor": "~7.0.0", - "ts-node": "~8.3.0", - "tslint": "~6.1.0", - "typescript": "~4.0.2" - } -} diff --git a/examples/basic-crud-application/angular-client/src/app/app.component.css b/examples/basic-crud-application/angular-client/src/app/app.component.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/examples/basic-crud-application/angular-client/src/app/app.component.html b/examples/basic-crud-application/angular-client/src/app/app.component.html deleted file mode 100644 index 644aa7089b..0000000000 --- a/examples/basic-crud-application/angular-client/src/app/app.component.html +++ /dev/null @@ -1,23 +0,0 @@ -
-
-

todos

- -
-
- -
    -
  • -
    - - - -
    - -
  • -
-
-
- {{todoStore.getRemaining().length}} {{todoStore.getRemaining().length == 1 ? 'item' : 'items'}} left - -
-
diff --git a/examples/basic-crud-application/angular-client/src/app/app.component.spec.ts b/examples/basic-crud-application/angular-client/src/app/app.component.spec.ts deleted file mode 100644 index d2e3a2bc4d..0000000000 --- a/examples/basic-crud-application/angular-client/src/app/app.component.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { AppComponent } from './app.component'; - -describe('AppComponent', () => { - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - AppComponent - ], - }).compileComponents(); - }); - - it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app).toBeTruthy(); - }); - - it(`should have as title 'angular-todomvc'`, () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app.title).toEqual('angular-todomvc'); - }); - - it('should render title', () => { - const fixture = TestBed.createComponent(AppComponent); - fixture.detectChanges(); - const compiled = fixture.nativeElement; - expect(compiled.querySelector('.content span').textContent).toContain('angular-todomvc app is running!'); - }); -}); diff --git a/examples/basic-crud-application/angular-client/src/app/app.component.ts b/examples/basic-crud-application/angular-client/src/app/app.component.ts deleted file mode 100644 index a5857b4d58..0000000000 --- a/examples/basic-crud-application/angular-client/src/app/app.component.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Component } from '@angular/core'; -import { TodoStore, Todo } from './store'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent { - todoStore: TodoStore; - newTodoText = ''; - - constructor(todoStore: TodoStore) { - this.todoStore = todoStore; - } - - stopEditing(todo: Todo, editedTitle: string) { - todo.title = editedTitle; - todo.editing = false; - } - - cancelEditingTodo(todo: Todo) { - todo.editing = false; - } - - updateEditingTodo(todo: Todo, editedTitle: string) { - editedTitle = editedTitle.trim(); - todo.editing = false; - - if (editedTitle.length === 0) { - return this.todoStore.remove(todo); - } - - todo.title = editedTitle; - } - - editTodo(todo: Todo) { - todo.editing = true; - } - - removeCompleted() { - this.todoStore.removeCompleted(); - } - - toggleCompletion(todo: Todo) { - this.todoStore.toggleCompletion(todo); - } - - remove(todo: Todo){ - this.todoStore.remove(todo); - } - - addTodo() { - if (this.newTodoText.trim().length) { - this.todoStore.add(this.newTodoText); - this.newTodoText = ''; - } - } -} diff --git a/examples/basic-crud-application/angular-client/src/app/app.module.ts b/examples/basic-crud-application/angular-client/src/app/app.module.ts deleted file mode 100644 index c4395c0b59..0000000000 --- a/examples/basic-crud-application/angular-client/src/app/app.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { NgModule } from '@angular/core'; - -import { AppComponent } from './app.component'; -import { TodoStore } from './store'; -import { FormsModule } from "@angular/forms"; - -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ - BrowserModule, - FormsModule - ], - providers: [TodoStore], - bootstrap: [AppComponent] -}) -export class AppModule { } diff --git a/examples/basic-crud-application/angular-client/src/app/store.ts b/examples/basic-crud-application/angular-client/src/app/store.ts deleted file mode 100644 index 23066e9077..0000000000 --- a/examples/basic-crud-application/angular-client/src/app/store.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { io, Socket } from "socket.io-client"; -import { ClientEvents, ServerEvents } from "../../../server/lib/events"; -import { environment } from '../environments/environment'; - -export interface Todo { - id: string, - title: string, - completed: boolean, - editing: boolean, - synced: boolean -} - -const mapTodo = (todo: any) => { - return { - ...todo, - editing: false, - synced: true - } -} - -export class TodoStore { - public todos: Array = []; - private socket: Socket; - - constructor() { - this.socket = io(environment.serverUrl); - - this.socket.on("connect", () => { - this.socket.emit("todo:list", (res) => { - if ("error" in res) { - // handle the error - return; - } - this.todos = res.data.map(mapTodo); - }); - }); - - this.socket.on("todo:created", (todo) => { - this.todos.push(mapTodo(todo)); - }); - - this.socket.on("todo:updated", (todo) => { - const existingTodo = this.todos.find(t => { - return t.id === todo.id - }); - if (existingTodo) { - existingTodo.title = todo.title; - existingTodo.completed = todo.completed; - } - }); - - this.socket.on("todo:deleted", (id) => { - const index = this.todos.findIndex(t => { - return t.id === id - }); - if (index !== -1) { - this.todos.splice(index, 1); - } - }) - } - - private getWithCompleted(completed: boolean) { - return this.todos.filter((todo: Todo) => todo.completed === completed); - } - - allCompleted() { - return this.todos.length === this.getCompleted().length; - } - - setAllTo(completed: boolean) { - this.todos.forEach(todo => { - todo.completed = completed; - todo.synced = false; - this.socket.emit("todo:update", todo, (res) => { - if (res && "error" in res) { - // handle the error - return; - } - todo.synced = true; - }); - }); - } - - removeCompleted() { - this.getCompleted().forEach((todo) => { - this.socket.emit("todo:delete", todo.id, (res) => { - if (res && "error" in res) { - // handle the error - } - }); - }) - this.todos = this.getRemaining(); - } - - getRemaining() { - return this.getWithCompleted(false); - } - - getCompleted() { - return this.getWithCompleted(true); - } - - toggleCompletion(todo: Todo) { - todo.completed = !todo.completed; - todo.synced = false; - this.socket.emit("todo:update", todo, (res) => { - if (res && "error" in res) { - // handle the error - return; - } - todo.synced = true; - }) - } - - remove(todo: Todo) { - this.todos.splice(this.todos.indexOf(todo), 1); - this.socket.emit("todo:delete", todo.id, (res) => { - if (res && "error" in res) { - // handle the error - } - }); - } - - add(title: string) { - this.socket.emit("todo:create", { title, completed: false }, (res) => { - if ("error" in res) { - // handle the error - return; - } - this.todos.push({ - id: res.data, - title, - completed: false, - editing: false, - synced: true - }); - }); - } -} - diff --git a/examples/basic-crud-application/angular-client/src/assets/.gitkeep b/examples/basic-crud-application/angular-client/src/assets/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/examples/basic-crud-application/angular-client/src/environments/environment.prod.ts b/examples/basic-crud-application/angular-client/src/environments/environment.prod.ts deleted file mode 100644 index 825148257c..0000000000 --- a/examples/basic-crud-application/angular-client/src/environments/environment.prod.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const environment = { - production: true, - serverUrl: "https://my-custom-domain.com/" -}; diff --git a/examples/basic-crud-application/angular-client/src/environments/environment.ts b/examples/basic-crud-application/angular-client/src/environments/environment.ts deleted file mode 100644 index 56d9890466..0000000000 --- a/examples/basic-crud-application/angular-client/src/environments/environment.ts +++ /dev/null @@ -1,17 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false, - serverUrl: "http://localhost:3000/" -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/examples/basic-crud-application/angular-client/src/favicon.ico b/examples/basic-crud-application/angular-client/src/favicon.ico deleted file mode 100644 index 997406ad22..0000000000 Binary files a/examples/basic-crud-application/angular-client/src/favicon.ico and /dev/null differ diff --git a/examples/basic-crud-application/angular-client/src/index.html b/examples/basic-crud-application/angular-client/src/index.html deleted file mode 100644 index 6b9657c4fd..0000000000 --- a/examples/basic-crud-application/angular-client/src/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - Angular Todo MVC - - - - - - - - diff --git a/examples/basic-crud-application/angular-client/src/main.ts b/examples/basic-crud-application/angular-client/src/main.ts deleted file mode 100644 index c7b673cf44..0000000000 --- a/examples/basic-crud-application/angular-client/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/examples/basic-crud-application/angular-client/src/polyfills.ts b/examples/basic-crud-application/angular-client/src/polyfills.ts deleted file mode 100644 index 9b8f300ef6..0000000000 --- a/examples/basic-crud-application/angular-client/src/polyfills.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js/dist/zone'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/examples/basic-crud-application/angular-client/src/styles.css b/examples/basic-crud-application/angular-client/src/styles.css deleted file mode 100644 index dcc6df18f7..0000000000 --- a/examples/basic-crud-application/angular-client/src/styles.css +++ /dev/null @@ -1,381 +0,0 @@ -/* imported from node_modules/todomvc-app-css/index.css */ -html, -body { - margin: 0; - padding: 0; -} - -button { - margin: 0; - padding: 0; - border: 0; - background: none; - font-size: 100%; - vertical-align: baseline; - font-family: inherit; - font-weight: inherit; - color: inherit; - -webkit-appearance: none; - appearance: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -body { - font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; - line-height: 1.4em; - background: #f5f5f5; - color: #111111; - min-width: 230px; - max-width: 550px; - margin: 0 auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 300; -} - -:focus { - outline: 0; -} - -.hidden { - display: none; -} - -.todoapp { - background: #fff; - margin: 130px 0 40px 0; - position: relative; - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), - 0 25px 50px 0 rgba(0, 0, 0, 0.1); -} - -.todoapp input::-webkit-input-placeholder { - font-style: italic; - font-weight: 300; - color: rgba(0, 0, 0, 0.4); -} - -.todoapp input::-moz-placeholder { - font-style: italic; - font-weight: 300; - color: rgba(0, 0, 0, 0.4); -} - -.todoapp input::input-placeholder { - font-style: italic; - font-weight: 300; - color: rgba(0, 0, 0, 0.4); -} - -.todoapp h1 { - position: absolute; - top: -140px; - width: 100%; - font-size: 80px; - font-weight: 200; - text-align: center; - color: #b83f45; - -webkit-text-rendering: optimizeLegibility; - -moz-text-rendering: optimizeLegibility; - text-rendering: optimizeLegibility; -} - -.new-todo, -.edit { - position: relative; - margin: 0; - width: 100%; - font-size: 24px; - font-family: inherit; - font-weight: inherit; - line-height: 1.4em; - color: inherit; - padding: 6px; - border: 1px solid #999; - box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); - box-sizing: border-box; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.new-todo { - padding: 16px 16px 16px 60px; - border: none; - background: rgba(0, 0, 0, 0.003); - box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03); -} - -.main { - position: relative; - z-index: 2; - border-top: 1px solid #e6e6e6; -} - -.toggle-all { - width: 1px; - height: 1px; - border: none; /* Mobile Safari */ - opacity: 0; - position: absolute; - right: 100%; - bottom: 100%; -} - -.toggle-all + label { - width: 60px; - height: 34px; - font-size: 0; - position: absolute; - top: -52px; - left: -13px; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); -} - -.toggle-all + label:before { - content: '❯'; - font-size: 22px; - color: #e6e6e6; - padding: 10px 27px 10px 27px; -} - -.toggle-all:checked + label:before { - color: #737373; -} - -.todo-list { - margin: 0; - padding: 0; - list-style: none; -} - -.todo-list li { - position: relative; - font-size: 24px; - border-bottom: 1px solid #ededed; -} - -.todo-list li:last-child { - border-bottom: none; -} - -.todo-list li.editing { - border-bottom: none; - padding: 0; -} - -.todo-list li.editing .edit { - display: block; - width: calc(100% - 43px); - padding: 12px 16px; - margin: 0 0 0 43px; -} - -.todo-list li.editing .view { - display: none; -} - -.todo-list li .toggle { - text-align: center; - width: 40px; - /* auto, since non-WebKit browsers doesn't support input styling */ - height: auto; - position: absolute; - top: 0; - bottom: 0; - margin: auto 0; - border: none; /* Mobile Safari */ - -webkit-appearance: none; - appearance: none; -} - -.todo-list li .toggle { - opacity: 0; -} - -.todo-list li .toggle + label { - /* - Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 - IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ - */ - background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E'); - background-repeat: no-repeat; - background-position: center left; -} - -.todo-list li .toggle:checked + label { - background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E'); -} - -.todo-list li label { - word-break: break-all; - padding: 15px 15px 15px 60px; - display: block; - line-height: 1.2; - transition: color 0.4s; - font-weight: 400; - color: #4d4d4d; -} - -.todo-list li.completed label { - color: #cdcdcd; - text-decoration: line-through; -} - -.todo-list li .destroy { - display: none; - position: absolute; - top: 0; - right: 10px; - bottom: 0; - width: 40px; - height: 40px; - margin: auto 0; - font-size: 30px; - color: #cc9a9a; - margin-bottom: 11px; - transition: color 0.2s ease-out; -} - -.todo-list li .destroy:hover { - color: #af5b5e; -} - -.todo-list li .destroy:after { - content: '×'; -} - -.todo-list li:hover .destroy { - display: block; -} - -.todo-list li .edit { - display: none; -} - -.todo-list li.editing:last-child { - margin-bottom: -1px; -} - -.footer { - padding: 10px 15px; - height: 20px; - text-align: center; - font-size: 15px; - border-top: 1px solid #e6e6e6; -} - -.footer:before { - content: ''; - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 50px; - overflow: hidden; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), - 0 8px 0 -3px #f6f6f6, - 0 9px 1px -3px rgba(0, 0, 0, 0.2), - 0 16px 0 -6px #f6f6f6, - 0 17px 2px -6px rgba(0, 0, 0, 0.2); -} - -.todo-count { - float: left; - text-align: left; -} - -.todo-count strong { - font-weight: 300; -} - -.filters { - margin: 0; - padding: 0; - list-style: none; - position: absolute; - right: 0; - left: 0; -} - -.filters li { - display: inline; -} - -.filters li a { - color: inherit; - margin: 3px; - padding: 3px 7px; - text-decoration: none; - border: 1px solid transparent; - border-radius: 3px; -} - -.filters li a:hover { - border-color: rgba(175, 47, 47, 0.1); -} - -.filters li a.selected { - border-color: rgba(175, 47, 47, 0.2); -} - -.clear-completed, -html .clear-completed:active { - float: right; - position: relative; - line-height: 20px; - text-decoration: none; - cursor: pointer; -} - -.clear-completed:hover { - text-decoration: underline; -} - -.info { - margin: 65px auto 0; - color: #4d4d4d; - font-size: 11px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-align: center; -} - -.info p { - line-height: 1; -} - -.info a { - color: inherit; - text-decoration: none; - font-weight: 400; -} - -.info a:hover { - text-decoration: underline; -} - -/* - Hack to remove background from Mobile Safari. - Can't use it globally since it destroys checkboxes in Firefox -*/ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .toggle-all, - .todo-list li .toggle { - background: none; - } - - .todo-list li .toggle { - height: 40px; - } -} - -@media (max-width: 430px) { - .footer { - height: 50px; - } - - .filters { - bottom: 10px; - } -} diff --git a/examples/basic-crud-application/angular-client/src/test.ts b/examples/basic-crud-application/angular-client/src/test.ts deleted file mode 100644 index 50193eb0f2..0000000000 --- a/examples/basic-crud-application/angular-client/src/test.ts +++ /dev/null @@ -1,25 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - keys(): string[]; - (id: string): T; - }; -}; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/examples/basic-crud-application/angular-client/tsconfig.app.json b/examples/basic-crud-application/angular-client/tsconfig.app.json deleted file mode 100644 index 82d91dc4a4..0000000000 --- a/examples/basic-crud-application/angular-client/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/examples/basic-crud-application/angular-client/tsconfig.json b/examples/basic-crud-application/angular-client/tsconfig.json deleted file mode 100644 index d3c1011aa5..0000000000 --- a/examples/basic-crud-application/angular-client/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2015", - "module": "es2020", - "lib": [ - "es2018", - "dom" - ] - }, - "angularCompilerOptions": { - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/examples/basic-crud-application/angular-client/tsconfig.spec.json b/examples/basic-crud-application/angular-client/tsconfig.spec.json deleted file mode 100644 index 092345b02e..0000000000 --- a/examples/basic-crud-application/angular-client/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/examples/basic-crud-application/angular-client/tslint.json b/examples/basic-crud-application/angular-client/tslint.json deleted file mode 100644 index 277c8eba02..0000000000 --- a/examples/basic-crud-application/angular-client/tslint.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "extends": "tslint:recommended", - "rulesDirectory": [ - "codelyzer" - ], - "rules": { - "align": { - "options": [ - "parameters", - "statements" - ] - }, - "array-type": false, - "arrow-return-shorthand": true, - "curly": true, - "deprecation": { - "severity": "warning" - }, - "eofline": true, - "import-blacklist": [ - true, - "rxjs/Rx" - ], - "import-spacing": true, - "indent": { - "options": [ - "spaces" - ] - }, - "max-classes-per-file": false, - "max-line-length": [ - true, - 140 - ], - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-empty": false, - "no-inferrable-types": [ - true, - "ignore-params" - ], - "no-non-null-assertion": true, - "no-redundant-jsdoc": true, - "no-switch-case-fall-through": true, - "no-var-requires": false, - "object-literal-key-quotes": [ - true, - "as-needed" - ], - "quotemark": [ - true, - "single" - ], - "semicolon": { - "options": [ - "always" - ] - }, - "space-before-function-paren": { - "options": { - "anonymous": "never", - "asyncArrow": "always", - "constructor": "never", - "method": "never", - "named": "never" - } - }, - "typedef": [ - true, - "call-signature" - ], - "typedef-whitespace": { - "options": [ - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ] - }, - "variable-name": { - "options": [ - "ban-keywords", - "check-format", - "allow-pascal-case" - ] - }, - "whitespace": { - "options": [ - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type", - "check-typecast" - ] - }, - "component-class-suffix": true, - "contextual-lifecycle": true, - "directive-class-suffix": true, - "no-conflicting-lifecycle": true, - "no-host-metadata-property": true, - "no-input-rename": true, - "no-inputs-metadata-property": true, - "no-output-native": true, - "no-output-on-prefix": true, - "no-output-rename": true, - "no-outputs-metadata-property": true, - "template-banana-in-box": true, - "template-no-negated-async": true, - "use-lifecycle-interface": true, - "use-pipe-transform-interface": true, - "directive-selector": [ - true, - "attribute", - "app", - "camelCase" - ], - "component-selector": [ - true, - "element", - "app", - "kebab-case" - ] - } -} diff --git a/examples/basic-crud-application/server/lib/app.ts b/examples/basic-crud-application/server/lib/app.ts deleted file mode 100644 index a3937122bf..0000000000 --- a/examples/basic-crud-application/server/lib/app.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Server as HttpServer } from "http"; -import { Server, ServerOptions } from "socket.io"; -import { ClientEvents, ServerEvents } from "./events"; -import { TodoRepository } from "./todo-management/todo.repository"; -import createTodoHandlers from "./todo-management/todo.handlers"; - -export interface Components { - todoRepository: TodoRepository; -} - -export function createApplication( - httpServer: HttpServer, - components: Components, - serverOptions: Partial = {} -): Server { - const io = new Server(httpServer, serverOptions); - - const { - createTodo, - readTodo, - updateTodo, - deleteTodo, - listTodo, - } = createTodoHandlers(components); - - io.on("connection", (socket) => { - socket.on("todo:create", createTodo); - socket.on("todo:read", readTodo); - socket.on("todo:update", updateTodo); - socket.on("todo:delete", deleteTodo); - socket.on("todo:list", listTodo); - }); - - return io; -} diff --git a/examples/basic-crud-application/server/lib/events.ts b/examples/basic-crud-application/server/lib/events.ts deleted file mode 100644 index 085c1cb5da..0000000000 --- a/examples/basic-crud-application/server/lib/events.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Todo, TodoID } from "./todo-management/todo.repository"; -import { ValidationErrorItem } from "joi"; - -interface Error { - error: string; - errorDetails?: ValidationErrorItem[]; -} - -interface Success { - data: T; -} - -export type Response = Error | Success; - -export interface ServerEvents { - "todo:created": (todo: Todo) => void; - "todo:updated": (todo: Todo) => void; - "todo:deleted": (id: TodoID) => void; -} - -export interface ClientEvents { - "todo:list": (callback: (res: Response) => void) => void; - - "todo:create": ( - payload: Omit, - callback: (res: Response) => void - ) => void; - - "todo:read": (id: TodoID, callback: (res: Response) => void) => void; - - "todo:update": ( - payload: Todo, - callback: (res?: Response) => void - ) => void; - - "todo:delete": (id: TodoID, callback: (res?: Response) => void) => void; -} diff --git a/examples/basic-crud-application/server/lib/index.ts b/examples/basic-crud-application/server/lib/index.ts deleted file mode 100644 index 06107e06d1..0000000000 --- a/examples/basic-crud-application/server/lib/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { createServer } from "http"; -import { createApplication } from "./app"; -import { InMemoryTodoRepository } from "./todo-management/todo.repository"; - -const httpServer = createServer(); - -createApplication( - httpServer, - { - todoRepository: new InMemoryTodoRepository(), - }, - { - cors: { - origin: ["http://localhost:4200/"], - }, - } -); - -httpServer.listen(3000); diff --git a/examples/basic-crud-application/server/lib/todo-management/todo.handlers.ts b/examples/basic-crud-application/server/lib/todo-management/todo.handlers.ts deleted file mode 100644 index 711c5c11cd..0000000000 --- a/examples/basic-crud-application/server/lib/todo-management/todo.handlers.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { Errors, mapErrorDetails, sanitizeErrorMessage } from "../util"; -import { v4 as uuid } from "uuid"; -import { Components } from "../app"; -import Joi = require("joi"); -import { Todo, TodoID } from "./todo.repository"; -import { ClientEvents, Response, ServerEvents } from "../events"; -import { Socket } from "socket.io"; - -const idSchema = Joi.string().guid({ - version: "uuidv4", -}); - -const todoSchema = Joi.object({ - id: idSchema.alter({ - create: (schema) => schema.forbidden(), - update: (schema) => schema.required(), - }), - title: Joi.string().max(256).required(), - completed: Joi.boolean().required(), -}); - -export default function (components: Components) { - const { todoRepository } = components; - return { - createTodo: async function ( - payload: Omit, - callback: (res: Response) => void - ) { - // @ts-ignore - const socket: Socket = this; - - // validate the payload - const { error, value } = todoSchema.tailor("create").validate(payload, { - abortEarly: false, - stripUnknown: true, - }); - - if (error) { - return callback({ - error: Errors.INVALID_PAYLOAD, - errorDetails: mapErrorDetails(error.details), - }); - } - - value.id = uuid(); - - // persist the entity - try { - await todoRepository.save(value); - } catch (e) { - return callback({ - error: sanitizeErrorMessage(e), - }); - } - - // acknowledge the creation - callback({ - data: value.id, - }); - - // notify the other users - socket.broadcast.emit("todo:created", value); - }, - - readTodo: async function ( - id: TodoID, - callback: (res: Response) => void - ) { - const { error } = idSchema.validate(id); - - if (error) { - return callback({ - error: Errors.ENTITY_NOT_FOUND, - }); - } - - try { - const todo = await todoRepository.findById(id); - callback({ - data: todo, - }); - } catch (e) { - callback({ - error: sanitizeErrorMessage(e), - }); - } - }, - - updateTodo: async function ( - payload: Todo, - callback: (res?: Response) => void - ) { - // @ts-ignore - const socket: Socket = this; - - const { error, value } = todoSchema.tailor("update").validate(payload, { - abortEarly: false, - stripUnknown: true, - }); - - if (error) { - return callback({ - error: Errors.INVALID_PAYLOAD, - errorDetails: mapErrorDetails(error.details), - }); - } - - try { - await todoRepository.save(value); - } catch (e) { - return callback({ - error: sanitizeErrorMessage(e), - }); - } - - callback(); - socket.broadcast.emit("todo:updated", value); - }, - - deleteTodo: async function ( - id: TodoID, - callback: (res?: Response) => void - ) { - // @ts-ignore - const socket: Socket = this; - - const { error } = idSchema.validate(id); - - if (error) { - return callback({ - error: Errors.ENTITY_NOT_FOUND, - }); - } - - try { - await todoRepository.deleteById(id); - } catch (e) { - return callback({ - error: sanitizeErrorMessage(e), - }); - } - - callback(); - socket.broadcast.emit("todo:deleted", id); - }, - - listTodo: async function (callback: (res: Response) => void) { - try { - callback({ - data: await todoRepository.findAll(), - }); - } catch (e) { - callback({ - error: sanitizeErrorMessage(e), - }); - } - }, - }; -} diff --git a/examples/basic-crud-application/server/lib/todo-management/todo.repository.ts b/examples/basic-crud-application/server/lib/todo-management/todo.repository.ts deleted file mode 100644 index c3e3e83e7f..0000000000 --- a/examples/basic-crud-application/server/lib/todo-management/todo.repository.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Errors } from "../util"; - -abstract class CrudRepository { - abstract findAll(): Promise; - abstract findById(id: ID): Promise; - abstract save(entity: T): Promise; - abstract deleteById(id: ID): Promise; -} - -export type TodoID = string; - -export interface Todo { - id: TodoID; - completed: boolean; - title: string; -} - -export abstract class TodoRepository extends CrudRepository {} - -export class InMemoryTodoRepository extends TodoRepository { - private readonly todos: Map = new Map(); - - findAll(): Promise { - const entities = Array.from(this.todos.values()); - return Promise.resolve(entities); - } - - findById(id: TodoID): Promise { - if (this.todos.has(id)) { - return Promise.resolve(this.todos.get(id)!); - } else { - return Promise.reject(Errors.ENTITY_NOT_FOUND); - } - } - - save(entity: Todo): Promise { - this.todos.set(entity.id, entity); - return Promise.resolve(); - } - - deleteById(id: TodoID): Promise { - const deleted = this.todos.delete(id); - if (deleted) { - return Promise.resolve(); - } else { - return Promise.reject(Errors.ENTITY_NOT_FOUND); - } - } -} diff --git a/examples/basic-crud-application/server/lib/util.ts b/examples/basic-crud-application/server/lib/util.ts deleted file mode 100644 index e329b32004..0000000000 --- a/examples/basic-crud-application/server/lib/util.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ValidationErrorItem } from "joi"; - -export enum Errors { - ENTITY_NOT_FOUND = "entity not found", - INVALID_PAYLOAD = "invalid payload", -} - -const errorValues: string[] = Object.values(Errors); - -export function sanitizeErrorMessage(message: any) { - if (typeof message === "string" && errorValues.includes(message)) { - return message; - } else { - return "an unknown error has occurred"; - } -} - -export function mapErrorDetails(details: ValidationErrorItem[]) { - return details.map((item) => ({ - message: item.message, - path: item.path, - type: item.type, - })); -} diff --git a/examples/basic-crud-application/server/package.json b/examples/basic-crud-application/server/package.json deleted file mode 100644 index d7573ff77c..0000000000 --- a/examples/basic-crud-application/server/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "basic-crud-server", - "version": "0.0.1", - "description": "Server for the Basic CRUD Socket.IO example", - "main": "dist/lib/index.js", - "scripts": { - "start": "ts-node lib/index.ts", - "build": "tsc", - "test": "nyc mocha --require ts-node/register test/**/*.ts" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/socketio/socket.io.git" - }, - "author": "Damien Arrachequesne ", - "license": "MIT", - "bugs": { - "url": "https://github.com/socketio/socket.io/issues" - }, - "homepage": "https://github.com/socketio/socket.io#readme", - "dependencies": { - "joi": "^17.4.0", - "socket.io": "^4.0.1", - "uuid": "^8.3.2" - }, - "devDependencies": { - "@types/mocha": "^8.2.3", - "@types/chai": "^4.2.16", - "@types/uuid": "^8.3.0", - "chai": "^4.3.4", - "mocha": "^8.3.2", - "nyc": "^15.1.0", - "socket.io-client": "^4.0.1", - "ts-node": "^9.1.1", - "typescript": "^4.2.4" - } -} diff --git a/examples/basic-crud-application/server/test/todo-management/todo.tests.ts b/examples/basic-crud-application/server/test/todo-management/todo.tests.ts deleted file mode 100644 index 18a91cd012..0000000000 --- a/examples/basic-crud-application/server/test/todo-management/todo.tests.ts +++ /dev/null @@ -1,309 +0,0 @@ -import { createApplication } from "../../lib/app"; -import { createServer, Server } from "http"; -import { - InMemoryTodoRepository, - TodoRepository, -} from "../../lib/todo-management/todo.repository"; -import { AddressInfo } from "net"; -import { io, Socket } from "socket.io-client"; -import { ClientEvents, ServerEvents } from "../../lib/events"; -import { expect } from "chai"; - -const createPartialDone = (count: number, done: () => void) => { - let i = 0; - return () => { - if (++i === count) { - done(); - } - }; -}; - -describe("todo management", () => { - let httpServer: Server, - socket: Socket, - otherSocket: Socket, - todoRepository: TodoRepository; - - beforeEach((done) => { - const partialDone = createPartialDone(2, done); - - httpServer = createServer(); - todoRepository = new InMemoryTodoRepository(); - - createApplication(httpServer, { - todoRepository, - }); - - httpServer.listen(() => { - const port = (httpServer.address() as AddressInfo).port; - socket = io(`http://localhost:${port}`); - socket.on("connect", partialDone); - - otherSocket = io(`http://localhost:${port}`); - otherSocket.on("connect", partialDone); - }); - }); - - afterEach(() => { - httpServer.close(); - socket.disconnect(); - otherSocket.disconnect(); - }); - - describe("create todo", () => { - it("should create a todo entity", (done) => { - const partialDone = createPartialDone(2, done); - - socket.emit( - "todo:create", - { - title: "lorem ipsum", - completed: false, - }, - async (res) => { - if ("error" in res) { - return done(new Error("should not happen")); - } - expect(res.data).to.be.a("string"); - - const storedEntity = await todoRepository.findById(res.data); - expect(storedEntity).to.eql({ - id: res.data, - title: "lorem ipsum", - completed: false, - }); - - partialDone(); - } - ); - - otherSocket.on("todo:created", (todo) => { - expect(todo.id).to.be.a("string"); - expect(todo.title).to.eql("lorem ipsum"); - expect(todo.completed).to.eql(false); - partialDone(); - }); - }); - - it("should fail with an invalid entity", (done) => { - const incompleteTodo = { - completed: "false", - description: true, - }; - // @ts-ignore - socket.emit("todo:create", incompleteTodo, (res) => { - if (!("error" in res)) { - return done(new Error("should not happen")); - } - expect(res.error).to.eql("invalid payload"); - expect(res.errorDetails).to.eql([ - { - message: '"title" is required', - path: ["title"], - type: "any.required", - }, - ]); - done(); - }); - - otherSocket.on("todo:created", () => { - done(new Error("should not happen")); - }); - }); - }); - - describe("read todo", () => { - it("should return a todo entity", (done) => { - todoRepository.save({ - id: "254dbf85-f5b9-4675-b913-acab5d600884", - title: "lorem ipsum", - completed: true, - }); - - socket.emit( - "todo:read", - "254dbf85-f5b9-4675-b913-acab5d600884", - (res) => { - if ("error" in res) { - return done(new Error("should not happen")); - } - expect(res.data.id).to.eql("254dbf85-f5b9-4675-b913-acab5d600884"); - expect(res.data.title).to.eql("lorem ipsum"); - expect(res.data.completed).to.eql(true); - done(); - } - ); - }); - - it("should fail with an invalid ID", (done) => { - socket.emit("todo:read", "123", (res) => { - if ("error" in res) { - expect(res.error).to.eql("entity not found"); - done(); - } else { - done(new Error("should not happen")); - } - }); - }); - - it("should fail with an unknown entity", (done) => { - socket.emit( - "todo:read", - "6edcf81e-7049-40e0-8497-9cdd52414f75", - (res) => { - if ("error" in res) { - expect(res.error).to.eql("entity not found"); - done(); - } else { - done(new Error("should not happen")); - } - } - ); - }); - }); - - describe("update todo", () => { - it("should update a todo entity", (done) => { - const partialDone = createPartialDone(2, done); - - todoRepository.save({ - id: "c7790b35-6bbb-45dd-8d67-a281ca407b43", - title: "lorem ipsum", - completed: true, - }); - - socket.emit( - "todo:update", - { - id: "c7790b35-6bbb-45dd-8d67-a281ca407b43", - title: "dolor sit amet", - completed: true, - }, - async () => { - const storedEntity = await todoRepository.findById( - "c7790b35-6bbb-45dd-8d67-a281ca407b43" - ); - expect(storedEntity).to.eql({ - id: "c7790b35-6bbb-45dd-8d67-a281ca407b43", - title: "dolor sit amet", - completed: true, - }); - partialDone(); - } - ); - - otherSocket.on("todo:updated", (todo) => { - expect(todo.title).to.eql("dolor sit amet"); - expect(todo.completed).to.eql(true); - partialDone(); - }); - }); - - it("should fail with an invalid entity", (done) => { - const incompleteTodo = { - id: "123", - completed: "false", - description: true, - }; - // @ts-ignore - socket.emit("todo:update", incompleteTodo, (res) => { - if (!(res && "error" in res)) { - return done(new Error("should not happen")); - } - expect(res.error).to.eql("invalid payload"); - expect(res.errorDetails).to.eql([ - { - message: '"id" must be a valid GUID', - path: ["id"], - type: "string.guid", - }, - { - message: '"title" is required', - path: ["title"], - type: "any.required", - }, - ]); - done(); - }); - - otherSocket.on("todo:updated", () => { - done(new Error("should not happen")); - }); - }); - }); - - describe("delete todo", () => { - it("should delete a todo entity", (done) => { - const partialDone = createPartialDone(2, done); - const id = "58960ab2-4e78-4ced-8079-134f12179d46"; - - todoRepository.save({ - id, - title: "lorem ipsum", - completed: true, - }); - - socket.emit("todo:delete", id, async () => { - try { - await todoRepository.findById(id); - } catch (e) { - partialDone(); - } - }); - - otherSocket.on("todo:deleted", (id) => { - expect(id).to.eql("58960ab2-4e78-4ced-8079-134f12179d46"); - partialDone(); - }); - }); - - it("should fail with an invalid ID", (done) => { - socket.emit("todo:delete", "123", (res) => { - if (!(res && "error" in res)) { - return done(new Error("should not happen")); - } - expect(res.error).to.eql("entity not found"); - done(); - }); - - otherSocket.on("todo:deleted", () => { - done(new Error("should not happen")); - }); - }); - }); - - describe("list todo", () => { - it("should return a list of entities", (done) => { - todoRepository.save({ - id: "d445db6d-9d55-4ff2-88ae-bd1f81c299d2", - title: "lorem ipsum", - completed: false, - }); - - todoRepository.save({ - id: "5f56fb59-a887-4984-93bf-eb39b4170a35", - title: "dolor sit amet", - completed: true, - }); - - socket.emit("todo:list", (res) => { - if ("error" in res) { - return done(new Error("should not happen")); - } - expect(res.data).to.eql([ - { - id: "d445db6d-9d55-4ff2-88ae-bd1f81c299d2", - title: "lorem ipsum", - completed: false, - }, - { - id: "5f56fb59-a887-4984-93bf-eb39b4170a35", - title: "dolor sit amet", - completed: true, - }, - ]); - done(); - }); - }); - }); -}); diff --git a/examples/basic-crud-application/server/tsconfig.json b/examples/basic-crud-application/server/tsconfig.json deleted file mode 100644 index 9f5d4c1b83..0000000000 --- a/examples/basic-crud-application/server/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist", - "module": "commonjs", - "target": "es2017", - "strict": true - }, - "include": [ - "./lib/**/*" - ] -} diff --git a/examples/chat/README.md b/examples/chat/README.md deleted file mode 100644 index f605c2d66c..0000000000 --- a/examples/chat/README.md +++ /dev/null @@ -1,22 +0,0 @@ - -# Socket.IO Chat - -A simple chat demo for Socket.IO - -## How to use - -``` -$ npm i -$ npm start -``` - -And point your browser to `http://localhost:3000`. Optionally, specify -a port by supplying the `PORT` env variable. - -## Features - -- Multiple users can join a chat room by each entering a unique username -on website load. -- Users can type chat messages to the chat room. -- A notification is sent to all users when a user joins or leaves -the chatroom. diff --git a/examples/chat/index.js b/examples/chat/index.js deleted file mode 100644 index 74d0d96d7a..0000000000 --- a/examples/chat/index.js +++ /dev/null @@ -1,76 +0,0 @@ -// Setup basic express server -const express = require('express'); -const app = express(); -const path = require('path'); -const server = require('http').createServer(app); -const io = require('socket.io')(server); -const port = process.env.PORT || 3000; - -server.listen(port, () => { - console.log('Server listening at port %d', port); -}); - -// Routing -app.use(express.static(path.join(__dirname, 'public'))); - -// Chatroom - -let numUsers = 0; - -io.on('connection', (socket) => { - let addedUser = false; - - // when the client emits 'new message', this listens and executes - socket.on('new message', (data) => { - // we tell the client to execute 'new message' - socket.broadcast.emit('new message', { - username: socket.username, - message: data - }); - }); - - // when the client emits 'add user', this listens and executes - socket.on('add user', (username) => { - if (addedUser) return; - - // we store the username in the socket session for this client - socket.username = username; - ++numUsers; - addedUser = true; - socket.emit('login', { - numUsers: numUsers - }); - // echo globally (all clients) that a person has connected - socket.broadcast.emit('user joined', { - username: socket.username, - numUsers: numUsers - }); - }); - - // when the client emits 'typing', we broadcast it to others - socket.on('typing', () => { - socket.broadcast.emit('typing', { - username: socket.username - }); - }); - - // when the client emits 'stop typing', we broadcast it to others - socket.on('stop typing', () => { - socket.broadcast.emit('stop typing', { - username: socket.username - }); - }); - - // when the user disconnects.. perform this - socket.on('disconnect', () => { - if (addedUser) { - --numUsers; - - // echo globally that this client has left - socket.broadcast.emit('user left', { - username: socket.username, - numUsers: numUsers - }); - } - }); -}); diff --git a/examples/chat/package.json b/examples/chat/package.json deleted file mode 100644 index 33b2f3bbf3..0000000000 --- a/examples/chat/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "socket.io-chat", - "version": "0.0.0", - "description": "A simple chat client using socket.io", - "main": "index.js", - "author": "Grant Timmerman", - "private": true, - "license": "BSD", - "dependencies": { - "express": "~4.17.1", - "socket.io": "^4.0.0" - }, - "scripts": { - "start": "node index.js" - } -} diff --git a/examples/chat/public/index.html b/examples/chat/public/index.html deleted file mode 100644 index 9b2043d73f..0000000000 --- a/examples/chat/public/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Socket.IO Chat Example - - - -
    -
  • -
    -
      -
      - -
    • - -
    - - - - - - \ No newline at end of file diff --git a/examples/chat/public/main.js b/examples/chat/public/main.js deleted file mode 100644 index a32cd3d315..0000000000 --- a/examples/chat/public/main.js +++ /dev/null @@ -1,278 +0,0 @@ -$(function() { - const FADE_TIME = 150; // ms - const TYPING_TIMER_LENGTH = 400; // ms - const COLORS = [ - '#e21400', '#91580f', '#f8a700', '#f78b00', - '#58dc00', '#287b00', '#a8f07a', '#4ae8c4', - '#3b88eb', '#3824aa', '#a700ff', '#d300e7' - ]; - - // Initialize variables - const $window = $(window); - const $usernameInput = $('.usernameInput'); // Input for username - const $messages = $('.messages'); // Messages area - const $inputMessage = $('.inputMessage'); // Input message input box - - const $loginPage = $('.login.page'); // The login page - const $chatPage = $('.chat.page'); // The chatroom page - - const socket = io(); - - // Prompt for setting a username - let username; - let connected = false; - let typing = false; - let lastTypingTime; - let $currentInput = $usernameInput.focus(); - - const addParticipantsMessage = (data) => { - let message = ''; - if (data.numUsers === 1) { - message += `there's 1 participant`; - } else { - message += `there are ${data.numUsers} participants`; - } - log(message); - } - - // Sets the client's username - const setUsername = () => { - username = cleanInput($usernameInput.val().trim()); - - // If the username is valid - if (username) { - $loginPage.fadeOut(); - $chatPage.show(); - $loginPage.off('click'); - $currentInput = $inputMessage.focus(); - - // Tell the server your username - socket.emit('add user', username); - } - } - - // Sends a chat message - const sendMessage = () => { - let message = $inputMessage.val(); - // Prevent markup from being injected into the message - message = cleanInput(message); - // if there is a non-empty message and a socket connection - if (message && connected) { - $inputMessage.val(''); - addChatMessage({ username, message }); - // tell server to execute 'new message' and send along one parameter - socket.emit('new message', message); - } - } - - // Log a message - const log = (message, options) => { - const $el = $('
  • ').addClass('log').text(message); - addMessageElement($el, options); - } - - // Adds the visual chat message to the message list - const addChatMessage = (data, options = {}) => { - // Don't fade the message in if there is an 'X was typing' - const $typingMessages = getTypingMessages(data); - if ($typingMessages.length !== 0) { - options.fade = false; - $typingMessages.remove(); - } - - const $usernameDiv = $('') - .text(data.username) - .css('color', getUsernameColor(data.username)); - const $messageBodyDiv = $('') - .text(data.message); - - const typingClass = data.typing ? 'typing' : ''; - const $messageDiv = $('
  • ') - .data('username', data.username) - .addClass(typingClass) - .append($usernameDiv, $messageBodyDiv); - - addMessageElement($messageDiv, options); - } - - // Adds the visual chat typing message - const addChatTyping = (data) => { - data.typing = true; - data.message = 'is typing'; - addChatMessage(data); - } - - // Removes the visual chat typing message - const removeChatTyping = (data) => { - getTypingMessages(data).fadeOut(function () { - $(this).remove(); - }); - } - - // Adds a message element to the messages and scrolls to the bottom - // el - The element to add as a message - // options.fade - If the element should fade-in (default = true) - // options.prepend - If the element should prepend - // all other messages (default = false) - const addMessageElement = (el, options) => { - const $el = $(el); - // Setup default options - if (!options) { - options = {}; - } - if (typeof options.fade === 'undefined') { - options.fade = true; - } - if (typeof options.prepend === 'undefined') { - options.prepend = false; - } - - // Apply options - if (options.fade) { - $el.hide().fadeIn(FADE_TIME); - } - if (options.prepend) { - $messages.prepend($el); - } else { - $messages.append($el); - } - - $messages[0].scrollTop = $messages[0].scrollHeight; - } - - // Prevents input from having injected markup - const cleanInput = (input) => { - return $('
    ').text(input).html(); - } - - // Updates the typing event - const updateTyping = () => { - if (connected) { - if (!typing) { - typing = true; - socket.emit('typing'); - } - lastTypingTime = (new Date()).getTime(); - - setTimeout(() => { - const typingTimer = (new Date()).getTime(); - const timeDiff = typingTimer - lastTypingTime; - if (timeDiff >= TYPING_TIMER_LENGTH && typing) { - socket.emit('stop typing'); - typing = false; - } - }, TYPING_TIMER_LENGTH); - } - } - - // Gets the 'X is typing' messages of a user - const getTypingMessages = (data) => { - return $('.typing.message').filter(function (i) { - return $(this).data('username') === data.username; - }); - } - - // Gets the color of a username through our hash function - const getUsernameColor = (username) => { - // Compute hash code - let hash = 7; - for (let i = 0; i < username.length; i++) { - hash = username.charCodeAt(i) + (hash << 5) - hash; - } - // Calculate color - const index = Math.abs(hash % COLORS.length); - return COLORS[index]; - } - - // Keyboard events - - $window.keydown(event => { - // Auto-focus the current input when a key is typed - if (!(event.ctrlKey || event.metaKey || event.altKey)) { - $currentInput.focus(); - } - // When the client hits ENTER on their keyboard - if (event.which === 13) { - if (username) { - sendMessage(); - socket.emit('stop typing'); - typing = false; - } else { - setUsername(); - } - } - }); - - $inputMessage.on('input', () => { - updateTyping(); - }); - - // Click events - - // Focus input when clicking anywhere on login page - $loginPage.click(() => { - $currentInput.focus(); - }); - - // Focus input when clicking on the message input's border - $inputMessage.click(() => { - $inputMessage.focus(); - }); - - // Socket events - - // Whenever the server emits 'login', log the login message - socket.on('login', (data) => { - connected = true; - // Display the welcome message - const message = 'Welcome to Socket.IO Chat – '; - log(message, { - prepend: true - }); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'new message', update the chat body - socket.on('new message', (data) => { - addChatMessage(data); - }); - - // Whenever the server emits 'user joined', log it in the chat body - socket.on('user joined', (data) => { - log(`${data.username} joined`); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'user left', log it in the chat body - socket.on('user left', (data) => { - log(`${data.username} left`); - addParticipantsMessage(data); - removeChatTyping(data); - }); - - // Whenever the server emits 'typing', show the typing message - socket.on('typing', (data) => { - addChatTyping(data); - }); - - // Whenever the server emits 'stop typing', kill the typing message - socket.on('stop typing', (data) => { - removeChatTyping(data); - }); - - socket.on('disconnect', () => { - log('you have been disconnected'); - }); - - socket.io.on('reconnect', () => { - log('you have been reconnected'); - if (username) { - socket.emit('add user', username); - } - }); - - socket.io.on('reconnect_error', () => { - log('attempt to reconnect has failed'); - }); - -}); diff --git a/examples/chat/public/style.css b/examples/chat/public/style.css deleted file mode 100644 index 3052d88e4c..0000000000 --- a/examples/chat/public/style.css +++ /dev/null @@ -1,149 +0,0 @@ -/* Fix user-agent */ - -* { - box-sizing: border-box; -} - -html { - font-weight: 300; - -webkit-font-smoothing: antialiased; -} - -html, input { - font-family: - "HelveticaNeue-Light", - "Helvetica Neue Light", - "Helvetica Neue", - Helvetica, - Arial, - "Lucida Grande", - sans-serif; -} - -html, body { - height: 100%; - margin: 0; - padding: 0; -} - -ul { - list-style: none; - word-wrap: break-word; -} - -/* Pages */ - -.pages { - height: 100%; - margin: 0; - padding: 0; - width: 100%; -} - -.page { - height: 100%; - position: absolute; - width: 100%; -} - -/* Login Page */ - -.login.page { - background-color: #000; -} - -.login.page .form { - height: 100px; - margin-top: -100px; - position: absolute; - - text-align: center; - top: 50%; - width: 100%; -} - -.login.page .form .usernameInput { - background-color: transparent; - border: none; - border-bottom: 2px solid #fff; - outline: none; - padding-bottom: 15px; - text-align: center; - width: 400px; -} - -.login.page .title { - font-size: 200%; -} - -.login.page .usernameInput { - font-size: 200%; - letter-spacing: 3px; -} - -.login.page .title, .login.page .usernameInput { - color: #fff; - font-weight: 100; -} - -/* Chat page */ - -.chat.page { - display: none; -} - -/* Font */ - -.messages { - font-size: 150%; -} - -.inputMessage { - font-size: 100%; -} - -.log { - color: gray; - font-size: 70%; - margin: 5px; - text-align: center; -} - -/* Messages */ - -.chatArea { - height: 100%; - padding-bottom: 60px; -} - -.messages { - height: 100%; - margin: 0; - overflow-y: scroll; - padding: 10px 20px 10px 20px; -} - -.message.typing .messageBody { - color: gray; -} - -.username { - font-weight: 700; - overflow: hidden; - padding-right: 15px; - text-align: right; -} - -/* Input */ - -.inputMessage { - border: 10px solid #000; - bottom: 0; - height: 60px; - left: 0; - outline: none; - padding-left: 10px; - position: absolute; - right: 0; - width: 100%; -} diff --git a/examples/cluster-haproxy/README.md b/examples/cluster-haproxy/README.md deleted file mode 100644 index ad8959656e..0000000000 --- a/examples/cluster-haproxy/README.md +++ /dev/null @@ -1,31 +0,0 @@ - -# Socket.IO Chat with haproxy & redis - -A simple chat demo for socket.io - -## How to use - -Install [Docker Compose](https://docs.docker.com/compose/install/), then: - -``` -$ docker-compose up -d -``` - -And then point your browser to `http://localhost:3000`. - -This will start four Socket.IO nodes, behind a haproxy instance which will loadbalance the requests (using a cookie for sticky sessions, see [cookie](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-cookie)). - -Each node connects to the redis backend, which will enable to broadcast to every client, no matter which node it is currently connected to. - -``` -# you can kill a given node, the client should reconnect to another node -$ docker-compose stop server-george -``` - -## Features - -- Multiple users can join a chat room by each entering a unique username -on website load. -- Users can type chat messages to the chat room. -- A notification is sent to all users when a user joins or leaves -the chatroom. diff --git a/examples/cluster-haproxy/docker-compose.yml b/examples/cluster-haproxy/docker-compose.yml deleted file mode 100644 index fe5aa4f96b..0000000000 --- a/examples/cluster-haproxy/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ - -haproxy: - build: ./haproxy - links: - - server-john - - server-paul - - server-george - - server-ringo - ports: - - "3000:80" - -server-john: - build: ./server - links: - - redis - expose: - - "3000" - environment: - - NAME=John - -server-paul: - build: ./server - links: - - redis - expose: - - "3000" - environment: - - NAME=Paul - -server-george: - build: ./server - links: - - redis - expose: - - "3000" - environment: - - NAME=George - -server-ringo: - build: ./server - links: - - redis - expose: - - "3000" - environment: - - NAME=Ringo - -redis: - image: redis:alpine - expose: - - "6379" diff --git a/examples/cluster-haproxy/haproxy/Dockerfile b/examples/cluster-haproxy/haproxy/Dockerfile deleted file mode 100644 index 3758e18d24..0000000000 --- a/examples/cluster-haproxy/haproxy/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM haproxy:1.7-alpine -COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg diff --git a/examples/cluster-haproxy/haproxy/haproxy.cfg b/examples/cluster-haproxy/haproxy/haproxy.cfg deleted file mode 100644 index 547afe4441..0000000000 --- a/examples/cluster-haproxy/haproxy/haproxy.cfg +++ /dev/null @@ -1,31 +0,0 @@ -# Reference: http://blog.haproxy.com/2012/11/07/websockets-load-balancing-with-haproxy/ - -global - daemon - maxconn 4096 - nbproc 2 - -defaults - mode http - balance roundrobin - option http-server-close - timeout connect 5s - timeout client 30s - timeout client-fin 30s - timeout server 30s - timeout tunnel 1h - default-server inter 1s rise 2 fall 1 on-marked-down shutdown-sessions - option forwardfor - -listen chat - bind *:80 - default_backend nodes - -backend nodes - option httpchk HEAD /health - http-check expect status 200 - cookie serverid insert - server john server-john:3000 cookie john check - server paul server-paul:3000 cookie paul check - server george server-george:3000 cookie george check - server ringo server-ringo:3000 cookie ringo check diff --git a/examples/cluster-haproxy/server/Dockerfile b/examples/cluster-haproxy/server/Dockerfile deleted file mode 100644 index caccfba307..0000000000 --- a/examples/cluster-haproxy/server/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM node:14-alpine - -# Create app directory -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -# Install app dependencies -COPY package.json /usr/src/app/ -RUN npm install --prod - -# Bundle app source -COPY . /usr/src/app - -EXPOSE 3000 -CMD [ "npm", "start" ] diff --git a/examples/cluster-haproxy/server/index.js b/examples/cluster-haproxy/server/index.js deleted file mode 100644 index c405196c06..0000000000 --- a/examples/cluster-haproxy/server/index.js +++ /dev/null @@ -1,87 +0,0 @@ -// Setup basic express server -var express = require('express'); -var app = express(); -var server = require('http').createServer(app); -var io = require('socket.io')(server); -var redis = require('socket.io-redis'); -var port = process.env.PORT || 3000; -var serverName = process.env.NAME || 'Unknown'; - -io.adapter(redis({ host: 'redis', port: 6379 })); - -server.listen(port, function () { - console.log('Server listening at port %d', port); - console.log('Hello, I\'m %s, how can I help?', serverName); -}); - -// Routing -app.use(express.static(__dirname + '/public')); - -// Health check -app.head('/health', function (req, res) { - res.sendStatus(200); -}); - -// Chatroom - -var numUsers = 0; - -io.on('connection', function (socket) { - socket.emit('my-name-is', serverName); - - var addedUser = false; - - // when the client emits 'new message', this listens and executes - socket.on('new message', function (data) { - // we tell the client to execute 'new message' - socket.broadcast.emit('new message', { - username: socket.username, - message: data - }); - }); - - // when the client emits 'add user', this listens and executes - socket.on('add user', function (username) { - if (addedUser) return; - - // we store the username in the socket session for this client - socket.username = username; - ++numUsers; - addedUser = true; - socket.emit('login', { - numUsers: numUsers - }); - // echo globally (all clients) that a person has connected - socket.broadcast.emit('user joined', { - username: socket.username, - numUsers: numUsers - }); - }); - - // when the client emits 'typing', we broadcast it to others - socket.on('typing', function () { - socket.broadcast.emit('typing', { - username: socket.username - }); - }); - - // when the client emits 'stop typing', we broadcast it to others - socket.on('stop typing', function () { - socket.broadcast.emit('stop typing', { - username: socket.username - }); - }); - - // when the user disconnects.. perform this - socket.on('disconnect', function () { - if (addedUser) { - --numUsers; - - // echo globally that this client has left - socket.broadcast.emit('user left', { - username: socket.username, - numUsers: numUsers - }); - } - }); -}); diff --git a/examples/cluster-haproxy/server/package.json b/examples/cluster-haproxy/server/package.json deleted file mode 100644 index 28bd56feb9..0000000000 --- a/examples/cluster-haproxy/server/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "socket.io-chat", - "version": "0.0.0", - "description": "A simple chat client using socket.io", - "main": "index.js", - "author": "Grant Timmerman", - "private": true, - "license": "BSD", - "dependencies": { - "express": "4.13.4", - "socket.io": "^4.0.0", - "socket.io-redis": "^6.0.1" - }, - "scripts": { - "start": "node index.js" - } -} diff --git a/examples/cluster-haproxy/server/public/index.html b/examples/cluster-haproxy/server/public/index.html deleted file mode 100644 index 9b2043d73f..0000000000 --- a/examples/cluster-haproxy/server/public/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Socket.IO Chat Example - - - -
      -
    • -
      -
        -
        - -
      • - -
      - - - - - - \ No newline at end of file diff --git a/examples/cluster-haproxy/server/public/main.js b/examples/cluster-haproxy/server/public/main.js deleted file mode 100644 index 03b3702c83..0000000000 --- a/examples/cluster-haproxy/server/public/main.js +++ /dev/null @@ -1,286 +0,0 @@ -$(function() { - var FADE_TIME = 150; // ms - var TYPING_TIMER_LENGTH = 400; // ms - var COLORS = [ - '#e21400', '#91580f', '#f8a700', '#f78b00', - '#58dc00', '#287b00', '#a8f07a', '#4ae8c4', - '#3b88eb', '#3824aa', '#a700ff', '#d300e7' - ]; - - // Initialize variables - var $window = $(window); - var $usernameInput = $('.usernameInput'); // Input for username - var $messages = $('.messages'); // Messages area - var $inputMessage = $('.inputMessage'); // Input message input box - - var $loginPage = $('.login.page'); // The login page - var $chatPage = $('.chat.page'); // The chatroom page - - // Prompt for setting a username - var username; - var connected = false; - var typing = false; - var lastTypingTime; - var $currentInput = $usernameInput.focus(); - - var socket = io(); - - function addParticipantsMessage (data) { - var message = ''; - if (data.numUsers === 1) { - message += "there's 1 participant"; - } else { - message += "there are " + data.numUsers + " participants"; - } - log(message); - } - - // Sets the client's username - function setUsername () { - username = cleanInput($usernameInput.val().trim()); - - // If the username is valid - if (username) { - $loginPage.fadeOut(); - $chatPage.show(); - $loginPage.off('click'); - $currentInput = $inputMessage.focus(); - - // Tell the server your username - socket.emit('add user', username); - } - } - - // Sends a chat message - function sendMessage () { - var message = $inputMessage.val(); - // Prevent markup from being injected into the message - message = cleanInput(message); - // if there is a non-empty message and a socket connection - if (message && connected) { - $inputMessage.val(''); - addChatMessage({ - username: username, - message: message - }); - // tell server to execute 'new message' and send along one parameter - socket.emit('new message', message); - } - } - - // Log a message - function log (message, options) { - var $el = $('
    • ').addClass('log').text(message); - addMessageElement($el, options); - } - - // Adds the visual chat message to the message list - function addChatMessage (data, options) { - // Don't fade the message in if there is an 'X was typing' - var $typingMessages = getTypingMessages(data); - options = options || {}; - if ($typingMessages.length !== 0) { - options.fade = false; - $typingMessages.remove(); - } - - var $usernameDiv = $('') - .text(data.username) - .css('color', getUsernameColor(data.username)); - var $messageBodyDiv = $('') - .text(data.message); - - var typingClass = data.typing ? 'typing' : ''; - var $messageDiv = $('
    • ') - .data('username', data.username) - .addClass(typingClass) - .append($usernameDiv, $messageBodyDiv); - - addMessageElement($messageDiv, options); - } - - // Adds the visual chat typing message - function addChatTyping (data) { - data.typing = true; - data.message = 'is typing'; - addChatMessage(data); - } - - // Removes the visual chat typing message - function removeChatTyping (data) { - getTypingMessages(data).fadeOut(function () { - $(this).remove(); - }); - } - - // Adds a message element to the messages and scrolls to the bottom - // el - The element to add as a message - // options.fade - If the element should fade-in (default = true) - // options.prepend - If the element should prepend - // all other messages (default = false) - function addMessageElement (el, options) { - var $el = $(el); - - // Setup default options - if (!options) { - options = {}; - } - if (typeof options.fade === 'undefined') { - options.fade = true; - } - if (typeof options.prepend === 'undefined') { - options.prepend = false; - } - - // Apply options - if (options.fade) { - $el.hide().fadeIn(FADE_TIME); - } - if (options.prepend) { - $messages.prepend($el); - } else { - $messages.append($el); - } - $messages[0].scrollTop = $messages[0].scrollHeight; - } - - // Prevents input from having injected markup - function cleanInput (input) { - return $('
      ').text(input).text(); - } - - // Updates the typing event - function updateTyping () { - if (connected) { - if (!typing) { - typing = true; - socket.emit('typing'); - } - lastTypingTime = (new Date()).getTime(); - - setTimeout(function () { - var typingTimer = (new Date()).getTime(); - var timeDiff = typingTimer - lastTypingTime; - if (timeDiff >= TYPING_TIMER_LENGTH && typing) { - socket.emit('stop typing'); - typing = false; - } - }, TYPING_TIMER_LENGTH); - } - } - - // Gets the 'X is typing' messages of a user - function getTypingMessages (data) { - return $('.typing.message').filter(function (i) { - return $(this).data('username') === data.username; - }); - } - - // Gets the color of a username through our hash function - function getUsernameColor (username) { - // Compute hash code - var hash = 7; - for (var i = 0; i < username.length; i++) { - hash = username.charCodeAt(i) + (hash << 5) - hash; - } - // Calculate color - var index = Math.abs(hash % COLORS.length); - return COLORS[index]; - } - - // Keyboard events - - $window.keydown(function (event) { - // Auto-focus the current input when a key is typed - if (!(event.ctrlKey || event.metaKey || event.altKey)) { - $currentInput.focus(); - } - // When the client hits ENTER on their keyboard - if (event.which === 13) { - if (username) { - sendMessage(); - socket.emit('stop typing'); - typing = false; - } else { - setUsername(); - } - } - }); - - $inputMessage.on('input', function() { - updateTyping(); - }); - - // Click events - - // Focus input when clicking anywhere on login page - $loginPage.click(function () { - $currentInput.focus(); - }); - - // Focus input when clicking on the message input's border - $inputMessage.click(function () { - $inputMessage.focus(); - }); - - // Socket events - - // Whenever the server emits 'login', log the login message - socket.on('login', function (data) { - connected = true; - // Display the welcome message - var message = "Welcome to Socket.IO Chat – "; - log(message, { - prepend: true - }); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'new message', update the chat body - socket.on('new message', function (data) { - addChatMessage(data); - }); - - // Whenever the server emits 'user joined', log it in the chat body - socket.on('user joined', function (data) { - log(data.username + ' joined'); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'user left', log it in the chat body - socket.on('user left', function (data) { - log(data.username + ' left'); - addParticipantsMessage(data); - removeChatTyping(data); - }); - - // Whenever the server emits 'typing', show the typing message - socket.on('typing', function (data) { - addChatTyping(data); - }); - - // Whenever the server emits 'stop typing', kill the typing message - socket.on('stop typing', function (data) { - removeChatTyping(data); - }); - - socket.on('disconnect', function () { - log('you have been disconnected'); - }); - - socket.on('reconnect', function () { - log('you have been reconnected'); - if (username) { - socket.emit('add user', username); - } - }); - - socket.on('reconnect_error', function () { - log('attempt to reconnect has failed'); - }); - - socket.on('my-name-is', function (serverName) { - log('host is now ' + serverName); - }) - -}); diff --git a/examples/cluster-haproxy/server/public/style.css b/examples/cluster-haproxy/server/public/style.css deleted file mode 100644 index 3052d88e4c..0000000000 --- a/examples/cluster-haproxy/server/public/style.css +++ /dev/null @@ -1,149 +0,0 @@ -/* Fix user-agent */ - -* { - box-sizing: border-box; -} - -html { - font-weight: 300; - -webkit-font-smoothing: antialiased; -} - -html, input { - font-family: - "HelveticaNeue-Light", - "Helvetica Neue Light", - "Helvetica Neue", - Helvetica, - Arial, - "Lucida Grande", - sans-serif; -} - -html, body { - height: 100%; - margin: 0; - padding: 0; -} - -ul { - list-style: none; - word-wrap: break-word; -} - -/* Pages */ - -.pages { - height: 100%; - margin: 0; - padding: 0; - width: 100%; -} - -.page { - height: 100%; - position: absolute; - width: 100%; -} - -/* Login Page */ - -.login.page { - background-color: #000; -} - -.login.page .form { - height: 100px; - margin-top: -100px; - position: absolute; - - text-align: center; - top: 50%; - width: 100%; -} - -.login.page .form .usernameInput { - background-color: transparent; - border: none; - border-bottom: 2px solid #fff; - outline: none; - padding-bottom: 15px; - text-align: center; - width: 400px; -} - -.login.page .title { - font-size: 200%; -} - -.login.page .usernameInput { - font-size: 200%; - letter-spacing: 3px; -} - -.login.page .title, .login.page .usernameInput { - color: #fff; - font-weight: 100; -} - -/* Chat page */ - -.chat.page { - display: none; -} - -/* Font */ - -.messages { - font-size: 150%; -} - -.inputMessage { - font-size: 100%; -} - -.log { - color: gray; - font-size: 70%; - margin: 5px; - text-align: center; -} - -/* Messages */ - -.chatArea { - height: 100%; - padding-bottom: 60px; -} - -.messages { - height: 100%; - margin: 0; - overflow-y: scroll; - padding: 10px 20px 10px 20px; -} - -.message.typing .messageBody { - color: gray; -} - -.username { - font-weight: 700; - overflow: hidden; - padding-right: 15px; - text-align: right; -} - -/* Input */ - -.inputMessage { - border: 10px solid #000; - bottom: 0; - height: 60px; - left: 0; - outline: none; - padding-left: 10px; - position: absolute; - right: 0; - width: 100%; -} diff --git a/examples/cluster-httpd/README.md b/examples/cluster-httpd/README.md deleted file mode 100644 index 09edd05b9b..0000000000 --- a/examples/cluster-httpd/README.md +++ /dev/null @@ -1,31 +0,0 @@ - -# Socket.IO Chat with httpd & redis - -A simple chat demo for socket.io - -## How to use - -Install [Docker Compose](https://docs.docker.com/compose/install/), then: - -``` -$ docker-compose up -d -``` - -And then point your browser to `http://localhost:3000`. - -This will start four Socket.IO nodes, behind a httpd proxy which will loadbalance the requests (using a cookie for sticky sessions, see [cookie](http://httpd.apache.org/docs/2.4/fr/mod/mod_proxy_balancer.html)). - -Each node connects to the redis backend, which will enable to broadcast to every client, no matter which node it is currently connected to. - -``` -# you can kill a given node, the client should reconnect to another node -$ docker-compose stop server-george -``` - -## Features - -- Multiple users can join a chat room by each entering a unique username -on website load. -- Users can type chat messages to the chat room. -- A notification is sent to all users when a user joins or leaves -the chatroom. diff --git a/examples/cluster-httpd/docker-compose.yml b/examples/cluster-httpd/docker-compose.yml deleted file mode 100644 index ad6e6f004a..0000000000 --- a/examples/cluster-httpd/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ - -httpd: - build: ./httpd - links: - - server-john - - server-paul - - server-george - - server-ringo - ports: - - "3000:80" - -server-john: - build: ./server - links: - - redis - expose: - - "3000" - environment: - - NAME=John - -server-paul: - build: ./server - links: - - redis - expose: - - "3000" - environment: - - NAME=Paul - -server-george: - build: ./server - links: - - redis - expose: - - "3000" - environment: - - NAME=George - -server-ringo: - build: ./server - links: - - redis - expose: - - "3000" - environment: - - NAME=Ringo - -redis: - image: redis:alpine - expose: - - "6379" diff --git a/examples/cluster-httpd/httpd/Dockerfile b/examples/cluster-httpd/httpd/Dockerfile deleted file mode 100644 index 10fef8f3e2..0000000000 --- a/examples/cluster-httpd/httpd/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM httpd:2.4-alpine -COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf diff --git a/examples/cluster-httpd/httpd/httpd.conf b/examples/cluster-httpd/httpd/httpd.conf deleted file mode 100644 index aa1f2b1649..0000000000 --- a/examples/cluster-httpd/httpd/httpd.conf +++ /dev/null @@ -1,54 +0,0 @@ - -Listen 80 - -ServerName localhost - -LoadModule mpm_event_module modules/mod_mpm_event.so - -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule authz_core_module modules/mod_authz_core.so - -LoadModule headers_module modules/mod_headers.so -LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -LoadModule proxy_http_module modules/mod_proxy_http.so -LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -LoadModule rewrite_module modules/mod_rewrite.so -LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -LoadModule unixd_module modules/mod_unixd.so - -User daemon -Group daemon - -ErrorLog /proc/self/fd/2 - -Header add Set-Cookie "SERVERID=sticky.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED - - - BalancerMember "http://server-john:3000/" route=john - BalancerMember "http://server-paul:3000/" route=paul - BalancerMember "http://server-george:3000/" route=george - BalancerMember "http://server-ringo:3000/" route=ringo - ProxySet stickysession=SERVERID - - - - BalancerMember "ws://server-john:3000" route=john - BalancerMember "ws://server-paul:3000" route=paul - BalancerMember "ws://server-george:3000" route=george - BalancerMember "ws://server-ringo:3000" route=ringo - ProxySet stickysession=SERVERID - - -RewriteEngine On -RewriteCond %{HTTP:Upgrade} =websocket [NC] -RewriteRule /(.*) balancer://nodes_ws/$1 [P,L] -RewriteCond %{HTTP:Upgrade} !=websocket [NC] -RewriteRule /(.*) balancer://nodes_polling/$1 [P,L] - -ProxyTimeout 3 diff --git a/examples/cluster-httpd/server/Dockerfile b/examples/cluster-httpd/server/Dockerfile deleted file mode 100644 index ca39caa521..0000000000 --- a/examples/cluster-httpd/server/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM mhart/alpine-node:6 - -# Create app directory -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -# Install app dependencies -COPY package.json /usr/src/app/ -RUN npm install --prod - -# Bundle app source -COPY . /usr/src/app - -EXPOSE 3000 -CMD [ "npm", "start" ] diff --git a/examples/cluster-httpd/server/index.js b/examples/cluster-httpd/server/index.js deleted file mode 100644 index d5b56b2ce8..0000000000 --- a/examples/cluster-httpd/server/index.js +++ /dev/null @@ -1,82 +0,0 @@ -// Setup basic express server -var express = require('express'); -var app = express(); -var server = require('http').createServer(app); -var io = require('socket.io')(server); -var redis = require('socket.io-redis'); -var port = process.env.PORT || 3000; -var serverName = process.env.NAME || 'Unknown'; - -io.adapter(redis({ host: 'redis', port: 6379 })); - -server.listen(port, function () { - console.log('Server listening at port %d', port); - console.log('Hello, I\'m %s, how can I help?', serverName); -}); - -// Routing -app.use(express.static(__dirname + '/public')); - -// Chatroom - -var numUsers = 0; - -io.on('connection', function (socket) { - socket.emit('my-name-is', serverName); - - var addedUser = false; - - // when the client emits 'new message', this listens and executes - socket.on('new message', function (data) { - // we tell the client to execute 'new message' - socket.broadcast.emit('new message', { - username: socket.username, - message: data - }); - }); - - // when the client emits 'add user', this listens and executes - socket.on('add user', function (username) { - if (addedUser) return; - - // we store the username in the socket session for this client - socket.username = username; - ++numUsers; - addedUser = true; - socket.emit('login', { - numUsers: numUsers - }); - // echo globally (all clients) that a person has connected - socket.broadcast.emit('user joined', { - username: socket.username, - numUsers: numUsers - }); - }); - - // when the client emits 'typing', we broadcast it to others - socket.on('typing', function () { - socket.broadcast.emit('typing', { - username: socket.username - }); - }); - - // when the client emits 'stop typing', we broadcast it to others - socket.on('stop typing', function () { - socket.broadcast.emit('stop typing', { - username: socket.username - }); - }); - - // when the user disconnects.. perform this - socket.on('disconnect', function () { - if (addedUser) { - --numUsers; - - // echo globally that this client has left - socket.broadcast.emit('user left', { - username: socket.username, - numUsers: numUsers - }); - } - }); -}); diff --git a/examples/cluster-httpd/server/package.json b/examples/cluster-httpd/server/package.json deleted file mode 100644 index 28bd56feb9..0000000000 --- a/examples/cluster-httpd/server/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "socket.io-chat", - "version": "0.0.0", - "description": "A simple chat client using socket.io", - "main": "index.js", - "author": "Grant Timmerman", - "private": true, - "license": "BSD", - "dependencies": { - "express": "4.13.4", - "socket.io": "^4.0.0", - "socket.io-redis": "^6.0.1" - }, - "scripts": { - "start": "node index.js" - } -} diff --git a/examples/cluster-httpd/server/public/index.html b/examples/cluster-httpd/server/public/index.html deleted file mode 100644 index 9b2043d73f..0000000000 --- a/examples/cluster-httpd/server/public/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Socket.IO Chat Example - - - -
        -
      • -
        -
          -
          - -
        • - -
        - - - - - - \ No newline at end of file diff --git a/examples/cluster-httpd/server/public/main.js b/examples/cluster-httpd/server/public/main.js deleted file mode 100644 index 03b3702c83..0000000000 --- a/examples/cluster-httpd/server/public/main.js +++ /dev/null @@ -1,286 +0,0 @@ -$(function() { - var FADE_TIME = 150; // ms - var TYPING_TIMER_LENGTH = 400; // ms - var COLORS = [ - '#e21400', '#91580f', '#f8a700', '#f78b00', - '#58dc00', '#287b00', '#a8f07a', '#4ae8c4', - '#3b88eb', '#3824aa', '#a700ff', '#d300e7' - ]; - - // Initialize variables - var $window = $(window); - var $usernameInput = $('.usernameInput'); // Input for username - var $messages = $('.messages'); // Messages area - var $inputMessage = $('.inputMessage'); // Input message input box - - var $loginPage = $('.login.page'); // The login page - var $chatPage = $('.chat.page'); // The chatroom page - - // Prompt for setting a username - var username; - var connected = false; - var typing = false; - var lastTypingTime; - var $currentInput = $usernameInput.focus(); - - var socket = io(); - - function addParticipantsMessage (data) { - var message = ''; - if (data.numUsers === 1) { - message += "there's 1 participant"; - } else { - message += "there are " + data.numUsers + " participants"; - } - log(message); - } - - // Sets the client's username - function setUsername () { - username = cleanInput($usernameInput.val().trim()); - - // If the username is valid - if (username) { - $loginPage.fadeOut(); - $chatPage.show(); - $loginPage.off('click'); - $currentInput = $inputMessage.focus(); - - // Tell the server your username - socket.emit('add user', username); - } - } - - // Sends a chat message - function sendMessage () { - var message = $inputMessage.val(); - // Prevent markup from being injected into the message - message = cleanInput(message); - // if there is a non-empty message and a socket connection - if (message && connected) { - $inputMessage.val(''); - addChatMessage({ - username: username, - message: message - }); - // tell server to execute 'new message' and send along one parameter - socket.emit('new message', message); - } - } - - // Log a message - function log (message, options) { - var $el = $('
      • ').addClass('log').text(message); - addMessageElement($el, options); - } - - // Adds the visual chat message to the message list - function addChatMessage (data, options) { - // Don't fade the message in if there is an 'X was typing' - var $typingMessages = getTypingMessages(data); - options = options || {}; - if ($typingMessages.length !== 0) { - options.fade = false; - $typingMessages.remove(); - } - - var $usernameDiv = $('') - .text(data.username) - .css('color', getUsernameColor(data.username)); - var $messageBodyDiv = $('') - .text(data.message); - - var typingClass = data.typing ? 'typing' : ''; - var $messageDiv = $('
      • ') - .data('username', data.username) - .addClass(typingClass) - .append($usernameDiv, $messageBodyDiv); - - addMessageElement($messageDiv, options); - } - - // Adds the visual chat typing message - function addChatTyping (data) { - data.typing = true; - data.message = 'is typing'; - addChatMessage(data); - } - - // Removes the visual chat typing message - function removeChatTyping (data) { - getTypingMessages(data).fadeOut(function () { - $(this).remove(); - }); - } - - // Adds a message element to the messages and scrolls to the bottom - // el - The element to add as a message - // options.fade - If the element should fade-in (default = true) - // options.prepend - If the element should prepend - // all other messages (default = false) - function addMessageElement (el, options) { - var $el = $(el); - - // Setup default options - if (!options) { - options = {}; - } - if (typeof options.fade === 'undefined') { - options.fade = true; - } - if (typeof options.prepend === 'undefined') { - options.prepend = false; - } - - // Apply options - if (options.fade) { - $el.hide().fadeIn(FADE_TIME); - } - if (options.prepend) { - $messages.prepend($el); - } else { - $messages.append($el); - } - $messages[0].scrollTop = $messages[0].scrollHeight; - } - - // Prevents input from having injected markup - function cleanInput (input) { - return $('
        ').text(input).text(); - } - - // Updates the typing event - function updateTyping () { - if (connected) { - if (!typing) { - typing = true; - socket.emit('typing'); - } - lastTypingTime = (new Date()).getTime(); - - setTimeout(function () { - var typingTimer = (new Date()).getTime(); - var timeDiff = typingTimer - lastTypingTime; - if (timeDiff >= TYPING_TIMER_LENGTH && typing) { - socket.emit('stop typing'); - typing = false; - } - }, TYPING_TIMER_LENGTH); - } - } - - // Gets the 'X is typing' messages of a user - function getTypingMessages (data) { - return $('.typing.message').filter(function (i) { - return $(this).data('username') === data.username; - }); - } - - // Gets the color of a username through our hash function - function getUsernameColor (username) { - // Compute hash code - var hash = 7; - for (var i = 0; i < username.length; i++) { - hash = username.charCodeAt(i) + (hash << 5) - hash; - } - // Calculate color - var index = Math.abs(hash % COLORS.length); - return COLORS[index]; - } - - // Keyboard events - - $window.keydown(function (event) { - // Auto-focus the current input when a key is typed - if (!(event.ctrlKey || event.metaKey || event.altKey)) { - $currentInput.focus(); - } - // When the client hits ENTER on their keyboard - if (event.which === 13) { - if (username) { - sendMessage(); - socket.emit('stop typing'); - typing = false; - } else { - setUsername(); - } - } - }); - - $inputMessage.on('input', function() { - updateTyping(); - }); - - // Click events - - // Focus input when clicking anywhere on login page - $loginPage.click(function () { - $currentInput.focus(); - }); - - // Focus input when clicking on the message input's border - $inputMessage.click(function () { - $inputMessage.focus(); - }); - - // Socket events - - // Whenever the server emits 'login', log the login message - socket.on('login', function (data) { - connected = true; - // Display the welcome message - var message = "Welcome to Socket.IO Chat – "; - log(message, { - prepend: true - }); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'new message', update the chat body - socket.on('new message', function (data) { - addChatMessage(data); - }); - - // Whenever the server emits 'user joined', log it in the chat body - socket.on('user joined', function (data) { - log(data.username + ' joined'); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'user left', log it in the chat body - socket.on('user left', function (data) { - log(data.username + ' left'); - addParticipantsMessage(data); - removeChatTyping(data); - }); - - // Whenever the server emits 'typing', show the typing message - socket.on('typing', function (data) { - addChatTyping(data); - }); - - // Whenever the server emits 'stop typing', kill the typing message - socket.on('stop typing', function (data) { - removeChatTyping(data); - }); - - socket.on('disconnect', function () { - log('you have been disconnected'); - }); - - socket.on('reconnect', function () { - log('you have been reconnected'); - if (username) { - socket.emit('add user', username); - } - }); - - socket.on('reconnect_error', function () { - log('attempt to reconnect has failed'); - }); - - socket.on('my-name-is', function (serverName) { - log('host is now ' + serverName); - }) - -}); diff --git a/examples/cluster-httpd/server/public/style.css b/examples/cluster-httpd/server/public/style.css deleted file mode 100644 index 3052d88e4c..0000000000 --- a/examples/cluster-httpd/server/public/style.css +++ /dev/null @@ -1,149 +0,0 @@ -/* Fix user-agent */ - -* { - box-sizing: border-box; -} - -html { - font-weight: 300; - -webkit-font-smoothing: antialiased; -} - -html, input { - font-family: - "HelveticaNeue-Light", - "Helvetica Neue Light", - "Helvetica Neue", - Helvetica, - Arial, - "Lucida Grande", - sans-serif; -} - -html, body { - height: 100%; - margin: 0; - padding: 0; -} - -ul { - list-style: none; - word-wrap: break-word; -} - -/* Pages */ - -.pages { - height: 100%; - margin: 0; - padding: 0; - width: 100%; -} - -.page { - height: 100%; - position: absolute; - width: 100%; -} - -/* Login Page */ - -.login.page { - background-color: #000; -} - -.login.page .form { - height: 100px; - margin-top: -100px; - position: absolute; - - text-align: center; - top: 50%; - width: 100%; -} - -.login.page .form .usernameInput { - background-color: transparent; - border: none; - border-bottom: 2px solid #fff; - outline: none; - padding-bottom: 15px; - text-align: center; - width: 400px; -} - -.login.page .title { - font-size: 200%; -} - -.login.page .usernameInput { - font-size: 200%; - letter-spacing: 3px; -} - -.login.page .title, .login.page .usernameInput { - color: #fff; - font-weight: 100; -} - -/* Chat page */ - -.chat.page { - display: none; -} - -/* Font */ - -.messages { - font-size: 150%; -} - -.inputMessage { - font-size: 100%; -} - -.log { - color: gray; - font-size: 70%; - margin: 5px; - text-align: center; -} - -/* Messages */ - -.chatArea { - height: 100%; - padding-bottom: 60px; -} - -.messages { - height: 100%; - margin: 0; - overflow-y: scroll; - padding: 10px 20px 10px 20px; -} - -.message.typing .messageBody { - color: gray; -} - -.username { - font-weight: 700; - overflow: hidden; - padding-right: 15px; - text-align: right; -} - -/* Input */ - -.inputMessage { - border: 10px solid #000; - bottom: 0; - height: 60px; - left: 0; - outline: none; - padding-left: 10px; - position: absolute; - right: 0; - width: 100%; -} diff --git a/examples/cluster-nginx/README.md b/examples/cluster-nginx/README.md deleted file mode 100644 index 35c52e6fbf..0000000000 --- a/examples/cluster-nginx/README.md +++ /dev/null @@ -1,41 +0,0 @@ - -# Socket.IO Chat with nginx & redis - -A simple chat demo for socket.io - -## How to use - -Install [Docker Compose](https://docs.docker.com/compose/install/), then: - -``` -$ docker-compose up -d -``` - -And then point your browser to `http://localhost:3000`. - -This will start four Socket.IO nodes, behind a nginx proxy which will loadbalance the requests (using the IP of the client, see [ip_hash](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash)). - -Each node connects to the redis backend, which will enable to broadcast to every client, no matter which node it is currently connected to. - -``` -# you can kill a given node, the client should reconnect to another node -$ docker-compose stop server-george -``` - -A `client` container is included in the `docker-compose.yml` file, in order to test the routing. - -You can create additional `client` containers with: - -``` -$ docker-compose up -d --scale=client=10 client -# and then -$ docker-compose logs client -``` - -## Features - -- Multiple users can join a chat room by each entering a unique username -on website load. -- Users can type chat messages to the chat room. -- A notification is sent to all users when a user joins or leaves -the chatroom. diff --git a/examples/cluster-nginx/client/Dockerfile b/examples/cluster-nginx/client/Dockerfile deleted file mode 100644 index caccfba307..0000000000 --- a/examples/cluster-nginx/client/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM node:14-alpine - -# Create app directory -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -# Install app dependencies -COPY package.json /usr/src/app/ -RUN npm install --prod - -# Bundle app source -COPY . /usr/src/app - -EXPOSE 3000 -CMD [ "npm", "start" ] diff --git a/examples/cluster-nginx/client/index.js b/examples/cluster-nginx/client/index.js deleted file mode 100644 index e3f6e53ecc..0000000000 --- a/examples/cluster-nginx/client/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const socket = require('socket.io-client')('ws://nginx'); - -socket.on('connect', () => { - console.log('connected'); -}); - -socket.on('my-name-is', (serverName) => { - console.log(`connected to ${serverName}`); -}); - -socket.on('disconnect', (reason) => { - console.log(`disconnected due to ${reason}`); -}); diff --git a/examples/cluster-nginx/client/package.json b/examples/cluster-nginx/client/package.json deleted file mode 100644 index 98c68de3d9..0000000000 --- a/examples/cluster-nginx/client/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "socket.io-chat", - "version": "0.0.0", - "description": "A simple chat client using socket.io", - "main": "index.js", - "author": "Grant Timmerman", - "private": true, - "license": "MIT", - "dependencies": { - "socket.io-client": "^4.0.0" - }, - "scripts": { - "start": "node index.js" - } -} diff --git a/examples/cluster-nginx/docker-compose.yml b/examples/cluster-nginx/docker-compose.yml deleted file mode 100644 index 0c2b76076a..0000000000 --- a/examples/cluster-nginx/docker-compose.yml +++ /dev/null @@ -1,43 +0,0 @@ -services: - nginx: - image: nginx:alpine - volumes: - - ./nginx.conf:/etc/nginx/nginx.conf:ro - ports: - - "3000:80" - - server-john: - build: ./server - expose: - - "3000" - environment: - - NAME=John - - server-paul: - build: ./server - expose: - - "3000" - environment: - - NAME=Paul - - server-george: - build: ./server - expose: - - "3000" - environment: - - NAME=George - - server-ringo: - build: ./server - expose: - - "3000" - environment: - - NAME=Ringo - - client: - build: ./client - - redis: - image: redis:alpine - expose: - - "6379" diff --git a/examples/cluster-nginx/nginx.conf b/examples/cluster-nginx/nginx.conf deleted file mode 100644 index 46554b25aa..0000000000 --- a/examples/cluster-nginx/nginx.conf +++ /dev/null @@ -1,39 +0,0 @@ -# Reference: https://www.nginx.com/resources/wiki/start/topics/examples/full/ - -worker_processes 4; - -events { - worker_connections 1024; -} - -http { - server { - listen 80; - - location / { - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $host; - - proxy_pass http://nodes; - - # enable WebSockets - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - } - - upstream nodes { - # enable sticky session with either "hash" (uses the complete IP address) - hash $remote_addr consistent; - # or "ip_hash" (uses the first three octets of the client IPv4 address, or the entire IPv6 address) - # ip_hash; - # or "sticky" (needs commercial subscription) - # sticky cookie srv_id expires=1h domain=.example.com path=/; - - server server-john:3000; - server server-paul:3000; - server server-george:3000; - server server-ringo:3000; - } -} diff --git a/examples/cluster-nginx/server/Dockerfile b/examples/cluster-nginx/server/Dockerfile deleted file mode 100644 index caccfba307..0000000000 --- a/examples/cluster-nginx/server/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM node:14-alpine - -# Create app directory -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -# Install app dependencies -COPY package.json /usr/src/app/ -RUN npm install --prod - -# Bundle app source -COPY . /usr/src/app - -EXPOSE 3000 -CMD [ "npm", "start" ] diff --git a/examples/cluster-nginx/server/index.js b/examples/cluster-nginx/server/index.js deleted file mode 100644 index 443ddb679e..0000000000 --- a/examples/cluster-nginx/server/index.js +++ /dev/null @@ -1,85 +0,0 @@ -const express = require('express'); -const app = express(); -const server = require('http').createServer(app); -const io = require('socket.io')(server); -const { createAdapter } = require('@socket.io/redis-adapter'); -const { createClient } = require('redis'); -const port = process.env.PORT || 3000; -const serverName = process.env.NAME || 'Unknown'; - -const pubClient = createClient({ host: 'redis', port: 6379 }); -const subClient = pubClient.duplicate(); - -io.adapter(createAdapter(pubClient, subClient)); - -server.listen(port, () => { - console.log('Server listening at port %d', port); - console.log('Hello, I\'m %s, how can I help?', serverName); -}); - -// Routing -app.use(express.static(__dirname + '/public')); - -// Chatroom - -let numUsers = 0; - -io.on('connection', socket => { - socket.emit('my-name-is', serverName); - - let addedUser = false; - - // when the client emits 'new message', this listens and executes - socket.on('new message', data => { - // we tell the client to execute 'new message' - socket.broadcast.emit('new message', { - username: socket.username, - message: data - }); - }); - - // when the client emits 'add user', this listens and executes - socket.on('add user', username => { - if (addedUser) return; - - // we store the username in the socket session for this client - socket.username = username; - ++numUsers; - addedUser = true; - socket.emit('login', { - numUsers: numUsers - }); - // echo globally (all clients) that a person has connected - socket.broadcast.emit('user joined', { - username: socket.username, - numUsers: numUsers - }); - }); - - // when the client emits 'typing', we broadcast it to others - socket.on('typing', () => { - socket.broadcast.emit('typing', { - username: socket.username - }); - }); - - // when the client emits 'stop typing', we broadcast it to others - socket.on('stop typing', () => { - socket.broadcast.emit('stop typing', { - username: socket.username - }); - }); - - // when the user disconnects.. perform this - socket.on('disconnect', () => { - if (addedUser) { - --numUsers; - - // echo globally that this client has left - socket.broadcast.emit('user left', { - username: socket.username, - numUsers: numUsers - }); - } - }); -}); diff --git a/examples/cluster-nginx/server/package.json b/examples/cluster-nginx/server/package.json deleted file mode 100644 index e3ae8207c9..0000000000 --- a/examples/cluster-nginx/server/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "socket.io-chat", - "version": "0.0.0", - "description": "A simple chat client using socket.io", - "main": "index.js", - "author": "Grant Timmerman", - "private": true, - "license": "MIT", - "dependencies": { - "@socket.io/redis-adapter": "^7.0.1", - "express": "4.13.4", - "redis": "^3.1.2", - "socket.io": "^4.0.0" - }, - "scripts": { - "start": "node index.js" - } -} diff --git a/examples/cluster-nginx/server/public/index.html b/examples/cluster-nginx/server/public/index.html deleted file mode 100644 index 9b2043d73f..0000000000 --- a/examples/cluster-nginx/server/public/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Socket.IO Chat Example - - - -
          -
        • -
          -
            -
            - -
          • - -
          - - - - - - \ No newline at end of file diff --git a/examples/cluster-nginx/server/public/main.js b/examples/cluster-nginx/server/public/main.js deleted file mode 100644 index 03b3702c83..0000000000 --- a/examples/cluster-nginx/server/public/main.js +++ /dev/null @@ -1,286 +0,0 @@ -$(function() { - var FADE_TIME = 150; // ms - var TYPING_TIMER_LENGTH = 400; // ms - var COLORS = [ - '#e21400', '#91580f', '#f8a700', '#f78b00', - '#58dc00', '#287b00', '#a8f07a', '#4ae8c4', - '#3b88eb', '#3824aa', '#a700ff', '#d300e7' - ]; - - // Initialize variables - var $window = $(window); - var $usernameInput = $('.usernameInput'); // Input for username - var $messages = $('.messages'); // Messages area - var $inputMessage = $('.inputMessage'); // Input message input box - - var $loginPage = $('.login.page'); // The login page - var $chatPage = $('.chat.page'); // The chatroom page - - // Prompt for setting a username - var username; - var connected = false; - var typing = false; - var lastTypingTime; - var $currentInput = $usernameInput.focus(); - - var socket = io(); - - function addParticipantsMessage (data) { - var message = ''; - if (data.numUsers === 1) { - message += "there's 1 participant"; - } else { - message += "there are " + data.numUsers + " participants"; - } - log(message); - } - - // Sets the client's username - function setUsername () { - username = cleanInput($usernameInput.val().trim()); - - // If the username is valid - if (username) { - $loginPage.fadeOut(); - $chatPage.show(); - $loginPage.off('click'); - $currentInput = $inputMessage.focus(); - - // Tell the server your username - socket.emit('add user', username); - } - } - - // Sends a chat message - function sendMessage () { - var message = $inputMessage.val(); - // Prevent markup from being injected into the message - message = cleanInput(message); - // if there is a non-empty message and a socket connection - if (message && connected) { - $inputMessage.val(''); - addChatMessage({ - username: username, - message: message - }); - // tell server to execute 'new message' and send along one parameter - socket.emit('new message', message); - } - } - - // Log a message - function log (message, options) { - var $el = $('
        • ').addClass('log').text(message); - addMessageElement($el, options); - } - - // Adds the visual chat message to the message list - function addChatMessage (data, options) { - // Don't fade the message in if there is an 'X was typing' - var $typingMessages = getTypingMessages(data); - options = options || {}; - if ($typingMessages.length !== 0) { - options.fade = false; - $typingMessages.remove(); - } - - var $usernameDiv = $('') - .text(data.username) - .css('color', getUsernameColor(data.username)); - var $messageBodyDiv = $('') - .text(data.message); - - var typingClass = data.typing ? 'typing' : ''; - var $messageDiv = $('
        • ') - .data('username', data.username) - .addClass(typingClass) - .append($usernameDiv, $messageBodyDiv); - - addMessageElement($messageDiv, options); - } - - // Adds the visual chat typing message - function addChatTyping (data) { - data.typing = true; - data.message = 'is typing'; - addChatMessage(data); - } - - // Removes the visual chat typing message - function removeChatTyping (data) { - getTypingMessages(data).fadeOut(function () { - $(this).remove(); - }); - } - - // Adds a message element to the messages and scrolls to the bottom - // el - The element to add as a message - // options.fade - If the element should fade-in (default = true) - // options.prepend - If the element should prepend - // all other messages (default = false) - function addMessageElement (el, options) { - var $el = $(el); - - // Setup default options - if (!options) { - options = {}; - } - if (typeof options.fade === 'undefined') { - options.fade = true; - } - if (typeof options.prepend === 'undefined') { - options.prepend = false; - } - - // Apply options - if (options.fade) { - $el.hide().fadeIn(FADE_TIME); - } - if (options.prepend) { - $messages.prepend($el); - } else { - $messages.append($el); - } - $messages[0].scrollTop = $messages[0].scrollHeight; - } - - // Prevents input from having injected markup - function cleanInput (input) { - return $('
          ').text(input).text(); - } - - // Updates the typing event - function updateTyping () { - if (connected) { - if (!typing) { - typing = true; - socket.emit('typing'); - } - lastTypingTime = (new Date()).getTime(); - - setTimeout(function () { - var typingTimer = (new Date()).getTime(); - var timeDiff = typingTimer - lastTypingTime; - if (timeDiff >= TYPING_TIMER_LENGTH && typing) { - socket.emit('stop typing'); - typing = false; - } - }, TYPING_TIMER_LENGTH); - } - } - - // Gets the 'X is typing' messages of a user - function getTypingMessages (data) { - return $('.typing.message').filter(function (i) { - return $(this).data('username') === data.username; - }); - } - - // Gets the color of a username through our hash function - function getUsernameColor (username) { - // Compute hash code - var hash = 7; - for (var i = 0; i < username.length; i++) { - hash = username.charCodeAt(i) + (hash << 5) - hash; - } - // Calculate color - var index = Math.abs(hash % COLORS.length); - return COLORS[index]; - } - - // Keyboard events - - $window.keydown(function (event) { - // Auto-focus the current input when a key is typed - if (!(event.ctrlKey || event.metaKey || event.altKey)) { - $currentInput.focus(); - } - // When the client hits ENTER on their keyboard - if (event.which === 13) { - if (username) { - sendMessage(); - socket.emit('stop typing'); - typing = false; - } else { - setUsername(); - } - } - }); - - $inputMessage.on('input', function() { - updateTyping(); - }); - - // Click events - - // Focus input when clicking anywhere on login page - $loginPage.click(function () { - $currentInput.focus(); - }); - - // Focus input when clicking on the message input's border - $inputMessage.click(function () { - $inputMessage.focus(); - }); - - // Socket events - - // Whenever the server emits 'login', log the login message - socket.on('login', function (data) { - connected = true; - // Display the welcome message - var message = "Welcome to Socket.IO Chat – "; - log(message, { - prepend: true - }); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'new message', update the chat body - socket.on('new message', function (data) { - addChatMessage(data); - }); - - // Whenever the server emits 'user joined', log it in the chat body - socket.on('user joined', function (data) { - log(data.username + ' joined'); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'user left', log it in the chat body - socket.on('user left', function (data) { - log(data.username + ' left'); - addParticipantsMessage(data); - removeChatTyping(data); - }); - - // Whenever the server emits 'typing', show the typing message - socket.on('typing', function (data) { - addChatTyping(data); - }); - - // Whenever the server emits 'stop typing', kill the typing message - socket.on('stop typing', function (data) { - removeChatTyping(data); - }); - - socket.on('disconnect', function () { - log('you have been disconnected'); - }); - - socket.on('reconnect', function () { - log('you have been reconnected'); - if (username) { - socket.emit('add user', username); - } - }); - - socket.on('reconnect_error', function () { - log('attempt to reconnect has failed'); - }); - - socket.on('my-name-is', function (serverName) { - log('host is now ' + serverName); - }) - -}); diff --git a/examples/cluster-nginx/server/public/style.css b/examples/cluster-nginx/server/public/style.css deleted file mode 100644 index 3052d88e4c..0000000000 --- a/examples/cluster-nginx/server/public/style.css +++ /dev/null @@ -1,149 +0,0 @@ -/* Fix user-agent */ - -* { - box-sizing: border-box; -} - -html { - font-weight: 300; - -webkit-font-smoothing: antialiased; -} - -html, input { - font-family: - "HelveticaNeue-Light", - "Helvetica Neue Light", - "Helvetica Neue", - Helvetica, - Arial, - "Lucida Grande", - sans-serif; -} - -html, body { - height: 100%; - margin: 0; - padding: 0; -} - -ul { - list-style: none; - word-wrap: break-word; -} - -/* Pages */ - -.pages { - height: 100%; - margin: 0; - padding: 0; - width: 100%; -} - -.page { - height: 100%; - position: absolute; - width: 100%; -} - -/* Login Page */ - -.login.page { - background-color: #000; -} - -.login.page .form { - height: 100px; - margin-top: -100px; - position: absolute; - - text-align: center; - top: 50%; - width: 100%; -} - -.login.page .form .usernameInput { - background-color: transparent; - border: none; - border-bottom: 2px solid #fff; - outline: none; - padding-bottom: 15px; - text-align: center; - width: 400px; -} - -.login.page .title { - font-size: 200%; -} - -.login.page .usernameInput { - font-size: 200%; - letter-spacing: 3px; -} - -.login.page .title, .login.page .usernameInput { - color: #fff; - font-weight: 100; -} - -/* Chat page */ - -.chat.page { - display: none; -} - -/* Font */ - -.messages { - font-size: 150%; -} - -.inputMessage { - font-size: 100%; -} - -.log { - color: gray; - font-size: 70%; - margin: 5px; - text-align: center; -} - -/* Messages */ - -.chatArea { - height: 100%; - padding-bottom: 60px; -} - -.messages { - height: 100%; - margin: 0; - overflow-y: scroll; - padding: 10px 20px 10px 20px; -} - -.message.typing .messageBody { - color: gray; -} - -.username { - font-weight: 700; - overflow: hidden; - padding-right: 15px; - text-align: right; -} - -/* Input */ - -.inputMessage { - border: 10px solid #000; - bottom: 0; - height: 60px; - left: 0; - outline: none; - padding-left: 10px; - position: absolute; - right: 0; - width: 100%; -} diff --git a/examples/cluster-traefik/README.md b/examples/cluster-traefik/README.md deleted file mode 100644 index 66d4195465..0000000000 --- a/examples/cluster-traefik/README.md +++ /dev/null @@ -1,22 +0,0 @@ - -# Socket.IO Chat with traefik & [redis](https://redis.io/) - -A simple chat demo for Socket.IO - -## How to use - -Install [Docker Compose](https://docs.docker.com/compose/install/), then: - -``` -$ docker-compose up -d -``` - -And then point your browser to `http://localhost:3000`. - -You can then scale the server to multiple instances: - -``` -$ docker-compose up -d --scale=server=7 -``` - -The session stickiness, which is [required](https://socket.io/docs/v3/using-multiple-nodes/) when using multiple Socket.IO server instances, is achieved with a cookie. More information [here](https://doc.traefik.io/traefik/v2.0/routing/services/#sticky-sessions). diff --git a/examples/cluster-traefik/docker-compose.yml b/examples/cluster-traefik/docker-compose.yml deleted file mode 100644 index cc558a0036..0000000000 --- a/examples/cluster-traefik/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: "3" - -services: - traefik: - image: traefik:2.4 - volumes: - - ./traefik.yml:/etc/traefik/traefik.yml - - /var/run/docker.sock:/var/run/docker.sock - links: - - server - ports: - - "3000:80" - - "8080:8080" - - server: - build: ./server - links: - - redis - labels: - - "traefik.http.routers.chat.rule=PathPrefix(`/`)" - - traefik.http.services.chat.loadBalancer.sticky.cookie.name=server_id - - traefik.http.services.chat.loadBalancer.sticky.cookie.httpOnly=true - - redis: - image: redis:6-alpine - labels: - - traefik.enable=false diff --git a/examples/cluster-traefik/server/Dockerfile b/examples/cluster-traefik/server/Dockerfile deleted file mode 100644 index caccfba307..0000000000 --- a/examples/cluster-traefik/server/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM node:14-alpine - -# Create app directory -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -# Install app dependencies -COPY package.json /usr/src/app/ -RUN npm install --prod - -# Bundle app source -COPY . /usr/src/app - -EXPOSE 3000 -CMD [ "npm", "start" ] diff --git a/examples/cluster-traefik/server/index.js b/examples/cluster-traefik/server/index.js deleted file mode 100644 index 134efc0577..0000000000 --- a/examples/cluster-traefik/server/index.js +++ /dev/null @@ -1,83 +0,0 @@ -// Setup basic express server -var express = require('express'); -var app = express(); -var server = require('http').createServer(app); -var io = require('socket.io')(server); -var redis = require('socket.io-redis'); -var port = process.env.PORT || 3000; -var crypto = require('crypto'); -var serverName = crypto.randomBytes(3).toString('hex'); - -io.adapter(redis({ host: 'redis', port: 6379 })); - -server.listen(port, function () { - console.log('Server listening at port %d', port); - console.log('Hello, I\'m %s, how can I help?', serverName); -}); - -// Routing -app.use(express.static(__dirname + '/public')); - -// Chatroom - -var numUsers = 0; - -io.on('connection', function (socket) { - socket.emit('my-name-is', serverName); - - var addedUser = false; - - // when the client emits 'new message', this listens and executes - socket.on('new message', function (data) { - // we tell the client to execute 'new message' - socket.broadcast.emit('new message', { - username: socket.username, - message: data - }); - }); - - // when the client emits 'add user', this listens and executes - socket.on('add user', function (username) { - if (addedUser) return; - - // we store the username in the socket session for this client - socket.username = username; - ++numUsers; - addedUser = true; - socket.emit('login', { - numUsers: numUsers - }); - // echo globally (all clients) that a person has connected - socket.broadcast.emit('user joined', { - username: socket.username, - numUsers: numUsers - }); - }); - - // when the client emits 'typing', we broadcast it to others - socket.on('typing', function () { - socket.broadcast.emit('typing', { - username: socket.username - }); - }); - - // when the client emits 'stop typing', we broadcast it to others - socket.on('stop typing', function () { - socket.broadcast.emit('stop typing', { - username: socket.username - }); - }); - - // when the user disconnects.. perform this - socket.on('disconnect', function () { - if (addedUser) { - --numUsers; - - // echo globally that this client has left - socket.broadcast.emit('user left', { - username: socket.username, - numUsers: numUsers - }); - } - }); -}); diff --git a/examples/cluster-traefik/server/package.json b/examples/cluster-traefik/server/package.json deleted file mode 100644 index 2f9bfea65c..0000000000 --- a/examples/cluster-traefik/server/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "socket.io-chat", - "version": "0.0.0", - "description": "A simple chat client using socket.io", - "main": "index.js", - "author": "Grant Timmerman", - "private": true, - "license": "MIT", - "dependencies": { - "express": "4.13.4", - "socket.io": "^4.0.0", - "socket.io-redis": "^6.0.1" - }, - "scripts": { - "start": "node index.js" - } -} diff --git a/examples/cluster-traefik/server/public/index.html b/examples/cluster-traefik/server/public/index.html deleted file mode 100644 index 9b2043d73f..0000000000 --- a/examples/cluster-traefik/server/public/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Socket.IO Chat Example - - - -
            -
          • -
            -
              -
              - -
            • - -
            - - - - - - \ No newline at end of file diff --git a/examples/cluster-traefik/server/public/main.js b/examples/cluster-traefik/server/public/main.js deleted file mode 100644 index bceebafd4d..0000000000 --- a/examples/cluster-traefik/server/public/main.js +++ /dev/null @@ -1,286 +0,0 @@ -$(function() { - var FADE_TIME = 150; // ms - var TYPING_TIMER_LENGTH = 400; // ms - var COLORS = [ - '#e21400', '#91580f', '#f8a700', '#f78b00', - '#58dc00', '#287b00', '#a8f07a', '#4ae8c4', - '#3b88eb', '#3824aa', '#a700ff', '#d300e7' - ]; - - // Initialize variables - var $window = $(window); - var $usernameInput = $('.usernameInput'); // Input for username - var $messages = $('.messages'); // Messages area - var $inputMessage = $('.inputMessage'); // Input message input box - - var $loginPage = $('.login.page'); // The login page - var $chatPage = $('.chat.page'); // The chatroom page - - // Prompt for setting a username - var username; - var connected = false; - var typing = false; - var lastTypingTime; - var $currentInput = $usernameInput.focus(); - - var socket = io(); - - function addParticipantsMessage (data) { - var message = ''; - if (data.numUsers === 1) { - message += "there's 1 participant"; - } else { - message += "there are " + data.numUsers + " participants"; - } - log(message); - } - - // Sets the client's username - function setUsername () { - username = cleanInput($usernameInput.val().trim()); - - // If the username is valid - if (username) { - $loginPage.fadeOut(); - $chatPage.show(); - $loginPage.off('click'); - $currentInput = $inputMessage.focus(); - - // Tell the server your username - socket.emit('add user', username); - } - } - - // Sends a chat message - function sendMessage () { - var message = $inputMessage.val(); - // Prevent markup from being injected into the message - message = cleanInput(message); - // if there is a non-empty message and a socket connection - if (message && connected) { - $inputMessage.val(''); - addChatMessage({ - username: username, - message: message - }); - // tell server to execute 'new message' and send along one parameter - socket.emit('new message', message); - } - } - - // Log a message - function log (message, options) { - var $el = $('
          • ').addClass('log').text(message); - addMessageElement($el, options); - } - - // Adds the visual chat message to the message list - function addChatMessage (data, options) { - // Don't fade the message in if there is an 'X was typing' - var $typingMessages = getTypingMessages(data); - options = options || {}; - if ($typingMessages.length !== 0) { - options.fade = false; - $typingMessages.remove(); - } - - var $usernameDiv = $('') - .text(data.username) - .css('color', getUsernameColor(data.username)); - var $messageBodyDiv = $('') - .text(data.message); - - var typingClass = data.typing ? 'typing' : ''; - var $messageDiv = $('
          • ') - .data('username', data.username) - .addClass(typingClass) - .append($usernameDiv, $messageBodyDiv); - - addMessageElement($messageDiv, options); - } - - // Adds the visual chat typing message - function addChatTyping (data) { - data.typing = true; - data.message = 'is typing'; - addChatMessage(data); - } - - // Removes the visual chat typing message - function removeChatTyping (data) { - getTypingMessages(data).fadeOut(function () { - $(this).remove(); - }); - } - - // Adds a message element to the messages and scrolls to the bottom - // el - The element to add as a message - // options.fade - If the element should fade-in (default = true) - // options.prepend - If the element should prepend - // all other messages (default = false) - function addMessageElement (el, options) { - var $el = $(el); - - // Setup default options - if (!options) { - options = {}; - } - if (typeof options.fade === 'undefined') { - options.fade = true; - } - if (typeof options.prepend === 'undefined') { - options.prepend = false; - } - - // Apply options - if (options.fade) { - $el.hide().fadeIn(FADE_TIME); - } - if (options.prepend) { - $messages.prepend($el); - } else { - $messages.append($el); - } - $messages[0].scrollTop = $messages[0].scrollHeight; - } - - // Prevents input from having injected markup - function cleanInput (input) { - return $('
            ').text(input).text(); - } - - // Updates the typing event - function updateTyping () { - if (connected) { - if (!typing) { - typing = true; - socket.emit('typing'); - } - lastTypingTime = (new Date()).getTime(); - - setTimeout(function () { - var typingTimer = (new Date()).getTime(); - var timeDiff = typingTimer - lastTypingTime; - if (timeDiff >= TYPING_TIMER_LENGTH && typing) { - socket.emit('stop typing'); - typing = false; - } - }, TYPING_TIMER_LENGTH); - } - } - - // Gets the 'X is typing' messages of a user - function getTypingMessages (data) { - return $('.typing.message').filter(function (i) { - return $(this).data('username') === data.username; - }); - } - - // Gets the color of a username through our hash function - function getUsernameColor (username) { - // Compute hash code - var hash = 7; - for (var i = 0; i < username.length; i++) { - hash = username.charCodeAt(i) + (hash << 5) - hash; - } - // Calculate color - var index = Math.abs(hash % COLORS.length); - return COLORS[index]; - } - - // Keyboard events - - $window.keydown(function (event) { - // Auto-focus the current input when a key is typed - if (!(event.ctrlKey || event.metaKey || event.altKey)) { - $currentInput.focus(); - } - // When the client hits ENTER on their keyboard - if (event.which === 13) { - if (username) { - sendMessage(); - socket.emit('stop typing'); - typing = false; - } else { - setUsername(); - } - } - }); - - $inputMessage.on('input', function() { - updateTyping(); - }); - - // Click events - - // Focus input when clicking anywhere on login page - $loginPage.click(function () { - $currentInput.focus(); - }); - - // Focus input when clicking on the message input's border - $inputMessage.click(function () { - $inputMessage.focus(); - }); - - // Socket events - - // Whenever the server emits 'login', log the login message - socket.on('login', function (data) { - connected = true; - // Display the welcome message - var message = "Welcome to Socket.IO Chat – "; - log(message, { - prepend: true - }); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'new message', update the chat body - socket.on('new message', function (data) { - addChatMessage(data); - }); - - // Whenever the server emits 'user joined', log it in the chat body - socket.on('user joined', function (data) { - log(data.username + ' joined'); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'user left', log it in the chat body - socket.on('user left', function (data) { - log(data.username + ' left'); - addParticipantsMessage(data); - removeChatTyping(data); - }); - - // Whenever the server emits 'typing', show the typing message - socket.on('typing', function (data) { - addChatTyping(data); - }); - - // Whenever the server emits 'stop typing', kill the typing message - socket.on('stop typing', function (data) { - removeChatTyping(data); - }); - - socket.on('disconnect', function () { - log('you have been disconnected'); - }); - - socket.on('connect', function () { - if (username) { - log('you have been reconnected'); - socket.emit('add user', username); - } - }); - - socket.io.on('reconnect_error', function () { - log('attempt to reconnect has failed'); - }); - - socket.on('my-name-is', function (serverName) { - log('host is now ' + serverName); - }) - -}); diff --git a/examples/cluster-traefik/server/public/style.css b/examples/cluster-traefik/server/public/style.css deleted file mode 100644 index 3052d88e4c..0000000000 --- a/examples/cluster-traefik/server/public/style.css +++ /dev/null @@ -1,149 +0,0 @@ -/* Fix user-agent */ - -* { - box-sizing: border-box; -} - -html { - font-weight: 300; - -webkit-font-smoothing: antialiased; -} - -html, input { - font-family: - "HelveticaNeue-Light", - "Helvetica Neue Light", - "Helvetica Neue", - Helvetica, - Arial, - "Lucida Grande", - sans-serif; -} - -html, body { - height: 100%; - margin: 0; - padding: 0; -} - -ul { - list-style: none; - word-wrap: break-word; -} - -/* Pages */ - -.pages { - height: 100%; - margin: 0; - padding: 0; - width: 100%; -} - -.page { - height: 100%; - position: absolute; - width: 100%; -} - -/* Login Page */ - -.login.page { - background-color: #000; -} - -.login.page .form { - height: 100px; - margin-top: -100px; - position: absolute; - - text-align: center; - top: 50%; - width: 100%; -} - -.login.page .form .usernameInput { - background-color: transparent; - border: none; - border-bottom: 2px solid #fff; - outline: none; - padding-bottom: 15px; - text-align: center; - width: 400px; -} - -.login.page .title { - font-size: 200%; -} - -.login.page .usernameInput { - font-size: 200%; - letter-spacing: 3px; -} - -.login.page .title, .login.page .usernameInput { - color: #fff; - font-weight: 100; -} - -/* Chat page */ - -.chat.page { - display: none; -} - -/* Font */ - -.messages { - font-size: 150%; -} - -.inputMessage { - font-size: 100%; -} - -.log { - color: gray; - font-size: 70%; - margin: 5px; - text-align: center; -} - -/* Messages */ - -.chatArea { - height: 100%; - padding-bottom: 60px; -} - -.messages { - height: 100%; - margin: 0; - overflow-y: scroll; - padding: 10px 20px 10px 20px; -} - -.message.typing .messageBody { - color: gray; -} - -.username { - font-weight: 700; - overflow: hidden; - padding-right: 15px; - text-align: right; -} - -/* Input */ - -.inputMessage { - border: 10px solid #000; - bottom: 0; - height: 60px; - left: 0; - outline: none; - padding-left: 10px; - position: absolute; - right: 0; - width: 100%; -} diff --git a/examples/cluster-traefik/traefik.yml b/examples/cluster-traefik/traefik.yml deleted file mode 100644 index 73674199b3..0000000000 --- a/examples/cluster-traefik/traefik.yml +++ /dev/null @@ -1,10 +0,0 @@ - -api: - insecure: true - -entryPoints: - web: - address: ":80" - -providers: - docker: {} diff --git a/examples/create-react-app-example/.gitignore b/examples/create-react-app-example/.gitignore deleted file mode 100644 index 4d29575de8..0000000000 --- a/examples/create-react-app-example/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/examples/create-react-app-example/README.md b/examples/create-react-app-example/README.md deleted file mode 100644 index b1a8dc6a67..0000000000 --- a/examples/create-react-app-example/README.md +++ /dev/null @@ -1,72 +0,0 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `yarn start` - -Runs the app in the development mode.
            -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
            -You will also see any lint errors in the console. - -### `yarn start-server` - -Starts the Socket.IO server. - -### `yarn test` - -Launches the test runner in the interactive watch mode.
            -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `yarn build` - -Builds the app for production to the `build` folder.
            -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
            -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `yarn eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting - -### Analyzing the Bundle Size - -This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size - -### Making a Progressive Web App - -This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app - -### Advanced Configuration - -This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration - -### Deployment - -This section has moved here: https://facebook.github.io/create-react-app/docs/deployment - -### `yarn build` fails to minify - -This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/examples/create-react-app-example/package.json b/examples/create-react-app-example/package.json deleted file mode 100644 index 052a317532..0000000000 --- a/examples/create-react-app-example/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "create-react-app-example", - "version": "0.1.0", - "private": true, - "dependencies": { - "@testing-library/jest-dom": "^4.2.4", - "@testing-library/react": "^9.3.2", - "@testing-library/user-event": "^7.1.2", - "react": "^16.13.1", - "react-dom": "^16.13.1", - "react-scripts": "3.4.1", - "socket.io": "4", - "socket.io-client": "4" - }, - "scripts": { - "start": "react-scripts start", - "start-server": "node server.js", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": "react-app" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/examples/create-react-app-example/public/favicon.ico b/examples/create-react-app-example/public/favicon.ico deleted file mode 100644 index bcd5dfd67c..0000000000 Binary files a/examples/create-react-app-example/public/favicon.ico and /dev/null differ diff --git a/examples/create-react-app-example/public/index.html b/examples/create-react-app-example/public/index.html deleted file mode 100644 index aa069f27cb..0000000000 --- a/examples/create-react-app-example/public/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - React App - - - -
            - - - diff --git a/examples/create-react-app-example/public/logo192.png b/examples/create-react-app-example/public/logo192.png deleted file mode 100644 index fc44b0a379..0000000000 Binary files a/examples/create-react-app-example/public/logo192.png and /dev/null differ diff --git a/examples/create-react-app-example/public/logo512.png b/examples/create-react-app-example/public/logo512.png deleted file mode 100644 index a4e47a6545..0000000000 Binary files a/examples/create-react-app-example/public/logo512.png and /dev/null differ diff --git a/examples/create-react-app-example/public/manifest.json b/examples/create-react-app-example/public/manifest.json deleted file mode 100644 index 080d6c77ac..0000000000 --- a/examples/create-react-app-example/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/examples/create-react-app-example/public/robots.txt b/examples/create-react-app-example/public/robots.txt deleted file mode 100644 index e9e57dc4d4..0000000000 --- a/examples/create-react-app-example/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/examples/create-react-app-example/server.js b/examples/create-react-app-example/server.js deleted file mode 100644 index 69297ad43b..0000000000 --- a/examples/create-react-app-example/server.js +++ /dev/null @@ -1,23 +0,0 @@ -const io = require('socket.io')({ - cors: { - origin: ['http://localhost:3000/'] - } -}); - -io.on('connection', socket => { - console.log(`connect: ${socket.id}`); - - socket.on('hello!', () => { - console.log(`hello from ${socket.id}`); - }); - - socket.on('disconnect', () => { - console.log(`disconnect: ${socket.id}`); - }); -}); - -io.listen(3001); - -setInterval(() => { - io.emit('message', new Date().toISOString()); -}, 1000); diff --git a/examples/create-react-app-example/src/App.css b/examples/create-react-app-example/src/App.css deleted file mode 100644 index 74b5e05345..0000000000 --- a/examples/create-react-app-example/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/examples/create-react-app-example/src/App.js b/examples/create-react-app-example/src/App.js deleted file mode 100644 index c77bcca2a7..0000000000 --- a/examples/create-react-app-example/src/App.js +++ /dev/null @@ -1,43 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import './App.css'; -import io from 'socket.io-client'; - -const socket = io('localhost:3001'); - -function App() { - const [isConnected, setIsConnected] = useState(socket.connected); - const [lastMessage, setLastMessage] = useState(null); - - useEffect(() => { - socket.on('connect', () => { - setIsConnected(true); - }); - socket.on('disconnect', () => { - setIsConnected(false); - }); - socket.on('message', data => { - setLastMessage(data); - }); - return () => { - socket.off('connect'); - socket.off('disconnect'); - socket.off('message'); - }; - }); - - const sendMessage = () => { - socket.emit('hello!'); - } - - return ( -
            -
            -

            Connected: { '' + isConnected }

            -

            Last message: { lastMessage || '-' }

            - -
            -
            - ); -} - -export default App; diff --git a/examples/create-react-app-example/src/App.test.js b/examples/create-react-app-example/src/App.test.js deleted file mode 100644 index 4db7ebc25c..0000000000 --- a/examples/create-react-app-example/src/App.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - const { getByText } = render(); - const linkElement = getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/examples/create-react-app-example/src/index.css b/examples/create-react-app-example/src/index.css deleted file mode 100644 index ec2585e8c0..0000000000 --- a/examples/create-react-app-example/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/examples/create-react-app-example/src/index.js b/examples/create-react-app-example/src/index.js deleted file mode 100644 index f5185c1ec7..0000000000 --- a/examples/create-react-app-example/src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; -import * as serviceWorker from './serviceWorker'; - -ReactDOM.render( - - - , - document.getElementById('root') -); - -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: https://bit.ly/CRA-PWA -serviceWorker.unregister(); diff --git a/examples/create-react-app-example/src/logo.svg b/examples/create-react-app-example/src/logo.svg deleted file mode 100644 index 6b60c1042f..0000000000 --- a/examples/create-react-app-example/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/examples/create-react-app-example/src/serviceWorker.js b/examples/create-react-app-example/src/serviceWorker.js deleted file mode 100644 index b04b771a82..0000000000 --- a/examples/create-react-app-example/src/serviceWorker.js +++ /dev/null @@ -1,141 +0,0 @@ -// This optional code is used to register a service worker. -// register() is not called by default. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. - -// To learn more about the benefits of this model and instructions on how to -// opt-in, read https://bit.ly/CRA-PWA - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.0/8 are considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) -); - -export function register(config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA' - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } - }); - } -} - -function registerValidSW(swUrl, config) { - navigator.serviceWorker - .register(swUrl) - .then(registration => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } - } - } - }; - }; - }) - .catch(error => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl, config) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl, { - headers: { 'Service-Worker': 'script' }, - }) - .then(response => { - // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); - if ( - response.status === 404 || - (contentType != null && contentType.indexOf('javascript') === -1) - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then(registration => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl, config); - } - }) - .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.' - ); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready - .then(registration => { - registration.unregister(); - }) - .catch(error => { - console.error(error.message); - }); - } -} diff --git a/examples/create-react-app-example/src/setupTests.js b/examples/create-react-app-example/src/setupTests.js deleted file mode 100644 index 74b1a275a0..0000000000 --- a/examples/create-react-app-example/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom/extend-expect'; diff --git a/examples/create-react-app-example/yarn.lock b/examples/create-react-app-example/yarn.lock deleted file mode 100644 index a87ab764c1..0000000000 --- a/examples/create-react-app-example/yarn.lock +++ /dev/null @@ -1,11309 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.8", "@babel/compat-data@^7.9.0": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.11.tgz#9c8fe523c206979c9a81b1e12fe50c1254f1aa35" - integrity sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg== - -"@babel/core@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.1.0", "@babel/core@^7.4.5": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" - integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" - "@babel/helper-compilation-targets" "^7.13.10" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helpers" "^7.13.10" - "@babel/parser" "^7.13.10" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.13.0", "@babel/generator@^7.13.9", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" - integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.8", "@babel/helper-compilation-targets@^7.8.7": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" - integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" - integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" - integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" - integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.12.13": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" - integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-hoist-variables@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" - integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== - dependencies: - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-member-expression-to-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" - integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.9.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" - integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - lodash "^4.17.19" - -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-remap-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" - integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-wrap-function" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" - integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-simple-access@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" - integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helper-wrap-function@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" - integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helpers@^7.13.10", "@babel/helpers@^7.9.0": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" - integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/highlight@^7.12.13", "@babel/highlight@^7.8.3": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88" - integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q== - -"@babel/plugin-proposal-async-generator-functions@^7.13.8", "@babel/plugin-proposal-async-generator-functions@^7.8.3": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" - integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-proposal-class-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" - integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-decorators@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" - integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" - -"@babel/plugin-proposal-dynamic-import@^7.13.8", "@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" - integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" - integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.13.8", "@babel/plugin-proposal-json-strings@^7.8.3": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" - integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a" - integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" - integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.12.13", "@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" - integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.13.8", "@babel/plugin-proposal-object-rest-spread@^7.9.0": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" - integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.8" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.13.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.13.8", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" - integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.13.8", "@babel/plugin-proposal-optional-chaining@^7.9.0": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz#e39df93efe7e7e621841babc197982e140e90756" - integrity sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" - integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" - integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-decorators@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" - integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" - integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" - integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" - integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-typescript@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" - integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-arrow-functions@^7.13.0", "@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" - integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-async-to-generator@^7.13.0", "@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" - integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - -"@babel/plugin-transform-block-scoped-functions@^7.12.13", "@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-block-scoping@^7.12.13", "@babel/plugin-transform-block-scoping@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-classes@^7.13.0", "@babel/plugin-transform-classes@^7.9.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" - integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.13.0", "@babel/plugin-transform-computed-properties@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" - integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-destructuring@^7.13.0", "@babel/plugin-transform-destructuring@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" - integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" - integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-duplicate-keys@^7.12.13", "@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" - integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-exponentiation-operator@^7.12.13", "@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" - integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-flow-strip-types@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" - integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-flow" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.13.0", "@babel/plugin-transform-for-of@^7.9.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" - integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-function-name@^7.12.13", "@babel/plugin-transform-function-name@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-literals@^7.12.13", "@babel/plugin-transform-literals@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-member-expression-literals@^7.12.13", "@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-modules-amd@^7.13.0", "@babel/plugin-transform-modules-amd@^7.9.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" - integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.13.8", "@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" - integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== - dependencies: - "@babel/helper-hoist-variables" "^7.13.0" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-identifier" "^7.12.11" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.13.0", "@babel/plugin-transform-modules-umd@^7.9.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" - integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" - integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - -"@babel/plugin-transform-new-target@^7.12.13", "@babel/plugin-transform-new-target@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" - integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-object-super@^7.12.13", "@babel/plugin-transform-object-super@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - -"@babel/plugin-transform-parameters@^7.13.0", "@babel/plugin-transform-parameters@^7.8.7": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" - integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-property-literals@^7.12.13", "@babel/plugin-transform-property-literals@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-constant-elements@^7.0.0": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.10.tgz#5d3de8a8ee53f4612e728f4f17b8c9125f8019e5" - integrity sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-react-display-name@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" - integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-display-name@^7.12.13", "@babel/plugin-transform-react-display-name@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" - integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx-development@^7.12.12", "@babel/plugin-transform-react-jsx-development@^7.9.0": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" - integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.12.17" - -"@babel/plugin-transform-react-jsx-self@^7.9.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" - integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx-source@^7.9.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz#051d76126bee5c9a6aa3ba37be2f6c1698856bcb" - integrity sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx@^7.12.13", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.9.1": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" - integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/types" "^7.12.17" - -"@babel/plugin-transform-react-pure-annotations@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" - integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-regenerator@^7.12.13", "@babel/plugin-transform-regenerator@^7.8.7": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" - integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.12.13", "@babel/plugin-transform-reserved-words@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" - integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" - integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.12.13", "@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-spread@^7.13.0", "@babel/plugin-transform-spread@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" - integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-sticky-regex@^7.12.13", "@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" - integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-template-literals@^7.13.0", "@babel/plugin-transform-template-literals@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" - integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-typeof-symbol@^7.12.13", "@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" - integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-typescript@^7.9.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" - integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-typescript" "^7.12.13" - -"@babel/plugin-transform-unicode-escapes@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" - integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-regex@^7.12.13", "@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" - integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/preset-env@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-env@^7.4.5": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.10.tgz#b5cde31d5fe77ab2a6ab3d453b59041a1b3a5252" - integrity sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.10" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-proposal-async-generator-functions" "^7.13.8" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-dynamic-import" "^7.13.8" - "@babel/plugin-proposal-export-namespace-from" "^7.12.13" - "@babel/plugin-proposal-json-strings" "^7.13.8" - "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-numeric-separator" "^7.12.13" - "@babel/plugin-proposal-object-rest-spread" "^7.13.8" - "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.8" - "@babel/plugin-proposal-private-methods" "^7.13.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.12.13" - "@babel/plugin-transform-arrow-functions" "^7.13.0" - "@babel/plugin-transform-async-to-generator" "^7.13.0" - "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.12.13" - "@babel/plugin-transform-classes" "^7.13.0" - "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.0" - "@babel/plugin-transform-dotall-regex" "^7.12.13" - "@babel/plugin-transform-duplicate-keys" "^7.12.13" - "@babel/plugin-transform-exponentiation-operator" "^7.12.13" - "@babel/plugin-transform-for-of" "^7.13.0" - "@babel/plugin-transform-function-name" "^7.12.13" - "@babel/plugin-transform-literals" "^7.12.13" - "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.13.0" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.13.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" - "@babel/plugin-transform-new-target" "^7.12.13" - "@babel/plugin-transform-object-super" "^7.12.13" - "@babel/plugin-transform-parameters" "^7.13.0" - "@babel/plugin-transform-property-literals" "^7.12.13" - "@babel/plugin-transform-regenerator" "^7.12.13" - "@babel/plugin-transform-reserved-words" "^7.12.13" - "@babel/plugin-transform-shorthand-properties" "^7.12.13" - "@babel/plugin-transform-spread" "^7.13.0" - "@babel/plugin-transform-sticky-regex" "^7.12.13" - "@babel/plugin-transform-template-literals" "^7.13.0" - "@babel/plugin-transform-typeof-symbol" "^7.12.13" - "@babel/plugin-transform-unicode-escapes" "^7.12.13" - "@babel/plugin-transform-unicode-regex" "^7.12.13" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.13.0" - babel-plugin-polyfill-corejs2 "^0.1.4" - babel-plugin-polyfill-corejs3 "^0.1.3" - babel-plugin-polyfill-regenerator "^0.1.2" - core-js-compat "^3.9.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@7.9.1": - version "7.9.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" - integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-react-display-name" "^7.8.3" - "@babel/plugin-transform-react-jsx" "^7.9.1" - "@babel/plugin-transform-react-jsx-development" "^7.9.0" - "@babel/plugin-transform-react-jsx-self" "^7.9.0" - "@babel/plugin-transform-react-jsx-source" "^7.9.0" - -"@babel/preset-react@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.13.tgz#5f911b2eb24277fa686820d5bd81cad9a0602a0a" - integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-transform-react-display-name" "^7.12.13" - "@babel/plugin-transform-react-jsx" "^7.12.13" - "@babel/plugin-transform-react-jsx-development" "^7.12.12" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - -"@babel/preset-typescript@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" - integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-typescript" "^7.9.0" - -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.12.1": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz#14c3f4c85de22ba88e8e86685d13e8861a82fe86" - integrity sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" - integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.1", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" - integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.12.13", "@babel/template@^7.4.0", "@babel/template@^7.8.6": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - -"@csstools/normalize.css@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" - integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" - -"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== - dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - -"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" - source-map "^0.6.0" - string-length "^2.0.0" - -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== - dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== - dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" - pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/types@^24.3.0", "@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@sheerun/mutationobserver-shim@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" - integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== - -"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" - integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== - -"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" - integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" - integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" - integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== - -"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" - integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== - -"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" - integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== - -"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" - integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== - -"@svgr/babel-plugin-transform-svg-component@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" - integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== - -"@svgr/babel-preset@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" - integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" - "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" - "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" - "@svgr/babel-plugin-transform-svg-component" "^4.2.0" - -"@svgr/core@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" - integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== - dependencies: - "@svgr/plugin-jsx" "^4.3.3" - camelcase "^5.3.1" - cosmiconfig "^5.2.1" - -"@svgr/hast-util-to-babel-ast@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" - integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== - dependencies: - "@babel/types" "^7.4.4" - -"@svgr/plugin-jsx@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" - integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== - dependencies: - "@babel/core" "^7.4.5" - "@svgr/babel-preset" "^4.3.3" - "@svgr/hast-util-to-babel-ast" "^4.3.2" - svg-parser "^2.0.0" - -"@svgr/plugin-svgo@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" - integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== - dependencies: - cosmiconfig "^5.2.1" - merge-deep "^3.0.2" - svgo "^1.2.2" - -"@svgr/webpack@4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" - integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== - dependencies: - "@babel/core" "^7.4.5" - "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.4.5" - "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.3" - "@svgr/plugin-jsx" "^4.3.3" - "@svgr/plugin-svgo" "^4.3.1" - loader-utils "^1.2.3" - -"@testing-library/dom@*": - version "7.30.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.30.0.tgz#53697851f7708a1448cc30b74a2ea056dd709cd6" - integrity sha512-v4GzWtltaiDE0yRikLlcLAfEiiK8+ptu6OuuIebm9GdC2XlZTNDPGEfM2UkEtnH7hr9TRq2sivT5EA9P1Oy7bw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.4" - lz-string "^1.4.4" - pretty-format "^26.6.2" - -"@testing-library/dom@^6.15.0": - version "6.16.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.16.0.tgz#04ada27ed74ad4c0f0d984a1245bb29b1fd90ba9" - integrity sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA== - dependencies: - "@babel/runtime" "^7.8.4" - "@sheerun/mutationobserver-shim" "^0.3.2" - "@types/testing-library__dom" "^6.12.1" - aria-query "^4.0.2" - dom-accessibility-api "^0.3.0" - pretty-format "^25.1.0" - wait-for-expect "^3.0.2" - -"@testing-library/jest-dom@^4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz#00dfa0cbdd837d9a3c2a7f3f0a248ea6e7b89742" - integrity sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg== - dependencies: - "@babel/runtime" "^7.5.1" - chalk "^2.4.1" - css "^2.2.3" - css.escape "^1.5.1" - jest-diff "^24.0.0" - jest-matcher-utils "^24.0.0" - lodash "^4.17.11" - pretty-format "^24.0.0" - redent "^3.0.0" - -"@testing-library/react@^9.3.2": - version "9.5.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.5.0.tgz#71531655a7890b61e77a1b39452fbedf0472ca5e" - integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg== - dependencies: - "@babel/runtime" "^7.8.4" - "@testing-library/dom" "^6.15.0" - "@types/testing-library__react" "^9.1.2" - -"@testing-library/user-event@^7.1.2": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-7.2.1.tgz#2ad4e844175a3738cb9e7064be5ea070b8863a1c" - integrity sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA== - -"@types/aria-query@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b" - integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg== - -"@types/babel__core@^7.1.0": - version "7.1.13" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.13.tgz#bc6eea53975fdf163aff66c086522c6f293ae4cf" - integrity sha512-CC6amBNND16pTk4K3ZqKIaba6VGKAQs3gMjEY17FVd56oI/ZWt9OhS6riYiWv9s8ENbYUi7p8lgqb0QHQvUKQQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" - integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" - integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.1.tgz#654f6c4f67568e24c23b367e947098c6206fa639" - integrity sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw== - dependencies: - "@babel/types" "^7.3.0" - -"@types/component-emitter@^1.2.10": - version "1.2.10" - resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.10.tgz#ef5b1589b9f16544642e473db5ea5639107ef3ea" - integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg== - -"@types/cookie@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.0.tgz#14f854c0f93d326e39da6e3b6f34f7d37513d108" - integrity sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg== - -"@types/cors@^2.8.8": - version "2.8.10" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.10.tgz#61cc8469849e5bcdd0c7044122265c39cec10cf4" - integrity sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ== - -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - -"@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*", "@types/node@>=10.0.0": - version "14.14.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" - integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@types/react-dom@*": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.2.tgz#35654cf6c49ae162d5bc90843d5437dc38008d43" - integrity sha512-Icd9KEgdnFfJs39KyRyr0jQ7EKhq8U6CcHRMGAS45fp5qgUvxL3ujUCfWFttUK2UErqZNj97t9gsVPNAqcwoCg== - dependencies: - "@types/react" "*" - -"@types/react@*": - version "17.0.3" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.3.tgz#ba6e215368501ac3826951eef2904574c262cc79" - integrity sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.1" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" - integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/testing-library__dom@*": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.5.0.tgz#e0a00dd766983b1d6e9d10d33e708005ce6ad13e" - integrity sha512-mj1aH4cj3XUpMEgVpognma5kHVtbm6U6cHZmEFzCRiXPvKkuHrFr3+yXdGLXvfFRBaQIVshPGHI+hGTOJlhS/g== - dependencies: - "@testing-library/dom" "*" - -"@types/testing-library__dom@^6.12.1": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz#1aede831cb4ed4a398448df5a2c54b54a365644e" - integrity sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA== - dependencies: - pretty-format "^24.3.0" - -"@types/testing-library__react@^9.1.2": - version "9.1.3" - resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.3.tgz#35eca61cc6ea923543796f16034882a1603d7302" - integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w== - dependencies: - "@types/react-dom" "*" - "@types/testing-library__dom" "*" - pretty-format "^25.1.0" - -"@types/yargs-parser@*": - version "20.2.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" - integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== - -"@types/yargs@^13.0.0": - version "13.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" - integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^15.0.0": - version "15.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" - integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^2.10.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== - dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^2.10.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^4.1.0, acorn-globals@^4.3.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-jsx@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn@^5.5.3: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -adjust-sourcemap-loader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" - integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== - dependencies: - assert "1.4.1" - camelcase "5.0.0" - loader-utils "1.2.3" - object-path "0.11.4" - regex-parser "2.2.10" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - -aria-query@^4.0.2, aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.0.3, array-includes@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - dependencies: - util "0.10.3" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.6.1: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axobject-query@^2.0.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== - dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" - -babel-loader@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" - -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== - dependencies: - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-named-asset-import@^0.3.6: - version "0.3.7" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" - integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== - -babel-plugin-polyfill-corejs2@^0.1.4: - version "0.1.10" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz#a2c5c245f56c0cac3dbddbf0726a46b24f0f81d1" - integrity sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA== - dependencies: - "@babel/compat-data" "^7.13.0" - "@babel/helper-define-polyfill-provider" "^0.1.5" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.1.3: - version "0.1.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" - integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.1.5" - core-js-compat "^3.8.1" - -babel-plugin-polyfill-regenerator@^0.1.2: - version "0.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz#0fe06a026fe0faa628ccc8ba3302da0a6ce02f3f" - integrity sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.1.5" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-remove-prop-types@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" - -babel-preset-react-app@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" - integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== - dependencies: - "@babel/core" "7.9.0" - "@babel/plugin-proposal-class-properties" "7.8.3" - "@babel/plugin-proposal-decorators" "7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" - "@babel/plugin-proposal-numeric-separator" "7.8.3" - "@babel/plugin-proposal-optional-chaining" "7.9.0" - "@babel/plugin-transform-flow-strip-types" "7.9.0" - "@babel/plugin-transform-react-display-name" "7.8.3" - "@babel/plugin-transform-runtime" "7.9.0" - "@babel/preset-env" "7.9.0" - "@babel/preset-react" "7.9.1" - "@babel/preset-typescript" "7.9.0" - "@babel/runtime" "7.9.0" - babel-plugin-macros "2.8.0" - babel-plugin-transform-react-remove-prop-types "0.4.24" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -backo2@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" - integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base64id@2.0.0, base64id@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" - integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== - dependencies: - caniuse-lite "^1.0.30001035" - electron-to-chromium "^1.3.378" - node-releases "^1.1.52" - pkg-up "^3.1.0" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== - dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" - escalade "^3.1.1" - node-releases "^1.1.70" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181: - version "1.0.30001202" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz#4cb3bd5e8a808e8cd89e4e66c549989bc8137201" - integrity sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -case-sensitive-paths-webpack-plugin@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" - integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.3.0, chokidar@^3.4.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.1.1, chownr@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= - dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" - integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" - -colorette@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.11.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1, component-emitter@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -confusing-browser-globals@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookie@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" - integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js-compat@^3.6.2, core-js-compat@^3.8.1, core-js-compat@^3.9.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455" - integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA== - dependencies: - browserslist "^4.16.3" - semver "7.0.0" - -core-js-pure@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.1.tgz#677b322267172bd490e4464696f790cbc355bec5" - integrity sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A== - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.5.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae" - integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cors@~2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== - dependencies: - postcss "^7.0.5" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" - -css-loader@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" - integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.23" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.1" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.2" - schema-utils "^2.6.0" - -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - dependencies: - postcss "^7.0.5" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0, css-select@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" - integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@^2.0.0, css@^2.2.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^1.0.0, cssstyle@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" - -csstype@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" - integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" - integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.0.0, data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.1, debug@^3.2.5: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -detect-node@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.5.tgz#9d270aa7eaa5af0b72c4c9d9b814e7f4ce738b79" - integrity sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw== - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz#511e5993dd673b97c87ea47dba0e3892f7e0c983" - integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA== - -dom-accessibility-api@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166" - integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ== - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.649: - version "1.3.691" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.691.tgz#a671eaf135a3ccec0915eb8d844a0952aba79f3b" - integrity sha512-ZqiO69KImmOGCyoH0icQPU3SndJiW93juEvf63gQngyhODO6SpQIPMTOHldtCs5DS5GMKvAkquk230E2zt2vpw== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1, emoji-regex@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -engine.io-client@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-5.0.0.tgz#65733887c8999d280e1dd7f241779a2c66e9559e" - integrity sha512-e6GK0Fqvq45Nu/j7YdIVqXtDPvlsggAcfml3QiEiGdJ1qeh7IQU6knxSN3+yy9BmbnXtIfjo1hK4MFyHKdc9mQ== - dependencies: - base64-arraybuffer "0.1.4" - component-emitter "~1.3.0" - debug "~4.3.1" - engine.io-parser "~4.0.1" - has-cors "1.1.0" - parseqs "0.0.6" - parseuri "0.0.6" - ws "~7.4.2" - yeast "0.1.2" - -engine.io-parser@~4.0.0, engine.io-parser@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.2.tgz#e41d0b3fb66f7bf4a3671d2038a154024edb501e" - integrity sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg== - dependencies: - base64-arraybuffer "0.1.4" - -engine.io@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-5.0.0.tgz#470dc94a8a4907fa4d2cd1fa6611426afcee61bf" - integrity sha512-BATIdDV3H1SrE9/u2BAotvsmjJg0t1P4+vGedImSs1lkFAtQdvk4Ev1y4LDiPF7BPWgXWEG+NDY+nLvW3UrMWw== - dependencies: - accepts "~1.3.4" - base64id "2.0.0" - cookie "~0.4.1" - cors "~2.8.5" - debug "~4.3.1" - engine.io-parser "~4.0.0" - ws "~7.4.2" - -enhanced-resolve@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escodegen@^1.11.0, escodegen@^1.9.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-react-app@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" - integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== - dependencies: - confusing-browser-globals "^1.0.9" - -eslint-import-resolver-node@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-loader@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" - integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== - dependencies: - fs-extra "^8.1.0" - loader-fs-cache "^1.0.2" - loader-utils "^1.2.3" - object-hash "^2.0.1" - schema-utils "^2.6.1" - -eslint-module-utils@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== - dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" - -eslint-plugin-flowtype@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" - integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== - dependencies: - lodash "^4.17.15" - -eslint-plugin-import@2.20.1: - version "2.20.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== - dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.0" - read-pkg-up "^2.0.0" - resolve "^1.12.0" - -eslint-plugin-jsx-a11y@6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== - dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" - ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" - has "^1.0.3" - jsx-ast-utils "^2.2.1" - -eslint-plugin-react-hooks@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" - integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== - -eslint-plugin-react@7.19.0: - version "7.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" - integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== - dependencies: - array-includes "^3.1.1" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.15.1" - semver "^6.3.0" - string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" - integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== - dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^2.0.2: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-loader@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" - integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@4.1.0, find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.13.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" - integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0, glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globby@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -harmony-reflect@^1.4.6: - version "1.6.1" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" - integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-entities@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-webpack-plugin@4.0.0-beta.11: - version "4.0.0-beta.11" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" - integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== - dependencies: - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -htmlparser2@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -immer@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" - integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" - integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^7.0.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== - dependencies: - call-bind "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - -is-buffer@^1.0.2, is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== - dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" - -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" - source-map "^0.6.1" - -istanbul-reports@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== - dependencies: - html-escaper "^2.0.0" - -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== - dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" - -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== - dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - exit "^0.1.2" - import-local "^2.0.0" - is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" - -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" - -jest-diff@^24.0.0, jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== - dependencies: - detect-newline "^2.1.0" - -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== - dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - -jest-environment-jsdom-fourteen@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" - integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== - dependencies: - "@jest/environment" "^24.3.0" - "@jest/fake-timers" "^24.3.0" - "@jest/types" "^24.3.0" - jest-mock "^24.0.0" - jest-util "^24.0.0" - jsdom "^14.1.0" - -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" - -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== - -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^24.9.0" - is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" - -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== - dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== - dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - -jest-mock@^24.0.0, jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== - dependencies: - "@jest/types" "^24.9.0" - -jest-pnp-resolver@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== - -jest-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== - dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" - -jest-resolve@24.9.0, jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== - dependencies: - "@jest/types" "^24.9.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" - -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" - -jest-util@^24.0.0, jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== - dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" - leven "^3.1.0" - pretty-format "^24.9.0" - -jest-watch-typeahead@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" - integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.1" - jest-regex-util "^24.9.0" - jest-watcher "^24.3.0" - slash "^3.0.0" - string-length "^3.1.0" - strip-ansi "^5.0.0" - -jest-watcher@^24.3.0, jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== - dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" - -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^25.1.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== - dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - -jsdom@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" - integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== - dependencies: - abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" - array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.0" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.1.3" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^2.5.0" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^6.1.2" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: - version "2.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" - integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== - dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-fs-cache@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.template@^4.4.0, lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.6.6: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-deep@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.3.tgz#1a2b2ae926da8b2ae93a0ac15d90cd1922766003" - integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== - dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": - version "1.46.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" - integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.29" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" - integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== - dependencies: - mime-db "1.46.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-css-extract-plugin@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" - integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^5.4.2: - version "5.4.5" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" - integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - -node-releases@^1.1.52, node-releases@^1.1.70: - version "1.1.71" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -nwsapi@^2.0.7, nwsapi@^2.1.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09" - integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ== - -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-path@0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.0, object.entries@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" - integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - has "^1.0.3" - -object.fromentries@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0, object.values@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" - integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^7.0.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" - integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1, optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - -parseqs@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" - integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== - -parseuri@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" - integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@3.1.0, pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -pnp-webpack-plugin@1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -portfinder@^1.0.25: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" - -postcss-browser-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" - integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== - dependencies: - postcss "^7" - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-gray@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" - -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== - dependencies: - postcss "^7.0.14" - -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== - dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" - -postcss-custom-selectors@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-flexbugs-fixes@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" - integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== - dependencies: - postcss "^7.0.0" - -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - dependencies: - postcss "^7.0.2" - -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - dependencies: - postcss "^7.0.2" - -postcss-font-variant@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" - integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== - dependencies: - postcss "^7.0.2" - -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== - dependencies: - postcss "^7.0.2" - -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-initial@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" - integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== - dependencies: - lodash.template "^4.5.0" - postcss "^7.0.2" - -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" - -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== - dependencies: - postcss "^7.0.2" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" - integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== - dependencies: - "@csstools/normalize.css" "^10.1.0" - browserslist "^4.6.2" - postcss "^7.0.17" - postcss-browser-comments "^3.0.0" - sanitize.css "^10.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - dependencies: - postcss "^7.0.2" - -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" - -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== - dependencies: - postcss "^7.0.2" - -postcss-safe-parser@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" - integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== - dependencies: - postcss "^7.0.0" - -postcss-selector-matches@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-not@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" - integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss@7.0.21: - version "7.0.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" - integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -pretty-bytes@^5.1.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^25.1.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -prompts@^2.0.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-app-polyfill@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" - integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== - dependencies: - core-js "^3.5.0" - object-assign "^4.1.1" - promise "^8.0.3" - raf "^3.4.1" - regenerator-runtime "^0.13.3" - whatwg-fetch "^3.0.0" - -react-dev-utils@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" - integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== - dependencies: - "@babel/code-frame" "7.8.3" - address "1.1.2" - browserslist "4.10.0" - chalk "2.4.2" - cross-spawn "7.0.1" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.0.1" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "3.1.1" - global-modules "2.0.0" - globby "8.0.2" - gzip-size "5.1.1" - immer "1.10.0" - inquirer "7.0.4" - is-root "2.1.0" - loader-utils "1.2.3" - open "^7.0.2" - pkg-up "3.1.0" - react-error-overlay "^6.0.7" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - -react-dom@^16.13.1: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" - integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-error-overlay@^6.0.7: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== - -react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.4: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== - -react-scripts@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.1.tgz#f551298b5c71985cc491b9acf3c8e8c0ae3ada0a" - integrity sha512-JpTdi/0Sfd31mZA6Ukx+lq5j1JoKItX7qqEK4OiACjVQletM1P38g49d9/D0yTxp9FrSF+xpJFStkGgKEIRjlQ== - dependencies: - "@babel/core" "7.9.0" - "@svgr/webpack" "4.3.3" - "@typescript-eslint/eslint-plugin" "^2.10.0" - "@typescript-eslint/parser" "^2.10.0" - babel-eslint "10.1.0" - babel-jest "^24.9.0" - babel-loader "8.1.0" - babel-plugin-named-asset-import "^0.3.6" - babel-preset-react-app "^9.1.2" - camelcase "^5.3.1" - case-sensitive-paths-webpack-plugin "2.3.0" - css-loader "3.4.2" - dotenv "8.2.0" - dotenv-expand "5.1.0" - eslint "^6.6.0" - eslint-config-react-app "^5.2.1" - eslint-loader "3.0.3" - eslint-plugin-flowtype "4.6.0" - eslint-plugin-import "2.20.1" - eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.19.0" - eslint-plugin-react-hooks "^1.6.1" - file-loader "4.3.0" - fs-extra "^8.1.0" - html-webpack-plugin "4.0.0-beta.11" - identity-obj-proxy "3.0.0" - jest "24.9.0" - jest-environment-jsdom-fourteen "1.0.1" - jest-resolve "24.9.0" - jest-watch-typeahead "0.4.2" - mini-css-extract-plugin "0.9.0" - optimize-css-assets-webpack-plugin "5.0.3" - pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "4.1.0" - postcss-loader "3.0.0" - postcss-normalize "8.0.1" - postcss-preset-env "6.7.0" - postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.6" - react-dev-utils "^10.2.1" - resolve "1.15.0" - resolve-url-loader "3.1.1" - sass-loader "8.0.2" - semver "6.3.0" - style-loader "0.23.1" - terser-webpack-plugin "2.3.5" - ts-pnp "1.1.6" - url-loader "2.3.0" - webpack "4.42.0" - webpack-dev-server "3.10.3" - webpack-manifest-plugin "2.2.0" - workbox-webpack-plugin "4.3.1" - optionalDependencies: - fsevents "2.1.2" - -react@^16.13.1: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" - integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regex-parser@2.2.10: - version "2.2.10" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" - integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.7" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" - integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" - integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== - dependencies: - css-select "^2.0.2" - dom-converter "^0.2" - htmlparser2 "^3.10.1" - lodash "^4.17.20" - strip-ansi "^3.0.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.87.0, request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url-loader@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" - integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== - dependencies: - adjust-sourcemap-loader "2.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.21" - rework "1.0.1" - rework-visit "1.0.0" - source-map "0.6.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" - integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== - dependencies: - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -run-async@^2.2.0, run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rxjs@^6.5.3, rxjs@^6.6.0: - version "6.6.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" - integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sanitize.css@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" - integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== - -sass-loader@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" - integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== - dependencies: - clone-deep "^4.0.1" - loader-utils "^1.2.3" - neo-async "^2.6.1" - schema-utils "^2.6.1" - semver "^6.3.0" - -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.7: - version "1.10.8" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" - integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== - dependencies: - node-forge "^0.10.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@6.3.0, semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^7.3.2: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socket.io-adapter@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.2.0.tgz#43af9157c4609e74b8addc6867873ac7eb48fda2" - integrity sha512-rG49L+FwaVEwuAdeBRq49M97YI3ElVabJPzvHT9S6a2CWhDKnjSFasvwAwSYPRhQzfn4NtDIbCaGYgOCOU/rlg== - -socket.io-client@4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.0.0.tgz#643cc25e5b5bbe37be75ecd317156a3335bb495a" - integrity sha512-27yQxmXJAEYF19Ygyl8FPJ0if0wegpSmkIIbrWJeI7n7ST1JyH8bbD5v3fjjGY5cfCanACJ3dARUAyiVFNrlTQ== - dependencies: - "@types/component-emitter" "^1.2.10" - backo2 "~1.0.2" - component-emitter "~1.3.0" - debug "~4.3.1" - engine.io-client "~5.0.0" - parseuri "0.0.6" - socket.io-parser "~4.0.4" - -socket.io-parser@~4.0.3, socket.io-parser@~4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0" - integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g== - dependencies: - "@types/component-emitter" "^1.2.10" - component-emitter "~1.3.0" - debug "~4.3.1" - -socket.io@4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.0.0.tgz#ee484a95dc6a38698491aaf63b6ec1f3ceeac0a8" - integrity sha512-/c1riZMV/4yz7KEpaMhDQbwhJDIoO55whXaRKgyEBQrLU9zUHXo9rzeTMvTOqwL9mbKfHKdrXcMoCeQ/1YtMsg== - dependencies: - "@types/cookie" "^0.4.0" - "@types/cors" "^2.8.8" - "@types/node" ">=10.0.0" - accepts "~1.3.4" - base64id "~2.0.0" - debug "~4.3.1" - engine.io "~5.0.0" - socket.io-adapter "~2.2.0" - socket.io-parser "~4.0.3" - -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.4.tgz#4b600971dcfc6aed0cbdf2a8268177cc916c87c8" - integrity sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.matchall@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" - integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has-symbols "^1.0.1" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@6.0.0, strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svg-parser@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^1.0.0, svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-tree@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" - integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.2.0" - jest-worker "^25.1.0" - p-limit "^2.2.2" - schema-utils "^2.6.4" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.4.3" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.4.3, terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -ts-pnp@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" - integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== - -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - -tsutils@^3.17.1: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -unbox-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" - integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.0" - has-symbols "^1.0.0" - which-boxed-primitive "^1.0.1" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" - -url-parse@^1.4.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" - integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.0.1, uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -w3c-hr-time@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - -wait-for-expect@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.2.tgz#d2f14b2f7b778c9b82144109c8fa89ceaadaa463" - integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag== - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.6.0: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.10.3: - version "3.10.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" - integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.6" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.25" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.4.0" - spdy "^4.0.1" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "12.0.5" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-manifest-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" - integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== - dependencies: - fs-extra "^7.0.0" - lodash ">=3.5 <5" - object.entries "^1.1.0" - tapable "^1.0.0" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.42.0: - version "4.42.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" - integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-boxed-primitive@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9, which@^1.3.0, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -workbox-background-sync@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" - integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== - dependencies: - workbox-core "^4.3.1" - -workbox-broadcast-update@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" - integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== - dependencies: - workbox-core "^4.3.1" - -workbox-build@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" - integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== - dependencies: - "@babel/runtime" "^7.3.4" - "@hapi/joi" "^15.0.0" - common-tags "^1.8.0" - fs-extra "^4.0.2" - glob "^7.1.3" - lodash.template "^4.4.0" - pretty-bytes "^5.1.0" - stringify-object "^3.3.0" - strip-comments "^1.0.2" - workbox-background-sync "^4.3.1" - workbox-broadcast-update "^4.3.1" - workbox-cacheable-response "^4.3.1" - workbox-core "^4.3.1" - workbox-expiration "^4.3.1" - workbox-google-analytics "^4.3.1" - workbox-navigation-preload "^4.3.1" - workbox-precaching "^4.3.1" - workbox-range-requests "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - workbox-streams "^4.3.1" - workbox-sw "^4.3.1" - workbox-window "^4.3.1" - -workbox-cacheable-response@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" - integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== - dependencies: - workbox-core "^4.3.1" - -workbox-core@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" - integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== - -workbox-expiration@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" - integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== - dependencies: - workbox-core "^4.3.1" - -workbox-google-analytics@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" - integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== - dependencies: - workbox-background-sync "^4.3.1" - workbox-core "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - -workbox-navigation-preload@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" - integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== - dependencies: - workbox-core "^4.3.1" - -workbox-precaching@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" - integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== - dependencies: - workbox-core "^4.3.1" - -workbox-range-requests@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" - integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== - dependencies: - workbox-core "^4.3.1" - -workbox-routing@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" - integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== - dependencies: - workbox-core "^4.3.1" - -workbox-strategies@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" - integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== - dependencies: - workbox-core "^4.3.1" - -workbox-streams@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" - integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== - dependencies: - workbox-core "^4.3.1" - -workbox-sw@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" - integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== - -workbox-webpack-plugin@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" - integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== - dependencies: - "@babel/runtime" "^7.0.0" - json-stable-stringify "^1.0.1" - workbox-build "^4.3.1" - -workbox-window@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" - integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== - dependencies: - workbox-core "^4.3.1" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.1.2, ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@~7.4.2: - version "7.4.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" - integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xregexp@^4.3.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.1.tgz#c84a88fa79e9ab18ca543959712094492185fe65" - integrity sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag== - dependencies: - "@babel/runtime-corejs3" "^7.12.1" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= diff --git a/examples/custom-parsers/README.md b/examples/custom-parsers/README.md deleted file mode 100644 index 519815d8fe..0000000000 --- a/examples/custom-parsers/README.md +++ /dev/null @@ -1,50 +0,0 @@ - -# Socket.IO custom parsers - -Since Socket.IO version 2.0.0, you can provide your custom parser, according to the needs of your application. - -Several parsers are showcased here: - -- the default one: [socket.io-parser](https://github.com/socketio/socket.io-parser) -- one based on msgpack: [socket.io-msgpack-parser](https://github.com/darrachequesne/socket.io-msgpack-parser) -- one based on native JSON: [socket.io-json-parser](https://github.com/darrachequesne/socket.io-json-parser) -- a custom one based on [schemapack](https://github.com/phretaddin/schemapack) - -They are tested with various payloads: - -- string: `['1', '2', ... '1000']` -- numeric: `[1, 2, ... 1000]` -- binary: `Buffer.allocUnsafe(1000), where buf[i] = i` - -## How to use - -``` -$ npm i && npm start -``` - -## Results - -| bytes / packet | CONNECT packet | string | numeric | binary | -|----------------|----------------|--------|---------|-----------| -| default | 1 | 5903 | 3904 | 43 + 1000 | -| msgpack | 20 | 3919 | 2646 | 1029 | -| JSON | 20 | 5930 | 3931 | 3625 | -| schemapack | 20 | 3895 | 2005 | 1005 | - -## Comparison - -`default parser` -- supports any serializable datastructure, including Blob and File -- **but** binary payload is encoded as 2 packets - -`msgpack` -- the size of payloads containing mostly numeric values will be greatly reduced -- **but** rely on [ArrayBuffer](https://caniuse.com/#feat=typedarrays) in the browser (IE > 9) - -`JSON` -- optimized -- **but** does not support binary payloads - -`schemapack` -- the most efficient in both speed and size -- **but** you have to provide a schema for each packet diff --git a/examples/custom-parsers/package.json b/examples/custom-parsers/package.json deleted file mode 100644 index 3953623d83..0000000000 --- a/examples/custom-parsers/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "parsers", - "version": "1.0.0", - "description": "Various socket.io parsers", - "scripts": { - "build": "webpack --config ./support/webpack.config.js", - "start": "npm run build && node ./src/server.js" - }, - "author": "Damien Arrachequesne", - "license": "MIT", - "dependencies": { - "component-emitter": "^1.2.1", - "express": "^4.15.2", - "schemapack": "^1.4.2", - "socket.io": "^4.0.0", - "socket.io-client": "^4.0.0", - "socket.io-json-parser": "^3.0.0", - "socket.io-msgpack-parser": "^3.0.1", - "webpack": "^2.4.1" - } -} diff --git a/examples/custom-parsers/public/.gitignore b/examples/custom-parsers/public/.gitignore deleted file mode 100644 index ac2de2b8fd..0000000000 --- a/examples/custom-parsers/public/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.bundle.js diff --git a/examples/custom-parsers/public/index.html b/examples/custom-parsers/public/index.html deleted file mode 100644 index a0cb336744..0000000000 --- a/examples/custom-parsers/public/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - Socket.IO custom parsers - - - - - - - - diff --git a/examples/custom-parsers/src/client1.js b/examples/custom-parsers/src/client1.js deleted file mode 100644 index f73f775c64..0000000000 --- a/examples/custom-parsers/src/client1.js +++ /dev/null @@ -1,8 +0,0 @@ - -const socket = require('socket.io-client')('localhost:3001', {}); - -socket.io.engine.on('data', (data) => console.log('[default]' + ' size= ' + (typeof data === 'string' ? data.length : data.byteLength))); - -socket.on('string', (data) => console.log('[default] [string]', data)); -socket.on('numeric', (data) => console.log('[default] [numeric]', data)); -socket.on('binary', (data) => console.log('[default] [binary]', data)); diff --git a/examples/custom-parsers/src/client2.js b/examples/custom-parsers/src/client2.js deleted file mode 100644 index a98af8b1d2..0000000000 --- a/examples/custom-parsers/src/client2.js +++ /dev/null @@ -1,11 +0,0 @@ - -const customParser = require('socket.io-msgpack-parser'); -const socket = require('socket.io-client')('http://localhost:3002/', { - parser: customParser -}); - -socket.io.engine.on('data', (data) => console.log('[msgpack]' + ' size= ' + (typeof data === 'string' ? data.length : data.byteLength))); - -socket.on('string', (data) => console.log('[msgpack] [string]', data)); -socket.on('numeric', (data) => console.log('[msgpack] [numeric]', data)); -socket.on('binary', (data) => console.log('[msgpack] [binary]', data)); diff --git a/examples/custom-parsers/src/client3.js b/examples/custom-parsers/src/client3.js deleted file mode 100644 index 9bfb6c68dd..0000000000 --- a/examples/custom-parsers/src/client3.js +++ /dev/null @@ -1,11 +0,0 @@ - -const customParser = require('socket.io-json-parser'); -const socket = require('socket.io-client')('localhost:3003', { - parser: customParser -}); - -socket.io.engine.on('data', (data) => console.log('[json]' + ' size= ' + (typeof data === 'string' ? data.length : data.byteLength))); - -socket.on('string', (data) => console.log('[json] [string]', data)); -socket.on('numeric', (data) => console.log('[json] [numeric]', data)); -socket.on('binary', (data) => console.log('[json] [binary]', data)); diff --git a/examples/custom-parsers/src/client4.js b/examples/custom-parsers/src/client4.js deleted file mode 100644 index b44168ac17..0000000000 --- a/examples/custom-parsers/src/client4.js +++ /dev/null @@ -1,11 +0,0 @@ - -const customParser = require('./custom-parser'); -const socket = require('socket.io-client')('localhost:3004', { - parser: customParser -}); - -socket.io.engine.on('data', (data) => console.log('[custom]' + ' size= ' + (typeof data === 'string' ? data.length : data.byteLength))); - -socket.on('string', (data) => console.log('[custom] [string]', data)); -socket.on('numeric', (data) => console.log('[custom] [numeric]', data)); -socket.on('binary', (data) => console.log('[custom] [binary]', data)); diff --git a/examples/custom-parsers/src/custom-parser.js b/examples/custom-parsers/src/custom-parser.js deleted file mode 100644 index 02918b6d16..0000000000 --- a/examples/custom-parsers/src/custom-parser.js +++ /dev/null @@ -1,125 +0,0 @@ - -const Emitter = require('component-emitter'); -const schemapack = require('schemapack'); - -/** - * Packet types (see https://github.com/socketio/socket.io-protocol) - */ - -const TYPES = { - CONNECT: 0, - DISCONNECT: 1, - EVENT: 2, - ACK: 3, - ERROR: 4, - BINARY_EVENT: 5, - BINARY_ACK: 6 -}; - -const stringSchema = schemapack.build({ - _id: 'uint8', - data: [ 'string' ], - nsp: 'string' -}); - -const numericSchema = schemapack.build({ - _id: 'uint8', - data: [ 'uint16' ], - nsp: 'string' -}); - -const binarySchema = schemapack.build({ - _id: 'uint8', - data: 'buffer', - nsp: 'string' -}); - -const errorPacket = { - type: TYPES.ERROR, - data: 'parser error' -}; - -class Encoder { - encode (packet) { - switch (packet.type) { - case TYPES.EVENT: - return [ this.pack(packet) ]; - default: - return [ JSON.stringify(packet) ]; - } - } - pack (packet) { - let eventName = packet.data[0]; - let flatPacket = { - data: packet.data[1], - nsp: packet.nsp - }; - switch (eventName) { - case 'string': - flatPacket._id = 1; - return stringSchema.encode(flatPacket); - case 'numeric': - flatPacket._id = 2; - return numericSchema.encode(flatPacket); - case 'binary': - flatPacket._id = 3; - return binarySchema.encode(flatPacket); - default: - throw new Error('unknown event name: ' + eventName); - } - } -} - -class Decoder extends Emitter { - add (obj) { - if (typeof obj === 'string') { - this.parseJSON(obj); - } else { - this.parseBinary(obj); - } - } - parseJSON (obj) { - try { - let decoded = JSON.parse(obj); - this.emit('decoded', decoded); - } catch (e) { - this.emit('decoded', errorPacket); - } - } - parseBinary (obj) { - let view = new Uint8Array(obj); - let packetId = view[0]; - try { - let packet = { - type: TYPES.EVENT - }; - let decoded; - switch (packetId) { - case 1: - decoded = stringSchema.decode(obj); - packet.data = [ 'string', decoded.data ]; - packet.nsp = decoded.nsp; - break; - case 2: - decoded = numericSchema.decode(obj); - packet.data = [ 'numeric', decoded.data ]; - packet.nsp = decoded.nsp; - break; - case 3: - decoded = binarySchema.decode(obj); - packet.data = [ 'binary', decoded.data.buffer ]; - packet.nsp = decoded.nsp; - break; - default: - throw new Error('unknown type'); - } - this.emit('decoded', packet); - } catch (e) { - this.emit('decoded', errorPacket); - } - } - destroy () {} -} - -exports.Encoder = Encoder; -exports.Decoder = Decoder; diff --git a/examples/custom-parsers/src/server.js b/examples/custom-parsers/src/server.js deleted file mode 100644 index ff80542c96..0000000000 --- a/examples/custom-parsers/src/server.js +++ /dev/null @@ -1,62 +0,0 @@ - -const express = require('express'); -const app = express(); -const server = require('http').createServer(app); -const path = require('path'); -const port = process.env.PORT || 3000; - -app.use(express.static(path.join(__dirname, '../public'))); - -server.listen(port, () => console.log('>>> http://localhost:' + port)); - -const io = require('socket.io'); -const msgpackParser = require('socket.io-msgpack-parser'); -const jsonParser = require('socket.io-json-parser'); -const customParser = require('./custom-parser'); - -const cors = { - origin: ["http://localhost:3000/"] -} - -let server1 = io(3001, { cors }); -let server2 = io(3002, { - parser: msgpackParser, - cors -}); -let server3 = io(3003, { - parser: jsonParser, - cors -}); -let server4 = io(3004, { - parser: customParser, - cors -}); - -let string = []; -let numeric = []; -let binary = Buffer.allocUnsafe(1e3); -for (var i = 0; i < 1e3; i++) { - string.push('' + i); - numeric.push(i); - binary[i] = i; -} - -server1.on('connect', onConnect(1000)); -server2.on('connect', onConnect(2000)); -server3.on('connect', onConnect(3000)); -server4.on('connect', onConnect(4000)); - -function onConnect (delay) { - return function (socket) { - console.log('connect ' + socket.id); - - setTimeout(() => { - socket.emit('string', string); - socket.emit('numeric', numeric); - socket.emit('binary', binary); - }, delay); - - socket.on('disconnect', () => console.log('disconnect ' + socket.id)); - }; -} - diff --git a/examples/custom-parsers/support/webpack.config.js b/examples/custom-parsers/support/webpack.config.js deleted file mode 100644 index 34dcc13308..0000000000 --- a/examples/custom-parsers/support/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ - -const path = require('path'); - -module.exports = { - entry: { - client1: './src/client1.js', - client2: './src/client2.js', - client3: './src/client3.js', - client4: './src/client4.js' - }, - output: { - path: path.resolve(__dirname, '../public'), - filename: '[name].bundle.js' - } -}; diff --git a/examples/es-modules/README.md b/examples/es-modules/README.md deleted file mode 100644 index 2bed289507..0000000000 --- a/examples/es-modules/README.md +++ /dev/null @@ -1,17 +0,0 @@ - -# Example with [ES modules](https://nodejs.org/api/esm.html) - -## How to use - -``` -# install the dependencies -$ npm ci - -# start the server -$ node server.js - -# start the client -$ node client.js -``` - -You need Node.js `>=12.17.0`. diff --git a/examples/es-modules/client.js b/examples/es-modules/client.js deleted file mode 100644 index 23dcbf4b73..0000000000 --- a/examples/es-modules/client.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Manager } from "socket.io-client"; - -const manager = new Manager("ws://localhost:8080"); -const socket = manager.socket("/"); - -socket.on("connect", () => { - console.log(`connect ${socket.id}`); -}); - -socket.on("disconnect", () => { - console.log(`disconnect`); -}); - -setInterval(() => { - socket.emit("ping", () => { - console.log("pong"); - }); -}, 1000); diff --git a/examples/es-modules/package.json b/examples/es-modules/package.json deleted file mode 100644 index 0b4d67ae28..0000000000 --- a/examples/es-modules/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "es-modules", - "version": "1.0.0", - "description": "An example with ES modules (https://nodejs.org/api/esm.html)", - "type": "module", - "author": "Damien Arrachequesne", - "license": "MIT", - "engines": { - "node": ">=12.17.0" - }, - "dependencies": { - "socket.io": "^4.0.0", - "socket.io-client": "^4.0.0" - } -} diff --git a/examples/es-modules/server.js b/examples/es-modules/server.js deleted file mode 100644 index 3fffbee484..0000000000 --- a/examples/es-modules/server.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Server } from "socket.io"; - -const io = new Server(8080); - -io.on("connect", (socket) => { - console.log(`connect ${socket.id}`); - - socket.on("ping", (cb) => { - console.log("ping"); - cb(); - }); - - socket.on("disconnect", () => { - console.log(`disconnect ${socket.id}`); - }); -}); diff --git a/examples/passport-example/README.md b/examples/passport-example/README.md deleted file mode 100644 index 9427a67525..0000000000 --- a/examples/passport-example/README.md +++ /dev/null @@ -1,14 +0,0 @@ - -# Example with [Passport](http://www.passportjs.org/) - -This example shows how to retrieve the authentication context from a basic [Express](http://expressjs.com/) + [Passport](http://www.passportjs.org/) application. - -![Passport example](assets/passport_example.gif) - -## How to use - -``` -$ npm ci && npm start -``` - -And point your browser to `http://localhost:3000`. Optionally, specify a port by supplying the `PORT` env variable. diff --git a/examples/passport-example/assets/passport_example.gif b/examples/passport-example/assets/passport_example.gif deleted file mode 100644 index 3a3ccce4a1..0000000000 Binary files a/examples/passport-example/assets/passport_example.gif and /dev/null differ diff --git a/examples/passport-example/index.html b/examples/passport-example/index.html deleted file mode 100644 index aa24d1b8fd..0000000000 --- a/examples/passport-example/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Passport example - - -

            Authenticated!

            -

            Socket ID:

            -

            Username:

            -
            -
            - -
            -
            - - - - diff --git a/examples/passport-example/index.js b/examples/passport-example/index.js deleted file mode 100644 index 0c054d58d8..0000000000 --- a/examples/passport-example/index.js +++ /dev/null @@ -1,104 +0,0 @@ -const app = require("express")(); -const server = require("http").createServer(app); -const port = process.env.PORT || 3000; - -const session = require("express-session"); -const bodyParser = require("body-parser"); -const passport = require("passport"); -const LocalStrategy = require("passport-local").Strategy; - -const sessionMiddleware = session({ secret: "changeit", resave: false, saveUninitialized: false }); -app.use(sessionMiddleware); -app.use(bodyParser.urlencoded({ extended: false })); -app.use(passport.initialize()); -app.use(passport.session()); - -const DUMMY_USER = { - id: 1, - username: "john", -}; - -passport.use( - new LocalStrategy((username, password, done) => { - if (username === "john" && password === "doe") { - console.log("authentication OK"); - return done(null, DUMMY_USER); - } else { - console.log("wrong credentials"); - return done(null, false); - } - }) -); - -app.get("/", (req, res) => { - const isAuthenticated = !!req.user; - if (isAuthenticated) { - console.log(`user is authenticated, session is ${req.session.id}`); - } else { - console.log("unknown user"); - } - res.sendFile(isAuthenticated ? "index.html" : "login.html", { root: __dirname }); -}); - -app.post( - "/login", - passport.authenticate("local", { - successRedirect: "/", - failureRedirect: "/", - }) -); - -app.post("/logout", (req, res) => { - console.log(`logout ${req.session.id}`); - const socketId = req.session.socketId; - if (socketId && io.of("/").sockets.get(socketId)) { - console.log(`forcefully closing socket ${socketId}`); - io.of("/").sockets.get(socketId).disconnect(true); - } - req.logout(); - res.cookie("connect.sid", "", { expires: new Date() }); - res.redirect("/"); -}); - -passport.serializeUser((user, cb) => { - console.log(`serializeUser ${user.id}`); - cb(null, user.id); -}); - -passport.deserializeUser((id, cb) => { - console.log(`deserializeUser ${id}`); - cb(null, DUMMY_USER); -}); - -const io = require('socket.io')(server); - -// convert a connect middleware to a Socket.IO middleware -const wrap = middleware => (socket, next) => middleware(socket.request, {}, next); - -io.use(wrap(sessionMiddleware)); -io.use(wrap(passport.initialize())); -io.use(wrap(passport.session())); - -io.use((socket, next) => { - if (socket.request.user) { - next(); - } else { - next(new Error('unauthorized')) - } -}); - -io.on('connect', (socket) => { - console.log(`new connection ${socket.id}`); - socket.on('whoami', (cb) => { - cb(socket.request.user ? socket.request.user.username : ''); - }); - - const session = socket.request.session; - console.log(`saving sid ${socket.id} in session ${session.id}`); - session.socketId = socket.id; - session.save(); -}); - -server.listen(port, () => { - console.log(`application is running at: http://localhost:${port}`); -}); diff --git a/examples/passport-example/login.html b/examples/passport-example/login.html deleted file mode 100644 index 9a394519e3..0000000000 --- a/examples/passport-example/login.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Passport example - - -

            Not authenticated

            -
            -
            - - -
            -
            -
            - - -
            -
            - -
            -
            - - \ No newline at end of file diff --git a/examples/passport-example/package.json b/examples/passport-example/package.json deleted file mode 100644 index 58ad8f7130..0000000000 --- a/examples/passport-example/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "passport-example", - "version": "0.0.1", - "description": "Example with Passport (http://www.passportjs.org/)", - "dependencies": { - "body-parser": "~1.19.0", - "express": "~4.17.1", - "express-session": "~1.17.1", - "passport": "~0.4.1", - "passport-local": "~1.0.0", - "socket.io": "^4.0.0" - }, - "scripts": { - "start": "node index.js" - } -} diff --git a/examples/private-messaging/.gitignore b/examples/private-messaging/.gitignore deleted file mode 100644 index 86936ae447..0000000000 --- a/examples/private-messaging/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -.DS_Store -node_modules -/dist - - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? -package-lock.json diff --git a/examples/private-messaging/README.md b/examples/private-messaging/README.md deleted file mode 100644 index ef2814ca0f..0000000000 --- a/examples/private-messaging/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Private messaging with Socket.IO - -Please read the related guide: - -- [Part I](https://socket.io/get-started/private-messaging-part-1/): initial implementation -- [Part II](https://socket.io/get-started/private-messaging-part-2/): persistent user ID -- [Part III](https://socket.io/get-started/private-messaging-part-3/): persistent messages -- [Part IV](https://socket.io/get-started/private-messaging-part-4/): scaling up - -## Running the frontend - -``` -npm install -npm run serve -``` - -### Running the server - -``` -cd server -npm install -npm start -``` diff --git a/examples/private-messaging/babel.config.js b/examples/private-messaging/babel.config.js deleted file mode 100644 index e9558405fd..0000000000 --- a/examples/private-messaging/babel.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - presets: [ - '@vue/cli-plugin-babel/preset' - ] -} diff --git a/examples/private-messaging/package.json b/examples/private-messaging/package.json deleted file mode 100644 index 11ec77eaa0..0000000000 --- a/examples/private-messaging/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "private-messaging", - "version": "0.1.0", - "private": true, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint" - }, - "dependencies": { - "core-js": "^3.6.5", - "socket.io-client": "^4.0.0", - "vue": "^2.6.11" - }, - "devDependencies": { - "@vue/cli-plugin-babel": "~4.5.0", - "@vue/cli-plugin-eslint": "~4.5.0", - "@vue/cli-service": "~4.5.0", - "babel-eslint": "^10.1.0", - "eslint": "^6.7.2", - "eslint-plugin-vue": "^6.2.2", - "vue-template-compiler": "^2.6.11" - }, - "eslintConfig": { - "root": true, - "env": { - "node": true - }, - "extends": [ - "plugin:vue/essential", - "eslint:recommended" - ], - "parserOptions": { - "parser": "babel-eslint" - }, - "rules": {} - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not dead" - ] -} diff --git a/examples/private-messaging/public/favicon.ico b/examples/private-messaging/public/favicon.ico deleted file mode 100644 index df36fcfb72..0000000000 Binary files a/examples/private-messaging/public/favicon.ico and /dev/null differ diff --git a/examples/private-messaging/public/fonts/Lato-Regular.ttf b/examples/private-messaging/public/fonts/Lato-Regular.ttf deleted file mode 100644 index 33eba8b192..0000000000 Binary files a/examples/private-messaging/public/fonts/Lato-Regular.ttf and /dev/null differ diff --git a/examples/private-messaging/public/index.html b/examples/private-messaging/public/index.html deleted file mode 100644 index 7de38437e0..0000000000 --- a/examples/private-messaging/public/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - Private messaging with Socket.IO - - - -
            - - - diff --git a/examples/private-messaging/server/cluster.js b/examples/private-messaging/server/cluster.js deleted file mode 100644 index e3bad09f8c..0000000000 --- a/examples/private-messaging/server/cluster.js +++ /dev/null @@ -1,31 +0,0 @@ -const cluster = require("cluster"); -const http = require("http"); -const { setupMaster } = require("@socket.io/sticky"); - -const WORKERS_COUNT = 4; - -if (cluster.isMaster) { - console.log(`Master ${process.pid} is running`); - - for (let i = 0; i < WORKERS_COUNT; i++) { - cluster.fork(); - } - - cluster.on("exit", (worker) => { - console.log(`Worker ${worker.process.pid} died`); - cluster.fork(); - }); - - const httpServer = http.createServer(); - setupMaster(httpServer, { - loadBalancingMethod: "least-connection", // either "random", "round-robin" or "least-connection" - }); - const PORT = process.env.PORT || 3000; - - httpServer.listen(PORT, () => - console.log(`server listening at http://localhost:${PORT}`) - ); -} else { - console.log(`Worker ${process.pid} started`); - require("./index"); -} diff --git a/examples/private-messaging/server/docker-compose.yml b/examples/private-messaging/server/docker-compose.yml deleted file mode 100644 index 4845950cf6..0000000000 --- a/examples/private-messaging/server/docker-compose.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: "3" - -services: - redis: - image: redis:5 - ports: - - "6379:6379" diff --git a/examples/private-messaging/server/index.js b/examples/private-messaging/server/index.js deleted file mode 100644 index 1ab99be5c4..0000000000 --- a/examples/private-messaging/server/index.js +++ /dev/null @@ -1,125 +0,0 @@ -const httpServer = require("http").createServer(); -const Redis = require("ioredis"); -const redisClient = new Redis(); -const io = require("socket.io")(httpServer, { - cors: { - origin: "http://localhost:8080/", - }, - adapter: require("socket.io-redis")({ - pubClient: redisClient, - subClient: redisClient.duplicate(), - }), -}); - -const { setupWorker } = require("@socket.io/sticky"); -const crypto = require("crypto"); -const randomId = () => crypto.randomBytes(8).toString("hex"); - -const { RedisSessionStore } = require("./sessionStore"); -const sessionStore = new RedisSessionStore(redisClient); - -const { RedisMessageStore } = require("./messageStore"); -const messageStore = new RedisMessageStore(redisClient); - -io.use(async (socket, next) => { - const sessionID = socket.handshake.auth.sessionID; - if (sessionID) { - const session = await sessionStore.findSession(sessionID); - if (session) { - socket.sessionID = sessionID; - socket.userID = session.userID; - socket.username = session.username; - return next(); - } - } - const username = socket.handshake.auth.username; - if (!username) { - return next(new Error("invalid username")); - } - socket.sessionID = randomId(); - socket.userID = randomId(); - socket.username = username; - next(); -}); - -io.on("connection", async (socket) => { - // persist session - sessionStore.saveSession(socket.sessionID, { - userID: socket.userID, - username: socket.username, - connected: true, - }); - - // emit session details - socket.emit("session", { - sessionID: socket.sessionID, - userID: socket.userID, - }); - - // join the "userID" room - socket.join(socket.userID); - - // fetch existing users - const users = []; - const [messages, sessions] = await Promise.all([ - messageStore.findMessagesForUser(socket.userID), - sessionStore.findAllSessions(), - ]); - const messagesPerUser = new Map(); - messages.forEach((message) => { - const { from, to } = message; - const otherUser = socket.userID === from ? to : from; - if (messagesPerUser.has(otherUser)) { - messagesPerUser.get(otherUser).push(message); - } else { - messagesPerUser.set(otherUser, [message]); - } - }); - - sessions.forEach((session) => { - users.push({ - userID: session.userID, - username: session.username, - connected: session.connected, - messages: messagesPerUser.get(session.userID) || [], - }); - }); - socket.emit("users", users); - - // notify existing users - socket.broadcast.emit("user connected", { - userID: socket.userID, - username: socket.username, - connected: true, - messages: [], - }); - - // forward the private message to the right recipient (and to other tabs of the sender) - socket.on("private message", ({ content, to }) => { - const message = { - content, - from: socket.userID, - to, - }; - socket.to(to).to(socket.userID).emit("private message", message); - messageStore.saveMessage(message); - }); - - // notify users upon disconnection - socket.on("disconnect", async () => { - const matchingSockets = await io.in(socket.userID).allSockets(); - const isDisconnected = matchingSockets.size === 0; - if (isDisconnected) { - // notify other users - socket.broadcast.emit("user disconnected", socket.userID); - // update the connection status of the session - sessionStore.saveSession(socket.sessionID, { - userID: socket.userID, - username: socket.username, - connected: false, - }); - } - }); -}); - -setupWorker(io); diff --git a/examples/private-messaging/server/messageStore.js b/examples/private-messaging/server/messageStore.js deleted file mode 100644 index 60ab0f6f72..0000000000 --- a/examples/private-messaging/server/messageStore.js +++ /dev/null @@ -1,54 +0,0 @@ -/* abstract */ class MessageStore { - saveMessage(message) {} - findMessagesForUser(userID) {} -} - -class InMemoryMessageStore extends MessageStore { - constructor() { - super(); - this.messages = []; - } - - saveMessage(message) { - this.messages.push(message); - } - - findMessagesForUser(userID) { - return this.messages.filter( - ({ from, to }) => from === userID || to === userID - ); - } -} - -const CONVERSATION_TTL = 24 * 60 * 60; - -class RedisMessageStore extends MessageStore { - constructor(redisClient) { - super(); - this.redisClient = redisClient; - } - - saveMessage(message) { - const value = JSON.stringify(message); - this.redisClient - .multi() - .rpush(`messages:${message.from}`, value) - .rpush(`messages:${message.to}`, value) - .expire(`messages:${message.from}`, CONVERSATION_TTL) - .expire(`messages:${message.to}`, CONVERSATION_TTL) - .exec(); - } - - findMessagesForUser(userID) { - return this.redisClient - .lrange(`messages:${userID}`, 0, -1) - .then((results) => { - return results.map((result) => JSON.parse(result)); - }); - } -} - -module.exports = { - InMemoryMessageStore, - RedisMessageStore, -}; diff --git a/examples/private-messaging/server/package.json b/examples/private-messaging/server/package.json deleted file mode 100644 index 6a0310bcd7..0000000000 --- a/examples/private-messaging/server/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "server", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "node cluster.js" - }, - "author": "Damien Arrachequesne ", - "license": "MIT", - "dependencies": { - "@socket.io/sticky": "^1.0.0", - "ioredis": "^4.22.0", - "socket.io": "^4.0.0", - "socket.io-redis": "^6.0.1" - } -} diff --git a/examples/private-messaging/server/sessionStore.js b/examples/private-messaging/server/sessionStore.js deleted file mode 100644 index 0ace3f4eb5..0000000000 --- a/examples/private-messaging/server/sessionStore.js +++ /dev/null @@ -1,89 +0,0 @@ -/* abstract */ class SessionStore { - findSession(id) {} - saveSession(id, session) {} - findAllSessions() {} -} - -class InMemorySessionStore extends SessionStore { - constructor() { - super(); - this.sessions = new Map(); - } - - findSession(id) { - return this.sessions.get(id); - } - - saveSession(id, session) { - this.sessions.set(id, session); - } - - findAllSessions() { - return [...this.sessions.values()]; - } -} - -const SESSION_TTL = 24 * 60 * 60; -const mapSession = ([userID, username, connected]) => - userID ? { userID, username, connected: connected === "true" } : undefined; - -class RedisSessionStore extends SessionStore { - constructor(redisClient) { - super(); - this.redisClient = redisClient; - } - - findSession(id) { - return this.redisClient - .hmget(`session:${id}`, "userID", "username", "connected") - .then(mapSession); - } - - saveSession(id, { userID, username, connected }) { - this.redisClient - .multi() - .hset( - `session:${id}`, - "userID", - userID, - "username", - username, - "connected", - connected - ) - .expire(`session:${id}`, SESSION_TTL) - .exec(); - } - - async findAllSessions() { - const keys = new Set(); - let nextIndex = 0; - do { - const [nextIndexAsStr, results] = await this.redisClient.scan( - nextIndex, - "MATCH", - "session:*", - "COUNT", - "100" - ); - nextIndex = parseInt(nextIndexAsStr, 10); - results.forEach((s) => keys.add(s)); - } while (nextIndex !== 0); - const commands = []; - keys.forEach((key) => { - commands.push(["hmget", key, "userID", "username", "connected"]); - }); - return this.redisClient - .multi(commands) - .exec() - .then((results) => { - return results - .map(([err, session]) => (err ? undefined : mapSession(session))) - .filter((v) => !!v); - }); - } -} -module.exports = { - InMemorySessionStore, - RedisSessionStore, -}; diff --git a/examples/private-messaging/src/App.vue b/examples/private-messaging/src/App.vue deleted file mode 100644 index 3d250a9549..0000000000 --- a/examples/private-messaging/src/App.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - diff --git a/examples/private-messaging/src/components/Chat.vue b/examples/private-messaging/src/components/Chat.vue deleted file mode 100644 index 2ba9b07348..0000000000 --- a/examples/private-messaging/src/components/Chat.vue +++ /dev/null @@ -1,165 +0,0 @@ - - - - - diff --git a/examples/private-messaging/src/components/MessagePanel.vue b/examples/private-messaging/src/components/MessagePanel.vue deleted file mode 100644 index 80c681a6d2..0000000000 --- a/examples/private-messaging/src/components/MessagePanel.vue +++ /dev/null @@ -1,101 +0,0 @@ -