diff --git a/.github/secrets/match_AppStore_comquietmobile.mobileprovision.gpg b/.github/secrets/match_AppStore_comquietmobile.mobileprovision.gpg index 27f3a9a038..4f35bf8199 100644 Binary files a/.github/secrets/match_AppStore_comquietmobile.mobileprovision.gpg and b/.github/secrets/match_AppStore_comquietmobile.mobileprovision.gpg differ diff --git a/.github/workflows/desktop-build.yml b/.github/workflows/desktop-build.yml index 349f3568fd..84e6c79ab5 100644 --- a/.github/workflows/desktop-build.yml +++ b/.github/workflows/desktop-build.yml @@ -6,11 +6,20 @@ on: [released, prereleased] jobs: + run-e2e-tests-linux: + if: | + startsWith(github.ref, 'refs/tags/@quiet/desktop') uses: ./.github/workflows/e2e-linux.yml + run-e2e-tests-mac: + if: | + startsWith(github.ref, 'refs/tags/@quiet/desktop') uses: ./.github/workflows/e2e-mac.yml + run-e2e-tests-win: + if: | + startsWith(github.ref, 'refs/tags/@quiet/desktop') uses: ./.github/workflows/e2e-win.yml build-linux: @@ -196,51 +205,6 @@ jobs: with: source-path: win32 - #E2E - Start - # - name: E2E - electron-builder - # env: - # CERTIFICATE_PATH: ${{ steps.write_file.outputs.filePath }} - # WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }} - # WINDOWS_ALIAS: ${{ secrets.WIN_ALIAS }} - # working-directory: ./packages/desktop - # run: node_modules/.bin/electron-builder --win - # shell: bash - - # - name: E2E - Extract version - # id: extract_version - # uses: Saionaro/extract-package-version@v1.2.1 - # with: - # path: packages/desktop - - # - name: E2E - FILE_NAME env - # working-directory: ./packages/desktop/dist - # run: echo "FILE_NAME=Quiet Setup ${{ steps.extract_version.outputs.version }}.exe" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - # shell: powershell - - # - name: E2E - Chmod - # working-directory: ./packages/desktop/dist - # run: chmod +x "$FILE_NAME" - # shell: bash - - # - name: E2E - Install exe - # run: Start-Process "Quiet Setup ${{ steps.extract_version.outputs.version }}.exe" -Wait - # working-directory: ./packages/desktop/dist - # shell: powershell - - # - name: E2E - Kill exe - # run: Stop-Process -Name "Quiet" -Force - # working-directory: ./packages/desktop/dist - # shell: powershell - - # - name: E2E - Run smoke test - # uses: nick-fields/retry@v2 - # with: - # timeout_minutes: 25 - # max_attempts: 3 - # shell: bash - # command: cd packages/e2e-tests && npm run test smoke.crossplatform.test.ts - #E2E - End - - name: "Set electron-builder props" shell: bash run: echo "ELECTRON_BUILDER_PROPS=-c.publish.bucket=$S3_BUCKET" >> $GITHUB_ENV diff --git a/.github/workflows/e2e-android.yml b/.github/workflows/e2e-android.yml new file mode 100644 index 0000000000..1181a13983 --- /dev/null +++ b/.github/workflows/e2e-android.yml @@ -0,0 +1,34 @@ +name: E2E Android + +on: + push: + paths: + - packages/mobile/** + +jobs: + detox-android: + timeout-minutes: 10 + runs-on: [self-hosted, macOS, ARM64, android] + + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + npm i + npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle + + - name: Pull binaries + run: | + git lfs install + git lfs pull + + - name: Build Detox + run: | + cd packages/mobile + detox build -c android.emu.debug.ci + + - name: Run basic tests + run: | + cd packages/mobile + detox test starter -c android.emu.debug.ci diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml new file mode 100644 index 0000000000..a834ada8e7 --- /dev/null +++ b/.github/workflows/e2e-ios.yml @@ -0,0 +1,39 @@ +name: E2E iOS + +on: + push: + paths: + - packages/mobile/** + +jobs: + detox-ios: + timeout-minutes: 10 + runs-on: [self-hosted, macOS, ARM64, iOS] + + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + npm i + npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle + + - name: Pull binaries + run: | + git lfs install + git lfs pull + + - name: Install pods + run: | + cd packages/mobile/ios + pod install + + - name: Build Detox + run: | + cd packages/mobile + detox build -c ios.sim.debug.ci + + - name: Run basic tests + run: | + cd packages/mobile + detox test starter -c ios.sim.debug.ci diff --git a/.github/workflows/e2e-linux.yml b/.github/workflows/e2e-linux.yml index 3e957e1fe7..2ed3a4995e 100644 --- a/.github/workflows/e2e-linux.yml +++ b/.github/workflows/e2e-linux.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - os: [ubuntu-20.04, ubuntu-22.04] + os: [ubuntu-latest-m] timeout-minutes: 180 @@ -74,10 +74,10 @@ jobs: - name: Chmod App Image 1.2.0 working-directory: ./packages/e2e-tests/Quiet run: chmod +x Quiet-1.2.0.AppImage - + - name: Run Backwards Compatibility test uses: nick-fields/retry@v2 with: timeout_minutes: 15 max_attempts: 3 - command: cd packages/e2e-tests && npm run test backwardsCompatibility.test.ts \ No newline at end of file + command: cd packages/e2e-tests && npm run test backwardsCompatibility.test.ts diff --git a/.github/workflows/e2e-win.yml b/.github/workflows/e2e-win.yml index 490ae7d32a..9f614ca00f 100644 --- a/.github/workflows/e2e-win.yml +++ b/.github/workflows/e2e-win.yml @@ -3,8 +3,8 @@ name: E2E Windows on: [workflow_call] jobs: windows: - runs-on: windows-2019 - + runs-on: windows-latest-l + timeout-minutes: 180 env: @@ -36,7 +36,7 @@ jobs: - name: electron-builder working-directory: ./packages/desktop - run: node_modules/.bin/electron-builder --win + run: node_modules/.bin/electron-builder --win shell: bash - name: Extract version @@ -66,10 +66,15 @@ jobs: run: Start-Process "Quiet Setup ${{ steps.extract_version.outputs.version }}.exe" -Wait working-directory: ./packages/desktop/dist shell: powershell + + - name: Check if Quiet installed properly + run: Get-ChildItem -Path C:\Users\runneradmin\AppData\Local\Programs\@quietdesktop + shell: powershell - name: Kill Quiet run: Get-Process -Name "Quiet" -ErrorAction SilentlyContinue | Stop-Process -Force shell: powershell + if: always() - name: Kill tor run: Get-Process -Name "tor" -ErrorAction SilentlyContinue | Stop-Process -Force @@ -101,4 +106,4 @@ jobs: timeout_minutes: 25 max_attempts: 3 shell: bash - command: cd packages/e2e-tests && npm run test invitationLink.test.ts \ No newline at end of file + command: cd packages/e2e-tests && npm run test invitationLink.test.ts diff --git a/.github/workflows/mobile-deploy-android.yaml b/.github/workflows/mobile-deploy-android.yaml index bac1cc0f33..ccb0aed4ee 100644 --- a/.github/workflows/mobile-deploy-android.yaml +++ b/.github/workflows/mobile-deploy-android.yaml @@ -2,18 +2,19 @@ name: Deploy Android to Google Play on: release: - types: + types: [prereleased, released] jobs: build-android: + # needs: detox-android runs-on: ${{ matrix.os }} if: | startsWith(github.ref, 'refs/tags/@quiet/mobile') strategy: matrix: - os: [ubuntu-20.04] + os: [ubuntu-latest-m] steps: - name: "Print OS" @@ -33,7 +34,7 @@ jobs: with: ndk-version: r21e add-to-path: false - + - name: "Setup environment" uses: ./.github/actions/setup-env with: @@ -41,13 +42,13 @@ jobs: - name: "Create gradle configuration directory" run: mkdir -p $HOME/.gradle - + - name: "Prepare ndk configuration" run: | printf "\ NDK_PATH=${{ steps.setup-ndk.outputs.ndk-path }}\n\ " > $HOME/.gradle/gradle.properties - + - name: "Prepare signing configuration" run: | printf "\ @@ -76,7 +77,7 @@ jobs: mkdir -p distribution/whatsnew git log -1 --pretty=format:%s > distribution/whatsnew/whatsnew-pl-PL echo ${{ SECRETS.SERVICE_ACCOUNT_JSON }} | base64 --decode > google-play.json - + - name: "Upload to Google Play" uses: r0adkll/upload-google-play@v1.1.2 with: diff --git a/.github/workflows/mobile-deploy-ios.yml b/.github/workflows/mobile-deploy-ios.yml index 98bd9caee7..e5c85d39f4 100644 --- a/.github/workflows/mobile-deploy-ios.yml +++ b/.github/workflows/mobile-deploy-ios.yml @@ -7,6 +7,7 @@ on: jobs: build-ios: + # needs: detox-ios runs-on: ${{ matrix.os }} if: | startsWith(github.ref, 'refs/tags/@quiet/mobile') diff --git a/CHANGELOG.md b/CHANGELOG.md index e3a677b0a8..f6187fa682 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ +[2.0.3-alpha.0] -[unreleased] +* Filter CSRs - remove old csrs and replace with new for each pubkey + +* Fixed mobile bugs - joining by QR code and not showing username taken screen for user who has unique name + +* Use context menu for information about unregistered username instead screen + +* Shorter dots-placeholder for invite link + +* Display a shorter invite link on a mobile + +* Removed registration attempts selector and corresponding usage. + +* Revert adjusting bootstrap scripts for developing on Windows + +* Channel input - replaced ContentEditable with textarea + +* Fix - up/down arrows now work properly inside channel input (textarea) + +[2.0.1-alpha.2] + +* UI layer for taken usernames for desktop and mobile + +* Change nickname for taken username + +* Map messages sent before changing username + +* Update registrar service to match new registration flow. * Add possible impersonation attack UI for desktop and mobile diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..92d8a7ac26 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,50 @@ +# Contributing + +## Development workflow + +> **New to open source?** You can learn how from this _free_ series: [How to Contribute to an Open Source Project on GitHub](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github). + +1. Fork the repo and create your branch from `develop` (a guide on [how to fork a repository](https://help.github.com/articles/fork-a-repo/)). +2. Being in the root directory, run `npm i` and then `lerna bootstrap`, to setup the development environment. +3. Check out [desktop](https://github.com/TryQuiet/quiet/blob/develop/packages/desktop/README.md) and [mobile](https://github.com/TryQuiet/quiet/blob/develop/packages/mobile/README.md) README.md for more instructions. + +## Commit message convention + +Prefix commit messages with one of the following to signify the kind of change: + +- `fix:` bug fixes, e.g. fix incorrect error message. +- `feat:` new features, e.g. add useful API. +- `refactor:` code/structure refactor, e.g. new folder structure. +- `docs:` changes into documentation, e.g. add usage example for getByText. +- `test:` adding or updating tests, eg unit, snapshot testing. +- `chore:` tooling changes, e.g. change circle ci config. +- `BREAKING:` for changes that break existing usage, e.g. change API. + +Commit message should be followed by the issue number, eg. +`fix: typo #2002` + +### (optional) Setting up a local git hook for verifying message convention: + +1. Navigate to git repository in your terminal. +2. Go to the .git/hooks directory: +``` +cd .git/hooks +``` +3. Create (or edit if it already exists) the commit-msg file +4. Make the file executable: +``` +chmod +x commit-msg +``` +5. Edit the commit-msg file and paste the following shell script: +``` +#!/bin/bash + +COMMIT_MSG_FILE=$1 +COMMIT_MSG=$(cat $COMMIT_MSG_FILE) + +if ! echo "$COMMIT_MSG" | grep -E '^(fix:|feat:|refactor:|docs:|test:|chore:|BREAKING:|Publish)' > /dev/null; then + echo "error: invalid commit message format" + echo "Valid formats are fix: feat: refactor: docs: test: chore: BREAKING:" + exit 1 +fi +``` diff --git a/README.md b/README.md index 9ad4eff562..f60ac424a1 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Encrypted p2p team chat with no servers, just Tor.
- Downloads | + Downloads | How it Works | Features | Threat Model | @@ -52,7 +52,7 @@ See our [FAQ](https://github.com/TryQuiet/monorepo/wiki/Quiet-FAQ) for answers t ## Getting started -To try Quiet, download the [latest release](https://github.com/TryQuiet/quiet/releases/tag/quiet%401.9.4) for your platform (.dmg for macOS, .exe for Windows, etc.) and install it in the normal way. Then create a community and open the community's settings to invite members. +To try Quiet, download the [latest release](https://github.com/TryQuiet/quiet/releases/tag/quiet%401.9.5) for your platform (.dmg for macOS, .exe for Windows, etc.) and install it in the normal way. Then create a community and open the community's settings to invite members. If you'd like to help develop Quiet, see [Contributing to Quiet](#contributing-to-quiet). @@ -68,11 +68,12 @@ If you'd like to help develop Quiet, see [Contributing to Quiet](#contributing-t * **Keyboard Controls** - Navigate channels without using the mouse. * **Desktop Apps** - Desktop apps for Mac, Windows, and Linux. * **Android App** - A fully peer-to-peer Android app with working notifications. +* **iOS App** - A fully peer-to-peer iOS app (TestFlight) without notifications. * **No email or phone number required** - Unlike Slack, Discord, WhatsApp, Telegram, and Signal, no email or phone number is required to create or join a community. ## Planned (but still-missing) features -* **iOS App** - Join communities and sync messages on iOS, with no central server. +* **iOS Notifications** - Receive notifications on iOS, with help from a service Apple requires to be centralized. * **Direct Messages** - Send and receive direct messages that are encrypted to the recipient and unreadable by other community members. * **Mentions** - Send @ mentions that notify other users. * **Removal** - Remove users from your community. @@ -87,7 +88,7 @@ If you'd like to help develop Quiet, see [Contributing to Quiet](#contributing-t ## Post-1.0 Features * **Large Communities** - Create a community with 1000 members or more (right now ~30-100 members is the limit.) -* **Moderation** - Appoint moderators who can hide messages and shadowban or remove users. +* **Moderation** - Appoint moderators who can hide messages and silence or remove users. * **Spam and Denial-of-Service Protection** - Settings to automatically remove users who send disruptive messages. * **Search** - Robust message search. * **Threads** - Reply to messages in threads. diff --git a/package-lock.json b/package-lock.json index 198f87c8fe..b6810ee4b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -265,6 +265,35 @@ "node": ">= 4.0.0" } }, + "node_modules/@electron/notarize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", + "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -2251,6 +2280,15 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "devOptional": true }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -2345,6 +2383,12 @@ "readable-stream": "^3.4.0" } }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, "node_modules/boolean": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", @@ -2394,6 +2438,12 @@ "run-parallel-limit": "^1.1.0" } }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -2454,6 +2504,55 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bunyan": { + "version": "1.8.15", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", + "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", + "dev": true, + "engines": [ + "node >=0.10.0" + ], + "bin": { + "bunyan": "bin/bunyan" + }, + "optionalDependencies": { + "dtrace-provider": "~0.8", + "moment": "^2.19.3", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "node_modules/bunyan-debug-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bunyan-debug-stream/-/bunyan-debug-stream-3.1.0.tgz", + "integrity": "sha512-VaFYbDVdiSn3ZpdozrjZ8mFpxHXl26t11C1DKRQtbo0EgffqeFNrRLOGIESKVeGEvVu4qMxMSSxzNlSw7oTj7w==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "bunyan": "*" + } + }, + "node_modules/bunyan-debug-stream/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/byte-size": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz", @@ -2601,6 +2700,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caf": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/caf/-/caf-15.0.1.tgz", + "integrity": "sha512-Xp/IK6vMwujxWZXra7djdYzPdPnEQKa7Mudu2wZgDQ3TJry1I0TgtjEgwZHpoBcMp68j4fb0/FZ1SJyMEgJrXQ==", + "dev": true + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -2684,6 +2789,55 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "node_modules/child-process-promise": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/child-process-promise/-/child-process-promise-2.2.1.tgz", + "integrity": "sha512-Fi4aNdqBsr0mv+jgWxcZ/7rAIC2mgihrptyVI4foh/rrjY/3BNjfP9+oaiFx/fzim+1ZyCNBae0DlyfQhSugog==", + "dev": true, + "dependencies": { + "cross-spawn": "^4.0.2", + "node-version": "^1.0.0", + "promise-polyfill": "^6.0.1" + } + }, + "node_modules/child-process-promise/node_modules/cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "node_modules/child-process-promise/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/child-process-promise/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/child-process-promise/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -3514,6 +3668,275 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "devOptional": true }, + "node_modules/detox": { + "version": "20.13.5", + "resolved": "https://registry.npmjs.org/detox/-/detox-20.13.5.tgz", + "integrity": "sha512-V0t1QuRI5rsiXEPBakjjjGGo8Y5kLi4KXhLrcvnpO8id6m7UtObj91wj+4cCnMRX2eSohXu9wR+HbD6IKcO9sA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "ajv": "^8.6.3", + "bunyan": "^1.8.12", + "bunyan-debug-stream": "^3.1.0", + "caf": "^15.0.1", + "chalk": "^4.0.0", + "child-process-promise": "^2.2.0", + "execa": "^5.1.1", + "find-up": "^5.0.0", + "fs-extra": "^11.0.0", + "funpermaproxy": "^1.1.0", + "glob": "^8.0.3", + "ini": "^1.3.4", + "json-cycle": "^1.3.0", + "lodash": "^4.17.11", + "multi-sort-stream": "^1.0.3", + "multipipe": "^4.0.0", + "node-ipc": "9.2.1", + "proper-lockfile": "^3.0.2", + "resolve-from": "^5.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "serialize-error": "^8.0.1", + "shell-quote": "^1.7.2", + "signal-exit": "^3.0.3", + "stream-json": "^1.7.4", + "strip-ansi": "^6.0.1", + "telnet-client": "1.2.8", + "tempfile": "^2.0.0", + "trace-event-lib": "^1.3.1", + "which": "^1.3.1", + "ws": "^7.0.0", + "yargs": "^17.0.0", + "yargs-parser": "^21.0.0", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "detox": "local-cli/cli.js" + }, + "engines": { + "node": ">=14.5.0" + }, + "peerDependencies": { + "jest": "29.x.x || 28.x.x || ^27.2.5" + }, + "peerDependenciesMeta": { + "jest": { + "optional": true + } + } + }, + "node_modules/detox/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/detox/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/detox/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/detox/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detox/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/detox/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/detox/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detox/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/detox/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detox/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detox/node_modules/serialize-error": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detox/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detox/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/detox/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/detox/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -3595,12 +4018,65 @@ "node": ">=12" } }, + "node_modules/dtrace-provider": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "nan": "^2.14.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "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" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/e2e-tests": { "resolved": "packages/e2e-tests", "link": true @@ -3610,6 +4086,15 @@ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/ejs": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", @@ -4736,6 +5221,15 @@ "node": ">=0.10.0" } }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -5121,9 +5615,12 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -5151,6 +5648,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/funpermaproxy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/funpermaproxy/-/funpermaproxy-1.1.0.tgz", + "integrity": "sha512-2Sp1hWuO8m5fqeFDusyhKqYPT+7rGLw34N3qonDcdRP8+n7M7Gl/yKp/q7oCxnnJ6pWCectOmLFJpsMU/++KrQ==", + "dev": true, + "engines": { + "node": ">=8.3.0" + } + }, "node_modules/gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -5625,6 +6131,17 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -6078,7 +6595,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6532,6 +7049,27 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "dependencies": { + "easy-stack": "^1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6553,6 +7091,15 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, + "node_modules/json-cycle": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/json-cycle/-/json-cycle-1.5.0.tgz", + "integrity": "sha512-GOehvd5PO2FeZ5T4c+RxobeT5a1PiGpF4u9/3+UvrMU4bhnVqzJY7hm39wg8PDCqkU91fWGH8qjWR4bn+wgq9w==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -7727,11 +8274,27 @@ "node": ">=10" } }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/multi-sort-stream": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multi-sort-stream/-/multi-sort-stream-1.0.4.tgz", + "integrity": "sha512-hAZ8JOEQFbgdLe8HWZbb7gdZg0/yAIHF00Qfo3kd0rXFv96nXe+/bPTrKHZ2QMHugGX4FiAyET1Lt+jiB+7Qlg==", + "dev": true + }, "node_modules/multiformats": { "version": "12.1.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", @@ -7769,12 +8332,85 @@ "node": ">=8" } }, + "node_modules/multipipe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-4.0.0.tgz", + "integrity": "sha512-jzcEAzFXoWwWwUbvHCNPwBlTz3WCWe/jPcXSmTfbo/VjRwRTfvLZ/bdvtiTdqCe8d4otCSsPCbhGYcX+eggpKQ==", + "dev": true, + "dependencies": { + "duplexer2": "^0.1.2", + "object-assign": "^4.1.0" + } + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dev": true, + "optional": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dev": true, + "optional": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mv/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dev": true, + "optional": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, "node_modules/napi-macros": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", @@ -7794,6 +8430,16 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "optional": true, + "bin": { + "ncp": "bin/ncp" + } + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -7907,12 +8553,35 @@ "node": ">= 8" } }, + "node_modules/node-ipc": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", + "dev": true, + "dependencies": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/node-machine-id": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", "dev": true }, + "node_modules/node-version": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.2.0.tgz", + "integrity": "sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/nopt": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", @@ -8351,6 +9020,14 @@ "node": ">=12" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -9127,6 +9804,12 @@ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, + "node_modules/promise-polyfill": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", + "integrity": "sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ==", + "dev": true + }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -9152,6 +9835,17 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/proper-lockfile": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-3.2.0.tgz", + "integrity": "sha512-iMghHHXv2bsxl6NchhEaFck8tvX3F9cknEEh1SUpguUOBjN7PAAW9BLzmbc1g/mCD1gY3EE2EABBHPJfFdHFmA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, "node_modules/protobufjs": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", @@ -9206,6 +9900,12 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "devOptional": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -9686,6 +10386,15 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.6", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", @@ -9993,6 +10702,13 @@ } ] }, + "node_modules/safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true, + "optional": true + }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -10012,6 +10728,14 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -10107,6 +10831,14 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -10290,6 +11022,21 @@ "node": ">=8" } }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "dev": true + }, + "node_modules/stream-json": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz", + "integrity": "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==", + "dev": true, + "dependencies": { + "stream-chain": "^2.2.5" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -10557,6 +11304,19 @@ "node": ">=8" } }, + "node_modules/telnet-client": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/telnet-client/-/telnet-client-1.2.8.tgz", + "integrity": "sha512-W+w4k3QAmULVNhBVT2Fei369kGZCh/TH25M7caJAXW+hLxwoQRuw0di3cX4l0S9fgH3Mvq7u+IFMoBDpEw/eIg==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.4" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + } + }, "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", @@ -10566,6 +11326,29 @@ "node": ">=4" } }, + "node_modules/tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", + "dev": true, + "dependencies": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tempfile/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -10684,6 +11467,18 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/trace-event-lib": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/trace-event-lib/-/trace-event-lib-1.4.1.tgz", + "integrity": "sha512-TOgFolKG8JFY+9d5EohGWMvwvteRafcyfPWWNIqcuD1W/FUvxWcy2MSCZ/beYHM63oYPHYHCd3tkbgCctHVP7w==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -10693,6 +11488,14 @@ "node": ">=8" } }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, "node_modules/ts-api-utils": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", @@ -11017,6 +11820,11 @@ "punycode": "^2.1.0" } }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -11063,6 +11871,11 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/wait-for-expect": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", + "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -11291,6 +12104,26 @@ "node": ">=6" } }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -11339,6 +12172,54 @@ "node": ">=10" } }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/yargs/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -11389,7 +12270,7 @@ }, "packages/backend": { "name": "@quiet/backend", - "version": "2.0.1-alpha.1", + "version": "2.0.3-alpha.0", "license": "MIT", "dependencies": { "@chainsafe/libp2p-gossipsub": "6.1.0", @@ -11398,10 +12279,10 @@ "@nestjs/core": "^10.0.0", "@nestjs/platform-express": "^10.0.0", "@peculiar/webcrypto": "1.4.3", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "abortable-iterator": "^3.0.0", "class-transformer": "^0.5.1", "class-validator": "^0.13.1", @@ -11449,8 +12330,8 @@ "@nestjs/cli": "^10.0.0", "@nestjs/schematics": "^10.0.0", "@nestjs/testing": "^10.0.0", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", "@types/crypto-js": "^4.0.2", "@types/express": "^4.17.9", "@types/jest": "28.1.8", @@ -11468,7 +12349,6 @@ "fetch-mock-jest": "^1.5.1", "jest": "^29.4.2", "mock-fs": "^5.1.2", - "run-script-os": "1.1.6", "tmp": "^0.2.1", "ts-jest": "^29.0.3", "ts-loader": "9.4.2", @@ -11481,7 +12361,7 @@ } }, "packages/backend-bundle": { - "version": "2.0.1-alpha.1", + "version": "2.0.1-alpha.4", "license": "ISC" }, "packages/backend/node_modules/@achingbrain/ip-address": { @@ -26322,10 +27202,6 @@ "node": ">=8.0.0" } }, - "packages/backend/node_modules/nan": { - "version": "2.17.0", - "license": "MIT" - }, "packages/backend/node_modules/nanoid": { "version": "3.3.4", "license": "MIT", @@ -26519,13 +27395,6 @@ "node": "*" } }, - "packages/backend/node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "packages/backend/node_modules/object-is": { "version": "1.1.5", "license": "MIT", @@ -28005,11 +28874,6 @@ "node": ">= 0.6" } }, - "packages/backend/node_modules/pseudomap": { - "version": "1.0.2", - "license": "ISC", - "optional": true - }, "packages/backend/node_modules/psl": { "version": "1.9.0", "license": "MIT", @@ -28283,14 +29147,6 @@ "node": ">=0.6" } }, - "packages/backend/node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "packages/backend/node_modules/requires-port": { "version": "1.0.0", "license": "MIT" @@ -28362,22 +29218,6 @@ "rsa-unpack": "bin/cmd.js" } }, - "packages/backend/node_modules/run-script-os": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "bin": { - "run-os": "index.js", - "run-script-os": "index.js" - } - }, - "packages/backend/node_modules/sanitize-filename": { - "version": "1.6.3", - "license": "WTFPL OR ISC", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "packages/backend/node_modules/sax": { "version": "1.2.4", "license": "ISC" @@ -29164,13 +30004,6 @@ "tree-kill": "cli.js" } }, - "packages/backend/node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "license": "WTFPL", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, "packages/backend/node_modules/ts-jest": { "version": "29.0.5", "dev": true, @@ -29828,10 +30661,6 @@ "node": ">=4" } }, - "packages/backend/node_modules/utf8-byte-length": { - "version": "1.0.4", - "license": "WTFPL" - }, "packages/backend/node_modules/util": { "version": "0.12.4", "license": "MIT", @@ -29923,11 +30752,6 @@ "extsprintf": "^1.2.0" } }, - "packages/backend/node_modules/wait-for-expect": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, "packages/backend/node_modules/walker": { "version": "1.0.8", "license": "Apache-2.0", @@ -30403,16 +31227,15 @@ }, "packages/common": { "name": "@quiet/common", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "license": "ISC", "dependencies": { - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/types": "^2.0.2-alpha.0", "cross-env": "^5.2.0", "debug": "^4.3.1" }, "devDependencies": { - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@types/jest": "^26.0.23", "@types/node": "^17.0.21", "jest": "^26.6.3", @@ -31532,11 +32355,6 @@ "node": ">=0.10.0" } }, - "packages/common/node_modules/browser-process-hrtime": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" - }, "packages/common/node_modules/browserslist": { "version": "4.21.5", "dev": true, @@ -34813,26 +35631,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "packages/common/node_modules/ws": { - "version": "7.5.9", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "packages/common/node_modules/xml-name-validator": { "version": "3.0.0", "dev": true, @@ -34891,16 +35689,16 @@ }, "packages/desktop": { "name": "@quiet/desktop", - "version": "2.0.1-alpha.1", + "version": "2.0.3-alpha.0", "license": "ISC", "dependencies": { "@electron/remote": "^2.0.8", "@peculiar/webcrypto": "1.4.3", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@sentry/electron": "^2.5.4", - "backend-bundle": "^2.0.1-alpha.1", + "backend-bundle": "^2.0.1-alpha.4", "electron-debug": "^3.0.1", "electron-localshortcut": "^3.2.1", "electron-store": "^8.0.1", @@ -34921,14 +35719,15 @@ "@babel/preset-react": "^7.22.5", "@cypress/react18": "2.0.0", "@cypress/webpack-dev-server": "3.1.0", + "@electron/notarize": "2.1.0", "@emotion/react": "~11.10.5", "@emotion/styled": "~11.10.5", "@mui/icons-material": "^5.10.15", "@mui/lab": "^5.0.0-alpha.109", "@mui/material": "~5.10.15", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", "@redux-saga/types": "^1.1.0", "@reduxjs/toolkit": "^1.9.1", "@sentry/browser": "^6.19.7", @@ -34978,7 +35777,6 @@ "electron-build-env": "^0.2.0", "electron-builder": "^23.6.0", "electron-devtools-installer": "^3.1.1", - "electron-notarize": "^0.2.1", "electron-store": "^5.2.0", "electron-store-webpack-wrapper": "^0.0.2", "emoji-picker-react": "^4.4.5", @@ -35002,7 +35800,6 @@ "rc-scrollbars": "^1.1.5", "react": "18.1.0", "react-alice-carousel": "^1.15.3", - "react-contenteditable": "^3.3.3", "react-copy-to-clipboard": "^5.1.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", @@ -35027,7 +35824,6 @@ "redux-saga-test-plan": "^4.0.3", "redux-thunk": "^2.3.0", "reselect": "^4.1.5", - "run-script-os": "1.1.6", "socket.io-mock": "^1.3.2", "source-map-loader": "^4.0.1", "standard": "^12.0.1", @@ -51671,14 +52467,6 @@ "node": ">=0.12.0" } }, - "packages/desktop/node_modules/at-least-node": { - "version": "1.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "packages/desktop/node_modules/atob": { "version": "2.1.2", "dev": true, @@ -52036,11 +52824,6 @@ "dev": true, "license": "Apache-2.0" }, - "packages/desktop/node_modules/bluebird": { - "version": "3.7.2", - "dev": true, - "license": "MIT" - }, "packages/desktop/node_modules/bluebird-lst": { "version": "1.0.9", "dev": true, @@ -52350,11 +53133,6 @@ "version": "1.2.1", "dev": true }, - "packages/desktop/node_modules/browser-process-hrtime": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" - }, "packages/desktop/node_modules/browserify-aes": { "version": "1.2.0", "dev": true, @@ -56668,15 +57446,6 @@ "keyboardevents-areequal": "^0.2.1" } }, - "packages/desktop/node_modules/electron-notarize": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - } - }, "packages/desktop/node_modules/electron-osx-sign": { "version": "0.6.0", "dev": true, @@ -57918,11 +58687,6 @@ "chance": "^1.0.4" } }, - "packages/desktop/node_modules/fast-deep-equal": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, "packages/desktop/node_modules/fast-json-parse": { "version": "1.0.3", "dev": true, @@ -58514,19 +59278,6 @@ "util-deprecate": "~1.0.1" } }, - "packages/desktop/node_modules/fs-extra": { - "version": "8.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, "packages/desktop/node_modules/fs-minipass": { "version": "2.1.0", "dev": true, @@ -63666,14 +64417,6 @@ "node": ">=4" } }, - "packages/desktop/node_modules/jsonfile": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "packages/desktop/node_modules/jsx-ast-utils": { "version": "2.4.1", "dev": true, @@ -65287,13 +66030,6 @@ "dev": true, "license": "MIT" }, - "packages/desktop/node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "packages/desktop/node_modules/object-copy": { "version": "0.1.0", "dev": true, @@ -66847,18 +67583,6 @@ "react": "^0.14.0 || ^15.0.0-0 || ^16.0.0-0" } }, - "packages/desktop/node_modules/react-contenteditable": { - "version": "3.3.3", - "dev": true, - "license": " Apache-2.0", - "dependencies": { - "fast-deep-equal": "^2.0.1", - "prop-types": "^15.7.1" - }, - "peerDependencies": { - "react": ">=16.3" - } - }, "packages/desktop/node_modules/react-copy-to-clipboard": { "version": "5.1.0", "dev": true, @@ -68125,14 +68849,6 @@ "dev": true, "license": "MIT" }, - "packages/desktop/node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "packages/desktop/node_modules/require-main-filename": { "version": "1.0.1", "dev": true, @@ -68248,15 +68964,6 @@ "aproba": "^1.1.1" } }, - "packages/desktop/node_modules/run-script-os": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "bin": { - "run-os": "index.js", - "run-script-os": "index.js" - } - }, "packages/desktop/node_modules/rxjs": { "version": "6.5.2", "dev": true, @@ -68303,14 +69010,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "packages/desktop/node_modules/sanitize-filename": { - "version": "1.6.3", - "dev": true, - "license": "WTFPL OR ISC", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "packages/desktop/node_modules/sax": { "version": "1.2.4", "license": "ISC" @@ -70612,14 +71311,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "packages/desktop/node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "dev": true, - "license": "WTFPL", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, "packages/desktop/node_modules/ts-dedent": { "version": "2.2.0", "dev": true, @@ -71671,11 +72362,6 @@ "node-gyp-build": "~3.7.0" } }, - "packages/desktop/node_modules/utf8-byte-length": { - "version": "1.0.4", - "dev": true, - "license": "WTFPL" - }, "packages/desktop/node_modules/util": { "version": "0.11.1", "dev": true, @@ -72911,26 +73597,6 @@ "signal-exit": "^3.0.2" } }, - "packages/desktop/node_modules/ws": { - "version": "7.4.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "packages/desktop/node_modules/x-default-browser": { "version": "0.4.0", "dev": true, @@ -73063,13 +73729,13 @@ } }, "packages/e2e-tests": { - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "license": "ISC", "dependencies": { - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", - "backend-bundle": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", + "backend-bundle": "^2.0.1-alpha.4", "cross-env": "^5.2.0", "electron-chromedriver": "22.0.0", "get-port": "^5.1.1", @@ -73079,7 +73745,7 @@ "yargs": "^17.3.1" }, "devDependencies": { - "@quiet/eslint-config": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@types/jest": "^29.2.6", "@types/selenium-webdriver": "^4.1.10", "babel-jest": "^29.3.1", @@ -75607,7 +76273,7 @@ }, "packages/eslint-config-custom": { "name": "@quiet/eslint-config", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "devDependencies": { "@typescript-eslint/eslint-plugin": "6.7.4", "@typescript-eslint/parser": "6.7.4", @@ -75627,13 +76293,13 @@ }, "packages/identity": { "name": "@quiet/identity", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "license": "MIT", "dependencies": { "@peculiar/webcrypto": "1.4.3", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "pkijs": "^3.0.8" }, "devDependencies": { @@ -77031,11 +77697,6 @@ "node": ">=0.10.0" } }, - "packages/identity/node_modules/browser-process-hrtime": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" - }, "packages/identity/node_modules/browserslist": { "version": "4.16.6", "dev": true, @@ -80423,26 +81084,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "packages/identity/node_modules/ws": { - "version": "7.4.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "packages/identity/node_modules/xml-name-validator": { "version": "3.0.0", "dev": true, @@ -80492,13 +81133,13 @@ } }, "packages/integration-tests": { - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "license": "ISC", "dependencies": { "@peculiar/webcrypto": "1.4.3", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", "@reduxjs/toolkit": "^1.6.1", "commander": "^9.1.0", "debug": "^4.3.2", @@ -80519,7 +81160,7 @@ "@babel/core": "^7.22.5", "@babel/preset-env": "^7.22.5", "@babel/preset-typescript": "^7.22.5", - "@quiet/eslint-config": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@types/jest": "^26.0.24", "@types/redux-saga": "^0.10.5", "@types/tmp": "^0.2.2", @@ -84238,11 +84879,6 @@ "node": ">= 0.6.0" } }, - "packages/integration-tests/node_modules/browser-process-hrtime": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" - }, "packages/integration-tests/node_modules/bser": { "version": "2.1.1", "dev": true, @@ -86625,10 +87261,6 @@ "node": ">=10" } }, - "packages/integration-tests/node_modules/wait-for-expect": { - "version": "3.0.2", - "license": "MIT" - }, "packages/integration-tests/node_modules/walker": { "version": "1.0.8", "dev": true, @@ -86701,25 +87333,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "packages/integration-tests/node_modules/ws": { - "version": "7.5.6", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "packages/integration-tests/node_modules/xml-name-validator": { "version": "3.0.0", "dev": true, @@ -86750,14 +87363,14 @@ }, "packages/logger": { "name": "@quiet/logger", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "license": "ISC", "dependencies": { "cross-env": "^5.2.0", "debug": "^4.3.1" }, "devDependencies": { - "@quiet/eslint-config": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@types/debug": "^4.1.7", "@types/node": "^17.0.21", "typescript": "^4.9.3" @@ -86856,14 +87469,14 @@ }, "packages/mobile": { "name": "@quiet/mobile", - "version": "2.0.1-alpha.1", + "version": "2.0.3-alpha.0", "dependencies": { "@peculiar/webcrypto": "^1.4.3", - "@quiet/backend": "^2.0.1-alpha.1", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/backend": "^2.0.3-alpha.0", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@react-native-clipboard/clipboard": "^1.11.2", "@react-navigation/native": "^6.0.0", "@react-navigation/native-stack": "^6.9.0", @@ -86919,7 +87532,7 @@ "@babel/plugin-transform-flow-strip-types": "^7.22.5", "@babel/preset-env": "^7.22.5", "@babel/runtime": "^7.22.5", - "@quiet/eslint-config": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@react-native-async-storage/async-storage": "^1.18.1", "@react-native-community/eslint-config": "^2.0.0", "@react-native-community/push-notification-ios": "^1.10.1", @@ -86942,7 +87555,7 @@ "@types/styled-components-react-native": "^5.2.1", "babel-jest": "^29.2.1", "chalk": "^4.1.1", - "detox": "^20.7.0", + "detox": "^20.13.0", "emotion-theming": "^10.0.19", "factory-girl": "^5.0.4", "jest": "^29.0.0", @@ -86956,7 +87569,8 @@ "redux-saga-test-plan": "^4.0.1", "run-script-os": "1.1.6", "socket.io-mock": "^1.3.2", - "typescript": "^4.9.3" + "typescript": "^4.9.3", + "wait-for-expect": "^3.0.2" } }, "packages/mobile/node_modules/@ampproject/remapping": { @@ -94410,14 +95024,6 @@ "tiny-queue": "0.2.0" } }, - "packages/mobile/node_modules/at-least-node": { - "version": "1.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "packages/mobile/node_modules/atob": { "version": "2.1.2", "license": "(MIT OR Apache-2.0)", @@ -94829,11 +95435,6 @@ "version": "0.10.31", "license": "MIT" }, - "packages/mobile/node_modules/bluebird": { - "version": "3.7.2", - "dev": true, - "license": "MIT" - }, "packages/mobile/node_modules/bn.js": { "version": "5.2.1", "license": "MIT" @@ -94915,11 +95516,6 @@ "version": "1.1.0", "license": "MIT" }, - "packages/mobile/node_modules/browser-process-hrtime": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" - }, "packages/mobile/node_modules/browserify-aes": { "version": "1.2.0", "license": "MIT", @@ -95064,37 +95660,6 @@ "dev": true, "license": "MIT" }, - "packages/mobile/node_modules/bunyan": { - "version": "1.8.15", - "dev": true, - "engines": [ - "node >=0.10.0" - ], - "license": "MIT", - "bin": { - "bunyan": "bin/bunyan" - }, - "optionalDependencies": { - "dtrace-provider": "~0.8", - "moment": "^2.19.3", - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "packages/mobile/node_modules/bunyan-debug-stream": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "bunyan": "*" - } - }, "packages/mobile/node_modules/bytes": { "version": "3.0.0", "license": "MIT", @@ -95160,11 +95725,6 @@ "node": ">=0.10.0" } }, - "packages/mobile/node_modules/caf": { - "version": "15.0.1", - "dev": true, - "license": "MIT" - }, "packages/mobile/node_modules/caller-callsite": { "version": "2.0.0", "license": "MIT", @@ -95286,50 +95846,6 @@ "node": ">=10" } }, - "packages/mobile/node_modules/child-process-promise": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^4.0.2", - "node-version": "^1.0.0", - "promise-polyfill": "^6.0.1" - } - }, - "packages/mobile/node_modules/child-process-promise/node_modules/cross-spawn": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "packages/mobile/node_modules/child-process-promise/node_modules/lru-cache": { - "version": "4.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "packages/mobile/node_modules/child-process-promise/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "packages/mobile/node_modules/child-process-promise/node_modules/yallist": { - "version": "2.1.2", - "dev": true, - "license": "ISC" - }, "packages/mobile/node_modules/chokidar": { "version": "3.5.3", "dev": true, @@ -96103,275 +96619,6 @@ "node": ">=8" } }, - "packages/mobile/node_modules/detox": { - "version": "20.7.0", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.6.3", - "bunyan": "^1.8.12", - "bunyan-debug-stream": "^3.1.0", - "caf": "^15.0.1", - "chalk": "^4.0.0", - "child-process-promise": "^2.2.0", - "execa": "^5.1.1", - "find-up": "^4.1.0", - "fs-extra": "^4.0.2", - "funpermaproxy": "^1.1.0", - "glob": "^8.0.3", - "ini": "^1.3.4", - "json-cycle": "^1.3.0", - "lodash": "^4.17.11", - "multi-sort-stream": "^1.0.3", - "multipipe": "^4.0.0", - "node-ipc": "^9.2.1", - "proper-lockfile": "^3.0.2", - "resolve-from": "^5.0.0", - "sanitize-filename": "^1.6.1", - "semver": "^7.0.0", - "serialize-error": "^8.0.1", - "shell-quote": "^1.7.2", - "signal-exit": "^3.0.3", - "stream-json": "^1.7.4", - "strip-ansi": "^6.0.1", - "telnet-client": "1.2.8", - "tempfile": "^2.0.0", - "trace-event-lib": "^1.3.1", - "which": "^1.3.1", - "ws": "^7.0.0", - "yargs": "^16.0.3", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "detox": "local-cli/cli.js" - }, - "engines": { - "node": ">=14.5.0" - }, - "peerDependencies": { - "jest": "29.x.x || 28.x.x || ^27.2.5" - }, - "peerDependenciesMeta": { - "jest": { - "optional": true - } - } - }, - "packages/mobile/node_modules/detox/node_modules/ajv": { - "version": "8.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "packages/mobile/node_modules/detox/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "packages/mobile/node_modules/detox/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "packages/mobile/node_modules/detox/node_modules/fs-extra": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "packages/mobile/node_modules/detox/node_modules/glob": { - "version": "8.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/mobile/node_modules/detox/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "packages/mobile/node_modules/detox/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "packages/mobile/node_modules/detox/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/mobile/node_modules/detox/node_modules/minimatch": { - "version": "5.1.6", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "packages/mobile/node_modules/detox/node_modules/semver": { - "version": "7.5.0", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "packages/mobile/node_modules/detox/node_modules/serialize-error": { - "version": "8.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/mobile/node_modules/detox/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "packages/mobile/node_modules/detox/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/mobile/node_modules/detox/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "packages/mobile/node_modules/detox/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "packages/mobile/node_modules/detox/node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "packages/mobile/node_modules/detox/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "packages/mobile/node_modules/detox/node_modules/yargs": { - "version": "16.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "packages/mobile/node_modules/detox/node_modules/yargs-parser": { - "version": "20.2.9", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "packages/mobile/node_modules/diffie-hellman": { "version": "5.0.3", "license": "MIT", @@ -96475,49 +96722,6 @@ "dev": true, "license": "MIT" }, - "packages/mobile/node_modules/dtrace-provider": { - "version": "0.8.8", - "dev": true, - "hasInstallScript": true, - "license": "BSD-2-Clause", - "optional": true, - "dependencies": { - "nan": "^2.14.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "packages/mobile/node_modules/duplexer2": { - "version": "0.1.4", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "packages/mobile/node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.8", - "dev": true, - "license": "MIT", - "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" - } - }, - "packages/mobile/node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "packages/mobile/node_modules/duplexify": { "version": "3.7.1", "dev": true, @@ -96551,14 +96755,6 @@ "safe-buffer": "~5.1.0" } }, - "packages/mobile/node_modules/easy-stack": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "packages/mobile/node_modules/ecc-jsbn": { "version": "0.1.2", "dev": true, @@ -97196,14 +97392,6 @@ "node": ">= 0.6" } }, - "packages/mobile/node_modules/event-pubsub": { - "version": "4.3.0", - "dev": true, - "license": "Unlicense", - "engines": { - "node": ">=4.0.0" - } - }, "packages/mobile/node_modules/event-target-shim": { "version": "5.0.1", "license": "MIT", @@ -98273,14 +98461,6 @@ "dev": true, "license": "MIT" }, - "packages/mobile/node_modules/funpermaproxy": { - "version": "1.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.3.0" - } - }, "packages/mobile/node_modules/fwd-stream": { "version": "1.0.4", "dependencies": { @@ -100604,25 +100784,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "packages/mobile/node_modules/js-message": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0" - } - }, - "packages/mobile/node_modules/js-queue": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "easy-stack": "^1.0.1" - }, - "engines": { - "node": ">=1.0.0" - } - }, "packages/mobile/node_modules/js-yaml": { "version": "3.14.1", "license": "MIT", @@ -100825,14 +100986,6 @@ "node": ">=4" } }, - "packages/mobile/node_modules/json-cycle": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "packages/mobile/node_modules/json-schema": { "version": "0.4.0", "dev": true, @@ -102319,15 +102472,6 @@ "mkdirp": "bin/cmd.js" } }, - "packages/mobile/node_modules/moment": { - "version": "2.29.4", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": "*" - } - }, "packages/mobile/node_modules/move-concurrently": { "version": "1.0.1", "dev": true, @@ -102352,68 +102496,6 @@ "rimraf": "bin.js" } }, - "packages/mobile/node_modules/multi-sort-stream": { - "version": "1.0.4", - "dev": true, - "license": "bsd" - }, - "packages/mobile/node_modules/multipipe": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer2": "^0.1.2", - "object-assign": "^4.1.0" - } - }, - "packages/mobile/node_modules/mv": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "packages/mobile/node_modules/mv/node_modules/glob": { - "version": "6.0.4", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "packages/mobile/node_modules/mv/node_modules/rimraf": { - "version": "2.4.5", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "glob": "^6.0.1" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "packages/mobile/node_modules/nan": { - "version": "2.17.0", - "dev": true, - "license": "MIT", - "optional": true - }, "packages/mobile/node_modules/nanoid": { "version": "3.3.4", "license": "MIT", @@ -102444,15 +102526,6 @@ "node": ">=0.10.0" } }, - "packages/mobile/node_modules/ncp": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "ncp": "bin/ncp" - } - }, "packages/mobile/node_modules/nice-try": { "version": "1.0.5", "license": "MIT" @@ -102504,19 +102577,6 @@ "version": "0.4.0", "license": "MIT" }, - "packages/mobile/node_modules/node-ipc": { - "version": "9.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "event-pubsub": "4.3.0", - "js-message": "1.0.7", - "js-queue": "2.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "packages/mobile/node_modules/node-libs-browser": { "version": "2.2.1", "dev": true, @@ -102707,14 +102767,6 @@ "url": "https://github.com/sponsors/antelle" } }, - "packages/mobile/node_modules/node-version": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "packages/mobile/node_modules/nodejs-mobile-gyp": { "version": "0.3.1", "dev": true, @@ -102832,13 +102884,6 @@ "version": "0.73.9", "license": "MIT" }, - "packages/mobile/node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "packages/mobile/node_modules/object-copy": { "version": "0.1.0", "license": "MIT", @@ -103598,11 +103643,6 @@ "asap": "~2.0.6" } }, - "packages/mobile/node_modules/promise-polyfill": { - "version": "6.1.0", - "dev": true, - "license": "MIT" - }, "packages/mobile/node_modules/promise.allsettled": { "version": "1.0.6", "dev": true, @@ -103662,16 +103702,6 @@ "version": "16.13.1", "license": "MIT" }, - "packages/mobile/node_modules/proper-lockfile": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, "packages/mobile/node_modules/proto-list": { "version": "1.2.4", "dev": true, @@ -103689,11 +103719,6 @@ "node": ">= 0.10" } }, - "packages/mobile/node_modules/pseudomap": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, "packages/mobile/node_modules/psl": { "version": "1.9.0", "dev": true, @@ -104663,14 +104688,6 @@ "node": ">=0.8" } }, - "packages/mobile/node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "packages/mobile/node_modules/require-main-filename": { "version": "2.0.0", "license": "ISC" @@ -104819,12 +104836,6 @@ "version": "5.1.2", "license": "MIT" }, - "packages/mobile/node_modules/safe-json-stringify": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "optional": true - }, "packages/mobile/node_modules/safe-regex": { "version": "1.1.0", "license": "MIT", @@ -104832,14 +104843,6 @@ "ret": "~0.1.10" } }, - "packages/mobile/node_modules/sanitize-filename": { - "version": "1.6.3", - "dev": true, - "license": "WTFPL OR ISC", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "packages/mobile/node_modules/scheduler": { "version": "0.22.0", "license": "MIT", @@ -105026,13 +105029,6 @@ "version": "1.1.0", "license": "MIT" }, - "packages/mobile/node_modules/shell-quote": { - "version": "1.8.1", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "packages/mobile/node_modules/sigmund": { "version": "1.0.1", "dev": true, @@ -105520,11 +105516,6 @@ "readable-stream": "^3.5.0" } }, - "packages/mobile/node_modules/stream-chain": { - "version": "2.2.5", - "dev": true, - "license": "BSD-3-Clause" - }, "packages/mobile/node_modules/stream-each": { "version": "1.2.3", "dev": true, @@ -105568,14 +105559,6 @@ "safe-buffer": "~5.1.0" } }, - "packages/mobile/node_modules/stream-json": { - "version": "1.7.5", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "stream-chain": "^2.2.5" - } - }, "packages/mobile/node_modules/stream-shift": { "version": "1.0.1", "dev": true, @@ -105943,18 +105926,6 @@ "node": ">=0.10.0" } }, - "packages/mobile/node_modules/telnet-client": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "bluebird": "^3.5.4" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/kozjak" - } - }, "packages/mobile/node_modules/temp": { "version": "0.8.3", "engines": [ @@ -105973,18 +105944,6 @@ "rimraf": "bin.js" } }, - "packages/mobile/node_modules/tempfile": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - }, - "engines": { - "node": ">=4" - } - }, "packages/mobile/node_modules/terser": { "version": "4.8.1", "dev": true, @@ -106151,26 +106110,6 @@ "node": ">=0.6" } }, - "packages/mobile/node_modules/trace-event-lib": { - "version": "1.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-process-hrtime": "^1.0.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "packages/mobile/node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "dev": true, - "license": "WTFPL", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, "packages/mobile/node_modules/ts-dedent": { "version": "2.2.0", "dev": true, @@ -106535,11 +106474,6 @@ "version": "3.0.0", "license": "MIT" }, - "packages/mobile/node_modules/utf8-byte-length": { - "version": "1.0.4", - "dev": true, - "license": "WTFPL" - }, "packages/mobile/node_modules/util": { "version": "0.10.4", "dev": true, @@ -107258,25 +107192,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "packages/mobile/node_modules/ws": { - "version": "7.5.9", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "packages/mobile/node_modules/xmlbuilder": { "version": "15.1.1", "dev": true, @@ -107332,42 +107247,6 @@ "node": ">=6" } }, - "packages/mobile/node_modules/yargs-unparser": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/mobile/node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/mobile/node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "packages/mobile/node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "license": "MIT", @@ -107393,12 +107272,12 @@ }, "packages/state-manager": { "name": "@quiet/state-manager", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "license": "ISC", "dependencies": { - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@reduxjs/toolkit": "^1.9.1", "factory-girl": "^5.0.4", "get-port": "^5.1.1", @@ -107417,8 +107296,8 @@ "@babel/preset-env": "^7.22.5", "@babel/preset-typescript": "^7.22.5", "@peculiar/webcrypto": "1.4.3", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", "@types/factory-girl": "^5.0.8", "@types/jest": "^26.0.24", "@types/luxon": "^2.0.0", @@ -111806,11 +111685,6 @@ "node": ">= 0.6.0" } }, - "packages/state-manager/node_modules/browser-process-hrtime": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" - }, "packages/state-manager/node_modules/bser": { "version": "2.1.1", "dev": true, @@ -115127,14 +115001,6 @@ "dev": true, "license": "MIT" }, - "packages/state-manager/node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "packages/state-manager/node_modules/p-defer": { "version": "3.0.0", "dev": true, @@ -115645,10 +115511,6 @@ "node": ">=10" } }, - "packages/state-manager/node_modules/wait-for-expect": { - "version": "3.0.2", - "license": "MIT" - }, "packages/state-manager/node_modules/walker": { "version": "1.0.7", "dev": true, @@ -115765,14 +115627,14 @@ }, "packages/types": { "name": "@quiet/types", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "license": "ISC", "dependencies": { "cross-env": "^5.2.0", "debug": "^4.3.1" }, "devDependencies": { - "@quiet/eslint-config": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@reduxjs/toolkit": "^1.9.1", "@types/jest": "^26.0.23", "@types/node": "^17.0.21", @@ -116896,11 +116758,6 @@ "node": ">=0.10.0" } }, - "packages/types/node_modules/browser-process-hrtime": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" - }, "packages/types/node_modules/browserslist": { "version": "4.21.5", "dev": true, @@ -120219,26 +120076,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "packages/types/node_modules/ws": { - "version": "7.5.9", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "packages/types/node_modules/xml-name-validator": { "version": "3.0.0", "dev": true, @@ -120491,6 +120328,31 @@ } } }, + "@electron/notarize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", + "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -121292,12 +121154,12 @@ "@nestjs/schematics": "^10.0.0", "@nestjs/testing": "^10.0.0", "@peculiar/webcrypto": "1.4.3", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@types/crypto-js": "^4.0.2", "@types/express": "^4.17.9", "@types/jest": "28.1.8", @@ -121350,7 +121212,6 @@ "pkijs": "3.0.8", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", - "run-script-os": "1.1.6", "rxjs": "^7.2.0", "secp256k1": "4.0.3", "socket.io": "4.6.0", @@ -131119,9 +130980,6 @@ "murmurhash3js-revisited": { "version": "3.0.0" }, - "nan": { - "version": "2.17.0" - }, "nanoid": { "version": "3.3.4" }, @@ -131245,9 +131103,6 @@ "version": "0.9.0", "optional": true }, - "object-assign": { - "version": "4.1.1" - }, "object-is": { "version": "1.1.5", "requires": { @@ -132161,10 +132016,6 @@ } } }, - "pseudomap": { - "version": "1.0.2", - "optional": true - }, "psl": { "version": "1.9.0", "optional": true @@ -132341,10 +132192,6 @@ } } }, - "require-from-string": { - "version": "2.0.2", - "dev": true - }, "requires-port": { "version": "1.0.0" }, @@ -132391,16 +132238,6 @@ "optimist": "~0.3.5" } }, - "run-script-os": { - "version": "1.1.6", - "dev": true - }, - "sanitize-filename": { - "version": "1.6.3", - "requires": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "sax": { "version": "1.2.4" }, @@ -132921,12 +132758,6 @@ "version": "1.2.2", "dev": true }, - "truncate-utf8-bytes": { - "version": "1.0.2", - "requires": { - "utf8-byte-length": "^1.0.1" - } - }, "ts-jest": { "version": "29.0.5", "dev": true, @@ -133324,9 +133155,6 @@ "nan": "^2.14.2" } }, - "utf8-byte-length": { - "version": "1.0.4" - }, "util": { "version": "0.12.4", "requires": { @@ -133387,10 +133215,6 @@ "extsprintf": "^1.2.0" } }, - "wait-for-expect": { - "version": "3.0.2", - "dev": true - }, "walker": { "version": "1.0.8", "requires": { @@ -133664,8 +133488,8 @@ "@quiet/common": { "version": "file:packages/common", "requires": { - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@types/jest": "^26.0.23", "@types/node": "^17.0.21", "cross-env": "^5.2.0", @@ -134457,10 +134281,6 @@ } } }, - "browser-process-hrtime": { - "version": "1.0.0", - "dev": true - }, "browserslist": { "version": "4.21.5", "dev": true, @@ -136684,11 +136504,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "ws": { - "version": "7.5.9", - "dev": true, - "requires": {} - }, "xml-name-validator": { "version": "3.0.0", "dev": true @@ -136744,6 +136559,7 @@ "@babel/preset-react": "^7.22.5", "@cypress/react18": "2.0.0", "@cypress/webpack-dev-server": "3.1.0", + "@electron/notarize": "2.1.0", "@electron/remote": "^2.0.8", "@emotion/react": "~11.10.5", "@emotion/styled": "~11.10.5", @@ -136751,12 +136567,12 @@ "@mui/lab": "^5.0.0-alpha.109", "@mui/material": "~5.10.15", "@peculiar/webcrypto": "1.4.3", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@redux-saga/types": "^1.1.0", "@reduxjs/toolkit": "^1.9.1", "@sentry/browser": "^6.19.7", @@ -136793,7 +136609,7 @@ "@types/redux-debounced": "^0.2.19", "@types/tmp": "^0.2.3", "about-window": "^1.14.0", - "backend-bundle": "^2.0.1-alpha.1", + "backend-bundle": "^2.0.1-alpha.4", "chromatic": "^6.4.3", "classnames": "^2.3.1", "concurrently": "^4.1.0", @@ -136810,7 +136626,6 @@ "electron-debug": "^3.0.1", "electron-devtools-installer": "^3.1.1", "electron-localshortcut": "^3.2.1", - "electron-notarize": "^0.2.1", "electron-store": "^5.2.0", "electron-store-webpack-wrapper": "^0.0.2", "electron-updater": "^5.0.1", @@ -136838,7 +136653,6 @@ "rc-scrollbars": "^1.1.5", "react": "18.1.0", "react-alice-carousel": "^1.15.3", - "react-contenteditable": "^3.3.3", "react-copy-to-clipboard": "^5.1.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", @@ -136866,7 +136680,6 @@ "redux-thunk": "^2.3.0", "remark-gfm": "^1.0.0", "reselect": "^4.1.5", - "run-script-os": "1.1.6", "socket.io-client": "4.6.0", "socket.io-mock": "^1.3.2", "source-map-loader": "^4.0.1", @@ -147707,10 +147520,6 @@ "version": "2.0.1", "dev": true }, - "at-least-node": { - "version": "1.0.0", - "dev": true - }, "atob": { "version": "2.1.2", "dev": true @@ -147959,10 +147768,6 @@ "version": "2.0.2", "dev": true }, - "bluebird": { - "version": "3.7.2", - "dev": true - }, "bluebird-lst": { "version": "1.0.9", "dev": true, @@ -148175,10 +147980,6 @@ "version": "1.2.1", "dev": true }, - "browser-process-hrtime": { - "version": "1.0.0", - "dev": true - }, "browserify-aes": { "version": "1.2.0", "dev": true, @@ -151036,14 +150837,6 @@ "keyboardevents-areequal": "^0.2.1" } }, - "electron-notarize": { - "version": "0.2.1", - "dev": true, - "requires": { - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - } - }, "electron-osx-sign": { "version": "0.6.0", "dev": true, @@ -151891,10 +151684,6 @@ "chance": "^1.0.4" } }, - "fast-deep-equal": { - "version": "2.0.1", - "dev": true - }, "fast-json-parse": { "version": "1.0.3", "dev": true @@ -152295,15 +152084,6 @@ } } }, - "fs-extra": { - "version": "8.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "fs-minipass": { "version": "2.1.0", "dev": true, @@ -155633,13 +155413,6 @@ "version": "2.5.2", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, "jsx-ast-utils": { "version": "2.4.1", "dev": true, @@ -156775,9 +156548,6 @@ "version": "0.3.0", "dev": true }, - "object-assign": { - "version": "4.1.1" - }, "object-copy": { "version": "0.1.0", "dev": true, @@ -157814,14 +157584,6 @@ } } }, - "react-contenteditable": { - "version": "3.3.3", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "prop-types": "^15.7.1" - } - }, "react-copy-to-clipboard": { "version": "5.1.0", "dev": true, @@ -158614,10 +158376,6 @@ } } }, - "require-from-string": { - "version": "2.0.2", - "dev": true - }, "require-main-filename": { "version": "1.0.1", "dev": true @@ -158702,10 +158460,6 @@ "aproba": "^1.1.1" } }, - "run-script-os": { - "version": "1.1.6", - "dev": true - }, "rxjs": { "version": "6.5.2", "dev": true, @@ -158739,13 +158493,6 @@ "walker": "~1.0.5" } }, - "sanitize-filename": { - "version": "1.6.3", - "dev": true, - "requires": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "sax": { "version": "1.2.4" }, @@ -160316,13 +160063,6 @@ "trough": { "version": "1.0.5" }, - "truncate-utf8-bytes": { - "version": "1.0.2", - "dev": true, - "requires": { - "utf8-byte-length": "^1.0.1" - } - }, "ts-dedent": { "version": "2.2.0", "dev": true @@ -160949,10 +160689,6 @@ "node-gyp-build": "~3.7.0" } }, - "utf8-byte-length": { - "version": "1.0.4", - "dev": true - }, "util": { "version": "0.11.1", "dev": true, @@ -161768,11 +161504,6 @@ "signal-exit": "^3.0.2" } }, - "ws": { - "version": "7.4.6", - "dev": true, - "requires": {} - }, "x-default-browser": { "version": "0.4.0", "dev": true, @@ -161892,9 +161623,9 @@ "requires": { "@babel/runtime": "^7.12.5", "@peculiar/webcrypto": "1.4.3", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@types/jest": "^26.0.23", "@types/node": "^14.17.6", "babel-jest": "^29.3.1", @@ -162871,10 +162602,6 @@ } } }, - "browser-process-hrtime": { - "version": "1.0.0", - "dev": true - }, "browserslist": { "version": "4.16.6", "dev": true, @@ -165197,11 +164924,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "ws": { - "version": "7.4.6", - "dev": true, - "requires": {} - }, "xml-name-validator": { "version": "3.0.0", "dev": true @@ -165244,7 +164966,7 @@ "@quiet/logger": { "version": "file:packages/logger", "requires": { - "@quiet/eslint-config": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@types/debug": "^4.1.7", "@types/node": "^17.0.21", "cross-env": "^5.2.0", @@ -165317,12 +165039,12 @@ "@babel/preset-env": "^7.22.5", "@babel/runtime": "^7.22.5", "@peculiar/webcrypto": "^1.4.3", - "@quiet/backend": "^2.0.1-alpha.1", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/backend": "^2.0.3-alpha.0", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@react-native-async-storage/async-storage": "^1.18.1", "@react-native-clipboard/clipboard": "^1.11.2", "@react-native-community/eslint-config": "^2.0.0", @@ -165351,7 +165073,7 @@ "babel-jest": "^29.2.1", "buffer": "^6.0.3", "chalk": "^4.1.1", - "detox": "^20.7.0", + "detox": "^20.13.0", "emotion-theming": "^10.0.19", "events": "^1.1.1", "factory-girl": "^5.0.4", @@ -165408,7 +165130,8 @@ "stream-browserify": "^3.0.0", "styled-components": "^5.3.0", "typed-redux-saga": "^1.3.1", - "typescript": "^4.9.3" + "typescript": "^4.9.3", + "wait-for-expect": "^3.0.2" }, "dependencies": { "@ampproject/remapping": { @@ -170236,10 +169959,6 @@ "tiny-queue": "0.2.0" } }, - "at-least-node": { - "version": "1.0.0", - "dev": true - }, "atob": { "version": "2.1.2" }, @@ -170537,10 +170256,6 @@ } } }, - "bluebird": { - "version": "3.7.2", - "dev": true - }, "bn.js": { "version": "5.2.1" }, @@ -170599,10 +170314,6 @@ "brorand": { "version": "1.1.0" }, - "browser-process-hrtime": { - "version": "1.0.0", - "dev": true - }, "browserify-aes": { "version": "1.2.0", "requires": { @@ -170693,23 +170404,6 @@ "version": "3.0.0", "dev": true }, - "bunyan": { - "version": "1.8.15", - "dev": true, - "requires": { - "dtrace-provider": "~0.8", - "moment": "^2.19.3", - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "bunyan-debug-stream": { - "version": "3.1.0", - "dev": true, - "requires": { - "chalk": "^4.1.2" - } - }, "bytes": { "version": "3.0.0" }, @@ -170760,10 +170454,6 @@ "unset-value": "^1.0.0" } }, - "caf": { - "version": "15.0.1", - "dev": true - }, "caller-callsite": { "version": "2.0.0", "requires": { @@ -170844,44 +170534,6 @@ "version": "1.0.2", "dev": true }, - "child-process-promise": { - "version": "2.2.1", - "dev": true, - "requires": { - "cross-spawn": "^4.0.2", - "node-version": "^1.0.0", - "promise-polyfill": "^6.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "4.0.2", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "which": { - "version": "1.3.1", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "dev": true - } - } - }, "chokidar": { "version": "3.5.3", "dev": true, @@ -171413,184 +171065,6 @@ "version": "3.1.0", "dev": true }, - "detox": { - "version": "20.7.0", - "dev": true, - "requires": { - "ajv": "^8.6.3", - "bunyan": "^1.8.12", - "bunyan-debug-stream": "^3.1.0", - "caf": "^15.0.1", - "chalk": "^4.0.0", - "child-process-promise": "^2.2.0", - "execa": "^5.1.1", - "find-up": "^4.1.0", - "fs-extra": "^4.0.2", - "funpermaproxy": "^1.1.0", - "glob": "^8.0.3", - "ini": "^1.3.4", - "json-cycle": "^1.3.0", - "lodash": "^4.17.11", - "multi-sort-stream": "^1.0.3", - "multipipe": "^4.0.0", - "node-ipc": "^9.2.1", - "proper-lockfile": "^3.0.2", - "resolve-from": "^5.0.0", - "sanitize-filename": "^1.6.1", - "semver": "^7.0.0", - "serialize-error": "^8.0.1", - "shell-quote": "^1.7.2", - "signal-exit": "^3.0.3", - "stream-json": "^1.7.4", - "strip-ansi": "^6.0.1", - "telnet-client": "1.2.8", - "tempfile": "^2.0.0", - "trace-event-lib": "^1.3.1", - "which": "^1.3.1", - "ws": "^7.0.0", - "yargs": "^16.0.3", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "brace-expansion": { - "version": "2.0.1", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cliui": { - "version": "7.0.4", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "fs-extra": { - "version": "4.0.3", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "glob": { - "version": "8.1.0", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "semver": { - "version": "7.5.0", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "serialize-error": { - "version": "8.1.0", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "string-width": { - "version": "4.2.3", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "type-fest": { - "version": "0.20.2", - "dev": true - }, - "which": { - "version": "1.3.1", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "dev": true - } - } - }, "diffie-hellman": { "version": "5.0.3", "requires": { @@ -171659,43 +171133,6 @@ "version": "2.0.2", "dev": true }, - "dtrace-provider": { - "version": "0.8.8", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.14.0" - } - }, - "duplexer2": { - "version": "0.1.4", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "dev": true, - "requires": { - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "duplexify": { "version": "3.7.1", "dev": true, @@ -171728,10 +171165,6 @@ } } }, - "easy-stack": { - "version": "1.0.1", - "dev": true - }, "ecc-jsbn": { "version": "0.1.2", "dev": true, @@ -172160,10 +171593,6 @@ "etag": { "version": "1.8.1" }, - "event-pubsub": { - "version": "4.3.0", - "dev": true - }, "event-target-shim": { "version": "5.0.1" }, @@ -172913,10 +172342,6 @@ "version": "1.0.1", "dev": true }, - "funpermaproxy": { - "version": "1.1.0", - "dev": true - }, "fwd-stream": { "version": "1.0.4", "requires": { @@ -174494,17 +173919,6 @@ } } }, - "js-message": { - "version": "1.0.7", - "dev": true - }, - "js-queue": { - "version": "2.0.2", - "dev": true, - "requires": { - "easy-stack": "^1.0.1" - } - }, "js-yaml": { "version": "3.14.1", "requires": { @@ -174650,10 +174064,6 @@ "jsesc": { "version": "2.5.2" }, - "json-cycle": { - "version": "1.4.0", - "dev": true - }, "json-schema": { "version": "0.4.0", "dev": true @@ -175764,11 +175174,6 @@ "minimist": "^1.2.6" } }, - "moment": { - "version": "2.29.4", - "dev": true, - "optional": true - }, "move-concurrently": { "version": "1.0.1", "dev": true, @@ -175790,55 +175195,6 @@ } } }, - "multi-sort-stream": { - "version": "1.0.4", - "dev": true - }, - "multipipe": { - "version": "4.0.0", - "dev": true, - "requires": { - "duplexer2": "^0.1.2", - "object-assign": "^4.1.0" - } - }, - "mv": { - "version": "2.1.1", - "dev": true, - "optional": true, - "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "dev": true, - "optional": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "rimraf": { - "version": "2.4.5", - "dev": true, - "optional": true, - "requires": { - "glob": "^6.0.1" - } - } - } - }, - "nan": { - "version": "2.17.0", - "dev": true, - "optional": true - }, "nanoid": { "version": "3.3.4" }, @@ -175858,11 +175214,6 @@ "to-regex": "^3.0.1" } }, - "ncp": { - "version": "2.0.0", - "dev": true, - "optional": true - }, "nice-try": { "version": "1.0.5" }, @@ -175891,15 +175242,6 @@ "node-int64": { "version": "0.4.0" }, - "node-ipc": { - "version": "9.2.1", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.7", - "js-queue": "2.0.2" - } - }, "node-libs-browser": { "version": "2.2.1", "dev": true, @@ -176065,10 +175407,6 @@ "node-stream-zip": { "version": "1.15.0" }, - "node-version": { - "version": "1.2.0", - "dev": true - }, "nodejs-mobile-gyp": { "version": "0.3.1", "dev": true, @@ -176146,9 +175484,6 @@ "ob1": { "version": "0.73.9" }, - "object-assign": { - "version": "4.1.1" - }, "object-copy": { "version": "0.1.0", "requires": { @@ -176650,10 +175985,6 @@ "asap": "~2.0.6" } }, - "promise-polyfill": { - "version": "6.1.0", - "dev": true - }, "promise.allsettled": { "version": "1.0.6", "dev": true, @@ -176695,15 +176026,6 @@ } } }, - "proper-lockfile": { - "version": "3.2.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, "proto-list": { "version": "1.2.4", "dev": true @@ -176716,10 +176038,6 @@ "ipaddr.js": "1.9.1" } }, - "pseudomap": { - "version": "1.0.2", - "dev": true - }, "psl": { "version": "1.9.0", "dev": true @@ -177367,10 +176685,6 @@ } } }, - "require-from-string": { - "version": "2.0.2", - "dev": true - }, "require-main-filename": { "version": "2.0.0" }, @@ -177474,24 +176788,12 @@ "safe-buffer": { "version": "5.1.2" }, - "safe-json-stringify": { - "version": "1.2.0", - "dev": true, - "optional": true - }, "safe-regex": { "version": "1.1.0", "requires": { "ret": "~0.1.10" } }, - "sanitize-filename": { - "version": "1.6.3", - "dev": true, - "requires": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "scheduler": { "version": "0.22.0", "requires": { @@ -177620,9 +176922,6 @@ "shallowequal": { "version": "1.1.0" }, - "shell-quote": { - "version": "1.8.1" - }, "sigmund": { "version": "1.0.1", "dev": true @@ -177962,10 +177261,6 @@ "readable-stream": "^3.5.0" } }, - "stream-chain": { - "version": "2.2.5", - "dev": true - }, "stream-each": { "version": "1.2.3", "dev": true, @@ -178007,13 +177302,6 @@ } } }, - "stream-json": { - "version": "1.7.5", - "dev": true, - "requires": { - "stream-chain": "^2.2.5" - } - }, "stream-shift": { "version": "1.0.1", "dev": true @@ -178253,13 +177541,6 @@ } } }, - "telnet-client": { - "version": "1.2.8", - "dev": true, - "requires": { - "bluebird": "^3.5.4" - } - }, "temp": { "version": "0.8.3", "requires": { @@ -178272,14 +177553,6 @@ } } }, - "tempfile": { - "version": "2.0.0", - "dev": true, - "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - } - }, "terser": { "version": "4.8.1", "dev": true, @@ -178395,21 +177668,6 @@ "toidentifier": { "version": "1.0.1" }, - "trace-event-lib": { - "version": "1.3.1", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0", - "lodash": "^4.17.21" - } - }, - "truncate-utf8-bytes": { - "version": "1.0.2", - "dev": true, - "requires": { - "utf8-byte-length": "^1.0.1" - } - }, "ts-dedent": { "version": "2.2.0", "dev": true @@ -178642,10 +177900,6 @@ "utf8": { "version": "3.0.0" }, - "utf8-byte-length": { - "version": "1.0.4", - "dev": true - }, "util": { "version": "0.10.4", "dev": true, @@ -179173,10 +178427,6 @@ "signal-exit": "^3.0.7" } }, - "ws": { - "version": "7.5.9", - "requires": {} - }, "xmlbuilder": { "version": "15.1.1", "dev": true @@ -179227,26 +178477,6 @@ "decamelize": "^1.2.0" } }, - "yargs-unparser": { - "version": "2.0.0", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "dev": true - } - } - }, "yeast": { "version": "0.1.2" } @@ -179259,11 +178489,11 @@ "@babel/preset-env": "^7.22.5", "@babel/preset-typescript": "^7.22.5", "@peculiar/webcrypto": "1.4.3", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@reduxjs/toolkit": "^1.9.1", "@types/factory-girl": "^5.0.8", "@types/jest": "^26.0.24", @@ -182145,10 +181375,6 @@ "base64-arraybuffer": { "version": "0.1.4" }, - "browser-process-hrtime": { - "version": "1.0.0", - "dev": true - }, "bser": { "version": "2.1.1", "dev": true, @@ -184458,10 +183684,6 @@ "version": "2.2.0", "dev": true }, - "object-assign": { - "version": "4.1.1", - "dev": true - }, "p-defer": { "version": "3.0.0", "dev": true @@ -184813,9 +184035,6 @@ "xml-name-validator": "^3.0.0" } }, - "wait-for-expect": { - "version": "3.0.2" - }, "walker": { "version": "1.0.7", "dev": true, @@ -184898,7 +184117,7 @@ "@quiet/types": { "version": "file:packages/types", "requires": { - "@quiet/eslint-config": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@reduxjs/toolkit": "^1.9.1", "@types/jest": "^26.0.23", "@types/node": "^17.0.21", @@ -185686,10 +184905,6 @@ } } }, - "browser-process-hrtime": { - "version": "1.0.0", - "dev": true - }, "browserslist": { "version": "4.21.5", "dev": true, @@ -187940,11 +187155,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "ws": { - "version": "7.5.9", - "dev": true, - "requires": {} - }, "xml-name-validator": { "version": "3.0.0", "dev": true @@ -188630,6 +187840,12 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "devOptional": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -188697,6 +187913,12 @@ "readable-stream": "^3.4.0" } }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, "boolean": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", @@ -188740,6 +187962,12 @@ "run-parallel-limit": "^1.1.0" } }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -188777,6 +188005,39 @@ "run-applescript": "^5.0.0" } }, + "bunyan": { + "version": "1.8.15", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", + "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", + "dev": true, + "requires": { + "dtrace-provider": "~0.8", + "moment": "^2.19.3", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "bunyan-debug-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bunyan-debug-stream/-/bunyan-debug-stream-3.1.0.tgz", + "integrity": "sha512-VaFYbDVdiSn3ZpdozrjZ8mFpxHXl26t11C1DKRQtbo0EgffqeFNrRLOGIESKVeGEvVu4qMxMSSxzNlSw7oTj7w==", + "dev": true, + "requires": { + "chalk": "^4.1.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, "byte-size": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz", @@ -188886,6 +188147,12 @@ } } }, + "caf": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/caf/-/caf-15.0.1.tgz", + "integrity": "sha512-Xp/IK6vMwujxWZXra7djdYzPdPnEQKa7Mudu2wZgDQ3TJry1I0TgtjEgwZHpoBcMp68j4fb0/FZ1SJyMEgJrXQ==", + "dev": true + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -188942,6 +188209,54 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "child-process-promise": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/child-process-promise/-/child-process-promise-2.2.1.tgz", + "integrity": "sha512-Fi4aNdqBsr0mv+jgWxcZ/7rAIC2mgihrptyVI4foh/rrjY/3BNjfP9+oaiFx/fzim+1ZyCNBae0DlyfQhSugog==", + "dev": true, + "requires": { + "cross-spawn": "^4.0.2", + "node-version": "^1.0.0", + "promise-polyfill": "^6.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -189524,6 +188839,198 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "devOptional": true }, + "detox": { + "version": "20.13.5", + "resolved": "https://registry.npmjs.org/detox/-/detox-20.13.5.tgz", + "integrity": "sha512-V0t1QuRI5rsiXEPBakjjjGGo8Y5kLi4KXhLrcvnpO8id6m7UtObj91wj+4cCnMRX2eSohXu9wR+HbD6IKcO9sA==", + "dev": true, + "requires": { + "ajv": "^8.6.3", + "bunyan": "^1.8.12", + "bunyan-debug-stream": "^3.1.0", + "caf": "^15.0.1", + "chalk": "^4.0.0", + "child-process-promise": "^2.2.0", + "execa": "^5.1.1", + "find-up": "^5.0.0", + "fs-extra": "^11.0.0", + "funpermaproxy": "^1.1.0", + "glob": "^8.0.3", + "ini": "^1.3.4", + "json-cycle": "^1.3.0", + "lodash": "^4.17.11", + "multi-sort-stream": "^1.0.3", + "multipipe": "^4.0.0", + "node-ipc": "9.2.1", + "proper-lockfile": "^3.0.2", + "resolve-from": "^5.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "serialize-error": "^8.0.1", + "shell-quote": "^1.7.2", + "signal-exit": "^3.0.3", + "stream-json": "^1.7.4", + "strip-ansi": "^6.0.1", + "telnet-client": "1.2.8", + "tempfile": "^2.0.0", + "trace-event-lib": "^1.3.1", + "which": "^1.3.1", + "ws": "^7.0.0", + "yargs": "^17.0.0", + "yargs-parser": "^21.0.0", + "yargs-unparser": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "serialize-error": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, "diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -189580,23 +189087,74 @@ "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", "dev": true }, + "dtrace-provider": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.14.0" + } + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "e2e-tests": { "version": "file:packages/e2e-tests", "requires": { - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@types/jest": "^29.2.6", "@types/selenium-webdriver": "^4.1.10", "babel-jest": "^29.3.1", - "backend-bundle": "^2.0.1-alpha.1", + "backend-bundle": "^2.0.1-alpha.4", "cross-env": "^5.2.0", "electron-chromedriver": "22.0.0", "get-port": "^5.1.1", @@ -191230,6 +190788,12 @@ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, "ejs": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", @@ -192019,6 +191583,12 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -192319,9 +191889,9 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.6", @@ -192340,6 +191910,12 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, + "funpermaproxy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/funpermaproxy/-/funpermaproxy-1.1.0.tgz", + "integrity": "sha512-2Sp1hWuO8m5fqeFDusyhKqYPT+7rGLw34N3qonDcdRP8+n7M7Gl/yKp/q7oCxnnJ6pWCectOmLFJpsMU/++KrQ==", + "dev": true + }, "gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -192677,6 +192253,14 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -192936,10 +192520,10 @@ "@babel/preset-env": "^7.22.5", "@babel/preset-typescript": "^7.22.5", "@peculiar/webcrypto": "1.4.3", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", "@reduxjs/toolkit": "^1.6.1", "@types/jest": "^26.0.24", "@types/redux-saga": "^0.10.5", @@ -195340,10 +194924,6 @@ "base64-arraybuffer": { "version": "1.0.1" }, - "browser-process-hrtime": { - "version": "1.0.0", - "dev": true - }, "bser": { "version": "2.1.1", "dev": true, @@ -196956,9 +196536,6 @@ "xml-name-validator": "^3.0.0" } }, - "wait-for-expect": { - "version": "3.0.2" - }, "walker": { "version": "1.0.8", "dev": true, @@ -197014,10 +196591,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "ws": { - "version": "7.5.6", - "requires": {} - }, "xml-name-validator": { "version": "3.0.0", "dev": true @@ -197112,7 +196685,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-date-object": { @@ -197412,6 +196985,21 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==" }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "requires": { + "easy-stack": "^1.0.1" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -197430,6 +197018,12 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, + "json-cycle": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/json-cycle/-/json-cycle-1.5.0.tgz", + "integrity": "sha512-GOehvd5PO2FeZ5T4c+RxobeT5a1PiGpF4u9/3+UvrMU4bhnVqzJY7hm39wg8PDCqkU91fWGH8qjWR4bn+wgq9w==", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -198351,11 +197945,24 @@ "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==" }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "optional": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "multi-sort-stream": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multi-sort-stream/-/multi-sort-stream-1.0.4.tgz", + "integrity": "sha512-hAZ8JOEQFbgdLe8HWZbb7gdZg0/yAIHF00Qfo3kd0rXFv96nXe+/bPTrKHZ2QMHugGX4FiAyET1Lt+jiB+7Qlg==", + "dev": true + }, "multiformats": { "version": "12.1.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.2.tgz", @@ -198382,12 +197989,75 @@ } } }, + "multipipe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-4.0.0.tgz", + "integrity": "sha512-jzcEAzFXoWwWwUbvHCNPwBlTz3WCWe/jPcXSmTfbo/VjRwRTfvLZ/bdvtiTdqCe8d4otCSsPCbhGYcX+eggpKQ==", + "dev": true, + "requires": { + "duplexer2": "^0.1.2", + "object-assign": "^4.1.0" + } + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dev": true, + "optional": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dev": true, + "optional": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, "napi-macros": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", @@ -198405,6 +198075,13 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "optional": true + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -198480,12 +198157,29 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==" }, + "node-ipc": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, "node-machine-id": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", "dev": true }, + "node-version": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.2.0.tgz", + "integrity": "sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ==", + "dev": true + }, "nopt": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", @@ -198829,6 +198523,11 @@ } } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -199381,6 +199080,12 @@ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, + "promise-polyfill": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", + "integrity": "sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ==", + "dev": true + }, "promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -199400,6 +199105,17 @@ "read": "^2.0.0" } }, + "proper-lockfile": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-3.2.0.tgz", + "integrity": "sha512-iMghHHXv2bsxl6NchhEaFck8tvX3F9cknEEh1SUpguUOBjN7PAAW9BLzmbc1g/mCD1gY3EE2EABBHPJfFdHFmA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, "protobufjs": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", @@ -199447,6 +199163,12 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "devOptional": true + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -199803,6 +199525,12 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "resolve": { "version": "1.22.6", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", @@ -200004,6 +199732,13 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true, + "optional": true + }, "safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -200020,6 +199755,14 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -200087,6 +199830,11 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -200234,6 +199982,21 @@ } } }, + "stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "dev": true + }, + "stream-json": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz", + "integrity": "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==", + "dev": true, + "requires": { + "stream-chain": "^2.2.5" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -200426,12 +200189,39 @@ "readable-stream": "^3.1.1" } }, + "telnet-client": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/telnet-client/-/telnet-client-1.2.8.tgz", + "integrity": "sha512-W+w4k3QAmULVNhBVT2Fei369kGZCh/TH25M7caJAXW+hLxwoQRuw0di3cX4l0S9fgH3Mvq7u+IFMoBDpEw/eIg==", + "dev": true, + "requires": { + "bluebird": "^3.5.4" + } + }, "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, "text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -200533,12 +200323,29 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "trace-event-lib": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/trace-event-lib/-/trace-event-lib-1.4.1.tgz", + "integrity": "sha512-TOgFolKG8JFY+9d5EohGWMvwvteRafcyfPWWNIqcuD1W/FUvxWcy2MSCZ/beYHM63oYPHYHCd3tkbgCctHVP7w==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, "trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, "ts-api-utils": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", @@ -200781,6 +200588,11 @@ "punycode": "^2.1.0" } }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -200817,6 +200629,11 @@ "builtins": "^5.0.0" } }, + "wait-for-expect": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", + "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -200999,6 +200816,12 @@ } } }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -201059,6 +200882,38 @@ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/packages/backend-bundle/CHANGELOG.md b/packages/backend-bundle/CHANGELOG.md index 9f7d1f06f0..67dcd1d34e 100644 --- a/packages/backend-bundle/CHANGELOG.md +++ b/packages/backend-bundle/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -## [2.0.1-alpha.1](https://github.com/ZbayApp/monorepo/compare/backend-bundle@2.0.1-alpha.0...backend-bundle@2.0.1-alpha.1) (2023-09-25) +## [2.0.1-alpha.4](https://github.com/TryQuiet/quiet/compare/backend-bundle@2.0.1-alpha.3...backend-bundle@2.0.1-alpha.4) (2023-10-12) **Note:** Version bump only for package backend-bundle @@ -11,7 +11,39 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [2.0.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/backend-bundle@1.7.0-alpha.0...backend-bundle@2.0.1-alpha.0) (2023-09-25) +## [2.0.1-alpha.3](https://github.com/TryQuiet/quiet/compare/backend-bundle@2.0.1-alpha.2...backend-bundle@2.0.1-alpha.3) (2023-10-10) + +**Note:** Version bump only for package backend-bundle + + + + + +## [2.0.1-alpha.2](https://github.com/TryQuiet/quiet/compare/backend-bundle@1.6.1...backend-bundle@2.0.1-alpha.2) (2023-10-09) + +**Note:** Version bump only for package backend-bundle + + + + + +## [2.0.1-alpha.1](https://github.com/TryQuiet/quiet/compare/backend-bundle@2.0.1-alpha.0...backend-bundle@2.0.1-alpha.1) (2023-09-25) + +**Note:** Version bump only for package backend-bundle + + + + + +## [2.0.1-alpha.0](https://github.com/TryQuiet/quiet/compare/backend-bundle@1.7.0-alpha.0...backend-bundle@2.0.1-alpha.0) (2023-09-25) + +**Note:** Version bump only for package backend-bundle + + + + + +# [2.0.0-alpha.18](https://github.com/TryQuiet/quiet/compare/backend-bundle@1.6.1...backend-bundle@2.0.0-alpha.18) (2023-10-04) **Note:** Version bump only for package backend-bundle @@ -20,6 +52,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline # [1.7.0-alpha.0](/compare/backend-bundle@1.6.0...backend-bundle@1.7.0-alpha.0) (2023-08-29) + +**Note:** Version bump only for package backend-bundle + + + + + ## [1.6.1](https://github.com/TryQuiet/quiet/compare/backend-bundle@1.6.0...backend-bundle@1.6.1) (2023-09-25) **Note:** Version bump only for package backend-bundle @@ -52,7 +91,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.4.0](https://github.com/ZbayApp/monorepo/compare/backend-bundle@1.4.0-alpha.1...backend-bundle@1.4.0) (2023-07-28) +# [1.4.0](https://github.com/TryQuiet/quiet/compare/backend-bundle@1.4.0-alpha.1...backend-bundle@1.4.0) (2023-07-28) **Note:** Version bump only for package backend-bundle @@ -68,7 +107,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.4.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/backend-bundle@1.3.1...backend-bundle@1.4.0-alpha.0) (2023-06-19) +# [1.4.0-alpha.0](https://github.com/TryQuiet/quiet/compare/backend-bundle@1.3.1...backend-bundle@1.4.0-alpha.0) (2023-06-19) **Note:** Version bump only for package backend-bundle @@ -244,7 +283,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.19.0-alpha.1](https://github.com/ZbayApp/monorepo/compare/backend-bundle@0.19.0-alpha.0...backend-bundle@0.19.0-alpha.1) (2023-01-27) +# [0.19.0-alpha.1](https://github.com/TryQuiet/quiet/compare/backend-bundle@0.19.0-alpha.0...backend-bundle@0.19.0-alpha.1) (2023-01-27) **Note:** Version bump only for package backend-bundle diff --git a/packages/backend-bundle/package-lock.json b/packages/backend-bundle/package-lock.json index 6ccc8b32b6..e9ddad833f 100644 --- a/packages/backend-bundle/package-lock.json +++ b/packages/backend-bundle/package-lock.json @@ -1,13 +1,13 @@ { "name": "backend-bundle", - "version": "2.0.1-alpha.1", + "version": "2.0.1-alpha.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "backend-bundle", - "version": "2.0.1-alpha.1", + "version": "2.0.1-alpha.4", "license": "ISC" } } -} \ No newline at end of file +} diff --git a/packages/backend-bundle/package.json b/packages/backend-bundle/package.json index 6abf21f4c0..567fbb7f47 100644 --- a/packages/backend-bundle/package.json +++ b/packages/backend-bundle/package.json @@ -1,6 +1,6 @@ { "name": "backend-bundle", - "version": "2.0.1-alpha.1", + "version": "2.0.1-alpha.4", "description": "", "main": "bundle.cjs", "scripts": {}, diff --git a/packages/backend/.gitattributes b/packages/backend/.gitattributes deleted file mode 100644 index 2271e38305..0000000000 --- a/packages/backend/.gitattributes +++ /dev/null @@ -1,5 +0,0 @@ -# Set the default behavior, in case people don't have core.autocrlf set. -* text=auto - -# Declare files that will always have CRLF line endings on checkout. -electron-fetch-git.patch text eol=crlf \ No newline at end of file diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index c3954fe3f7..bfe5074eb0 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -3,8 +3,69 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.3-alpha.0](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.2-alpha.0...@quiet/backend@2.0.3-alpha.0) (2023-10-26) + + +### Features + +* version code 366 ([cebf886](https://github.com/TryQuiet/backend/commit/cebf886aee2c4ec6e0ef4e66219d9dc0afecb98c)) + + + + + +## [2.0.2-alpha.0](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.1-alpha.6...@quiet/backend@2.0.2-alpha.0) (2023-10-26) + +**Note:** Version bump only for package @quiet/backend + + + + + +## [2.0.1-alpha.6](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.1-alpha.5...@quiet/backend@2.0.1-alpha.6) (2023-10-13) + +**Note:** Version bump only for package @quiet/backend + + + + + +## [2.0.1-alpha.5](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.1-alpha.4...@quiet/backend@2.0.1-alpha.5) (2023-10-12) + +**Note:** Version bump only for package @quiet/backend + + + + + +## [2.0.1-alpha.4](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.1-alpha.3...@quiet/backend@2.0.1-alpha.4) (2023-10-11) + + +### Reverts + +* Revert "Adjust project bootstrap scripts to be windows-friendly (#1870)" (#1937) ([0811ea3](https://github.com/TryQuiet/backend/commit/0811ea3ea3f682dd763be72b12f626fe416bc036)), closes [#1870](https://github.com/TryQuiet/backend/issues/1870) [#1937](https://github.com/TryQuiet/backend/issues/1937) [#1870](https://github.com/TryQuiet/backend/issues/1870) + + + + + +## [2.0.1-alpha.3](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.1-alpha.2...@quiet/backend@2.0.1-alpha.3) (2023-10-10) + +**Note:** Version bump only for package @quiet/backend + + + + + +## [2.0.1-alpha.2](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.4...@quiet/backend@2.0.1-alpha.2) (2023-10-09) + +**Note:** Version bump only for package @quiet/backend + + + + + ## [2.0.1-alpha.1](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.1-alpha.0...@quiet/backend@2.0.1-alpha.1) (2023-09-25) -## [1.9.4](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.3...@quiet/backend@1.9.4) (2023-10-03) **Note:** Version bump only for package @quiet/backend @@ -13,7 +74,30 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ## [2.0.1-alpha.0](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.0-alpha.5...@quiet/backend@2.0.1-alpha.0) (2023-09-25) -## [1.9.3](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.2...@quiet/backend@1.9.3) (2023-10-03) + +**Note:** Version bump only for package @quiet/backend + + + + + +# [2.0.0-alpha.20](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.0-alpha.19...@quiet/backend@2.0.0-alpha.20) (2023-10-09) + +**Note:** Version bump only for package @quiet/backend + + + + + +# [2.0.0-alpha.19](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.0-alpha.18...@quiet/backend@2.0.0-alpha.19) (2023-10-04) + +**Note:** Version bump only for package @quiet/backend + + + + + +# [2.0.0-alpha.18](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.4...@quiet/backend@2.0.0-alpha.18) (2023-10-04) **Note:** Version bump only for package @quiet/backend @@ -22,7 +106,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline # [2.0.0-alpha.5](https://github.com/TryQuiet/backend/compare/@quiet/backend@2.0.0-alpha.4...@quiet/backend@2.0.0-alpha.5) (2023-09-19) -## [1.9.2](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.1...@quiet/backend@1.9.2) (2023-09-25) **Note:** Version bump only for package @quiet/backend @@ -69,8 +152,38 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline - # [1.10.0-alpha.0](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.0...@quiet/backend@1.10.0-alpha.0) (2023-08-29) + +**Note:** Version bump only for package @quiet/backend + + + + + +## [1.9.4](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.3...@quiet/backend@1.9.4) (2023-10-03) + +**Note:** Version bump only for package @quiet/backend + + + + + +## [1.9.3](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.2...@quiet/backend@1.9.3) (2023-10-03) + +**Note:** Version bump only for package @quiet/backend + + + + + +## [1.9.2](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.1...@quiet/backend@1.9.2) (2023-09-25) + +**Note:** Version bump only for package @quiet/backend + + + + + ## [1.9.1](https://github.com/TryQuiet/backend/compare/@quiet/backend@1.9.0...@quiet/backend@1.9.1) (2023-09-15) **Note:** Version bump only for package @quiet/backend diff --git a/packages/backend/electron-fetch-git.patch b/packages/backend/electron-fetch-git.patch deleted file mode 100644 index 68534bfed9..0000000000 --- a/packages/backend/electron-fetch-git.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/packages/backend/node_modules/electron-fetch/lib/index.js b/packages/backend/node_modules/electron-fetch/lib/index.js -index c9ea590d9..74c0757a8 100644 ---- a/packages/backend/node_modules/electron-fetch/lib/index.js -+++ b/packages/backend/node_modules/electron-fetch/lib/index.js -@@ -1283,12 +1283,7 @@ function getNodeRequestOptions(request) { - - let electron; // istanbul ignore else - --if (process.versions.electron) { -- electron = require('electron'); --} -- --const isReady = electron && electron.app && !electron.app.isReady() ? new Promise(resolve => electron.app.once('ready', resolve)) : Promise.resolve(); -- -+const isReady = Promise.resolve(); - /** - * Fetch function - * diff --git a/packages/backend/package.json b/packages/backend/package.json index 0757fef8d4..2531539189 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "@quiet/backend", - "version": "2.0.1-alpha.1", + "version": "2.0.3-alpha.0", "description": "tlg-manager", "types": "lib/index.d.ts", "type": "module", @@ -10,14 +10,9 @@ "private": true, "scripts": { "build": "tsc -p tsconfig.build.json", - "webpack": "run-script-os", - "webpack:default": "webpack --env mode=development && cp ./lib/bundle.cjs ../backend-bundle/bundle.cjs", + "webpack": "webpack --env mode=development && cp ./lib/bundle.cjs ../backend-bundle/bundle.cjs", "webpack:prod": "webpack --env mode=production && cp ./lib/bundle.cjs ../backend-bundle/bundle.cjs", - "webpack:windows": "webpack --env mode=development && xcopy .\\lib\\bundle.cjs ..\\backend-bundle\\ /Y", - "webpack:prod:windows": "webpack --env mode=production && xcopy .\\lib\\bundle.cjs ..\\backend-bundle\\ /Y", - "applyPatches": "run-script-os", - "applyPatches:default": "patch -f -p0 < ./electron-fetch.patch || true && patch -f -p0 --forward --binary < ./parse-duration.patch || true && patch -f -p0 --forward --binary < ./parse-duration-esm.patch || true", - "applyPatches:windows": "git apply ./electron-fetch-git.patch --whitespace=fix --reject --verbose --no-index --ignore-space-change --inaccurate-eof || cd .", + "applyPatches": "patch -f -p0 < ./electron-fetch.patch || true && patch -f -p0 --forward --binary < ./parse-duration.patch || true && patch -f -p0 --forward --binary < ./parse-duration-esm.patch || true", "prepare": "npm run applyPatches && npm run webpack", "version": "git add -A src", "lint": "eslint --ext .jsx,.js,.ts,.tsx ./src/ --fix", @@ -58,8 +53,8 @@ "@nestjs/cli": "^10.0.0", "@nestjs/schematics": "^10.0.0", "@nestjs/testing": "^10.0.0", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", "@types/crypto-js": "^4.0.2", "@types/express": "^4.17.9", "@types/jest": "28.1.8", @@ -77,7 +72,6 @@ "fetch-mock-jest": "^1.5.1", "jest": "^29.4.2", "mock-fs": "^5.1.2", - "run-script-os": "1.1.6", "tmp": "^0.2.1", "ts-jest": "^29.0.3", "ts-loader": "9.4.2", @@ -95,10 +89,10 @@ "@nestjs/core": "^10.0.0", "@nestjs/platform-express": "^10.0.0", "@peculiar/webcrypto": "1.4.3", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "abortable-iterator": "^3.0.0", "class-transformer": "^0.5.1", "class-validator": "^0.13.1", @@ -150,4 +144,4 @@ "ipfs-pubsub-peer-monitor": "vinkabuki/ipfs-pubsub-peer-monitor#038af76f22e6c902dab4a855b24273707ce17d94" } } -} \ No newline at end of file +} diff --git a/packages/backend/src/nest/connections-manager/connections-manager.service.spec.ts b/packages/backend/src/nest/connections-manager/connections-manager.service.spec.ts index abc3ad923e..4952b669a6 100644 --- a/packages/backend/src/nest/connections-manager/connections-manager.service.spec.ts +++ b/packages/backend/src/nest/connections-manager/connections-manager.service.spec.ts @@ -2,7 +2,7 @@ import { jest } from '@jest/globals' import { LazyModuleLoader } from '@nestjs/core' import { Test, TestingModule } from '@nestjs/testing' import { getFactory, prepareStore, type Store, type communities, type identity } from '@quiet/state-manager' -import { type Community, type Identity, type InitCommunityPayload, type LaunchRegistrarPayload } from '@quiet/types' +import { type Community, type Identity, type InitCommunityPayload } from '@quiet/types' import { type FactoryGirl } from 'factory-girl' import PeerId from 'peer-id' import { TestModule } from '../common/test.module' @@ -108,10 +108,8 @@ describe('ConnectionsManagerService', () => { await connectionsManagerService.closeAllServices() const launchCommunitySpy = jest.spyOn(connectionsManagerService, 'launchCommunity').mockResolvedValue() - const launchRegistrarSpy = jest.spyOn(registrationService, 'launchRegistrar').mockResolvedValue() await connectionsManagerService.init() - expect(launchRegistrarSpy).not.toHaveBeenCalled() expect(launchCommunitySpy).toHaveBeenCalledWith(launchCommunityPayload) }) diff --git a/packages/backend/src/nest/connections-manager/connections-manager.service.ts b/packages/backend/src/nest/connections-manager/connections-manager.service.ts index f96b6d88a0..c733bb55c1 100644 --- a/packages/backend/src/nest/connections-manager/connections-manager.service.ts +++ b/packages/backend/src/nest/connections-manager/connections-manager.service.ts @@ -30,11 +30,8 @@ import { NetworkStats, PushNotificationPayload, RegisterOwnerCertificatePayload, - RegisterUserCertificatePayload, RemoveDownloadStatus, ResponseCreateNetworkPayload, - SaveCertificatePayload, - SaveOwnerCertificatePayload, SendCertificatesResponse, SendMessagePayload, SetChannelSubscribedPayload, @@ -43,7 +40,6 @@ import { UploadFilePayload, PeerId as PeerIdType, SaveCSRPayload, - SendUserCertificatePayload, CommunityMetadata, CommunityMetadataPayload, } from '@quiet/types' @@ -178,10 +174,6 @@ export class ConnectionsManagerService extends EventEmitter implements OnModuleI if (this.tor && !options.saveTor) { await this.tor.kill() } - if (this.registrationService) { - this.logger('Stopping registration service') - await this.registrationService.stop() - } if (this.storageService) { this.logger('Stopping orbitdb') await this.storageService?.stopOrbitDb() @@ -207,6 +199,7 @@ export class ConnectionsManagerService extends EventEmitter implements OnModuleI this.serverIoProvider.io.close() } + // This method is only used on iOS through rn-bridge for reacting on lifecycle changes public async openSocket() { await this.socketService.init() } @@ -394,26 +387,11 @@ export class ConnectionsManagerService extends EventEmitter implements OnModuleI this.socketService.on(SocketActionTypes.CONNECTION_PROCESS_INFO, data => { this.serverIoProvider.io.emit(SocketActionTypes.CONNECTION_PROCESS_INFO, data) }) - - this.registrationService.on(SocketActionTypes.CONNECTION_PROCESS_INFO, data => { - this.serverIoProvider.io.emit(SocketActionTypes.CONNECTION_PROCESS_INFO, data) - }) } private attachRegistrationListeners() { - this.registrationService.on(RegistrationEvents.REGISTRAR_STATE, (payload: ServiceState) => { - this.registrarState = payload - }) this.registrationService.on(SocketActionTypes.SAVED_OWNER_CERTIFICATE, payload => { this.serverIoProvider.io.emit(SocketActionTypes.SAVED_OWNER_CERTIFICATE, payload) }) - this.registrationService.on(RegistrationEvents.SPAWN_HS_FOR_REGISTRAR, async payload => { - const onionAddress = await this.tor.spawnHiddenService({ - targetPort: payload.port, - privKey: payload.privateKey, - virtPort: payload.targetPort, - }) - this.registrationService.onionAddress = onionAddress - }) this.registrationService.on(RegistrationEvents.ERROR, payload => { emitError(this.serverIoProvider.io, payload) }) @@ -527,7 +505,6 @@ export class ConnectionsManagerService extends EventEmitter implements OnModuleI }) this.storageService.on(StorageEvents.LOAD_CERTIFICATES, (payload: SendCertificatesResponse) => { this.serverIoProvider.io.emit(SocketActionTypes.RESPONSE_GET_CERTIFICATES, payload) - this.registrationService.emit(RegistrationEvents.SET_CERTIFICATES, payload.certificates) }) this.storageService.on(StorageEvents.LOAD_PUBLIC_CHANNELS, (payload: ChannelsReplicatedPayload) => { this.serverIoProvider.io.emit(SocketActionTypes.CHANNELS_REPLICATED, payload) @@ -582,11 +559,14 @@ export class ConnectionsManagerService extends EventEmitter implements OnModuleI console.log('emitting deleted channel event back to state manager') this.serverIoProvider.io.emit(SocketActionTypes.CHANNEL_DELETION_RESPONSE, payload) }) - this.storageService.on(StorageEvents.REPLICATED_CSR, async (payload: string[]) => { - console.log(`On ${StorageEvents.REPLICATED_CSR}`) - this.serverIoProvider.io.emit(SocketActionTypes.RESPONSE_GET_CSRS, { csrs: payload }) - payload.forEach(csr => this.registrationService.emit(RegistrationEvents.REGISTER_USER_CERTIFICATE, csr)) - }) + this.storageService.on( + StorageEvents.REPLICATED_CSR, + async (payload: { csrs: string[]; certificates: string[] }) => { + console.log(`On ${StorageEvents.REPLICATED_CSR}`) + this.serverIoProvider.io.emit(SocketActionTypes.RESPONSE_GET_CSRS, { csrs: payload.csrs }) + this.registrationService.emit(RegistrationEvents.REGISTER_USER_CERTIFICATE, payload) + } + ) this.storageService.on(StorageEvents.REPLICATED_COMMUNITY_METADATA, (payload: CommunityMetadata) => { console.log(`On ${StorageEvents.REPLICATED_COMMUNITY_METADATA}: ${payload}`) const communityMetadataPayload: CommunityMetadataPayload = { diff --git a/packages/backend/src/nest/registration/registration.functions.ts b/packages/backend/src/nest/registration/registration.functions.ts index 43bde69f62..1363eae65e 100644 --- a/packages/backend/src/nest/registration/registration.functions.ts +++ b/packages/backend/src/nest/registration/registration.functions.ts @@ -1,31 +1,12 @@ -import { - createUserCert, - loadCSR, - CertFieldsTypes, - getReqFieldValue, - keyFromCertificate, - parseCertificate, - getCertFieldValue, -} from '@quiet/identity' +import { createUserCert, keyFromCertificate } from '@quiet/identity' import { IsBase64, IsNotEmpty, validate } from 'class-validator' -import { CertificationRequest } from 'pkijs' -import { Agent } from 'http' -import AbortController from 'abort-controller' -import fetch, { Response } from 'node-fetch' -import { getUsersAddresses } from '../common/utils' -import { - ErrorCodes, - ErrorMessages, - ErrorPayload, - PermsData, - SocketActionTypes, - SuccessfullRegistrarionResponse, - UserCertificatePayload, - UserData, -} from '@quiet/types' +import { ErrorPayload, PermsData, SocketActionTypes, SuccessfullRegistrarionResponse } from '@quiet/types' import { CsrContainsFields, IsCsr } from './registration.validators' import { RegistrationEvents } from './registration.types' +import { loadCSR, CertFieldsTypes, getCertFieldValue, getReqFieldValue, parseCertificate } from '@quiet/identity' +import { CertificationRequest } from 'pkijs' import Logger from '../common/logger' +import { load } from 'mock-fs' const logger = Logger('registration.functions') class UserCsrData { @@ -37,51 +18,8 @@ class UserCsrData { } export interface RegistrarResponse { - status: number - body: any -} - -// REFACTORING: Move this method to identity package -export const pubKeyMatch = (cert: string, parsedCsr: CertificationRequest): boolean => { - const parsedCertificate = parseCertificate(cert) - const pubKey = keyFromCertificate(parsedCertificate) - const pubKeyCsr = keyFromCertificate(parsedCsr) - - if (pubKey === pubKeyCsr) { - return true - } - return false -} - -export const registerOwner = async (userCsr: string, permsData: PermsData): Promise => { - const userData = new UserCsrData() - userData.csr = userCsr - const validationErrors = await validate(userData) - if (validationErrors.length > 0) { - throw new Error(`Validation errors: ${validationErrors}`) - } - const userCert = await createUserCert( - permsData.certificate, - permsData.privKey, - userCsr, - new Date(), - new Date(2030, 1, 1) - ) - return userCert.userCertString -} - -const certificateByUsername = (username: string, certificates: string[]): string | null => { - /** - * Check if given username is already in use - */ - for (const cert of certificates) { - const parsedCert = parseCertificate(cert) - const certUsername = getCertFieldValue(parsedCert, CertFieldsTypes.nickName) - if (certUsername?.localeCompare(username, undefined, { sensitivity: 'base' }) === 0) { - return cert - } - } - return null + cert: string | null + error: any } export interface RegistrationResponse { @@ -89,194 +27,59 @@ export interface RegistrationResponse { data: ErrorPayload | SuccessfullRegistrarionResponse } -export const sendCertificateRegistrationRequest = async ( - serviceAddress: string, - userCsr: string, - communityId: string, - requestTimeout = 120000, - socksProxyAgent: Agent -): Promise => { - const controller = new AbortController() - const timeout = setTimeout(() => { - controller.abort() - }, requestTimeout) - - let options = { - method: 'POST', - body: JSON.stringify({ data: userCsr }), - headers: { 'Content-Type': 'application/json' }, - signal: controller.signal, - } - - options = Object.assign( - { - agent: socksProxyAgent, - }, - options - ) - - let response: Response | null = null +export const extractPendingCsrs = async (payload: { csrs: string[]; certificates: string[] }) => { + const certNames = new Set() + const pendingNames = new Set() + const parsedUniqueCsrs = new Map() + const pendingCsrs: string[] = [] - try { - const start = new Date() - response = await fetch(`${serviceAddress}/register`, options) - const end = new Date() - const fetchTime = (end.getTime() - start.getTime()) / 1000 - logger(`Fetched ${serviceAddress}, time: ${fetchTime}`) - } catch (e) { - logger.error(e) - return { - eventType: RegistrationEvents.ERROR, - data: { - type: SocketActionTypes.REGISTRAR, - code: ErrorCodes.NOT_FOUND, - message: ErrorMessages.REGISTRAR_NOT_FOUND, - community: communityId, - }, + payload.certificates.forEach(cert => { + const parsedCert = parseCertificate(cert) + const username = getCertFieldValue(parsedCert, CertFieldsTypes.nickName) + if (username) { + certNames.add(username) } - } finally { - clearTimeout(timeout) - } + }) - switch (response?.status) { - case 200: - break - case 400: - return { - eventType: RegistrationEvents.ERROR, - data: { - type: SocketActionTypes.REGISTRAR, - code: ErrorCodes.BAD_REQUEST, - message: ErrorMessages.INVALID_USERNAME, - community: communityId, - }, - } - case 403: - return { - eventType: RegistrationEvents.ERROR, - data: { - type: SocketActionTypes.REGISTRAR, - code: ErrorCodes.FORBIDDEN, - message: ErrorMessages.USERNAME_TAKEN, - community: communityId, - }, - } - case 404: - return { - eventType: RegistrationEvents.ERROR, - data: { - type: SocketActionTypes.REGISTRAR, - code: ErrorCodes.NOT_FOUND, - message: ErrorMessages.REGISTRAR_NOT_FOUND, - community: communityId, - }, - } - default: - logger.error(`Registrar responded with ${response?.status} "${response?.statusText}" (${communityId})`) - return { - eventType: RegistrationEvents.ERROR, - data: { - type: SocketActionTypes.REGISTRAR, - code: ErrorCodes.SERVER_ERROR, - message: ErrorMessages.REGISTRATION_FAILED, - community: communityId, - }, - } + for (const csr of payload.csrs.reverse()) { + const parsedCsr = await loadCSR(csr) + const pubKey = keyFromCertificate(parsedCsr) + if (!parsedUniqueCsrs.has(pubKey)) { + parsedUniqueCsrs.set(pubKey, csr) + } } - const registrarResponse: UserCertificatePayload = await response.json() + const uniqueCsrsArray = Array.from(parsedUniqueCsrs.values()).reverse() - logger(`Sending user certificate (${communityId})`) - return { - eventType: SocketActionTypes.SEND_USER_CERTIFICATE, - data: { - communityId: communityId, - payload: registrarResponse, - }, + for (const csr of uniqueCsrsArray) { + const parsedCsr = await loadCSR(csr) + const username = getReqFieldValue(parsedCsr, CertFieldsTypes.nickName) + if (username && !certNames.has(username) && !pendingNames.has(username)) { + pendingNames.add(username) + pendingCsrs.push(csr) + } } + return pendingCsrs } -export const registerUser = async ( - csr: string, - permsData: PermsData, - certificates: string[], - ownerCertificate: string -): Promise => { - let cert: string +export const validateCsr = async (csr: string) => { const userData = new UserCsrData() userData.csr = csr const validationErrors = await validate(userData) - if (validationErrors.length > 0) { - logger.error(`Received data is not valid: ${validationErrors.toString()}`) - return { - status: 400, - body: JSON.stringify(validationErrors), - } - } + return validationErrors +} - const parsedCsr = await loadCSR(userData.csr) - const username = getReqFieldValue(parsedCsr, CertFieldsTypes.nickName) - if (!username) { - logger.error(`Could not parse certificate for field type ${CertFieldsTypes.nickName}`) +/** + * This function should only be called with pending CSRs (by calling extractPendingCsrs first which prevents signing CSRs for duplicate usernames). + */ +export const issueCertificate = async (userCsr: string, permsData: PermsData): Promise => { + const validationErrors = await validateCsr(userCsr) + if (validationErrors.length > 0) { return { - // Should be internal server error code 500 - status: 400, - body: null, - } - } - // Use map here - const usernameCert = certificateByUsername(username, certificates) - if (usernameCert) { - if (!pubKeyMatch(usernameCert, parsedCsr)) { - logger(`Username ${username} is taken`) - return { - // Should be conflict code 409 - status: 403, - body: null, - } - } else { - logger('Requesting same CSR again') - cert = usernameCert - } - } else { - logger('username doesnt have existing cert, creating new') - try { - cert = await registerCertificate(userData.csr, permsData) - } catch (e) { - logger.error(`Something went wrong with registering user: ${e.message as string}`) - return { - // Should be internal server error code 500 - status: 400, - body: null, - } + cert: null, + error: [validationErrors], } } - - const allUsers: UserData[] = [] - for (const cert of certificates) { - const parsedCert = parseCertificate(cert) - const onionAddress = getCertFieldValue(parsedCert, CertFieldsTypes.commonName) - const peerId = getCertFieldValue(parsedCert, CertFieldsTypes.peerId) - const username = getCertFieldValue(parsedCert, CertFieldsTypes.nickName) - const dmPublicKey = getCertFieldValue(parsedCert, CertFieldsTypes.dmPublicKey) - if (!onionAddress || !peerId || !username || !dmPublicKey) continue - allUsers.push({ onionAddress, peerId, username, dmPublicKey }) - } - - const peerList = await getUsersAddresses(allUsers) - - return { - status: 200, - body: { - certificate: cert, - peers: peerList, - rootCa: permsData.certificate, - ownerCert: ownerCertificate, - }, - } -} - -export const registerCertificate = async (userCsr: string, permsData: PermsData): Promise => { const userCert = await createUserCert( permsData.certificate, permsData.privKey, @@ -284,5 +87,8 @@ export const registerCertificate = async (userCsr: string, permsData: PermsData) new Date(), new Date(2030, 1, 1) ) - return userCert.userCertString + return { + cert: userCert.userCertString, + error: null, + } } diff --git a/packages/backend/src/nest/registration/registration.service.spec.ts b/packages/backend/src/nest/registration/registration.service.spec.ts index 38719e3ec0..6355013592 100644 --- a/packages/backend/src/nest/registration/registration.service.spec.ts +++ b/packages/backend/src/nest/registration/registration.service.spec.ts @@ -2,29 +2,14 @@ import { Test, TestingModule } from '@nestjs/testing' import { TestModule } from '../common/test.module' import { RegistrationModule } from './registration.module' import { RegistrationService } from './registration.service' -import { - configCrypto, - createRootCA, - createUserCert, - createUserCsr, - type RootCA, - verifyUserCert, - type UserCsr, -} from '@quiet/identity' +import { configCrypto, createRootCA, createUserCsr, type RootCA, verifyUserCert, type UserCsr } from '@quiet/identity' import { type DirResult } from 'tmp' -import { ErrorCodes, ErrorMessages, type PermsData, SocketActionTypes } from '@quiet/types' +import { type PermsData } from '@quiet/types' import { Time } from 'pkijs' -import { registerOwner, registerUser, sendCertificateRegistrationRequest } from './registration.functions' -import createHttpsProxyAgent from 'https-proxy-agent' -import { RegistrationEvents } from './registration.types' +import { issueCertificate, extractPendingCsrs } from './registration.functions' import { jest } from '@jest/globals' import { createTmpDir } from '../common/utils' -// @ts-ignore -const { Response } = jest.requireActual('node-fetch') - -jest.mock('node-fetch', () => jest.fn()) - describe('RegistrationService', () => { let module: TestingModule let registrationService: RegistrationService @@ -34,7 +19,6 @@ describe('RegistrationService', () => { let permsData: PermsData let userCsr: UserCsr let invalidUserCsr: any - let fetch: any beforeEach(async () => { module = await Test.createTestingModule({ @@ -60,7 +44,6 @@ describe('RegistrationService', () => { hashAlg: configCrypto.hashAlg, }) invalidUserCsr = 'invalidUserCsr' - fetch = await import('node-fetch') }) afterEach(async () => { @@ -68,104 +51,99 @@ describe('RegistrationService', () => { await module.close() }) - it('registerOwner should return certificate if csr is valid', async () => { - const result = await registerOwner(userCsr.userCsr, permsData) - expect(result).toBeTruthy() + it('registerUser should return cert if csr is valid and cert should pass the verification', async () => { + const responseData = await issueCertificate(userCsr.userCsr, permsData) + expect(responseData.cert).toBeTruthy() + if (!responseData.cert) return null + const isProperUserCert = await verifyUserCert(certRoot.rootCertString, responseData.cert) + expect(isProperUserCert.result).toBe(true) }) - it('registerOwner should throw error if csr is invalid', async () => { - await expect(registerOwner(invalidUserCsr, permsData)).rejects.toThrow() + it('registrar should return errors array if csr is not valid and should not return any cert', async () => { + const responseData = await issueCertificate(invalidUserCsr, permsData) + expect(responseData.cert).toBeFalsy() + expect(responseData.error.length).toBeTruthy() }) - it('registerUser should return 200 status code', async () => { - const responseData = await registerUser(userCsr.userCsr, permsData, [], 'ownerCert') - const isProperUserCert = await verifyUserCert(certRoot.rootCertString, responseData.body.certificate) - expect(isProperUserCert.result).toBe(true) + it('extractPendingCsrs should return all csrs if there are no certificates and csrs do not contain duplicate usernames', async () => { + const certificates: string[] = [] + const csrs: string[] = [userCsr.userCsr] + const payload: { certificates: string[]; csrs: string[] } = { + certificates: certificates, + csrs: csrs, + } + const pendingCsrs = await extractPendingCsrs(payload) + expect(pendingCsrs).toEqual(csrs) }) - it('returns existing certificate if username is taken but csr and cert public keys match', async () => { - const user = await createUserCsr({ - nickname: 'userName', + it('extractPendingCsrs should return all csrs if there are certificates, and csrs do not contain any name that is in certificates already', async () => { + const aliceCsr = await createUserCsr({ + nickname: 'alice', commonName: 'nqnw4kc4c77fb47lk52m5l57h4tcxceo7ymxekfn7yh5m66t4jv2olad.onion', peerId: 'Qmf3ySkYqLET9xtAtDzvAr5Pp3egK1H3C5iJAZm1SpLEp6', - dmPublicKey: 'testdmPublicKey1', + dmPublicKey: 'testdmPublicKey', signAlg: configCrypto.signAlg, hashAlg: configCrypto.hashAlg, }) - const userCert = await createUserCert( - certRoot.rootCertString, - certRoot.rootKeyString, - user.userCsr, - new Date(), - new Date(2030, 1, 1) - ) - const responseData = await registerUser(user.userCsr, permsData, [userCert.userCertString], 'ownerCert') - expect(responseData.status).toEqual(200) - const isProperUserCert = await verifyUserCert(certRoot.rootCertString, responseData.body.certificate) - expect(isProperUserCert.result).toBe(true) - expect(responseData.body.peers.length).toBe(1) - expect(responseData.body.rootCa).toBe(certRoot.rootCertString) + const aliceCert = await issueCertificate(aliceCsr.userCsr, permsData) + if (!aliceCert.cert) return + const certificates: string[] = [aliceCert.cert] + const csrs: string[] = [userCsr.userCsr] + const payload: { certificates: string[]; csrs: string[] } = { + certificates: certificates, + csrs: csrs, + } + const pendingCsrs = await extractPendingCsrs(payload) + expect(pendingCsrs).toEqual(csrs) }) - it('returns 403 if username already exists and csr and cert public keys dont match', async () => { - const user = await createUserCsr({ - nickname: 'userName', + it('extractPendingCsrs should return filtered csrs, excluding those that tries to claim username already present in certificate', async () => { + const userCert = await issueCertificate(userCsr.userCsr, permsData) + if (!userCert.cert) return + const certificates: string[] = [userCert.cert] + const csrs: string[] = [userCsr.userCsr] + const payload: { certificates: string[]; csrs: string[] } = { + certificates: certificates, + csrs: csrs, + } + const pendingCsrs = await extractPendingCsrs(payload) + expect(pendingCsrs.length).toEqual(0) + }) + + it('extractPendingCsrs should return all csrs if there are no duplicates in requested usernames', async () => { + const userCsr2 = await createUserCsr({ + nickname: 'userName2', commonName: 'nqnw4kc4c77fb47lk52m5l57h4tcxceo7ymxekfn7yh5m66t4jv2olad.onion', peerId: 'Qmf3ySkYqLET9xtAtDzvAr5Pp3egK1H3C5iJAZm1SpLEp6', - dmPublicKey: 'testdmPublicKey1', + dmPublicKey: 'testdmPublicKey', signAlg: configCrypto.signAlg, hashAlg: configCrypto.hashAlg, }) - const userCert = await createUserCert( - certRoot.rootCertString, - certRoot.rootKeyString, - user.userCsr, - new Date(), - new Date(2030, 1, 1) - ) - const userNew = await createUserCsr({ - nickname: 'username', - commonName: 'abcd.onion', - peerId: 'QmS9vJkgbea9EgzHvVPqhj1u4tH7YKq7eteDN7gnG5zUmc', - dmPublicKey: 'testdmPublicKey2', + const csrs: string[] = [userCsr.userCsr, userCsr2.userCsr] + const pendingCsrs = await extractPendingCsrs({ certificates: [], csrs: csrs }) + expect(pendingCsrs.length).toEqual(csrs.length) + }) + + it('Extract pending csrs should return only csrs that have unique usernames', async () => { + const userCsr = await createUserCsr({ + nickname: 'karol', + commonName: 'nqnw4kc4c77fb47lk52m5l57h4tcxceo7ymxekfn7yh5m66t4jv2olad.onion', + peerId: 'Qmf3ySkYqLET9xtAtDzvAr5Pp3egK1H3C5iJAZm1SpLEp6', + dmPublicKey: 'testdmPublicKey', signAlg: configCrypto.signAlg, hashAlg: configCrypto.hashAlg, }) - const response = await registerUser(userNew.userCsr, permsData, [userCert.userCertString], 'ownerCert') - expect(response.status).toEqual(403) - }) - - it('returns 400 if no csr in data or csr has wrong format', async () => { - for (const invalidCsr of ['', 'abcd']) { - const response = await registerUser(invalidCsr, permsData, [], 'ownerCert') - expect(response.status).toEqual(400) - } - }) - - it('returns 400 if csr is lacking a field', async () => { - const csr = - 'MIIBFTCBvAIBADAqMSgwFgYKKwYBBAGDjBsCARMIdGVzdE5hbWUwDgYDVQQDEwdaYmF5IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGPGHpJzE/CvL7l/OmTSfYQrhhnWQrYw3GgWB1raCTSeFI/MDVztkBOlxwdUWSm10+1OtKVUWeMKaMtyIYFcPPqAwMC4GCSqGSIb3DQEJDjEhMB8wHQYDVR0OBBYEFLjaEh+cnNhsi5qDsiMB/ZTzZFfqMAoGCCqGSM49BAMCA0gAMEUCIFwlob/Igab05EozU0e/lsG7c9BxEy4M4c4Jzru2vasGAiEAqFTQuQr/mVqTHO5vybWm/iNDk8vh88K6aBCCGYqIfdw=' - const response = await registerUser(csr, permsData, [], 'ownerCert') - expect(response.status).toEqual(400) - }) - - it('returns 404 if fetching registrar address throws error', async () => { - console.log(fetch) - fetch.default.mockRejectedValue('User aborted request') - const communityId = 'communityID' - const response = await sendCertificateRegistrationRequest( - 'QmS9vJkgbea9EgzHvVPqhj1u4tH7YKq7eteDN7gnG5zUmc', - userCsr.userCsr, - communityId, - 1000, - createHttpsProxyAgent({ port: '12311', host: 'localhost' }) - ) - expect(response.eventType).toBe(RegistrationEvents.ERROR) - expect(response.data).toEqual({ - type: SocketActionTypes.REGISTRAR, - code: ErrorCodes.NOT_FOUND, - message: ErrorMessages.REGISTRAR_NOT_FOUND, - community: communityId, + const userCsr2 = await createUserCsr({ + nickname: 'karol', + commonName: 'nnnnnnc4c77fb47lk52m5l57h4tcxceo7ymxekfn7yh5m66t4jv2olad.onion', + peerId: 'QmffffffqLET9xtAtDzvAr5Pp3egK1H3C5iJAZm1SpLEp6', + dmPublicKey: 'testdmPublicKey', + signAlg: configCrypto.signAlg, + hashAlg: configCrypto.hashAlg, }) + const csrs: string[] = [userCsr.userCsr, userCsr2.userCsr] + const pendingCsrs = await extractPendingCsrs({ certificates: [], csrs: csrs }) + expect(pendingCsrs.length).toEqual(1) + expect(pendingCsrs[0]).toBe(userCsr.userCsr) }) }) diff --git a/packages/backend/src/nest/registration/registration.service.ts b/packages/backend/src/nest/registration/registration.service.ts index 2640e14cea..c788d1cb7c 100644 --- a/packages/backend/src/nest/registration/registration.service.ts +++ b/packages/backend/src/nest/registration/registration.service.ts @@ -1,110 +1,39 @@ -import { Inject, Injectable, OnModuleInit } from '@nestjs/common' -import express from 'express' -import getPort from 'get-port' -import { Agent, Server } from 'http' +import { Injectable, OnModuleInit } from '@nestjs/common' import { EventEmitter } from 'events' -import { - registerOwner, - registerUser, - RegistrarResponse, - RegistrationResponse, - sendCertificateRegistrationRequest, -} from './registration.functions' -import { - ConnectionProcessInfo, - ErrorCodes, - ErrorMessages, - LaunchRegistrarPayload, - PermsData, - RegisterOwnerCertificatePayload, - SocketActionTypes, -} from '@quiet/types' -import { EXPRESS_PROVIDER } from '../const' +import { extractPendingCsrs, issueCertificate } from './registration.functions' +import { ErrorCodes, ErrorMessages, PermsData, RegisterOwnerCertificatePayload, SocketActionTypes } from '@quiet/types' import { RegistrationEvents } from './registration.types' -import { ServiceState } from '../connections-manager/connections-manager.types' import Logger from '../common/logger' @Injectable() export class RegistrationService extends EventEmitter implements OnModuleInit { private readonly logger = Logger(RegistrationService.name) - public onionAddress: string - private _server: Server - private _port: number - public registrationService: any public certificates: string[] = [] private _permsData: PermsData - private _ownerCertificate: string - constructor(@Inject(EXPRESS_PROVIDER) public readonly _app: express.Application) { + constructor() { super() } onModuleInit() { - this.on(RegistrationEvents.SET_CERTIFICATES, certs => { - this.setCertificates(certs) - }) - this.on(RegistrationEvents.REGISTER_USER_CERTIFICATE, async (csr: string) => { - if (!this._permsData) { - console.log('NO PERMS DATA') - return - } - await this.registerUser(csr) - }) - // eslint-disable-next-line - const self = this - this.setRouting(self) - } - - public setCertificates(certs: string[]) { - this.certificates = certs - } - - private pendingPromise: Promise | null = null - - private setRouting(self: any) { - // @ts-ignore - const middleware = function (req, res, next) { - const host = req.headers['host'] - if (host !== self.onionAddress) { - return res.status(403).send('Access denied') + this.on( + RegistrationEvents.REGISTER_USER_CERTIFICATE, + async (payload: { csrs: string[]; certificates: string[] }) => { + // Lack of permsData means that we are not the owner of the community in the official model of the app, however anyone can modify the source code, put malicious permsData here, issue false certificates and try to trick other users. + await this.issueCertificates(payload) } - next() - } - - this._app.use(middleware) - this._app.use(express.json()) - this._app.post('/register', async (req, res): Promise => { - if (this.pendingPromise) return - this.pendingPromise = this.registerUser(req.body.data) - const result = await this.pendingPromise - if (result) { - res.status(result.status).send(result.body) - } - this.pendingPromise = null - }) - } - - public async listen(): Promise { - return await new Promise(resolve => { - this._server = this._app.listen(this._port, () => { - this.logger(`Certificate registration service listening on port: ${this._port}`) - resolve() - }) - }) + ) } - public async stop(): Promise { - return await new Promise(resolve => { - if (!this._server) resolve() - this._server.close(() => { - this.logger('Certificate registration service closed') - resolve() - }) + private async issueCertificates(payload: { csrs: string[]; certificates: string[] }) { + if (!this._permsData) return + const pendingCsrs = await extractPendingCsrs(payload) + pendingCsrs.forEach(async csr => { + await this.registerUserCertificate(csr) }) } public set permsData(perms: PermsData) { - console.log('Setting owner perms data') this._permsData = { certificate: perms.certificate, privKey: perms.privKey, @@ -112,79 +41,28 @@ export class RegistrationService extends EventEmitter implements OnModuleInit { } public async registerOwnerCertificate(payload: RegisterOwnerCertificatePayload): Promise { - let cert: string - try { - cert = await registerOwner(payload.userCsr.userCsr, payload.permsData) - } catch (e) { - this.logger.error(`Registering owner failed: ${e.message}`) + // FIXME: We should resolve problems with events order and we should set permsData only on LAUNCH_REGISTRART socket event in connectionsManager. + this._permsData = payload.permsData + const result = await issueCertificate(payload.userCsr.userCsr, this._permsData) + if (result?.cert) { + this.emit(SocketActionTypes.SAVED_OWNER_CERTIFICATE, { + communityId: payload.communityId, + network: { certificate: result.cert }, + }) + } else { this.emit(SocketActionTypes.ERROR, { type: SocketActionTypes.REGISTRAR, code: ErrorCodes.SERVER_ERROR, message: ErrorMessages.REGISTRATION_FAILED, community: payload.communityId, }) - return - } - this.emit(SocketActionTypes.SAVED_OWNER_CERTIFICATE, { - communityId: payload.communityId, - network: { certificate: cert, peers: [] }, - }) - this._ownerCertificate = cert - } - - public async sendCertificateRegistrationRequest( - serviceAddress: string, - userCsr: string, - communityId: string, - requestTimeout = 120000, - socksProxyAgent: Agent - ): Promise { - const response: RegistrationResponse = await sendCertificateRegistrationRequest( - serviceAddress, - userCsr, - communityId, - requestTimeout, - socksProxyAgent - ) - this.emit(SocketActionTypes.CONNECTION_PROCESS_INFO, ConnectionProcessInfo.CONNECTING_TO_COMMUNITY) - this.emit(response.eventType, response.data) - } - - public async registerUser(csr: string): Promise<{ status: number; body: any }> { - const result = await registerUser(csr, this._permsData, this.certificates, this._ownerCertificate) - if (result?.status === 200) { - this.emit(RegistrationEvents.NEW_USER, { certificate: result.body.certificate, rootPermsData: this._permsData }) } - return result } - public async launchRegistrar(payload: LaunchRegistrarPayload): Promise { - this.emit(RegistrationEvents.REGISTRAR_STATE, ServiceState.LAUNCHING) - this._permsData = { - certificate: payload.rootCertString, - privKey: payload.rootKeyString, - } - this.logger(`Initializing registration service for peer ${payload.peerId}...`) - try { - await this.init(payload.privateKey) - } catch (err) { - this.logger.error(`Couldn't initialize certificate registration service: ${err as string}`) - return + public async registerUserCertificate(csr: string): Promise { + const result = await issueCertificate(csr, this._permsData) + if (result?.cert) { + this.emit(RegistrationEvents.NEW_USER, { certificate: result.cert }) } - try { - await this.listen() - } catch (err) { - this.logger.error(`Certificate registration service couldn't start listening: ${err as string}`) - } - this.emit(RegistrationEvents.REGISTRAR_STATE, ServiceState.LAUNCHED) - } - - public async init(privKey: string): Promise { - this._port = await getPort() - this.emit(RegistrationEvents.SPAWN_HS_FOR_REGISTRAR, { - port: this._port, - privateKey: privKey, - targetPort: 80, - }) } } diff --git a/packages/backend/src/nest/registration/registration.types.ts b/packages/backend/src/nest/registration/registration.types.ts index dcffe9d7f9..02da49c0d6 100644 --- a/packages/backend/src/nest/registration/registration.types.ts +++ b/packages/backend/src/nest/registration/registration.types.ts @@ -1,8 +1,5 @@ export enum RegistrationEvents { ERROR = 'error', - SPAWN_HS_FOR_REGISTRAR = 'spawnHsForRegistrar', NEW_USER = 'newUser', - SET_CERTIFICATES = 'setCertificates', - REGISTRAR_STATE = 'registrarState', REGISTER_USER_CERTIFICATE = 'registerUserCertificate', } diff --git a/packages/backend/src/nest/socket/socket.service.ts b/packages/backend/src/nest/socket/socket.service.ts index 5449c1d35b..5d687fe2a2 100644 --- a/packages/backend/src/nest/socket/socket.service.ts +++ b/packages/backend/src/nest/socket/socket.service.ts @@ -35,20 +35,22 @@ export class SocketService extends EventEmitter implements OnModuleInit { @Inject(CONFIG_OPTIONS) public readonly configOptions: ConfigOptions ) { super() + + this.readyness = new Promise(resolve => { + this.resolveReadyness = resolve + }) } async onModuleInit() { this.logger('init:started') + this.attachListeners() await this.init() + this.logger('init:finished') } public async init() { - this.readyness = new Promise(resolve => { - this.resolveReadyness = resolve - }) - const connection = new Promise(resolve => { this.serverIoProvider.io.on(SocketActionTypes.CONNECTION, socket => { this.logger('init: connection') diff --git a/packages/backend/src/nest/storage/storage.service.spec.ts b/packages/backend/src/nest/storage/storage.service.spec.ts index 9012cf0785..c49020b95d 100644 --- a/packages/backend/src/nest/storage/storage.service.spec.ts +++ b/packages/backend/src/nest/storage/storage.service.spec.ts @@ -1,6 +1,6 @@ import { LazyModuleLoader } from '@nestjs/core' import { Test, TestingModule } from '@nestjs/testing' -import { createUserCert, keyFromCertificate, parseCertificate } from '@quiet/identity' +import { createUserCert, keyFromCertificate, loadCSR, parseCertificate } from '@quiet/identity' import { prepareStore, getFactory, @@ -295,26 +295,6 @@ describe('StorageService', () => { expect(result).toBe(true) }) - it('is not saved to db if did not pass verification', async () => { - const oldUserCertificate = await createUserCert( - rootPermsData.certificate, - rootPermsData.privKey, - // @ts-expect-error userCsr can be undefined - alice.userCsr?.userCsr, - new Date(2021, 1, 1), - new Date(2021, 1, 2) - ) - - await storageService.init(peerId) - - const result = await storageService.saveCertificate({ - certificate: oldUserCertificate.userCertString, - rootPermsData, - }) - - expect(result).toBe(false) - }) - it('is not saved to db if empty', async () => { await storageService.init(peerId) @@ -599,6 +579,37 @@ describe('StorageService', () => { }, ]) }) + + it('getCsrs - remove old csrs and replace with new for each pubkey', async () => { + await storageService.init(peerId) + const allCsrs = [ + 'MIIDITCCAsYCAQAwSTFHMEUGA1UEAxM+anR3c3hxMnZ1dWthY3JodWhvdnAzd2JxbzRxNXc0d2s3Nm1qbWJ3cXk3eGNma2FsdmRxb3hhYWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQE2q6iS+WCmIVCSFI2AjHrW6ujUdrceD5T2xkcTJBTn0y50WphcupUajCRgkXaTBkTsGNJ3qWRZAKX7CiuehBJoIICGTAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBQuE5JgPY/BYBpgG5pnjMkEEIkrGjCCAUcGCSqGSIb3DQEJDDGCATgEggE0BDlx84glBl72q82F2a+y8iTVKM8IMiXYYrmNyhFPj6XsfVQpvLhNviZ5zHdMBWbFj44vTSUIasNP9I9eCWSEAaEJqjngEh18WCRS/XbvQxI/8qB5pzcfghvM8BCgSLbSEjK2GMYVhCXmRH1YGHIZu0+Ii9pe5nwG154JlPUsmIRgu6ruY6PQk65Aoo4OyhPn5CCUFInptHcz1JpAiCRe0Z6wuQHud03VY50fx4ETdmUNJBEIPOyd/Xn6lMOi6SaWGHbCWiufeJRm+mRdoHJAEt6kPLhGIYGyduNT/8cGoe2xKyQDvNoTr4dqqRZ2HgZ18nicsTHswpGqAlUnZXaA3V85Qu1cvaMAqEoPOUlGP9AriIVwtIZM0hdWHqKHgBCZrKfHb5oLxt6ourQ3+q19tvx+u6UwFAYKKwYBBAGDjBsCATEGEwRlbGxvMD0GCSsGAQIBDwMBATEwEy5RbVVvNXN0NXNqR3RFMUtQeXhOVW5pTWhnQXduV0JVNXk3TnpoMlpRRkdacVdiMEcGA1UdETFAEz5qdHdzeHEydnV1a2Fjcmh1aG92cDN3YnFvNHE1dzR3azc2bWptYndxeTd4Y2ZrYWx2ZHFveGFhZC5vbmlvbjAKBggqhkjOPQQDAgNJADBGAiEAt9udw7B7vnjJyWvkkRLb7DImFXwsrSxirqbmhIH+1rUCIQD86GWyfAE2d8gCNAn4h1t9B+mAx33ZdPLgFssHl1i3pA==', + + 'MIIDIjCCAsgCAQAwSTFHMEUGA1UEAxM+ZDczejJmemt6Nm9zZ3Q0aGxiYXVoY2dlejVtcm9uNXp1djVvc242aDJteXZxb2NjeWQ2MjNnaWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAReJrJSBfMmV2t3LPzI3CzPaCaczslnE5LgdptV8HcWhwTzaE+z9bUqA28xc9SaWNWvZ5v9xURKMKc6aMv0tySJoIICGzAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBR6gB8ZoO1xPEX+bej0/a0fffXDajCCAUcGCSqGSIb3DQEJDDGCATgEggE0IfNRueluz1lwKCPyiU8i/d2uyVgC351lK7LHr9n/1u1Ln00g7HKCDSZl2vinu1YaxhBdjlgDl8NjST3+5NTBZAn5liQM53WImqzY8yUJgm1+hms96qb30pK73owxkHHeS1fmbz/gTlH4KvDGLQLQl2QuHuXJ9PJDg4B07/EcM61UE+mMp1B4zkuXBTihrLLT2PQNfeaFzK0FX8tkvTJ8ym53xfb30YfeQnEOkxREJksWxMtxBKki7pCOzzTyUCcsSVNBic59sKpwkiQ4aeQMtJF2eKQUqnlkyP4r0e6KV9EivxB7FLNrHNb/2slgeLRFLbGUf0csZiaFgFt1Ps2ZW3wakpl5Fe+ZQh+89hZfi1flSne/mLr/J9TF4IN+XXiNtGJp18f6xXLv54Cg8cde432U3iQwFgYKKwYBBAGDjBsCATEIEwZrYWNwZXIwPQYJKwYBAgEPAwEBMTATLlFtV1gxck5WVXhDaGQ4Y3o2aHdUNGp2N1dLcmh0aXV2R0I3Mlk3ellYQVNUYlEwRwYDVR0RMUATPmQ3M3oyZnprejZvc2d0NGhsYmF1aGNnZXo1bXJvbjV6dXY1b3NuNmgybXl2cW9jY3lkNjIzZ2lkLm9uaW9uMAoGCCqGSM49BAMCA0gAMEUCIQDyCqINFdedoNTRUWYvmqkgc7wV7o+kZ2RqBOv63478sAIgXHNyDFeluMpD3oNUXN/jcFgzyMRUZwG8f7FQTN02sbg=', + + 'MIIDITCCAscCAQAwSTFHMEUGA1UEAxM+Z3hscHR5ZWs0eG12NGl2cTRxZGkzNXRzbDJwaXkzc2Ruc256dGN5dHA2NWZ3Nm93djdjc252aWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQpn3SvkJv5Py+q+PVQcHpMEI4r6WGmUELj6PSv9HlNzup6AbgTF+fkGJ5Ei75XSiF9hNsL2RqjzD6cvqANAhvSoIICGjAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBQyCApwbL2Z81491MXLwgSLAb8yVTCCAUcGCSqGSIb3DQEJDDGCATgEggE0IlA9j/+4ffYhOyzM2DKwBPjqB5MD1mVLtOkYYmOaI16f+DEIZRU8+SjzbaXqBoG9EvkzCP8I7afJTG37/zEcE5SbLVRXGZalqzFb7NCOrXsZViUlaCOoikRkbiGj4j6o3af/STSQUCfeBiTSNfmEJX/pBoaBNsqqjfm0OACvLsAVg/Hka+/97DPYgk1pHgErt1NL5I6nFltHJxKlYxxMkvVTJSJLfZcGf+/73Oz+MoyxcyRJq3u8d23rxqRXhl3CvtH7GafzM2T7fNIgpbjMI9nYHCJvqbvCArua4dviKi4X9j54m4rYA4wwPPWYgV55NoN4AfJN5p7NTLhcyrzkcXIm3CNgh3NzzyvE8B+pJ67oVo/eGFecGtQE7tfgx9DjpLd+NfF9dnR7vx9WioJgCTnXvF0wFQYKKwYBBAGDjBsCATEHEwVvd25lcjA9BgkrBgECAQ8DAQExMBMuUW1ZaUN3bTNRV3NHMlpEQnBCeGNvaEVtWFpVZXo3d213b3lQNFdnTHhiUEYzSDBHBgNVHRExQBM+Z3hscHR5ZWs0eG12NGl2cTRxZGkzNXRzbDJwaXkzc2Ruc256dGN5dHA2NWZ3Nm93djdjc252aWQub25pb24wCgYIKoZIzj0EAwIDSAAwRQIhANGQ+7FGYrUksCVQOYa56FUy6nhJCmOn01r+mZ1CiXKiAiBSBjDGPueE9jzP1b8GHCYRDo7y31XQLoPb5PgvWbCfhA==', + + 'MIIDIjCCAskCAQAwSTFHMEUGA1UEAxM+ZDczejJmemt6Nm9zZ3Q0aGxiYXVoY2dlejVtcm9uNXp1djVvc242aDJteXZxb2NjeWQ2MjNnaWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAReJrJSBfMmV2t3LPzI3CzPaCaczslnE5LgdptV8HcWhwTzaE+z9bUqA28xc9SaWNWvZ5v9xURKMKc6aMv0tySJoIICHDAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBR6gB8ZoO1xPEX+bej0/a0fffXDajCCAUcGCSqGSIb3DQEJDDGCATgEggE0IfNRueluz1lwKCPyiU8i/d2uyVgC351lK7LHr9n/1u1Ln00g7HKCDSZl2vinu1YaxhBdjlgDl8NjST3+5NTBZAn5liQM53WImqzY8yUJgm1+hms96qb30pK73owxkHHeS1fmbz/gTlH4KvDGLQLQl2QuHuXJ9PJDg4B07/EcM61UE+mMp1B4zkuXBTihrLLT2PQNfeaFzK0FX8tkvTJ8ym53xfb30YfeQnEOkxREJksWxMtxBKki7pCOzzTyUCcsSVNBic59sKpwkiQ4aeQMtJF2eKQUqnlkyP4r0e6KV9EivxB7FLNrHNb/2slgeLRFLbGUf0csZiaFgFt1Ps2ZW3wakpl5Fe+ZQh+89hZfi1flSne/mLr/J9TF4IN+XXiNtGJp18f6xXLv54Cg8cde432U3iQwFwYKKwYBBAGDjBsCATEJEwdrYWNwZXIyMD0GCSsGAQIBDwMBATEwEy5RbVdYMXJOVlV4Q2hkOGN6Nmh3VDRqdjdXS3JodGl1dkdCNzJZN3pZWEFTVGJRMEcGA1UdETFAEz5kNzN6MmZ6a3o2b3NndDRobGJhdWhjZ2V6NW1yb241enV2NW9zbjZoMm15dnFvY2N5ZDYyM2dpZC5vbmlvbjAKBggqhkjOPQQDAgNHADBEAiBjivWf9a+YwInRNQ5W0zm7VmsjZLOlQXhf922JzP3XEgIgAYW6vm0PNfXMxPss24gbe3UK9/uPjSDEb26lu2bvgzY=', + + 'MIIDIjCCAsgCAQAwSTFHMEUGA1UEAxM+dTdua2gyNHBvbXRsNzVvYWFibXd5dGt0dTNjNmx4aW9uZ2IzYm1jamtuZXBmZWF3Mmk2ZHdkYWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASKexp/LUMwIEJElHaKzlAjXGvLl/vFiOugGa7pUACVYc/xINEPnbQTy0kHjb47vBPl0NXryCx/ncGxqnEBZat+oIICGzAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBTrrHm/uv3ViamQqQsImfE+Nd0R1jCCAUcGCSqGSIb3DQEJDDGCATgEggE0EEQQfvnnjicwQYHZLzsPiRaoQtS8rP4q4cqjLBA6zJcibd88zpWKFH5oNkUaVaZi64iiX0bCCEmJFX+nQWJdtuhMd4/ut+6vW5cj/DWMAak5q3fi7gQ2lSsDfd702Ter0uNJToSbm7X1NlYm/WXCtLeUEsXOV1G0kOcv2uthpaV7NSlWd4jtRDHidLrd/X/iJWHMsmi4KyLM/p7dCGEqk24aobLfJA9cYN540Q0Sp93tJAXw3Y3Gh5CUwItNolhMk/rVpS3niKIpxjMk2OtLrV0epBKhMVV7jDqKsxZX9I0gDMNTRdixIEXbKHacVY4dSP9iNY+9T26yxGKBM6ah0KHxTY5rODLV29+ll/+wftIGsixYNJoo5HUEmZnWRSPVKri50scOJAI4C6l9HJfNgEBoNFEwFgYKKwYBBAGDjBsCATEIEwZrYWNwZXIwPQYJKwYBAgEPAwEBMTATLlFtY01LdlpWNWJZcEZ4eW9TRFlUcE1RY2VBdnRDa2taZnQ2TlRDVVB0VVAyTXkwRwYDVR0RMUATPnU3bmtoMjRwb210bDc1b2FhYm13eXRrdHUzYzZseGlvbmdiM2JtY2prbmVwZmVhdzJpNmR3ZGFkLm9uaW9uMAoGCCqGSM49BAMCA0gAMEUCIFsTfZsGWX3g44QnEksCh0naujBG60DuNNh83YHcl12FAiEAm9qALhC6ctx9JvakesWQhtDT4WFAGyEkuIB5Xtw68eg=', + ] + + const mockGetAllEventLogEntries = jest.fn() + // @ts-ignore - Property 'getAllEventLogEntries' is protected + storageService.getAllEventLogEntries = mockGetAllEventLogEntries + mockGetAllEventLogEntries.mockReturnValue(allCsrs) + + const filteredCsrs = await storageService.getCsrs() + + expect(filteredCsrs.length).toEqual(allCsrs.length - 1) + + expect(filteredCsrs).toEqual([ + 'MIIDITCCAsYCAQAwSTFHMEUGA1UEAxM+anR3c3hxMnZ1dWthY3JodWhvdnAzd2JxbzRxNXc0d2s3Nm1qbWJ3cXk3eGNma2FsdmRxb3hhYWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQE2q6iS+WCmIVCSFI2AjHrW6ujUdrceD5T2xkcTJBTn0y50WphcupUajCRgkXaTBkTsGNJ3qWRZAKX7CiuehBJoIICGTAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBQuE5JgPY/BYBpgG5pnjMkEEIkrGjCCAUcGCSqGSIb3DQEJDDGCATgEggE0BDlx84glBl72q82F2a+y8iTVKM8IMiXYYrmNyhFPj6XsfVQpvLhNviZ5zHdMBWbFj44vTSUIasNP9I9eCWSEAaEJqjngEh18WCRS/XbvQxI/8qB5pzcfghvM8BCgSLbSEjK2GMYVhCXmRH1YGHIZu0+Ii9pe5nwG154JlPUsmIRgu6ruY6PQk65Aoo4OyhPn5CCUFInptHcz1JpAiCRe0Z6wuQHud03VY50fx4ETdmUNJBEIPOyd/Xn6lMOi6SaWGHbCWiufeJRm+mRdoHJAEt6kPLhGIYGyduNT/8cGoe2xKyQDvNoTr4dqqRZ2HgZ18nicsTHswpGqAlUnZXaA3V85Qu1cvaMAqEoPOUlGP9AriIVwtIZM0hdWHqKHgBCZrKfHb5oLxt6ourQ3+q19tvx+u6UwFAYKKwYBBAGDjBsCATEGEwRlbGxvMD0GCSsGAQIBDwMBATEwEy5RbVVvNXN0NXNqR3RFMUtQeXhOVW5pTWhnQXduV0JVNXk3TnpoMlpRRkdacVdiMEcGA1UdETFAEz5qdHdzeHEydnV1a2Fjcmh1aG92cDN3YnFvNHE1dzR3azc2bWptYndxeTd4Y2ZrYWx2ZHFveGFhZC5vbmlvbjAKBggqhkjOPQQDAgNJADBGAiEAt9udw7B7vnjJyWvkkRLb7DImFXwsrSxirqbmhIH+1rUCIQD86GWyfAE2d8gCNAn4h1t9B+mAx33ZdPLgFssHl1i3pA==', + 'MIIDITCCAscCAQAwSTFHMEUGA1UEAxM+Z3hscHR5ZWs0eG12NGl2cTRxZGkzNXRzbDJwaXkzc2Ruc256dGN5dHA2NWZ3Nm93djdjc252aWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQpn3SvkJv5Py+q+PVQcHpMEI4r6WGmUELj6PSv9HlNzup6AbgTF+fkGJ5Ei75XSiF9hNsL2RqjzD6cvqANAhvSoIICGjAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBQyCApwbL2Z81491MXLwgSLAb8yVTCCAUcGCSqGSIb3DQEJDDGCATgEggE0IlA9j/+4ffYhOyzM2DKwBPjqB5MD1mVLtOkYYmOaI16f+DEIZRU8+SjzbaXqBoG9EvkzCP8I7afJTG37/zEcE5SbLVRXGZalqzFb7NCOrXsZViUlaCOoikRkbiGj4j6o3af/STSQUCfeBiTSNfmEJX/pBoaBNsqqjfm0OACvLsAVg/Hka+/97DPYgk1pHgErt1NL5I6nFltHJxKlYxxMkvVTJSJLfZcGf+/73Oz+MoyxcyRJq3u8d23rxqRXhl3CvtH7GafzM2T7fNIgpbjMI9nYHCJvqbvCArua4dviKi4X9j54m4rYA4wwPPWYgV55NoN4AfJN5p7NTLhcyrzkcXIm3CNgh3NzzyvE8B+pJ67oVo/eGFecGtQE7tfgx9DjpLd+NfF9dnR7vx9WioJgCTnXvF0wFQYKKwYBBAGDjBsCATEHEwVvd25lcjA9BgkrBgECAQ8DAQExMBMuUW1ZaUN3bTNRV3NHMlpEQnBCeGNvaEVtWFpVZXo3d213b3lQNFdnTHhiUEYzSDBHBgNVHRExQBM+Z3hscHR5ZWs0eG12NGl2cTRxZGkzNXRzbDJwaXkzc2Ruc256dGN5dHA2NWZ3Nm93djdjc252aWQub25pb24wCgYIKoZIzj0EAwIDSAAwRQIhANGQ+7FGYrUksCVQOYa56FUy6nhJCmOn01r+mZ1CiXKiAiBSBjDGPueE9jzP1b8GHCYRDo7y31XQLoPb5PgvWbCfhA==', + 'MIIDIjCCAskCAQAwSTFHMEUGA1UEAxM+ZDczejJmemt6Nm9zZ3Q0aGxiYXVoY2dlejVtcm9uNXp1djVvc242aDJteXZxb2NjeWQ2MjNnaWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAReJrJSBfMmV2t3LPzI3CzPaCaczslnE5LgdptV8HcWhwTzaE+z9bUqA28xc9SaWNWvZ5v9xURKMKc6aMv0tySJoIICHDAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBR6gB8ZoO1xPEX+bej0/a0fffXDajCCAUcGCSqGSIb3DQEJDDGCATgEggE0IfNRueluz1lwKCPyiU8i/d2uyVgC351lK7LHr9n/1u1Ln00g7HKCDSZl2vinu1YaxhBdjlgDl8NjST3+5NTBZAn5liQM53WImqzY8yUJgm1+hms96qb30pK73owxkHHeS1fmbz/gTlH4KvDGLQLQl2QuHuXJ9PJDg4B07/EcM61UE+mMp1B4zkuXBTihrLLT2PQNfeaFzK0FX8tkvTJ8ym53xfb30YfeQnEOkxREJksWxMtxBKki7pCOzzTyUCcsSVNBic59sKpwkiQ4aeQMtJF2eKQUqnlkyP4r0e6KV9EivxB7FLNrHNb/2slgeLRFLbGUf0csZiaFgFt1Ps2ZW3wakpl5Fe+ZQh+89hZfi1flSne/mLr/J9TF4IN+XXiNtGJp18f6xXLv54Cg8cde432U3iQwFwYKKwYBBAGDjBsCATEJEwdrYWNwZXIyMD0GCSsGAQIBDwMBATEwEy5RbVdYMXJOVlV4Q2hkOGN6Nmh3VDRqdjdXS3JodGl1dkdCNzJZN3pZWEFTVGJRMEcGA1UdETFAEz5kNzN6MmZ6a3o2b3NndDRobGJhdWhjZ2V6NW1yb241enV2NW9zbjZoMm15dnFvY2N5ZDYyM2dpZC5vbmlvbjAKBggqhkjOPQQDAgNHADBEAiBjivWf9a+YwInRNQ5W0zm7VmsjZLOlQXhf922JzP3XEgIgAYW6vm0PNfXMxPss24gbe3UK9/uPjSDEb26lu2bvgzY=', + 'MIIDIjCCAsgCAQAwSTFHMEUGA1UEAxM+dTdua2gyNHBvbXRsNzVvYWFibXd5dGt0dTNjNmx4aW9uZ2IzYm1jamtuZXBmZWF3Mmk2ZHdkYWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASKexp/LUMwIEJElHaKzlAjXGvLl/vFiOugGa7pUACVYc/xINEPnbQTy0kHjb47vBPl0NXryCx/ncGxqnEBZat+oIICGzAuBgkqhkiG9w0BCQ4xITAfMB0GA1UdDgQWBBTrrHm/uv3ViamQqQsImfE+Nd0R1jCCAUcGCSqGSIb3DQEJDDGCATgEggE0EEQQfvnnjicwQYHZLzsPiRaoQtS8rP4q4cqjLBA6zJcibd88zpWKFH5oNkUaVaZi64iiX0bCCEmJFX+nQWJdtuhMd4/ut+6vW5cj/DWMAak5q3fi7gQ2lSsDfd702Ter0uNJToSbm7X1NlYm/WXCtLeUEsXOV1G0kOcv2uthpaV7NSlWd4jtRDHidLrd/X/iJWHMsmi4KyLM/p7dCGEqk24aobLfJA9cYN540Q0Sp93tJAXw3Y3Gh5CUwItNolhMk/rVpS3niKIpxjMk2OtLrV0epBKhMVV7jDqKsxZX9I0gDMNTRdixIEXbKHacVY4dSP9iNY+9T26yxGKBM6ah0KHxTY5rODLV29+ll/+wftIGsixYNJoo5HUEmZnWRSPVKri50scOJAI4C6l9HJfNgEBoNFEwFgYKKwYBBAGDjBsCATEIEwZrYWNwZXIwPQYJKwYBAgEPAwEBMTATLlFtY01LdlpWNWJZcEZ4eW9TRFlUcE1RY2VBdnRDa2taZnQ2TlRDVVB0VVAyTXkwRwYDVR0RMUATPnU3bmtoMjRwb210bDc1b2FhYm13eXRrdHUzYzZseGlvbmdiM2JtY2prbmVwZmVhdzJpNmR3ZGFkLm9uaW9uMAoGCCqGSM49BAMCA0gAMEUCIFsTfZsGWX3g44QnEksCh0naujBG60DuNNh83YHcl12FAiEAm9qALhC6ctx9JvakesWQhtDT4WFAGyEkuIB5Xtw68eg=', + ]) + }) }) describe('Files deletion', () => { diff --git a/packages/backend/src/nest/storage/storage.service.ts b/packages/backend/src/nest/storage/storage.service.ts index dbe0a8622b..51c71e68d6 100644 --- a/packages/backend/src/nest/storage/storage.service.ts +++ b/packages/backend/src/nest/storage/storage.service.ts @@ -9,6 +9,7 @@ import { verifyUserCert, parseCertificationRequest, getReqFieldValue, + loadCSR, } from '@quiet/identity' import type { IPFS } from 'ipfs-core' import OrbitDB from 'orbit-db' @@ -397,36 +398,20 @@ export class StorageService extends EventEmitter { write: ['*'], }, }) - this.certificatesRequests.events.on('replicate.progress', async (_address, _hash, entry, _progress, _total) => { - const csr: string = entry.payload.value - this.logger('Replicated csr') - let parsedCSR: CertificationRequest - try { - parsedCSR = parseCertificationRequest(csr) - } catch (e) { - this.logger.error(`csrs replicate.progress: could not parse certificate request`) - return - } - - const username = getReqFieldValue(parsedCSR, CertFieldsTypes.nickName) - if (!username) { - this.logger.error( - `csrs replicate.progress: could not parse certificate request for field type ${CertFieldsTypes.nickName}` - ) - return - } - this.emit(StorageEvents.REPLICATED_CSR, [csr]) - }) this.certificatesRequests.events.on('replicated', async () => { this.logger('REPLICATED: CSRs') - const allCsrs = this.getAllEventLogEntries(this.certificatesRequests) - this.emit(StorageEvents.REPLICATED_CSR, allCsrs) + + const filteredCsrs = await this.getCsrs() + + const allCertificates = this.getAllEventLogEntries(this.certificates) + this.emit(StorageEvents.REPLICATED_CSR, { csrs: filteredCsrs, certificates: allCertificates }) await this.updatePeersList() }) this.certificatesRequests.events.on('write', async (_address, entry) => { const csr: string = entry.payload.value this.logger('Saved CSR locally') - this.emit(StorageEvents.REPLICATED_CSR, [csr]) + const allCertificates = this.getAllEventLogEntries(this.certificates) + this.emit(StorageEvents.REPLICATED_CSR, { csrs: [csr], certificates: allCertificates }) await this.updatePeersList() }) @@ -437,6 +422,28 @@ export class StorageService extends EventEmitter { this.logger('STORAGE: Finished creating certificatesRequests db') } + public async getCsrs(): Promise { + // @ts-expect-error - OrbitDB's type declaration of `load` lacks 'options' + await this.certificatesRequests.load({ fetchEntryTimeout: 15000 }) + const allCsrs = this.getAllEventLogEntries(this.certificatesRequests) + const filteredCsrsMap: Map = new Map() + + await Promise.all( + allCsrs.map(async csr => { + const parsedCsr = await loadCSR(csr) + const pubKey = keyFromCertificate(parsedCsr) + + if (filteredCsrsMap.has(pubKey)) { + filteredCsrsMap.delete(pubKey) + } + + filteredCsrsMap.set(pubKey, csr) + }) + ) + + return [...filteredCsrsMap.values()] + } + public async loadAllChannels() { this.logger('Getting all channels') // @ts-expect-error - OrbitDB's type declaration of `load` lacks 'options' @@ -849,12 +856,6 @@ export class StorageService extends EventEmitter { this.logger('Certificate is either null or undefined, not saving to db') return false } - const verification = await verifyUserCert(payload.rootPermsData.certificate, payload.certificate) - if (verification.resultCode !== 0) { - this.logger.error('Certificate is not valid') - this.logger.error(verification.resultMessage) - return false - } this.logger('Saving certificate...') await this.certificates.add(payload.certificate) return true diff --git a/packages/backend/src/nest/websocketOverTor/websocketOverTor.tor.spec.ts b/packages/backend/src/nest/websocketOverTor/websocketOverTor.tor.spec.ts index 1ffde5daa4..f8fc150f63 100644 --- a/packages/backend/src/nest/websocketOverTor/websocketOverTor.tor.spec.ts +++ b/packages/backend/src/nest/websocketOverTor/websocketOverTor.tor.spec.ts @@ -118,7 +118,8 @@ describe('websocketOverTor', () => { await listener?.close() }) - it.each([ + // Those are randomly failing and we do not use wss atm anyway. + it.skip.each([ ['string', String], ['array', Array], ])('connects successfully with CA passed as %s', async (_name: string, caType: (ca: string) => any) => { diff --git a/packages/common/CHANGELOG.md b/packages/common/CHANGELOG.md index 70f2bab02a..de505e8aa5 100644 --- a/packages/common/CHANGELOG.md +++ b/packages/common/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -## [2.0.1-alpha.1](https://github.com/ZbayApp/monorepo/compare/@quiet/common@2.0.1-alpha.0...@quiet/common@2.0.1-alpha.1) (2023-09-25) +## [2.0.2-alpha.0](https://github.com/TryQuiet/quiet/compare/@quiet/common@2.0.1-alpha.4...@quiet/common@2.0.2-alpha.0) (2023-10-26) **Note:** Version bump only for package @quiet/common @@ -11,7 +11,47 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [2.0.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/@quiet/common@2.0.0-alpha.3...@quiet/common@2.0.1-alpha.0) (2023-09-25) +## [2.0.1-alpha.4](https://github.com/TryQuiet/quiet/compare/@quiet/common@2.0.1-alpha.3...@quiet/common@2.0.1-alpha.4) (2023-10-12) + +**Note:** Version bump only for package @quiet/common + + + + + +## [2.0.1-alpha.3](https://github.com/TryQuiet/quiet/compare/@quiet/common@2.0.1-alpha.2...@quiet/common@2.0.1-alpha.3) (2023-10-10) + +**Note:** Version bump only for package @quiet/common + + + + + +## [2.0.1-alpha.2](https://github.com/TryQuiet/quiet/compare/@quiet/common@2.0.1-alpha.1...@quiet/common@2.0.1-alpha.2) (2023-10-09) + +**Note:** Version bump only for package @quiet/common + + + + + +## [2.0.1-alpha.1](https://github.com/TryQuiet/quiet/compare/@quiet/common@2.0.1-alpha.0...@quiet/common@2.0.1-alpha.1) (2023-09-25) + +**Note:** Version bump only for package @quiet/common + + + + + +## [2.0.1-alpha.0](https://github.com/TryQuiet/quiet/compare/@quiet/common@2.0.0-alpha.3...@quiet/common@2.0.1-alpha.0) (2023-09-25) + +**Note:** Version bump only for package @quiet/common + + + + + +# [2.0.0-alpha.18](https://github.com/TryQuiet/quiet/compare/@quiet/common@2.0.0-alpha.3...@quiet/common@2.0.0-alpha.18) (2023-10-04) **Note:** Version bump only for package @quiet/common @@ -94,7 +134,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.6.0](https://github.com/ZbayApp/monorepo/compare/@quiet/common@1.5.1-alpha.0...@quiet/common@1.6.0) (2023-07-28) +# [1.6.0](https://github.com/TryQuiet/quiet/compare/@quiet/common@1.5.1-alpha.0...@quiet/common@1.6.0) (2023-07-28) **Note:** Version bump only for package @quiet/common @@ -102,7 +142,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [1.5.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/@quiet/common@1.5.0-alpha.0...@quiet/common@1.5.1-alpha.0) (2023-07-28) +## [1.5.1-alpha.0](https://github.com/TryQuiet/quiet/compare/@quiet/common@1.5.0-alpha.0...@quiet/common@1.5.1-alpha.0) (2023-07-28) **Note:** Version bump only for package @quiet/common @@ -110,7 +150,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.5.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/@quiet/common@1.4.0-alpha.1...@quiet/common@1.5.0-alpha.0) (2023-07-26) +# [1.5.0-alpha.0](https://github.com/TryQuiet/quiet/compare/@quiet/common@1.4.0-alpha.1...@quiet/common@1.5.0-alpha.0) (2023-07-26) **Note:** Version bump only for package @quiet/common @@ -126,7 +166,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.4.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/@quiet/common@1.3.1...@quiet/common@1.4.0-alpha.0) (2023-06-19) +# [1.4.0-alpha.0](https://github.com/TryQuiet/quiet/compare/@quiet/common@1.3.1...@quiet/common@1.4.0-alpha.0) (2023-06-19) **Note:** Version bump only for package @quiet/common @@ -222,7 +262,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.2.0-alpha.21](https://github.com/ZbayApp/monorepo/compare/@quiet/common@1.2.0-alpha.20...@quiet/common@1.2.0-alpha.21) (2023-04-07) +# [1.2.0-alpha.21](https://github.com/TryQuiet/quiet/compare/@quiet/common@1.2.0-alpha.20...@quiet/common@1.2.0-alpha.21) (2023-04-07) **Note:** Version bump only for package @quiet/common diff --git a/packages/common/package-lock.json b/packages/common/package-lock.json index 29a0c3fd52..67dbf3e87e 100644 --- a/packages/common/package-lock.json +++ b/packages/common/package-lock.json @@ -1,12 +1,12 @@ { "name": "@quiet/common", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@quiet/common", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "license": "ISC", "dependencies": { "cross-env": "^5.2.0", diff --git a/packages/common/package.json b/packages/common/package.json index 3ac6ef2b63..1bd4e547ac 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,6 +1,6 @@ { "name": "@quiet/common", - "version": "2.0.1-alpha.1", + "version": "2.0.2-alpha.0", "description": "Common monorepo utils", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -18,7 +18,7 @@ "rmDist": "rimraf lib/" }, "devDependencies": { - "@quiet/eslint-config": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", "@types/jest": "^26.0.23", "@types/node": "^17.0.21", "jest": "^26.6.3", @@ -26,7 +26,7 @@ "typescript": "^4.9.3" }, "dependencies": { - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/types": "^2.0.2-alpha.0", "cross-env": "^5.2.0", "debug": "^4.3.1" }, diff --git a/packages/desktop/CHANGELOG.md b/packages/desktop/CHANGELOG.md index 5b497b509e..9a3ac07de2 100644 --- a/packages/desktop/CHANGELOG.md +++ b/packages/desktop/CHANGELOG.md @@ -3,8 +3,85 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -## [2.0.1-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@2.0.1-alpha.0...quiet@2.0.1-alpha.1) (2023-09-25) -## [1.9.4](https://github.com/TryQuiet/quiet/compare/quiet@1.9.3...quiet@1.9.4) (2023-10-03) +## [2.0.3-alpha.0](https://github.com/TryQuiet/quiet/compare/@quiet/desktop@2.0.2-alpha.0...@quiet/desktop@2.0.3-alpha.0) (2023-10-26) + + +### Features + +* version code 366 ([cebf886](https://github.com/TryQuiet/quiet/commit/cebf886aee2c4ec6e0ef4e66219d9dc0afecb98c)) + + + + + +## [2.0.2-alpha.0](https://github.com/TryQuiet/quiet/compare/@quiet/desktop@2.0.1-alpha.7...@quiet/desktop@2.0.2-alpha.0) (2023-10-26) + +**Note:** Version bump only for package @quiet/desktop + + + + + +## [2.0.1-alpha.7](https://github.com/TryQuiet/quiet/compare/@quiet/desktop@2.0.1-alpha.6...@quiet/desktop@2.0.1-alpha.7) (2023-10-16) + +**Note:** Version bump only for package @quiet/desktop + + + + + +## [2.0.1-alpha.6](https://github.com/TryQuiet/quiet/compare/@quiet/desktop@2.0.1-alpha.5...@quiet/desktop@2.0.1-alpha.6) (2023-10-13) + +**Note:** Version bump only for package @quiet/desktop + + + + + +## [2.0.1-alpha.5](https://github.com/TryQuiet/quiet/compare/@quiet/desktop@2.0.1-alpha.4...@quiet/desktop@2.0.1-alpha.5) (2023-10-12) + +**Note:** Version bump only for package @quiet/desktop + + + + + +## [2.0.1-alpha.4](https://github.com/TryQuiet/quiet/compare/@quiet/desktop@2.0.1-alpha.3...@quiet/desktop@2.0.1-alpha.4) (2023-10-11) + + +### Reverts + +* Revert "Adjust project bootstrap scripts to be windows-friendly (#1870)" (#1937) ([0811ea3](https://github.com/TryQuiet/quiet/commit/0811ea3ea3f682dd763be72b12f626fe416bc036)), closes [#1870](https://github.com/TryQuiet/quiet/issues/1870) [#1937](https://github.com/TryQuiet/quiet/issues/1937) [#1870](https://github.com/TryQuiet/quiet/issues/1870) + + + + + +## [2.0.1-alpha.3](https://github.com/TryQuiet/quiet/compare/@quiet/desktop@2.0.1-alpha.2...@quiet/desktop@2.0.1-alpha.3) (2023-10-10) + +**Note:** Version bump only for package @quiet/desktop + + + + + +## 2.0.1-alpha.2 (2023-10-09) + + +### Bug Fixes + +* add conditional checksum path ([8164b50](https://github.com/TryQuiet/quiet/commit/8164b50774f32856d9886f75d1bb25788f1e03c4)) + + +### Reverts + +* Revert "Remove afterAllArtifactBuild for linux" ([975d0df](https://github.com/TryQuiet/quiet/commit/975d0df58494bdfba1270f6845152af4969e77ea)) + + + + + +## [2.0.1-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@2.0.1-alpha.0...quiet@2.0.1-alpha.1) (2023-09-25) **Note:** Version bump only for package quiet @@ -12,8 +89,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [2.0.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@2.0.0-alpha.12...quiet@2.0.1-alpha.0) (2023-09-25) -## [1.9.3](https://github.com/TryQuiet/quiet/compare/quiet@1.9.2...quiet@1.9.3) (2023-10-03) +## [2.0.1-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@2.0.0-alpha.12...quiet@2.0.1-alpha.0) (2023-09-25) **Note:** Version bump only for package quiet @@ -22,7 +98,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline # [2.0.0-alpha.12](https://github.com/TryQuiet/quiet/compare/quiet@2.0.0-alpha.11...quiet@2.0.0-alpha.12) (2023-09-20) -## [1.9.2](https://github.com/TryQuiet/quiet/compare/quiet@1.9.1...quiet@1.9.2) (2023-09-25) **Note:** Version bump only for package quiet @@ -127,6 +202,38 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline # [1.10.0-alpha.0](/compare/quiet@1.9.0...quiet@1.10.0-alpha.0) (2023-08-29) +## [1.9.5](https://github.com/TryQuiet/quiet/compare/quiet@1.9.4...quiet@1.9.5) (2023-10-12) + +**Note:** Version bump only for package quiet + + + + + +## [1.9.4](https://github.com/TryQuiet/quiet/compare/quiet@1.9.3...quiet@1.9.4) (2023-10-03) + +**Note:** Version bump only for package quiet + + + + + +## [1.9.3](https://github.com/TryQuiet/quiet/compare/quiet@1.9.2...quiet@1.9.3) (2023-10-03) + +**Note:** Version bump only for package quiet + + + + + +## [1.9.2](https://github.com/TryQuiet/quiet/compare/quiet@1.9.1...quiet@1.9.2) (2023-09-25) + +**Note:** Version bump only for package quiet + + + + + ## [1.9.1](https://github.com/TryQuiet/quiet/compare/quiet@1.9.0...quiet@1.9.1) (2023-09-15) **Note:** Version bump only for package quiet @@ -191,7 +298,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.7.0](https://github.com/ZbayApp/monorepo/compare/quiet@1.6.1-alpha.0...quiet@1.7.0) (2023-07-28) +# [1.7.0](https://github.com/TryQuiet/quiet/compare/quiet@1.6.1-alpha.0...quiet@1.7.0) (2023-07-28) **Note:** Version bump only for package quiet @@ -199,7 +306,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [1.6.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@1.6.0-alpha.0...quiet@1.6.1-alpha.0) (2023-07-28) +## [1.6.1-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@1.6.0-alpha.0...quiet@1.6.1-alpha.0) (2023-07-28) **Note:** Version bump only for package quiet @@ -207,7 +314,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.6.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@1.5.0-alpha.0...quiet@1.6.0-alpha.0) (2023-07-26) +# [1.6.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@1.5.0-alpha.0...quiet@1.6.0-alpha.0) (2023-07-26) **Note:** Version bump only for package quiet @@ -215,7 +322,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.5.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@1.4.2-alpha.1...quiet@1.5.0-alpha.0) (2023-07-18) +# [1.5.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@1.4.2-alpha.1...quiet@1.5.0-alpha.0) (2023-07-18) **Note:** Version bump only for package quiet @@ -223,7 +330,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [1.4.2-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@1.4.2-alpha.0...quiet@1.4.2-alpha.1) (2023-07-17) +## [1.4.2-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@1.4.2-alpha.0...quiet@1.4.2-alpha.1) (2023-07-17) **Note:** Version bump only for package quiet @@ -231,7 +338,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [1.4.2-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@1.4.1-alpha.0...quiet@1.4.2-alpha.0) (2023-07-17) +## [1.4.2-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@1.4.1-alpha.0...quiet@1.4.2-alpha.0) (2023-07-17) **Note:** Version bump only for package quiet @@ -255,7 +362,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.4.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@1.3.1...quiet@1.4.0-alpha.0) (2023-06-19) +# [1.4.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@1.3.1...quiet@1.4.0-alpha.0) (2023-06-19) **Note:** Version bump only for package quiet @@ -423,7 +530,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.2.0-alpha.24](https://github.com/ZbayApp/monorepo/compare/quiet@1.2.0-alpha.23...quiet@1.2.0-alpha.24) (2023-04-07) +# [1.2.0-alpha.24](https://github.com/TryQuiet/quiet/compare/quiet@1.2.0-alpha.23...quiet@1.2.0-alpha.24) (2023-04-07) **Note:** Version bump only for package quiet @@ -731,7 +838,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [1.0.0-alpha.16](https://github.com/ZbayApp/monorepo/compare/quiet@1.0.0-alpha.15...quiet@1.0.0-alpha.16) (2023-02-20) +# [1.0.0-alpha.16](https://github.com/TryQuiet/quiet/compare/quiet@1.0.0-alpha.15...quiet@1.0.0-alpha.16) (2023-02-20) **Note:** Version bump only for package quiet @@ -1094,7 +1201,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.19.0-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@0.18.7-alpha.1...quiet@0.19.0-alpha.1) (2023-01-27) +# [0.19.0-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@0.18.7-alpha.1...quiet@0.19.0-alpha.1) (2023-01-27) **Note:** Version bump only for package quiet @@ -1158,7 +1265,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.18.1-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@0.18.1-alpha.0...quiet@0.18.1-alpha.1) (2023-01-14) +## [0.18.1-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@0.18.1-alpha.0...quiet@0.18.1-alpha.1) (2023-01-14) **Note:** Version bump only for package quiet @@ -1182,7 +1289,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.18.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.17.0-alpha.4...quiet@0.18.0-alpha.0) (2023-01-13) +# [0.18.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.17.0-alpha.4...quiet@0.18.0-alpha.0) (2023-01-13) **Note:** Version bump only for package quiet @@ -1214,7 +1321,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.17.0-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@0.16.0...quiet@0.17.0-alpha.1) (2023-01-11) +# [0.17.0-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@0.16.0...quiet@0.17.0-alpha.1) (2023-01-11) **Note:** Version bump only for package quiet @@ -1222,7 +1329,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.17.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.16.0...quiet@0.17.0-alpha.0) (2023-01-11) +# [0.17.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.16.0...quiet@0.17.0-alpha.0) (2023-01-11) **Note:** Version bump only for package quiet @@ -1238,7 +1345,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.16.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.14.4...quiet@0.16.0-alpha.0) (2022-12-14) +# [0.16.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.14.4...quiet@0.16.0-alpha.0) (2022-12-14) **Note:** Version bump only for package quiet @@ -1246,7 +1353,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.15.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.14.4...quiet@0.15.0) (2022-12-14) +# [0.15.0](https://github.com/TryQuiet/quiet/compare/quiet@0.14.4...quiet@0.15.0) (2022-12-14) **Note:** Version bump only for package quiet @@ -1254,7 +1361,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.15.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.14.4...quiet@0.15.0-alpha.0) (2022-12-14) +# [0.15.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.14.4...quiet@0.15.0-alpha.0) (2022-12-14) **Note:** Version bump only for package quiet @@ -1262,7 +1369,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.14.5-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.14.4...quiet@0.14.5-alpha.0) (2022-12-09) +## [0.14.5-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.14.4...quiet@0.14.5-alpha.0) (2022-12-09) **Note:** Version bump only for package quiet @@ -1382,7 +1489,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.13](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.13) (2022-09-22) +## [0.11.3-alpha.13](https://github.com/TryQuiet/quiet/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.13) (2022-09-22) **Note:** Version bump only for package quiet @@ -1390,7 +1497,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.12](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.12) (2022-09-21) +## [0.11.3-alpha.12](https://github.com/TryQuiet/quiet/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.12) (2022-09-21) **Note:** Version bump only for package quiet @@ -1398,7 +1505,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.11](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.11) (2022-09-21) +## [0.11.3-alpha.11](https://github.com/TryQuiet/quiet/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.11) (2022-09-21) **Note:** Version bump only for package quiet @@ -1406,7 +1513,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.10](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.10) (2022-09-21) +## [0.11.3-alpha.10](https://github.com/TryQuiet/quiet/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.10) (2022-09-21) **Note:** Version bump only for package quiet @@ -1414,7 +1521,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.9](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.9) (2022-09-21) +## [0.11.3-alpha.9](https://github.com/TryQuiet/quiet/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.9) (2022-09-21) **Note:** Version bump only for package quiet @@ -1422,7 +1529,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.8](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.8) (2022-09-21) +## [0.11.3-alpha.8](https://github.com/TryQuiet/quiet/compare/quiet@0.11.3-alpha.7...quiet@0.11.3-alpha.8) (2022-09-21) **Note:** Version bump only for package quiet @@ -1430,7 +1537,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.7](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.2...quiet@0.11.3-alpha.7) (2022-09-21) +## [0.11.3-alpha.7](https://github.com/TryQuiet/quiet/compare/quiet@0.11.2...quiet@0.11.3-alpha.7) (2022-09-21) **Note:** Version bump only for package quiet @@ -1438,7 +1545,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.6](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.2...quiet@0.11.3-alpha.6) (2022-09-20) +## [0.11.3-alpha.6](https://github.com/TryQuiet/quiet/compare/quiet@0.11.2...quiet@0.11.3-alpha.6) (2022-09-20) **Note:** Version bump only for package quiet @@ -1446,7 +1553,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.5](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.2...quiet@0.11.3-alpha.5) (2022-09-17) +## [0.11.3-alpha.5](https://github.com/TryQuiet/quiet/compare/quiet@0.11.2...quiet@0.11.3-alpha.5) (2022-09-17) **Note:** Version bump only for package quiet @@ -1454,7 +1561,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.4](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.2...quiet@0.11.3-alpha.4) (2022-09-16) +## [0.11.3-alpha.4](https://github.com/TryQuiet/quiet/compare/quiet@0.11.2...quiet@0.11.3-alpha.4) (2022-09-16) **Note:** Version bump only for package quiet @@ -1462,7 +1569,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.3](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.2...quiet@0.11.3-alpha.3) (2022-09-16) +## [0.11.3-alpha.3](https://github.com/TryQuiet/quiet/compare/quiet@0.11.2...quiet@0.11.3-alpha.3) (2022-09-16) **Note:** Version bump only for package quiet @@ -1470,7 +1577,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.2](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.2...quiet@0.11.3-alpha.2) (2022-09-16) +## [0.11.3-alpha.2](https://github.com/TryQuiet/quiet/compare/quiet@0.11.2...quiet@0.11.3-alpha.2) (2022-09-16) **Note:** Version bump only for package quiet @@ -1478,7 +1585,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.2...quiet@0.11.3-alpha.1) (2022-09-16) +## [0.11.3-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@0.11.2...quiet@0.11.3-alpha.1) (2022-09-16) **Note:** Version bump only for package quiet @@ -1486,7 +1593,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.11.3-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.11.2...quiet@0.11.3-alpha.0) (2022-09-16) +## [0.11.3-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.11.2...quiet@0.11.3-alpha.0) (2022-09-16) **Note:** Version bump only for package quiet @@ -1558,7 +1665,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.10.2-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.10.1-alpha.1...quiet@0.10.2-alpha.0) (2022-08-26) +## [0.10.2-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.10.1-alpha.1...quiet@0.10.2-alpha.0) (2022-08-26) **Note:** Version bump only for package quiet @@ -1566,7 +1673,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.10.1-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@0.10.0...quiet@0.10.1-alpha.1) (2022-08-16) +## [0.10.1-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@0.10.0...quiet@0.10.1-alpha.1) (2022-08-16) **Note:** Version bump only for package quiet @@ -1574,7 +1681,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.10.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.10.0...quiet@0.10.1-alpha.0) (2022-08-11) +## [0.10.1-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.10.0...quiet@0.10.1-alpha.0) (2022-08-11) **Note:** Version bump only for package quiet @@ -1582,7 +1689,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.10.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.7-alpha.7...quiet@0.10.0) (2022-08-10) +# [0.10.0](https://github.com/TryQuiet/quiet/compare/quiet@0.9.7-alpha.7...quiet@0.10.0) (2022-08-10) **Note:** Version bump only for package quiet @@ -1598,7 +1705,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.7-alpha.6](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.7-alpha.5...quiet@0.9.7-alpha.6) (2022-08-04) +## [0.9.7-alpha.6](https://github.com/TryQuiet/quiet/compare/quiet@0.9.7-alpha.5...quiet@0.9.7-alpha.6) (2022-08-04) **Note:** Version bump only for package quiet @@ -1606,7 +1713,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.7-alpha.5](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.7-alpha.3...quiet@0.9.7-alpha.5) (2022-08-04) +## [0.9.7-alpha.5](https://github.com/TryQuiet/quiet/compare/quiet@0.9.7-alpha.3...quiet@0.9.7-alpha.5) (2022-08-04) **Note:** Version bump only for package quiet @@ -1614,7 +1721,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.7-alpha.4](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.7-alpha.3...quiet@0.9.7-alpha.4) (2022-08-04) +## [0.9.7-alpha.4](https://github.com/TryQuiet/quiet/compare/quiet@0.9.7-alpha.3...quiet@0.9.7-alpha.4) (2022-08-04) **Note:** Version bump only for package quiet @@ -1646,7 +1753,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.7-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.8.6...quiet@0.9.7-alpha.0) (2022-07-15) +## [0.9.7-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.8.6...quiet@0.9.7-alpha.0) (2022-07-15) **Note:** Version bump only for package quiet @@ -1654,7 +1761,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.6-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.5-alpha.1...quiet@0.9.6-alpha.0) (2022-07-15) +## [0.9.6-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.9.5-alpha.1...quiet@0.9.6-alpha.0) (2022-07-15) **Note:** Version bump only for package quiet @@ -1662,7 +1769,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.5-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.5-alpha.0...quiet@0.9.5-alpha.1) (2022-07-15) +## [0.9.5-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@0.9.5-alpha.0...quiet@0.9.5-alpha.1) (2022-07-15) **Note:** Version bump only for package quiet @@ -1670,7 +1777,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.5-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.4-alpha.0...quiet@0.9.5-alpha.0) (2022-07-07) +## [0.9.5-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.9.4-alpha.0...quiet@0.9.5-alpha.0) (2022-07-07) **Note:** Version bump only for package quiet @@ -1678,7 +1785,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.4-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.3-alpha.0...quiet@0.9.4-alpha.0) (2022-07-06) +## [0.9.4-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.9.3-alpha.0...quiet@0.9.4-alpha.0) (2022-07-06) **Note:** Version bump only for package quiet @@ -1686,7 +1793,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.3-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.2-alpha.0...quiet@0.9.3-alpha.0) (2022-07-06) +## [0.9.3-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.9.2-alpha.0...quiet@0.9.3-alpha.0) (2022-07-06) **Note:** Version bump only for package quiet @@ -1694,7 +1801,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.2-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.1-alpha.0...quiet@0.9.2-alpha.0) (2022-07-05) +## [0.9.2-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.9.1-alpha.0...quiet@0.9.2-alpha.0) (2022-07-05) **Note:** Version bump only for package quiet @@ -1702,7 +1809,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.9.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.9.0-alpha.0...quiet@0.9.1-alpha.0) (2022-07-05) +## [0.9.1-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.9.0-alpha.0...quiet@0.9.1-alpha.0) (2022-07-05) **Note:** Version bump only for package quiet @@ -1710,7 +1817,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.9.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.8.6...quiet@0.9.0-alpha.0) (2022-07-05) +# [0.9.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.8.6...quiet@0.9.0-alpha.0) (2022-07-05) **Note:** Version bump only for package quiet @@ -1753,7 +1860,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.8.3-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.8.2-alpha.0...quiet@0.8.3-alpha.0) (2022-06-21) +## [0.8.3-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.8.2-alpha.0...quiet@0.8.3-alpha.0) (2022-06-21) **Note:** Version bump only for package quiet @@ -1761,7 +1868,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.8.2-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.8.1-alpha.1...quiet@0.8.2-alpha.0) (2022-06-21) +## [0.8.2-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.8.1-alpha.1...quiet@0.8.2-alpha.0) (2022-06-21) **Note:** Version bump only for package quiet @@ -1769,7 +1876,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.8.1-alpha.2](https://github.com/ZbayApp/monorepo/compare/quiet@0.8.1-alpha.1...quiet@0.8.1-alpha.2) (2022-06-21) +## [0.8.1-alpha.2](https://github.com/TryQuiet/quiet/compare/quiet@0.8.1-alpha.1...quiet@0.8.1-alpha.2) (2022-06-21) **Note:** Version bump only for package quiet @@ -1777,7 +1884,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.8.1-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@0.8.1-alpha.0...quiet@0.8.1-alpha.1) (2022-06-16) +## [0.8.1-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@0.8.1-alpha.0...quiet@0.8.1-alpha.1) (2022-06-16) **Note:** Version bump only for package quiet @@ -1785,7 +1892,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.8.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.8.0-alpha.0...quiet@0.8.1-alpha.0) (2022-06-14) +## [0.8.1-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.8.0-alpha.0...quiet@0.8.1-alpha.0) (2022-06-14) **Note:** Version bump only for package quiet @@ -1793,7 +1900,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.8.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.7.1-alpha.2...quiet@0.8.0-alpha.0) (2022-06-14) +# [0.8.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.7.1-alpha.2...quiet@0.8.0-alpha.0) (2022-06-14) **Note:** Version bump only for package quiet @@ -1801,7 +1908,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.7.1-alpha.2](https://github.com/ZbayApp/monorepo/compare/quiet@0.7.1-alpha.1...quiet@0.7.1-alpha.2) (2022-06-03) +## [0.7.1-alpha.2](https://github.com/TryQuiet/quiet/compare/quiet@0.7.1-alpha.1...quiet@0.7.1-alpha.2) (2022-06-03) **Note:** Version bump only for package quiet @@ -1809,7 +1916,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.7.1-alpha.1](https://github.com/ZbayApp/monorepo/compare/quiet@0.7.1-alpha.0...quiet@0.7.1-alpha.1) (2022-06-03) +## [0.7.1-alpha.1](https://github.com/TryQuiet/quiet/compare/quiet@0.7.1-alpha.0...quiet@0.7.1-alpha.1) (2022-06-03) **Note:** Version bump only for package quiet @@ -1817,7 +1924,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [0.7.1-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.7.0-alpha.0...quiet@0.7.1-alpha.0) (2022-06-03) +## [0.7.1-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.7.0-alpha.0...quiet@0.7.1-alpha.0) (2022-06-03) **Note:** Version bump only for package quiet @@ -1825,7 +1932,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [0.7.0-alpha.0](https://github.com/ZbayApp/monorepo/compare/quiet@0.6.1-alpha.0...quiet@0.7.0-alpha.0) (2022-06-03) +# [0.7.0-alpha.0](https://github.com/TryQuiet/quiet/compare/quiet@0.6.1-alpha.0...quiet@0.7.0-alpha.0) (2022-06-03) **Note:** Version bump only for package quiet diff --git a/packages/desktop/README.md b/packages/desktop/README.md index ca80365377..2ad572c2fc 100644 --- a/packages/desktop/README.md +++ b/packages/desktop/README.md @@ -1,6 +1,7 @@ # Quiet Desktop -Running the desktop version of Quiet should be straightforward on Mac, Windows, and Linux. Here are the steps: +Running the desktop version of Quiet should be straightforward on Mac and Linux. On Windows we recommend using git-bash or just wsl. +Here are the steps: 0. Use `Node 18.12.1` and `npm 8.19.2`. We recommend [nvm](https://github.com/nvm-sh/nvm) for easily switching Node versions, and if this README gets out of date you can see the actual version used by CI [here](https://github.com/TryQuiet/quiet/blob/master/.github/actions/setup-env/action.yml). If you are using nvm, you can run `nvm use` in the project's root to switch to the correct version. 1. In `quiet/` (project's root) install monorepo's dependencies and bootstrap the project with lerna. It will take care of the package's dependencies and trigger a prepublish script which builds them. @@ -20,20 +21,6 @@ npm run start ``` ---- -## Running dev desktop on Windows - -Bootstrap scripts has been adjusted to work on Windows (powershell or cmd) hovewer there still may be a problem with patching. -Getting error: - -``` -webpack://@quiet/backend/./node_modules/electron/index.js?:9 - throw new Error('Electron failed to install correctly, please delete node_modules/electron and try installing again') -``` - -while running desktop may mean that applying patch in packages/backend (`npm run applyPatches`) did not work correctly. -If that's the case file must be patched manually according to `electron-fetch-git.patch` and backend must be rebuilt by running `npm run webpack` in packages/backend. - - ## Versioning packages Before trying to release a new version, make sure you have `GH_TOKEN` env set. diff --git a/packages/desktop/cypress/snapshots/base/src/renderer/components/Channel/Channel.regression.cy.tsx/message input words wrapping-base.png b/packages/desktop/cypress/snapshots/base/src/renderer/components/Channel/Channel.regression.cy.tsx/message input words wrapping-base.png index 199d3f83f1..3d1caa34a7 100644 Binary files a/packages/desktop/cypress/snapshots/base/src/renderer/components/Channel/Channel.regression.cy.tsx/message input words wrapping-base.png and b/packages/desktop/cypress/snapshots/base/src/renderer/components/Channel/Channel.regression.cy.tsx/message input words wrapping-base.png differ diff --git a/packages/desktop/package-lock.json b/packages/desktop/package-lock.json index a61297f0a1..e0e7b90226 100644 --- a/packages/desktop/package-lock.json +++ b/packages/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "@quiet/desktop", - "version": "2.0.1-alpha.1", + "version": "2.0.3-alpha.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@quiet/desktop", - "version": "2.0.1-alpha.1", + "version": "2.0.3-alpha.0", "license": "ISC", "dependencies": { "@electron/remote": "^2.0.8", @@ -32,6 +32,7 @@ "@babel/preset-react": "^7.22.5", "@cypress/react18": "2.0.0", "@cypress/webpack-dev-server": "3.1.0", + "@electron/notarize": "2.1.0", "@emotion/react": "~11.10.5", "@emotion/styled": "~11.10.5", "@mui/icons-material": "^5.10.15", @@ -86,7 +87,6 @@ "electron-build-env": "^0.2.0", "electron-builder": "^23.6.0", "electron-devtools-installer": "^3.1.1", - "electron-notarize": "^0.2.1", "electron-store-webpack-wrapper": "^0.0.2", "emoji-picker-react": "^4.4.5", "enzyme": "^3.8.0", @@ -109,7 +109,6 @@ "rc-scrollbars": "^1.1.5", "react": "18.1.0", "react-alice-carousel": "^1.15.3", - "react-contenteditable": "^3.3.3", "react-copy-to-clipboard": "^5.1.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", @@ -134,7 +133,6 @@ "redux-saga-test-plan": "^4.0.3", "redux-thunk": "^2.3.0", "reselect": "^4.1.5", - "run-script-os": "1.1.6", "socket.io-mock": "^1.3.2", "source-map-loader": "^4.0.1", "standard": "^12.0.1", @@ -4460,6 +4458,84 @@ "semver": "bin/semver.js" } }, + "node_modules/@electron/notarize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", + "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/notarize/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/notarize/node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/notarize/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@electron/notarize/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@electron/remote": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.8.tgz", @@ -24688,17 +24764,6 @@ "keyboardevents-areequal": "^0.2.1" } }, - "node_modules/electron-notarize": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.2.1.tgz", - "integrity": "sha512-oZ6/NhKeXmEKNROiFmRNfytqu3cxqC95sjooG7kBXQVEUSQkZnbiAhxVh5jXngL881G197pbwpeVPJyM7Ikmxw==", - "deprecated": "Please use @electron/notarize moving forward. There is no API change, just a package name change", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - } - }, "node_modules/electron-osx-sign": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", @@ -26974,12 +27039,6 @@ "chance": "^1.0.4" } }, - "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, "node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -38549,19 +38608,6 @@ "react": "^0.14.0 || ^15.0.0-0 || ^16.0.0-0" } }, - "node_modules/react-contenteditable": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/react-contenteditable/-/react-contenteditable-3.3.3.tgz", - "integrity": "sha512-3sOt9x6A7SzHqJgFRqKfaUnIh2tdxrdnJcE/0g1dN/g3twsqNxMxUCJGWvZUUDIQjUzqdSz6tsnGdddrPr5UNg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "prop-types": "^15.7.1" - }, - "peerDependencies": { - "react": ">=16.3" - } - }, "node_modules/react-copy-to-clipboard": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", @@ -40259,16 +40305,6 @@ "aproba": "^1.1.1" } }, - "node_modules/run-script-os": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz", - "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==", - "dev": true, - "bin": { - "run-os": "index.js", - "run-script-os": "index.js" - } - }, "node_modules/rxjs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", @@ -49304,6 +49340,69 @@ } } }, + "@electron/notarize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", + "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "dependencies": { + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, "@electron/remote": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.8.tgz", @@ -64830,16 +64929,6 @@ "keyboardevents-areequal": "^0.2.1" } }, - "electron-notarize": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.2.1.tgz", - "integrity": "sha512-oZ6/NhKeXmEKNROiFmRNfytqu3cxqC95sjooG7kBXQVEUSQkZnbiAhxVh5jXngL881G197pbwpeVPJyM7Ikmxw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - } - }, "electron-osx-sign": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", @@ -66633,12 +66722,6 @@ "chance": "^1.0.4" } }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, "fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -75561,16 +75644,6 @@ } } }, - "react-contenteditable": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/react-contenteditable/-/react-contenteditable-3.3.3.tgz", - "integrity": "sha512-3sOt9x6A7SzHqJgFRqKfaUnIh2tdxrdnJcE/0g1dN/g3twsqNxMxUCJGWvZUUDIQjUzqdSz6tsnGdddrPr5UNg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "prop-types": "^15.7.1" - } - }, "react-copy-to-clipboard": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", @@ -76835,12 +76908,6 @@ "aproba": "^1.1.1" } }, - "run-script-os": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz", - "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==", - "dev": true - }, "rxjs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 7792e2b775..cff0115986 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -80,7 +80,7 @@ }, "homepage": "https://github.com/TryQuiet", "@comment version": "To build new version for specific platform, just replace platform in version tag to one of following linux, mac, windows", - "version": "2.0.1-alpha.1", + "version": "2.0.3-alpha.0", "description": "Decentralized team chat", "main": "dist/main/main.js", "scripts": { @@ -120,18 +120,16 @@ "rmDist": "rimraf dist/", "setMainEnvs": "node scripts/setMainEnvs.js", "copyMainEnvs": "cp mainEnvs.json dist/main", - "copyFonts": "run-script-os", - "copyFonts:windows": "xcopy src\\renderer\\fonts\\* dist\\main /Y", - "copyFonts:default": "cp src/renderer/fonts/* dist/main" + "copyFonts": "cp src/renderer/fonts/* dist/main" }, "dependencies": { "@electron/remote": "^2.0.8", "@peculiar/webcrypto": "1.4.3", - "@quiet/common": "^2.0.1-alpha.1", - "@quiet/logger": "^2.0.1-alpha.1", - "@quiet/types": "^2.0.1-alpha.1", + "@quiet/common": "^2.0.2-alpha.0", + "@quiet/logger": "^2.0.2-alpha.0", + "@quiet/types": "^2.0.2-alpha.0", "@sentry/electron": "^2.5.4", - "backend-bundle": "^2.0.1-alpha.1", + "backend-bundle": "^2.0.1-alpha.4", "electron-debug": "^3.0.1", "electron-localshortcut": "^3.2.1", "electron-store": "^8.0.1", @@ -152,14 +150,15 @@ "@babel/preset-react": "^7.22.5", "@cypress/react18": "2.0.0", "@cypress/webpack-dev-server": "3.1.0", + "@electron/notarize": "2.1.0", "@emotion/react": "~11.10.5", "@emotion/styled": "~11.10.5", "@mui/icons-material": "^5.10.15", "@mui/lab": "^5.0.0-alpha.109", "@mui/material": "~5.10.15", - "@quiet/eslint-config": "^2.0.1-alpha.1", - "@quiet/identity": "^2.0.1-alpha.1", - "@quiet/state-manager": "^2.0.1-alpha.1", + "@quiet/eslint-config": "^2.0.2-alpha.0", + "@quiet/identity": "^2.0.2-alpha.0", + "@quiet/state-manager": "^2.0.2-alpha.0", "@redux-saga/types": "^1.1.0", "@reduxjs/toolkit": "^1.9.1", "@sentry/browser": "^6.19.7", @@ -209,7 +208,6 @@ "electron-build-env": "^0.2.0", "electron-builder": "^23.6.0", "electron-devtools-installer": "^3.1.1", - "electron-notarize": "^0.2.1", "electron-store": "^5.2.0", "electron-store-webpack-wrapper": "^0.0.2", "emoji-picker-react": "^4.4.5", @@ -233,7 +231,6 @@ "rc-scrollbars": "^1.1.5", "react": "18.1.0", "react-alice-carousel": "^1.15.3", - "react-contenteditable": "^3.3.3", "react-copy-to-clipboard": "^5.1.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", @@ -258,7 +255,6 @@ "redux-saga-test-plan": "^4.0.3", "redux-thunk": "^2.3.0", "reselect": "^4.1.5", - "run-script-os": "1.1.6", "socket.io-mock": "^1.3.2", "source-map-loader": "^4.0.1", "standard": "^12.0.1", @@ -302,4 +298,4 @@ "node": "18.12.1", "npm": "8.19.2" } -} \ No newline at end of file +} diff --git a/packages/desktop/scripts/notarize.js b/packages/desktop/scripts/notarize.js index a4d2242c9a..f60c6b64e1 100644 --- a/packages/desktop/scripts/notarize.js +++ b/packages/desktop/scripts/notarize.js @@ -1,7 +1,7 @@ /* eslint-disable no-unreachable */ -const { notarize } = require('electron-notarize') +const { notarize } = require('@electron/notarize') -exports.default = async function notarizing (context) { +exports.default = async function notarizing(context) { const { electronPlatformName, appOutDir } = context if (electronPlatformName !== 'darwin' || process.env.IS_E2E) { console.log('skipping notarization') diff --git a/packages/desktop/src/renderer/Root.tsx b/packages/desktop/src/renderer/Root.tsx index 1e0a5aeb71..608060d374 100644 --- a/packages/desktop/src/renderer/Root.tsx +++ b/packages/desktop/src/renderer/Root.tsx @@ -31,6 +31,7 @@ import ChannelCreationModal from './components/ChannelCreationModal/ChannelCreat import { SaveStateComponent } from './components/SaveState/SaveStateComponent' import UnregisteredModalContainer from './components/widgets/userLabel/unregistered/UnregisteredModal.container' import DuplicateModalContainer from './components/widgets/userLabel/duplicate/DuplicateModal.container' +import UsernameTakenModalContainer from './components/widgets/usernameTakenModal/UsernameTakenModal.container' import PossibleImpersonationAttackModalContainer from './components/widgets/possibleImpersonationAttackModal/PossibleImpersonationAttackModal.container' export const persistor = persistStore(store) @@ -50,6 +51,7 @@ export default () => { + diff --git a/packages/desktop/src/renderer/components/Channel/Channel.regression.cy.tsx b/packages/desktop/src/renderer/components/Channel/Channel.regression.cy.tsx index cb07239f0c..304db04a14 100644 --- a/packages/desktop/src/renderer/components/Channel/Channel.regression.cy.tsx +++ b/packages/desktop/src/renderer/components/Channel/Channel.regression.cy.tsx @@ -43,16 +43,13 @@ describe('Scroll behavior test', () => { it('scroll should be at the bottom after entering channel', () => { cy.get(channelContent).compareSnapshot('after launch', { - capture: 'fullPage' + capture: 'fullPage', }) }) it('scroll should be at the bottom after sending messages', () => { cy.get(messageInput).focus().type('luke where are you?').type('{enter}') - cy.get(messageInput) - .focus() - .type('you underestimate the power of the force') - .type('{enter}') + cy.get(messageInput).focus().type('you underestimate the power of the force').type('{enter}') cy.get(channelContent).compareSnapshot('send after enter') }) @@ -62,10 +59,7 @@ describe('Scroll behavior test', () => { cy.get(channelContent).compareSnapshot('scroll to the middle') cy.get(messageInput).focus().type('obi wan was wrong').type('{enter}') - cy.get(messageInput) - .focus() - .type('actually, he is on the dark side') - .type('{enter}') + cy.get(messageInput).focus().type('actually, he is on the dark side').type('{enter}') cy.get(channelContent).compareSnapshot('send after scroll') }) @@ -91,7 +85,7 @@ describe('Scroll behavior test', () => { it('PageUp keydown should scroll message list up.', () => { cy.get(messageInput).focus().type('{pageup}') cy.get(channelContent).compareSnapshot('after pageup', { - capture: 'fullPage' + capture: 'fullPage', }) }) @@ -99,7 +93,7 @@ describe('Scroll behavior test', () => { cy.get(channelContent).scrollTo(0, 0) cy.get(messageInput).focus().type('{pagedown}') cy.get(channelContent).compareSnapshot('after pagedown', { - capture: 'fullPage' + capture: 'fullPage', }) }) @@ -109,7 +103,7 @@ describe('Scroll behavior test', () => { .type('luke where are you?') .type('{shift+enter}') .type('you underestimate the power of the force') - .should('have.text', 'luke where are you?you underestimate the power of the force') + .should('have.text', 'luke where are you?\nyou underestimate the power of the force') }) it('Check words wrapping in message input', () => { @@ -120,9 +114,7 @@ describe('Scroll behavior test', () => { } return word } - cy.get(messageInput) - .focus() - .type(longWord()) + cy.get(messageInput).focus().type(longWord()) cy.get(messageInput).compareSnapshot('message input words wrapping') }) diff --git a/packages/desktop/src/renderer/components/Channel/File/FileComponent/FileComponent.stories.tsx b/packages/desktop/src/renderer/components/Channel/File/FileComponent/FileComponent.stories.tsx index 31ae7a82af..0c33e712ab 100644 --- a/packages/desktop/src/renderer/components/Channel/File/FileComponent/FileComponent.stories.tsx +++ b/packages/desktop/src/renderer/components/Channel/File/FileComponent/FileComponent.stories.tsx @@ -1,6 +1,5 @@ import React from 'react' import { ComponentStory, ComponentMeta } from '@storybook/react' - import FileComponent, { FileComponentProps } from './FileComponent' import { withTheme } from '../../../../storybook/decorators' import { DownloadState } from '@quiet/types' diff --git a/packages/desktop/src/renderer/components/ContextMenu/ContextMenu.stories.tsx b/packages/desktop/src/renderer/components/ContextMenu/ContextMenu.stories.tsx index efa35a7e26..34b556c35a 100644 --- a/packages/desktop/src/renderer/components/ContextMenu/ContextMenu.stories.tsx +++ b/packages/desktop/src/renderer/components/ContextMenu/ContextMenu.stories.tsx @@ -1,7 +1,6 @@ import React from 'react' import { ComponentStory, ComponentMeta } from '@storybook/react' import { withTheme } from '../../storybook/decorators' - import { ContextMenu } from './ContextMenu.component' import { ContextMenuItemProps, ContextMenuProps } from './ContextMenu.types' diff --git a/packages/desktop/src/renderer/components/CreateUsername/CreateUsername.test.tsx b/packages/desktop/src/renderer/components/CreateUsername/CreateUsername.test.tsx index 0f8656a6c4..e5b406d690 100644 --- a/packages/desktop/src/renderer/components/CreateUsername/CreateUsername.test.tsx +++ b/packages/desktop/src/renderer/components/CreateUsername/CreateUsername.test.tsx @@ -4,8 +4,10 @@ import userEvent from '@testing-library/user-event' import { screen, waitFor } from '@testing-library/dom' import { renderComponent } from '../../testUtils/renderComponent' -import CreateUsernameComponent from './CreateUsernameComponent' +import CreateUsernameComponent, { UsernameVariant } from './CreateUsernameComponent' import { FieldErrors, UsernameErrors } from '../../forms/fieldsErrors' +import { keyFromCertificate, parseCertificate } from '@quiet/identity' +import { UserData } from '@quiet/types' describe('Create username', () => { it.each([ @@ -48,3 +50,201 @@ describe('Create username', () => { expect(message).toBeVisible() }) }) + +describe('Username taken', () => { + const userCertData = { + username: 'userName', + onionAddress: 'nqnw4kc4c77fb47lk52m5l57h4tcxceo7ymxekfn7yh5m66t4jv2olad.onion', + peerId: 'Qmf3ySkYqLET9xtAtDzvAr5Pp3egK1H3C5iJAZm1SpLEp6', + dmPublicKey: '0bfb475810c0e26c9fab590d47c3d60ec533bb3c451596acc3cd4f21602e9ad9', + } + + const userCertString = + 'MIICaDCCAg6gAwIBAgIGAYBqyuV2MAoGCCqGSM49BAMCMBkxFzAVBgNVBAMTDnF1aWV0Y29tbXVuaXR5MB4XDTEwMTIyODEwMTAxMFoXDTMwMTIyODEwMTAxMFowSTFHMEUGA1UEAxM+bnFudzRrYzRjNzdmYjQ3bGs1Mm01bDU3aDR0Y3hjZW83eW14ZWtmbjd5aDVtNjZ0NGp2Mm9sYWQub25pb24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQZBMmiVmRBRvw+QiL5DYg7WGFUVgA7u90KMpJg4qCaCJJNh7wH2tl0EDsN4FeGmR9AkvtCGd+5vYL0nGcX/oLdo4IBEDCCAQwwCQYDVR0TBAIwADALBgNVHQ8EBAMCAIAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMC8GCSqGSIb3DQEJDAQiBCAL+0dYEMDibJ+rWQ1Hw9YOxTO7PEUVlqzDzU8hYC6a2TAYBgorBgEEAYOMGwIBBAoTCHVzZXJOYW1lMD0GCSsGAQIBDwMBAQQwEy5RbWYzeVNrWXFMRVQ5eHRBdER6dkFyNVBwM2VnSzFIM0M1aUpBWm0xU3BMRXA2MEkGA1UdEQRCMECCPm5xbnc0a2M0Yzc3ZmI0N2xrNTJtNWw1N2g0dGN4Y2VvN3lteGVrZm43eWg1bTY2dDRqdjJvbGFkLm9uaW9uMAoGCCqGSM49BAMCA0gAMEUCIF63rnIq8vd86NT9RHSFj7borwwODqyfE7Pw64tGElpIAiEA5ZDSdrDd8OGf+kv7wxByM1Xgmc5m/aydUk+WorbO3Gg=' + const parsedCert = parseCertificate(userCertString) + const userPubKey = keyFromCertificate(parsedCert) + + const registeredUsers: Record = { + [userPubKey]: userCertData, + } + it('renders component ', () => { + const result = renderComponent( + {}} + open={true} + currentUsername={'jack'} + variant={UsernameVariant.TAKEN} + registeredUsers={registeredUsers} + registerUsername={() => {}} + /> + ) + expect(result.baseElement).toMatchInlineSnapshot(` + +